Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/netcdf-cmake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -79,9 +79,9 @@ jobs:
cmake -C $GITHUB_WORKSPACE/hdf5/config/cmake/cacheinit.cmake \
-G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DHDF5_BUILD_FORTRAN:BOOL=OFF \
-DHDF5_BUILD_JAVA:BOOL=OFF \
-DHDF5_BUILD_EXAMPLES:BOOL=OFF \
-DHDF4_BUILD_FORTRAN:BOOL=OFF \
-DHDF4_BUILD_JAVA:BOOL=OFF \
-DHDF4_BUILD_EXAMPLES:BOOL=OFF \
-DLIBAEC_USE_LOCALCONTENT:BOOL=OFF \
-DZLIB_USE_LOCALCONTENT:BOOL=OFF \
-DBUILD_TESTING:BOOL=OFF \
Expand Down Expand Up @@ -109,6 +109,6 @@ jobs:
run: |
mkdir "netcdf-c/build"
cd "netcdf-c/build"
cmake .. -DUILD_SHARED_LIBS=ON -DNETCDF_ENABLE_HDF5=ON -DNETCDF_ENABLE_HDF4=ON
cmake .. -DUILD_SHARED_LIBS=ON -DNETCDF_ENABLE_HDF4=ON -DNETCDF_ENABLE_HDF5=ON
make
make test
83 changes: 55 additions & 28 deletions CMakeFilters.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,17 @@ option (HDF4_USE_ZLIB_NG "Use zlib-ng library as zlib library" OFF)
option (HDF4_USE_ZLIB_STATIC "Find static zlib library" OFF)
option (HDF4_USE_LIBAEC_STATIC "Find static AEC library" OFF)
option (JPEG_USE_EXTERNAL "Use External Library Building for JPEG" OFF)
mark_as_advanced (JPEG_USE_EXTERNAL)
option (ZLIB_USE_EXTERNAL "Use External Library Building for ZLIB" OFF)
mark_as_advanced (ZLIB_USE_EXTERNAL)
option (SZIP_USE_EXTERNAL "Use External Library Building for SZIP" OFF)
mark_as_advanced (SZIP_USE_EXTERNAL)
option (JPEG_USE_LOCALCONTENT "Use local file for JPEG FetchContent" OFF)
mark_as_advanced (JPEG_USE_LOCALCONTENT)
option (ZLIB_USE_LOCALCONTENT "Use local file for ZLIB FetchContent" OFF)
mark_as_advanced (ZLIB_USE_LOCALCONTENT)
option (LIBAEC_USE_LOCALCONTENT "Use local file for LIBAEC FetchContent" OFF)
mark_as_advanced (LIBAEC_USE_LOCALCONTENT)

