From 2acfa58d892feb6e1155625744593aafe2ea7315 Mon Sep 17 00:00:00 2001 From: Allen Byrne <50328838+byrnHDF@users.noreply.github.com> Date: Mon, 14 Dec 2020 18:15:14 -0600 Subject: OESS-98 Update plugin build option (#172) --- CMakeFilters.cmake | 2 +- CMakeInstallation.cmake | 13 --- CMakeLists.txt | 31 ++++--- MANIFEST | 1 + config/cmake/HDF5PluginCache.cmake | 28 ++++++ config/cmake/HDF5PluginMacros.cmake | 162 +++++++++++++---------------------- config/cmake_ext_mod/HDFMacros.cmake | 13 +++ fortran/src/CMakeLists.txt | 2 - hl/c++/src/CMakeLists.txt | 1 - hl/fortran/src/CMakeLists.txt | 48 +++++++++++ release_docs/RELEASE.txt | 93 ++++++++++++-------- 11 files changed, 222 insertions(+), 172 deletions(-) create mode 100644 config/cmake/HDF5PluginCache.cmake diff --git a/CMakeFilters.cmake b/CMakeFilters.cmake index dda5510..9a0719f 100644 --- a/CMakeFilters.cmake +++ b/CMakeFilters.cmake @@ -12,7 +12,7 @@ option (USE_LIBAEC "Use AEC library as SZip Filter" OFF) include (ExternalProject) -#include(FetchContent) +include (FetchContent) #option (HDF5_ALLOW_EXTERNAL_SUPPORT "Allow External Library Building (NO GIT TGZ)" "NO") set (HDF5_ALLOW_EXTERNAL_SUPPORT "NO" CACHE STRING "Allow External Library Building (NO GIT TGZ)") diff --git a/CMakeInstallation.cmake b/CMakeInstallation.cmake index c07af86..2626264 100644 --- a/CMakeInstallation.cmake +++ b/CMakeInstallation.cmake @@ -245,19 +245,6 @@ if (NOT HDF5_EXTERNALLY_CONFIGURED) endif () endif () -if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - if (CMAKE_HOST_UNIX) - set (CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/HDF_Group/${HDF5_PACKAGE_NAME}/${HDF5_PACKAGE_VERSION}" - CACHE PATH "Install path prefix, prepended onto install directories." FORCE) - else () - GetDefaultWindowsPrefixBase(CMAKE_GENERIC_PROGRAM_FILES) - set (CMAKE_INSTALL_PREFIX - "${CMAKE_GENERIC_PROGRAM_FILES}/HDF_Group/${HDF5_PACKAGE_NAME}/${HDF5_PACKAGE_VERSION}" - CACHE PATH "Install path prefix, prepended onto install directories." FORCE) - set (CMAKE_GENERIC_PROGRAM_FILES) - endif () -endif () - #----------------------------------------------------------------------------- # Set the cpack variables #----------------------------------------------------------------------------- diff --git a/CMakeLists.txt b/CMakeLists.txt index 90450a8..135e1ba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -828,17 +828,6 @@ endif () #----------------------------------------------------------------------------- add_subdirectory (src) -#----------------------------------------------------------------------------- -# Include filter plugins -#----------------------------------------------------------------------------- -include (CMakePlugins.cmake) - -if (HDF5_PACKAGE_EXTLIBS AND NOT HDF5_NO_PACKAGES) - if (HDF5_ENABLE_PLUGIN_SUPPORT AND PLUGIN_FOUND) - PACKAGE_PLUGIN_LIBRARY (${HDF5_ALLOW_EXTERNAL_SUPPORT}) - endif () -endif () - if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") if (ZLIB_FOUND AND ZLIB_USE_EXTERNAL) if (NOT ONLY_SHARED_LIBS) @@ -856,11 +845,6 @@ if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR HDF5_ALLOW_EXTERNAL_SUPPORT MAT add_dependencies (${HDF5_LIBSH_TARGET} SZIP) endif () endif () - if (PLUGIN_FOUND AND PLUGIN_USE_EXTERNAL) - if (BUILD_SHARED_LIBS) - add_dependencies (PLUGIN ${HDF5_LIBSH_TARGET}) - endif () - endif () endif () #----------------------------------------------------------------------------- @@ -931,6 +915,21 @@ if (BUILD_TESTING) endif () #----------------------------------------------------------------------------- +# Include filter plugins +#----------------------------------------------------------------------------- +include (CMakePlugins.cmake) + +if (HDF5_PACKAGE_EXTLIBS AND NOT HDF5_NO_PACKAGES) + if (HDF5_ENABLE_PLUGIN_SUPPORT AND PLUGIN_FOUND) + PACKAGE_PLUGIN_LIBRARY (${HDF5_ALLOW_EXTERNAL_SUPPORT}) +# option (HDF5_TEST_PLUGIN "Execute plugin tests" ON) +# mark_as_advanced (HDF5_TEST_PLUGIN) + +# TEST_PLUGIN_LIBRARY () + endif () +endif () + +#----------------------------------------------------------------------------- # Option to build HDF5 Utilities #----------------------------------------------------------------------------- if (EXISTS "${HDF5_SOURCE_DIR}/utils" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/utils") diff --git a/MANIFEST b/MANIFEST index 1edec4a..88ac94c 100644 --- a/MANIFEST +++ b/MANIFEST @@ -3387,6 +3387,7 @@ ./config/cmake/HDFFortranCompilerFlags.cmake ./config/cmake/HDF5Macros.cmake ./config/cmake/HDF5PluginMacros.cmake +./config/cmake/HDF5PluginCache.cmake ./config/cmake/HDF5UseFortran.cmake ./config/cmake/jrunTest.cmake ./config/cmake/libh5cc.in diff --git a/config/cmake/HDF5PluginCache.cmake b/config/cmake/HDF5PluginCache.cmake new file mode 100644 index 0000000..7f3aea9 --- /dev/null +++ b/config/cmake/HDF5PluginCache.cmake @@ -0,0 +1,28 @@ +# This is the CMakeCache file. + +######################## +# EXTERNAL cache entries +######################## + +# examples are the tests for plugins +set (H5PL_BUILD_TESTING ON CACHE BOOL "Enable h5pl testing" FORCE) +set (BUILD_EXAMPLES ON CACHE BOOL "Build h5pl Examples" FORCE) + +set (HDF5_PACKAGE_NAME "hdf5" CACHE STRING "Name of HDF5 package" FORCE) +set (HDF5_HDF5_HEADER "h5pubconf.h" CACHE STRING "Name of HDF5 header" FORCE) +set (HDF5_LINK_TARGET ${HDF5_LIBSH_TARGET} CACHE STRING "hdf5 target" FORCE) +set (HDF5_LINK_LIBS $ CACHE STRING "hdf5 shared link library" FORCE) +#set (HDF5_INCLUDE_DIR $ CACHE PATH "hdf5 include dirs" FORCE) +set (HDF5_INCLUDE_DIR "${HDF5_SRC_DIR};${HDF5_SRC_BINARY_DIR}" CACHE PATH "hdf5 include dirs" FORCE) +set (HDF5_INCLUDE_DIRS "${HDF5_SRC_DIR};${HDF5_SRC_BINARY_DIR}" CACHE PATH "hdf5 include dirs" FORCE) +set (HDF5_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE STRING "hdf5 build folder" FORCE) + +set (H5PL_ALLOW_EXTERNAL_SUPPORT "${HDF5_ALLOW_EXTERNAL_SUPPORT}" CACHE STRING "Allow External Library Building (NO GIT TGZ)" FORCE) + +set (H5PL_GIT_URL "https://git@bitbucket.hdfgroup.org/scm/test/h5plugin.git" CACHE STRING "Use plugins from HDF repository" FORCE) +set (H5PL_GIT_BRANCH "master" CACHE STRING "" FORCE) + +set (H5PL_TGZ_NAME "${PLUGIN_TGZ_NAME}" CACHE STRING "Use plugins from compressed file" FORCE) + +set (PL_PACKAGE_NAME "${PLUGIN_PACKAGE_NAME}" CACHE STRING "Name of plugins package" FORCE) +set (H5PL_CPACK_ENABLE OFF CACHE BOOL "Enable the CPACK include and components" FORCE) diff --git a/config/cmake/HDF5PluginMacros.cmake b/config/cmake/HDF5PluginMacros.cmake index 46d3979..3c0e12c 100644 --- a/config/cmake/HDF5PluginMacros.cmake +++ b/config/cmake/HDF5PluginMacros.cmake @@ -3,114 +3,72 @@ #------------------------------------------------------------------------------- macro (EXTERNAL_PLUGIN_LIBRARY compress_type) if (${compress_type} MATCHES "GIT") - EXTERNALPROJECT_ADD (PLUGIN + FetchContent_Declare (PLUGIN GIT_REPOSITORY ${PLUGIN_URL} GIT_TAG ${PLUGIN_BRANCH} - LIST_SEPARATOR | - INSTALL_COMMAND "" - CMAKE_ARGS - -DUSE_SHARED_LIBS:BOOL=ON - -DBUILD_SHARED_LIBS:BOOL=ON - -DH5PL_ALLOW_EXTERNAL_SUPPORT:STRING=${HDF5_ALLOW_EXTERNAL_SUPPORT} - -DBUILD_TESTING:STRING=OFF - -DBUILD_EXAMPLES:STRING=OFF - -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} - -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX} - -DCMAKE_RUNTIME_OUTPUT_DIRECTORY:PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} - -DCMAKE_LIBRARY_OUTPUT_DIRECTORY:PATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} - -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY:PATH=${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} - -DCMAKE_PDB_OUTPUT_DIRECTORY:PATH=${CMAKE_PDB_OUTPUT_DIRECTORY} - -DDISABLE_PLUGIN_ENCODER:BOOL=OFF - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} - # the hdf5 settings - -DHDF5_PACKAGE_NAME:STRING=hdf5 - -DHDF5_HDF5_HEADER:STRING=h5pubconf.h - -DHDF5_LINK_LIBS:STRING=$ - -DHDF5_INCLUDE_DIR:PATH=${HDF5_SRC_DIR}|${HDF5_SRC_BINARY_DIR} - -DPL_PACKAGE_NAME:STRING=${PLUGIN_PACKAGE_NAME} - -DH5PL_CPACK_ENABLE:BOOL=ON - -DHDF5_DIR:STRING=${CMAKE_CURRENT_BINARY_DIR} - -DTGZPATH:PATH=${TGZPATH} - # the filters - -DBSHUF_TGZ_NAME:STRING=${BSHUF_TGZ_NAME} - -DBSHUF_PACKAGE_NAME:STRING=${BSHUF_PACKAGE_NAME} - -DBLOSC_TGZ_NAME:STRING=${BLOSC_TGZ_NAME} - -DBLOSC_PACKAGE_NAME:STRING=${BLOSC_PACKAGE_NAME} - -DZLIB_TGZ_NAME:STRING=${ZLIB_TGZ_NAME} - -DZLIB_PACKAGE_NAME:STRING=${ZLIB_PACKAGE_NAME} - -DBZ2_TGZ_NAME:STRING=${BZ2_TGZ_NAME} - -DBZ2_PACKAGE_NAME:STRING=${BZ2_PACKAGE_NAME} - #-DFPZIP_TGZ_NAME:STRING=${FPZIP_TGZ_NAME} - #-DFPZIP_PACKAGE_NAME:STRING=${FPZIP_PACKAGE_NAME} - -DJPEG_TGZ_NAME:STRING=${JPEG_TGZ_NAME} - -DJPEG_PACKAGE_NAME:STRING=${JPEG_PACKAGE_NAME} - -DLZ4_TGZ_NAME:STRING=${LZ4_TGZ_NAME} - -DLZ4_PACKAGE_NAME:STRING=${LZ4_PACKAGE_NAME} - -DLZF_TGZ_NAME:STRING=${LZF_TGZ_NAME} - -DLZF_PACKAGE_NAME:STRING=${LZF_PACKAGE_NAME} - -DSZF_TGZ_NAME:STRING=${SZF_TGZ_NAME} - -DSZF_PACKAGE_NAME:STRING=${SZF_PACKAGE_NAME} - -DZFP_TGZ_NAME:STRING=${ZFP_TGZ_NAME} - -DZFP_PACKAGE_NAME:STRING=${ZFP_PACKAGE_NAME} ) elseif (${compress_type} MATCHES "TGZ") - EXTERNALPROJECT_ADD (PLUGIN + FetchContent_Declare (PLUGIN URL ${PLUGIN_URL} - URL_MD5 "" - LIST_SEPARATOR | - INSTALL_COMMAND "" - CMAKE_ARGS - -DUSE_SHARED_LIBS:BOOL=ON - -DBUILD_SHARED_LIBS:BOOL=ON - -DH5PL_ALLOW_EXTERNAL_SUPPORT:STRING=${HDF5_ALLOW_EXTERNAL_SUPPORT} - -DBUILD_TESTING:STRING=OFF - -DBUILD_EXAMPLES:STRING=OFF - -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} - -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX} - -DCMAKE_RUNTIME_OUTPUT_DIRECTORY:PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} - -DCMAKE_LIBRARY_OUTPUT_DIRECTORY:PATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} - -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY:PATH=${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} - -DCMAKE_PDB_OUTPUT_DIRECTORY:PATH=${CMAKE_PDB_OUTPUT_DIRECTORY} - -DDISABLE_PLUGIN_ENCODER:BOOL=OFF - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} - # the hdf5 settings - -DHDF5_PACKAGE_NAME:STRING=hdf5 - -DHDF5_HDF5_HEADER:STRING=h5pubconf.h - -DHDF5_LINK_LIBS:STRING=$ - -DHDF5_INCLUDE_DIR:PATH=${HDF5_SRC_DIR}|${HDF5_SRC_BINARY_DIR} - -DPL_PACKAGE_NAME:STRING=${PLUGIN_PACKAGE_NAME} - -DH5PL_CPACK_ENABLE:BOOL=ON - -DHDF5_DIR:STRING=${CMAKE_CURRENT_BINARY_DIR} - -DTGZPATH:PATH=${TGZPATH} - # the filters - -DBSHUF_TGZ_NAME:STRING=${BSHUF_TGZ_NAME} - -DBSHUF_PACKAGE_NAME:STRING=${BSHUF_PACKAGE_NAME} - -DBLOSC_TGZ_NAME:STRING=${BLOSC_TGZ_NAME} - -DBLOSC_PACKAGE_NAME:STRING=${BLOSC_PACKAGE_NAME} - -DZLIB_TGZ_NAME:STRING=${ZLIB_TGZ_NAME} - -DZLIB_PACKAGE_NAME:STRING=${ZLIB_PACKAGE_NAME} - -DBZ2_TGZ_NAME:STRING=${BZ2_TGZ_NAME} - -DBZ2_PACKAGE_NAME:STRING=${BZ2_PACKAGE_NAME} - #-DFPZIP_TGZ_NAME:STRING=${FPZIP_TGZ_NAME} - #-DFPZIP_PACKAGE_NAME:STRING=${FPZIP_PACKAGE_NAME} - -DJPEG_TGZ_NAME:STRING=${JPEG_TGZ_NAME} - -DJPEG_PACKAGE_NAME:STRING=${JPEG_PACKAGE_NAME} - -DLZ4_TGZ_NAME:STRING=${LZ4_TGZ_NAME} - -DLZ4_PACKAGE_NAME:STRING=${LZ4_PACKAGE_NAME} - -DLZF_TGZ_NAME:STRING=${LZF_TGZ_NAME} - -DLZF_PACKAGE_NAME:STRING=${LZF_PACKAGE_NAME} - -DSZF_TGZ_NAME:STRING=${SZF_TGZ_NAME} - -DSZF_PACKAGE_NAME:STRING=${SZF_PACKAGE_NAME} - -DZFP_TGZ_NAME:STRING=${ZFP_TGZ_NAME} - -DZFP_PACKAGE_NAME:STRING=${ZFP_PACKAGE_NAME} + URL_HASH "" ) endif () - externalproject_get_property (PLUGIN BINARY_DIR SOURCE_DIR) - set (PLUGIN_BINARY_DIR "${BINARY_DIR}") - -# include (${BINARY_DIR}/PLUGIN-targets.cmake) + FetchContent_GetProperties(PLUGIN) + message (STATUS "HDF5_INCLUDE_DIR=${HDF5_INCLUDE_DIR}") + if(NOT PLUGIN_POPULATED) + FetchContent_Populate(PLUGIN) + include (${HDF_RESOURCES_DIR}/HDF5PluginCache.cmake) + set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) + add_subdirectory(${plugin_SOURCE_DIR} ${plugin_BINARY_DIR}) + if (ENABLE_BLOSC) + add_dependencies (h5blosc ${HDF5_LIBSH_TARGET}) + add_dependencies (h5ex_d_blosc ${HDF5_LIBSH_TARGET}) + target_include_directories (h5ex_d_blosc PRIVATE "${HDF5_SRC_DIR};${HDF5_SRC_BINARY_DIR}") + endif () + if (ENABLE_BSHUF) + add_dependencies (h5bshuf ${HDF5_LIBSH_TARGET}) + add_dependencies (h5ex_d_bshuf ${HDF5_LIBSH_TARGET}) + target_include_directories (h5ex_d_bshuf PRIVATE "${HDF5_SRC_DIR};${HDF5_SRC_BINARY_DIR}") + endif () + if (ENABLE_BZIP2) + add_dependencies (h5bz2 ${HDF5_LIBSH_TARGET}) + add_dependencies (h5ex_d_bzip2 ${HDF5_LIBSH_TARGET}) + target_include_directories (h5ex_d_bzip2 PRIVATE "${HDF5_SRC_DIR};${HDF5_SRC_BINARY_DIR}") + endif () + if (ENABLE_JPEG) + add_dependencies (h5jpeg ${HDF5_LIBSH_TARGET}) + add_dependencies (h5ex_d_jpeg ${HDF5_LIBSH_TARGET}) + target_include_directories (h5ex_d_jpeg PRIVATE "${HDF5_SRC_DIR};${HDF5_SRC_BINARY_DIR}") + endif () + if (ENABLE_LZ4) + add_dependencies (h5lz4 ${HDF5_LIBSH_TARGET}) + add_dependencies (h5ex_d_lz4 ${HDF5_LIBSH_TARGET}) + target_include_directories (h5ex_d_lz4 PRIVATE "${HDF5_SRC_DIR};${HDF5_SRC_BINARY_DIR}") + endif () + if (ENABLE_LZF) + add_dependencies (h5lzf ${HDF5_LIBSH_TARGET}) + add_dependencies (h5ex_d_lzf ${HDF5_LIBSH_TARGET}) + target_include_directories (h5ex_d_lzf PRIVATE "${HDF5_SRC_DIR};${HDF5_SRC_BINARY_DIR}") + endif () + if (ENABLE_MAFISC) + add_dependencies (h5mafisc ${HDF5_LIBSH_TARGET}) + add_dependencies (h5ex_d_mafisc ${HDF5_LIBSH_TARGET}) + target_include_directories (h5ex_d_mafisc PRIVATE "${HDF5_SRC_DIR};${HDF5_SRC_BINARY_DIR}") + endif () + if (ENABLE_SZF) + add_dependencies (h5szf ${HDF5_LIBSH_TARGET}) + add_dependencies (h5ex_d_szf ${HDF5_LIBSH_TARGET}) + target_include_directories (h5ex_d_szf PRIVATE "${HDF5_SRC_DIR};${HDF5_SRC_BINARY_DIR}") + endif () + if (ENABLE_ZFP) + add_dependencies (h5zfp ${HDF5_LIBSH_TARGET}) + add_dependencies (h5ex_d_zfp ${HDF5_LIBSH_TARGET}) + target_include_directories (h5ex_d_zfp PRIVATE "${HDF5_SRC_DIR};${HDF5_SRC_BINARY_DIR}") + endif () + endif() + message (STATUS "HDF5_INCLUDE_DIR=${HDF5_INCLUDE_DIR}") + set (PLUGIN_BINARY_DIR "${plugin_BINARY_DIR}") + set (PLUGIN_SOURCE_DIR "${plugin_SOURCE_DIR}") set (PLUGIN_LIBRARY "PLUGIN") set (PLUGIN_FOUND 1) endmacro () @@ -129,7 +87,7 @@ macro (FILTER_OPTION plname) elseif (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") if (NOT TGZPATH) set (TGZPATH ${H5PL_SOURCE_DIR}) - endif () + endif () set (HDF_${plname}_URL ${TGZPATH}/${HDF_${plname}_TGZ_NAME}) endif () endif () diff --git a/config/cmake_ext_mod/HDFMacros.cmake b/config/cmake_ext_mod/HDFMacros.cmake index 8ca8159..952b766 100644 --- a/config/cmake_ext_mod/HDFMacros.cmake +++ b/config/cmake_ext_mod/HDFMacros.cmake @@ -429,6 +429,19 @@ macro (HDF_DIR_PATHS package_prefix) endif () endif () + if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + if (CMAKE_HOST_UNIX) + set (CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/HDF_Group/${HDF5_PACKAGE_NAME}/${HDF5_PACKAGE_VERSION}" + CACHE PATH "Install path prefix, prepended onto install directories." FORCE) + else () + GetDefaultWindowsPrefixBase(CMAKE_GENERIC_PROGRAM_FILES) + set (CMAKE_INSTALL_PREFIX + "${CMAKE_GENERIC_PROGRAM_FILES}/HDF_Group/${HDF5_PACKAGE_NAME}/${HDF5_PACKAGE_VERSION}" + CACHE PATH "Install path prefix, prepended onto install directories." FORCE) + set (CMAKE_GENERIC_PROGRAM_FILES) + endif () + endif () + #----------------------------------------------------------------------------- # Setup pre-3.14 FetchContent #----------------------------------------------------------------------------- diff --git a/fortran/src/CMakeLists.txt b/fortran/src/CMakeLists.txt index 67d54b9..34d79a7 100644 --- a/fortran/src/CMakeLists.txt +++ b/fortran/src/CMakeLists.txt @@ -560,5 +560,3 @@ if (NOT WIN32 AND NOT MINGW) COMPONENT fortlibraries ) endif () - - diff --git a/hl/c++/src/CMakeLists.txt b/hl/c++/src/CMakeLists.txt index 2c1a838..77382c2 100644 --- a/hl/c++/src/CMakeLists.txt +++ b/hl/c++/src/CMakeLists.txt @@ -133,4 +133,3 @@ if (NOT WIN32 AND NOT MINGW) COMPONENT hlcpplibraries ) endif () - diff --git a/hl/fortran/src/CMakeLists.txt b/hl/fortran/src/CMakeLists.txt index be0eba5..82b5555 100644 --- a/hl/fortran/src/CMakeLists.txt +++ b/hl/fortran/src/CMakeLists.txt @@ -318,3 +318,51 @@ if (HDF5_EXPORTED_TARGETS) INCLUDES DESTINATION include ) endif () + +#----------------------------------------------------------------------------- +# Create pkgconfig files +#----------------------------------------------------------------------------- +set (_PKG_CONFIG_PREFIX ${CMAKE_INSTALL_PREFIX}) +set (_PKG_CONFIG_EXEC_PREFIX \${prefix}) +set (_PKG_CONFIG_LIBDIR \${exec_prefix}/lib) +set (_PKG_CONFIG_INCLUDEDIR \${prefix}/include) +set (_PKG_CONFIG_LIBNAME "${HDF5_HL_F90_LIB_CORENAME}") +set (_PKG_CONFIG_VERSION "${HDF5_PACKAGE_VERSION}") + +set (_PKG_CONFIG_LIBS_PRIVATE) + +if (NOT ONLY_SHARED_LIBS) + set (_PKG_CONFIG_LIBS "${_PKG_CONFIG_LIBS} -l${HDF5_HL_F90_LIB_CORENAME}") +endif () +if (BUILD_SHARED_LIBS) + set (_PKG_CONFIG_SH_LIBS "${_PKG_CONFIG_SH_LIBS} -l${HDF5_HL_F90_LIB_CORENAME}") +endif () + +set (_PKG_CONFIG_REQUIRES "${HDF5_F90_LIB_CORENAME}") +set (_PKG_CONFIG_REQUIRES_PRIVATE "${HDF5_F90_LIB_CORENAME}") + +configure_file ( + ${HDF_RESOURCES_DIR}/libhdf5.pc.in + ${HDF5_BINARY_DIR}/CMakeFiles/${HDF5_HL_F90_LIB_CORENAME}-${HDF5_PACKAGE_VERSION}.pc + @ONLY +) +install ( + FILES ${HDF5_BINARY_DIR}/CMakeFiles/${HDF5_HL_F90_LIB_CORENAME}-${HDF5_PACKAGE_VERSION}.pc + DESTINATION ${HDF5_INSTALL_LIB_DIR}/pkgconfig + COMPONENT hlfortlibraries +) + +if (NOT WIN32 AND NOT MINGW) + set (_PKG_CONFIG_COMPILER ${CMAKE_Fortran_COMPILER}) + configure_file ( + ${HDF_RESOURCES_DIR}/libh5cc.in + ${HDF5_BINARY_DIR}/CMakeFiles/h5hlfc + @ONLY + ) + install ( + FILES ${HDF5_BINARY_DIR}/CMakeFiles/h5hlfc + DESTINATION ${HDF5_INSTALL_BIN_DIR} + PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE + COMPONENT hlfortlibraries + ) +endif () diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt index d5944b8..14b7f44 100644 --- a/release_docs/RELEASE.txt +++ b/release_docs/RELEASE.txt @@ -31,6 +31,7 @@ If you have any questions or comments, please send them to the HDF Help Desk: CONTENTS +======== - New Features - Support for new platforms and languages @@ -47,55 +48,71 @@ New Features Configuration: ------------- + - CMake option to build the HDF filter plugins project as an external project + + The HDF filter plugins project is a collection of registered compression + filters that can be dynamically loaded when needed to access data stored + in a hdf5 file. This CMake-only option allows the plugins to be built and + distributed with the hdf5 library and tools. Like the options for szip and + zlib, either a tgz file or a git repository can be specified for the source. + + The option was refactored to use the CMake FetchContent process. This allows + more control over the filter targets, but required external project command + options to be moved to a CMake include file, HDF5PluginCache.cmake. Also + enabled the filter examples to be used as tests for operation of the + filter plugins. + + (ADB - 2020/12/10, OESS-98) + - Autotools and CMake target added to produce doxygen generated documentation - The default is OFF or disabled. - Autoconf option is '--enable-doxygen' + The default is OFF or disabled. + Autoconf option is '--enable-doxygen' autotools make target is 'doxygen' and will build all doxygen targets - CMake configure option is 'HDF5_BUILD_DOC'. + CMake configure option is 'HDF5_BUILD_DOC'. CMake target is 'doxygen' for all available doxygen targets CMake target is 'hdf5lib_doc' for the src subdirectory - (ADB - 2020/11/13) + (ADB - 2020/11/13) - CMake option to use MSVC naming conventions with MinGW - HDF5_MSVC_NAMING_CONVENTION option enable to use MSVC naming conventions - when using a MinGW toolchain + HDF5_MSVC_NAMING_CONVENTION option enable to use MSVC naming conventions + when using a MinGW toolchain - (xan - 2020/10/30) + (xan - 2020/10/30) - CMake option to statically link gcc libs with MinGW - HDF5_MINGW_STATIC_GCC_LIBS allows to statically link libg/libstdc++ - with the MinGW toolchain + HDF5_MINGW_STATIC_GCC_LIBS allows to statically link libg/libstdc++ + with the MinGW toolchain - (xan - 2020/10/30) + (xan - 2020/10/30) - CMake option to build the HDF filter plugins project as an external project - The HDF filter plugins project is a collection of registered compression - filters that can be dynamically loaded when needed to access data stored - in a hdf5 file. This CMake-only option allows the plugins to be built and - distributed with the hdf5 library and tools. Like the options for szip and - zlib, either a tgz file or a git repository can be specified for the source. + The HDF filter plugins project is a collection of registered compression + filters that can be dynamically loaded when needed to access data stored + in a hdf5 file. This CMake-only option allows the plugins to be built and + distributed with the hdf5 library and tools. Like the options for szip and + zlib, either a tgz file or a git repository can be specified for the source. - The necessary options are (see the INSTALL_CMake.txt file): + The necessary options are (see the INSTALL_CMake.txt file): HDF5_ENABLE_PLUGIN_SUPPORT PLUGIN_TGZ_NAME or PLUGIN_GIT_URL - There are more options necessary for various filters and the plugin project - documents should be referenced. + There are more options necessary for various filters and the plugin project + documents should be referenced. - (ADB - 2020/10/16, OESS-98) + (ADB - 2020/10/16, OESS-98) - Added CMake option to format source files - HDF5_ENABLE_FORMATTERS option will enable creation of targets using the - pattern - HDF5_*_SRC_FORMAT - where * corresponds to the source folder - or tool folder. All sources can be formatted by executing the format target; - make format + HDF5_ENABLE_FORMATTERS option will enable creation of targets using the + pattern - HDF5_*_SRC_FORMAT - where * corresponds to the source folder + or tool folder. All sources can be formatted by executing the format target; + make format - (ADB - 2020/09/24) + (ADB - 2020/09/24) Library: -------- @@ -113,12 +130,13 @@ New Features ---------------- - Added new H5S functions. - H5Sselect_copy, H5Sselect_shape_same, H5Sselect_adjust, - H5Sselect_intersect_block, H5Sselect_project_intersection, - H5Scombine_hyperslab, H5Smodify_select, H5Scombine_select - wrapper functions added. + H5Sselect_copy, H5Sselect_shape_same, H5Sselect_adjust, + H5Sselect_intersect_block, H5Sselect_project_intersection, + H5Scombine_hyperslab, H5Smodify_select, H5Scombine_select + wrapper functions added. + + (ADB - 2020/10/27, HDFFV-10868) - (ADB - 2020/10/27, HDFFV-10868) Tools: ------ @@ -146,7 +164,6 @@ Support for new platforms, languages and compilers. Bug Fixes since HDF5-1.10.7 release ================================== - Library ------- - @@ -222,8 +239,6 @@ Supported Platforms 32- and 64-bit Studio 12.6 Fortran 95 8.8 SunOS_sparc 2017/05/30 (hedgehog) Sun C++ 5.15 SunOS_sparc 2017/05/30 - Windows 7 x64 Visual Studio 2015 w/ Intel C, Fortran 2018 (cmake) - Windows 10 x64 Visual Studio 2015 w/ Intel Fortran 18 (cmake) Visual Studio 2017 w/ Intel Fortran 19 (cmake) Visual Studio 2019 w/ Intel Fortran 19 (cmake) @@ -250,7 +265,6 @@ Platform C F90/ F90 C++ zlib SZIP parallel F2003 parallel Solaris2.11 32-bit n y/y n y y y Solaris2.11 64-bit n y/n n y y y -Windows 7 x64 y y/y y y y y Windows 10 y y/y n y y y Windows 10 x64 y y/y n y y y Mac OS X El Capitan 10.11.6 64-bit n y/y n y y y @@ -267,7 +281,6 @@ Platform Shared Shared Shared Thread- C libs F90 libs C++ libs safe Solaris2.11 32-bit y y y y Solaris2.11 64-bit y y y y -Windows 7 x64 y y y y Windows 10 y y y y Windows 10 x64 y y y y Mac OS X El Capitan 10.11.6 64-bit y n y y @@ -332,9 +345,15 @@ The following platforms are not supported but have been tested for this release. # 1SMP x86_64 GNU/Linux gcc/7.2.0, 8.2.0 (mutrino) intel/17.0.4, 18.0.2, 19.0.4 - Fedora 32 5.7.15-200.fc32.x86_64 Clang version 10.0.0 (Fedora 10.0.0-2.fc32) - #1 SMP x86_64 GNU/Linux GNU gcc (GCC) 10.2.1 20200723 (Red Hat 10.2.1-1) - GNU Fortran (GCC) 10.2.1 20200723 (Red Hat 10.2.1) + Fedora32 5.8.18-200.fc32.x86_64 + #1 SMP x86_64 GNU/Linux GNU gcc (GCC) 10.2.1 20201016 (Red Hat 10.2.1-6) + GNU Fortran (GCC) 10.2.1 20201016 (Red Hat 10.2.1-6) + clang version 10.0.1 (Fedora 10.0.1-3.fc32) + (cmake and autotools) + + Ubuntu20.10 -5.8.0-29-generic-x86_64 + #31-Ubuntu SMP x86_64 GNU/Linux GNU gcc (GCC) 10.2.0-13ubuntu1 + GNU Fortran (GCC) 10.2.0-13ubuntu1 (cmake and autotools) Mac OS X El Capitan 10.11.6 Apple clang version 7.3.0 from Xcode 7.3 -- cgit v0.12