Develop libaec fix (#5182)

* Use the ${LIBAEC_PACKAGE_NAME} variable instead of SZIP
This commit is contained in:
Allen Byrne 2025-01-10 15:49:59 -06:00 committed by GitHub
parent 2d0c676642
commit 58ae0ae200
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 47 additions and 9 deletions

View File

@ -173,13 +173,18 @@ if (HDF5_ENABLE_SZIP_SUPPORT)
set(libaec_USE_STATIC_LIBS ${HDF5_USE_LIBAEC_STATIC})
set(SZIP_FOUND FALSE)
# Search pure Config mode, there is not a FindSZIP module available
find_package (SZIP NAMES ${LIBAEC_PACKAGE_NAME}${HDF_PACKAGE_EXT} OPTIONAL_COMPONENTS ${LIBAEC_SEARCH_TYPE})
set(H5_SZIP_FOUND ${SZIP_FOUND})
find_package (${LIBAEC_PACKAGE_NAME} NAMES ${LIBAEC_PACKAGE_NAME}${HDF_PACKAGE_EXT} OPTIONAL_COMPONENTS ${LIBAEC_SEARCH_TYPE})
set(H5_SZIP_FOUND ${${LIBAEC_PACKAGE_NAME}_FOUND})
if (H5_SZIP_FOUND)
set (H5_SZIP_INCLUDE_DIR_GEN ${SZIP_INCLUDE_DIR})
set (H5_SZIP_INCLUDE_DIRS ${H5_SZIP_INCLUDE_DIRS} ${SZIP_INCLUDE_DIR})
set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${SZIP_LIBRARIES})
if(LIBAEC_PACKAGE_NAME STREQUAL "libaec")
set (LINK_COMP_LIBS ${LINK_COMP_LIBS} libaec::sz libaec::aec)
else ()
set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${SZIP_LIBRARIES})
endif ()
endif ()
message (VERBOSE "H5_SZIP_FOUND=${SZIP_FOUND} and LINK_COMP_LIBS=${LINK_COMP_LIBS}")
else ()
if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
EXTERNAL_SZIP_LIBRARY (${HDF5_ALLOW_EXTERNAL_SUPPORT} ${HDF5_ENABLE_SZIP_ENCODING})
@ -187,6 +192,7 @@ if (HDF5_ENABLE_SZIP_SUPPORT)
set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${H5_SZIP_STATIC_LIBRARY})
endif ()
endif ()
message (VERBOSE "LINK_COMP_LIBS=${LINK_COMP_LIBS}")
if (H5_SZIP_FOUND)
set (H5_HAVE_FILTER_SZIP 1)
set (H5_HAVE_SZLIB_H 1)

View File

@ -465,11 +465,12 @@ The HDF5 data model, file format, API, library, and tools are open and distribut
endif ()
endif ()
if (H5_SZIP_FOUND AND SZIP_USE_EXTERNAL)
set (SZIP_PROJNAME "${LIBAEC_PACKAGE_NAME}")
if (WIN32)
set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${H5_SZIP_INCLUDE_DIR_GEN};SZIP;ALL;/")
set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${H5_SZIP_INCLUDE_DIR_GEN};${SZIP_PROJNAME};ALL;/")
else ()
set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${H5_SZIP_INCLUDE_DIR_GEN};SZIP;libraries;/")
set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${H5_SZIP_INCLUDE_DIR_GEN};SZIP;configinstall;/")
set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${H5_SZIP_INCLUDE_DIR_GEN};${SZIP_PROJNAME};libraries;/")
set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${H5_SZIP_INCLUDE_DIR_GEN};${SZIP_PROJNAME};configinstall;/")
endif ()
endif ()
if (PLUGIN_FOUND AND PLUGIN_USE_EXTERNAL)

View File

@ -65,6 +65,8 @@ set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ALLOW_EXTERNAL_SUPPORT:STRIN
#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DZLIB_LIBRARY:FILEPATH=some_location/lib/zlib.lib -DZLIB_INCLUDE_DIR:PATH=some_location/include")
#set(ENV{SZIP_ROOT} "some_location")
#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DSZIP_LIBRARY:FILEPATH=some_location/lib/szlib.lib -DSZIP_INCLUDE_DIR:PATH=some_location/include")
#set(ENV{libaec_ROOT} "some_location")
#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -Dlibaec_LIBRARY:FILEPATH=some_location/lib/libaec.lib -Dlibaec_INCLUDE_DIR:PATH=some_location/include")
### disable using ext zlib
#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_ZLIB_SUPPORT:BOOL=OFF")

