diff --git a/BLOSC/CMakeLists.txt b/BLOSC/CMakeLists.txt index e5fcec5c..474c67e4 100644 --- a/BLOSC/CMakeLists.txt +++ b/BLOSC/CMakeLists.txt @@ -69,7 +69,7 @@ set (H5BLOSC_PACKAGE_URL "http://www.hdfgroup.org") set (H5BLOSC_PACKAGE_BUGREPORT "help@hdfgroup.org") set (H5BLOSC_PACKAGE_SOVERSION "${H5BLOSC_SOVERS_MAJOR}.${H5BLOSC_SOVERS_RELEASE}.${H5BLOSC_SOVERS_MINOR}") set (H5BLOSC_PACKAGE_SOVERSION_MAJOR "${H5BLOSC_SOVERS_MAJOR}") -message("Configuring for blosc HDF5 Plugin version: " ${H5BLOSC_PACKAGE_STRING}) +message (STATUS "Configuring for blosc HDF5 Plugin version: " ${H5BLOSC_PACKAGE_STRING}) #----------------------------------------------------------------------------- # Include some macros for reusable code @@ -193,7 +193,7 @@ if (HDF_ENABLE_BLOSC_SUPPORT) set (BLOSC_INCLUDE_DIRS ${BLOSC_INCLUDE_DIRS} ${BLOSC_INCLUDE_DIR}) else () if (H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") - EXTERNAL_BLOSC_LIBRARY (${H5PL_ALLOW_EXTERNAL_SUPPORT} STATIC) + EXTERNAL_BLOSC_LIBRARY (${H5PL_ALLOW_EXTERNAL_SUPPORT}) set (H5_HAVE_BLOSC_H 1) set (H5_HAVE_BLOSC 1) set (H5_BLOSC_HEADER "blosc.h") @@ -206,7 +206,7 @@ if (HDF_ENABLE_BLOSC_SUPPORT) # This project is being called from within another and BLOSC is already configured set (H5_HAVE_BLOSC_H 1) endif () - set (LINK_LIBS ${LINK_LIBS} ${BLOSC_LIBRARY}) + set (LINK_LIBS ${LINK_LIBS} ${BLOSC_LIBRARIES}) set (H5BLOSC_INCLUDE_DIRS ${H5BLOSC_INCLUDE_DIRS} ${BLOSC_INCLUDE_DIRS}) message (STATUS "BLOSC is ON") endif () @@ -223,13 +223,6 @@ option (HDF_PACKAGE_EXTLIBS "CPACK - include external libraries" OFF) if (NOT HDF_EXTERNALLY_CONFIGURED) if (HDF_PACKAGE_EXTLIBS) set (HDF_NO_PACKAGES OFF CACHE BOOL "CPACK - Disable packaging" FORCE) - if (HDF_ENABLE_BLOSC_ZLIB_SUPPORT AND ZLIB_FOUND) - PACKAGE_BLOSC_ZLIB_LIBRARY (${H5PL_ALLOW_EXTERNAL_SUPPORT}) - endif () - - if (HDF_ENABLE_BLOSC_SUPPORT AND BLOSC_FOUND) - PACKAGE_BLOSC_LIBRARY (${H5PL_ALLOW_EXTERNAL_SUPPORT}) - endif () endif () endif () @@ -248,17 +241,6 @@ endif () add_subdirectory (src) -if (H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") - if (HDF_ENABLE_BLOSC_ZLIB_SUPPORT) - if (ZLIB_FOUND AND BLOSC_ZLIB_USE_EXTERNAL) - add_dependencies (${H5BLOSC_LIB_TARGET} BLOSC_ZLIB) - endif () - endif () - if (BLOSC_FOUND AND BLOSC_USE_EXTERNAL) - add_dependencies (${H5BLOSC_LIB_TARGET} BLOSC) - endif () -endif () - option (BUILD_EXAMPLES "Build h5blosc Examples" OFF) if (BUILD_EXAMPLES) add_subdirectory (example) diff --git a/BLOSC/config/cmake/ConfigureChecks.cmake b/BLOSC/config/cmake/ConfigureChecks.cmake index a7fbd78f..7973cafe 100644 --- a/BLOSC/config/cmake/ConfigureChecks.cmake +++ b/BLOSC/config/cmake/ConfigureChecks.cmake @@ -180,9 +180,13 @@ macro (HDF_FUNCTION_TEST OTHER_TEST) ) if (${OTHER_TEST}) set (${OTHER_TEST} 1 CACHE INTERNAL "Other test ${FUNCTION}") - message (VERBOSE "Performing Other Test ${OTHER_TEST} - Success") + if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.15.0") + message (VERBOSE "Performing Other Test ${OTHER_TEST} - Success") + endif () else () - message (VERBOSE "Performing Other Test ${OTHER_TEST} - Failed") + if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.15.0") + message (VERBOSE "Performing Other Test ${OTHER_TEST} - Failed") + endif () set (${OTHER_TEST} "" CACHE INTERNAL "Other test ${FUNCTION}") file (APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log "Performing Other Test ${OTHER_TEST} failed with the following output:\n" diff --git a/BLOSC/config/cmake/H5BLOSCMacros.cmake b/BLOSC/config/cmake/H5BLOSCMacros.cmake index 5b50b3c5..cc9ce51e 100644 --- a/BLOSC/config/cmake/H5BLOSCMacros.cmake +++ b/BLOSC/config/cmake/H5BLOSCMacros.cmake @@ -9,71 +9,43 @@ # If you do not have access to either file, you may request a copy from # help@hdfgroup.org. # + +include (FetchContent) #------------------------------------------------------------------------------- -macro (EXTERNAL_BLOSC_LIBRARY compress_type libtype) - if (${libtype} MATCHES "SHARED") - set (BUILD_EXT_SHARED_LIBS "ON") - else () - set (BUILD_EXT_SHARED_LIBS "OFF") - endif () +macro (EXTERNAL_BLOSC_LIBRARY compress_type) if (${compress_type} MATCHES "GIT") - EXTERNALPROJECT_ADD (BLOSC + FetchContent_Declare (BLOSC GIT_REPOSITORY ${BLOSC_URL} GIT_TAG ${BLOSC_BRANCH} - INSTALL_COMMAND "" - CMAKE_ARGS - -DBUILD_TESTS:BOOL=OFF - -DBUILD_BENCHMARKS:BOOL=OFF - -DPREFER_EXTERNAL_SNAPPY:BOOL=OFF - -DPREFER_EXTERNAL_ZLIB:BOOL=OFF - -DPREFER_EXTERNAL_ZSTD:BOOL=OFF - -DDEACTIVATE_SNAPPY:BOOL=ON - -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} - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} ) elseif (${compress_type} MATCHES "TGZ") - EXTERNALPROJECT_ADD (BLOSC + FetchContent_Declare (BLOSC URL ${BLOSC_URL} - URL_MD5 "" - INSTALL_COMMAND "" - CMAKE_ARGS - -DBUILD_TESTS:BOOL=OFF - -DBUILD_BENCHMARKS:BOOL=OFF - -DPREFER_EXTERNAL_SNAPPY:BOOL=OFF - -DPREFER_EXTERNAL_ZLIB:BOOL=OFF - -DPREFER_EXTERNAL_ZSTD:BOOL=OFF - -DDEACTIVATE_SNAPPY:BOOL=ON - -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} - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} + URL_HASH "" ) endif () - externalproject_get_property (BLOSC BINARY_DIR SOURCE_DIR) + FetchContent_GetProperties(BLOSC) + if(NOT blosc_POPULATED) + FetchContent_Populate(BLOSC) + set (BUILD_SHARED OFF CACHE BOOL "") + set (BUILD_TESTS OFF CACHE BOOL "") + set (BUILD_FUZZERS OFF CACHE BOOL "") + set (BUILD_BENCHMARKS OFF CACHE BOOL "") + set (PREFER_EXTERNAL_SNAPPY OFF CACHE BOOL "") + set (PREFER_EXTERNAL_ZLIB OFF CACHE BOOL "") + set (PREFER_EXTERNAL_ZSTD OFF CACHE BOOL "") + set (DEACTIVATE_SNAPPY ON CACHE BOOL "") + + add_subdirectory(${blosc_SOURCE_DIR} ${blosc_BINARY_DIR}) + endif() ##include (${BINARY_DIR}/${BLOSC_PACKAGE_NAME}${H5BLOSC_PACKAGE_EXT}-targets.cmake) -# Create imported target blosc_static - add_library(blosc ${libtype} IMPORTED) - HDF_IMPORT_SET_LIB_OPTIONS (blosc "blosc" ${libtype} "") - add_dependencies (blosc BLOSC) - set (BLOSC_LIBRARY "blosc") + set (BLOSC_STATIC_LIBRARY "blosc_static") + set (BLOSC_LIBRARIES ${BLOSC_STATIC_LIBRARY}) - set (BLOSC_INCLUDE_DIR_GEN "${BINARY_DIR}") - set (BLOSC_INCLUDE_DIR "${SOURCE_DIR}/blosc") + set (BLOSC_INCLUDE_DIR_GEN "${blosc_BINARY_DIR}") + set (BLOSC_INCLUDE_DIR "${blosc_SOURCE_DIR}/blosc") set (BLOSC_FOUND 1) - set (BLOSC_LIBRARIES ${BLOSC_LIBRARY}) set (BLOSC_INCLUDE_DIRS ${BLOSC_INCLUDE_DIR_GEN} ${BLOSC_INCLUDE_DIR}) endmacro () @@ -90,54 +62,24 @@ macro (PACKAGE_BLOSC_LIBRARY compress_type) endmacro () #------------------------------------------------------------------------------- -macro (EXTERNAL_BLOSC_ZLIB_LIBRARY compress_type libtype) - if (${libtype} MATCHES "SHARED") - set (BUILD_EXT_SHARED_LIBS "ON") - else () - set (BUILD_EXT_SHARED_LIBS "OFF") - endif () +macro (EXTERNAL_BLOSC_ZLIB_LIBRARY compress_type) if (${compress_type} MATCHES "GIT") - EXTERNALPROJECT_ADD (BLOSC_ZLIB + FetchContent_Declare (BLOSC_ZLIB GIT_REPOSITORY ${BLOSC_ZLIB_URL} GIT_TAG ${BLOSC_ZLIB_BRANCH} - INSTALL_COMMAND "" - CMAKE_ARGS - -DBUILD_SHARED_LIBS:BOOL=${BUILD_EXT_SHARED_LIBS} - -DZLIB_PACKAGE_EXT:STRING=${H5BLOSC_PACKAGE_EXT} - -DZLIB_EXTERNALLY_CONFIGURED:BOOL=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} - -DCMAKE_ANSI_CFLAGS:STRING=${CMAKE_ANSI_CFLAGS} - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} ) elseif (${compress_type} MATCHES "TGZ") - EXTERNALPROJECT_ADD (BLOSC_ZLIB + FetchContent_Declare (BLOSC_ZLIB URL ${BLOSC_ZLIB_URL} - URL_MD5 "" - INSTALL_COMMAND "" - CMAKE_ARGS - -DBUILD_SHARED_LIBS:BOOL=${BUILD_EXT_SHARED_LIBS} - -DZLIB_PACKAGE_EXT:STRING=${H5BLOSC_PACKAGE_EXT} - -DZLIB_EXTERNALLY_CONFIGURED:BOOL=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} - -DCMAKE_ANSI_CFLAGS:STRING=${CMAKE_ANSI_CFLAGS} - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} + URL_HASH "" ) endif () - externalproject_get_property (BLOSC_ZLIB BINARY_DIR SOURCE_DIR) + FetchContent_GetProperties(BLOSC_ZLIB) + if(NOT blosc_zlib_POPULATED) + FetchContent_Populate(BLOSC_ZLIB) + + add_subdirectory(${blosc_zlib_SOURCE_DIR} ${blosc_zlib_BINARY_DIR}) + endif() if (WIN32) set (BLOSC_ZLIB_LIB_NAME "zlib") @@ -145,27 +87,12 @@ macro (EXTERNAL_BLOSC_ZLIB_LIBRARY compress_type libtype) set (BLOSC_ZLIB_LIB_NAME "z") endif () -# Create imported target zlib-static - add_library(zlib ${libtype} IMPORTED) - HDF_IMPORT_SET_LIB_OPTIONS (zlib ${BLOSC_ZLIB_LIB_NAME} ${libtype} "") - add_dependencies (zlib BLOSC_ZLIB) - set (BLOSC_ZLIB_LIBRARY "zlib") + set ({BLOSC_ZLIB_STATIC_LIBRARY "blosc_zlib-static") + set ({BLOSC_ZLIB_LIBRARIES ${{BLOSC_ZLIB_STATIC_LIBRARY}) - set (BLOSC_ZLIB_INCLUDE_DIR_GEN "${BINARY_DIR}") - set (BLOSC_ZLIB_INCLUDE_DIR "${SOURCE_DIR}") + set (BLOSC_ZLIB_INCLUDE_DIR_GEN "${blosc_zlib_BINARY_DIR}") + set (BLOSC_ZLIB_INCLUDE_DIR "${blosc_zlib_SOURCE_DIR}") set (BLOSC_ZLIB_FOUND 1) set (BLOSC_ZLIB_LIBRARIES ${BLOSC_ZLIB_LIBRARY}) set (BLOSC_ZLIB_INCLUDE_DIRS ${BLOSC_ZLIB_INCLUDE_DIR_GEN} ${BLOSC_ZLIB_INCLUDE_DIR}) endmacro () - -#------------------------------------------------------------------------------- -macro (PACKAGE_BLOSC_ZLIB_LIBRARY compress_type) - add_custom_target (BLOSC_ZLIB-GenHeader-Copy ALL - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${BLOSC_ZLIB_INCLUDE_DIR_GEN}/zconf.h ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ - COMMENT "Copying ${BLOSC_ZLIB_INCLUDE_DIR_GEN}/zconf.h to ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/" - ) - set (EXTERNAL_HEADER_LIST ${EXTERNAL_HEADER_LIST} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/zconf.h) - if (${compress_type} MATCHES "GIT" OR ${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ") - add_dependencies (BLOSC_ZLIB-GenHeader-Copy BLOSC_ZLIB) - endif () -endmacro () diff --git a/BLOSC/config/cmake/HDFMacros.cmake b/BLOSC/config/cmake/HDFMacros.cmake index 5e63ec23..0cf9f192 100644 --- a/BLOSC/config/cmake/HDFMacros.cmake +++ b/BLOSC/config/cmake/HDFMacros.cmake @@ -490,6 +490,8 @@ macro (HDF_DIR_PATHS package_prefix) set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) endif () endif () + + include (FetchContent) endmacro () macro (ADD_H5_FLAGS h5_flag_var infile) diff --git a/BLOSC/config/cmake/HDFPluginMacros.cmake b/BLOSC/config/cmake/HDFPluginMacros.cmake index 1bf53ce6..e5572633 100644 --- a/BLOSC/config/cmake/HDFPluginMacros.cmake +++ b/BLOSC/config/cmake/HDFPluginMacros.cmake @@ -67,7 +67,7 @@ macro (BASIC_SETTINGS varname) if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR) set (${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR ${CMAKE_INSTALL_DOCDIR}) endif () - message(STATUS "GNU: ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR}") + message(STATUS "GNU: ${${PLUGIN_PACKAGE_NAME}_INSTALL_LIB_DIR}") endif () if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_BIN_DIR) @@ -100,7 +100,7 @@ macro (BASIC_SETTINGS varname) if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR) set (${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR}) endif () - message(STATUS "Final: ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR}") + message(STATUS "Final: ${${PLUGIN_PACKAGE_NAME}_INSTALL_LIB_DIR}") #----------------------------------------------------------------------------- # Setup output Directories @@ -115,6 +115,15 @@ macro (BASIC_SETTINGS varname) set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all static libraries." ) + get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) + if(_isMultiConfig) + set (CMAKE_TEST_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}) + set (CMAKE_PDB_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all pdb files." + ) + else () + set (CMAKE_TEST_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) + endif () else () # if we are externally configured, but the project uses old cmake scripts # this may not be set @@ -304,7 +313,7 @@ macro (HDF5_SUPPORT link_hdf) set (H5PL_HDF5_HAVE_H5PUBCONF_H 1) set (H5PL_HDF5_HAVE_HDF5 1) set (H5PL_HDF5_HEADER "h5pubconf.h") - message (STATUS "HDF5 found: INC=${HDF5_INCLUDE_DIRS} TOOLS=${HDF5_TOOLS_DIR}") + message (STATUS "HDF5-${HDF5_VERSION_STRING} found: INC=${HDF5_INCLUDE_DIRS} TOOLS=${HDF5_TOOLS_DIR}") else () message (FATAL_ERROR " HDF5 is Required for plugin library") endif () @@ -330,227 +339,224 @@ macro (INSTALL_SUPPORT varname) string(TOUPPER ${varname} PLUGIN_PACKAGE_NAME) string(TOLOWER ${varname} PLUGIN_NAME) - #----------------------------------------------------------------------------- - # Set variables needed for installation - #----------------------------------------------------------------------------- - set (${PLUGIN_PACKAGE_NAME}_VERSION_STRING ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}) - set (${PLUGIN_PACKAGE_NAME}_VERSION_MAJOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}) - set (${PLUGIN_PACKAGE_NAME}_VERSION_MINOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}) - - #----------------------------------------------------------------------------- - # Configure the H5PL_Examples.cmake file and the examples - #----------------------------------------------------------------------------- - configure_file ( - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5PL_Examples.cmake.in - ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake @ONLY - ) - install ( - FILES - ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CTestScript.cmake - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/HDFoptions.cmake + if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) + #----------------------------------------------------------------------------- + # Set variables needed for installation + #----------------------------------------------------------------------------- + set (${PLUGIN_PACKAGE_NAME}_VERSION_STRING ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}) + set (${PLUGIN_PACKAGE_NAME}_VERSION_MAJOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}) + set (${PLUGIN_PACKAGE_NAME}_VERSION_MINOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}) + + #----------------------------------------------------------------------------- + # Configure the H5PL_Examples.cmake file and the examples + #----------------------------------------------------------------------------- + if (${PLUGIN_PACKAGE_NAME}_BUILD_TESTING) + configure_file ( + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5PL_Examples.cmake.in + ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake @ONLY + ) + install ( + FILES + ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CTestScript.cmake + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/HDFoptions.cmake DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} - COMPONENT hdfdocuments - ) - execute_process( - COMMAND ${CMAKE_COMMAND} -E copy_directory ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/binex ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples - ) - install ( - DIRECTORY ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples - DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} - USE_SOURCE_PERMISSIONS - COMPONENT hdfdocuments - ) + COMPONENT hdfdocuments + ) + execute_process( + COMMAND ${CMAKE_COMMAND} -E copy_directory ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/binex ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples + ) + install ( + DIRECTORY ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples + DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} + USE_SOURCE_PERMISSIONS + COMPONENT hdfdocuments + ) + endif () - #----------------------------------------------------------------------------- - # Configure the README.txt file for the binary package - #----------------------------------------------------------------------------- - PLUGIN_README_PROPERTIES (${PLUGIN_PACKAGE_NAME}) + #----------------------------------------------------------------------------- + # Configure the README.txt file for the binary package + #----------------------------------------------------------------------------- + PLUGIN_README_PROPERTIES (${PLUGIN_PACKAGE_NAME}) - #----------------------------------------------------------------------------- - # Check for Installation Utilities - #----------------------------------------------------------------------------- - if (WIN32) - set (PF_ENV_EXT "(x86)") - find_program (NSIS_EXECUTABLE NSIS.exe PATHS "$ENV{ProgramFiles}\\NSIS" "$ENV{ProgramFiles${PF_ENV_EXT}}\\NSIS") - if(NOT CPACK_WIX_ROOT) - file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT) - endif() - find_program (WIX_EXECUTABLE candle PATHS "${CPACK_WIX_ROOT}/bin") - endif () - - #----------------------------------------------------------------------------- - # Set the cpack variables - #----------------------------------------------------------------------------- - if (NOT ${PLUGIN_PACKAGE_NAME}_EXTERNALLY_CONFIGURED) - set (CPACK_PACKAGE_VENDOR "HDF_Group") - set (CPACK_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}") - if (CDASH_LOCAL) - set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}") - else () - set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_STRING}") + #----------------------------------------------------------------------------- + # Configure the COPYING.txt file for the windows binary package + #----------------------------------------------------------------------------- + if (WIN32) + configure_file (${CMAKE_SOURCE_DIR}/COPYING ${CMAKE_BINARY_DIR}/COPYING.txt @ONLY) endif () - set (CPACK_PACKAGE_VERSION_MAJOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}") - set (CPACK_PACKAGE_VERSION_MINOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}") - set (CPACK_PACKAGE_VERSION_PATCH "") - #set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") - set (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - set (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - set (CPACK_PACKAGE_RELOCATABLE TRUE) - set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PLUGIN_NAME} Installation") - set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSION}") - - set (CPACK_GENERATOR "TGZ") + + #----------------------------------------------------------------------------- + # Add Document File(s) to CMake Install + #----------------------------------------------------------------------------- + install ( + FILES + ${${PLUGIN_PACKAGE_NAME}_SOURCE_DIR}/docs/PluginLibraries.txt + DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR} + COMPONENT hdfdocuments + ) + + #----------------------------------------------------------------------------- + # Check for Installation Utilities + #----------------------------------------------------------------------------- if (WIN32) - set (CPACK_GENERATOR "ZIP") + set (PF_ENV_EXT "(x86)") + find_program (NSIS_EXECUTABLE NSIS.exe PATHS "$ENV{ProgramFiles}\\NSIS" "$ENV{ProgramFiles${PF_ENV_EXT}}\\NSIS") + if(NOT CPACK_WIX_ROOT) + file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT) + endif() + find_program (WIX_EXECUTABLE candle PATHS "${CPACK_WIX_ROOT}/bin") + endif () - if (NSIS_EXECUTABLE) - list (APPEND CPACK_GENERATOR "NSIS") - endif () - # Installers for 32- vs. 64-bit CMake: - # - Root install directory (displayed to end user at installer-run time) - # - "NSIS package/display name" (text used in the installer GUI) - # - Registry key used to store info about the installation - set (CPACK_NSIS_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - if (CMAKE_CL_64) - set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") - set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION} (Win64)") + if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + if (CMAKE_HOST_UNIX) + set (CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/HDF_Group/${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}/${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}" + CACHE PATH "Install path prefix, prepended onto install directories." FORCE + ) else () - set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") - set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + GetDefaultWindowsPrefixBase(CMAKE_GENERIC_PROGRAM_FILES) + set (CMAKE_INSTALL_PREFIX + "${CMAKE_GENERIC_PROGRAM_FILES}/HDF_Group/${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}/${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}" + CACHE PATH "Install path prefix, prepended onto install directories." FORCE + ) + set (CMAKE_GENERIC_PROGRAM_FILES) endif () - # set the install/unistall icon used for the installer itself - # There is a bug in NSI that does not handle full unix paths properly. - #set (CPACK_NSIS_MUI_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") - #set (CPACK_NSIS_MUI_UNIICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") - # set the package header icon for MUI - #set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.bmp") - set (CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}, is a dynamic filter for HDF5") - #set (CPACK_PACKAGE_INSTALL_DIRECTORY "plugins") - set (CPACK_NSIS_CONTACT "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") - set (CPACK_NSIS_MODIFY_PATH ON) - - if (WIX_EXECUTABLE) - list (APPEND CPACK_GENERATOR "WIX") + endif () + + #----------------------------------------------------------------------------- + # Set the cpack variables + #----------------------------------------------------------------------------- + if (NOT ${PLUGIN_PACKAGE_NAME}_EXTERNALLY_CONFIGURED) + set (CPACK_PACKAGE_VENDOR "HDF_Group") + set (CPACK_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}") + if (CDASH_LOCAL) + set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}") + else () + set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_STRING}") endif () - #WiX variables - set (CPACK_WIX_UNINSTALL "1") -# .. variable:: CPACK_WIX_LICENSE_RTF -# RTF License File -# -# If CPACK_RESOURCE_FILE_LICENSE has an .rtf extension it is used as-is. -# -# If CPACK_RESOURCE_FILE_LICENSE has an .txt extension it is implicitly -# converted to RTF by the WiX Generator. -# The expected encoding of the .txt file is UTF-8. -# -# With CPACK_WIX_LICENSE_RTF you can override the license file used by the -# WiX Generator in case CPACK_RESOURCE_FILE_LICENSE is in an unsupported -# format or the .txt -> .rtf conversion does not work as expected. - set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") -# .. variable:: CPACK_WIX_PRODUCT_ICON -# The Icon shown next to the program name in Add/Remove programs. -# set (CPACK_WIX_PRODUCT_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") -# -# .. variable:: CPACK_WIX_UI_BANNER -# -# The bitmap will appear at the top of all installer pages other than the -# welcome and completion dialogs. -# -# If set, this image will replace the default banner image. -# -# This image must be 493 by 58 pixels. -# -# .. variable:: CPACK_WIX_UI_DIALOG -# -# Background bitmap used on the welcome and completion dialogs. -# -# If this variable is set, the installer will replace the default dialog -# image. -# -# This image must be 493 by 312 pixels. -# - elseif (APPLE) - list (APPEND CPACK_GENERATOR "STGZ") - list (APPEND CPACK_GENERATOR "DragNDrop") - set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) - set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") -# set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/h5blosc.gif") - - option (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE "Package the ${PLUGIN_PACKAGE_NAME} Library in a Bundle" OFF) - if (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE) - list (APPEND CPACK_GENERATOR "Bundle") - set (CPACK_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - set (CPACK_BUNDLE_LOCATION "/") # make sure CMAKE_INSTALL_PREFIX ends in / - set (CMAKE_INSTALL_PREFIX "/${CPACK_BUNDLE_NAME}.framework/Versions/${CPACK_PACKAGE_VERSION}/${CPACK_PACKAGE_NAME}/") -# set (CPACK_BUNDLE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5BLOSC.icns") -# set (CPACK_BUNDLE_PLIST "${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist") - set (CPACK_APPLE_GUI_INFO_STRING "${PLUGIN_PACKAGE_NAME} Plugin Library") - set (CPACK_APPLE_GUI_COPYRIGHT "Copyright © ???. All rights reserved.") - set (CPACK_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") - set (CPACK_APPLE_GUI_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - set (CPACK_APPLE_GUI_VERSION_STRING "${CPACK_PACKAGE_VERSION_STRING}") - set (CPACK_APPLE_GUI_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") - #----------------------------------------------------------------------------- - # Configure the Info.plist file for the install bundle - #----------------------------------------------------------------------------- -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CPack.Info.plist.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist @ONLY -# ) -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/PkgInfo.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo @ONLY -# ) -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/version.plist.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist @ONLY -# ) -# install ( -# FILES ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist -# DESTINATION .. -# ) + set (CPACK_PACKAGE_VERSION_MAJOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}") + set (CPACK_PACKAGE_VERSION_MINOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}") + set (CPACK_PACKAGE_VERSION_PATCH "") + set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/COPYING") + set (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_BINARY_DIR}/README.txt") + set (CPACK_RESOURCE_FILE_README "${CMAKE_BINARY_DIR}/README.txt") + set (CPACK_PACKAGE_RELOCATABLE TRUE) + set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PLUGIN_NAME} Installation") + set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSION}") + + set (CPACK_GENERATOR "TGZ") + if (WIN32) + set (CPACK_GENERATOR "ZIP") + + if (NSIS_EXECUTABLE) + list (APPEND CPACK_GENERATOR "NSIS") + endif () + set (CPACK_NSIS_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + if (CMAKE_CL_64) + set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") + set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION} (Win64)") + else () + set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") + set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + endif () + # set the install/unistall icon used for the installer itself + # There is a bug in NSI that does not handle full unix paths properly. + #set (CPACK_NSIS_MUI_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") + #set (CPACK_NSIS_MUI_UNIICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") + # set the package header icon for MUI + #set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.bmp") + set (CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}, is a dynamic filter for HDF5") + #set (CPACK_PACKAGE_INSTALL_DIRECTORY "plugins") + set (CPACK_NSIS_CONTACT "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + set (CPACK_NSIS_MODIFY_PATH ON) + + if (WIX_EXECUTABLE) + list (APPEND CPACK_GENERATOR "WIX") + endif () + # WiX variables + set (CPACK_WIX_UNINSTALL "1") + set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + elseif (APPLE) + list (APPEND CPACK_GENERATOR "STGZ") + list (APPEND CPACK_GENERATOR "DragNDrop") + set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) + set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") +# set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/h5blosc.gif") + + option (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE "Package the ${PLUGIN_PACKAGE_NAME} Library in a Bundle" OFF) + if (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE) + list (APPEND CPACK_GENERATOR "Bundle") + set (CPACK_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + set (CPACK_BUNDLE_LOCATION "/") # make sure CMAKE_INSTALL_PREFIX ends in / + set (CMAKE_INSTALL_PREFIX "/${CPACK_BUNDLE_NAME}.framework/Versions/${CPACK_PACKAGE_VERSION}/${CPACK_PACKAGE_NAME}/") +# set (CPACK_BUNDLE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5BLOSC.icns") +# set (CPACK_BUNDLE_PLIST "${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist") + set (CPACK_APPLE_GUI_INFO_STRING "${PLUGIN_PACKAGE_NAME} Plugin Library") + set (CPACK_APPLE_GUI_COPYRIGHT "Copyright © ???. All rights reserved.") + set (CPACK_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") + set (CPACK_APPLE_GUI_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + set (CPACK_APPLE_GUI_VERSION_STRING "${CPACK_PACKAGE_VERSION_STRING}") + set (CPACK_APPLE_GUI_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") + #----------------------------------------------------------------------------- + # Configure the Info.plist file for the install bundle + #----------------------------------------------------------------------------- +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CPack.Info.plist.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist @ONLY +# ) +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/PkgInfo.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo @ONLY +# ) +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/version.plist.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist @ONLY +# ) +# install ( +# FILES ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist +# DESTINATION .. +# ) + endif () + else () + list (APPEND CPACK_GENERATOR "STGZ") + set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") + set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) + + set (CPACK_DEBIAN_PACKAGE_SECTION "Libraries") + set (CPACK_DEBIAN_PACKAGE_MAINTAINER "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + +# list (APPEND CPACK_GENERATOR "RPM") + set (CPACK_RPM_PACKAGE_RELEASE "1") + set (CPACK_RPM_COMPONENT_INSTALL ON) + set (CPACK_RPM_PACKAGE_RELOCATABLE ON) endif () - else () - list (APPEND CPACK_GENERATOR "STGZ") - set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") - set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) - set (CPACK_DEBIAN_PACKAGE_SECTION "Libraries") - set (CPACK_DEBIAN_PACKAGE_MAINTAINER "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};ALL;/") + else () + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};libraries;/") + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};headers;/") + endif () -# list (APPEND CPACK_GENERATOR "RPM") - set (CPACK_RPM_PACKAGE_RELEASE "1") - set (CPACK_RPM_COMPONENT_INSTALL ON) - set (CPACK_RPM_PACKAGE_RELOCATABLE ON) + set (CPACK_ALL_INSTALL_TYPES Full User) + set (CPACK_INSTALL_TYPE_FULL_DISPLAY_NAME "Everything") endif () if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};ALL;/") - else () - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};libraries;/") - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};headers;/") + include (CPack) + + cpack_add_component_group(Runtime) + + cpack_add_component (libraries + DISPLAY_NAME "${PLUGIN_NAME} Libraries" + GROUP Runtime + ) + cpack_add_component_group(hdfdocuments + DISPLAY_NAME "${PLUGIN_NAME} Documents" + GROUP Documents + INSTALL_TYPES Full User + ) endif () - - set (CPACK_ALL_INSTALL_TYPES Full User) - set (CPACK_INSTALL_TYPE_FULL_DISPLAY_NAME "Everything") - - endif () - - if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) - include (CPack) - - cpack_add_component_group(Runtime) - - cpack_add_component (libraries - DISPLAY_NAME "${PLUGIN_NAME} Libraries" - GROUP Runtime - ) - cpack_add_component_group(hdfdocuments - DISPLAY_NAME "${PLUGIN_NAME} Documents" - GROUP Documents - INSTALL_TYPES Full User - ) endif () endmacro () diff --git a/BLOSC/config/cmake/grepTest.cmake b/BLOSC/config/cmake/grepTest.cmake index 26e295c2..caa818b5 100644 --- a/BLOSC/config/cmake/grepTest.cmake +++ b/BLOSC/config/cmake/grepTest.cmake @@ -65,5 +65,5 @@ if (TEST_EXPECT) endif () # everything went fine... -message ("Passed: The output of ${TEST_PROGRAM} matched") +message (STATUS "Passed: The output of ${TEST_PROGRAM} matched") diff --git a/BLOSC/config/toolchain/aarch64.cmake b/BLOSC/config/toolchain/aarch64.cmake index aa84a742..69968336 100644 --- a/BLOSC/config/toolchain/aarch64.cmake +++ b/BLOSC/config/toolchain/aarch64.cmake @@ -2,7 +2,7 @@ set(TOOLCHAIN_PREFIX aarch64-linux-gnu) set(ANDROID_NDK /opt/android-ndk-linux) set (CMAKE_SYSTEM_NAME Android) set (CMAKE_ANDROID_ARCH_ABI x86_64) -#set (CMAKE_ANDROID_STANDALONE_TOOLCHAIN ${ANDROID_NDK}/build/cmake/andriod.toolchain.cmake) +#set (CMAKE_ANDROID_STANDALONE_TOOLCHAIN ${ANDROID_NDK}/build/cmake/android.toolchain.cmake) set (CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc) set (CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++) #set (CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres) @@ -11,6 +11,7 @@ set (CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX}) set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set (CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) set (CMAKE_CROSSCOMPILING_EMULATOR qemu-aarch64) include_directories(/usr/${TOOLCHAIN_PREFIX}/include) diff --git a/BLOSC/config/toolchain/intel.cmake b/BLOSC/config/toolchain/intel.cmake new file mode 100644 index 00000000..f8f60b28 --- /dev/null +++ b/BLOSC/config/toolchain/intel.cmake @@ -0,0 +1,11 @@ +# Uncomment the following to use cross-compiling +#set(CMAKE_SYSTEM_NAME Linux) + +set(CMAKE_COMPILER_VENDOR "intel") + +set(CMAKE_C_COMPILER icx) +set(CMAKE_CXX_COMPILER icpx) +set(CMAKE_Fortran_COMPILER ifx) + +# the following is used if cross-compiling +set(CMAKE_CROSSCOMPILING_EMULATOR "") diff --git a/BSHUF/CMakeLists.txt b/BSHUF/CMakeLists.txt index fa72ebac..42de9eb1 100644 --- a/BSHUF/CMakeLists.txt +++ b/BSHUF/CMakeLists.txt @@ -60,7 +60,7 @@ set (H5BSHUF_PACKAGE_URL "http://www.hdfgroup.org") set (H5BSHUF_PACKAGE_BUGREPORT "help@hdfgroup.org") set (H5BSHUF_PACKAGE_SOVERSION "${H5BSHUF_SOVERS_MAJOR}.${H5BSHUF_SOVERS_RELEASE}.${H5BSHUF_SOVERS_MINOR}") set (H5BSHUF_PACKAGE_SOVERSION_MAJOR "${H5BSHUF_SOVERS_MAJOR}") -message("Configuring for bshuf HDF5 Plugin version: " ${H5BSHUF_PACKAGE_STRING}) +message(STATUS "Configuring for bshuf HDF5 Plugin version: " ${H5BSHUF_PACKAGE_STRING}) #----------------------------------------------------------------------------- # Include some macros for reusable code @@ -177,7 +177,7 @@ if (NOT BUILD_BSHUF_LIBRARY_SOURCE) set (BSHUF_INCLUDE_DIRS ${BSHUF_INCLUDE_DIRS} ${BSHUF_INCLUDE_DIR}) else () if (H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") - EXTERNAL_BSHUF_LIBRARY (${H5PL_ALLOW_EXTERNAL_SUPPORT} STATIC) + EXTERNAL_BSHUF_LIBRARY (${H5PL_ALLOW_EXTERNAL_SUPPORT}) set (H5_HAVE_BSHUF_H 1) set (H5_HAVE_BSHUF 1) message (STATUS "Filter BSHUF is built") @@ -213,15 +213,6 @@ endif () add_subdirectory (src) -if (H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") - if (BSHUF_FOUND AND BSHUF_USE_EXTERNAL) - add_dependencies (${H5BSHUF_LIB_TARGET} BSHUF) - endif () - if (LZ4_FOUND AND LZ4_USE_EXTERNAL) - add_dependencies (${H5BSHUF_LIB_TARGET} LZ4) - endif () -endif () - option (BUILD_EXAMPLES "Build h5bshuf Examples" OFF) if (BUILD_EXAMPLES) add_subdirectory (example) diff --git a/BSHUF/config/cmake/H5BSHUFMacros.cmake b/BSHUF/config/cmake/H5BSHUFMacros.cmake index 45b72334..2771bb00 100644 --- a/BSHUF/config/cmake/H5BSHUFMacros.cmake +++ b/BSHUF/config/cmake/H5BSHUFMacros.cmake @@ -9,66 +9,47 @@ # If you do not have access to either file, you may request a copy from # help@hdfgroup.org. # + +include (FetchContent) #------------------------------------------------------------------------------- -macro (EXTERNAL_BSHUF_LIBRARY compress_type libtype) - if (${libtype} MATCHES "SHARED") - set (BUILD_EXT_SHARED_LIBS "ON") - else () - set (BUILD_EXT_SHARED_LIBS "OFF") - endif () +macro (EXTERNAL_BSHUF_LIBRARY compress_type) if (${compress_type} MATCHES "GIT") - EXTERNALPROJECT_ADD (BSHUF + FetchContent_Declare (BSHUF GIT_REPOSITORY ${BSHUF_URL} GIT_TAG ${BSHUF_BRANCH} - INSTALL_COMMAND "" - CMAKE_ARGS - -DBUILD_SHARED_LIBS:BOOL=${BUILD_EXT_SHARED_LIBS} - -DBSHUF_PACKAGE_EXT:STRING=${BSHUF_PACKAGE_EXT} - -DBSHUF_EXTERNALLY_CONFIGURED:BOOL=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} - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DH5PL_USE_GNU_DIRS:STRING=${H5PL_USE_GNU_DIRS} - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} ) elseif (${compress_type} MATCHES "TGZ") - EXTERNALPROJECT_ADD (BSHUF + FetchContent_Declare (BSHUF URL ${BSHUF_URL} - URL_MD5 "" - INSTALL_COMMAND "" - CMAKE_ARGS - -DBUILD_SHARED_LIBS:BOOL=${BUILD_EXT_SHARED_LIBS} - -DBSHUF_PACKAGE_EXT:STRING=${BSHUF_PACKAGE_EXT} - -DBSHUF_EXTERNALLY_CONFIGURED:BOOL=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} - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DH5PL_USE_GNU_DIRS:STRING=${H5PL_USE_GNU_DIRS} - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} + URL_HASH "" ) endif () - externalproject_get_property (BSHUF BINARY_DIR SOURCE_DIR) + FetchContent_GetProperties(BSHUF) + if(NOT bshuf_POPULATED) + FetchContent_Populate(BSHUF) + + # Store the old value of the 'BUILD_SHARED_LIBS' + set (BUILD_SHARED_LIBS_OLD ${BUILD_SHARED_LIBS}) + # Make subproject to use 'BUILD_SHARED_LIBS=OFF' setting. + set (BUILD_SHARED_LIBS OFF CACHE INTERNAL "Build SHARED libraries") + # Store the old value of the 'BUILD_TESTING' + set (BUILD_TESTING_OLD ${BUILD_TESTING}) + # Make subproject to use 'BUILD_TESTING=OFF' setting. + set (BUILD_TESTING OFF CACHE INTERNAL "Build Unit Testing") - # Create imported target BSHUF - add_library (bshuf ${libtype} IMPORTED) - HDF_IMPORT_SET_LIB_OPTIONS (bshuf "bshuf" ${libtype} "") - add_dependencies (bshuf BSHUF) + add_subdirectory(${bshuf_SOURCE_DIR} ${bshuf_BINARY_DIR}) + + # Restore the old value of the parameter + set (BUILD_TESTING ${BUILD_TESTING_OLD} CACHE BOOL "Build Unit Testing" FORCE) + # Restore the old value of the parameter + set (BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_OLD} CACHE BOOL "Type of libraries to build" FORCE) + endif() # include (${BINARY_DIR}/BSHUF-targets.cmake) set (BSHUF_LIBRARY "bshuf") - set (BSHUF_INCLUDE_DIR_GEN "${BINARY_DIR}") - set (BSHUF_INCLUDE_DIR "${SOURCE_DIR}") + set (BSHUF_INCLUDE_DIR_GEN "${bshuf_BINARY_DIR}") + set (BSHUF_INCLUDE_DIR "${bshuf_SOURCE_DIR}") set (BSHUF_FOUND 1) set (BSHUF_LIBRARIES ${BSHUF_LIBRARY}) set (BSHUF_INCLUDE_DIRS ${BSHUF_INCLUDE_DIR_GEN} ${BSHUF_INCLUDE_DIR}) @@ -87,67 +68,30 @@ macro (PACKAGE_BSHUF_LIBRARY compress_type) endmacro () #------------------------------------------------------------------------------- -macro (EXTERNAL_LZ4_LIBRARY compress_type libtype) - if (${libtype} MATCHES "SHARED") - set (BUILD_EXT_SHARED_LIBS "ON") - else () - set (BUILD_EXT_SHARED_LIBS "OFF") - endif () +macro (EXTERNAL_LZ4_LIBRARY compress_type) if (${compress_type} MATCHES "GIT") - EXTERNALPROJECT_ADD (LZ4 + FetchContent_Declare (LZ4 GIT_REPOSITORY ${LZ4_URL} GIT_TAG ${LZ4_BRANCH} - INSTALL_COMMAND "" - CMAKE_ARGS - -DBUILD_SHARED_LIBS:BOOL=${BUILD_EXT_SHARED_LIBS} - -DLZ4_PACKAGE_EXT:STRING=${LZ4_PACKAGE_EXT} - -DLZ4_EXTERNALLY_CONFIGURED:BOOL=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} - -DCMAKE_ANSI_CFLAGS:STRING=${CMAKE_ANSI_CFLAGS} - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DH5PL_USE_GNU_DIRS:STRING=${H5PL_USE_GNU_DIRS} - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} ) elseif (${compress_type} MATCHES "TGZ") - EXTERNALPROJECT_ADD (LZ4 + FetchContent_Declare (LZ4 URL ${LZ4_URL} - URL_MD5 "" - INSTALL_COMMAND "" - CMAKE_ARGS - -DBUILD_SHARED_LIBS:BOOL=${BUILD_EXT_SHARED_LIBS} - -DLZ4_PACKAGE_EXT:STRING=${LZ4_PACKAGE_EXT} - -DLZ4_EXTERNALLY_CONFIGURED:BOOL=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} - -DCMAKE_ANSI_CFLAGS:STRING=${CMAKE_ANSI_CFLAGS} - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DH5PL_USE_GNU_DIRS:STRING=${H5PL_USE_GNU_DIRS} - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} + URL_HASH "" ) endif () - externalproject_get_property (LZ4 BINARY_DIR SOURCE_DIR) + FetchContent_GetProperties(LZ4) + if(NOT lz4_POPULATED) + FetchContent_Populate(LZ4) - # Create imported target LZ4 - add_library (lz4 ${libtype} IMPORTED) - HDF_IMPORT_SET_LIB_OPTIONS (lz4 "lz4" ${libtype} "") - add_dependencies (lz4 LZ4) + add_subdirectory(${lz4_SOURCE_DIR} ${lz4_BINARY_DIR}) + endif() # include (${BINARY_DIR}/LZ4-targets.cmake) set (LZ4_LIBRARY "lz4") - set (LZ4_INCLUDE_DIR_GEN "${BINARY_DIR}") - set (LZ4_INCLUDE_DIR "${SOURCE_DIR}/LZ4") + set (LZ4_INCLUDE_DIR_GEN "${lz4_BINARY_DIR}") + set (LZ4_INCLUDE_DIR "${lz4_SOURCE_DIR}/LZ4") set (LZ4_FOUND 1) set (LZ4_LIBRARIES ${LZ4_LIBRARY}) set (LZ4_INCLUDE_DIRS ${LZ4_INCLUDE_DIR_GEN} ${LZ4_INCLUDE_DIR}) diff --git a/BSHUF/config/cmake/HDFMacros.cmake b/BSHUF/config/cmake/HDFMacros.cmake index 5e63ec23..0cf9f192 100644 --- a/BSHUF/config/cmake/HDFMacros.cmake +++ b/BSHUF/config/cmake/HDFMacros.cmake @@ -490,6 +490,8 @@ macro (HDF_DIR_PATHS package_prefix) set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) endif () endif () + + include (FetchContent) endmacro () macro (ADD_H5_FLAGS h5_flag_var infile) diff --git a/BSHUF/config/cmake/HDFPluginMacros.cmake b/BSHUF/config/cmake/HDFPluginMacros.cmake index 927d4ab7..192de90f 100644 --- a/BSHUF/config/cmake/HDFPluginMacros.cmake +++ b/BSHUF/config/cmake/HDFPluginMacros.cmake @@ -67,7 +67,7 @@ macro (BASIC_SETTINGS varname) if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR) set (${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR ${CMAKE_INSTALL_DOCDIR}) endif () - message(STATUS "GNU: ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR}") + message(STATUS "GNU: ${${PLUGIN_PACKAGE_NAME}_INSTALL_LIB_DIR}") endif () if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_BIN_DIR) @@ -100,7 +100,7 @@ macro (BASIC_SETTINGS varname) if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR) set (${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR}) endif () - message(STATUS "Final: ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR}") + message(STATUS "Final: ${${PLUGIN_PACKAGE_NAME}_INSTALL_LIB_DIR}") #----------------------------------------------------------------------------- # Setup output Directories @@ -115,6 +115,15 @@ macro (BASIC_SETTINGS varname) set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all static libraries." ) + get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) + if(_isMultiConfig) + set (CMAKE_TEST_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}) + set (CMAKE_PDB_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all pdb files." + ) + else () + set (CMAKE_TEST_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) + endif () else () # if we are externally configured, but the project uses old cmake scripts # this may not be set @@ -304,7 +313,7 @@ macro (HDF5_SUPPORT link_hdf) set (H5PL_HDF5_HAVE_H5PUBCONF_H 1) set (H5PL_HDF5_HAVE_HDF5 1) set (H5PL_HDF5_HEADER "h5pubconf.h") - message (STATUS "HDF5 found: INC=${HDF5_INCLUDE_DIRS} TOOLS=${HDF5_TOOLS_DIR}") + message (STATUS "HDF5-${HDF5_VERSION_STRING} found: INC=${HDF5_INCLUDE_DIRS} TOOLS=${HDF5_TOOLS_DIR}") else () message (FATAL_ERROR " HDF5 is Required for plugin library") endif () @@ -330,227 +339,224 @@ macro (INSTALL_SUPPORT varname) string(TOUPPER ${varname} PLUGIN_PACKAGE_NAME) string(TOLOWER ${varname} PLUGIN_NAME) - #----------------------------------------------------------------------------- - # Set variables needed for installation - #----------------------------------------------------------------------------- - set (${PLUGIN_PACKAGE_NAME}_VERSION_STRING ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}) - set (${PLUGIN_PACKAGE_NAME}_VERSION_MAJOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}) - set (${PLUGIN_PACKAGE_NAME}_VERSION_MINOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}) - - #----------------------------------------------------------------------------- - # Configure the H5PL_Examples.cmake file and the examples - #----------------------------------------------------------------------------- - configure_file ( - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5PL_Examples.cmake.in - ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake @ONLY - ) - install ( - FILES - ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CTestScript.cmake - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/HDFoptions.cmake + if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) + #----------------------------------------------------------------------------- + # Set variables needed for installation + #----------------------------------------------------------------------------- + set (${PLUGIN_PACKAGE_NAME}_VERSION_STRING ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}) + set (${PLUGIN_PACKAGE_NAME}_VERSION_MAJOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}) + set (${PLUGIN_PACKAGE_NAME}_VERSION_MINOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}) + + #----------------------------------------------------------------------------- + # Configure the H5PL_Examples.cmake file and the examples + #----------------------------------------------------------------------------- + if (${PLUGIN_PACKAGE_NAME}_BUILD_TESTING) + configure_file ( + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5PL_Examples.cmake.in + ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake @ONLY + ) + install ( + FILES + ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CTestScript.cmake + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/HDFoptions.cmake DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} - COMPONENT hdfdocuments - ) - execute_process( - COMMAND ${CMAKE_COMMAND} -E copy_directory ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/binex ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples - ) - install ( - DIRECTORY ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples - DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} - USE_SOURCE_PERMISSIONS - COMPONENT hdfdocuments - ) + COMPONENT hdfdocuments + ) + execute_process( + COMMAND ${CMAKE_COMMAND} -E copy_directory ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/binex ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples + ) + install ( + DIRECTORY ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples + DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} + USE_SOURCE_PERMISSIONS + COMPONENT hdfdocuments + ) + endif () - #----------------------------------------------------------------------------- - # Configure the README.txt file for the binary package - #----------------------------------------------------------------------------- - PLUGIN_README_PROPERTIES (${PLUGIN_PACKAGE_NAME}) + #----------------------------------------------------------------------------- + # Configure the README.txt file for the binary package + #----------------------------------------------------------------------------- + PLUGIN_README_PROPERTIES (${PLUGIN_PACKAGE_NAME}) - #----------------------------------------------------------------------------- - # Check for Installation Utilities - #----------------------------------------------------------------------------- - if (WIN32) - set (PF_ENV_EXT "(x86)") - find_program (NSIS_EXECUTABLE NSIS.exe PATHS "$ENV{ProgramFiles}\\NSIS" "$ENV{ProgramFiles${PF_ENV_EXT}}\\NSIS") - if(NOT CPACK_WIX_ROOT) - file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT) - endif() - find_program (WIX_EXECUTABLE candle PATHS "${CPACK_WIX_ROOT}/bin") - endif () - - #----------------------------------------------------------------------------- - # Set the cpack variables - #----------------------------------------------------------------------------- - if (NOT ${PLUGIN_PACKAGE_NAME}_EXTERNALLY_CONFIGURED) - set (CPACK_PACKAGE_VENDOR "HDF_Group") - set (CPACK_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}") - if (CDASH_LOCAL) - set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}") - else () - set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_STRING}") + #----------------------------------------------------------------------------- + # Configure the COPYING.txt file for the windows binary package + #----------------------------------------------------------------------------- + if (WIN32) + configure_file (${CMAKE_SOURCE_DIR}/COPYING ${CMAKE_BINARY_DIR}/COPYING.txt @ONLY) endif () - set (CPACK_PACKAGE_VERSION_MAJOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}") - set (CPACK_PACKAGE_VERSION_MINOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}") - set (CPACK_PACKAGE_VERSION_PATCH "") - #set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") - set (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - set (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - set (CPACK_PACKAGE_RELOCATABLE TRUE) - set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PLUGIN_NAME} Installation") - set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSION}") - - set (CPACK_GENERATOR "TGZ") + + #----------------------------------------------------------------------------- + # Add Document File(s) to CMake Install + #----------------------------------------------------------------------------- + install ( + FILES + ${${PLUGIN_PACKAGE_NAME}_SOURCE_DIR}/docs/PluginLibraries.txt + DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR} + COMPONENT hdfdocuments + ) + + #----------------------------------------------------------------------------- + # Check for Installation Utilities + #----------------------------------------------------------------------------- if (WIN32) - set (CPACK_GENERATOR "ZIP") + set (PF_ENV_EXT "(x86)") + find_program (NSIS_EXECUTABLE NSIS.exe PATHS "$ENV{ProgramFiles}\\NSIS" "$ENV{ProgramFiles${PF_ENV_EXT}}\\NSIS") + if(NOT CPACK_WIX_ROOT) + file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT) + endif() + find_program (WIX_EXECUTABLE candle PATHS "${CPACK_WIX_ROOT}/bin") + endif () - if (NSIS_EXECUTABLE) - list (APPEND CPACK_GENERATOR "NSIS") - endif () - # Installers for 32- vs. 64-bit CMake: - # - Root install directory (displayed to end user at installer-run time) - # - "NSIS package/display name" (text used in the installer GUI) - # - Registry key used to store info about the installation - set (CPACK_NSIS_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - if (CMAKE_CL_64) - set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") - set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION} (Win64)") + if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + if (CMAKE_HOST_UNIX) + set (CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/HDF_Group/${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}/${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}" + CACHE PATH "Install path prefix, prepended onto install directories." FORCE + ) else () - set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") - set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + GetDefaultWindowsPrefixBase(CMAKE_GENERIC_PROGRAM_FILES) + set (CMAKE_INSTALL_PREFIX + "${CMAKE_GENERIC_PROGRAM_FILES}/HDF_Group/${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}/${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}" + CACHE PATH "Install path prefix, prepended onto install directories." FORCE + ) + set (CMAKE_GENERIC_PROGRAM_FILES) endif () - # set the install/unistall icon used for the installer itself - # There is a bug in NSI that does not handle full unix paths properly. - #set (CPACK_NSIS_MUI_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") - #set (CPACK_NSIS_MUI_UNIICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") - # set the package header icon for MUI - #set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.bmp") - set (CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}, is a dynamic filter for HDF5") - #set (CPACK_PACKAGE_INSTALL_DIRECTORY "plugins") - set (CPACK_NSIS_CONTACT "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") - set (CPACK_NSIS_MODIFY_PATH ON) - - if (WIX_EXECUTABLE) - list (APPEND CPACK_GENERATOR "WIX") + endif () + + #----------------------------------------------------------------------------- + # Set the cpack variables + #----------------------------------------------------------------------------- + if (NOT ${PLUGIN_PACKAGE_NAME}_EXTERNALLY_CONFIGURED) + set (CPACK_PACKAGE_VENDOR "HDF_Group") + set (CPACK_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}") + if (CDASH_LOCAL) + set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}") + else () + set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_STRING}") endif () - #WiX variables - set (CPACK_WIX_UNINSTALL "1") -# .. variable:: CPACK_WIX_LICENSE_RTF -# RTF License File -# -# If CPACK_RESOURCE_FILE_LICENSE has an .rtf extension it is used as-is. -# -# If CPACK_RESOURCE_FILE_LICENSE has an .txt extension it is implicitly -# converted to RTF by the WiX Generator. -# The expected encoding of the .txt file is UTF-8. -# -# With CPACK_WIX_LICENSE_RTF you can override the license file used by the -# WiX Generator in case CPACK_RESOURCE_FILE_LICENSE is in an unsupported -# format or the .txt -> .rtf conversion does not work as expected. - set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") -# .. variable:: CPACK_WIX_PRODUCT_ICON -# The Icon shown next to the program name in Add/Remove programs. -# set (CPACK_WIX_PRODUCT_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") -# -# .. variable:: CPACK_WIX_UI_BANNER -# -# The bitmap will appear at the top of all installer pages other than the -# welcome and completion dialogs. -# -# If set, this image will replace the default banner image. -# -# This image must be 493 by 58 pixels. -# -# .. variable:: CPACK_WIX_UI_DIALOG -# -# Background bitmap used on the welcome and completion dialogs. -# -# If this variable is set, the installer will replace the default dialog -# image. -# -# This image must be 493 by 312 pixels. -# - elseif (APPLE) - list (APPEND CPACK_GENERATOR "STGZ") - list (APPEND CPACK_GENERATOR "DragNDrop") - set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) - set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") -# set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/h5bshuf.gif") - - option (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE "Package the ${PLUGIN_PACKAGE_NAME} Library in a Bundle" OFF) - if (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE) - list (APPEND CPACK_GENERATOR "Bundle") - set (CPACK_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - set (CPACK_BUNDLE_LOCATION "/") # make sure CMAKE_INSTALL_PREFIX ends in / - set (CMAKE_INSTALL_PREFIX "/${CPACK_BUNDLE_NAME}.framework/Versions/${CPACK_PACKAGE_VERSION}/${CPACK_PACKAGE_NAME}/") -# set (CPACK_BUNDLE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5BSHUF.icns") -# set (CPACK_BUNDLE_PLIST "${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist") - set (CPACK_APPLE_GUI_INFO_STRING "${PLUGIN_PACKAGE_NAME} Plugin Library") - set (CPACK_APPLE_GUI_COPYRIGHT "Copyright © ???. All rights reserved.") - set (CPACK_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") - set (CPACK_APPLE_GUI_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - set (CPACK_APPLE_GUI_VERSION_STRING "${CPACK_PACKAGE_VERSION_STRING}") - set (CPACK_APPLE_GUI_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") - #----------------------------------------------------------------------------- - # Configure the Info.plist file for the install bundle - #----------------------------------------------------------------------------- -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CPack.Info.plist.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist @ONLY -# ) -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/PkgInfo.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo @ONLY -# ) -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/version.plist.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist @ONLY -# ) -# install ( -# FILES ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist -# DESTINATION .. -# ) + set (CPACK_PACKAGE_VERSION_MAJOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}") + set (CPACK_PACKAGE_VERSION_MINOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}") + set (CPACK_PACKAGE_VERSION_PATCH "") + #set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") + set (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + set (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + set (CPACK_PACKAGE_RELOCATABLE TRUE) + set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PLUGIN_NAME} Installation") + set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSION}") + + set (CPACK_GENERATOR "TGZ") + if (WIN32) + set (CPACK_GENERATOR "ZIP") + + if (NSIS_EXECUTABLE) + list (APPEND CPACK_GENERATOR "NSIS") + endif () + set (CPACK_NSIS_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + if (CMAKE_CL_64) + set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") + set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION} (Win64)") + else () + set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") + set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + endif () + # set the install/unistall icon used for the installer itself + # There is a bug in NSI that does not handle full unix paths properly. + #set (CPACK_NSIS_MUI_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") + #set (CPACK_NSIS_MUI_UNIICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") + # set the package header icon for MUI + #set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.bmp") + set (CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}, is a dynamic filter for HDF5") + #set (CPACK_PACKAGE_INSTALL_DIRECTORY "plugins") + set (CPACK_NSIS_CONTACT "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + set (CPACK_NSIS_MODIFY_PATH ON) + + if (WIX_EXECUTABLE) + list (APPEND CPACK_GENERATOR "WIX") + endif () + # WiX variables + set (CPACK_WIX_UNINSTALL "1") + set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + elseif (APPLE) + list (APPEND CPACK_GENERATOR "STGZ") + list (APPEND CPACK_GENERATOR "DragNDrop") + set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) + set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") +# set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/h5bshuf.gif") + + option (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE "Package the ${PLUGIN_PACKAGE_NAME} Library in a Bundle" OFF) + if (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE) + list (APPEND CPACK_GENERATOR "Bundle") + set (CPACK_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + set (CPACK_BUNDLE_LOCATION "/") # make sure CMAKE_INSTALL_PREFIX ends in / + set (CMAKE_INSTALL_PREFIX "/${CPACK_BUNDLE_NAME}.framework/Versions/${CPACK_PACKAGE_VERSION}/${CPACK_PACKAGE_NAME}/") +# set (CPACK_BUNDLE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5BSHUF.icns") +# set (CPACK_BUNDLE_PLIST "${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist") + set (CPACK_APPLE_GUI_INFO_STRING "${PLUGIN_PACKAGE_NAME} Plugin Library") + set (CPACK_APPLE_GUI_COPYRIGHT "Copyright © ???. All rights reserved.") + set (CPACK_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") + set (CPACK_APPLE_GUI_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + set (CPACK_APPLE_GUI_VERSION_STRING "${CPACK_PACKAGE_VERSION_STRING}") + set (CPACK_APPLE_GUI_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") + #----------------------------------------------------------------------------- + # Configure the Info.plist file for the install bundle + #----------------------------------------------------------------------------- +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CPack.Info.plist.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist @ONLY +# ) +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/PkgInfo.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo @ONLY +# ) +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/version.plist.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist @ONLY +# ) +# install ( +# FILES ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist +# DESTINATION .. +# ) + endif () + else () + list (APPEND CPACK_GENERATOR "STGZ") + set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") + set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) + + set (CPACK_DEBIAN_PACKAGE_SECTION "Libraries") + set (CPACK_DEBIAN_PACKAGE_MAINTAINER "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + +# list (APPEND CPACK_GENERATOR "RPM") + set (CPACK_RPM_PACKAGE_RELEASE "1") + set (CPACK_RPM_COMPONENT_INSTALL ON) + set (CPACK_RPM_PACKAGE_RELOCATABLE ON) endif () - else () - list (APPEND CPACK_GENERATOR "STGZ") - set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") - set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) - set (CPACK_DEBIAN_PACKAGE_SECTION "Libraries") - set (CPACK_DEBIAN_PACKAGE_MAINTAINER "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};ALL;/") + else () + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};libraries;/") + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};headers;/") + endif () -# list (APPEND CPACK_GENERATOR "RPM") - set (CPACK_RPM_PACKAGE_RELEASE "1") - set (CPACK_RPM_COMPONENT_INSTALL ON) - set (CPACK_RPM_PACKAGE_RELOCATABLE ON) + set (CPACK_ALL_INSTALL_TYPES Full User) + set (CPACK_INSTALL_TYPE_FULL_DISPLAY_NAME "Everything") endif () if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};ALL;/") - else () - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};libraries;/") - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};headers;/") + include (CPack) + + cpack_add_component_group(Runtime) + + cpack_add_component (libraries + DISPLAY_NAME "${PLUGIN_NAME} Libraries" + GROUP Runtime + ) + cpack_add_component_group(hdfdocuments + DISPLAY_NAME "${PLUGIN_NAME} Documents" + GROUP Documents + INSTALL_TYPES Full User + ) endif () - - set (CPACK_ALL_INSTALL_TYPES Full User) - set (CPACK_INSTALL_TYPE_FULL_DISPLAY_NAME "Everything") - - endif () - - if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) - include (CPack) - - cpack_add_component_group(Runtime) - - cpack_add_component (libraries - DISPLAY_NAME "${PLUGIN_NAME} Libraries" - GROUP Runtime - ) - cpack_add_component_group(hdfdocuments - DISPLAY_NAME "${PLUGIN_NAME} Documents" - GROUP Documents - INSTALL_TYPES Full User - ) endif () endmacro () diff --git a/BSHUF/config/cmake/grepTest.cmake b/BSHUF/config/cmake/grepTest.cmake index 26e295c2..caa818b5 100755 --- a/BSHUF/config/cmake/grepTest.cmake +++ b/BSHUF/config/cmake/grepTest.cmake @@ -65,5 +65,5 @@ if (TEST_EXPECT) endif () # everything went fine... -message ("Passed: The output of ${TEST_PROGRAM} matched") +message (STATUS "Passed: The output of ${TEST_PROGRAM} matched") diff --git a/BSHUF/config/toolchain/aarch64.cmake b/BSHUF/config/toolchain/aarch64.cmake index aa84a742..69968336 100644 --- a/BSHUF/config/toolchain/aarch64.cmake +++ b/BSHUF/config/toolchain/aarch64.cmake @@ -2,7 +2,7 @@ set(TOOLCHAIN_PREFIX aarch64-linux-gnu) set(ANDROID_NDK /opt/android-ndk-linux) set (CMAKE_SYSTEM_NAME Android) set (CMAKE_ANDROID_ARCH_ABI x86_64) -#set (CMAKE_ANDROID_STANDALONE_TOOLCHAIN ${ANDROID_NDK}/build/cmake/andriod.toolchain.cmake) +#set (CMAKE_ANDROID_STANDALONE_TOOLCHAIN ${ANDROID_NDK}/build/cmake/android.toolchain.cmake) set (CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc) set (CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++) #set (CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres) @@ -11,6 +11,7 @@ set (CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX}) set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set (CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) set (CMAKE_CROSSCOMPILING_EMULATOR qemu-aarch64) include_directories(/usr/${TOOLCHAIN_PREFIX}/include) diff --git a/BSHUF/config/toolchain/intel.cmake b/BSHUF/config/toolchain/intel.cmake new file mode 100644 index 00000000..f8f60b28 --- /dev/null +++ b/BSHUF/config/toolchain/intel.cmake @@ -0,0 +1,11 @@ +# Uncomment the following to use cross-compiling +#set(CMAKE_SYSTEM_NAME Linux) + +set(CMAKE_COMPILER_VENDOR "intel") + +set(CMAKE_C_COMPILER icx) +set(CMAKE_CXX_COMPILER icpx) +set(CMAKE_Fortran_COMPILER ifx) + +# the following is used if cross-compiling +set(CMAKE_CROSSCOMPILING_EMULATOR "") diff --git a/BZIP2/CMakeLists.txt b/BZIP2/CMakeLists.txt index 2cd9d5e3..432c81d6 100644 --- a/BZIP2/CMakeLists.txt +++ b/BZIP2/CMakeLists.txt @@ -60,7 +60,7 @@ set (H5BZ2_PACKAGE_URL "http://www.hdfgroup.org") set (H5BZ2_PACKAGE_BUGREPORT "help@hdfgroup.org") set (H5BZ2_PACKAGE_SOVERSION "${H5BZ2_SOVERS_MAJOR}.${H5BZ2_SOVERS_RELEASE}.${H5BZ2_SOVERS_MINOR}") set (H5BZ2_PACKAGE_SOVERSION_MAJOR "${H5BZ2_SOVERS_MAJOR}") -message("Configuring for bz2 HDF5 Plugin version: " ${H5BZ2_PACKAGE_STRING}) +message(STATUS "Configuring for bz2 HDF5 Plugin version: " ${H5BZ2_PACKAGE_STRING}) #----------------------------------------------------------------------------- # Include some macros for reusable code @@ -119,7 +119,7 @@ if (BZ2_FOUND) set (BZ2_INCLUDE_DIRS ${BZ2_INCLUDE_DIR}) else () if (H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") - EXTERNAL_BZ2_LIBRARY (${H5PL_ALLOW_EXTERNAL_SUPPORT} STATIC) + EXTERNAL_BZ2_LIBRARY (${H5PL_ALLOW_EXTERNAL_SUPPORT}) set (H5BZ2_HAVE_BZLIB_H 1) set (H5BZ2_HAVE_BZ2 1) message (STATUS "Filter BZ2 is built") @@ -145,12 +145,6 @@ endif () add_subdirectory (src) -if (H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") - if (BZ2_FOUND AND BZ2_USE_EXTERNAL) - add_dependencies (${H5BZ2_LIB_TARGET} BZ2) - endif () -endif () - option (BUILD_EXAMPLES "Build h5bz2 Examples" OFF) if (BUILD_EXAMPLES) add_subdirectory (example) diff --git a/BZIP2/config/cmake/H5BZ2Macros.cmake b/BZIP2/config/cmake/H5BZ2Macros.cmake index 9498cbc1..06007ad6 100644 --- a/BZIP2/config/cmake/H5BZ2Macros.cmake +++ b/BZIP2/config/cmake/H5BZ2Macros.cmake @@ -9,79 +9,48 @@ # If you do not have access to either file, you may request a copy from # help@hdfgroup.org. # + +include (FetchContent) #------------------------------------------------------------------------------- -macro (EXTERNAL_BZ2_LIBRARY compress_type libtype) - if (${libtype} MATCHES "SHARED") - set (BUILD_EXT_SHARED_LIBS "ON") - else () - set (BUILD_EXT_SHARED_LIBS "OFF") - endif () +macro (EXTERNAL_BZ2_LIBRARY compress_type) if (${compress_type} MATCHES "GIT") - EXTERNALPROJECT_ADD (BZ2 + FetchContent_Declare (BZ2 GIT_REPOSITORY ${BZ2_URL} GIT_TAG ${BZ2_BRANCH} - INSTALL_COMMAND "" - CMAKE_ARGS - -DBUILD_SHARED_LIBS:BOOL=${BUILD_EXT_SHARED_LIBS} - -DBZ2_PACKAGE_EXT:STRING=${BZ2_PACKAGE_EXT} - -DBZ2_EXTERNALLY_CONFIGURED:BOOL=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} - -DCMAKE_ANSI_CFLAGS:STRING=${CMAKE_ANSI_CFLAGS} - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} ) elseif (${compress_type} MATCHES "TGZ") - EXTERNALPROJECT_ADD (BZ2 + FetchContent_Declare (BZ2 URL ${BZ2_URL} - URL_MD5 "" - INSTALL_COMMAND "" - CMAKE_ARGS - -DBUILD_SHARED_LIBS:BOOL=${BUILD_EXT_SHARED_LIBS} - -DBZ2_PACKAGE_EXT:STRING=${BZ2_PACKAGE_EXT} - -DBZ2_EXTERNALLY_CONFIGURED:BOOL=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} - -DCMAKE_ANSI_CFLAGS:STRING=${CMAKE_ANSI_CFLAGS} - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} + URL_HASH "" ) endif () - externalproject_get_property (BZ2 BINARY_DIR SOURCE_DIR) + FetchContent_GetProperties(BZ2) + if(NOT bz2_POPULATED) + FetchContent_Populate(BZ2) + + # Store the old value of the 'BUILD_SHARED_LIBS' + set (BUILD_SHARED_LIBS_OLD ${BUILD_SHARED_LIBS}) + # Make subproject to use 'BUILD_SHARED_LIBS=OFF' setting. + set (BUILD_SHARED_LIBS OFF CACHE INTERNAL "Build SHARED libraries") + # Store the old value of the 'BUILD_TESTING' + set (BUILD_TESTING_OLD ${BUILD_TESTING}) + # Make subproject to use 'BUILD_TESTING=OFF' setting. + set (BUILD_TESTING OFF CACHE INTERNAL "Build Unit Testing") - # Create imported target BZ2 - add_library (bz2 ${libtype} IMPORTED) - HDF_IMPORT_SET_LIB_OPTIONS (bz2 "bz2" ${libtype} "") - add_dependencies (bz2 BZ2) + add_subdirectory(${bz2_SOURCE_DIR} ${bz2_BINARY_DIR}) + + # Restore the old value of the parameter + set (BUILD_TESTING ${BUILD_TESTING_OLD} CACHE BOOL "Build Unit Testing" FORCE) + # Restore the old value of the parameter + set (BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_OLD} CACHE BOOL "Type of libraries to build" FORCE) + endif () # include (${BINARY_DIR}/BZ2-targets.cmake) - set (BZ2_LIBRARY "bz2") + set (BZ2_LIBRARY "bz2-static") - set (BZ2_INCLUDE_DIR_GEN "${BINARY_DIR}") - set (BZ2_INCLUDE_DIR "${SOURCE_DIR}/src") + set (BZ2_INCLUDE_DIR_GEN "${bz2_BINARY_DIR}") + set (BZ2_INCLUDE_DIR "${bz2_SOURCE_DIR}/src") set (BZ2_FOUND 1) set (BZ2_LIBRARIES ${BZ2_LIBRARY}) set (BZ2_INCLUDE_DIRS ${BZ2_INCLUDE_DIR_GEN} ${BZ2_INCLUDE_DIR}) endmacro () - -#------------------------------------------------------------------------------- -macro (PACKAGE_BZ2_LIBRARY compress_type) - add_custom_target (BZ2-GenHeader-Copy ALL - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${BZ2_INCLUDE_DIR}/bzlib.h ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ - COMMENT "Copying ${BZ2_INCLUDE_DIR}/bzlib.h to ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/" - ) - set (EXTERNAL_HEADER_LIST ${EXTERNAL_HEADER_LIST} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/bzlib.h) - if (${compress_type} MATCHES "GIT" OR ${compress_type} MATCHES "TGZ") - add_dependencies (BZ2-GenHeader-Copy bz2) - endif () -endmacro () diff --git a/BZIP2/config/cmake/HDFMacros.cmake b/BZIP2/config/cmake/HDFMacros.cmake index 5e63ec23..0cf9f192 100644 --- a/BZIP2/config/cmake/HDFMacros.cmake +++ b/BZIP2/config/cmake/HDFMacros.cmake @@ -490,6 +490,8 @@ macro (HDF_DIR_PATHS package_prefix) set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) endif () endif () + + include (FetchContent) endmacro () macro (ADD_H5_FLAGS h5_flag_var infile) diff --git a/BZIP2/config/cmake/HDFPluginMacros.cmake b/BZIP2/config/cmake/HDFPluginMacros.cmake index 6664de5c..cc68ec28 100644 --- a/BZIP2/config/cmake/HDFPluginMacros.cmake +++ b/BZIP2/config/cmake/HDFPluginMacros.cmake @@ -67,7 +67,7 @@ macro (BASIC_SETTINGS varname) if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR) set (${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR ${CMAKE_INSTALL_DOCDIR}) endif () - message(STATUS "GNU: ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR}") + message(STATUS "GNU: ${${PLUGIN_PACKAGE_NAME}_INSTALL_LIB_DIR}") endif () if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_BIN_DIR) @@ -100,7 +100,7 @@ macro (BASIC_SETTINGS varname) if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR) set (${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR}) endif () - message(STATUS "Final: ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR}") + message(STATUS "Final: ${${PLUGIN_PACKAGE_NAME}_INSTALL_LIB_DIR}") #----------------------------------------------------------------------------- # Setup output Directories @@ -115,6 +115,15 @@ macro (BASIC_SETTINGS varname) set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all static libraries." ) + get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) + if(_isMultiConfig) + set (CMAKE_TEST_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}) + set (CMAKE_PDB_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all pdb files." + ) + else () + set (CMAKE_TEST_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) + endif () else () # if we are externally configured, but the project uses old cmake scripts # this may not be set @@ -304,7 +313,7 @@ macro (HDF5_SUPPORT link_hdf) set (H5PL_HDF5_HAVE_H5PUBCONF_H 1) set (H5PL_HDF5_HAVE_HDF5 1) set (H5PL_HDF5_HEADER "h5pubconf.h") - message (STATUS "HDF5 found: INC=${HDF5_INCLUDE_DIRS} TOOLS=${HDF5_TOOLS_DIR}") + message (STATUS "HDF5-${HDF5_VERSION_STRING} found: INC=${HDF5_INCLUDE_DIRS} TOOLS=${HDF5_TOOLS_DIR}") else () message (FATAL_ERROR " HDF5 is Required for plugin library") endif () @@ -330,227 +339,224 @@ macro (INSTALL_SUPPORT varname) string(TOUPPER ${varname} PLUGIN_PACKAGE_NAME) string(TOLOWER ${varname} PLUGIN_NAME) - #----------------------------------------------------------------------------- - # Set variables needed for installation - #----------------------------------------------------------------------------- - set (${PLUGIN_PACKAGE_NAME}_VERSION_STRING ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}) - set (${PLUGIN_PACKAGE_NAME}_VERSION_MAJOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}) - set (${PLUGIN_PACKAGE_NAME}_VERSION_MINOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}) - - #----------------------------------------------------------------------------- - # Configure the H5PL_Examples.cmake file and the examples - #----------------------------------------------------------------------------- - configure_file ( - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5PL_Examples.cmake.in - ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake @ONLY - ) - install ( - FILES - ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CTestScript.cmake - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/HDFoptions.cmake + if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) + #----------------------------------------------------------------------------- + # Set variables needed for installation + #----------------------------------------------------------------------------- + set (${PLUGIN_PACKAGE_NAME}_VERSION_STRING ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}) + set (${PLUGIN_PACKAGE_NAME}_VERSION_MAJOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}) + set (${PLUGIN_PACKAGE_NAME}_VERSION_MINOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}) + + #----------------------------------------------------------------------------- + # Configure the H5PL_Examples.cmake file and the examples + #----------------------------------------------------------------------------- + if (${PLUGIN_PACKAGE_NAME}_BUILD_TESTING) + configure_file ( + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5PL_Examples.cmake.in + ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake @ONLY + ) + install ( + FILES + ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CTestScript.cmake + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/HDFoptions.cmake DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} - COMPONENT hdfdocuments - ) - execute_process( - COMMAND ${CMAKE_COMMAND} -E copy_directory ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/binex ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples - ) - install ( - DIRECTORY ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples - DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} - USE_SOURCE_PERMISSIONS - COMPONENT hdfdocuments - ) + COMPONENT hdfdocuments + ) + execute_process( + COMMAND ${CMAKE_COMMAND} -E copy_directory ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/binex ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples + ) + install ( + DIRECTORY ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples + DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} + USE_SOURCE_PERMISSIONS + COMPONENT hdfdocuments + ) + endif () - #----------------------------------------------------------------------------- - # Configure the README.txt file for the binary package - #----------------------------------------------------------------------------- - PLUGIN_README_PROPERTIES (${PLUGIN_PACKAGE_NAME}) + #----------------------------------------------------------------------------- + # Configure the README.txt file for the binary package + #----------------------------------------------------------------------------- + PLUGIN_README_PROPERTIES (${PLUGIN_PACKAGE_NAME}) - #----------------------------------------------------------------------------- - # Check for Installation Utilities - #----------------------------------------------------------------------------- - if (WIN32) - set (PF_ENV_EXT "(x86)") - find_program (NSIS_EXECUTABLE NSIS.exe PATHS "$ENV{ProgramFiles}\\NSIS" "$ENV{ProgramFiles${PF_ENV_EXT}}\\NSIS") - if(NOT CPACK_WIX_ROOT) - file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT) - endif() - find_program (WIX_EXECUTABLE candle PATHS "${CPACK_WIX_ROOT}/bin") - endif () - - #----------------------------------------------------------------------------- - # Set the cpack variables - #----------------------------------------------------------------------------- - if (NOT ${PLUGIN_PACKAGE_NAME}_EXTERNALLY_CONFIGURED) - set (CPACK_PACKAGE_VENDOR "HDF_Group") - set (CPACK_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}") - if (CDASH_LOCAL) - set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}") - else () - set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_STRING}") + #----------------------------------------------------------------------------- + # Configure the COPYING.txt file for the windows binary package + #----------------------------------------------------------------------------- + if (WIN32) + configure_file (${CMAKE_SOURCE_DIR}/COPYING ${CMAKE_BINARY_DIR}/COPYING.txt @ONLY) endif () - set (CPACK_PACKAGE_VERSION_MAJOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}") - set (CPACK_PACKAGE_VERSION_MINOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}") - set (CPACK_PACKAGE_VERSION_PATCH "") - #set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") - set (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - set (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - set (CPACK_PACKAGE_RELOCATABLE TRUE) - set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PLUGIN_NAME} Installation") - set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSION}") - - set (CPACK_GENERATOR "TGZ") + + #----------------------------------------------------------------------------- + # Add Document File(s) to CMake Install + #----------------------------------------------------------------------------- + install ( + FILES + ${${PLUGIN_PACKAGE_NAME}_SOURCE_DIR}/docs/PluginLibraries.txt + DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR} + COMPONENT hdfdocuments + ) + + #----------------------------------------------------------------------------- + # Check for Installation Utilities + #----------------------------------------------------------------------------- if (WIN32) - set (CPACK_GENERATOR "ZIP") + set (PF_ENV_EXT "(x86)") + find_program (NSIS_EXECUTABLE NSIS.exe PATHS "$ENV{ProgramFiles}\\NSIS" "$ENV{ProgramFiles${PF_ENV_EXT}}\\NSIS") + if(NOT CPACK_WIX_ROOT) + file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT) + endif() + find_program (WIX_EXECUTABLE candle PATHS "${CPACK_WIX_ROOT}/bin") + endif () - if (NSIS_EXECUTABLE) - list (APPEND CPACK_GENERATOR "NSIS") - endif () - # Installers for 32- vs. 64-bit CMake: - # - Root install directory (displayed to end user at installer-run time) - # - "NSIS package/display name" (text used in the installer GUI) - # - Registry key used to store info about the installation - set (CPACK_NSIS_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - if (CMAKE_CL_64) - set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") - set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION} (Win64)") + if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + if (CMAKE_HOST_UNIX) + set (CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/HDF_Group/${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}/${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}" + CACHE PATH "Install path prefix, prepended onto install directories." FORCE + ) else () - set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") - set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + GetDefaultWindowsPrefixBase(CMAKE_GENERIC_PROGRAM_FILES) + set (CMAKE_INSTALL_PREFIX + "${CMAKE_GENERIC_PROGRAM_FILES}/HDF_Group/${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}/${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}" + CACHE PATH "Install path prefix, prepended onto install directories." FORCE + ) + set (CMAKE_GENERIC_PROGRAM_FILES) endif () - # set the install/unistall icon used for the installer itself - # There is a bug in NSI that does not handle full unix paths properly. - #set (CPACK_NSIS_MUI_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") - #set (CPACK_NSIS_MUI_UNIICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") - # set the package header icon for MUI - #set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.bmp") - set (CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}, is a dynamic filter for HDF5") - #set (CPACK_PACKAGE_INSTALL_DIRECTORY "plugins") - set (CPACK_NSIS_CONTACT "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") - set (CPACK_NSIS_MODIFY_PATH ON) - - if (WIX_EXECUTABLE) - list (APPEND CPACK_GENERATOR "WIX") + endif () + + #----------------------------------------------------------------------------- + # Set the cpack variables + #----------------------------------------------------------------------------- + if (NOT ${PLUGIN_PACKAGE_NAME}_EXTERNALLY_CONFIGURED) + set (CPACK_PACKAGE_VENDOR "HDF_Group") + set (CPACK_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}") + if (CDASH_LOCAL) + set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}") + else () + set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_STRING}") endif () - #WiX variables - set (CPACK_WIX_UNINSTALL "1") -# .. variable:: CPACK_WIX_LICENSE_RTF -# RTF License File -# -# If CPACK_RESOURCE_FILE_LICENSE has an .rtf extension it is used as-is. -# -# If CPACK_RESOURCE_FILE_LICENSE has an .txt extension it is implicitly -# converted to RTF by the WiX Generator. -# The expected encoding of the .txt file is UTF-8. -# -# With CPACK_WIX_LICENSE_RTF you can override the license file used by the -# WiX Generator in case CPACK_RESOURCE_FILE_LICENSE is in an unsupported -# format or the .txt -> .rtf conversion does not work as expected. - set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") -# .. variable:: CPACK_WIX_PRODUCT_ICON -# The Icon shown next to the program name in Add/Remove programs. -# set (CPACK_WIX_PRODUCT_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") -# -# .. variable:: CPACK_WIX_UI_BANNER -# -# The bitmap will appear at the top of all installer pages other than the -# welcome and completion dialogs. -# -# If set, this image will replace the default banner image. -# -# This image must be 493 by 58 pixels. -# -# .. variable:: CPACK_WIX_UI_DIALOG -# -# Background bitmap used on the welcome and completion dialogs. -# -# If this variable is set, the installer will replace the default dialog -# image. -# -# This image must be 493 by 312 pixels. -# - elseif (APPLE) - list (APPEND CPACK_GENERATOR "STGZ") - list (APPEND CPACK_GENERATOR "DragNDrop") - set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) - set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") -# set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/h5bz.gif") - - option (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE "Package the ${PLUGIN_PACKAGE_NAME} Library in a Bundle" OFF) - if (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE) - list (APPEND CPACK_GENERATOR "Bundle") - set (CPACK_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - set (CPACK_BUNDLE_LOCATION "/") # make sure CMAKE_INSTALL_PREFIX ends in / - set (CMAKE_INSTALL_PREFIX "/${CPACK_BUNDLE_NAME}.framework/Versions/${CPACK_PACKAGE_VERSION}/${CPACK_PACKAGE_NAME}/") -# set (CPACK_BUNDLE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5BZ2.icns") -# set (CPACK_BUNDLE_PLIST "${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist") - set (CPACK_APPLE_GUI_INFO_STRING "${PLUGIN_PACKAGE_NAME} Plugin Library") - set (CPACK_APPLE_GUI_COPYRIGHT "Copyright © ???. All rights reserved.") - set (CPACK_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") - set (CPACK_APPLE_GUI_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - set (CPACK_APPLE_GUI_VERSION_STRING "${CPACK_PACKAGE_VERSION_STRING}") - set (CPACK_APPLE_GUI_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") - #----------------------------------------------------------------------------- - # Configure the Info.plist file for the install bundle - #----------------------------------------------------------------------------- -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CPack.Info.plist.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist @ONLY -# ) -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/PkgInfo.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo @ONLY -# ) -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/version.plist.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist @ONLY -# ) -# install ( -# FILES ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist -# DESTINATION .. -# ) + set (CPACK_PACKAGE_VERSION_MAJOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}") + set (CPACK_PACKAGE_VERSION_MINOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}") + set (CPACK_PACKAGE_VERSION_PATCH "") + #set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") + set (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + set (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + set (CPACK_PACKAGE_RELOCATABLE TRUE) + set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PLUGIN_NAME} Installation") + set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSION}") + + set (CPACK_GENERATOR "TGZ") + if (WIN32) + set (CPACK_GENERATOR "ZIP") + + if (NSIS_EXECUTABLE) + list (APPEND CPACK_GENERATOR "NSIS") + endif () + set (CPACK_NSIS_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + if (CMAKE_CL_64) + set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") + set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION} (Win64)") + else () + set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") + set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + endif () + # set the install/unistall icon used for the installer itself + # There is a bug in NSI that does not handle full unix paths properly. + #set (CPACK_NSIS_MUI_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") + #set (CPACK_NSIS_MUI_UNIICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") + # set the package header icon for MUI + #set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.bmp") + set (CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}, is a dynamic filter for HDF5") + #set (CPACK_PACKAGE_INSTALL_DIRECTORY "plugins") + set (CPACK_NSIS_CONTACT "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + set (CPACK_NSIS_MODIFY_PATH ON) + + if (WIX_EXECUTABLE) + list (APPEND CPACK_GENERATOR "WIX") + endif () + # WiX variables + set (CPACK_WIX_UNINSTALL "1") + set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + elseif (APPLE) + list (APPEND CPACK_GENERATOR "STGZ") + list (APPEND CPACK_GENERATOR "DragNDrop") + set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) + set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") +# set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/h5bz.gif") + + option (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE "Package the ${PLUGIN_PACKAGE_NAME} Library in a Bundle" OFF) + if (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE) + list (APPEND CPACK_GENERATOR "Bundle") + set (CPACK_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + set (CPACK_BUNDLE_LOCATION "/") # make sure CMAKE_INSTALL_PREFIX ends in / + set (CMAKE_INSTALL_PREFIX "/${CPACK_BUNDLE_NAME}.framework/Versions/${CPACK_PACKAGE_VERSION}/${CPACK_PACKAGE_NAME}/") +# set (CPACK_BUNDLE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5BZ2.icns") +# set (CPACK_BUNDLE_PLIST "${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist") + set (CPACK_APPLE_GUI_INFO_STRING "${PLUGIN_PACKAGE_NAME} Plugin Library") + set (CPACK_APPLE_GUI_COPYRIGHT "Copyright © ???. All rights reserved.") + set (CPACK_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") + set (CPACK_APPLE_GUI_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + set (CPACK_APPLE_GUI_VERSION_STRING "${CPACK_PACKAGE_VERSION_STRING}") + set (CPACK_APPLE_GUI_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") + #----------------------------------------------------------------------------- + # Configure the Info.plist file for the install bundle + #----------------------------------------------------------------------------- +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CPack.Info.plist.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist @ONLY +# ) +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/PkgInfo.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo @ONLY +# ) +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/version.plist.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist @ONLY +# ) +# install ( +# FILES ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist +# DESTINATION .. +# ) + endif () + else () + list (APPEND CPACK_GENERATOR "STGZ") + set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") + set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) + + set (CPACK_DEBIAN_PACKAGE_SECTION "Libraries") + set (CPACK_DEBIAN_PACKAGE_MAINTAINER "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + +# list (APPEND CPACK_GENERATOR "RPM") + set (CPACK_RPM_PACKAGE_RELEASE "1") + set (CPACK_RPM_COMPONENT_INSTALL ON) + set (CPACK_RPM_PACKAGE_RELOCATABLE ON) endif () - else () - list (APPEND CPACK_GENERATOR "STGZ") - set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") - set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) - set (CPACK_DEBIAN_PACKAGE_SECTION "Libraries") - set (CPACK_DEBIAN_PACKAGE_MAINTAINER "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};ALL;/") + else () + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};libraries;/") + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};headers;/") + endif () -# list (APPEND CPACK_GENERATOR "RPM") - set (CPACK_RPM_PACKAGE_RELEASE "1") - set (CPACK_RPM_COMPONENT_INSTALL ON) - set (CPACK_RPM_PACKAGE_RELOCATABLE ON) + set (CPACK_ALL_INSTALL_TYPES Full User) + set (CPACK_INSTALL_TYPE_FULL_DISPLAY_NAME "Everything") endif () if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};ALL;/") - else () - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};libraries;/") - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};headers;/") + include (CPack) + + cpack_add_component_group(Runtime) + + cpack_add_component (libraries + DISPLAY_NAME "${PLUGIN_NAME} Libraries" + GROUP Runtime + ) + cpack_add_component_group(hdfdocuments + DISPLAY_NAME "${PLUGIN_NAME} Documents" + GROUP Documents + INSTALL_TYPES Full User + ) endif () - - set (CPACK_ALL_INSTALL_TYPES Full User) - set (CPACK_INSTALL_TYPE_FULL_DISPLAY_NAME "Everything") - - endif () - - if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) - include (CPack) - - cpack_add_component_group(Runtime) - - cpack_add_component (libraries - DISPLAY_NAME "${PLUGIN_NAME} Libraries" - GROUP Runtime - ) - cpack_add_component_group(hdfdocuments - DISPLAY_NAME "${PLUGIN_NAME} Documents" - GROUP Documents - INSTALL_TYPES Full User - ) endif () endmacro () diff --git a/BZIP2/config/cmake/grepTest.cmake b/BZIP2/config/cmake/grepTest.cmake index 26e295c2..caa818b5 100644 --- a/BZIP2/config/cmake/grepTest.cmake +++ b/BZIP2/config/cmake/grepTest.cmake @@ -65,5 +65,5 @@ if (TEST_EXPECT) endif () # everything went fine... -message ("Passed: The output of ${TEST_PROGRAM} matched") +message (STATUS "Passed: The output of ${TEST_PROGRAM} matched") diff --git a/BZIP2/config/toolchain/aarch64.cmake b/BZIP2/config/toolchain/aarch64.cmake index aa84a742..69968336 100644 --- a/BZIP2/config/toolchain/aarch64.cmake +++ b/BZIP2/config/toolchain/aarch64.cmake @@ -2,7 +2,7 @@ set(TOOLCHAIN_PREFIX aarch64-linux-gnu) set(ANDROID_NDK /opt/android-ndk-linux) set (CMAKE_SYSTEM_NAME Android) set (CMAKE_ANDROID_ARCH_ABI x86_64) -#set (CMAKE_ANDROID_STANDALONE_TOOLCHAIN ${ANDROID_NDK}/build/cmake/andriod.toolchain.cmake) +#set (CMAKE_ANDROID_STANDALONE_TOOLCHAIN ${ANDROID_NDK}/build/cmake/android.toolchain.cmake) set (CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc) set (CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++) #set (CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres) @@ -11,6 +11,7 @@ set (CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX}) set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set (CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) set (CMAKE_CROSSCOMPILING_EMULATOR qemu-aarch64) include_directories(/usr/${TOOLCHAIN_PREFIX}/include) diff --git a/BZIP2/config/toolchain/intel.cmake b/BZIP2/config/toolchain/intel.cmake new file mode 100644 index 00000000..f8f60b28 --- /dev/null +++ b/BZIP2/config/toolchain/intel.cmake @@ -0,0 +1,11 @@ +# Uncomment the following to use cross-compiling +#set(CMAKE_SYSTEM_NAME Linux) + +set(CMAKE_COMPILER_VENDOR "intel") + +set(CMAKE_C_COMPILER icx) +set(CMAKE_CXX_COMPILER icpx) +set(CMAKE_Fortran_COMPILER ifx) + +# the following is used if cross-compiling +set(CMAKE_CROSSCOMPILING_EMULATOR "") diff --git a/JPEG/CMakeLists.txt b/JPEG/CMakeLists.txt index 66f3d549..4f4be4a8 100644 --- a/JPEG/CMakeLists.txt +++ b/JPEG/CMakeLists.txt @@ -60,7 +60,7 @@ set (H5JPEG_PACKAGE_URL "http://www.hdfgroup.org") set (H5JPEG_PACKAGE_BUGREPORT "help@hdfgroup.org") set (H5JPEG_PACKAGE_SOVERSION "${H5JPEG_SOVERS_MAJOR}.${H5JPEG_SOVERS_RELEASE}.${H5JPEG_SOVERS_MINOR}") set (H5JPEG_PACKAGE_SOVERSION_MAJOR "${H5JPEG_SOVERS_MAJOR}") -message("Configuring for jpeg HDF5 Plugin version: " ${H5JPEG_PACKAGE_STRING}) +message(STATUS "Configuring for jpeg HDF5 Plugin version: " ${H5JPEG_PACKAGE_STRING}) #----------------------------------------------------------------------------- # Include some macros for reusable code @@ -114,7 +114,7 @@ if (JPEG_FOUND) set (JPEG_INCLUDE_DIRS ${JPEG_INCLUDE_DIR}) else () if (H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") - EXTERNAL_JPEG_LIBRARY (${H5PL_ALLOW_EXTERNAL_SUPPORT} STATIC) + EXTERNAL_JPEG_LIBRARY (${H5PL_ALLOW_EXTERNAL_SUPPORT}) set (H5JPEG_HAVE_BZLIB_H 1) set (H5JPEG_HAVE_JPEG 1) message (STATUS "Filter JPEG is built") @@ -140,12 +140,6 @@ endif () add_subdirectory (src) -if (H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") - if (JPEG_FOUND AND JPEG_USE_EXTERNAL) - add_dependencies (${H5JPEG_LIB_TARGET} JPEG) - endif () -endif () - option (BUILD_EXAMPLES "Build h5jpeg Examples" OFF) if (BUILD_EXAMPLES) add_subdirectory (example) diff --git a/JPEG/config/cmake/H5JPEGMacros.cmake b/JPEG/config/cmake/H5JPEGMacros.cmake index cb0b701f..905d475b 100644 --- a/JPEG/config/cmake/H5JPEGMacros.cmake +++ b/JPEG/config/cmake/H5JPEGMacros.cmake @@ -9,81 +9,48 @@ # If you do not have access to either file, you may request a copy from # help@hdfgroup.org. # + +include (FetchContent) #------------------------------------------------------------------------------- -macro (EXTERNAL_JPEG_LIBRARY compress_type libtype) - if (${libtype} MATCHES "SHARED") - set (BUILD_EXT_SHARED_LIBS "ON") - else () - set (BUILD_EXT_SHARED_LIBS "OFF") - endif () +macro (EXTERNAL_JPEG_LIBRARY compress_type) if (${compress_type} MATCHES "GIT") - EXTERNALPROJECT_ADD (JPEG + FetchContent_Declare (JPEG GIT_REPOSITORY ${JPEG_URL} GIT_TAG ${JPEG_BRANCH} - INSTALL_COMMAND "" - CMAKE_ARGS - -DBUILD_SHARED_LIBS:BOOL=${BUILD_EXT_SHARED_LIBS} - -DJPEG_PACKAGE_EXT:STRING=${JPEG_PACKAGE_EXT} - -DJPEG_EXTERNALLY_CONFIGURED:BOOL=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} - -DCMAKE_ANSI_CFLAGS:STRING=${CMAKE_ANSI_CFLAGS} - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DH5PL_USE_GNU_DIRS:STRING=${H5PL_USE_GNU_DIRS} - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} ) elseif (${compress_type} MATCHES "TGZ") - EXTERNALPROJECT_ADD (JPEG + FetchContent_Declare (JPEG URL ${JPEG_URL} - URL_MD5 "" - INSTALL_COMMAND "" - CMAKE_ARGS - -DBUILD_SHARED_LIBS:BOOL=${BUILD_EXT_SHARED_LIBS} - -DJPEG_PACKAGE_EXT:STRING=${JPEG_PACKAGE_EXT} - -DJPEG_EXTERNALLY_CONFIGURED:BOOL=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} - -DCMAKE_ANSI_CFLAGS:STRING=${CMAKE_ANSI_CFLAGS} - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DH5PL_USE_GNU_DIRS:STRING=${H5PL_USE_GNU_DIRS} - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} + URL_HASH "" ) endif () - externalproject_get_property (JPEG BINARY_DIR SOURCE_DIR) + FetchContent_GetProperties(JPEG) + if(NOT jpeg_POPULATED) + FetchContent_Populate(JPEG) + + # Store the old value of the 'BUILD_SHARED_LIBS' + set (BUILD_SHARED_LIBS_OLD ${BUILD_SHARED_LIBS}) + # Make subproject to use 'BUILD_SHARED_LIBS=OFF' setting. + set (BUILD_SHARED_LIBS OFF CACHE INTERNAL "Build SHARED libraries") + # Store the old value of the 'BUILD_TESTING' + set (BUILD_TESTING_OLD ${BUILD_TESTING}) + # Make subproject to use 'BUILD_TESTING=OFF' setting. + set (BUILD_TESTING OFF CACHE INTERNAL "Build Unit Testing") - # Create imported target JPEG - add_library (jpeg ${libtype} IMPORTED) - HDF_IMPORT_SET_LIB_OPTIONS (jpeg "jpeg" ${libtype} "") - add_dependencies (jpeg JPEG) + add_subdirectory(${jpeg_SOURCE_DIR} ${jpeg_BINARY_DIR}) + + # Restore the old value of the parameter + set (BUILD_TESTING ${BUILD_TESTING_OLD} CACHE BOOL "Build Unit Testing" FORCE) + # Restore the old value of the parameter + set (BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_OLD} CACHE BOOL "Type of libraries to build" FORCE) + endif () # include (${BINARY_DIR}/JPEG-targets.cmake) - set (JPEG_LIBRARY "jpeg") + set (JPEG_LIBRARY "jpeg-static") - set (JPEG_INCLUDE_DIR_GEN "${BINARY_DIR}") - set (JPEG_INCLUDE_DIR "${SOURCE_DIR}/src") + set (JPEG_INCLUDE_DIR_GEN "${jpeg_BINARY_DIR}") + set (JPEG_INCLUDE_DIR "${jpeg_SOURCE_DIR}/src") set (JPEG_FOUND 1) set (JPEG_LIBRARIES ${JPEG_LIBRARY}) set (JPEG_INCLUDE_DIRS ${JPEG_INCLUDE_DIR_GEN} ${JPEG_INCLUDE_DIR}) endmacro () - -#------------------------------------------------------------------------------- -macro (PACKAGE_JPEG_LIBRARY compress_type) - add_custom_target (JPEG-GenHeader-Copy ALL - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${JPEG_INCLUDE_DIR}/bzlib.h ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ - COMMENT "Copying ${JPEG_INCLUDE_DIR}/bzlib.h to ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/" - ) - set (EXTERNAL_HEADER_LIST ${EXTERNAL_HEADER_LIST} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/bzlib.h) - if (${compress_type} MATCHES "GIT" OR ${compress_type} MATCHES "TGZ") - add_dependencies (JPEG-GenHeader-Copy jpeg) - endif () -endmacro () diff --git a/JPEG/config/cmake/HDFMacros.cmake b/JPEG/config/cmake/HDFMacros.cmake index 5e63ec23..0cf9f192 100644 --- a/JPEG/config/cmake/HDFMacros.cmake +++ b/JPEG/config/cmake/HDFMacros.cmake @@ -490,6 +490,8 @@ macro (HDF_DIR_PATHS package_prefix) set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) endif () endif () + + include (FetchContent) endmacro () macro (ADD_H5_FLAGS h5_flag_var infile) diff --git a/JPEG/config/cmake/HDFPluginMacros.cmake b/JPEG/config/cmake/HDFPluginMacros.cmake index 1c40c551..032903e8 100644 --- a/JPEG/config/cmake/HDFPluginMacros.cmake +++ b/JPEG/config/cmake/HDFPluginMacros.cmake @@ -67,7 +67,7 @@ macro (BASIC_SETTINGS varname) if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR) set (${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR ${CMAKE_INSTALL_DOCDIR}) endif () - message(STATUS "GNU: ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR}") + message(STATUS "GNU: ${${PLUGIN_PACKAGE_NAME}_INSTALL_LIB_DIR}") endif () if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_BIN_DIR) @@ -100,7 +100,7 @@ macro (BASIC_SETTINGS varname) if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR) set (${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR}) endif () - message(STATUS "Final: ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR}") + message(STATUS "Final: ${${PLUGIN_PACKAGE_NAME}_INSTALL_LIB_DIR}") #----------------------------------------------------------------------------- # Setup output Directories @@ -115,6 +115,15 @@ macro (BASIC_SETTINGS varname) set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all static libraries." ) + get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) + if(_isMultiConfig) + set (CMAKE_TEST_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}) + set (CMAKE_PDB_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all pdb files." + ) + else () + set (CMAKE_TEST_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) + endif () else () # if we are externally configured, but the project uses old cmake scripts # this may not be set @@ -304,7 +313,7 @@ macro (HDF5_SUPPORT link_hdf) set (H5PL_HDF5_HAVE_H5PUBCONF_H 1) set (H5PL_HDF5_HAVE_HDF5 1) set (H5PL_HDF5_HEADER "h5pubconf.h") - message (STATUS "HDF5 found: INC=${HDF5_INCLUDE_DIRS} TOOLS=${HDF5_TOOLS_DIR}") + message (STATUS "HDF5-${HDF5_VERSION_STRING} found: INC=${HDF5_INCLUDE_DIRS} TOOLS=${HDF5_TOOLS_DIR}") else () message (FATAL_ERROR " HDF5 is Required for plugin library") endif () @@ -330,227 +339,224 @@ macro (INSTALL_SUPPORT varname) string(TOUPPER ${varname} PLUGIN_PACKAGE_NAME) string(TOLOWER ${varname} PLUGIN_NAME) - #----------------------------------------------------------------------------- - # Set variables needed for installation - #----------------------------------------------------------------------------- - set (${PLUGIN_PACKAGE_NAME}_VERSION_STRING ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}) - set (${PLUGIN_PACKAGE_NAME}_VERSION_MAJOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}) - set (${PLUGIN_PACKAGE_NAME}_VERSION_MINOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}) - - #----------------------------------------------------------------------------- - # Configure the H5PL_Examples.cmake file and the examples - #----------------------------------------------------------------------------- - configure_file ( - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5PL_Examples.cmake.in - ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake @ONLY - ) - install ( - FILES - ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CTestScript.cmake - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/HDFoptions.cmake + if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) + #----------------------------------------------------------------------------- + # Set variables needed for installation + #----------------------------------------------------------------------------- + set (${PLUGIN_PACKAGE_NAME}_VERSION_STRING ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}) + set (${PLUGIN_PACKAGE_NAME}_VERSION_MAJOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}) + set (${PLUGIN_PACKAGE_NAME}_VERSION_MINOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}) + + #----------------------------------------------------------------------------- + # Configure the H5PL_Examples.cmake file and the examples + #----------------------------------------------------------------------------- + if (${PLUGIN_PACKAGE_NAME}_BUILD_TESTING) + configure_file ( + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5PL_Examples.cmake.in + ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake @ONLY + ) + install ( + FILES + ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CTestScript.cmake + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/HDFoptions.cmake DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} - COMPONENT hdfdocuments - ) - execute_process( - COMMAND ${CMAKE_COMMAND} -E copy_directory ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/binex ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples - ) - install ( - DIRECTORY ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples - DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} - USE_SOURCE_PERMISSIONS - COMPONENT hdfdocuments - ) + COMPONENT hdfdocuments + ) + execute_process( + COMMAND ${CMAKE_COMMAND} -E copy_directory ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/binex ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples + ) + install ( + DIRECTORY ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples + DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} + USE_SOURCE_PERMISSIONS + COMPONENT hdfdocuments + ) + endif () - #----------------------------------------------------------------------------- - # Configure the README.txt file for the binary package - #----------------------------------------------------------------------------- - PLUGIN_README_PROPERTIES (${PLUGIN_PACKAGE_NAME}) + #----------------------------------------------------------------------------- + # Configure the README.txt file for the binary package + #----------------------------------------------------------------------------- + PLUGIN_README_PROPERTIES (${PLUGIN_PACKAGE_NAME}) - #----------------------------------------------------------------------------- - # Check for Installation Utilities - #----------------------------------------------------------------------------- - if (WIN32) - set (PF_ENV_EXT "(x86)") - find_program (NSIS_EXECUTABLE NSIS.exe PATHS "$ENV{ProgramFiles}\\NSIS" "$ENV{ProgramFiles${PF_ENV_EXT}}\\NSIS") - if(NOT CPACK_WIX_ROOT) - file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT) - endif() - find_program (WIX_EXECUTABLE candle PATHS "${CPACK_WIX_ROOT}/bin") - endif () - - #----------------------------------------------------------------------------- - # Set the cpack variables - #----------------------------------------------------------------------------- - if (NOT ${PLUGIN_PACKAGE_NAME}_EXTERNALLY_CONFIGURED) - set (CPACK_PACKAGE_VENDOR "HDF_Group") - set (CPACK_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}") - if (CDASH_LOCAL) - set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}") - else () - set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_STRING}") + #----------------------------------------------------------------------------- + # Configure the COPYING.txt file for the windows binary package + #----------------------------------------------------------------------------- + if (WIN32) + configure_file (${CMAKE_SOURCE_DIR}/COPYING ${CMAKE_BINARY_DIR}/COPYING.txt @ONLY) endif () - set (CPACK_PACKAGE_VERSION_MAJOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}") - set (CPACK_PACKAGE_VERSION_MINOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}") - set (CPACK_PACKAGE_VERSION_PATCH "") - #set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") - set (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - set (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - set (CPACK_PACKAGE_RELOCATABLE TRUE) - set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PLUGIN_NAME} Installation") - set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSION}") - - set (CPACK_GENERATOR "TGZ") + + #----------------------------------------------------------------------------- + # Add Document File(s) to CMake Install + #----------------------------------------------------------------------------- + install ( + FILES + ${${PLUGIN_PACKAGE_NAME}_SOURCE_DIR}/docs/PluginLibraries.txt + DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR} + COMPONENT hdfdocuments + ) + + #----------------------------------------------------------------------------- + # Check for Installation Utilities + #----------------------------------------------------------------------------- if (WIN32) - set (CPACK_GENERATOR "ZIP") + set (PF_ENV_EXT "(x86)") + find_program (NSIS_EXECUTABLE NSIS.exe PATHS "$ENV{ProgramFiles}\\NSIS" "$ENV{ProgramFiles${PF_ENV_EXT}}\\NSIS") + if(NOT CPACK_WIX_ROOT) + file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT) + endif() + find_program (WIX_EXECUTABLE candle PATHS "${CPACK_WIX_ROOT}/bin") + endif () - if (NSIS_EXECUTABLE) - list (APPEND CPACK_GENERATOR "NSIS") - endif () - # Installers for 32- vs. 64-bit CMake: - # - Root install directory (displayed to end user at installer-run time) - # - "NSIS package/display name" (text used in the installer GUI) - # - Registry key used to store info about the installation - set (CPACK_NSIS_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - if (CMAKE_CL_64) - set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") - set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION} (Win64)") + if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + if (CMAKE_HOST_UNIX) + set (CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/HDF_Group/${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}/${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}" + CACHE PATH "Install path prefix, prepended onto install directories." FORCE + ) else () - set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") - set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + GetDefaultWindowsPrefixBase(CMAKE_GENERIC_PROGRAM_FILES) + set (CMAKE_INSTALL_PREFIX + "${CMAKE_GENERIC_PROGRAM_FILES}/HDF_Group/${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}/${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}" + CACHE PATH "Install path prefix, prepended onto install directories." FORCE + ) + set (CMAKE_GENERIC_PROGRAM_FILES) endif () - # set the install/unistall icon used for the installer itself - # There is a bug in NSI that does not handle full unix paths properly. - #set (CPACK_NSIS_MUI_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") - #set (CPACK_NSIS_MUI_UNIICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") - # set the package header icon for MUI - #set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.bmp") - set (CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}, is a dynamic filter for HDF5") - #set (CPACK_PACKAGE_INSTALL_DIRECTORY "plugins") - set (CPACK_NSIS_CONTACT "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") - set (CPACK_NSIS_MODIFY_PATH ON) - - if (WIX_EXECUTABLE) - list (APPEND CPACK_GENERATOR "WIX") + endif () + + #----------------------------------------------------------------------------- + # Set the cpack variables + #----------------------------------------------------------------------------- + if (NOT ${PLUGIN_PACKAGE_NAME}_EXTERNALLY_CONFIGURED) + set (CPACK_PACKAGE_VENDOR "HDF_Group") + set (CPACK_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}") + if (CDASH_LOCAL) + set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}") + else () + set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_STRING}") endif () - #WiX variables - set (CPACK_WIX_UNINSTALL "1") -# .. variable:: CPACK_WIX_LICENSE_RTF -# RTF License File -# -# If CPACK_RESOURCE_FILE_LICENSE has an .rtf extension it is used as-is. -# -# If CPACK_RESOURCE_FILE_LICENSE has an .txt extension it is implicitly -# converted to RTF by the WiX Generator. -# The expected encoding of the .txt file is UTF-8. -# -# With CPACK_WIX_LICENSE_RTF you can override the license file used by the -# WiX Generator in case CPACK_RESOURCE_FILE_LICENSE is in an unsupported -# format or the .txt -> .rtf conversion does not work as expected. - set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") -# .. variable:: CPACK_WIX_PRODUCT_ICON -# The Icon shown next to the program name in Add/Remove programs. -# set (CPACK_WIX_PRODUCT_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") -# -# .. variable:: CPACK_WIX_UI_BANNER -# -# The bitmap will appear at the top of all installer pages other than the -# welcome and completion dialogs. -# -# If set, this image will replace the default banner image. -# -# This image must be 493 by 58 pixels. -# -# .. variable:: CPACK_WIX_UI_DIALOG -# -# Background bitmap used on the welcome and completion dialogs. -# -# If this variable is set, the installer will replace the default dialog -# image. -# -# This image must be 493 by 312 pixels. -# - elseif (APPLE) - list (APPEND CPACK_GENERATOR "STGZ") - list (APPEND CPACK_GENERATOR "DragNDrop") - set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) - set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") -# set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/h5jpeg.gif") - - option (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE "Package the ${PLUGIN_PACKAGE_NAME} Library in a Bundle" OFF) - if (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE) - list (APPEND CPACK_GENERATOR "Bundle") - set (CPACK_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - set (CPACK_BUNDLE_LOCATION "/") # make sure CMAKE_INSTALL_PREFIX ends in / - set (CMAKE_INSTALL_PREFIX "/${CPACK_BUNDLE_NAME}.framework/Versions/${CPACK_PACKAGE_VERSION}/${CPACK_PACKAGE_NAME}/") -# set (CPACK_BUNDLE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5JPEG.icns") -# set (CPACK_BUNDLE_PLIST "${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist") - set (CPACK_APPLE_GUI_INFO_STRING "${PLUGIN_PACKAGE_NAME} Plugin Library") - set (CPACK_APPLE_GUI_COPYRIGHT "Copyright © ???. All rights reserved.") - set (CPACK_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") - set (CPACK_APPLE_GUI_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - set (CPACK_APPLE_GUI_VERSION_STRING "${CPACK_PACKAGE_VERSION_STRING}") - set (CPACK_APPLE_GUI_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") - #----------------------------------------------------------------------------- - # Configure the Info.plist file for the install bundle - #----------------------------------------------------------------------------- -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CPack.Info.plist.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist @ONLY -# ) -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/PkgInfo.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo @ONLY -# ) -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/version.plist.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist @ONLY -# ) -# install ( -# FILES ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist -# DESTINATION .. -# ) + set (CPACK_PACKAGE_VERSION_MAJOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}") + set (CPACK_PACKAGE_VERSION_MINOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}") + set (CPACK_PACKAGE_VERSION_PATCH "") + #set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") + set (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + set (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + set (CPACK_PACKAGE_RELOCATABLE TRUE) + set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PLUGIN_NAME} Installation") + set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSION}") + + set (CPACK_GENERATOR "TGZ") + if (WIN32) + set (CPACK_GENERATOR "ZIP") + + if (NSIS_EXECUTABLE) + list (APPEND CPACK_GENERATOR "NSIS") + endif () + set (CPACK_NSIS_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + if (CMAKE_CL_64) + set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") + set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION} (Win64)") + else () + set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") + set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + endif () + # set the install/unistall icon used for the installer itself + # There is a bug in NSI that does not handle full unix paths properly. + #set (CPACK_NSIS_MUI_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") + #set (CPACK_NSIS_MUI_UNIICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") + # set the package header icon for MUI + #set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.bmp") + set (CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}, is a dynamic filter for HDF5") + #set (CPACK_PACKAGE_INSTALL_DIRECTORY "plugins") + set (CPACK_NSIS_CONTACT "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + set (CPACK_NSIS_MODIFY_PATH ON) + + if (WIX_EXECUTABLE) + list (APPEND CPACK_GENERATOR "WIX") + endif () + # WiX variables + set (CPACK_WIX_UNINSTALL "1") + set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + elseif (APPLE) + list (APPEND CPACK_GENERATOR "STGZ") + list (APPEND CPACK_GENERATOR "DragNDrop") + set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) + set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") +# set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/h5jpeg.gif") + + option (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE "Package the ${PLUGIN_PACKAGE_NAME} Library in a Bundle" OFF) + if (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE) + list (APPEND CPACK_GENERATOR "Bundle") + set (CPACK_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + set (CPACK_BUNDLE_LOCATION "/") # make sure CMAKE_INSTALL_PREFIX ends in / + set (CMAKE_INSTALL_PREFIX "/${CPACK_BUNDLE_NAME}.framework/Versions/${CPACK_PACKAGE_VERSION}/${CPACK_PACKAGE_NAME}/") +# set (CPACK_BUNDLE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5JPEG.icns") +# set (CPACK_BUNDLE_PLIST "${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist") + set (CPACK_APPLE_GUI_INFO_STRING "${PLUGIN_PACKAGE_NAME} Plugin Library") + set (CPACK_APPLE_GUI_COPYRIGHT "Copyright © ???. All rights reserved.") + set (CPACK_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") + set (CPACK_APPLE_GUI_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + set (CPACK_APPLE_GUI_VERSION_STRING "${CPACK_PACKAGE_VERSION_STRING}") + set (CPACK_APPLE_GUI_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") + #----------------------------------------------------------------------------- + # Configure the Info.plist file for the install bundle + #----------------------------------------------------------------------------- +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CPack.Info.plist.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist @ONLY +# ) +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/PkgInfo.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo @ONLY +# ) +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/version.plist.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist @ONLY +# ) +# install ( +# FILES ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist +# DESTINATION .. +# ) + endif () + else () + list (APPEND CPACK_GENERATOR "STGZ") + set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") + set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) + + set (CPACK_DEBIAN_PACKAGE_SECTION "Libraries") + set (CPACK_DEBIAN_PACKAGE_MAINTAINER "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + +# list (APPEND CPACK_GENERATOR "RPM") + set (CPACK_RPM_PACKAGE_RELEASE "1") + set (CPACK_RPM_COMPONENT_INSTALL ON) + set (CPACK_RPM_PACKAGE_RELOCATABLE ON) endif () - else () - list (APPEND CPACK_GENERATOR "STGZ") - set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") - set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) - set (CPACK_DEBIAN_PACKAGE_SECTION "Libraries") - set (CPACK_DEBIAN_PACKAGE_MAINTAINER "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};ALL;/") + else () + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};libraries;/") + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};headers;/") + endif () -# list (APPEND CPACK_GENERATOR "RPM") - set (CPACK_RPM_PACKAGE_RELEASE "1") - set (CPACK_RPM_COMPONENT_INSTALL ON) - set (CPACK_RPM_PACKAGE_RELOCATABLE ON) + set (CPACK_ALL_INSTALL_TYPES Full User) + set (CPACK_INSTALL_TYPE_FULL_DISPLAY_NAME "Everything") endif () if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};ALL;/") - else () - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};libraries;/") - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};headers;/") + include (CPack) + + cpack_add_component_group(Runtime) + + cpack_add_component (libraries + DISPLAY_NAME "${PLUGIN_NAME} Libraries" + GROUP Runtime + ) + cpack_add_component_group(hdfdocuments + DISPLAY_NAME "${PLUGIN_NAME} Documents" + GROUP Documents + INSTALL_TYPES Full User + ) endif () - - set (CPACK_ALL_INSTALL_TYPES Full User) - set (CPACK_INSTALL_TYPE_FULL_DISPLAY_NAME "Everything") - - endif () - - if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) - include (CPack) - - cpack_add_component_group(Runtime) - - cpack_add_component (libraries - DISPLAY_NAME "${PLUGIN_NAME} Libraries" - GROUP Runtime - ) - cpack_add_component_group(hdfdocuments - DISPLAY_NAME "${PLUGIN_NAME} Documents" - GROUP Documents - INSTALL_TYPES Full User - ) endif () endmacro () diff --git a/JPEG/config/cmake/grepTest.cmake b/JPEG/config/cmake/grepTest.cmake index 26e295c2..caa818b5 100644 --- a/JPEG/config/cmake/grepTest.cmake +++ b/JPEG/config/cmake/grepTest.cmake @@ -65,5 +65,5 @@ if (TEST_EXPECT) endif () # everything went fine... -message ("Passed: The output of ${TEST_PROGRAM} matched") +message (STATUS "Passed: The output of ${TEST_PROGRAM} matched") diff --git a/JPEG/config/toolchain/aarch64.cmake b/JPEG/config/toolchain/aarch64.cmake index aa84a742..69968336 100644 --- a/JPEG/config/toolchain/aarch64.cmake +++ b/JPEG/config/toolchain/aarch64.cmake @@ -2,7 +2,7 @@ set(TOOLCHAIN_PREFIX aarch64-linux-gnu) set(ANDROID_NDK /opt/android-ndk-linux) set (CMAKE_SYSTEM_NAME Android) set (CMAKE_ANDROID_ARCH_ABI x86_64) -#set (CMAKE_ANDROID_STANDALONE_TOOLCHAIN ${ANDROID_NDK}/build/cmake/andriod.toolchain.cmake) +#set (CMAKE_ANDROID_STANDALONE_TOOLCHAIN ${ANDROID_NDK}/build/cmake/android.toolchain.cmake) set (CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc) set (CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++) #set (CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres) @@ -11,6 +11,7 @@ set (CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX}) set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set (CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) set (CMAKE_CROSSCOMPILING_EMULATOR qemu-aarch64) include_directories(/usr/${TOOLCHAIN_PREFIX}/include) diff --git a/JPEG/config/toolchain/intel.cmake b/JPEG/config/toolchain/intel.cmake new file mode 100644 index 00000000..f8f60b28 --- /dev/null +++ b/JPEG/config/toolchain/intel.cmake @@ -0,0 +1,11 @@ +# Uncomment the following to use cross-compiling +#set(CMAKE_SYSTEM_NAME Linux) + +set(CMAKE_COMPILER_VENDOR "intel") + +set(CMAKE_C_COMPILER icx) +set(CMAKE_CXX_COMPILER icpx) +set(CMAKE_Fortran_COMPILER ifx) + +# the following is used if cross-compiling +set(CMAKE_CROSSCOMPILING_EMULATOR "") diff --git a/LZ4/CMakeLists.txt b/LZ4/CMakeLists.txt index 0b2f9f83..0719c5af 100644 --- a/LZ4/CMakeLists.txt +++ b/LZ4/CMakeLists.txt @@ -60,7 +60,7 @@ set (H5LZ4_PACKAGE_URL "http://www.hdfgroup.org") set (H5LZ4_PACKAGE_BUGREPORT "help@hdfgroup.org") set (H5LZ4_PACKAGE_SOVERSION "${H5LZ4_SOVERS_MAJOR}.${H5LZ4_SOVERS_RELEASE}.${H5LZ4_SOVERS_MINOR}") set (H5LZ4_PACKAGE_SOVERSION_MAJOR "${H5LZ4_SOVERS_MAJOR}") -message("Configuring for lz4 HDF5 Plugin version: " ${H5LZ4_PACKAGE_STRING}) +message(STATUS "Configuring for lz4 HDF5 Plugin version: " ${H5LZ4_PACKAGE_STRING}) #----------------------------------------------------------------------------- # Include some macros for reusable code @@ -156,12 +156,6 @@ endif () add_subdirectory (src) -if (H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") - if (LZ4_FOUND AND LZ4_USE_EXTERNAL) - add_dependencies (${H5LZ4_LIB_TARGET} LZ4) - endif () -endif () - option (BUILD_EXAMPLES "Build h5lz4 Examples" OFF) if (BUILD_EXAMPLES) add_subdirectory (example) diff --git a/LZ4/config/cmake/H5LZ4Macros.cmake b/LZ4/config/cmake/H5LZ4Macros.cmake index 428b05c4..86ad0870 100644 --- a/LZ4/config/cmake/H5LZ4Macros.cmake +++ b/LZ4/config/cmake/H5LZ4Macros.cmake @@ -9,81 +9,48 @@ # If you do not have access to either file, you may request a copy from # help@hdfgroup.org. # + +include (FetchContent) #------------------------------------------------------------------------------- -macro (EXTERNAL_LZ4_LIBRARY compress_type libtype) - if (${libtype} MATCHES "SHARED") - set (BUILD_EXT_SHARED_LIBS "ON") - else () - set (BUILD_EXT_SHARED_LIBS "OFF") - endif () +macro (EXTERNAL_LZ4_LIBRARY compress_type) if (${compress_type} MATCHES "GIT") - EXTERNALPROJECT_ADD (LZ4 + FetchContent_Declare (LZ4 GIT_REPOSITORY ${LZ4_URL} GIT_TAG ${LZ4_BRANCH} - INSTALL_COMMAND "" - CMAKE_ARGS - -DBUILD_SHARED_LIBS:BOOL=${BUILD_EXT_SHARED_LIBS} - -DLZ4_PACKAGE_EXT:STRING=${LZ4_PACKAGE_EXT} - -DLZ4_EXTERNALLY_CONFIGURED:BOOL=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} - -DCMAKE_ANSI_CFLAGS:STRING=${CMAKE_ANSI_CFLAGS} - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DH5PL_USE_GNU_DIRS:STRING=${H5PL_USE_GNU_DIRS} - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} ) elseif (${compress_type} MATCHES "TGZ") - EXTERNALPROJECT_ADD (LZ4 + FetchContent_Declare (LZ4 URL ${LZ4_URL} - URL_MD5 "" - INSTALL_COMMAND "" - CMAKE_ARGS - -DBUILD_SHARED_LIBS:BOOL=${BUILD_EXT_SHARED_LIBS} - -DLZ4_PACKAGE_EXT:STRING=${LZ4_PACKAGE_EXT} - -DLZ4_EXTERNALLY_CONFIGURED:BOOL=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} - -DCMAKE_ANSI_CFLAGS:STRING=${CMAKE_ANSI_CFLAGS} - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DH5PL_USE_GNU_DIRS:STRING=${H5PL_USE_GNU_DIRS} - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} + URL_HASH "" ) endif () - externalproject_get_property (LZ4 BINARY_DIR SOURCE_DIR) + FetchContent_GetProperties(LZ4) + if(NOT lz4_POPULATED) + FetchContent_Populate(LZ4) + + # Store the old value of the 'BUILD_SHARED_LIBS' + set (BUILD_SHARED_LIBS_OLD ${BUILD_SHARED_LIBS}) + # Make subproject to use 'BUILD_SHARED_LIBS=OFF' setting. + set (BUILD_SHARED_LIBS OFF CACHE INTERNAL "Build SHARED libraries") + # Store the old value of the 'BUILD_TESTING' + set (BUILD_TESTING_OLD ${BUILD_TESTING}) + # Make subproject to use 'BUILD_TESTING=OFF' setting. + set (BUILD_TESTING OFF CACHE INTERNAL "Build Unit Testing") - # Create imported target LZ4 - add_library (lz4 ${libtype} IMPORTED) - HDF_IMPORT_SET_LIB_OPTIONS (lz4 "lz4" ${libtype} "") - add_dependencies (lz4 LZ4) + add_subdirectory(${lz4_SOURCE_DIR} ${lz4_BINARY_DIR}) + + # Restore the old value of the parameter + set (BUILD_TESTING ${BUILD_TESTING_OLD} CACHE BOOL "Build Unit Testing" FORCE) + # Restore the old value of the parameter + set (BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_OLD} CACHE BOOL "Type of libraries to build" FORCE) + endif () # include (${BINARY_DIR}/LZ4-targets.cmake) - set (LZ4_LIBRARY "lz4") + set (LZ4_LIBRARY "lz4-static") - set (LZ4_INCLUDE_DIR_GEN "${BINARY_DIR}") - set (LZ4_INCLUDE_DIR "${SOURCE_DIR}/LZ4") + set (LZ4_INCLUDE_DIR_GEN "${lz4_BINARY_DIR}") + set (LZ4_INCLUDE_DIR "${lz4_SOURCE_DIR}/src") set (LZ4_FOUND 1) - set (LZ4_LIBRARIES ${LZ4_LIBRARY}) + set (LZ4_LIBRARIES ${JPEG_LIBRARY}) set (LZ4_INCLUDE_DIRS ${LZ4_INCLUDE_DIR_GEN} ${LZ4_INCLUDE_DIR}) endmacro () - -#------------------------------------------------------------------------------- -macro (PACKAGE_LZ4_LIBRARY compress_type) - add_custom_target (LZ4-GenHeader-Copy ALL - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${LZ4_INCLUDE_DIR}/lz4.h ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ - COMMENT "Copying ${LZ4_INCLUDE_DIR}/lz4.h to ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/" - ) - set (EXTERNAL_HEADER_LIST ${EXTERNAL_HEADER_LIST} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/lz4.h) - if (${compress_type} MATCHES "GIT" OR ${compress_type} MATCHES "TGZ") - add_dependencies (LZ4-GenHeader-Copy LZ4) - endif () -endmacro () diff --git a/LZ4/config/cmake/HDFMacros.cmake b/LZ4/config/cmake/HDFMacros.cmake index 5e63ec23..0cf9f192 100644 --- a/LZ4/config/cmake/HDFMacros.cmake +++ b/LZ4/config/cmake/HDFMacros.cmake @@ -490,6 +490,8 @@ macro (HDF_DIR_PATHS package_prefix) set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) endif () endif () + + include (FetchContent) endmacro () macro (ADD_H5_FLAGS h5_flag_var infile) diff --git a/LZ4/config/cmake/HDFPluginMacros.cmake b/LZ4/config/cmake/HDFPluginMacros.cmake index 5968be3c..dac8c97b 100644 --- a/LZ4/config/cmake/HDFPluginMacros.cmake +++ b/LZ4/config/cmake/HDFPluginMacros.cmake @@ -67,7 +67,7 @@ macro (BASIC_SETTINGS varname) if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR) set (${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR ${CMAKE_INSTALL_DOCDIR}) endif () - message(STATUS "GNU: ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR}") + message(STATUS "GNU: ${${PLUGIN_PACKAGE_NAME}_INSTALL_LIB_DIR}") endif () if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_BIN_DIR) @@ -100,7 +100,7 @@ macro (BASIC_SETTINGS varname) if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR) set (${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR}) endif () - message(STATUS "Final: ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR}") + message(STATUS "Final: ${${PLUGIN_PACKAGE_NAME}_INSTALL_LIB_DIR}") #----------------------------------------------------------------------------- # Setup output Directories @@ -115,6 +115,15 @@ macro (BASIC_SETTINGS varname) set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all static libraries." ) + get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) + if(_isMultiConfig) + set (CMAKE_TEST_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}) + set (CMAKE_PDB_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all pdb files." + ) + else () + set (CMAKE_TEST_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) + endif () else () # if we are externally configured, but the project uses old cmake scripts # this may not be set @@ -304,7 +313,7 @@ macro (HDF5_SUPPORT link_hdf) set (H5PL_HDF5_HAVE_H5PUBCONF_H 1) set (H5PL_HDF5_HAVE_HDF5 1) set (H5PL_HDF5_HEADER "h5pubconf.h") - message (STATUS "HDF5 found: INC=${HDF5_INCLUDE_DIRS} TOOLS=${HDF5_TOOLS_DIR}") + message (STATUS "HDF5-${HDF5_VERSION_STRING} found: INC=${HDF5_INCLUDE_DIRS} TOOLS=${HDF5_TOOLS_DIR}") else () message (FATAL_ERROR " HDF5 is Required for plugin library") endif () @@ -330,227 +339,224 @@ macro (INSTALL_SUPPORT varname) string(TOUPPER ${varname} PLUGIN_PACKAGE_NAME) string(TOLOWER ${varname} PLUGIN_NAME) - #----------------------------------------------------------------------------- - # Set variables needed for installation - #----------------------------------------------------------------------------- - set (${PLUGIN_PACKAGE_NAME}_VERSION_STRING ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}) - set (${PLUGIN_PACKAGE_NAME}_VERSION_MAJOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}) - set (${PLUGIN_PACKAGE_NAME}_VERSION_MINOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}) - - #----------------------------------------------------------------------------- - # Configure the H5PL_Examples.cmake file and the examples - #----------------------------------------------------------------------------- - configure_file ( - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5PL_Examples.cmake.in - ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake @ONLY - ) - install ( - FILES - ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CTestScript.cmake - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/HDFoptions.cmake + if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) + #----------------------------------------------------------------------------- + # Set variables needed for installation + #----------------------------------------------------------------------------- + set (${PLUGIN_PACKAGE_NAME}_VERSION_STRING ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}) + set (${PLUGIN_PACKAGE_NAME}_VERSION_MAJOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}) + set (${PLUGIN_PACKAGE_NAME}_VERSION_MINOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}) + + #----------------------------------------------------------------------------- + # Configure the H5PL_Examples.cmake file and the examples + #----------------------------------------------------------------------------- + if (${PLUGIN_PACKAGE_NAME}_BUILD_TESTING) + configure_file ( + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5PL_Examples.cmake.in + ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake @ONLY + ) + install ( + FILES + ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CTestScript.cmake + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/HDFoptions.cmake DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} - COMPONENT hdfdocuments - ) - execute_process( - COMMAND ${CMAKE_COMMAND} -E copy_directory ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/binex ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples - ) - install ( - DIRECTORY ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples - DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} - USE_SOURCE_PERMISSIONS - COMPONENT hdfdocuments - ) + COMPONENT hdfdocuments + ) + execute_process( + COMMAND ${CMAKE_COMMAND} -E copy_directory ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/binex ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples + ) + install ( + DIRECTORY ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples + DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} + USE_SOURCE_PERMISSIONS + COMPONENT hdfdocuments + ) + endif () - #----------------------------------------------------------------------------- - # Configure the README.txt file for the binary package - #----------------------------------------------------------------------------- - PLUGIN_README_PROPERTIES (${PLUGIN_PACKAGE_NAME}) + #----------------------------------------------------------------------------- + # Configure the README.txt file for the binary package + #----------------------------------------------------------------------------- + PLUGIN_README_PROPERTIES (${PLUGIN_PACKAGE_NAME}) - #----------------------------------------------------------------------------- - # Check for Installation Utilities - #----------------------------------------------------------------------------- - if (WIN32) - set (PF_ENV_EXT "(x86)") - find_program (NSIS_EXECUTABLE NSIS.exe PATHS "$ENV{ProgramFiles}\\NSIS" "$ENV{ProgramFiles${PF_ENV_EXT}}\\NSIS") - if(NOT CPACK_WIX_ROOT) - file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT) - endif() - find_program (WIX_EXECUTABLE candle PATHS "${CPACK_WIX_ROOT}/bin") - endif () - - #----------------------------------------------------------------------------- - # Set the cpack variables - #----------------------------------------------------------------------------- - if (NOT ${PLUGIN_PACKAGE_NAME}_EXTERNALLY_CONFIGURED) - set (CPACK_PACKAGE_VENDOR "HDF_Group") - set (CPACK_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}") - if (CDASH_LOCAL) - set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}") - else () - set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_STRING}") + #----------------------------------------------------------------------------- + # Configure the COPYING.txt file for the windows binary package + #----------------------------------------------------------------------------- + if (WIN32) + configure_file (${CMAKE_SOURCE_DIR}/COPYING ${CMAKE_BINARY_DIR}/COPYING.txt @ONLY) endif () - set (CPACK_PACKAGE_VERSION_MAJOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}") - set (CPACK_PACKAGE_VERSION_MINOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}") - set (CPACK_PACKAGE_VERSION_PATCH "") - #set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") - set (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - set (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - set (CPACK_PACKAGE_RELOCATABLE TRUE) - set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PLUGIN_NAME} Installation") - set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSION}") - - set (CPACK_GENERATOR "TGZ") + + #----------------------------------------------------------------------------- + # Add Document File(s) to CMake Install + #----------------------------------------------------------------------------- + install ( + FILES + ${${PLUGIN_PACKAGE_NAME}_SOURCE_DIR}/docs/PluginLibraries.txt + DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR} + COMPONENT hdfdocuments + ) + + #----------------------------------------------------------------------------- + # Check for Installation Utilities + #----------------------------------------------------------------------------- if (WIN32) - set (CPACK_GENERATOR "ZIP") + set (PF_ENV_EXT "(x86)") + find_program (NSIS_EXECUTABLE NSIS.exe PATHS "$ENV{ProgramFiles}\\NSIS" "$ENV{ProgramFiles${PF_ENV_EXT}}\\NSIS") + if(NOT CPACK_WIX_ROOT) + file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT) + endif() + find_program (WIX_EXECUTABLE candle PATHS "${CPACK_WIX_ROOT}/bin") + endif () - if (NSIS_EXECUTABLE) - list (APPEND CPACK_GENERATOR "NSIS") - endif () - # Installers for 32- vs. 64-bit CMake: - # - Root install directory (displayed to end user at installer-run time) - # - "NSIS package/display name" (text used in the installer GUI) - # - Registry key used to store info about the installation - set (CPACK_NSIS_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - if (CMAKE_CL_64) - set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") - set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION} (Win64)") + if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + if (CMAKE_HOST_UNIX) + set (CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/HDF_Group/${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}/${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}" + CACHE PATH "Install path prefix, prepended onto install directories." FORCE + ) else () - set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") - set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + GetDefaultWindowsPrefixBase(CMAKE_GENERIC_PROGRAM_FILES) + set (CMAKE_INSTALL_PREFIX + "${CMAKE_GENERIC_PROGRAM_FILES}/HDF_Group/${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}/${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}" + CACHE PATH "Install path prefix, prepended onto install directories." FORCE + ) + set (CMAKE_GENERIC_PROGRAM_FILES) endif () - # set the install/unistall icon used for the installer itself - # There is a bug in NSI that does not handle full unix paths properly. - #set (CPACK_NSIS_MUI_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") - #set (CPACK_NSIS_MUI_UNIICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") - # set the package header icon for MUI - #set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.bmp") - set (CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}, is a dynamic filter for HDF5") - #set (CPACK_PACKAGE_INSTALL_DIRECTORY "plugins") - set (CPACK_NSIS_CONTACT "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") - set (CPACK_NSIS_MODIFY_PATH ON) - - if (WIX_EXECUTABLE) - list (APPEND CPACK_GENERATOR "WIX") + endif () + + #----------------------------------------------------------------------------- + # Set the cpack variables + #----------------------------------------------------------------------------- + if (NOT ${PLUGIN_PACKAGE_NAME}_EXTERNALLY_CONFIGURED) + set (CPACK_PACKAGE_VENDOR "HDF_Group") + set (CPACK_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}") + if (CDASH_LOCAL) + set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}") + else () + set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_STRING}") endif () - #WiX variables - set (CPACK_WIX_UNINSTALL "1") -# .. variable:: CPACK_WIX_LICENSE_RTF -# RTF License File -# -# If CPACK_RESOURCE_FILE_LICENSE has an .rtf extension it is used as-is. -# -# If CPACK_RESOURCE_FILE_LICENSE has an .txt extension it is implicitly -# converted to RTF by the WiX Generator. -# The expected encoding of the .txt file is UTF-8. -# -# With CPACK_WIX_LICENSE_RTF you can override the license file used by the -# WiX Generator in case CPACK_RESOURCE_FILE_LICENSE is in an unsupported -# format or the .txt -> .rtf conversion does not work as expected. - set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") -# .. variable:: CPACK_WIX_PRODUCT_ICON -# The Icon shown next to the program name in Add/Remove programs. -# set (CPACK_WIX_PRODUCT_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") -# -# .. variable:: CPACK_WIX_UI_BANNER -# -# The bitmap will appear at the top of all installer pages other than the -# welcome and completion dialogs. -# -# If set, this image will replace the default banner image. -# -# This image must be 493 by 58 pixels. -# -# .. variable:: CPACK_WIX_UI_DIALOG -# -# Background bitmap used on the welcome and completion dialogs. -# -# If this variable is set, the installer will replace the default dialog -# image. -# -# This image must be 493 by 312 pixels. -# - elseif (APPLE) - list (APPEND CPACK_GENERATOR "STGZ") - list (APPEND CPACK_GENERATOR "DragNDrop") - set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) - set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") -# set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/h5lz4.gif") - - option (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE "Package the ${PLUGIN_PACKAGE_NAME} Library in a Bundle" OFF) - if (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE) - list (APPEND CPACK_GENERATOR "Bundle") - set (CPACK_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - set (CPACK_BUNDLE_LOCATION "/") # make sure CMAKE_INSTALL_PREFIX ends in / - set (CMAKE_INSTALL_PREFIX "/${CPACK_BUNDLE_NAME}.framework/Versions/${CPACK_PACKAGE_VERSION}/${CPACK_PACKAGE_NAME}/") -# set (CPACK_BUNDLE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5LZ4.icns") -# set (CPACK_BUNDLE_PLIST "${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist") - set (CPACK_APPLE_GUI_INFO_STRING "${PLUGIN_PACKAGE_NAME} Plugin Library") - set (CPACK_APPLE_GUI_COPYRIGHT "Copyright © ???. All rights reserved.") - set (CPACK_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") - set (CPACK_APPLE_GUI_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - set (CPACK_APPLE_GUI_VERSION_STRING "${CPACK_PACKAGE_VERSION_STRING}") - set (CPACK_APPLE_GUI_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") - #----------------------------------------------------------------------------- - # Configure the Info.plist file for the install bundle - #----------------------------------------------------------------------------- -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CPack.Info.plist.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist @ONLY -# ) -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/PkgInfo.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo @ONLY -# ) -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/version.plist.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist @ONLY -# ) -# install ( -# FILES ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist -# DESTINATION .. -# ) + set (CPACK_PACKAGE_VERSION_MAJOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}") + set (CPACK_PACKAGE_VERSION_MINOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}") + set (CPACK_PACKAGE_VERSION_PATCH "") + #set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") + set (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + set (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + set (CPACK_PACKAGE_RELOCATABLE TRUE) + set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PLUGIN_NAME} Installation") + set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSION}") + + set (CPACK_GENERATOR "TGZ") + if (WIN32) + set (CPACK_GENERATOR "ZIP") + + if (NSIS_EXECUTABLE) + list (APPEND CPACK_GENERATOR "NSIS") + endif () + set (CPACK_NSIS_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + if (CMAKE_CL_64) + set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") + set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION} (Win64)") + else () + set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") + set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + endif () + # set the install/unistall icon used for the installer itself + # There is a bug in NSI that does not handle full unix paths properly. + #set (CPACK_NSIS_MUI_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") + #set (CPACK_NSIS_MUI_UNIICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") + # set the package header icon for MUI + #set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.bmp") + set (CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}, is a dynamic filter for HDF5") + #set (CPACK_PACKAGE_INSTALL_DIRECTORY "plugins") + set (CPACK_NSIS_CONTACT "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + set (CPACK_NSIS_MODIFY_PATH ON) + + if (WIX_EXECUTABLE) + list (APPEND CPACK_GENERATOR "WIX") + endif () + # WiX variables + set (CPACK_WIX_UNINSTALL "1") + set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + elseif (APPLE) + list (APPEND CPACK_GENERATOR "STGZ") + list (APPEND CPACK_GENERATOR "DragNDrop") + set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) + set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") +# set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/h5lz4.gif") + + option (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE "Package the ${PLUGIN_PACKAGE_NAME} Library in a Bundle" OFF) + if (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE) + list (APPEND CPACK_GENERATOR "Bundle") + set (CPACK_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + set (CPACK_BUNDLE_LOCATION "/") # make sure CMAKE_INSTALL_PREFIX ends in / + set (CMAKE_INSTALL_PREFIX "/${CPACK_BUNDLE_NAME}.framework/Versions/${CPACK_PACKAGE_VERSION}/${CPACK_PACKAGE_NAME}/") +# set (CPACK_BUNDLE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5LZ4.icns") +# set (CPACK_BUNDLE_PLIST "${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist") + set (CPACK_APPLE_GUI_INFO_STRING "${PLUGIN_PACKAGE_NAME} Plugin Library") + set (CPACK_APPLE_GUI_COPYRIGHT "Copyright © ???. All rights reserved.") + set (CPACK_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") + set (CPACK_APPLE_GUI_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + set (CPACK_APPLE_GUI_VERSION_STRING "${CPACK_PACKAGE_VERSION_STRING}") + set (CPACK_APPLE_GUI_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") + #----------------------------------------------------------------------------- + # Configure the Info.plist file for the install bundle + #----------------------------------------------------------------------------- +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CPack.Info.plist.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist @ONLY +# ) +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/PkgInfo.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo @ONLY +# ) +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/version.plist.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist @ONLY +# ) +# install ( +# FILES ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist +# DESTINATION .. +# ) + endif () + else () + list (APPEND CPACK_GENERATOR "STGZ") + set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") + set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) + + set (CPACK_DEBIAN_PACKAGE_SECTION "Libraries") + set (CPACK_DEBIAN_PACKAGE_MAINTAINER "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + +# list (APPEND CPACK_GENERATOR "RPM") + set (CPACK_RPM_PACKAGE_RELEASE "1") + set (CPACK_RPM_COMPONENT_INSTALL ON) + set (CPACK_RPM_PACKAGE_RELOCATABLE ON) endif () - else () - list (APPEND CPACK_GENERATOR "STGZ") - set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") - set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) - set (CPACK_DEBIAN_PACKAGE_SECTION "Libraries") - set (CPACK_DEBIAN_PACKAGE_MAINTAINER "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};ALL;/") + else () + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};libraries;/") + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};headers;/") + endif () -# list (APPEND CPACK_GENERATOR "RPM") - set (CPACK_RPM_PACKAGE_RELEASE "1") - set (CPACK_RPM_COMPONENT_INSTALL ON) - set (CPACK_RPM_PACKAGE_RELOCATABLE ON) + set (CPACK_ALL_INSTALL_TYPES Full User) + set (CPACK_INSTALL_TYPE_FULL_DISPLAY_NAME "Everything") endif () if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};ALL;/") - else () - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};libraries;/") - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};headers;/") + include (CPack) + + cpack_add_component_group(Runtime) + + cpack_add_component (libraries + DISPLAY_NAME "${PLUGIN_NAME} Libraries" + GROUP Runtime + ) + cpack_add_component_group(hdfdocuments + DISPLAY_NAME "${PLUGIN_NAME} Documents" + GROUP Documents + INSTALL_TYPES Full User + ) endif () - - set (CPACK_ALL_INSTALL_TYPES Full User) - set (CPACK_INSTALL_TYPE_FULL_DISPLAY_NAME "Everything") - - endif () - - if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) - include (CPack) - - cpack_add_component_group(Runtime) - - cpack_add_component (libraries - DISPLAY_NAME "${PLUGIN_NAME} Libraries" - GROUP Runtime - ) - cpack_add_component_group(hdfdocuments - DISPLAY_NAME "${PLUGIN_NAME} Documents" - GROUP Documents - INSTALL_TYPES Full User - ) endif () endmacro () diff --git a/LZ4/config/cmake/grepTest.cmake b/LZ4/config/cmake/grepTest.cmake index 26e295c2..caa818b5 100755 --- a/LZ4/config/cmake/grepTest.cmake +++ b/LZ4/config/cmake/grepTest.cmake @@ -65,5 +65,5 @@ if (TEST_EXPECT) endif () # everything went fine... -message ("Passed: The output of ${TEST_PROGRAM} matched") +message (STATUS "Passed: The output of ${TEST_PROGRAM} matched") diff --git a/LZ4/config/toolchain/aarch64.cmake b/LZ4/config/toolchain/aarch64.cmake index aa84a742..69968336 100644 --- a/LZ4/config/toolchain/aarch64.cmake +++ b/LZ4/config/toolchain/aarch64.cmake @@ -2,7 +2,7 @@ set(TOOLCHAIN_PREFIX aarch64-linux-gnu) set(ANDROID_NDK /opt/android-ndk-linux) set (CMAKE_SYSTEM_NAME Android) set (CMAKE_ANDROID_ARCH_ABI x86_64) -#set (CMAKE_ANDROID_STANDALONE_TOOLCHAIN ${ANDROID_NDK}/build/cmake/andriod.toolchain.cmake) +#set (CMAKE_ANDROID_STANDALONE_TOOLCHAIN ${ANDROID_NDK}/build/cmake/android.toolchain.cmake) set (CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc) set (CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++) #set (CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres) @@ -11,6 +11,7 @@ set (CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX}) set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set (CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) set (CMAKE_CROSSCOMPILING_EMULATOR qemu-aarch64) include_directories(/usr/${TOOLCHAIN_PREFIX}/include) diff --git a/LZ4/config/toolchain/intel.cmake b/LZ4/config/toolchain/intel.cmake new file mode 100644 index 00000000..f8f60b28 --- /dev/null +++ b/LZ4/config/toolchain/intel.cmake @@ -0,0 +1,11 @@ +# Uncomment the following to use cross-compiling +#set(CMAKE_SYSTEM_NAME Linux) + +set(CMAKE_COMPILER_VENDOR "intel") + +set(CMAKE_C_COMPILER icx) +set(CMAKE_CXX_COMPILER icpx) +set(CMAKE_Fortran_COMPILER ifx) + +# the following is used if cross-compiling +set(CMAKE_CROSSCOMPILING_EMULATOR "") diff --git a/LZF/CMakeLists.txt b/LZF/CMakeLists.txt index 2727741f..c7453db7 100644 --- a/LZF/CMakeLists.txt +++ b/LZF/CMakeLists.txt @@ -60,7 +60,7 @@ set (H5LZF_PACKAGE_URL "http://www.hdfgroup.org") set (H5LZF_PACKAGE_BUGREPORT "help@hdfgroup.org") set (H5LZF_PACKAGE_SOVERSION "${H5LZF_SOVERS_MAJOR}.${H5LZF_SOVERS_RELEASE}.${H5LZF_SOVERS_MINOR}") set (H5LZF_PACKAGE_SOVERSION_MAJOR "${H5LZF_SOVERS_MAJOR}") -message("Configuring for lzf HDF5 Plugin version: " ${H5LZF_PACKAGE_STRING}) +message(STATUS "Configuring for lzf HDF5 Plugin version: " ${H5LZF_PACKAGE_STRING}) #----------------------------------------------------------------------------- # Include some macros for reusable code @@ -121,7 +121,7 @@ if (NOT H5_LZF_HEADER) set (LZF_INCLUDE_DIRS ${LZF_INCLUDE_DIRS} ${LZF_INCLUDE_DIR}) else () if (H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") - EXTERNAL_LZF_LIBRARY (${H5PL_ALLOW_EXTERNAL_SUPPORT} STATIC) + EXTERNAL_LZF_LIBRARY (${H5PL_ALLOW_EXTERNAL_SUPPORT}) set (H5_HAVE_LZF_H 1) set (H5_HAVE_LZF 1) message (STATUS "Filter LZF is built") @@ -135,10 +135,6 @@ else () endif () message (STATUS "lzf found: INC=${LZF_INCLUDE_DIR} TOOLS=${LZF_LIBRARIES}") set (LINK_LIBS ${LINK_LIBS} ${LZF_LIBRARIES}) - -if (LZF_FOUND) - PACKAGE_LZF_LIBRARY (${H5PL_ALLOW_EXTERNAL_SUPPORT}) -endif () #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- @@ -156,12 +152,6 @@ endif () add_subdirectory (src) -if (H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") - if (LZF_FOUND AND LZF_USE_EXTERNAL) - add_dependencies (${H5LZF_LIB_TARGET} LZF) - endif () -endif () - option (BUILD_EXAMPLES "Build h5lzf Examples" OFF) if (BUILD_EXAMPLES) add_subdirectory (example) diff --git a/LZF/config/cmake/H5LZFMacros.cmake b/LZF/config/cmake/H5LZFMacros.cmake index 353b8633..c6d9b8aa 100644 --- a/LZF/config/cmake/H5LZFMacros.cmake +++ b/LZF/config/cmake/H5LZFMacros.cmake @@ -9,75 +9,48 @@ # If you do not have access to either file, you may request a copy from # help@hdfgroup.org. # + +include (FetchContent) #------------------------------------------------------------------------------- -macro (EXTERNAL_LZF_LIBRARY compress_type libtype) - if (${libtype} MATCHES "SHARED") - set (BUILD_EXT_SHARED_LIBS "ON") - else () - set (BUILD_EXT_SHARED_LIBS "OFF") - endif () +macro (EXTERNAL_LZF_LIBRARY compress_type) if (${compress_type} MATCHES "GIT") - EXTERNALPROJECT_ADD (LZF + FetchContent_Declare (LZF GIT_REPOSITORY ${LZF_URL} GIT_TAG ${LZF_BRANCH} - INSTALL_COMMAND "" - CMAKE_ARGS - -DBUILD_SHARED_LIBS:BOOL=${BUILD_EXT_SHARED_LIBS} - -DLZF_PACKAGE_EXT:STRING=${LZF_PACKAGE_EXT} - -DLZF_EXTERNALLY_CONFIGURED:BOOL=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} - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} ) elseif (${compress_type} MATCHES "TGZ") - EXTERNALPROJECT_ADD (LZF + FetchContent_Declare (LZF URL ${LZF_URL} - URL_MD5 "" - INSTALL_COMMAND "" - CMAKE_ARGS - -DBUILD_SHARED_LIBS:BOOL=${BUILD_EXT_SHARED_LIBS} - -DLZF_PACKAGE_EXT:STRING=${LZF_PACKAGE_EXT} - -DLZF_EXTERNALLY_CONFIGURED:BOOL=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} - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} + URL_HASH "" ) endif () - externalproject_get_property (LZF BINARY_DIR SOURCE_DIR) + FetchContent_GetProperties (LZF) + if (NOT lzf_POPULATED) + FetchContent_Populate (LZF) + + # Store the old value of the 'BUILD_SHARED_LIBS' + set (BUILD_SHARED_LIBS_OLD ${BUILD_SHARED_LIBS}) + # Make subproject to use 'BUILD_SHARED_LIBS=OFF' setting. + set (BUILD_SHARED_LIBS OFF CACHE INTERNAL "Build SHARED libraries") + # Store the old value of the 'BUILD_TESTING' + set (BUILD_TESTING_OLD ${BUILD_TESTING}) + # Make subproject to use 'BUILD_TESTING=OFF' setting. + set (BUILD_TESTING OFF CACHE INTERNAL "Build Unit Testing") - # Create imported target LZF - add_library (lzf ${libtype} IMPORTED) - HDF_IMPORT_SET_LIB_OPTIONS (lzf "lzf" ${libtype} "") - add_dependencies (lzf LZF) + add_subdirectory (${lzf_SOURCE_DIR} ${lzf_BINARY_DIR}) + + # Restore the old value of the parameter + set (BUILD_TESTING ${BUILD_TESTING_OLD} CACHE BOOL "Build Unit Testing" FORCE) + # Restore the old value of the parameter + set (BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_OLD} CACHE BOOL "Type of libraries to build" FORCE) + endif () # include (${BINARY_DIR}/LZF-targets.cmake) - set (LZF_LIBRARY "lzf") + set (LZF_LIBRARY "lzf-static") - set (LZF_INCLUDE_DIR_GEN "${BINARY_DIR}") - set (LZF_INCLUDE_DIR "${SOURCE_DIR}") + set (LZF_INCLUDE_DIR_GEN "${lzf_BINARY_DIR}") + set (LZF_INCLUDE_DIR "${lzf_SOURCE_DIR}") set (LZF_FOUND 1) set (LZF_LIBRARIES ${LZF_LIBRARY}) set (LZF_INCLUDE_DIRS ${LZF_INCLUDE_DIR_GEN} ${LZF_INCLUDE_DIR}) endmacro () - -#------------------------------------------------------------------------------- -macro (PACKAGE_LZF_LIBRARY compress_type) - add_custom_target (LZF-GenHeader-Copy ALL - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${LZF_INCLUDE_DIR}/lzf.h ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ - COMMENT "Copying ${LZF_INCLUDE_DIR}/lzf.h to ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/" - ) - set (EXTERNAL_HEADER_LIST ${EXTERNAL_HEADER_LIST} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/lzf.h) - if (${compress_type} MATCHES "GIT" OR ${compress_type} MATCHES "TGZ") - add_dependencies (LZF-GenHeader-Copy LZF) - endif () -endmacro () diff --git a/LZF/config/cmake/HDFMacros.cmake b/LZF/config/cmake/HDFMacros.cmake index 5e63ec23..0cf9f192 100644 --- a/LZF/config/cmake/HDFMacros.cmake +++ b/LZF/config/cmake/HDFMacros.cmake @@ -490,6 +490,8 @@ macro (HDF_DIR_PATHS package_prefix) set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) endif () endif () + + include (FetchContent) endmacro () macro (ADD_H5_FLAGS h5_flag_var infile) diff --git a/LZF/config/cmake/HDFPluginMacros.cmake b/LZF/config/cmake/HDFPluginMacros.cmake index 9bee80f6..db4e9c5d 100644 --- a/LZF/config/cmake/HDFPluginMacros.cmake +++ b/LZF/config/cmake/HDFPluginMacros.cmake @@ -67,7 +67,7 @@ macro (BASIC_SETTINGS varname) if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR) set (${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR ${CMAKE_INSTALL_DOCDIR}) endif () - message(STATUS "GNU: ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR}") + message(STATUS "GNU: ${${PLUGIN_PACKAGE_NAME}_INSTALL_LIB_DIR}") endif () if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_BIN_DIR) @@ -100,7 +100,7 @@ macro (BASIC_SETTINGS varname) if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR) set (${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR}) endif () - message(STATUS "Final: ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR}") + message(STATUS "Final: ${${PLUGIN_PACKAGE_NAME}_INSTALL_LIB_DIR}") #----------------------------------------------------------------------------- # Setup output Directories @@ -115,6 +115,15 @@ macro (BASIC_SETTINGS varname) set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all static libraries." ) + get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) + if(_isMultiConfig) + set (CMAKE_TEST_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}) + set (CMAKE_PDB_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all pdb files." + ) + else () + set (CMAKE_TEST_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) + endif () else () # if we are externally configured, but the project uses old cmake scripts # this may not be set @@ -304,7 +313,7 @@ macro (HDF5_SUPPORT link_hdf) set (H5PL_HDF5_HAVE_H5PUBCONF_H 1) set (H5PL_HDF5_HAVE_HDF5 1) set (H5PL_HDF5_HEADER "h5pubconf.h") - message (STATUS "HDF5 found: INC=${HDF5_INCLUDE_DIRS} TOOLS=${HDF5_TOOLS_DIR}") + message (STATUS "HDF5-${HDF5_VERSION_STRING} found: INC=${HDF5_INCLUDE_DIRS} TOOLS=${HDF5_TOOLS_DIR}") else () message (FATAL_ERROR " HDF5 is Required for plugin library") endif () @@ -330,227 +339,224 @@ macro (INSTALL_SUPPORT varname) string(TOUPPER ${varname} PLUGIN_PACKAGE_NAME) string(TOLOWER ${varname} PLUGIN_NAME) - #----------------------------------------------------------------------------- - # Set variables needed for installation - #----------------------------------------------------------------------------- - set (${PLUGIN_PACKAGE_NAME}_VERSION_STRING ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}) - set (${PLUGIN_PACKAGE_NAME}_VERSION_MAJOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}) - set (${PLUGIN_PACKAGE_NAME}_VERSION_MINOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}) - - #----------------------------------------------------------------------------- - # Configure the H5PL_Examples.cmake file and the examples - #----------------------------------------------------------------------------- - configure_file ( - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5PL_Examples.cmake.in - ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake @ONLY - ) - install ( - FILES - ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CTestScript.cmake - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/HDFoptions.cmake + if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) + #----------------------------------------------------------------------------- + # Set variables needed for installation + #----------------------------------------------------------------------------- + set (${PLUGIN_PACKAGE_NAME}_VERSION_STRING ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}) + set (${PLUGIN_PACKAGE_NAME}_VERSION_MAJOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}) + set (${PLUGIN_PACKAGE_NAME}_VERSION_MINOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}) + + #----------------------------------------------------------------------------- + # Configure the H5PL_Examples.cmake file and the examples + #----------------------------------------------------------------------------- + if (${PLUGIN_PACKAGE_NAME}_BUILD_TESTING) + configure_file ( + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5PL_Examples.cmake.in + ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake @ONLY + ) + install ( + FILES + ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CTestScript.cmake + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/HDFoptions.cmake DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} - COMPONENT hdfdocuments - ) - execute_process( - COMMAND ${CMAKE_COMMAND} -E copy_directory ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/binex ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples - ) - install ( - DIRECTORY ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples - DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} - USE_SOURCE_PERMISSIONS - COMPONENT hdfdocuments - ) + COMPONENT hdfdocuments + ) + execute_process( + COMMAND ${CMAKE_COMMAND} -E copy_directory ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/binex ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples + ) + install ( + DIRECTORY ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples + DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} + USE_SOURCE_PERMISSIONS + COMPONENT hdfdocuments + ) + endif () - #----------------------------------------------------------------------------- - # Configure the README.txt file for the binary package - #----------------------------------------------------------------------------- - PLUGIN_README_PROPERTIES (${PLUGIN_PACKAGE_NAME}) + #----------------------------------------------------------------------------- + # Configure the README.txt file for the binary package + #----------------------------------------------------------------------------- + PLUGIN_README_PROPERTIES (${PLUGIN_PACKAGE_NAME}) - #----------------------------------------------------------------------------- - # Check for Installation Utilities - #----------------------------------------------------------------------------- - if (WIN32) - set (PF_ENV_EXT "(x86)") - find_program (NSIS_EXECUTABLE NSIS.exe PATHS "$ENV{ProgramFiles}\\NSIS" "$ENV{ProgramFiles${PF_ENV_EXT}}\\NSIS") - if(NOT CPACK_WIX_ROOT) - file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT) - endif() - find_program (WIX_EXECUTABLE candle PATHS "${CPACK_WIX_ROOT}/bin") - endif () - - #----------------------------------------------------------------------------- - # Set the cpack variables - #----------------------------------------------------------------------------- - if (NOT ${PLUGIN_PACKAGE_NAME}_EXTERNALLY_CONFIGURED) - set (CPACK_PACKAGE_VENDOR "HDF_Group") - set (CPACK_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}") - if (CDASH_LOCAL) - set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}") - else () - set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_STRING}") + #----------------------------------------------------------------------------- + # Configure the COPYING.txt file for the windows binary package + #----------------------------------------------------------------------------- + if (WIN32) + configure_file (${CMAKE_SOURCE_DIR}/COPYING ${CMAKE_BINARY_DIR}/COPYING.txt @ONLY) endif () - set (CPACK_PACKAGE_VERSION_MAJOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}") - set (CPACK_PACKAGE_VERSION_MINOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}") - set (CPACK_PACKAGE_VERSION_PATCH "") - #set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") - set (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - set (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - set (CPACK_PACKAGE_RELOCATABLE TRUE) - set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PLUGIN_NAME} Installation") - set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSION}") - - set (CPACK_GENERATOR "TGZ") + + #----------------------------------------------------------------------------- + # Add Document File(s) to CMake Install + #----------------------------------------------------------------------------- + install ( + FILES + ${${PLUGIN_PACKAGE_NAME}_SOURCE_DIR}/docs/PluginLibraries.txt + DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR} + COMPONENT hdfdocuments + ) + + #----------------------------------------------------------------------------- + # Check for Installation Utilities + #----------------------------------------------------------------------------- if (WIN32) - set (CPACK_GENERATOR "ZIP") + set (PF_ENV_EXT "(x86)") + find_program (NSIS_EXECUTABLE NSIS.exe PATHS "$ENV{ProgramFiles}\\NSIS" "$ENV{ProgramFiles${PF_ENV_EXT}}\\NSIS") + if(NOT CPACK_WIX_ROOT) + file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT) + endif() + find_program (WIX_EXECUTABLE candle PATHS "${CPACK_WIX_ROOT}/bin") + endif () - if (NSIS_EXECUTABLE) - list (APPEND CPACK_GENERATOR "NSIS") - endif () - # Installers for 32- vs. 64-bit CMake: - # - Root install directory (displayed to end user at installer-run time) - # - "NSIS package/display name" (text used in the installer GUI) - # - Registry key used to store info about the installation - set (CPACK_NSIS_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - if (CMAKE_CL_64) - set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") - set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION} (Win64)") + if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + if (CMAKE_HOST_UNIX) + set (CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/HDF_Group/${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}/${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}" + CACHE PATH "Install path prefix, prepended onto install directories." FORCE + ) else () - set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") - set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + GetDefaultWindowsPrefixBase(CMAKE_GENERIC_PROGRAM_FILES) + set (CMAKE_INSTALL_PREFIX + "${CMAKE_GENERIC_PROGRAM_FILES}/HDF_Group/${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}/${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}" + CACHE PATH "Install path prefix, prepended onto install directories." FORCE + ) + set (CMAKE_GENERIC_PROGRAM_FILES) endif () - # set the install/unistall icon used for the installer itself - # There is a bug in NSI that does not handle full unix paths properly. - #set (CPACK_NSIS_MUI_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") - #set (CPACK_NSIS_MUI_UNIICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") - # set the package header icon for MUI - #set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.bmp") - set (CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}, is a dynamic filter for HDF5") - #set (CPACK_PACKAGE_INSTALL_DIRECTORY "plugins") - set (CPACK_NSIS_CONTACT "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") - set (CPACK_NSIS_MODIFY_PATH ON) - - if (WIX_EXECUTABLE) - list (APPEND CPACK_GENERATOR "WIX") + endif () + + #----------------------------------------------------------------------------- + # Set the cpack variables + #----------------------------------------------------------------------------- + if (NOT ${PLUGIN_PACKAGE_NAME}_EXTERNALLY_CONFIGURED) + set (CPACK_PACKAGE_VENDOR "HDF_Group") + set (CPACK_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}") + if (CDASH_LOCAL) + set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}") + else () + set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_STRING}") endif () - #WiX variables - set (CPACK_WIX_UNINSTALL "1") -# .. variable:: CPACK_WIX_LICENSE_RTF -# RTF License File -# -# If CPACK_RESOURCE_FILE_LICENSE has an .rtf extension it is used as-is. -# -# If CPACK_RESOURCE_FILE_LICENSE has an .txt extension it is implicitly -# converted to RTF by the WiX Generator. -# The expected encoding of the .txt file is UTF-8. -# -# With CPACK_WIX_LICENSE_RTF you can override the license file used by the -# WiX Generator in case CPACK_RESOURCE_FILE_LICENSE is in an unsupported -# format or the .txt -> .rtf conversion does not work as expected. - set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") -# .. variable:: CPACK_WIX_PRODUCT_ICON -# The Icon shown next to the program name in Add/Remove programs. -# set (CPACK_WIX_PRODUCT_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") -# -# .. variable:: CPACK_WIX_UI_BANNER -# -# The bitmap will appear at the top of all installer pages other than the -# welcome and completion dialogs. -# -# If set, this image will replace the default banner image. -# -# This image must be 493 by 58 pixels. -# -# .. variable:: CPACK_WIX_UI_DIALOG -# -# Background bitmap used on the welcome and completion dialogs. -# -# If this variable is set, the installer will replace the default dialog -# image. -# -# This image must be 493 by 312 pixels. -# - elseif (APPLE) - list (APPEND CPACK_GENERATOR "STGZ") - list (APPEND CPACK_GENERATOR "DragNDrop") - set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) - set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") -# set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/h5lzf.gif") - - option (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE "Package the ${PLUGIN_PACKAGE_NAME} Library in a Bundle" OFF) - if (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE) - list (APPEND CPACK_GENERATOR "Bundle") - set (CPACK_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - set (CPACK_BUNDLE_LOCATION "/") # make sure CMAKE_INSTALL_PREFIX ends in / - set (CMAKE_INSTALL_PREFIX "/${CPACK_BUNDLE_NAME}.framework/Versions/${CPACK_PACKAGE_VERSION}/${CPACK_PACKAGE_NAME}/") -# set (CPACK_BUNDLE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5LZF.icns") -# set (CPACK_BUNDLE_PLIST "${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist") - set (CPACK_APPLE_GUI_INFO_STRING "${PLUGIN_PACKAGE_NAME} Plugin Library") - set (CPACK_APPLE_GUI_COPYRIGHT "Copyright © ???. All rights reserved.") - set (CPACK_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") - set (CPACK_APPLE_GUI_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - set (CPACK_APPLE_GUI_VERSION_STRING "${CPACK_PACKAGE_VERSION_STRING}") - set (CPACK_APPLE_GUI_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") - #----------------------------------------------------------------------------- - # Configure the Info.plist file for the install bundle - #----------------------------------------------------------------------------- -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CPack.Info.plist.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist @ONLY -# ) -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/PkgInfo.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo @ONLY -# ) -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/version.plist.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist @ONLY -# ) -# install ( -# FILES ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist -# DESTINATION .. -# ) + set (CPACK_PACKAGE_VERSION_MAJOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}") + set (CPACK_PACKAGE_VERSION_MINOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}") + set (CPACK_PACKAGE_VERSION_PATCH "") + #set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") + set (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + set (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + set (CPACK_PACKAGE_RELOCATABLE TRUE) + set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PLUGIN_NAME} Installation") + set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSION}") + + set (CPACK_GENERATOR "TGZ") + if (WIN32) + set (CPACK_GENERATOR "ZIP") + + if (NSIS_EXECUTABLE) + list (APPEND CPACK_GENERATOR "NSIS") + endif () + set (CPACK_NSIS_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + if (CMAKE_CL_64) + set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") + set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION} (Win64)") + else () + set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") + set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + endif () + # set the install/unistall icon used for the installer itself + # There is a bug in NSI that does not handle full unix paths properly. + #set (CPACK_NSIS_MUI_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") + #set (CPACK_NSIS_MUI_UNIICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") + # set the package header icon for MUI + #set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.bmp") + set (CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}, is a dynamic filter for HDF5") + #set (CPACK_PACKAGE_INSTALL_DIRECTORY "plugins") + set (CPACK_NSIS_CONTACT "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + set (CPACK_NSIS_MODIFY_PATH ON) + + if (WIX_EXECUTABLE) + list (APPEND CPACK_GENERATOR "WIX") + endif () + # WiX variables + set (CPACK_WIX_UNINSTALL "1") + set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + elseif (APPLE) + list (APPEND CPACK_GENERATOR "STGZ") + list (APPEND CPACK_GENERATOR "DragNDrop") + set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) + set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") +# set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/h5lzf.gif") + + option (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE "Package the ${PLUGIN_PACKAGE_NAME} Library in a Bundle" OFF) + if (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE) + list (APPEND CPACK_GENERATOR "Bundle") + set (CPACK_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + set (CPACK_BUNDLE_LOCATION "/") # make sure CMAKE_INSTALL_PREFIX ends in / + set (CMAKE_INSTALL_PREFIX "/${CPACK_BUNDLE_NAME}.framework/Versions/${CPACK_PACKAGE_VERSION}/${CPACK_PACKAGE_NAME}/") +# set (CPACK_BUNDLE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5LZF.icns") +# set (CPACK_BUNDLE_PLIST "${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist") + set (CPACK_APPLE_GUI_INFO_STRING "${PLUGIN_PACKAGE_NAME} Plugin Library") + set (CPACK_APPLE_GUI_COPYRIGHT "Copyright © ???. All rights reserved.") + set (CPACK_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") + set (CPACK_APPLE_GUI_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + set (CPACK_APPLE_GUI_VERSION_STRING "${CPACK_PACKAGE_VERSION_STRING}") + set (CPACK_APPLE_GUI_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") + #----------------------------------------------------------------------------- + # Configure the Info.plist file for the install bundle + #----------------------------------------------------------------------------- +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CPack.Info.plist.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist @ONLY +# ) +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/PkgInfo.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo @ONLY +# ) +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/version.plist.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist @ONLY +# ) +# install ( +# FILES ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist +# DESTINATION .. +# ) + endif () + else () + list (APPEND CPACK_GENERATOR "STGZ") + set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") + set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) + + set (CPACK_DEBIAN_PACKAGE_SECTION "Libraries") + set (CPACK_DEBIAN_PACKAGE_MAINTAINER "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + +# list (APPEND CPACK_GENERATOR "RPM") + set (CPACK_RPM_PACKAGE_RELEASE "1") + set (CPACK_RPM_COMPONENT_INSTALL ON) + set (CPACK_RPM_PACKAGE_RELOCATABLE ON) endif () - else () - list (APPEND CPACK_GENERATOR "STGZ") - set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") - set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) - set (CPACK_DEBIAN_PACKAGE_SECTION "Libraries") - set (CPACK_DEBIAN_PACKAGE_MAINTAINER "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};ALL;/") + else () + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};libraries;/") + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};headers;/") + endif () -# list (APPEND CPACK_GENERATOR "RPM") - set (CPACK_RPM_PACKAGE_RELEASE "1") - set (CPACK_RPM_COMPONENT_INSTALL ON) - set (CPACK_RPM_PACKAGE_RELOCATABLE ON) + set (CPACK_ALL_INSTALL_TYPES Full User) + set (CPACK_INSTALL_TYPE_FULL_DISPLAY_NAME "Everything") endif () if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};ALL;/") - else () - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};libraries;/") - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};headers;/") + include (CPack) + + cpack_add_component_group(Runtime) + + cpack_add_component (libraries + DISPLAY_NAME "${PLUGIN_NAME} Libraries" + GROUP Runtime + ) + cpack_add_component_group(hdfdocuments + DISPLAY_NAME "${PLUGIN_NAME} Documents" + GROUP Documents + INSTALL_TYPES Full User + ) endif () - - set (CPACK_ALL_INSTALL_TYPES Full User) - set (CPACK_INSTALL_TYPE_FULL_DISPLAY_NAME "Everything") - - endif () - - if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) - include (CPack) - - cpack_add_component_group(Runtime) - - cpack_add_component (libraries - DISPLAY_NAME "${PLUGIN_NAME} Libraries" - GROUP Runtime - ) - cpack_add_component_group(hdfdocuments - DISPLAY_NAME "${PLUGIN_NAME} Documents" - GROUP Documents - INSTALL_TYPES Full User - ) endif () endmacro () diff --git a/LZF/config/cmake/grepTest.cmake b/LZF/config/cmake/grepTest.cmake index 26e295c2..caa818b5 100755 --- a/LZF/config/cmake/grepTest.cmake +++ b/LZF/config/cmake/grepTest.cmake @@ -65,5 +65,5 @@ if (TEST_EXPECT) endif () # everything went fine... -message ("Passed: The output of ${TEST_PROGRAM} matched") +message (STATUS "Passed: The output of ${TEST_PROGRAM} matched") diff --git a/LZF/config/toolchain/aarch64.cmake b/LZF/config/toolchain/aarch64.cmake index aa84a742..69968336 100644 --- a/LZF/config/toolchain/aarch64.cmake +++ b/LZF/config/toolchain/aarch64.cmake @@ -2,7 +2,7 @@ set(TOOLCHAIN_PREFIX aarch64-linux-gnu) set(ANDROID_NDK /opt/android-ndk-linux) set (CMAKE_SYSTEM_NAME Android) set (CMAKE_ANDROID_ARCH_ABI x86_64) -#set (CMAKE_ANDROID_STANDALONE_TOOLCHAIN ${ANDROID_NDK}/build/cmake/andriod.toolchain.cmake) +#set (CMAKE_ANDROID_STANDALONE_TOOLCHAIN ${ANDROID_NDK}/build/cmake/android.toolchain.cmake) set (CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc) set (CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++) #set (CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres) @@ -11,6 +11,7 @@ set (CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX}) set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set (CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) set (CMAKE_CROSSCOMPILING_EMULATOR qemu-aarch64) include_directories(/usr/${TOOLCHAIN_PREFIX}/include) diff --git a/LZF/config/toolchain/intel.cmake b/LZF/config/toolchain/intel.cmake new file mode 100644 index 00000000..f8f60b28 --- /dev/null +++ b/LZF/config/toolchain/intel.cmake @@ -0,0 +1,11 @@ +# Uncomment the following to use cross-compiling +#set(CMAKE_SYSTEM_NAME Linux) + +set(CMAKE_COMPILER_VENDOR "intel") + +set(CMAKE_C_COMPILER icx) +set(CMAKE_CXX_COMPILER icpx) +set(CMAKE_Fortran_COMPILER ifx) + +# the following is used if cross-compiling +set(CMAKE_CROSSCOMPILING_EMULATOR "") diff --git a/MAFISC/CMakeLists.txt b/MAFISC/CMakeLists.txt index a10fbe1d..4d797b74 100644 --- a/MAFISC/CMakeLists.txt +++ b/MAFISC/CMakeLists.txt @@ -80,7 +80,7 @@ set (H5MAFISC_PACKAGE_URL "http://www.hdfgroup.org") set (H5MAFISC_PACKAGE_BUGREPORT "help@hdfgroup.org") set (H5MAFISC_PACKAGE_SOVERSION "${H5MAFISC_SOVERS_MAJOR}.${H5MAFISC_SOVERS_RELEASE}.${H5MAFISC_SOVERS_MINOR}") set (H5MAFISC_PACKAGE_SOVERSIONMAJOR "${H5MAFISC_SOVERS_MAJOR}") -message("Configuring for mafisc HDF5 Plugin version: " ${H5MAFISC_PACKAGE_STRING}) +message(STATUS "Configuring for mafisc HDF5 Plugin version: " ${H5MAFISC_PACKAGE_STRING}) #----------------------------------------------------------------------------- # Include some macros for reusable code @@ -222,7 +222,7 @@ if (NOT BUILD_MAFISC_LIBRARY_SOURCE) set (H5MAFISC_INCLUDE_DIRS ${MAFISC_INCLUDE_DIR}) else () if (H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") - EXTERNAL_MAFISC_LIBRARY (${H5PL_ALLOW_EXTERNAL_SUPPORT} STATIC) + EXTERNAL_MAFISC_LIBRARY (${H5PL_ALLOW_EXTERNAL_SUPPORT}) set (H5MAFISC_HAVE_MAFISC_H 1) set (H5MAFISC_HAVE_MAFISC 1) message (STATUS "Filter MAFISC is built") @@ -232,10 +232,6 @@ if (NOT BUILD_MAFISC_LIBRARY_SOURCE) endif () message (STATUS "mafisc found: INC=${MAFISC_INCLUDE_DIR} TOOLS=${MAFISC_LIBRARIES}") set (LINK_LIBS ${LINK_LIBS} ${MAFISC_LIBRARIES}) - - if (MAFISC_FOUND) - PACKAGE_MAFISC_LIBRARY (${H5PL_ALLOW_EXTERNAL_SUPPORT}) - endif () endif () #----------------------------------------------------------------------------- @@ -253,12 +249,6 @@ endif () add_subdirectory (src) -if (H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") - if (MAFISC_FOUND AND MAFISC_USE_EXTERNAL) - add_dependencies (${H5MAFISC_LIB_TARGET} MAFISC) - endif () -endif () - option (BUILD_EXAMPLES "Build h5mafisc Examples" OFF) if (BUILD_EXAMPLES) add_subdirectory (example) diff --git a/MAFISC/config/cmake/H5MAFISCMacros.cmake b/MAFISC/config/cmake/H5MAFISCMacros.cmake index 9b9a63e8..55dc4815 100644 --- a/MAFISC/config/cmake/H5MAFISCMacros.cmake +++ b/MAFISC/config/cmake/H5MAFISCMacros.cmake @@ -9,81 +9,34 @@ # If you do not have access to either file, you may request a copy from # help@hdfgroup.org. # + +include (FetchContent) #------------------------------------------------------------------------------- macro (EXTERNAL_MAFISC_LIBRARY compress_type libtype) - if (${libtype} MATCHES "SHARED") - set (BUILD_EXT_SHARED_LIBS "ON") - else () - set (BUILD_EXT_SHARED_LIBS "OFF") - endif () if (${compress_type} MATCHES "GIT") - EXTERNALPROJECT_ADD (MAFISC + FetchContent_Declare (MAFISC GIT_REPOSITORY ${MAFISC_URL} GIT_TAG ${MAFISC_BRANCH} - INSTALL_COMMAND "" - CMAKE_ARGS - -DBUILD_SHARED_LIBS:BOOL=${BUILD_EXT_SHARED_LIBS} - -DMAFISC_PACKAGE_EXT:STRING=${MAFISC_PACKAGE_EXT} - -DMAFISC_EXTERNALLY_CONFIGURED:BOOL=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} - -DCMAKE_ANSI_CFLAGS:STRING=${CMAKE_ANSI_CFLAGS} - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DH5PL_USE_GNU_DIRS:STRING=${H5PL_USE_GNU_DIRS} - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} ) elseif (${compress_type} MATCHES "TGZ") - EXTERNALPROJECT_ADD (MAFISC + FetchContent_Declare (MAFISC URL ${MAFISC_URL} - URL_MD5 "" - INSTALL_COMMAND "" - CMAKE_ARGS - -DBUILD_SHARED_LIBS:BOOL=${BUILD_EXT_SHARED_LIBS} - -DMAFISC_PACKAGE_EXT:STRING=${MAFISC_PACKAGE_EXT} - -DMAFISC_EXTERNALLY_CONFIGURED:BOOL=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} - -DCMAKE_ANSI_CFLAGS:STRING=${CMAKE_ANSI_CFLAGS} - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DH5PL_USE_GNU_DIRS:STRING=${H5PL_USE_GNU_DIRS} - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} + URL_HASH "" ) endif () - externalproject_get_property (MAFISC BINARY_DIR SOURCE_DIR) + FetchContent_GetProperties (MAFISC) + if (NOT mafisc_POPULATED) + FetchContent_Populate (MAFISC) - # Create imported target MAFISC - add_library (mafisc ${libtype} IMPORTED) - HDF_IMPORT_SET_LIB_OPTIONS (mafisc "mafisc" ${libtype} "") - add_dependencies (mafisc MAFISC) + add_subdirectory (${mafisc_SOURCE_DIR} ${mafisc_BINARY_DIR}) + endif () # include (${BINARY_DIR}/MAFISC-targets.cmake) - set (MAFISC_LIBRARY "mafisc") + set (MAFISC_LIBRARY "mafisc-static") - set (MAFISC_INCLUDE_DIR_GEN "${BINARY_DIR}") - set (MAFISC_INCLUDE_DIR "${SOURCE_DIR}/MAFISC") + set (MAFISC_INCLUDE_DIR_GEN "${mafisc_BINARY_DIR}") + set (MAFISC_INCLUDE_DIR "${mafisc_SOURCE_DIR}/MAFISC") set (MAFISC_FOUND 1) set (MAFISC_LIBRARIES ${MAFISC_LIBRARY}) set (MAFISC_INCLUDE_DIRS ${MAFISC_INCLUDE_DIR_GEN} ${MAFISC_INCLUDE_DIR}) endmacro () - -#------------------------------------------------------------------------------- -macro (PACKAGE_MAFISC_LIBRARY compress_type) - add_custom_target (MAFISC-GenHeader-Copy ALL - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${MAFISC_INCLUDE_DIR}/mafisc.h ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ - COMMENT "Copying ${MAFISC_INCLUDE_DIR}/mafisc.h to ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/" - ) - set (EXTERNAL_HEADER_LIST ${EXTERNAL_HEADER_LIST} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/mafisc.h) - if (${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ") - add_dependencies (MAFISC-GenHeader-Copy MAFISC) - endif () -endmacro () diff --git a/MAFISC/config/cmake/HDFMacros.cmake b/MAFISC/config/cmake/HDFMacros.cmake index 5e63ec23..0cf9f192 100644 --- a/MAFISC/config/cmake/HDFMacros.cmake +++ b/MAFISC/config/cmake/HDFMacros.cmake @@ -490,6 +490,8 @@ macro (HDF_DIR_PATHS package_prefix) set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) endif () endif () + + include (FetchContent) endmacro () macro (ADD_H5_FLAGS h5_flag_var infile) diff --git a/MAFISC/config/cmake/HDFPluginMacros.cmake b/MAFISC/config/cmake/HDFPluginMacros.cmake index df73ba1a..dced2847 100644 --- a/MAFISC/config/cmake/HDFPluginMacros.cmake +++ b/MAFISC/config/cmake/HDFPluginMacros.cmake @@ -67,7 +67,7 @@ macro (BASIC_SETTINGS varname) if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR) set (${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR ${CMAKE_INSTALL_DOCDIR}) endif () - message(STATUS "GNU: ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR}") + message(STATUS "GNU: ${${PLUGIN_PACKAGE_NAME}_INSTALL_LIB_DIR}") endif () if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_BIN_DIR) @@ -100,7 +100,7 @@ macro (BASIC_SETTINGS varname) if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR) set (${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR}) endif () - message(STATUS "Final: ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR}") + message(STATUS "Final: ${${PLUGIN_PACKAGE_NAME}_INSTALL_LIB_DIR}") #----------------------------------------------------------------------------- # Setup output Directories @@ -115,6 +115,15 @@ macro (BASIC_SETTINGS varname) set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all static libraries." ) + get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) + if(_isMultiConfig) + set (CMAKE_TEST_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}) + set (CMAKE_PDB_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all pdb files." + ) + else () + set (CMAKE_TEST_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) + endif () else () # if we are externally configured, but the project uses old cmake scripts # this may not be set @@ -304,7 +313,7 @@ macro (HDF5_SUPPORT link_hdf) set (H5PL_HDF5_HAVE_H5PUBCONF_H 1) set (H5PL_HDF5_HAVE_HDF5 1) set (H5PL_HDF5_HEADER "h5pubconf.h") - message (STATUS "HDF5 found: INC=${HDF5_INCLUDE_DIRS} TOOLS=${HDF5_TOOLS_DIR}") + message (STATUS "HDF5-${HDF5_VERSION_STRING} found: INC=${HDF5_INCLUDE_DIRS} TOOLS=${HDF5_TOOLS_DIR}") else () message (FATAL_ERROR " HDF5 is Required for plugin library") endif () @@ -330,227 +339,224 @@ macro (INSTALL_SUPPORT varname) string(TOUPPER ${varname} PLUGIN_PACKAGE_NAME) string(TOLOWER ${varname} PLUGIN_NAME) - #----------------------------------------------------------------------------- - # Set variables needed for installation - #----------------------------------------------------------------------------- - set (${PLUGIN_PACKAGE_NAME}_VERSION_STRING ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}) - set (${PLUGIN_PACKAGE_NAME}_VERSION_MAJOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}) - set (${PLUGIN_PACKAGE_NAME}_VERSION_MINOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}) - - #----------------------------------------------------------------------------- - # Configure the H5PL_Examples.cmake file and the examples - #----------------------------------------------------------------------------- - configure_file ( - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5PL_Examples.cmake.in - ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake @ONLY - ) - install ( - FILES - ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CTestScript.cmake - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/HDFoptions.cmake + if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) + #----------------------------------------------------------------------------- + # Set variables needed for installation + #----------------------------------------------------------------------------- + set (${PLUGIN_PACKAGE_NAME}_VERSION_STRING ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}) + set (${PLUGIN_PACKAGE_NAME}_VERSION_MAJOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}) + set (${PLUGIN_PACKAGE_NAME}_VERSION_MINOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}) + + #----------------------------------------------------------------------------- + # Configure the H5PL_Examples.cmake file and the examples + #----------------------------------------------------------------------------- + if (${PLUGIN_PACKAGE_NAME}_BUILD_TESTING) + configure_file ( + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5PL_Examples.cmake.in + ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake @ONLY + ) + install ( + FILES + ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CTestScript.cmake + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/HDFoptions.cmake DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} - COMPONENT hdfdocuments - ) - execute_process( - COMMAND ${CMAKE_COMMAND} -E copy_directory ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/binex ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples - ) - install ( - DIRECTORY ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples - DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} - USE_SOURCE_PERMISSIONS - COMPONENT hdfdocuments - ) + COMPONENT hdfdocuments + ) + execute_process( + COMMAND ${CMAKE_COMMAND} -E copy_directory ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/binex ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples + ) + install ( + DIRECTORY ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples + DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} + USE_SOURCE_PERMISSIONS + COMPONENT hdfdocuments + ) + endif () - #----------------------------------------------------------------------------- - # Configure the README.txt file for the binary package - #----------------------------------------------------------------------------- - PLUGIN_README_PROPERTIES (${PLUGIN_PACKAGE_NAME}) + #----------------------------------------------------------------------------- + # Configure the README.txt file for the binary package + #----------------------------------------------------------------------------- + PLUGIN_README_PROPERTIES (${PLUGIN_PACKAGE_NAME}) - #----------------------------------------------------------------------------- - # Check for Installation Utilities - #----------------------------------------------------------------------------- - if (WIN32) - set (PF_ENV_EXT "(x86)") - find_program (NSIS_EXECUTABLE NSIS.exe PATHS "$ENV{ProgramFiles}\\NSIS" "$ENV{ProgramFiles${PF_ENV_EXT}}\\NSIS") - if(NOT CPACK_WIX_ROOT) - file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT) - endif() - find_program (WIX_EXECUTABLE candle PATHS "${CPACK_WIX_ROOT}/bin") - endif () - - #----------------------------------------------------------------------------- - # Set the cpack variables - #----------------------------------------------------------------------------- - if (NOT ${PLUGIN_PACKAGE_NAME}_EXTERNALLY_CONFIGURED) - set (CPACK_PACKAGE_VENDOR "HDF_Group") - set (CPACK_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}") - if (CDASH_LOCAL) - set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}") - else () - set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_STRING}") + #----------------------------------------------------------------------------- + # Configure the COPYING.txt file for the windows binary package + #----------------------------------------------------------------------------- + if (WIN32) + configure_file (${CMAKE_SOURCE_DIR}/COPYING ${CMAKE_BINARY_DIR}/COPYING.txt @ONLY) endif () - set (CPACK_PACKAGE_VERSION_MAJOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}") - set (CPACK_PACKAGE_VERSION_MINOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}") - set (CPACK_PACKAGE_VERSION_PATCH "") - #set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") - set (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - set (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - set (CPACK_PACKAGE_RELOCATABLE TRUE) - set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PLUGIN_NAME} Installation") - set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSION}") - - set (CPACK_GENERATOR "TGZ") + + #----------------------------------------------------------------------------- + # Add Document File(s) to CMake Install + #----------------------------------------------------------------------------- + install ( + FILES + ${${PLUGIN_PACKAGE_NAME}_SOURCE_DIR}/docs/PluginLibraries.txt + DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR} + COMPONENT hdfdocuments + ) + + #----------------------------------------------------------------------------- + # Check for Installation Utilities + #----------------------------------------------------------------------------- if (WIN32) - set (CPACK_GENERATOR "ZIP") + set (PF_ENV_EXT "(x86)") + find_program (NSIS_EXECUTABLE NSIS.exe PATHS "$ENV{ProgramFiles}\\NSIS" "$ENV{ProgramFiles${PF_ENV_EXT}}\\NSIS") + if(NOT CPACK_WIX_ROOT) + file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT) + endif() + find_program (WIX_EXECUTABLE candle PATHS "${CPACK_WIX_ROOT}/bin") + endif () - if (NSIS_EXECUTABLE) - list (APPEND CPACK_GENERATOR "NSIS") - endif () - # Installers for 32- vs. 64-bit CMake: - # - Root install directory (displayed to end user at installer-run time) - # - "NSIS package/display name" (text used in the installer GUI) - # - Registry key used to store info about the installation - set (CPACK_NSIS_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - if (CMAKE_CL_64) - set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") - set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION} (Win64)") + if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + if (CMAKE_HOST_UNIX) + set (CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/HDF_Group/${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}/${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}" + CACHE PATH "Install path prefix, prepended onto install directories." FORCE + ) else () - set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") - set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + GetDefaultWindowsPrefixBase(CMAKE_GENERIC_PROGRAM_FILES) + set (CMAKE_INSTALL_PREFIX + "${CMAKE_GENERIC_PROGRAM_FILES}/HDF_Group/${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}/${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}" + CACHE PATH "Install path prefix, prepended onto install directories." FORCE + ) + set (CMAKE_GENERIC_PROGRAM_FILES) endif () - # set the install/unistall icon used for the installer itself - # There is a bug in NSI that does not handle full unix paths properly. - #set (CPACK_NSIS_MUI_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") - #set (CPACK_NSIS_MUI_UNIICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") - # set the package header icon for MUI - #set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.bmp") - set (CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}, is a dynamic filter for HDF5") - #set (CPACK_PACKAGE_INSTALL_DIRECTORY "plugins") - set (CPACK_NSIS_CONTACT "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") - set (CPACK_NSIS_MODIFY_PATH ON) - - if (WIX_EXECUTABLE) - list (APPEND CPACK_GENERATOR "WIX") + endif () + + #----------------------------------------------------------------------------- + # Set the cpack variables + #----------------------------------------------------------------------------- + if (NOT ${PLUGIN_PACKAGE_NAME}_EXTERNALLY_CONFIGURED) + set (CPACK_PACKAGE_VENDOR "HDF_Group") + set (CPACK_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}") + if (CDASH_LOCAL) + set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}") + else () + set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_STRING}") endif () - #WiX variables - set (CPACK_WIX_UNINSTALL "1") -# .. variable:: CPACK_WIX_LICENSE_RTF -# RTF License File -# -# If CPACK_RESOURCE_FILE_LICENSE has an .rtf extension it is used as-is. -# -# If CPACK_RESOURCE_FILE_LICENSE has an .txt extension it is implicitly -# converted to RTF by the WiX Generator. -# The expected encoding of the .txt file is UTF-8. -# -# With CPACK_WIX_LICENSE_RTF you can override the license file used by the -# WiX Generator in case CPACK_RESOURCE_FILE_LICENSE is in an unsupported -# format or the .txt -> .rtf conversion does not work as expected. - set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") -# .. variable:: CPACK_WIX_PRODUCT_ICON -# The Icon shown next to the program name in Add/Remove programs. -# set (CPACK_WIX_PRODUCT_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") -# -# .. variable:: CPACK_WIX_UI_BANNER -# -# The bitmap will appear at the top of all installer pages other than the -# welcome and completion dialogs. -# -# If set, this image will replace the default banner image. -# -# This image must be 493 by 58 pixels. -# -# .. variable:: CPACK_WIX_UI_DIALOG -# -# Background bitmap used on the welcome and completion dialogs. -# -# If this variable is set, the installer will replace the default dialog -# image. -# -# This image must be 493 by 312 pixels. -# - elseif (APPLE) - list (APPEND CPACK_GENERATOR "STGZ") - list (APPEND CPACK_GENERATOR "DragNDrop") - set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) - set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") -# set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/h5mafisc.gif") - - option (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE "Package the ${PLUGIN_PACKAGE_NAME} Library in a Bundle" OFF) - if (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE) - list (APPEND CPACK_GENERATOR "Bundle") - set (CPACK_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - set (CPACK_BUNDLE_LOCATION "/") # make sure CMAKE_INSTALL_PREFIX ends in / - set (CMAKE_INSTALL_PREFIX "/${CPACK_BUNDLE_NAME}.framework/Versions/${CPACK_PACKAGE_VERSION}/${CPACK_PACKAGE_NAME}/") -# set (CPACK_BUNDLE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5MAFISC.icns") -# set (CPACK_BUNDLE_PLIST "${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist") - set (CPACK_APPLE_GUI_INFO_STRING "${PLUGIN_PACKAGE_NAME} Plugin Library") - set (CPACK_APPLE_GUI_COPYRIGHT "Copyright © ???. All rights reserved.") - set (CPACK_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") - set (CPACK_APPLE_GUI_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - set (CPACK_APPLE_GUI_VERSION_STRING "${CPACK_PACKAGE_VERSION_STRING}") - set (CPACK_APPLE_GUI_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") - #----------------------------------------------------------------------------- - # Configure the Info.plist file for the install bundle - #----------------------------------------------------------------------------- -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CPack.Info.plist.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist @ONLY -# ) -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/PkgInfo.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo @ONLY -# ) -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/version.plist.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist @ONLY -# ) -# install ( -# FILES ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist -# DESTINATION .. -# ) + set (CPACK_PACKAGE_VERSION_MAJOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}") + set (CPACK_PACKAGE_VERSION_MINOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}") + set (CPACK_PACKAGE_VERSION_PATCH "") + #set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") + set (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + set (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + set (CPACK_PACKAGE_RELOCATABLE TRUE) + set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PLUGIN_NAME} Installation") + set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSION}") + + set (CPACK_GENERATOR "TGZ") + if (WIN32) + set (CPACK_GENERATOR "ZIP") + + if (NSIS_EXECUTABLE) + list (APPEND CPACK_GENERATOR "NSIS") + endif () + set (CPACK_NSIS_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + if (CMAKE_CL_64) + set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") + set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION} (Win64)") + else () + set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") + set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + endif () + # set the install/unistall icon used for the installer itself + # There is a bug in NSI that does not handle full unix paths properly. + #set (CPACK_NSIS_MUI_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") + #set (CPACK_NSIS_MUI_UNIICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") + # set the package header icon for MUI + #set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.bmp") + set (CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}, is a dynamic filter for HDF5") + #set (CPACK_PACKAGE_INSTALL_DIRECTORY "plugins") + set (CPACK_NSIS_CONTACT "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + set (CPACK_NSIS_MODIFY_PATH ON) + + if (WIX_EXECUTABLE) + list (APPEND CPACK_GENERATOR "WIX") + endif () + # WiX variables + set (CPACK_WIX_UNINSTALL "1") + set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + elseif (APPLE) + list (APPEND CPACK_GENERATOR "STGZ") + list (APPEND CPACK_GENERATOR "DragNDrop") + set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) + set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") +# set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/h5mafisc.gif") + + option (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE "Package the ${PLUGIN_PACKAGE_NAME} Library in a Bundle" OFF) + if (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE) + list (APPEND CPACK_GENERATOR "Bundle") + set (CPACK_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + set (CPACK_BUNDLE_LOCATION "/") # make sure CMAKE_INSTALL_PREFIX ends in / + set (CMAKE_INSTALL_PREFIX "/${CPACK_BUNDLE_NAME}.framework/Versions/${CPACK_PACKAGE_VERSION}/${CPACK_PACKAGE_NAME}/") +# set (CPACK_BUNDLE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5MAFISC.icns") +# set (CPACK_BUNDLE_PLIST "${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist") + set (CPACK_APPLE_GUI_INFO_STRING "${PLUGIN_PACKAGE_NAME} Plugin Library") + set (CPACK_APPLE_GUI_COPYRIGHT "Copyright © ???. All rights reserved.") + set (CPACK_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") + set (CPACK_APPLE_GUI_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + set (CPACK_APPLE_GUI_VERSION_STRING "${CPACK_PACKAGE_VERSION_STRING}") + set (CPACK_APPLE_GUI_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") + #----------------------------------------------------------------------------- + # Configure the Info.plist file for the install bundle + #----------------------------------------------------------------------------- +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CPack.Info.plist.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist @ONLY +# ) +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/PkgInfo.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo @ONLY +# ) +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/version.plist.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist @ONLY +# ) +# install ( +# FILES ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist +# DESTINATION .. +# ) + endif () + else () + list (APPEND CPACK_GENERATOR "STGZ") + set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") + set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) + + set (CPACK_DEBIAN_PACKAGE_SECTION "Libraries") + set (CPACK_DEBIAN_PACKAGE_MAINTAINER "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + +# list (APPEND CPACK_GENERATOR "RPM") + set (CPACK_RPM_PACKAGE_RELEASE "1") + set (CPACK_RPM_COMPONENT_INSTALL ON) + set (CPACK_RPM_PACKAGE_RELOCATABLE ON) endif () - else () - list (APPEND CPACK_GENERATOR "STGZ") - set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") - set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) - set (CPACK_DEBIAN_PACKAGE_SECTION "Libraries") - set (CPACK_DEBIAN_PACKAGE_MAINTAINER "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};ALL;/") + else () + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};libraries;/") + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};headers;/") + endif () -# list (APPEND CPACK_GENERATOR "RPM") - set (CPACK_RPM_PACKAGE_RELEASE "1") - set (CPACK_RPM_COMPONENT_INSTALL ON) - set (CPACK_RPM_PACKAGE_RELOCATABLE ON) + set (CPACK_ALL_INSTALL_TYPES Full User) + set (CPACK_INSTALL_TYPE_FULL_DISPLAY_NAME "Everything") endif () if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};ALL;/") - else () - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};libraries;/") - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};headers;/") + include (CPack) + + cpack_add_component_group(Runtime) + + cpack_add_component (libraries + DISPLAY_NAME "${PLUGIN_NAME} Libraries" + GROUP Runtime + ) + cpack_add_component_group(hdfdocuments + DISPLAY_NAME "${PLUGIN_NAME} Documents" + GROUP Documents + INSTALL_TYPES Full User + ) endif () - - set (CPACK_ALL_INSTALL_TYPES Full User) - set (CPACK_INSTALL_TYPE_FULL_DISPLAY_NAME "Everything") - - endif () - - if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) - include (CPack) - - cpack_add_component_group(Runtime) - - cpack_add_component (libraries - DISPLAY_NAME "${PLUGIN_NAME} Libraries" - GROUP Runtime - ) - cpack_add_component_group(hdfdocuments - DISPLAY_NAME "${PLUGIN_NAME} Documents" - GROUP Documents - INSTALL_TYPES Full User - ) endif () endmacro () diff --git a/MAFISC/config/cmake/grepTest.cmake b/MAFISC/config/cmake/grepTest.cmake index 26e295c2..caa818b5 100755 --- a/MAFISC/config/cmake/grepTest.cmake +++ b/MAFISC/config/cmake/grepTest.cmake @@ -65,5 +65,5 @@ if (TEST_EXPECT) endif () # everything went fine... -message ("Passed: The output of ${TEST_PROGRAM} matched") +message (STATUS "Passed: The output of ${TEST_PROGRAM} matched") diff --git a/MAFISC/config/toolchain/aarch64.cmake b/MAFISC/config/toolchain/aarch64.cmake index aa84a742..69968336 100644 --- a/MAFISC/config/toolchain/aarch64.cmake +++ b/MAFISC/config/toolchain/aarch64.cmake @@ -2,7 +2,7 @@ set(TOOLCHAIN_PREFIX aarch64-linux-gnu) set(ANDROID_NDK /opt/android-ndk-linux) set (CMAKE_SYSTEM_NAME Android) set (CMAKE_ANDROID_ARCH_ABI x86_64) -#set (CMAKE_ANDROID_STANDALONE_TOOLCHAIN ${ANDROID_NDK}/build/cmake/andriod.toolchain.cmake) +#set (CMAKE_ANDROID_STANDALONE_TOOLCHAIN ${ANDROID_NDK}/build/cmake/android.toolchain.cmake) set (CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc) set (CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++) #set (CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres) @@ -11,6 +11,7 @@ set (CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX}) set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set (CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) set (CMAKE_CROSSCOMPILING_EMULATOR qemu-aarch64) include_directories(/usr/${TOOLCHAIN_PREFIX}/include) diff --git a/MAFISC/config/toolchain/intel.cmake b/MAFISC/config/toolchain/intel.cmake new file mode 100644 index 00000000..f8f60b28 --- /dev/null +++ b/MAFISC/config/toolchain/intel.cmake @@ -0,0 +1,11 @@ +# Uncomment the following to use cross-compiling +#set(CMAKE_SYSTEM_NAME Linux) + +set(CMAKE_COMPILER_VENDOR "intel") + +set(CMAKE_C_COMPILER icx) +set(CMAKE_CXX_COMPILER icpx) +set(CMAKE_Fortran_COMPILER ifx) + +# the following is used if cross-compiling +set(CMAKE_CROSSCOMPILING_EMULATOR "") diff --git a/SZ/CMakeLists.txt b/SZ/CMakeLists.txt index 9867a7ce..aa0ee1a7 100644 --- a/SZ/CMakeLists.txt +++ b/SZ/CMakeLists.txt @@ -60,7 +60,7 @@ set (H5SZ_PACKAGE_URL "http://www.hdfgroup.org") set (H5SZ_PACKAGE_BUGREPORT "help@hdfgroup.org") set (H5SZ_PACKAGE_SOVERSION "${H5SZ_SOVERS_MAJOR}.${H5SZ_SOVERS_RELEASE}.${H5SZ_SOVERS_MINOR}") set (H5SZ_PACKAGE_SOVERSION_MAJOR "${H5SZ_SOVERS_MAJOR}") -message("Configuring for SZ HDF5 Plugin version: " ${H5SZ_PACKAGE_STRING}) +message(STATUS "Configuring for SZ HDF5 Plugin version: " ${H5SZ_PACKAGE_STRING}) #----------------------------------------------------------------------------- # Include some macros for reusable code @@ -121,7 +121,7 @@ if (NOT H5_SZ_HEADER) set (SZ_INCLUDE_DIRS ${SZ_INCLUDE_DIRS} ${SZ_INCLUDE_DIR}) else () if (H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") - EXTERNAL_SZ_LIBRARY (${H5PL_ALLOW_EXTERNAL_SUPPORT} STATIC) + EXTERNAL_SZ_LIBRARY (${H5PL_ALLOW_EXTERNAL_SUPPORT}) set (H5_HAVE_SZ_H 1) set (H5_HAVE_SZ 1) message (STATUS "Filter SZ is built") @@ -135,10 +135,6 @@ else () endif () message (STATUS "SZ found: INC=${SZ_INCLUDE_DIR} TOOLS=${SZ_LIBRARIES}") set (LINK_LIBS ${LINK_LIBS} ${SZ_LIBRARIES}) - -if (SZ_FOUND) - PACKAGE_SZ_LIBRARY (${H5PL_ALLOW_EXTERNAL_SUPPORT}) -endif () #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- @@ -156,12 +152,6 @@ endif () add_subdirectory (src) -if (H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") - if (SZ_FOUND AND SZ_USE_EXTERNAL) - add_dependencies (${H5SZ_LIB_TARGET} SZ) - endif () -endif () - option (BUILD_EXAMPLES "Build h5SZ Examples" OFF) if (BUILD_EXAMPLES) add_subdirectory (example) diff --git a/SZ/config/cmake/H5SZMacros.cmake b/SZ/config/cmake/H5SZMacros.cmake index f0c1ecf5..aa133a0d 100644 --- a/SZ/config/cmake/H5SZMacros.cmake +++ b/SZ/config/cmake/H5SZMacros.cmake @@ -9,93 +9,48 @@ # If you do not have access to either file, you may request a copy from # help@hdfgroup.org. # + +include (FetchContent) #------------------------------------------------------------------------------- macro (EXTERNAL_SZ_LIBRARY compress_type libtype) - if (${libtype} MATCHES "SHARED") - set (BUILD_EXT_SHARED_LIBS "ON") - else () - set (BUILD_EXT_SHARED_LIBS "OFF") - endif () if (${compress_type} MATCHES "GIT") - EXTERNALPROJECT_ADD (SZF + FetchContent_Declare (SZF GIT_REPOSITORY ${SZ_URL} GIT_TAG ${SZ_BRANCH} - INSTALL_COMMAND "" - CMAKE_ARGS - -DBUILD_SHARED_LIBS:BOOL=${BUILD_EXT_SHARED_LIBS} - -DBUILD_SZ_EXAMPLES:BOOL=OFF - -DSZ_PACKAGE_EXT:STRING=${SZ_PACKAGE_EXT} - -DSZ_EXTERNALLY_CONFIGURED:BOOL=OFF - -DSZ_FIND_DEPS:BOOL=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} - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DH5PL_USE_GNU_DIRS:STRING=${H5PL_USE_GNU_DIRS} - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} ) elseif (${compress_type} MATCHES "TGZ") - EXTERNALPROJECT_ADD (SZF + FetchContent_Declare (SZF URL ${SZ_URL} - URL_MD5 "" - INSTALL_COMMAND "" - CMAKE_ARGS - -DBUILD_SHARED_LIBS:BOOL=${BUILD_EXT_SHARED_LIBS} - -DBUILD_SZ_EXAMPLES:BOOL=OFF - -DSZ_PACKAGE_EXT:STRING=${SZ_PACKAGE_EXT} - -DSZ_EXTERNALLY_CONFIGURED:BOOL=OFF - -DSZ_FIND_DEPS:BOOL=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} - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DH5PL_USE_GNU_DIRS:STRING=${H5PL_USE_GNU_DIRS} - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} + URL_HASH "" ) endif () - externalproject_get_property (SZF BINARY_DIR SOURCE_DIR) + FetchContent_GetProperties (SZF) + if (NOT szf_POPULATED) + FetchContent_Populate (SZF) - # Create imported target SZ - add_library (SZ ${libtype} IMPORTED) - HDF_IMPORT_SET_LIB_OPTIONS (SZ "SZ" ${libtype} "") - add_dependencies (SZ SZF) + # Store the old value of the 'BUILD_SHARED_LIBS' + set (BUILD_SHARED_LIBS_OLD ${BUILD_SHARED_LIBS}) + # Make subproject to use 'BUILD_SHARED_LIBS=OFF' setting. + set (BUILD_SHARED_LIBS OFF CACHE INTERNAL "Build SHARED libraries") + # Store the old value of the 'BUILD_TESTING' + set (BUILD_TESTING_OLD ${BUILD_TESTING}) + # Make subproject to use 'BUILD_TESTING=OFF' setting. + set (BUILD_TESTING OFF CACHE INTERNAL "Build Unit Testing") - # Create imported target zstd - add_library(zstd STATIC IMPORTED) - HDF_IMPORT_SET_LIB_OPTIONS (zstd "zstd" ${libtype} "") - add_dependencies (zstd SZF) + add_subdirectory (${szf_SOURCE_DIR} ${szf_BINARY_DIR}) - # Create imported target ZLIB - add_library(ZLIB STATIC IMPORTED) - HDF_IMPORT_SET_LIB_OPTIONS (ZLIB "ZLIB" ${libtype} "") - add_dependencies (ZLIB SZF) + # Restore the old value of the parameter + set (BUILD_TESTING ${BUILD_TESTING_OLD} CACHE BOOL "Build Unit Testing" FORCE) + # Restore the old value of the parameter + set (BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_OLD} CACHE BOOL "Type of libraries to build" FORCE) + endif () # include (${BINARY_DIR}/SZ-targets.cmake) set (SZ_LIBRARY "SZ;zstd;ZLIB") - set (SZ_INCLUDE_DIR_GEN "${BINARY_DIR}") - set (SZ_INCLUDE_DIR "${SOURCE_DIR}/sz/include") + set (SZ_INCLUDE_DIR_GEN "${szf_BINARY_DIR}") + set (SZ_INCLUDE_DIR "${szf_SOURCE_DIR}/sz/include") set (SZ_FOUND 1) set (SZ_LIBRARIES ${SZ_LIBRARY}) set (SZ_INCLUDE_DIRS ${SZ_INCLUDE_DIR_GEN} ${SZ_INCLUDE_DIR}) endmacro () - -#------------------------------------------------------------------------------- -macro (PACKAGE_SZ_LIBRARY compress_type) - add_custom_target (SZF-GenHeader-Copy ALL - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${SZ_INCLUDE_DIR}/sz.h ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ - COMMENT "Copying ${SZ_INCLUDE_DIR}/sz.h to ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/" - ) - set (EXTERNAL_HEADER_LIST ${EXTERNAL_HEADER_LIST} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/sz.h) - if (${compress_type} MATCHES "GIT" OR ${compress_type} MATCHES "TGZ") - add_dependencies (SZF-GenHeader-Copy SZF) - endif () -endmacro () diff --git a/SZ/config/cmake/HDFMacros.cmake b/SZ/config/cmake/HDFMacros.cmake index 5e63ec23..0cf9f192 100644 --- a/SZ/config/cmake/HDFMacros.cmake +++ b/SZ/config/cmake/HDFMacros.cmake @@ -490,6 +490,8 @@ macro (HDF_DIR_PATHS package_prefix) set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) endif () endif () + + include (FetchContent) endmacro () macro (ADD_H5_FLAGS h5_flag_var infile) diff --git a/SZ/config/cmake/HDFPluginMacros.cmake b/SZ/config/cmake/HDFPluginMacros.cmake index 2a28a9ef..a4604108 100644 --- a/SZ/config/cmake/HDFPluginMacros.cmake +++ b/SZ/config/cmake/HDFPluginMacros.cmake @@ -67,7 +67,7 @@ macro (BASIC_SETTINGS varname) if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR) set (${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR ${CMAKE_INSTALL_DOCDIR}) endif () - message(STATUS "GNU: ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR}") + message(STATUS "GNU: ${${PLUGIN_PACKAGE_NAME}_INSTALL_LIB_DIR}") endif () if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_BIN_DIR) @@ -100,7 +100,7 @@ macro (BASIC_SETTINGS varname) if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR) set (${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR}) endif () - message(STATUS "Final: ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR}") + message(STATUS "Final: ${${PLUGIN_PACKAGE_NAME}_INSTALL_LIB_DIR}") #----------------------------------------------------------------------------- # Setup output Directories @@ -115,6 +115,15 @@ macro (BASIC_SETTINGS varname) set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all static libraries." ) + get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) + if(_isMultiConfig) + set (CMAKE_TEST_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}) + set (CMAKE_PDB_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all pdb files." + ) + else () + set (CMAKE_TEST_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) + endif () else () # if we are externally configured, but the project uses old cmake scripts # this may not be set @@ -304,7 +313,7 @@ macro (HDF5_SUPPORT link_hdf) set (H5PL_HDF5_HAVE_H5PUBCONF_H 1) set (H5PL_HDF5_HAVE_HDF5 1) set (H5PL_HDF5_HEADER "h5pubconf.h") - message (STATUS "HDF5 found: INC=${HDF5_INCLUDE_DIRS} TOOLS=${HDF5_TOOLS_DIR}") + message (STATUS "HDF5-${HDF5_VERSION_STRING} found: INC=${HDF5_INCLUDE_DIRS} TOOLS=${HDF5_TOOLS_DIR}") else () message (FATAL_ERROR " HDF5 is Required for plugin library") endif () @@ -330,227 +339,224 @@ macro (INSTALL_SUPPORT varname) string(TOUPPER ${varname} PLUGIN_PACKAGE_NAME) string(TOLOWER ${varname} PLUGIN_NAME) - #----------------------------------------------------------------------------- - # Set variables needed for installation - #----------------------------------------------------------------------------- - set (${PLUGIN_PACKAGE_NAME}_VERSION_STRING ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}) - set (${PLUGIN_PACKAGE_NAME}_VERSION_MAJOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}) - set (${PLUGIN_PACKAGE_NAME}_VERSION_MINOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}) - - #----------------------------------------------------------------------------- - # Configure the H5PL_Examples.cmake file and the examples - #----------------------------------------------------------------------------- - configure_file ( - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5PL_Examples.cmake.in - ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake @ONLY - ) - install ( - FILES - ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CTestScript.cmake - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/HDFoptions.cmake + if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) + #----------------------------------------------------------------------------- + # Set variables needed for installation + #----------------------------------------------------------------------------- + set (${PLUGIN_PACKAGE_NAME}_VERSION_STRING ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}) + set (${PLUGIN_PACKAGE_NAME}_VERSION_MAJOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}) + set (${PLUGIN_PACKAGE_NAME}_VERSION_MINOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}) + + #----------------------------------------------------------------------------- + # Configure the H5PL_Examples.cmake file and the examples + #----------------------------------------------------------------------------- + if (${PLUGIN_PACKAGE_NAME}_BUILD_TESTING) + configure_file ( + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5PL_Examples.cmake.in + ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake @ONLY + ) + install ( + FILES + ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CTestScript.cmake + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/HDFoptions.cmake DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} - COMPONENT hdfdocuments - ) - execute_process( - COMMAND ${CMAKE_COMMAND} -E copy_directory ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/binex ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples - ) - install ( - DIRECTORY ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples - DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} - USE_SOURCE_PERMISSIONS - COMPONENT hdfdocuments - ) + COMPONENT hdfdocuments + ) + execute_process( + COMMAND ${CMAKE_COMMAND} -E copy_directory ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/binex ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples + ) + install ( + DIRECTORY ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples + DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} + USE_SOURCE_PERMISSIONS + COMPONENT hdfdocuments + ) + endif () - #----------------------------------------------------------------------------- - # Configure the README.txt file for the binary package - #----------------------------------------------------------------------------- - PLUGIN_README_PROPERTIES (${PLUGIN_PACKAGE_NAME}) + #----------------------------------------------------------------------------- + # Configure the README.txt file for the binary package + #----------------------------------------------------------------------------- + PLUGIN_README_PROPERTIES (${PLUGIN_PACKAGE_NAME}) - #----------------------------------------------------------------------------- - # Check for Installation Utilities - #----------------------------------------------------------------------------- - if (WIN32) - set (PF_ENV_EXT "(x86)") - find_program (NSIS_EXECUTABLE NSIS.exe PATHS "$ENV{ProgramFiles}\\NSIS" "$ENV{ProgramFiles${PF_ENV_EXT}}\\NSIS") - if(NOT CPACK_WIX_ROOT) - file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT) - endif() - find_program (WIX_EXECUTABLE candle PATHS "${CPACK_WIX_ROOT}/bin") - endif () - - #----------------------------------------------------------------------------- - # Set the cpack variables - #----------------------------------------------------------------------------- - if (NOT ${PLUGIN_PACKAGE_NAME}_EXTERNALLY_CONFIGURED) - set (CPACK_PACKAGE_VENDOR "HDF_Group") - set (CPACK_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}") - if (CDASH_LOCAL) - set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}") - else () - set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_STRING}") + #----------------------------------------------------------------------------- + # Configure the COPYING.txt file for the windows binary package + #----------------------------------------------------------------------------- + if (WIN32) + configure_file (${CMAKE_SOURCE_DIR}/COPYING ${CMAKE_BINARY_DIR}/COPYING.txt @ONLY) endif () - set (CPACK_PACKAGE_VERSION_MAJOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}") - set (CPACK_PACKAGE_VERSION_MINOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}") - set (CPACK_PACKAGE_VERSION_PATCH "") - #set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") - set (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - set (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - set (CPACK_PACKAGE_RELOCATABLE TRUE) - set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PLUGIN_NAME} Installation") - set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSION}") - - set (CPACK_GENERATOR "TGZ") + + #----------------------------------------------------------------------------- + # Add Document File(s) to CMake Install + #----------------------------------------------------------------------------- + install ( + FILES + ${${PLUGIN_PACKAGE_NAME}_SOURCE_DIR}/docs/PluginLibraries.txt + DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR} + COMPONENT hdfdocuments + ) + + #----------------------------------------------------------------------------- + # Check for Installation Utilities + #----------------------------------------------------------------------------- if (WIN32) - set (CPACK_GENERATOR "ZIP") + set (PF_ENV_EXT "(x86)") + find_program (NSIS_EXECUTABLE NSIS.exe PATHS "$ENV{ProgramFiles}\\NSIS" "$ENV{ProgramFiles${PF_ENV_EXT}}\\NSIS") + if(NOT CPACK_WIX_ROOT) + file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT) + endif() + find_program (WIX_EXECUTABLE candle PATHS "${CPACK_WIX_ROOT}/bin") + endif () - if (NSIS_EXECUTABLE) - list (APPEND CPACK_GENERATOR "NSIS") - endif () - # Installers for 32- vs. 64-bit CMake: - # - Root install directory (displayed to end user at installer-run time) - # - "NSIS package/display name" (text used in the installer GUI) - # - Registry key used to store info about the installation - set (CPACK_NSIS_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - if (CMAKE_CL_64) - set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") - set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION} (Win64)") + if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + if (CMAKE_HOST_UNIX) + set (CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/HDF_Group/${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}/${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}" + CACHE PATH "Install path prefix, prepended onto install directories." FORCE + ) else () - set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") - set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + GetDefaultWindowsPrefixBase(CMAKE_GENERIC_PROGRAM_FILES) + set (CMAKE_INSTALL_PREFIX + "${CMAKE_GENERIC_PROGRAM_FILES}/HDF_Group/${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}/${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}" + CACHE PATH "Install path prefix, prepended onto install directories." FORCE + ) + set (CMAKE_GENERIC_PROGRAM_FILES) endif () - # set the install/unistall icon used for the installer itself - # There is a bug in NSI that does not handle full unix paths properly. - #set (CPACK_NSIS_MUI_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") - #set (CPACK_NSIS_MUI_UNIICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") - # set the package header icon for MUI - #set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.bmp") - set (CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}, is a dynamic filter for HDF5") - #set (CPACK_PACKAGE_INSTALL_DIRECTORY "plugins") - set (CPACK_NSIS_CONTACT "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") - set (CPACK_NSIS_MODIFY_PATH ON) - - if (WIX_EXECUTABLE) - list (APPEND CPACK_GENERATOR "WIX") + endif () + + #----------------------------------------------------------------------------- + # Set the cpack variables + #----------------------------------------------------------------------------- + if (NOT ${PLUGIN_PACKAGE_NAME}_EXTERNALLY_CONFIGURED) + set (CPACK_PACKAGE_VENDOR "HDF_Group") + set (CPACK_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}") + if (CDASH_LOCAL) + set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}") + else () + set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_STRING}") endif () - #WiX variables - set (CPACK_WIX_UNINSTALL "1") -# .. variable:: CPACK_WIX_LICENSE_RTF -# RTF License File -# -# If CPACK_RESOURCE_FILE_LICENSE has an .rtf extension it is used as-is. -# -# If CPACK_RESOURCE_FILE_LICENSE has an .txt extension it is implicitly -# converted to RTF by the WiX Generator. -# The expected encoding of the .txt file is UTF-8. -# -# With CPACK_WIX_LICENSE_RTF you can override the license file used by the -# WiX Generator in case CPACK_RESOURCE_FILE_LICENSE is in an unsupported -# format or the .txt -> .rtf conversion does not work as expected. - set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") -# .. variable:: CPACK_WIX_PRODUCT_ICON -# The Icon shown next to the program name in Add/Remove programs. -# set (CPACK_WIX_PRODUCT_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") -# -# .. variable:: CPACK_WIX_UI_BANNER -# -# The bitmap will appear at the top of all installer pages other than the -# welcome and completion dialogs. -# -# If set, this image will replace the default banner image. -# -# This image must be 493 by 58 pixels. -# -# .. variable:: CPACK_WIX_UI_DIALOG -# -# Background bitmap used on the welcome and completion dialogs. -# -# If this variable is set, the installer will replace the default dialog -# image. -# -# This image must be 493 by 312 pixels. -# - elseif (APPLE) - list (APPEND CPACK_GENERATOR "STGZ") - list (APPEND CPACK_GENERATOR "DragNDrop") - set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) - set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") -# set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/h5SZ.gif") - - option (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE "Package the ${PLUGIN_PACKAGE_NAME} Library in a Bundle" OFF) - if (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE) - list (APPEND CPACK_GENERATOR "Bundle") - set (CPACK_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - set (CPACK_BUNDLE_LOCATION "/") # make sure CMAKE_INSTALL_PREFIX ends in / - set (CMAKE_INSTALL_PREFIX "/${CPACK_BUNDLE_NAME}.framework/Versions/${CPACK_PACKAGE_VERSION}/${CPACK_PACKAGE_NAME}/") -# set (CPACK_BUNDLE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5SZ.icns") -# set (CPACK_BUNDLE_PLIST "${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist") - set (CPACK_APPLE_GUI_INFO_STRING "${PLUGIN_PACKAGE_NAME} Plugin Library") - set (CPACK_APPLE_GUI_COPYRIGHT "Copyright © ???. All rights reserved.") - set (CPACK_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") - set (CPACK_APPLE_GUI_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - set (CPACK_APPLE_GUI_VERSION_STRING "${CPACK_PACKAGE_VERSION_STRING}") - set (CPACK_APPLE_GUI_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") - #----------------------------------------------------------------------------- - # Configure the Info.plist file for the install bundle - #----------------------------------------------------------------------------- -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CPack.Info.plist.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist @ONLY -# ) -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/PkgInfo.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo @ONLY -# ) -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/version.plist.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist @ONLY -# ) -# install ( -# FILES ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist -# DESTINATION .. -# ) + set (CPACK_PACKAGE_VERSION_MAJOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}") + set (CPACK_PACKAGE_VERSION_MINOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}") + set (CPACK_PACKAGE_VERSION_PATCH "") + #set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") + set (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + set (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + set (CPACK_PACKAGE_RELOCATABLE TRUE) + set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PLUGIN_NAME} Installation") + set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSION}") + + set (CPACK_GENERATOR "TGZ") + if (WIN32) + set (CPACK_GENERATOR "ZIP") + + if (NSIS_EXECUTABLE) + list (APPEND CPACK_GENERATOR "NSIS") + endif () + set (CPACK_NSIS_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + if (CMAKE_CL_64) + set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") + set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION} (Win64)") + else () + set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") + set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + endif () + # set the install/unistall icon used for the installer itself + # There is a bug in NSI that does not handle full unix paths properly. + #set (CPACK_NSIS_MUI_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") + #set (CPACK_NSIS_MUI_UNIICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") + # set the package header icon for MUI + #set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.bmp") + set (CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}, is a dynamic filter for HDF5") + #set (CPACK_PACKAGE_INSTALL_DIRECTORY "plugins") + set (CPACK_NSIS_CONTACT "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + set (CPACK_NSIS_MODIFY_PATH ON) + + if (WIX_EXECUTABLE) + list (APPEND CPACK_GENERATOR "WIX") + endif () + # WiX variables + set (CPACK_WIX_UNINSTALL "1") + set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + elseif (APPLE) + list (APPEND CPACK_GENERATOR "STGZ") + list (APPEND CPACK_GENERATOR "DragNDrop") + set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) + set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") +# set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/h5sz.gif") + + option (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE "Package the ${PLUGIN_PACKAGE_NAME} Library in a Bundle" OFF) + if (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE) + list (APPEND CPACK_GENERATOR "Bundle") + set (CPACK_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + set (CPACK_BUNDLE_LOCATION "/") # make sure CMAKE_INSTALL_PREFIX ends in / + set (CMAKE_INSTALL_PREFIX "/${CPACK_BUNDLE_NAME}.framework/Versions/${CPACK_PACKAGE_VERSION}/${CPACK_PACKAGE_NAME}/") +# set (CPACK_BUNDLE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5SZ.icns") +# set (CPACK_BUNDLE_PLIST "${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist") + set (CPACK_APPLE_GUI_INFO_STRING "${PLUGIN_PACKAGE_NAME} Plugin Library") + set (CPACK_APPLE_GUI_COPYRIGHT "Copyright © ???. All rights reserved.") + set (CPACK_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") + set (CPACK_APPLE_GUI_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + set (CPACK_APPLE_GUI_VERSION_STRING "${CPACK_PACKAGE_VERSION_STRING}") + set (CPACK_APPLE_GUI_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") + #----------------------------------------------------------------------------- + # Configure the Info.plist file for the install bundle + #----------------------------------------------------------------------------- +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CPack.Info.plist.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist @ONLY +# ) +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/PkgInfo.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo @ONLY +# ) +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/version.plist.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist @ONLY +# ) +# install ( +# FILES ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist +# DESTINATION .. +# ) + endif () + else () + list (APPEND CPACK_GENERATOR "STGZ") + set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") + set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) + + set (CPACK_DEBIAN_PACKAGE_SECTION "Libraries") + set (CPACK_DEBIAN_PACKAGE_MAINTAINER "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + +# list (APPEND CPACK_GENERATOR "RPM") + set (CPACK_RPM_PACKAGE_RELEASE "1") + set (CPACK_RPM_COMPONENT_INSTALL ON) + set (CPACK_RPM_PACKAGE_RELOCATABLE ON) endif () - else () - list (APPEND CPACK_GENERATOR "STGZ") - set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") - set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) - set (CPACK_DEBIAN_PACKAGE_SECTION "Libraries") - set (CPACK_DEBIAN_PACKAGE_MAINTAINER "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};ALL;/") + else () + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};libraries;/") + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};headers;/") + endif () -# list (APPEND CPACK_GENERATOR "RPM") - set (CPACK_RPM_PACKAGE_RELEASE "1") - set (CPACK_RPM_COMPONENT_INSTALL ON) - set (CPACK_RPM_PACKAGE_RELOCATABLE ON) + set (CPACK_ALL_INSTALL_TYPES Full User) + set (CPACK_INSTALL_TYPE_FULL_DISPLAY_NAME "Everything") endif () if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};ALL;/") - else () - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};libraries;/") - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};headers;/") + include (CPack) + + cpack_add_component_group(Runtime) + + cpack_add_component (libraries + DISPLAY_NAME "${PLUGIN_NAME} Libraries" + GROUP Runtime + ) + cpack_add_component_group(hdfdocuments + DISPLAY_NAME "${PLUGIN_NAME} Documents" + GROUP Documents + INSTALL_TYPES Full User + ) endif () - - set (CPACK_ALL_INSTALL_TYPES Full User) - set (CPACK_INSTALL_TYPE_FULL_DISPLAY_NAME "Everything") - - endif () - - if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) - include (CPack) - - cpack_add_component_group(Runtime) - - cpack_add_component (libraries - DISPLAY_NAME "${PLUGIN_NAME} Libraries" - GROUP Runtime - ) - cpack_add_component_group(hdfdocuments - DISPLAY_NAME "${PLUGIN_NAME} Documents" - GROUP Documents - INSTALL_TYPES Full User - ) endif () endmacro () diff --git a/SZ/config/cmake/grepTest.cmake b/SZ/config/cmake/grepTest.cmake index 26e295c2..caa818b5 100755 --- a/SZ/config/cmake/grepTest.cmake +++ b/SZ/config/cmake/grepTest.cmake @@ -65,5 +65,5 @@ if (TEST_EXPECT) endif () # everything went fine... -message ("Passed: The output of ${TEST_PROGRAM} matched") +message (STATUS "Passed: The output of ${TEST_PROGRAM} matched") diff --git a/SZ/config/toolchain/aarch64.cmake b/SZ/config/toolchain/aarch64.cmake index aa84a742..69968336 100644 --- a/SZ/config/toolchain/aarch64.cmake +++ b/SZ/config/toolchain/aarch64.cmake @@ -2,7 +2,7 @@ set(TOOLCHAIN_PREFIX aarch64-linux-gnu) set(ANDROID_NDK /opt/android-ndk-linux) set (CMAKE_SYSTEM_NAME Android) set (CMAKE_ANDROID_ARCH_ABI x86_64) -#set (CMAKE_ANDROID_STANDALONE_TOOLCHAIN ${ANDROID_NDK}/build/cmake/andriod.toolchain.cmake) +#set (CMAKE_ANDROID_STANDALONE_TOOLCHAIN ${ANDROID_NDK}/build/cmake/android.toolchain.cmake) set (CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc) set (CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++) #set (CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres) @@ -11,6 +11,7 @@ set (CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX}) set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set (CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) set (CMAKE_CROSSCOMPILING_EMULATOR qemu-aarch64) include_directories(/usr/${TOOLCHAIN_PREFIX}/include) diff --git a/SZ/config/toolchain/intel.cmake b/SZ/config/toolchain/intel.cmake new file mode 100644 index 00000000..f8f60b28 --- /dev/null +++ b/SZ/config/toolchain/intel.cmake @@ -0,0 +1,11 @@ +# Uncomment the following to use cross-compiling +#set(CMAKE_SYSTEM_NAME Linux) + +set(CMAKE_COMPILER_VENDOR "intel") + +set(CMAKE_C_COMPILER icx) +set(CMAKE_CXX_COMPILER icpx) +set(CMAKE_Fortran_COMPILER ifx) + +# the following is used if cross-compiling +set(CMAKE_CROSSCOMPILING_EMULATOR "") diff --git a/ZFP/CMakeLists.txt b/ZFP/CMakeLists.txt index 6f6e7bab..b15dbce2 100644 --- a/ZFP/CMakeLists.txt +++ b/ZFP/CMakeLists.txt @@ -80,7 +80,7 @@ set (H5ZFP_PACKAGE_URL "http://www.hdfgroup.org") set (H5ZFP_PACKAGE_BUGREPORT "help@hdfgroup.org") set (H5ZFP_PACKAGE_SOVERSION "${H5ZFP_SOVERS_MAJOR}.${H5ZFP_SOVERS_RELEASE}.${H5ZFP_SOVERS_MINOR}") set (H5ZFP_PACKAGE_SOVERSION_MAJOR "${H5ZFP_SOVERS_MAJOR}") -message("Configuring for zfp HDF5 Plugin version: " ${H5ZFP_PACKAGE_STRING}) +message(STATUS "Configuring for zfp HDF5 Plugin version: " ${H5ZFP_PACKAGE_STRING}) #----------------------------------------------------------------------------- # Include some macros for reusable code @@ -216,7 +216,7 @@ if (ZFP_FOUND) set (ZFP_INCLUDE_DIRS ${ZFP_INCLUDE_DIR}) else () if (H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") - EXTERNAL_ZFP_LIBRARY (${H5PL_ALLOW_EXTERNAL_SUPPORT} STATIC) + EXTERNAL_ZFP_LIBRARY (${H5PL_ALLOW_EXTERNAL_SUPPORT}) set (H5_HAVE_ZFP_H 1) set (H5_HAVE_ZFP 1) message (STATUS "Filter ZFP is built") @@ -227,10 +227,6 @@ endif () message (STATUS "zfp found: INC=${ZFP_INCLUDE_DIR} TOOLS=${ZFP_LIBRARIES}") set (LINK_LIBS ${LINK_LIBS} ${ZFP_LIBRARIES}) -if (ZFP_FOUND) - PACKAGE_ZFP_LIBRARY (${H5PL_ALLOW_EXTERNAL_SUPPORT}) -endif () - #----------------------------------------------------------------------------- # Generate the zfp_config.h file containing user settings needed by compilation #----------------------------------------------------------------------------- @@ -251,12 +247,6 @@ endif () add_subdirectory (src) -if (H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") - if (ZFP_FOUND AND ZFP_USE_EXTERNAL) - add_dependencies (${H5ZFP_LIB_TARGET} ZFP) - endif () -endif () - option (BUILD_EXAMPLES "Build h5zfp Examples" OFF) if (BUILD_EXAMPLES) add_subdirectory (example) diff --git a/ZFP/config/cmake/H5ZFPMacros.cmake b/ZFP/config/cmake/H5ZFPMacros.cmake index efe83d26..40236050 100644 --- a/ZFP/config/cmake/H5ZFPMacros.cmake +++ b/ZFP/config/cmake/H5ZFPMacros.cmake @@ -9,94 +9,67 @@ # If you do not have access to either file, you may request a copy from # help@hdfgroup.org. # + +include (FetchContent) #------------------------------------------------------------------------------- -macro (EXTERNAL_ZFP_LIBRARY compress_type libtype) - if (${libtype} MATCHES "SHARED") - set (BUILD_EXT_SHARED_LIBS "ON") - else () - set (BUILD_EXT_SHARED_LIBS "OFF") - if (WIN32) - set (ZFP_LIBRARY_PREFIX "lib") - endif () +macro (EXTERNAL_ZFP_LIBRARY compress_type) + if (WIN32) + set (ZFP_LIBRARY_PREFIX "lib") endif () if (${compress_type} MATCHES "GIT") - EXTERNALPROJECT_ADD (ZFP + FetchContent_Declare (ZFP GIT_REPOSITORY ${ZFP_URL} GIT_TAG ${ZFP_BRANCH} - INSTALL_COMMAND "" - CMAKE_ARGS - -DBUILD_SHARED_LIBS:BOOL=${BUILD_EXT_SHARED_LIBS} - -DZFP_PACKAGE_EXT:STRING=${ZFP_PACKAGE_EXT} - -DZFP_EXTERNALLY_CONFIGURED:BOOL=OFF - -DBUILD_UTILITIES:BOOL=OFF - -DBUILD_TESTING:BOOL=OFF - -DZFP_WITH_OPENMP=OFF - -DZFP_BIT_STREAM_WORD_SIZE=8 - -DZFP_LIBRARY_PREFIX:STRING=${ZFP_LIBRARY_PREFIX} - -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} - -DCMAKE_ANSI_CFLAGS:STRING=${CMAKE_ANSI_CFLAGS} - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DH5PL_USE_GNU_DIRS:STRING=${H5PL_USE_GNU_DIRS} - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} ) elseif (${compress_type} MATCHES "TGZ") - EXTERNALPROJECT_ADD (ZFP + FetchContent_Declare (ZFP URL ${ZFP_URL} - URL_MD5 "" - INSTALL_COMMAND "" - CMAKE_ARGS - -DBUILD_SHARED_LIBS:BOOL=${BUILD_EXT_SHARED_LIBS} - -DZFP_PACKAGE_EXT:STRING=${ZFP_PACKAGE_EXT} - -DZFP_EXTERNALLY_CONFIGURED:BOOL=OFF - -DBUILD_UTILITIES:BOOL=OFF - -DBUILD_TESTING:BOOL=OFF - -DZFP_WITH_OPENMP=OFF - -DZFP_BIT_STREAM_WORD_SIZE=8 - -DZFP_LIBRARY_PREFIX:STRING=${ZFP_LIBRARY_PREFIX} - -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} - -DCMAKE_ANSI_CFLAGS:STRING=${CMAKE_ANSI_CFLAGS} - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DH5PL_USE_GNU_DIRS:STRING=${H5PL_USE_GNU_DIRS} - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} + URL_HASH "" ) endif () - externalproject_get_property (ZFP BINARY_DIR SOURCE_DIR) + FetchContent_GetProperties (ZFP) + if (NOT zfp_POPULATED) + FetchContent_Populate (ZFP) + + set (ZFP_WITH_OPENMP OFF CACHE BOOL "") + set (ZFP_BIT_STREAM_WORD_SIZE 8 CACHE STRING "") + set (ZFP_LIBRARY_PREFIX ${ZFP_LIBRARY_PREFIX} CACHE STRING "") + + # Store the old value of the 'BUILD_SHARED_LIBS' + set (BUILD_SHARED_LIBS_OLD ${BUILD_SHARED_LIBS}) + # Make subproject to use 'BUILD_SHARED_LIBS=OFF' setting. + set (BUILD_SHARED_LIBS OFF CACHE INTERNAL "Build SHARED libraries") + # Store the old value of the 'BUILD_TESTING' + set (BUILD_TESTING_OLD ${BUILD_TESTING}) + # Make subproject to use 'BUILD_TESTING=OFF' setting. + set (BUILD_TESTING OFF CACHE INTERNAL "Build Unit Testing") + # Store the old value of the 'BUILD_UTILITIES' + set (BUILD_UTILITIES_OLD ${BUILD_UTILITIES}) + # Make subproject to use 'BUILD_UTILITIES=OFF' setting. + set (BUILD_UTILITIES OFF CACHE INTERNAL "Build Utilities") + # Store the old value of the 'BUILD_EXAMPLES' + set (BUILD_EXAMPLES_OLD ${BUILD_EXAMPLES}) + # Make subproject to use 'BUILD_EXAMPLES=OFF' setting. + set (BUILD_EXAMPLES OFF CACHE INTERNAL "Build Examples") - # Create imported target ZFP - add_library (${ZFP_LIB_TARGET} ${libtype} IMPORTED) - HDF_IMPORT_SET_LIB_OPTIONS (${ZFP_LIB_TARGET} "zfp" ${libtype} "") - add_dependencies (${ZFP_LIB_TARGET} ZFP) + add_subdirectory (${zfp_SOURCE_DIR} ${zfp_BINARY_DIR}) + + # Restore the old value of the parameter + set (BUILD_EXAMPLES ${BUILD_EXAMPLES_OLD} CACHE BOOL "Build Examples" FORCE) + # Restore the old value of the parameter + set (BUILD_UTILITIES ${BUILD_UTILITIES_OLD} CACHE BOOL "Build Utilities" FORCE) + # Restore the old value of the parameter + set (BUILD_TESTING ${BUILD_TESTING_OLD} CACHE BOOL "Build Unit Testing" FORCE) + # Restore the old value of the parameter + set (BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_OLD} CACHE BOOL "Type of libraries to build" FORCE) + endif () # include (${BINARY_DIR}/ZFP-targets.cmake) set (ZFP_LIBRARY "zfp") - set (ZFP_INCLUDE_DIR_GEN "${BINARY_DIR}") - set (ZFP_INCLUDE_DIR "${SOURCE_DIR}/include") + set (ZFP_INCLUDE_DIR_GEN "${zfp_BINARY_DIR}") + set (ZFP_INCLUDE_DIR "${zfp_SOURCE_DIR}/include") set (ZFP_FOUND 1) set (ZFP_LIBRARIES ${ZFP_LIBRARY}) set (ZFP_INCLUDE_DIRS ${ZFP_INCLUDE_DIR_GEN} ${ZFP_INCLUDE_DIR}) endmacro () - -#------------------------------------------------------------------------------- -macro (PACKAGE_ZFP_LIBRARY compress_type) - add_custom_target (ZFP-GenHeader-Copy ALL - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${ZFP_INCLUDE_DIR}/zfp.h ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ - COMMENT "Copying ${ZFP_INCLUDE_DIR}/zfp.h to ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/" - ) - set (EXTERNAL_HEADER_LIST ${EXTERNAL_HEADER_LIST} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/zfp.h) - if (${compress_type} MATCHES "GIT" OR ${compress_type} MATCHES "TGZ") - add_dependencies (ZFP-GenHeader-Copy ZFP) - endif () -endmacro () diff --git a/ZFP/config/cmake/HDFMacros.cmake b/ZFP/config/cmake/HDFMacros.cmake index 5e63ec23..0cf9f192 100644 --- a/ZFP/config/cmake/HDFMacros.cmake +++ b/ZFP/config/cmake/HDFMacros.cmake @@ -490,6 +490,8 @@ macro (HDF_DIR_PATHS package_prefix) set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) endif () endif () + + include (FetchContent) endmacro () macro (ADD_H5_FLAGS h5_flag_var infile) diff --git a/ZFP/config/cmake/HDFPluginMacros.cmake b/ZFP/config/cmake/HDFPluginMacros.cmake index 2d79deca..b7939644 100644 --- a/ZFP/config/cmake/HDFPluginMacros.cmake +++ b/ZFP/config/cmake/HDFPluginMacros.cmake @@ -67,7 +67,7 @@ macro (BASIC_SETTINGS varname) if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR) set (${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR ${CMAKE_INSTALL_DOCDIR}) endif () - message(STATUS "GNU: ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR}") + message(STATUS "GNU: ${${PLUGIN_PACKAGE_NAME}_INSTALL_LIB_DIR}") endif () if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_BIN_DIR) @@ -100,7 +100,7 @@ macro (BASIC_SETTINGS varname) if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR) set (${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR}) endif () - message(STATUS "Final: ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR}") + message(STATUS "Final: ${${PLUGIN_PACKAGE_NAME}_INSTALL_LIB_DIR}") #----------------------------------------------------------------------------- # Setup output Directories @@ -115,6 +115,15 @@ macro (BASIC_SETTINGS varname) set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all static libraries." ) + get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) + if(_isMultiConfig) + set (CMAKE_TEST_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}) + set (CMAKE_PDB_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all pdb files." + ) + else () + set (CMAKE_TEST_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) + endif () else () # if we are externally configured, but the project uses old cmake scripts # this may not be set @@ -304,7 +313,7 @@ macro (HDF5_SUPPORT link_hdf) set (H5PL_HDF5_HAVE_H5PUBCONF_H 1) set (H5PL_HDF5_HAVE_HDF5 1) set (H5PL_HDF5_HEADER "h5pubconf.h") - message (STATUS "HDF5 found: INC=${HDF5_INCLUDE_DIRS} TOOLS=${HDF5_TOOLS_DIR}") + message (STATUS "HDF5-${HDF5_VERSION_STRING} found: INC=${HDF5_INCLUDE_DIRS} TOOLS=${HDF5_TOOLS_DIR}") else () message (FATAL_ERROR " HDF5 is Required for plugin library") endif () @@ -330,227 +339,224 @@ macro (INSTALL_SUPPORT varname) string(TOUPPER ${varname} PLUGIN_PACKAGE_NAME) string(TOLOWER ${varname} PLUGIN_NAME) - #----------------------------------------------------------------------------- - # Set variables needed for installation - #----------------------------------------------------------------------------- - set (${PLUGIN_PACKAGE_NAME}_VERSION_STRING ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}) - set (${PLUGIN_PACKAGE_NAME}_VERSION_MAJOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}) - set (${PLUGIN_PACKAGE_NAME}_VERSION_MINOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}) - - #----------------------------------------------------------------------------- - # Configure the H5PL_Examples.cmake file and the examples - #----------------------------------------------------------------------------- - configure_file ( - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5PL_Examples.cmake.in - ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake @ONLY - ) - install ( - FILES - ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CTestScript.cmake - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/HDFoptions.cmake + if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) + #----------------------------------------------------------------------------- + # Set variables needed for installation + #----------------------------------------------------------------------------- + set (${PLUGIN_PACKAGE_NAME}_VERSION_STRING ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}) + set (${PLUGIN_PACKAGE_NAME}_VERSION_MAJOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}) + set (${PLUGIN_PACKAGE_NAME}_VERSION_MINOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}) + + #----------------------------------------------------------------------------- + # Configure the H5PL_Examples.cmake file and the examples + #----------------------------------------------------------------------------- + if (${PLUGIN_PACKAGE_NAME}_BUILD_TESTING) + configure_file ( + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5PL_Examples.cmake.in + ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake @ONLY + ) + install ( + FILES + ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CTestScript.cmake + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/HDFoptions.cmake DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} - COMPONENT hdfdocuments - ) - execute_process( - COMMAND ${CMAKE_COMMAND} -E copy_directory ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/binex ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples - ) - install ( - DIRECTORY ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples - DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} - USE_SOURCE_PERMISSIONS - COMPONENT hdfdocuments - ) + COMPONENT hdfdocuments + ) + execute_process( + COMMAND ${CMAKE_COMMAND} -E copy_directory ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/binex ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples + ) + install ( + DIRECTORY ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples + DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} + USE_SOURCE_PERMISSIONS + COMPONENT hdfdocuments + ) + endif () - #----------------------------------------------------------------------------- - # Configure the README.txt file for the binary package - #----------------------------------------------------------------------------- - PLUGIN_README_PROPERTIES (${PLUGIN_PACKAGE_NAME}) + #----------------------------------------------------------------------------- + # Configure the README.txt file for the binary package + #----------------------------------------------------------------------------- + PLUGIN_README_PROPERTIES (${PLUGIN_PACKAGE_NAME}) - #----------------------------------------------------------------------------- - # Check for Installation Utilities - #----------------------------------------------------------------------------- - if (WIN32) - set (PF_ENV_EXT "(x86)") - find_program (NSIS_EXECUTABLE NSIS.exe PATHS "$ENV{ProgramFiles}\\NSIS" "$ENV{ProgramFiles${PF_ENV_EXT}}\\NSIS") - if(NOT CPACK_WIX_ROOT) - file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT) - endif() - find_program (WIX_EXECUTABLE candle PATHS "${CPACK_WIX_ROOT}/bin") - endif () - - #----------------------------------------------------------------------------- - # Set the cpack variables - #----------------------------------------------------------------------------- - if (NOT ${PLUGIN_PACKAGE_NAME}_EXTERNALLY_CONFIGURED) - set (CPACK_PACKAGE_VENDOR "HDF_Group") - set (CPACK_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}") - if (CDASH_LOCAL) - set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}") - else () - set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_STRING}") + #----------------------------------------------------------------------------- + # Configure the COPYING.txt file for the windows binary package + #----------------------------------------------------------------------------- + if (WIN32) + configure_file (${CMAKE_SOURCE_DIR}/COPYING ${CMAKE_BINARY_DIR}/COPYING.txt @ONLY) endif () - set (CPACK_PACKAGE_VERSION_MAJOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}") - set (CPACK_PACKAGE_VERSION_MINOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}") - set (CPACK_PACKAGE_VERSION_PATCH "") - #set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") - set (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - set (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - set (CPACK_PACKAGE_RELOCATABLE TRUE) - set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PLUGIN_NAME} Installation") - set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSION}") - - set (CPACK_GENERATOR "TGZ") + + #----------------------------------------------------------------------------- + # Add Document File(s) to CMake Install + #----------------------------------------------------------------------------- + install ( + FILES + ${${PLUGIN_PACKAGE_NAME}_SOURCE_DIR}/docs/PluginLibraries.txt + DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR} + COMPONENT hdfdocuments + ) + + #----------------------------------------------------------------------------- + # Check for Installation Utilities + #----------------------------------------------------------------------------- if (WIN32) - set (CPACK_GENERATOR "ZIP") + set (PF_ENV_EXT "(x86)") + find_program (NSIS_EXECUTABLE NSIS.exe PATHS "$ENV{ProgramFiles}\\NSIS" "$ENV{ProgramFiles${PF_ENV_EXT}}\\NSIS") + if(NOT CPACK_WIX_ROOT) + file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT) + endif() + find_program (WIX_EXECUTABLE candle PATHS "${CPACK_WIX_ROOT}/bin") + endif () - if (NSIS_EXECUTABLE) - list (APPEND CPACK_GENERATOR "NSIS") - endif () - # Installers for 32- vs. 64-bit CMake: - # - Root install directory (displayed to end user at installer-run time) - # - "NSIS package/display name" (text used in the installer GUI) - # - Registry key used to store info about the installation - set (CPACK_NSIS_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - if (CMAKE_CL_64) - set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") - set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION} (Win64)") + if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + if (CMAKE_HOST_UNIX) + set (CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/HDF_Group/${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}/${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}" + CACHE PATH "Install path prefix, prepended onto install directories." FORCE + ) else () - set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") - set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + GetDefaultWindowsPrefixBase(CMAKE_GENERIC_PROGRAM_FILES) + set (CMAKE_INSTALL_PREFIX + "${CMAKE_GENERIC_PROGRAM_FILES}/HDF_Group/${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}/${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}" + CACHE PATH "Install path prefix, prepended onto install directories." FORCE + ) + set (CMAKE_GENERIC_PROGRAM_FILES) endif () - # set the install/unistall icon used for the installer itself - # There is a bug in NSI that does not handle full unix paths properly. - #set (CPACK_NSIS_MUI_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") - #set (CPACK_NSIS_MUI_UNIICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") - # set the package header icon for MUI - #set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.bmp") - set (CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}, is a dynamic filter for HDF5") - #set (CPACK_PACKAGE_INSTALL_DIRECTORY "plugins") - set (CPACK_NSIS_CONTACT "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") - set (CPACK_NSIS_MODIFY_PATH ON) - - if (WIX_EXECUTABLE) - list (APPEND CPACK_GENERATOR "WIX") + endif () + + #----------------------------------------------------------------------------- + # Set the cpack variables + #----------------------------------------------------------------------------- + if (NOT ${PLUGIN_PACKAGE_NAME}_EXTERNALLY_CONFIGURED) + set (CPACK_PACKAGE_VENDOR "HDF_Group") + set (CPACK_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}") + if (CDASH_LOCAL) + set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}") + else () + set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_STRING}") endif () - #WiX variables - set (CPACK_WIX_UNINSTALL "1") -# .. variable:: CPACK_WIX_LICENSE_RTF -# RTF License File -# -# If CPACK_RESOURCE_FILE_LICENSE has an .rtf extension it is used as-is. -# -# If CPACK_RESOURCE_FILE_LICENSE has an .txt extension it is implicitly -# converted to RTF by the WiX Generator. -# The expected encoding of the .txt file is UTF-8. -# -# With CPACK_WIX_LICENSE_RTF you can override the license file used by the -# WiX Generator in case CPACK_RESOURCE_FILE_LICENSE is in an unsupported -# format or the .txt -> .rtf conversion does not work as expected. - set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") -# .. variable:: CPACK_WIX_PRODUCT_ICON -# The Icon shown next to the program name in Add/Remove programs. -# set (CPACK_WIX_PRODUCT_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") -# -# .. variable:: CPACK_WIX_UI_BANNER -# -# The bitmap will appear at the top of all installer pages other than the -# welcome and completion dialogs. -# -# If set, this image will replace the default banner image. -# -# This image must be 493 by 58 pixels. -# -# .. variable:: CPACK_WIX_UI_DIALOG -# -# Background bitmap used on the welcome and completion dialogs. -# -# If this variable is set, the installer will replace the default dialog -# image. -# -# This image must be 493 by 312 pixels. -# - elseif (APPLE) - list (APPEND CPACK_GENERATOR "STGZ") - list (APPEND CPACK_GENERATOR "DragNDrop") - set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) - set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") -# set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/h5zfp.gif") - - option (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE "Package the ${PLUGIN_PACKAGE_NAME} Library in a Bundle" OFF) - if (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE) - list (APPEND CPACK_GENERATOR "Bundle") - set (CPACK_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - set (CPACK_BUNDLE_LOCATION "/") # make sure CMAKE_INSTALL_PREFIX ends in / - set (CMAKE_INSTALL_PREFIX "/${CPACK_BUNDLE_NAME}.framework/Versions/${CPACK_PACKAGE_VERSION}/${CPACK_PACKAGE_NAME}/") -# set (CPACK_BUNDLE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5ZFP.icns") -# set (CPACK_BUNDLE_PLIST "${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist") - set (CPACK_APPLE_GUI_INFO_STRING "${PLUGIN_PACKAGE_NAME} Plugin Library") - set (CPACK_APPLE_GUI_COPYRIGHT "Copyright © ???. All rights reserved.") - set (CPACK_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") - set (CPACK_APPLE_GUI_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - set (CPACK_APPLE_GUI_VERSION_STRING "${CPACK_PACKAGE_VERSION_STRING}") - set (CPACK_APPLE_GUI_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") - #----------------------------------------------------------------------------- - # Configure the Info.plist file for the install bundle - #----------------------------------------------------------------------------- -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CPack.Info.plist.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist @ONLY -# ) -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/PkgInfo.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo @ONLY -# ) -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/version.plist.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist @ONLY -# ) -# install ( -# FILES ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist -# DESTINATION .. -# ) + set (CPACK_PACKAGE_VERSION_MAJOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}") + set (CPACK_PACKAGE_VERSION_MINOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}") + set (CPACK_PACKAGE_VERSION_PATCH "") + #set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") + set (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + set (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + set (CPACK_PACKAGE_RELOCATABLE TRUE) + set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PLUGIN_NAME} Installation") + set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSION}") + + set (CPACK_GENERATOR "TGZ") + if (WIN32) + set (CPACK_GENERATOR "ZIP") + + if (NSIS_EXECUTABLE) + list (APPEND CPACK_GENERATOR "NSIS") + endif () + set (CPACK_NSIS_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + if (CMAKE_CL_64) + set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") + set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION} (Win64)") + else () + set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") + set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + endif () + # set the install/unistall icon used for the installer itself + # There is a bug in NSI that does not handle full unix paths properly. + #set (CPACK_NSIS_MUI_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") + #set (CPACK_NSIS_MUI_UNIICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") + # set the package header icon for MUI + #set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.bmp") + set (CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}, is a dynamic filter for HDF5") + #set (CPACK_PACKAGE_INSTALL_DIRECTORY "plugins") + set (CPACK_NSIS_CONTACT "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + set (CPACK_NSIS_MODIFY_PATH ON) + + if (WIX_EXECUTABLE) + list (APPEND CPACK_GENERATOR "WIX") + endif () + # WiX variables + set (CPACK_WIX_UNINSTALL "1") + set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + elseif (APPLE) + list (APPEND CPACK_GENERATOR "STGZ") + list (APPEND CPACK_GENERATOR "DragNDrop") + set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) + set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") +# set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/h5zfp.gif") + + option (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE "Package the ${PLUGIN_PACKAGE_NAME} Library in a Bundle" OFF) + if (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE) + list (APPEND CPACK_GENERATOR "Bundle") + set (CPACK_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + set (CPACK_BUNDLE_LOCATION "/") # make sure CMAKE_INSTALL_PREFIX ends in / + set (CMAKE_INSTALL_PREFIX "/${CPACK_BUNDLE_NAME}.framework/Versions/${CPACK_PACKAGE_VERSION}/${CPACK_PACKAGE_NAME}/") +# set (CPACK_BUNDLE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5ZFP.icns") +# set (CPACK_BUNDLE_PLIST "${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist") + set (CPACK_APPLE_GUI_INFO_STRING "${PLUGIN_PACKAGE_NAME} Plugin Library") + set (CPACK_APPLE_GUI_COPYRIGHT "Copyright © ???. All rights reserved.") + set (CPACK_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") + set (CPACK_APPLE_GUI_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + set (CPACK_APPLE_GUI_VERSION_STRING "${CPACK_PACKAGE_VERSION_STRING}") + set (CPACK_APPLE_GUI_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") + #----------------------------------------------------------------------------- + # Configure the Info.plist file for the install bundle + #----------------------------------------------------------------------------- +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CPack.Info.plist.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist @ONLY +# ) +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/PkgInfo.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo @ONLY +# ) +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/version.plist.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist @ONLY +# ) +# install ( +# FILES ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist +# DESTINATION .. +# ) + endif () + else () + list (APPEND CPACK_GENERATOR "STGZ") + set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") + set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) + + set (CPACK_DEBIAN_PACKAGE_SECTION "Libraries") + set (CPACK_DEBIAN_PACKAGE_MAINTAINER "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + +# list (APPEND CPACK_GENERATOR "RPM") + set (CPACK_RPM_PACKAGE_RELEASE "1") + set (CPACK_RPM_COMPONENT_INSTALL ON) + set (CPACK_RPM_PACKAGE_RELOCATABLE ON) endif () - else () - list (APPEND CPACK_GENERATOR "STGZ") - set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") - set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) - set (CPACK_DEBIAN_PACKAGE_SECTION "Libraries") - set (CPACK_DEBIAN_PACKAGE_MAINTAINER "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};ALL;/") + else () + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};libraries;/") + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};headers;/") + endif () -# list (APPEND CPACK_GENERATOR "RPM") - set (CPACK_RPM_PACKAGE_RELEASE "1") - set (CPACK_RPM_COMPONENT_INSTALL ON) - set (CPACK_RPM_PACKAGE_RELOCATABLE ON) + set (CPACK_ALL_INSTALL_TYPES Full User) + set (CPACK_INSTALL_TYPE_FULL_DISPLAY_NAME "Everything") endif () if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};ALL;/") - else () - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};libraries;/") - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};headers;/") + include (CPack) + + cpack_add_component_group(Runtime) + + cpack_add_component (libraries + DISPLAY_NAME "${PLUGIN_NAME} Libraries" + GROUP Runtime + ) + cpack_add_component_group(hdfdocuments + DISPLAY_NAME "${PLUGIN_NAME} Documents" + GROUP Documents + INSTALL_TYPES Full User + ) endif () - - set (CPACK_ALL_INSTALL_TYPES Full User) - set (CPACK_INSTALL_TYPE_FULL_DISPLAY_NAME "Everything") - - endif () - - if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) - include (CPack) - - cpack_add_component_group(Runtime) - - cpack_add_component (libraries - DISPLAY_NAME "${PLUGIN_NAME} Libraries" - GROUP Runtime - ) - cpack_add_component_group(hdfdocuments - DISPLAY_NAME "${PLUGIN_NAME} Documents" - GROUP Documents - INSTALL_TYPES Full User - ) endif () endmacro () diff --git a/ZFP/config/cmake/grepTest.cmake b/ZFP/config/cmake/grepTest.cmake index 26e295c2..caa818b5 100644 --- a/ZFP/config/cmake/grepTest.cmake +++ b/ZFP/config/cmake/grepTest.cmake @@ -65,5 +65,5 @@ if (TEST_EXPECT) endif () # everything went fine... -message ("Passed: The output of ${TEST_PROGRAM} matched") +message (STATUS "Passed: The output of ${TEST_PROGRAM} matched") diff --git a/ZFP/config/toolchain/aarch64.cmake b/ZFP/config/toolchain/aarch64.cmake index aa84a742..69968336 100644 --- a/ZFP/config/toolchain/aarch64.cmake +++ b/ZFP/config/toolchain/aarch64.cmake @@ -2,7 +2,7 @@ set(TOOLCHAIN_PREFIX aarch64-linux-gnu) set(ANDROID_NDK /opt/android-ndk-linux) set (CMAKE_SYSTEM_NAME Android) set (CMAKE_ANDROID_ARCH_ABI x86_64) -#set (CMAKE_ANDROID_STANDALONE_TOOLCHAIN ${ANDROID_NDK}/build/cmake/andriod.toolchain.cmake) +#set (CMAKE_ANDROID_STANDALONE_TOOLCHAIN ${ANDROID_NDK}/build/cmake/android.toolchain.cmake) set (CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc) set (CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++) #set (CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres) @@ -11,6 +11,7 @@ set (CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX}) set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set (CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) set (CMAKE_CROSSCOMPILING_EMULATOR qemu-aarch64) include_directories(/usr/${TOOLCHAIN_PREFIX}/include) diff --git a/ZFP/config/toolchain/intel.cmake b/ZFP/config/toolchain/intel.cmake new file mode 100644 index 00000000..f8f60b28 --- /dev/null +++ b/ZFP/config/toolchain/intel.cmake @@ -0,0 +1,11 @@ +# Uncomment the following to use cross-compiling +#set(CMAKE_SYSTEM_NAME Linux) + +set(CMAKE_COMPILER_VENDOR "intel") + +set(CMAKE_C_COMPILER icx) +set(CMAKE_CXX_COMPILER icpx) +set(CMAKE_Fortran_COMPILER ifx) + +# the following is used if cross-compiling +set(CMAKE_CROSSCOMPILING_EMULATOR "") diff --git a/ZSTD/CMakeLists.txt b/ZSTD/CMakeLists.txt index eaa7c9ab..a66f2779 100644 --- a/ZSTD/CMakeLists.txt +++ b/ZSTD/CMakeLists.txt @@ -60,7 +60,7 @@ set (H5ZSTD_PACKAGE_URL "http://www.hdfgroup.org") set (H5ZSTD_PACKAGE_BUGREPORT "help@hdfgroup.org") set (H5ZSTD_PACKAGE_SOVERSION "${H5ZSTD_SOVERS_MAJOR}.${H5ZSTD_SOVERS_RELEASE}.${H5ZSTD_SOVERS_MINOR}") set (H5ZSTD_PACKAGE_SOVERSION_MAJOR "${H5ZSTD_SOVERS_MAJOR}") -message("Configuring for zstd HDF5 Plugin version: " ${H5ZSTD_PACKAGE_STRING}) +message(STATUS "Configuring for zstd HDF5 Plugin version: " ${H5ZSTD_PACKAGE_STRING}) #----------------------------------------------------------------------------- # Include some macros for reusable code @@ -113,7 +113,7 @@ if (ZSTD_FOUND) set (ZSTD_INCLUDE_DIRS ${ZSTD_INCLUDE_DIR}) else () if (H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") - EXTERNAL_ZSTD_LIBRARY (${H5PL_ALLOW_EXTERNAL_SUPPORT} STATIC) + EXTERNAL_ZSTD_LIBRARY (${H5PL_ALLOW_EXTERNAL_SUPPORT}) set (H5ZSTD_HAVE_ZSTD 1) message (STATUS "Filter ZSTD is built") else () @@ -138,12 +138,6 @@ endif () add_subdirectory (src) -if (H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") - if (ZSTD_FOUND AND ZSTD_USE_EXTERNAL) - add_dependencies (${H5ZSTD_LIB_TARGET} ZSTD) - endif () -endif () - option (BUILD_EXAMPLES "Build h5zstd Examples" OFF) if (BUILD_EXAMPLES) add_subdirectory (example) diff --git a/ZSTD/config/cmake/H5ZSTDMacros.cmake b/ZSTD/config/cmake/H5ZSTDMacros.cmake index 6a37473c..995a9679 100644 --- a/ZSTD/config/cmake/H5ZSTDMacros.cmake +++ b/ZSTD/config/cmake/H5ZSTDMacros.cmake @@ -9,87 +9,52 @@ # If you do not have access to either file, you may request a copy from # help@hdfgroup.org. # + +include (FetchContent) #------------------------------------------------------------------------------- -macro (EXTERNAL_ZSTD_LIBRARY compress_type libtype) - if (${libtype} MATCHES "SHARED") - set (BUILD_EXT_SHARED_LIBS "ON") - else () - set (BUILD_EXT_SHARED_LIBS "OFF") - endif () +macro (EXTERNAL_ZSTD_LIBRARY compress_type) if (${compress_type} MATCHES "GIT") - EXTERNALPROJECT_ADD (ZSTD + FetchContent_Declare (ZSTD GIT_REPOSITORY ${ZSTD_URL} GIT_TAG ${ZSTD_BRANCH} - SOURCE_SUBDIR "build/cmake" - INSTALL_COMMAND "" - CMAKE_ARGS - -DBUILD_SHARED_LIBS:BOOL=${BUILD_EXT_SHARED_LIBS} - -DBUILD_TESTING:BOOL=OFF - -DZSTD_BUILD_PROGRAMS:BOOL=OFF - -DZSTD_BUILD_SHARED:BOOL=OFF - -DZSTD_LEGACY_SUPPORT:BOOL=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} - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} ) elseif (${compress_type} MATCHES "TGZ") - EXTERNALPROJECT_ADD (ZSTD + FetchContent_Declare (ZSTD URL ${ZSTD_URL} - URL_MD5 "" - SOURCE_SUBDIR "build/cmake" - INSTALL_COMMAND "" - CMAKE_ARGS - -DBUILD_SHARED_LIBS:BOOL=${BUILD_EXT_SHARED_LIBS} - -DBUILD_TESTING:BOOL=OFF - -DZSTD_BUILD_PROGRAMS:BOOL=OFF - -DZSTD_BUILD_SHARED:BOOL=OFF - -DZSTD_LEGACY_SUPPORT:BOOL=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} - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} + URL_HASH "" ) endif () - externalproject_get_property (ZSTD BINARY_DIR SOURCE_DIR) + FetchContent_GetProperties (ZSTD) + if (NOT zstd_POPULATED) + FetchContent_Populate (ZSTD) + + set (ZSTD_BUILD_PROGRAMS OFF CACHE BOOL "") + set (ZSTD_BUILD_SHARED OFF CACHE BOOL "") + set (ZSTD_LEGACY_SUPPORT OFF CACHE BOOL "") + + # Store the old value of the 'BUILD_SHARED_LIBS' + set (BUILD_SHARED_LIBS_OLD ${BUILD_SHARED_LIBS}) + # Make subproject to use 'BUILD_SHARED_LIBS=OFF' setting. + set (BUILD_SHARED_LIBS OFF CACHE INTERNAL "Build SHARED libraries") + # Store the old value of the 'BUILD_TESTING' + set (BUILD_TESTING_OLD ${BUILD_TESTING}) + # Make subproject to use 'BUILD_TESTING=OFF' setting. + set (BUILD_TESTING OFF CACHE INTERNAL "Build Unit Testing") + + add_subdirectory (${zstd_SOURCE_DIR}/build/cmake ${zstd_BINARY_DIR}) - # Create imported target ZSTD - add_library (zstd ${libtype} IMPORTED) - set(STATIC_LIBRARY_BASE_NAME zstd) - if (MSVC OR (WIN32 AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND NOT MINGW)) - set(STATIC_LIBRARY_BASE_NAME zstd_static) + # Restore the old value of the parameter + set (BUILD_TESTING ${BUILD_TESTING_OLD} CACHE BOOL "Build Unit Testing" FORCE) + # Restore the old value of the parameter + set (BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_OLD} CACHE BOOL "Type of libraries to build" FORCE) endif () - HDF_IMPORT_SET_LIB_OPTIONS (zstd "${STATIC_LIBRARY_BASE_NAME}" ${libtype} "" "NOPREFIX") - add_dependencies (zstd ZSTD) # include (${BINARY_DIR}/ZSTD-targets.cmake) - set (ZSTD_LIBRARY "zstd") + set (ZSTD_LIBRARY "libzstd_static") - set (ZSTD_INCLUDE_DIR_GEN "${BINARY_DIR}") - set (ZSTD_INCLUDE_DIR "${SOURCE_DIR}/lib") + set (ZSTD_INCLUDE_DIR_GEN "${zstd_BINARY_DIR}") + set (ZSTD_INCLUDE_DIR "${zstd_SOURCE_DIR}/lib") set (ZSTD_FOUND 1) set (ZSTD_LIBRARIES ${ZSTD_LIBRARY}) set (ZSTD_INCLUDE_DIRS ${ZSTD_INCLUDE_DIR_GEN} ${ZSTD_INCLUDE_DIR}) endmacro () - -#------------------------------------------------------------------------------- -macro (PACKAGE_ZSTD_LIBRARY compress_type) - add_custom_target (ZSTD-GenHeader-Copy ALL - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${ZSTD_INCLUDE_DIR}/zstd.h ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ - COMMENT "Copying ${ZSTD_INCLUDE_DIR}/zstd.h to ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/" - ) - set (EXTERNAL_HEADER_LIST ${EXTERNAL_HEADER_LIST} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/zstd.h) - if (${compress_type} MATCHES "GIT" OR ${compress_type} MATCHES "TGZ") - add_dependencies (ZSTD-GenHeader-Copy zstd) - endif () -endmacro () diff --git a/ZSTD/config/cmake/HDFMacros.cmake b/ZSTD/config/cmake/HDFMacros.cmake index 5e63ec23..0cf9f192 100644 --- a/ZSTD/config/cmake/HDFMacros.cmake +++ b/ZSTD/config/cmake/HDFMacros.cmake @@ -490,6 +490,8 @@ macro (HDF_DIR_PATHS package_prefix) set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) endif () endif () + + include (FetchContent) endmacro () macro (ADD_H5_FLAGS h5_flag_var infile) diff --git a/ZSTD/config/cmake/HDFPluginMacros.cmake b/ZSTD/config/cmake/HDFPluginMacros.cmake index d77f9df3..30d82e19 100644 --- a/ZSTD/config/cmake/HDFPluginMacros.cmake +++ b/ZSTD/config/cmake/HDFPluginMacros.cmake @@ -67,7 +67,7 @@ macro (BASIC_SETTINGS varname) if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR) set (${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR ${CMAKE_INSTALL_DOCDIR}) endif () - message(STATUS "GNU: ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR}") + message(STATUS "GNU: ${${PLUGIN_PACKAGE_NAME}_INSTALL_LIB_DIR}") endif () if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_BIN_DIR) @@ -100,7 +100,7 @@ macro (BASIC_SETTINGS varname) if (NOT ${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR) set (${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR}) endif () - message(STATUS "Final: ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR}") + message(STATUS "Final: ${${PLUGIN_PACKAGE_NAME}_INSTALL_LIB_DIR}") #----------------------------------------------------------------------------- # Setup output Directories @@ -115,6 +115,15 @@ macro (BASIC_SETTINGS varname) set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all static libraries." ) + get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) + if(_isMultiConfig) + set (CMAKE_TEST_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}) + set (CMAKE_PDB_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all pdb files." + ) + else () + set (CMAKE_TEST_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) + endif () else () # if we are externally configured, but the project uses old cmake scripts # this may not be set @@ -304,7 +313,7 @@ macro (HDF5_SUPPORT link_hdf) set (H5PL_HDF5_HAVE_H5PUBCONF_H 1) set (H5PL_HDF5_HAVE_HDF5 1) set (H5PL_HDF5_HEADER "h5pubconf.h") - message (STATUS "HDF5 found: INC=${HDF5_INCLUDE_DIRS} TOOLS=${HDF5_TOOLS_DIR}") + message (STATUS "HDF5-${HDF5_VERSION_STRING} found: INC=${HDF5_INCLUDE_DIRS} TOOLS=${HDF5_TOOLS_DIR}") else () message (FATAL_ERROR " HDF5 is Required for plugin library") endif () @@ -330,227 +339,224 @@ macro (INSTALL_SUPPORT varname) string(TOUPPER ${varname} PLUGIN_PACKAGE_NAME) string(TOLOWER ${varname} PLUGIN_NAME) - #----------------------------------------------------------------------------- - # Set variables needed for installation - #----------------------------------------------------------------------------- - set (${PLUGIN_PACKAGE_NAME}_VERSION_STRING ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}) - set (${PLUGIN_PACKAGE_NAME}_VERSION_MAJOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}) - set (${PLUGIN_PACKAGE_NAME}_VERSION_MINOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}) - - #----------------------------------------------------------------------------- - # Configure the H5PL_Examples.cmake file and the examples - #----------------------------------------------------------------------------- - configure_file ( - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5PL_Examples.cmake.in - ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake @ONLY - ) - install ( - FILES - ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CTestScript.cmake - ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/HDFoptions.cmake + if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) + #----------------------------------------------------------------------------- + # Set variables needed for installation + #----------------------------------------------------------------------------- + set (${PLUGIN_PACKAGE_NAME}_VERSION_STRING ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}) + set (${PLUGIN_PACKAGE_NAME}_VERSION_MAJOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}) + set (${PLUGIN_PACKAGE_NAME}_VERSION_MINOR ${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}) + + #----------------------------------------------------------------------------- + # Configure the H5PL_Examples.cmake file and the examples + #----------------------------------------------------------------------------- + if (${PLUGIN_PACKAGE_NAME}_BUILD_TESTING) + configure_file ( + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5PL_Examples.cmake.in + ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake @ONLY + ) + install ( + FILES + ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/H5PL_Examples.cmake + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CTestScript.cmake + ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/HDFoptions.cmake DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} - COMPONENT hdfdocuments - ) - execute_process( - COMMAND ${CMAKE_COMMAND} -E copy_directory ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/binex ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples - ) - install ( - DIRECTORY ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples - DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} - USE_SOURCE_PERMISSIONS - COMPONENT hdfdocuments - ) + COMPONENT hdfdocuments + ) + execute_process( + COMMAND ${CMAKE_COMMAND} -E copy_directory ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/binex ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples + ) + install ( + DIRECTORY ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/HDFPLExamples + DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DATA_DIR} + USE_SOURCE_PERMISSIONS + COMPONENT hdfdocuments + ) + endif () - #----------------------------------------------------------------------------- - # Configure the README.txt file for the binary package - #----------------------------------------------------------------------------- - PLUGIN_README_PROPERTIES (${PLUGIN_PACKAGE_NAME}) + #----------------------------------------------------------------------------- + # Configure the README.txt file for the binary package + #----------------------------------------------------------------------------- + PLUGIN_README_PROPERTIES (${PLUGIN_PACKAGE_NAME}) - #----------------------------------------------------------------------------- - # Check for Installation Utilities - #----------------------------------------------------------------------------- - if (WIN32) - set (PF_ENV_EXT "(x86)") - find_program (NSIS_EXECUTABLE NSIS.exe PATHS "$ENV{ProgramFiles}\\NSIS" "$ENV{ProgramFiles${PF_ENV_EXT}}\\NSIS") - if(NOT CPACK_WIX_ROOT) - file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT) - endif() - find_program (WIX_EXECUTABLE candle PATHS "${CPACK_WIX_ROOT}/bin") - endif () - - #----------------------------------------------------------------------------- - # Set the cpack variables - #----------------------------------------------------------------------------- - if (NOT ${PLUGIN_PACKAGE_NAME}_EXTERNALLY_CONFIGURED) - set (CPACK_PACKAGE_VENDOR "HDF_Group") - set (CPACK_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}") - if (CDASH_LOCAL) - set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}") - else () - set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_STRING}") + #----------------------------------------------------------------------------- + # Configure the COPYING.txt file for the windows binary package + #----------------------------------------------------------------------------- + if (WIN32) + configure_file (${CMAKE_SOURCE_DIR}/COPYING ${CMAKE_BINARY_DIR}/COPYING.txt @ONLY) endif () - set (CPACK_PACKAGE_VERSION_MAJOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}") - set (CPACK_PACKAGE_VERSION_MINOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}") - set (CPACK_PACKAGE_VERSION_PATCH "") - #set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") - set (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - set (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - set (CPACK_PACKAGE_RELOCATABLE TRUE) - set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PLUGIN_NAME} Installation") - set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSION}") - - set (CPACK_GENERATOR "TGZ") + + #----------------------------------------------------------------------------- + # Add Document File(s) to CMake Install + #----------------------------------------------------------------------------- + install ( + FILES + ${${PLUGIN_PACKAGE_NAME}_SOURCE_DIR}/docs/PluginLibraries.txt + DESTINATION ${${PLUGIN_PACKAGE_NAME}_INSTALL_DOC_DIR} + COMPONENT hdfdocuments + ) + + #----------------------------------------------------------------------------- + # Check for Installation Utilities + #----------------------------------------------------------------------------- if (WIN32) - set (CPACK_GENERATOR "ZIP") + set (PF_ENV_EXT "(x86)") + find_program (NSIS_EXECUTABLE NSIS.exe PATHS "$ENV{ProgramFiles}\\NSIS" "$ENV{ProgramFiles${PF_ENV_EXT}}\\NSIS") + if(NOT CPACK_WIX_ROOT) + file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT) + endif() + find_program (WIX_EXECUTABLE candle PATHS "${CPACK_WIX_ROOT}/bin") + endif () - if (NSIS_EXECUTABLE) - list (APPEND CPACK_GENERATOR "NSIS") - endif () - # Installers for 32- vs. 64-bit CMake: - # - Root install directory (displayed to end user at installer-run time) - # - "NSIS package/display name" (text used in the installer GUI) - # - Registry key used to store info about the installation - set (CPACK_NSIS_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - if (CMAKE_CL_64) - set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") - set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION} (Win64)") + if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + if (CMAKE_HOST_UNIX) + set (CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/HDF_Group/${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}/${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}" + CACHE PATH "Install path prefix, prepended onto install directories." FORCE + ) else () - set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") - set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + GetDefaultWindowsPrefixBase(CMAKE_GENERIC_PROGRAM_FILES) + set (CMAKE_INSTALL_PREFIX + "${CMAKE_GENERIC_PROGRAM_FILES}/HDF_Group/${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}/${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}" + CACHE PATH "Install path prefix, prepended onto install directories." FORCE + ) + set (CMAKE_GENERIC_PROGRAM_FILES) endif () - # set the install/unistall icon used for the installer itself - # There is a bug in NSI that does not handle full unix paths properly. - #set (CPACK_NSIS_MUI_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") - #set (CPACK_NSIS_MUI_UNIICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") - # set the package header icon for MUI - #set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.bmp") - set (CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}, is a dynamic filter for HDF5") - #set (CPACK_PACKAGE_INSTALL_DIRECTORY "plugins") - set (CPACK_NSIS_CONTACT "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") - set (CPACK_NSIS_MODIFY_PATH ON) - - if (WIX_EXECUTABLE) - list (APPEND CPACK_GENERATOR "WIX") + endif () + + #----------------------------------------------------------------------------- + # Set the cpack variables + #----------------------------------------------------------------------------- + if (NOT ${PLUGIN_PACKAGE_NAME}_EXTERNALLY_CONFIGURED) + set (CPACK_PACKAGE_VENDOR "HDF_Group") + set (CPACK_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_NAME}") + if (CDASH_LOCAL) + set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION}") + else () + set (CPACK_PACKAGE_VERSION "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_STRING}") endif () - #WiX variables - set (CPACK_WIX_UNINSTALL "1") -# .. variable:: CPACK_WIX_LICENSE_RTF -# RTF License File -# -# If CPACK_RESOURCE_FILE_LICENSE has an .rtf extension it is used as-is. -# -# If CPACK_RESOURCE_FILE_LICENSE has an .txt extension it is implicitly -# converted to RTF by the WiX Generator. -# The expected encoding of the .txt file is UTF-8. -# -# With CPACK_WIX_LICENSE_RTF you can override the license file used by the -# WiX Generator in case CPACK_RESOURCE_FILE_LICENSE is in an unsupported -# format or the .txt -> .rtf conversion does not work as expected. - set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") -# .. variable:: CPACK_WIX_PRODUCT_ICON -# The Icon shown next to the program name in Add/Remove programs. -# set (CPACK_WIX_PRODUCT_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") -# -# .. variable:: CPACK_WIX_UI_BANNER -# -# The bitmap will appear at the top of all installer pages other than the -# welcome and completion dialogs. -# -# If set, this image will replace the default banner image. -# -# This image must be 493 by 58 pixels. -# -# .. variable:: CPACK_WIX_UI_DIALOG -# -# Background bitmap used on the welcome and completion dialogs. -# -# If this variable is set, the installer will replace the default dialog -# image. -# -# This image must be 493 by 312 pixels. -# - elseif (APPLE) - list (APPEND CPACK_GENERATOR "STGZ") - list (APPEND CPACK_GENERATOR "DragNDrop") - set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) - set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") -# set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/h5zstd.gif") - - option (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE "Package the ${PLUGIN_PACKAGE_NAME} Library in a Bundle" OFF) - if (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE) - list (APPEND CPACK_GENERATOR "Bundle") - set (CPACK_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - set (CPACK_BUNDLE_LOCATION "/") # make sure CMAKE_INSTALL_PREFIX ends in / - set (CMAKE_INSTALL_PREFIX "/${CPACK_BUNDLE_NAME}.framework/Versions/${CPACK_PACKAGE_VERSION}/${CPACK_PACKAGE_NAME}/") -# set (CPACK_BUNDLE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5ZSTD.icns") -# set (CPACK_BUNDLE_PLIST "${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist") - set (CPACK_APPLE_GUI_INFO_STRING "${PLUGIN_PACKAGE_NAME} Plugin Library") - set (CPACK_APPLE_GUI_COPYRIGHT "Copyright © ???. All rights reserved.") - set (CPACK_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") - set (CPACK_APPLE_GUI_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") - set (CPACK_APPLE_GUI_VERSION_STRING "${CPACK_PACKAGE_VERSION_STRING}") - set (CPACK_APPLE_GUI_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") - #----------------------------------------------------------------------------- - # Configure the Info.plist file for the install bundle - #----------------------------------------------------------------------------- -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CPack.Info.plist.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist @ONLY -# ) -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/PkgInfo.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo @ONLY -# ) -# configure_file ( -# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/version.plist.in -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist @ONLY -# ) -# install ( -# FILES ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo -# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist -# DESTINATION .. -# ) + set (CPACK_PACKAGE_VERSION_MAJOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MAJOR}") + set (CPACK_PACKAGE_VERSION_MINOR "${${PLUGIN_PACKAGE_NAME}_PACKAGE_VERSION_MINOR}") + set (CPACK_PACKAGE_VERSION_PATCH "") + #set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") + set (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + set (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + set (CPACK_PACKAGE_RELOCATABLE TRUE) + set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PLUGIN_NAME} Installation") + set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSION}") + + set (CPACK_GENERATOR "TGZ") + if (WIN32) + set (CPACK_GENERATOR "ZIP") + + if (NSIS_EXECUTABLE) + list (APPEND CPACK_GENERATOR "NSIS") + endif () + set (CPACK_NSIS_PACKAGE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + if (CMAKE_CL_64) + set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") + set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION} (Win64)") + else () + set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") + set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + endif () + # set the install/unistall icon used for the installer itself + # There is a bug in NSI that does not handle full unix paths properly. + #set (CPACK_NSIS_MUI_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") + #set (CPACK_NSIS_MUI_UNIICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.ico") + # set the package header icon for MUI + #set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}\\\\${PLUGIN_PACKAGE_NAME}.bmp") + set (CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}, is a dynamic filter for HDF5") + #set (CPACK_PACKAGE_INSTALL_DIRECTORY "plugins") + set (CPACK_NSIS_CONTACT "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + set (CPACK_NSIS_MODIFY_PATH ON) + + if (WIX_EXECUTABLE) + list (APPEND CPACK_GENERATOR "WIX") + endif () + # WiX variables + set (CPACK_WIX_UNINSTALL "1") + set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + elseif (APPLE) + list (APPEND CPACK_GENERATOR "STGZ") + list (APPEND CPACK_GENERATOR "DragNDrop") + set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) + set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") +# set (CPACK_PACKAGE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/h5zstd.gif") + + option (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE "Package the ${PLUGIN_PACKAGE_NAME} Library in a Bundle" OFF) + if (${PLUGIN_PACKAGE_NAME}_PACK_MACOSX_BUNDLE) + list (APPEND CPACK_GENERATOR "Bundle") + set (CPACK_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + set (CPACK_BUNDLE_LOCATION "/") # make sure CMAKE_INSTALL_PREFIX ends in / + set (CMAKE_INSTALL_PREFIX "/${CPACK_BUNDLE_NAME}.framework/Versions/${CPACK_PACKAGE_VERSION}/${CPACK_PACKAGE_NAME}/") +# set (CPACK_BUNDLE_ICON "${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/H5ZSTD.icns") +# set (CPACK_BUNDLE_PLIST "${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist") + set (CPACK_APPLE_GUI_INFO_STRING "${PLUGIN_PACKAGE_NAME} Plugin Library") + set (CPACK_APPLE_GUI_COPYRIGHT "Copyright © ???. All rights reserved.") + set (CPACK_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") + set (CPACK_APPLE_GUI_BUNDLE_NAME "${${PLUGIN_PACKAGE_NAME}_PACKAGE_STRING}") + set (CPACK_APPLE_GUI_VERSION_STRING "${CPACK_PACKAGE_VERSION_STRING}") + set (CPACK_APPLE_GUI_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") + #----------------------------------------------------------------------------- + # Configure the Info.plist file for the install bundle + #----------------------------------------------------------------------------- +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/CPack.Info.plist.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/Info.plist @ONLY +# ) +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/PkgInfo.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo @ONLY +# ) +# configure_file ( +# ${${PLUGIN_PACKAGE_NAME}_RESOURCES_DIR}/version.plist.in +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist @ONLY +# ) +# install ( +# FILES ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/PkgInfo +# ${${PLUGIN_PACKAGE_NAME}_BINARY_DIR}/CMakeFiles/version.plist +# DESTINATION .. +# ) + endif () + else () + list (APPEND CPACK_GENERATOR "STGZ") + set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") + set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) + + set (CPACK_DEBIAN_PACKAGE_SECTION "Libraries") + set (CPACK_DEBIAN_PACKAGE_MAINTAINER "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + +# list (APPEND CPACK_GENERATOR "RPM") + set (CPACK_RPM_PACKAGE_RELEASE "1") + set (CPACK_RPM_COMPONENT_INSTALL ON) + set (CPACK_RPM_PACKAGE_RELOCATABLE ON) endif () - else () - list (APPEND CPACK_GENERATOR "STGZ") - set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") - set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) - set (CPACK_DEBIAN_PACKAGE_SECTION "Libraries") - set (CPACK_DEBIAN_PACKAGE_MAINTAINER "${${PLUGIN_PACKAGE_NAME}_PACKAGE_BUGREPORT}") + if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};ALL;/") + else () + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};libraries;/") + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};headers;/") + endif () -# list (APPEND CPACK_GENERATOR "RPM") - set (CPACK_RPM_PACKAGE_RELEASE "1") - set (CPACK_RPM_COMPONENT_INSTALL ON) - set (CPACK_RPM_PACKAGE_RELOCATABLE ON) + set (CPACK_ALL_INSTALL_TYPES Full User) + set (CPACK_INSTALL_TYPE_FULL_DISPLAY_NAME "Everything") endif () if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};ALL;/") - else () - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};libraries;/") - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${${PLUGIN_PACKAGE_NAME}_BINARY_DIR};${PLUGIN_NAME};headers;/") + include (CPack) + + cpack_add_component_group(Runtime) + + cpack_add_component (libraries + DISPLAY_NAME "${PLUGIN_NAME} Libraries" + GROUP Runtime + ) + cpack_add_component_group(hdfdocuments + DISPLAY_NAME "${PLUGIN_NAME} Documents" + GROUP Documents + INSTALL_TYPES Full User + ) endif () - - set (CPACK_ALL_INSTALL_TYPES Full User) - set (CPACK_INSTALL_TYPE_FULL_DISPLAY_NAME "Everything") - - endif () - - if (${PLUGIN_PACKAGE_NAME}_CPACK_ENABLE) - include (CPack) - - cpack_add_component_group(Runtime) - - cpack_add_component (libraries - DISPLAY_NAME "${PLUGIN_NAME} Libraries" - GROUP Runtime - ) - cpack_add_component_group(hdfdocuments - DISPLAY_NAME "${PLUGIN_NAME} Documents" - GROUP Documents - INSTALL_TYPES Full User - ) endif () endmacro () diff --git a/ZSTD/config/cmake/grepTest.cmake b/ZSTD/config/cmake/grepTest.cmake index 26e295c2..caa818b5 100644 --- a/ZSTD/config/cmake/grepTest.cmake +++ b/ZSTD/config/cmake/grepTest.cmake @@ -65,5 +65,5 @@ if (TEST_EXPECT) endif () # everything went fine... -message ("Passed: The output of ${TEST_PROGRAM} matched") +message (STATUS "Passed: The output of ${TEST_PROGRAM} matched") diff --git a/ZSTD/config/toolchain/aarch64.cmake b/ZSTD/config/toolchain/aarch64.cmake index aa84a742..69968336 100644 --- a/ZSTD/config/toolchain/aarch64.cmake +++ b/ZSTD/config/toolchain/aarch64.cmake @@ -2,7 +2,7 @@ set(TOOLCHAIN_PREFIX aarch64-linux-gnu) set(ANDROID_NDK /opt/android-ndk-linux) set (CMAKE_SYSTEM_NAME Android) set (CMAKE_ANDROID_ARCH_ABI x86_64) -#set (CMAKE_ANDROID_STANDALONE_TOOLCHAIN ${ANDROID_NDK}/build/cmake/andriod.toolchain.cmake) +#set (CMAKE_ANDROID_STANDALONE_TOOLCHAIN ${ANDROID_NDK}/build/cmake/android.toolchain.cmake) set (CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc) set (CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++) #set (CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres) @@ -11,6 +11,7 @@ set (CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX}) set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set (CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) set (CMAKE_CROSSCOMPILING_EMULATOR qemu-aarch64) include_directories(/usr/${TOOLCHAIN_PREFIX}/include) diff --git a/ZSTD/config/toolchain/intel.cmake b/ZSTD/config/toolchain/intel.cmake new file mode 100644 index 00000000..f8f60b28 --- /dev/null +++ b/ZSTD/config/toolchain/intel.cmake @@ -0,0 +1,11 @@ +# Uncomment the following to use cross-compiling +#set(CMAKE_SYSTEM_NAME Linux) + +set(CMAKE_COMPILER_VENDOR "intel") + +set(CMAKE_C_COMPILER icx) +set(CMAKE_CXX_COMPILER icpx) +set(CMAKE_Fortran_COMPILER ifx) + +# the following is used if cross-compiling +set(CMAKE_CROSSCOMPILING_EMULATOR "") diff --git a/ZSTD/src/CMakeLists.txt b/ZSTD/src/CMakeLists.txt index 7a9ef402..75caa31d 100644 --- a/ZSTD/src/CMakeLists.txt +++ b/ZSTD/src/CMakeLists.txt @@ -25,7 +25,6 @@ set (H5ZSTD_INCLUDE_DIRS ${H5ZSTD_INCLUDE_DIRS} ${H5ZSTD_SRC_SOURCE_DIR} ${ZSTD_INCLUDE_DIRS} ) - #----------------------------------------------------------------------------- # Define H5ZSTD Library #----------------------------------------------------------------------------- diff --git a/config/cmake/H5PLMacros.cmake b/config/cmake/H5PLMacros.cmake index 259b8e9a..18160217 100644 --- a/config/cmake/H5PLMacros.cmake +++ b/config/cmake/H5PLMacros.cmake @@ -12,78 +12,6 @@ #------------------------------------------------------------------------------- # Plugins must be built SHARED #------------------------------------------------------------------------------- -macro (EXTERNAL_PL_LIBRARY plname compress_type disable_encoder) - string(TOLOWER ${plname} PLUGIN_NAME) - if (${compress_type} MATCHES "GIT") - EXTERNALPROJECT_ADD (${plname} - GIT_REPOSITORY ${${plname}_URL} - GIT_TAG ${${plname}_BRANCH} - INSTALL_COMMAND "" - CMAKE_ARGS - -DUSE_SHARED_LIBS:BOOL="ON" - -DBUILD_SHARED_LIBS:BOOL="ON" - -D${plname}_PACKAGE_NAME:STRING="${PLUGIN_NAME}" - -DH5PL_ALLOW_EXTERNAL_SUPPORT:STRING=${H5PL_ALLOW_EXTERNAL_SUPPORT} - -D${plname}_PACKAGE_EXT:STRING=${${plname}_PACKAGE_EXT} - -D${plname}_EXTERNALLY_CONFIGURED:BOOL=OFF - -DBUILD_TESTING:STRING=${BUILD_TESTING} - -DBUILD_EXAMPLES:STRING=${BUILD_EXAMPLES} - -DCMAKE_BUILD_TYPE:STRING=${HDF_CFG_NAME} - -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_${plname}_ENCODER:BOOL=${disable_encoder} - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DH5PL_USE_GNU_DIRS:STRING=${H5PL_USE_GNU_DIRS} - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} - ) - elseif (${compress_type} MATCHES "TGZ") - EXTERNALPROJECT_ADD (${plname} - URL ${${plname}_URL} - URL_MD5 "" - INSTALL_COMMAND "" - CMAKE_ARGS - -DUSE_SHARED_LIBS:BOOL="ON" - -DBUILD_SHARED_LIBS:BOOL="ON" - -D${plname}_PACKAGE_NAME:STRING="${PLUGIN_NAME}" - -DH5PL_ALLOW_EXTERNAL_SUPPORT:STRING=${H5PL_ALLOW_EXTERNAL_SUPPORT} - -D${plname}_PACKAGE_EXT:STRING=${${plname}_PACKAGE_EXT} - -D${plname}_EXTERNALLY_CONFIGURED:BOOL=OFF - -DBUILD_TESTING:STRING=${BUILD_TESTING} - -DBUILD_EXAMPLES:STRING=${BUILD_EXAMPLES} - -DCMAKE_BUILD_TYPE:STRING=${HDF_CFG_NAME} - -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_${plname}_ENCODER:BOOL=${disable_encoder} - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DH5PL_USE_GNU_DIRS:STRING=${H5PL_USE_GNU_DIRS} - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} - ) - endif () - externalproject_get_property (${plname} BINARY_DIR SOURCE_DIR) - - # Create imported target ${plname} - add_library (${plname} "SHARED" IMPORTED) - HDF_IMPORT_SET_LIB_OPTIONS (${plname} "${plname}" "SHARED" "${${plname}_SOVERS_MAJOR}") - add_dependencies (H5PL ${plname}) - -# include (${BINARY_DIR}/${plname}-targets.cmake) - set (${plname}_LIBRARY "${plname}") - - set (${plname}_INCLUDE_DIR_GEN "${BINARY_DIR}") - set (${plname}_INCLUDE_DIR "${SOURCE_DIR}") - set (${plname}_FOUND 1) - set (${plname}_LIBRARIES ${${plname}_LIBRARY}) - set (${plname}_INCLUDE_DIRS ${${plname}_INCLUDE_DIR_GEN} ${${plname}_INCLUDE_DIR}) -endmacro () - #------------------------------------------------------------------------------- macro (FILTER_OPTION plname) string(TOLOWER ${plname} PLUGIN_NAME) diff --git a/config/cmake/HDFMacros.cmake b/config/cmake/HDFMacros.cmake index 5e63ec23..0cf9f192 100644 --- a/config/cmake/HDFMacros.cmake +++ b/config/cmake/HDFMacros.cmake @@ -490,6 +490,8 @@ macro (HDF_DIR_PATHS package_prefix) set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) endif () endif () + + include (FetchContent) endmacro () macro (ADD_H5_FLAGS h5_flag_var infile)