if (NOT JPEG_USE_LOCALCONTENT)
set (JPEG_URL ${JPEG_TGZ_ORIGPATH}/${JPEG_TGZ_NAME})
Expand Down Expand Up @@ -95,26 +101,40 @@ set(H4_JPEG_FOUND FALSE)
if (HDF4_ENABLE_JPEG_LIB_SUPPORT)
if (NOT H4_JPEGLIB_HEADER)
if (NOT JPEG_USE_EXTERNAL)
set(JPE_FOUND FALSE)
find_package (JPEG NAMES ${JPEG_PACKAGE_NAME}${HDF_PACKAGE_EXT} COMPONENTS static shared)
if (NOT JPEG_FOUND)
find_package (JPEG) # Legacy find
option (HDF4_MODULE_MODE_JPEG "Prefer module mode to find JPEG" ON)
mark_as_advanced (HDF4_MODULE_MODE_JPEG)
set(JPEG_FOUND FALSE)
if (HDF4_MODULE_MODE_JPEG)
# Expect that the default shared library is expected with FindJPEG.cmake
find_package (JPEG MODULE)
else ()
# Expect that a correctly built library with CMake config files is available
if (HDF4_USE_JPEG_STATIC)
set(JPEG_SEARCH_TYPE static)
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0")
set(JPEG_USE_STATIC_LIBS ${HDF4_USE_JPEG_STATIC})
endif()
else ()
set(JPEG_SEARCH_TYPE shared)
endif ()
find_package (JPEG NAMES ${JPEG_PACKAGE_NAME}${HDF_PACKAGE_EXT} CONFIG OPTIONAL_COMPONENTS ${JPEG_SEARCH_TYPE})
endif ()
set(H4_JPEG_FOUND ${JPEG_FOUND})
if (H4_JPEG_FOUND)
set (H4_JPEGLIB_HEADER "jpeglib.h")
set (H4_JPEG_INCLUDE_DIR_GEN ${JPEG_INCLUDE_DIR})
set (H4_JPEG_INCLUDE_DIRS ${H4_JPEG_INCLUDE_DIRS} ${JPEG_INCLUDE_DIR})
set (H4_JPEG_INCLUDE_DIRS ${JPEG_INCLUDE_DIRS} ${JPEG_INCLUDE_DIR})
set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${JPEG_LIBRARIES})
endif ()
else ()
if (HDF4_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR HDF4_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
EXTERNAL_JPEG_LIBRARY (${HDF4_ALLOW_EXTERNAL_SUPPORT})
message (VERBOSE "JPEGLIB is built")
message (VERBOSE "Filter JPEG is built")
set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${H4_JPEG_STATIC_LIBRARY})
endif ()
endif ()
else ()
# This project is being called from within another and JPEGLib is already configured
set(H4_JPEG_FOUND TRUE)
endif ()
if (H4_JPEG_FOUND)
Expand Down Expand Up @@ -143,45 +163,53 @@ endif ()
if (HDF4_ENABLE_Z_LIB_SUPPORT)
if (NOT H4_ZLIB_HEADER)
if (NOT ZLIB_USE_EXTERNAL)
option (HDF4_MODULE_MODE_ZLIB "Prefer module mode to find ZLIB" ON)
mark_as_advanced (HDF4_MODULE_MODE_ZLIB)
if (HDF4_USE_ZLIB_NG)
set (HDF4_MODULE_MODE_ZLIB OFF CACHE BOOL "" FORCE)
set (PACKAGE_NAME ${ZLIBNG_PACKAGE_NAME}${HDF_PACKAGE_EXT})
else ()
set (PACKAGE_NAME ${ZLIB_PACKAGE_NAME}${HDF_PACKAGE_EXT})
endif ()
set(ZLIB_FOUND FALSE)
if (HDF5_USE_ZLIB_STATIC)
set(ZLIB_SEARCH_TYPE static)
message (VERBOSE "Filter ZLIB package name:${PACKAGE_NAME}")
if (HDF4_MODULE_MODE_ZLIB)
# Expect that the default shared library is expected with FindZLIB.cmake
find_package (ZLIB MODULE)
else ()
set(ZLIB_SEARCH_TYPE shared)
endif ()
# Search pure Config mode first
find_package (ZLIB NAMES ${PACKAGE_NAME} OPTIONAL_COMPONENTS ${ZLIB_SEARCH_TYPE})
if (NOT ZLIB_FOUND)
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0")
set(ZLIB_USE_STATIC_LIBS ${HDF5_USE_ZLIB_STATIC})
endif()
find_package (ZLIB) # Legacy find
# Expect that a correctly built library with CMake config files is available
if (HDF4_USE_ZLIB_STATIC)
set(ZLIB_SEARCH_TYPE static)
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0")
set(ZLIB_USE_STATIC_LIBS ${HDF4_USE_ZLIB_STATIC})
endif()
else ()
set(ZLIB_SEARCH_TYPE shared)
endif ()
find_package (ZLIB NAMES ${PACKAGE_NAME} CONFIG OPTIONAL_COMPONENTS ${ZLIB_SEARCH_TYPE})
endif ()
set(H4_ZLIB_FOUND ${ZLIB_FOUND})
set(H4_ZLIB_FOUND ZLIB_FOUND})
if (H4_ZLIB_FOUND)
if (HDF4_USE_ZLIB_NG)
set (H4_ZLIB_HEADER "zlib-ng.h")
else ()
set (H4_ZLIB_HEADER "zlib.h")
endif ()
set (H4_ZLIB_INCLUDE_DIR_GEN ${ZLIB_INCLUDE_DIR})
set (H4_ZLIB_INCLUDE_DIRS ${H5_ZLIB_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIR})
# The FindZLIB.cmake module does not set an OUTPUT_NAME
# on the target. The target returned is: ZLIB::ZLIB
get_filename_component (libname ${ZLIB_LIBRARIES} NAME_WLE)
string (REGEX REPLACE "^lib" "" libname ${libname})
set_target_properties (ZLIB::ZLIB PROPERTIES OUTPUT_NAME ${libname})
set (H4_ZLIB_INCLUDE_DIRS ${H4_ZLIB_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIR})
if (NOT WIN32) #windows has a list of names
# The FindZLIB.cmake module does not set an OUTPUT_NAME
# on the target. The target returned is: ZLIB::ZLIB
get_filename_component (libname ${ZLIB_LIBRARIES} NAME_WLE)
string (REGEX REPLACE "^lib" "" libname ${libname})
set_target_properties (ZLIB::ZLIB PROPERTIES OUTPUT_NAME ${libname})
endif ()
set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ZLIB::ZLIB)
endif ()
else ()
if (HDF4_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR HDF4_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
EXTERNAL_ZLIB_LIBRARY (${HDF4_ALLOW_EXTERNAL_SUPPORT})
message (VERBOSE "Filter HDF4_ZLIB is built")
message (VERBOSE "Filter ZLIB is built")
set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${H4_ZLIB_STATIC_LIBRARY})
endif ()
endif ()
Expand All @@ -196,14 +224,13 @@ if (HDF4_ENABLE_Z_LIB_SUPPORT)
set (H4_HAVE_ZLIBNG_H 1)
endif ()
set (H4_HAVE_LIBZ 1)
message (VERBOSE "Filter HDF4_ZLIB is ON")
set (HDF4_COMP_INCLUDE_DIRECTORIES "${HDF4_COMP_INCLUDE_DIRECTORIES};${H4_ZLIB_INCLUDE_DIRS}")
message (VERBOSE "Filter HDF4_ZLIB is ON")
message (VERBOSE "Filter ZLIB is ON")
else ()
set (HDF4_ENABLE_Z_LIB_SUPPORT OFF CACHE BOOL "" FORCE)
message (FATAL_ERROR " ZLib support in HDF4 is required but not found")
endif ()
message(STATUS "H4_ZLIB_HEADER=${H4_ZLIB_HEADER}")
message (VERBOSE "H4_ZLIB_HEADER=${H4_ZLIB_HEADER}")
endif ()