View File

@ -285,20 +285,26 @@ IV. Further considerations
web site. The HDF5 2."X"."Y" product requires a minimum CMake version 3.18.
If you are using VS2022, the CMake minimum version is 3.21.
2. If you plan to use Zlib or Szip:
2. If you plan to use Zlib or Szip (aka libaec):
A. Download the binary packages and install them in a central location.
For example on Windows, create a folder extlibs and install the
packages there. Add the following CMake options:
-DZLIB_LIBRARY:FILEPATH=some_location/lib/zlib.lib
-DZLIB_INCLUDE_DIR:PATH=some_location/include
-DZLIB_USE_EXTERNAL:BOOL=OFF
-DSZIP_LIBRARY:FILEPATH=some_location/lib/szlib.lib
-DSZIP_LIBRARY:FILEPATH=some_location/lib/libszaec.lib
-DSZIP_INCLUDE_DIR:PATH=some_location/include
-Dlibaec_LIBRARY:FILEPATH=some_location/lib/libaec.lib
-Dlibaec_INCLUDE_DIR:PATH=some_location/include
-DSZIP_USE_EXTERNAL:BOOL=OFF
where "some_location" is the full path to the extlibs folder.
Also the appropriate environment variable must be set;
Also if the appropriate environment variable is set, the above options are not required;
set(ENV{ZLIB_ROOT} "some_location")
set(ENV{SZIP_ROOT} "some_location")
set(ENV{libaec_ROOT} "some_location")
Note that if there is a problem finding the libraries, try adding the
CMake variable CMAKE_FIND_DEBUG_MODE:BOOL=ON to the command line.
B. Use source packages from an GIT server by adding the following CMake
options:
@ -307,6 +313,8 @@ IV. Further considerations
ZLIB_GIT_BRANCH="some_branch"
SZIP_GIT_URL:STRING="https://some_location/szip"
SZIP_GIT_BRANCH="some_branch"
LIBAEC_GIT_URL:STRING="https://some_location/libaec"
LIBAEC_GIT_BRANCH="some_branch"
where "some_location" is the URL to the GIT repository and "some_branch" is
a branch in the repository, usually the default. Also set
CMAKE_BUILD_TYPE to the configuration type.
@ -505,6 +513,8 @@ These five steps are described in detail below.
<options> is:
* SZIP_INCLUDE_DIR:PATH=<path to szip includes directory>
* SZIP_LIBRARY:FILEPATH=<path to szip/library file>
* libaec_INCLUDE_DIR:PATH=<path to libaec includes directory>
* libaec_LIBRARY:FILEPATH=<path to libaec/library file>
* ZLIB_INCLUDE_DIR:PATH=<path to zlib includes directory>
* ZLIB_LIBRARY:FILEPATH=<path to zlib/library file>
* <HDF5OPTION>:BOOL=[ON | OFF]
@ -729,6 +739,8 @@ These five steps are described in detail below.
ZLIB_GIT_BRANCH="${git_branch}"
SZIP_GIT_URL:STRING="https://${git_url}/szip"
SZIP_GIT_BRANCH="${git_branch}"
LIBAEC_GIT_URL:STRING="https://${git_url}/libaec"
LIBAEC_GIT_BRANCH="${git_branch}"
PLUGIN_GIT_URL:STRING="https://${git_url}/plugin"
PLUGIN_GIT_BRANCH="${git_branch}"
${git_url} should be changed to your location and ${git_branch} is

View File

@ -546,6 +546,23 @@ Bug Fixes since HDF5-2.0.0 release
Configuration
-------------
- Use pre-installed libaec compression library
The CMake logic for finding the libaec compression library has been
modified for a system-installed version of the library. Two options
must be set;
HDF5_ALLOW_EXTERNAL_SUPPORT:STRING=NO
<LIB_PKG_NAME>_USE_EXTERNAL:BOOL=OFF
where <LIB_PKG_NAME> is one of ZLIB, ZLIBNG, SZIP, PLUGIN.
Note that HDF5_ALLOW_EXTERNAL_SUPPORT:STRING=NO disables building all plugins
and external libraries in-line with the HDF5 library.
In addition, the <LIB_PKG_NAME>_ROOT environment variables must be set,
where <LIB_PKG_NAME> is one of ZLIB, ZLIBNG, SZIP, libaec, PLUGIN.
Note that libaec is the expected name for using the libaec library in place of original szip.
See INSTALL_CMake.txt for more detailed information.
- Changed the zlib/szip compression find message to FATAL ERROR
The message was changed to indicate that zlib/szip compression was requested and