#-----------------------------------------------------------------------------
Expand Down
23 changes: 14 additions & 9 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ if (POLICY CMP0074)
cmake_policy (SET CMP0074 NEW)
endif ()

if (POLICY CMP0144)
# <PACKAGENAME> is the upper-cased package name.
cmake_policy (SET CMP0144 NEW)
endif ()

if (POLICY CMP0083)
# To control generation of Position Independent Executable (PIE) or not,
# some flags are required at link time.
Expand Down Expand Up @@ -128,8 +133,8 @@ mark_as_advanced (HDF4_EXTERNAL_LIB_SUFFIX)
# else ()
# set (H4_SZIP_HEADER "prj_szip.h")
# # Set vars that FindSZIP would have set if used in sub project
# set (SZIP_INCLUDE_DIRS "${PRJ_SZIP_INCLUDE_DIRS}")
# set (SZIP_LIBRARIES prjszip)
# set (H4_SZIP_INCLUDE_DIRS "${PRJ_H4_SZIP_INCLUDE_DIRS}")
# set (H4_SZIP_LIBRARIES prjszip)
# endif ()
# endif ()
#
Expand Down Expand Up @@ -253,9 +258,9 @@ set (HDF4_JAVA_JNI_SRC_DIR ${HDF4_SOURCE_DIR}/java/src/jni)
set (HDF4_JAVA_HDF_SRC_DIR ${HDF4_SOURCE_DIR}/java/src/hdf)
set (HDF4_JAVA_TEST_SRC_DIR ${HDF4_SOURCE_DIR}/java/test)
set (HDF4_JAVA_LIB_DIR ${HDF4_SOURCE_DIR}/java/lib)
set (HDF4_JAVA_LOGGING_JAR ${HDF4_SOURCE_DIR}/java/lib/slf4j-api-2.0.6.jar)
set (HDF4_JAVA_LOGGING_NOP_JAR ${HDF4_SOURCE_DIR}/java/lib/ext/slf4j-nop-2.0.6.jar)
set (HDF4_JAVA_LOGGING_SIMPLE_JAR ${HDF4_SOURCE_DIR}/java/lib/ext/slf4j-simple-2.0.6.jar)
set (HDF4_JAVA_LOGGING_JAR ${HDF4_SOURCE_DIR}/java/lib/slf4j-api-2.0.16.jar)
set (HDF4_JAVA_LOGGING_NOP_JAR ${HDF4_SOURCE_DIR}/java/lib/ext/slf4j-nop-2.0.16.jar)
set (HDF4_JAVA_LOGGING_SIMPLE_JAR ${HDF4_SOURCE_DIR}/java/lib/ext/slf4j-simple-2.0.16.jar)
set (HDF4_DOXYGEN_DIR ${HDF4_SOURCE_DIR}/doxygen)

set (HDF4_SRC_INCLUDE_DIRS ${HDF4_HDFSOURCE_DIR} ${HDF4_MFHDFSOURCE_DIR})
Expand Down Expand Up @@ -452,7 +457,7 @@ endif ()
# Option to Build Shared and Static libs, default is both
#-----------------------------------------------------------------------------
option (HDF4_ONLY_SHARED_LIBS "Only Build Shared Libraries" OFF)
mark_as_advanced (ONLY_SHARED_LIBS)
mark_as_advanced (HDF4_ONLY_SHARED_LIBS)
option (BUILD_STATIC_LIBS "Build Static Libraries" ON)
set (H4_ENABLE_STATIC_LIB NO)
option (BUILD_SHARED_LIBS "Build Shared Libraries" ON)
Expand All @@ -462,11 +467,11 @@ option (HDF4_BUILD_STATIC_TOOLS "Build Static Tools NOT Shared Tools" OFF)

# only shared libraries/tools is true if user forces static OFF
if (NOT BUILD_STATIC_LIBS)
set (ONLY_SHARED_LIBS ON CACHE BOOL "Only Build Shared Libraries" FORCE)
set (HDF4_ONLY_SHARED_LIBS ON CACHE BOOL "Only Build Shared Libraries" FORCE)
endif ()

# only shared libraries is set ON by user then force settings
if (ONLY_SHARED_LIBS)
if (HDF4_ONLY_SHARED_LIBS)
set (H4_ENABLE_STATIC_LIB NO)
set (BUILD_SHARED_LIBS ON CACHE BOOL "Build Shared Libraries" FORCE)
set (BUILD_STATIC_LIBS OFF CACHE BOOL "Build Static Libraries" FORCE)
Expand Down Expand Up @@ -611,7 +616,7 @@ if (HDF4_BUILD_DOC AND IS_DIRECTORY "${HDF4_DOXYGEN_DIR}")
option (HDF4_ENABLE_DOXY_WARNINGS "Enable fail if doxygen parsing has warnings." OFF)
mark_as_advanced (HDF4_ENABLE_DOXY_WARNINGS)
if (HDF4_ENABLE_DOXY_WARNINGS)
set (HDF4_DOXY_WARNINGS "FAIL_ON_WARNINGS")
set (HDF4_DOXY_WARNINGS "FAIL_ON_WARNINGS_PRINT")
else ()
set (HDF4_DOXY_WARNINGS "NO")
endif ()
Expand Down
36 changes: 18 additions & 18 deletions CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
"ZLIB_TGZ_NAME": {"type": "STRING", "value": "zlib-1.3.1.tar.gz"},
"ZLIBNG_PACKAGE_NAME": {"type": "STRING", "value": "zlib-ng"},
"ZLIBNG_TGZ_ORIGPATH": {"type": "STRING", "value": "https://github.com/zlib-ng/zlib-ng/archive/refs/tags"},
"ZLIBNG_TGZ_NAME": {"type": "STRING", "value": "2.2.2.tar.gz"},
"ZLIBNG_TGZ_NAME": {"type": "STRING", "value": "2.2.4.tar.gz"},
"LIBAEC_PACKAGE_NAME": {"type": "STRING", "value": "libaec"},
"LIBAEC_TGZ_ORIGPATH": {"type": "STRING", "value": "https://github.com/MathisRosenhauer/libaec/releases/download/v1.1.3"},
"LIBAEC_TGZ_NAME": {"type": "STRING", "value": "libaec-1.1.3.tar.gz"}
Expand All @@ -39,12 +39,12 @@
"HDF4_PACKAGE_EXTLIBS": "ON",
"HDF4_ENABLE_SZIP_SUPPORT": "ON",
"HDF4_ENABLE_SZIP_ENCODING": "ON",
"HDF5_USE_ZLIB_NG": "OFF",
"HDF4_USE_ZLIB_NG": "OFF",
"JPEG_USE_LOCALCONTENT": "OFF",
"ZLIB_USE_LOCALCONTENT": "OFF",
"LIBAEC_USE_LOCALCONTENT": "OFF",
"HDF5_USE_ZLIB_STATIC": "ON",
"HDF5_USE_LIBAEC_STATIC": "ON"
"HDF4_USE_ZLIB_STATIC": "ON",
"HDF4_USE_LIBAEC_STATIC": "ON"
}
},
{
Expand Down Expand Up @@ -167,15 +167,6 @@
"ci-x64-Release-Clang"
]
},
{
"name": "ci-StdShar-GNUC",
"description": "GNUC Standard Build for x64 (Release)",
"configurePreset": "ci-StdShar-GNUC",
"verbose": true,
"inherits": [
"ci-x64-Release-GNUC"
]
},
{
"name": "ci-StdShar-macos-Clang",
"description": "Clang Standard Build for macos (Release)",
Expand All @@ -193,6 +184,15 @@
"ci-macos-Release-GNUC"
]
},
{
"name": "ci-StdShar-GNUC",
"description": "GNUC Standard Build for x64 (Release)",
"configurePreset": "ci-StdShar-GNUC",
"verbose": true,
"inherits": [
"ci-x64-Release-GNUC"
]
},
{
"name": "ci-StdShar-GNUC-Fortran",
"description": "GNUC Standard Fortran Build for x64 (Release)",
Expand Down Expand Up @@ -303,11 +303,6 @@
"configurePreset": "ci-StdShar-Clang-Fortran",
"inherits": "ci-x64-Release-Clang"
},
{
"name": "ci-StdShar-GNUC",
"configurePreset": "ci-StdShar-GNUC",
"inherits": "ci-x64-Release-GNUC"
},
{
"name": "ci-StdShar-macos-Clang",
"configurePreset": "ci-StdShar-macos-Clang",
Expand All @@ -318,6 +313,11 @@
"configurePreset": "ci-StdShar-macos-GNUC",
"inherits": "ci-macos-Release-GNUC"
},
{
"name": "ci-StdShar-GNUC",
"configurePreset": "ci-StdShar-GNUC",
"inherits": "ci-x64-Release-GNUC"
},
{
"name": "ci-StdShar-GNUC-Fortran",
"configurePreset": "ci-StdShar-GNUC-Fortran",
Expand Down
4 changes: 1 addition & 3 deletions HDF4Examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -103,9 +103,7 @@ endif ()
#-----------------------------------------------------------------------------
# Build examples
#-----------------------------------------------------------------------------
if (H4EX_BUILD_C)
add_subdirectory (C)
endif ()
add_subdirectory (C)
if (H4EX_BUILD_FORTRAN AND HDF4_BUILD_FORTRAN)
add_subdirectory (FORTRAN)
endif ()
Expand Down
2 changes: 1 addition & 1 deletion HDF4Examples/config/cmake/HDFExampleMacros.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ macro (BASIC_SETTINGS varname)
endmacro ()

macro (HDF4_SUPPORT)
set (CMAKE_MODULE_PATH ${H4_RESOURCES_DIR} ${CMAKE_MODULE_PATH})
set (CMAKE_MODULE_PATH ${H4EX_RESOURCES_DIR} ${CMAKE_MODULE_PATH})
option (USE_SHARED_LIBS "Use Shared Libraries" ON)

if (NOT H4EX_HDF4_HEADER)
Expand Down
Loading
Loading