| @@ -1,90 +0,0 @@ | ||||
| diff --git a/c++/src/CMakeLists.txt b/c++/src/CMakeLists.txt | ||||
| index 8608c67..4b1a2d6 100644 | ||||
| --- a/c++/src/CMakeLists.txt | ||||
| +++ b/c++/src/CMakeLists.txt | ||||
| @@ -209,7 +209,11 @@ install ( | ||||
|  ) | ||||
|   | ||||
|  if (NOT WIN32 AND NOT MINGW) | ||||
| -  set (_PKG_CONFIG_COMPILER ${CMAKE_CXX_COMPILER}) | ||||
| +  if (HDF5_ENABLE_PARALLEL AND MPI_CXX_FOUND) | ||||
| +    set (_PKG_CONFIG_COMPILER ${MPI_CXX_COMPILER}) | ||||
| +  else () | ||||
| +    set (_PKG_CONFIG_COMPILER ${CMAKE_CXX_COMPILER}) | ||||
| +  endif () | ||||
|    configure_file ( | ||||
|        ${HDF_RESOURCES_DIR}/libh5cc.in | ||||
|        ${HDF5_BINARY_DIR}/CMakeFiles/h5c++ | ||||
|        ${HDF5_BINARY_DIR}/CMakeFiles/h5fc | ||||
| diff --git a/hl/c++/src/CMakeLists.txt b/hl/c++/src/CMakeLists.txt | ||||
| index 1eac9fe..e488656 100644 | ||||
| --- a/hl/c++/src/CMakeLists.txt | ||||
| +++ b/hl/c++/src/CMakeLists.txt | ||||
| @@ -120,7 +120,11 @@ install ( | ||||
|  ) | ||||
|   | ||||
|  if (NOT WIN32 AND NOT MINGW) | ||||
| -  set (_PKG_CONFIG_COMPILER ${CMAKE_CXX_COMPILER}) | ||||
| +  if (HDF5_ENABLE_PARALLEL AND MPI_CXX_FOUND) | ||||
| +    set (_PKG_CONFIG_COMPILER ${MPI_CXX_COMPILER}) | ||||
| +  else () | ||||
| +    set (_PKG_CONFIG_COMPILER ${CMAKE_CXX_COMPILER}) | ||||
| +  endif () | ||||
|    configure_file ( | ||||
|        ${HDF_RESOURCES_DIR}/libh5cc.in | ||||
|        ${HDF5_BINARY_DIR}/CMakeFiles/h5hlc++ | ||||
| diff --git a/hl/src/CMakeLists.txt b/hl/src/CMakeLists.txt | ||||
| index 785bdcf..427424e 100644 | ||||
| --- a/hl/src/CMakeLists.txt | ||||
| +++ b/hl/src/CMakeLists.txt | ||||
| @@ -152,7 +152,11 @@ install ( | ||||
|  ) | ||||
|   | ||||
|  if (NOT WIN32 AND NOT MINGW) | ||||
| -  set (_PKG_CONFIG_COMPILER ${CMAKE_C_COMPILER}) | ||||
| +  if (HDF5_ENABLE_PARALLEL AND MPI_C_FOUND) | ||||
| +    set (_PKG_CONFIG_COMPILER ${MPI_C_COMPILER}) | ||||
| +  else () | ||||
| +    set (_PKG_CONFIG_COMPILER ${CMAKE_C_COMPILER}) | ||||
| +  endif () | ||||
|    configure_file ( | ||||
|        ${HDF_RESOURCES_DIR}/libh5cc.in | ||||
|        ${HDF5_BINARY_DIR}/CMakeFiles/h5hlcc | ||||
| diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt | ||||
| index 329a2dc..97019fa 100644 | ||||
| --- a/src/CMakeLists.txt | ||||
| +++ b/src/CMakeLists.txt | ||||
| @@ -1282,7 +1282,11 @@ install ( | ||||
|  ) | ||||
|   | ||||
|  if (NOT WIN32) | ||||
| -  set (_PKG_CONFIG_COMPILER ${CMAKE_C_COMPILER}) | ||||
| +  if (HDF5_ENABLE_PARALLEL AND MPI_C_FOUND) | ||||
| +    set (_PKG_CONFIG_COMPILER ${MPI_C_COMPILER}) | ||||
| +  else () | ||||
| +    set (_PKG_CONFIG_COMPILER ${CMAKE_C_COMPILER}) | ||||
| +  endif () | ||||
|    configure_file ( | ||||
|        ${HDF_RESOURCES_DIR}/libh5cc.in | ||||
|        ${HDF5_BINARY_DIR}/CMakeFiles/h5cc | ||||
| @@ -1294,6 +1298,20 @@ if (NOT WIN32) | ||||
|        PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE | ||||
|        COMPONENT libraries | ||||
|    ) | ||||
| +  if (HDF5_ENABLE_PARALLEL AND MPI_C_FOUND) | ||||
| +    #legacy requires a different name | ||||
| +    configure_file ( | ||||
| +        ${HDF_RESOURCES_DIR}/libh5cc.in | ||||
| +        ${HDF5_BINARY_DIR}/CMakeFiles/h5pcc | ||||
| +        @ONLY | ||||
| +    ) | ||||
| +    install ( | ||||
| +        FILES ${HDF5_BINARY_DIR}/CMakeFiles/h5pcc | ||||
| +        DESTINATION ${HDF5_INSTALL_BIN_DIR} | ||||
| +        PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE | ||||
| +        COMPONENT libraries | ||||
| +    ) | ||||
| +  endif () | ||||
|  endif () | ||||
|   | ||||
|  #----------------------------------------------------------------------------- | ||||
| @@ -1,104 +0,0 @@ | ||||
| diff --git a/c++/src/CMakeLists.txt b/c++/src/CMakeLists.txt | ||||
| index 39f0f3a..9dc69d6 100644 | ||||
| --- a/c++/src/CMakeLists.txt | ||||
| +++ b/c++/src/CMakeLists.txt | ||||
| @@ -196,7 +196,11 @@ install ( | ||||
|  ) | ||||
|   | ||||
|  if (NOT WIN32 AND NOT MINGW) | ||||
| -  set (_PKG_CONFIG_COMPILER ${CMAKE_CXX_COMPILER}) | ||||
| +  if (HDF5_ENABLE_PARALLEL AND MPI_CXX_FOUND) | ||||
| +    set (_PKG_CONFIG_COMPILER ${MPI_CXX_COMPILER}) | ||||
| +  else () | ||||
| +    set (_PKG_CONFIG_COMPILER ${CMAKE_CXX_COMPILER}) | ||||
| +  endif () | ||||
|    configure_file ( | ||||
|        ${HDF_RESOURCES_DIR}/libh5cc.in | ||||
|        ${HDF5_BINARY_DIR}/CMakeFiles/h5c++ | ||||
| diff --git a/fortran/src/CMakeLists.txt b/fortran/src/CMakeLists.txt | ||||
| index b5d1a60..22ed7fb 100644 | ||||
| --- a/fortran/src/CMakeLists.txt | ||||
| +++ b/fortran/src/CMakeLists.txt | ||||
| @@ -533,7 +533,11 @@ install ( | ||||
|  ) | ||||
|   | ||||
|  if (NOT WIN32 AND NOT MINGW) | ||||
| -  set (_PKG_CONFIG_COMPILER ${CMAKE_Fortran_COMPILER}) | ||||
| +  if (HDF5_ENABLE_PARALLEL AND MPI_Fortran_FOUND) | ||||
| +    set (_PKG_CONFIG_COMPILER ${MPI_Fortran_COMPILER}) | ||||
| +  else () | ||||
| +    set (_PKG_CONFIG_COMPILER ${CMAKE_Fortran_COMPILER}) | ||||
| +  endif () | ||||
|    configure_file ( | ||||
|        ${HDF_RESOURCES_DIR}/libh5cc.in | ||||
|        ${HDF5_BINARY_DIR}/CMakeFiles/h5fc | ||||
| diff --git a/hl/c++/src/CMakeLists.txt b/hl/c++/src/CMakeLists.txt | ||||
| index 866f372..6abd376 100644 | ||||
| --- a/hl/c++/src/CMakeLists.txt | ||||
| +++ b/hl/c++/src/CMakeLists.txt | ||||
| @@ -109,7 +109,11 @@ install ( | ||||
|  ) | ||||
|   | ||||
|  if (NOT WIN32 AND NOT MINGW) | ||||
| -  set (_PKG_CONFIG_COMPILER ${CMAKE_CXX_COMPILER}) | ||||
| +  if (HDF5_ENABLE_PARALLEL AND MPI_CXX_FOUND) | ||||
| +    set (_PKG_CONFIG_COMPILER ${MPI_CXX_COMPILER}) | ||||
| +  else () | ||||
| +    set (_PKG_CONFIG_COMPILER ${CMAKE_CXX_COMPILER}) | ||||
| +  endif () | ||||
|    configure_file ( | ||||
|        ${HDF_RESOURCES_DIR}/libh5cc.in | ||||
|        ${HDF5_BINARY_DIR}/CMakeFiles/h5hlc++ | ||||
| diff --git a/hl/src/CMakeLists.txt b/hl/src/CMakeLists.txt | ||||
| index 55d84c7..857a390 100644 | ||||
| --- a/hl/src/CMakeLists.txt | ||||
| +++ b/hl/src/CMakeLists.txt | ||||
| @@ -133,7 +133,11 @@ install ( | ||||
|  ) | ||||
|   | ||||
|  if (NOT WIN32 AND NOT MINGW) | ||||
| -  set (_PKG_CONFIG_COMPILER ${CMAKE_C_COMPILER}) | ||||
| +  if (HDF5_ENABLE_PARALLEL AND MPI_C_FOUND) | ||||
| +    set (_PKG_CONFIG_COMPILER ${MPI_C_COMPILER}) | ||||
| +  else () | ||||
| +    set (_PKG_CONFIG_COMPILER ${CMAKE_C_COMPILER}) | ||||
| +  endif () | ||||
|    configure_file ( | ||||
|        ${HDF_RESOURCES_DIR}/libh5cc.in | ||||
|        ${HDF5_BINARY_DIR}/CMakeFiles/h5hlcc | ||||
| diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt | ||||
| index f582056..d7ddee4 100644 | ||||
| --- a/src/CMakeLists.txt | ||||
| +++ b/src/CMakeLists.txt | ||||
| @@ -1272,7 +1272,11 @@ install ( | ||||
|  ) | ||||
|   | ||||
|  if (NOT WIN32) | ||||
| -  set (_PKG_CONFIG_COMPILER ${CMAKE_C_COMPILER}) | ||||
| +  if (HDF5_ENABLE_PARALLEL AND MPI_C_FOUND) | ||||
| +    set (_PKG_CONFIG_COMPILER ${MPI_C_COMPILER}) | ||||
| +  else () | ||||
| +    set (_PKG_CONFIG_COMPILER ${CMAKE_C_COMPILER}) | ||||
| +  endif () | ||||
|    configure_file ( | ||||
|        ${HDF_RESOURCES_DIR}/libh5cc.in | ||||
|        ${HDF5_BINARY_DIR}/CMakeFiles/h5cc | ||||
| @@ -1284,4 +1288,18 @@ if (NOT WIN32) | ||||
|        PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE | ||||
|        COMPONENT libraries | ||||
|    ) | ||||
| +  if (HDF5_ENABLE_PARALLEL AND MPI_C_FOUND) | ||||
| +    #legacy requires a different name | ||||
| +    configure_file ( | ||||
| +        ${HDF_RESOURCES_DIR}/libh5cc.in | ||||
| +        ${HDF5_BINARY_DIR}/CMakeFiles/h5pcc | ||||
| +        @ONLY | ||||
| +    ) | ||||
| +    install ( | ||||
| +        FILES ${HDF5_BINARY_DIR}/CMakeFiles/h5pcc | ||||
| +        DESTINATION ${HDF5_INSTALL_BIN_DIR} | ||||
| +        PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE | ||||
| +        COMPONENT libraries | ||||
| +    ) | ||||
| +  endif () | ||||
|  endif () | ||||
| @@ -1,362 +0,0 @@ | ||||
| diff --git a/c++/src/CMakeLists.txt b/c++/src/CMakeLists.txt | ||||
| index 9b9b745..3f05fa0 100644 | ||||
| --- a/c++/src/CMakeLists.txt | ||||
| +++ b/c++/src/CMakeLists.txt | ||||
| @@ -178,7 +178,11 @@ install ( | ||||
|  ) | ||||
|   | ||||
|  if (NOT WIN32) | ||||
| -  set (_PKG_CONFIG_COMPILER ${CMAKE_CXX_COMPILER}) | ||||
| +  if (HDF5_ENABLE_PARALLEL AND MPI_CXX_FOUND) | ||||
| +    set (_PKG_CONFIG_COMPILER ${MPI_CXX_COMPILER}) | ||||
| +  else () | ||||
| +    set (_PKG_CONFIG_COMPILER ${CMAKE_CXX_COMPILER}) | ||||
| +  endif () | ||||
|    configure_file ( | ||||
|        ${HDF_RESOURCES_DIR}/libh5cc.in | ||||
|        ${HDF5_BINARY_DIR}/CMakeFiles/h5c++ | ||||
| diff --git a/config/cmake_ext_mod/FindSZIP.cmake b/config/cmake_ext_mod/FindSZIP.cmake | ||||
| index 699be85..846a3d1 100644 | ||||
| --- a/config/cmake_ext_mod/FindSZIP.cmake | ||||
| +++ b/config/cmake_ext_mod/FindSZIP.cmake | ||||
| @@ -5,140 +5,112 @@ | ||||
|  # This file is part of HDF5.  The full HDF5 copyright notice, including | ||||
|  # terms governing use, modification, and redistribution, is contained in | ||||
|  # the COPYING file, which can be found at the root of the source code | ||||
| -# distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. | ||||
| +# distribution tree, or in https://www.hdfgroup.org/licenses. | ||||
|  # If you do not have access to either file, you may request a copy from | ||||
|  # help@hdfgroup.org. | ||||
|  # | ||||
| +######################################################################### | ||||
| + | ||||
| +# - Derived from the FindTiff.cmake and FindJPEG.cmake that is included with cmake | ||||
| +# FindSZIP | ||||
|   | ||||
| -# - Find SZIP library | ||||
| -# - Derived from the FindTiff.cmake that is included with cmake | ||||
|  # Find the native SZIP includes and library | ||||
| -# This module defines | ||||
| -#  SZIP_INCLUDE_DIRS, where to find tiff.h, etc. | ||||
| -#  SZIP_LIBRARIES, libraries to link against to use SZIP. | ||||
| -#  SZIP_FOUND, If false, do not try to use SZIP. | ||||
| -#    also defined, but not for general use are | ||||
| -#  SZIP_LIBRARY, where to find the SZIP library. | ||||
| -#  SZIP_LIBRARY_DEBUG - Debug version of SZIP library | ||||
| -#  SZIP_LIBRARY_RELEASE - Release Version of SZIP library | ||||
|   | ||||
| -# message (STATUS "Finding SZIP library and headers..." ) | ||||
| +# Imported targets | ||||
| +################## | ||||
|   | ||||
| -############################################ | ||||
| +# This module defines the following :prop_tgt:`IMPORTED` targets: | ||||
|  # | ||||
| -# Check the existence of the libraries. | ||||
| +# SZIP::SZIP | ||||
| +#  The SZIP library, if found. | ||||
|  # | ||||
| -############################################ | ||||
| -# This macro was taken directly from the FindQt4.cmake file that is included | ||||
| -# with the CMake distribution. This is NOT my work. All work was done by the | ||||
| -# original authors of the FindQt4.cmake file. Only minor modifications were | ||||
| -# made to remove references to Qt and make this file more generally applicable | ||||
| -######################################################################### | ||||
| +# Result variables | ||||
| +################### | ||||
|   | ||||
| -macro (SZIP_ADJUST_LIB_VARS basename) | ||||
| -  if (${basename}_INCLUDE_DIR) | ||||
| +# This module will set the following variables in your project: | ||||
|   | ||||
| -    # if only the release version was found, set the debug variable also to the release version | ||||
| -    if (${basename}_LIBRARY_RELEASE AND NOT ${basename}_LIBRARY_DEBUG) | ||||
| -      set (${basename}_LIBRARY_DEBUG ${${basename}_LIBRARY_RELEASE}) | ||||
| -      set (${basename}_LIBRARY       ${${basename}_LIBRARY_RELEASE}) | ||||
| -      set (${basename}_LIBRARIES     ${${basename}_LIBRARY_RELEASE}) | ||||
| -    endif () | ||||
| +#  SZIP_FOUND, true if the SZIP headers and libraries were found. | ||||
| +#  SZIP_INCLUDE_DIR, the directory containing the SZIP headers. | ||||
| +#  SZIP_INCLUDE_DIRS, the directory containing the SZIP headers. | ||||
| +#  SZIP_LIBRARIES, libraries to link against to use SZIP. | ||||
|   | ||||
| -    # if only the debug version was found, set the release variable also to the debug version | ||||
| -    if (${basename}_LIBRARY_DEBUG AND NOT ${basename}_LIBRARY_RELEASE) | ||||
| -      set (${basename}_LIBRARY_RELEASE ${${basename}_LIBRARY_DEBUG}) | ||||
| -      set (${basename}_LIBRARY         ${${basename}_LIBRARY_DEBUG}) | ||||
| -      set (${basename}_LIBRARIES       ${${basename}_LIBRARY_DEBUG}) | ||||
| -    endif () | ||||
| -    if (${basename}_LIBRARY_DEBUG AND ${basename}_LIBRARY_RELEASE) | ||||
| -      # if the generator supports configuration types then set | ||||
| -      # optimized and debug libraries, or if the CMAKE_BUILD_TYPE has a value | ||||
| -      if (CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE) | ||||
| -        set (${basename}_LIBRARY       optimized ${${basename}_LIBRARY_RELEASE} debug ${${basename}_LIBRARY_DEBUG}) | ||||
| -      else () | ||||
| -        # if there are no configuration types and CMAKE_BUILD_TYPE has no value | ||||
| -        # then just use the release libraries | ||||
| -        set (${basename}_LIBRARY       ${${basename}_LIBRARY_RELEASE} ) | ||||
| -      endif () | ||||
| -      set (${basename}_LIBRARIES       optimized ${${basename}_LIBRARY_RELEASE} debug ${${basename}_LIBRARY_DEBUG}) | ||||
| -    endif () | ||||
| +# Cache variables | ||||
| +################# | ||||
|   | ||||
| -    set (${basename}_LIBRARY ${${basename}_LIBRARY} CACHE FILEPATH "The ${basename} library") | ||||
| +# The following variables may also be set: | ||||
|   | ||||
| -    if (${basename}_LIBRARY) | ||||
| -      set (${basename}_FOUND 1) | ||||
| -    endif () | ||||
| -  endif () | ||||
| +#  SZIP_LIBRARY, where to find the SZIP library. | ||||
| +#  SZIP_LIBRARY_DEBUG - Debug version of SZIP library | ||||
| +#  SZIP_LIBRARY_RELEASE - Release Version of SZIP library | ||||
|   | ||||
| -  # Make variables changeble to the advanced user | ||||
| -  MARK_AS_ADVANCED (${basename}_LIBRARY ${basename}_LIBRARY_RELEASE ${basename}_LIBRARY_DEBUG ${basename}_INCLUDE_DIR ) | ||||
| -endmacro () | ||||
| - | ||||
| - | ||||
| -# Look for the header file. | ||||
| -set (SZIP_INCLUDE_SEARCH_DIRS | ||||
| -    $ENV{SZIP_INSTALL}/include | ||||
| -    $ENV{SZIP_INSTALL}/include/szip | ||||
| -    /usr/include | ||||
| -    /usr/include/szip | ||||
| -) | ||||
| - | ||||
| -set (SZIP_LIB_SEARCH_DIRS | ||||
| -    $ENV{SZIP_INSTALL}/lib | ||||
| -    /usr/lib | ||||
| -) | ||||
| - | ||||
| -set (SZIP_BIN_SEARCH_DIRS | ||||
| -    $ENV{SZIP_INSTALL}/bin | ||||
| -    /usr/bin | ||||
| -) | ||||
| - | ||||
| -FIND_PATH (SZIP_INCLUDE_DIR | ||||
| -    NAMES szlib.h | ||||
| -    PATHS ${SZIP_INCLUDE_SEARCH_DIRS} | ||||
| -    NO_DEFAULT_PATH | ||||
| -) | ||||
| - | ||||
| -if (WIN32) | ||||
| -    set (SZIP_SEARCH_DEBUG_NAMES "sz_d;libsz_d") | ||||
| -    set (SZIP_SEARCH_RELEASE_NAMES "sz;libsz;libszip") | ||||
| -else () | ||||
| -    set (SZIP_SEARCH_DEBUG_NAMES "sz_d") | ||||
| -    set (SZIP_SEARCH_RELEASE_NAMES "sz;szip") | ||||
| -endif () | ||||
| +# message (STATUS "Finding SZIP library and headers..." ) | ||||
| +######################################################################### | ||||
|   | ||||
| -# Look for the library. | ||||
| -FIND_LIBRARY (SZIP_LIBRARY_DEBUG | ||||
| -    NAMES ${SZIP_SEARCH_DEBUG_NAMES} | ||||
| -    PATHS ${SZIP_LIB_SEARCH_DIRS} | ||||
| -    NO_DEFAULT_PATH | ||||
| -) | ||||
| - | ||||
| -FIND_LIBRARY (SZIP_LIBRARY_RELEASE | ||||
| -    NAMES ${SZIP_SEARCH_RELEASE_NAMES} | ||||
| -    PATHS ${SZIP_LIB_SEARCH_DIRS} | ||||
| -    NO_DEFAULT_PATH | ||||
| -) | ||||
| - | ||||
| -SZIP_ADJUST_LIB_VARS (SZIP) | ||||
| - | ||||
| -if (SZIP_INCLUDE_DIR AND SZIP_LIBRARY) | ||||
| -  set (SZIP_FOUND 1) | ||||
| -  set (SZIP_LIBRARIES ${SZIP_LIBRARY}) | ||||
| -  set (SZIP_INCLUDE_DIRS ${SZIP_INCLUDE_DIR}) | ||||
| -  if (SZIP_LIBRARY_DEBUG) | ||||
| -    get_filename_component (SZIP_LIBRARY_PATH ${SZIP_LIBRARY_DEBUG} PATH) | ||||
| -    set (SZIP_LIB_DIR  ${SZIP_LIBRARY_PATH}) | ||||
| -  elseif () | ||||
| -    get_filename_component (SZIP_LIBRARY_PATH ${SZIP_LIBRARY_RELEASE} PATH) | ||||
| -    set (SZIP_LIB_DIR  ${SZIP_LIBRARY_PATH}) | ||||
| -  endif () | ||||
| -else () | ||||
| -  set (SZIP_FOUND 0) | ||||
| -  set (SZIP_LIBRARIES) | ||||
| -  set (SZIP_INCLUDE_DIRS) | ||||
| -endif () | ||||
| + | ||||
| +find_path(SZIP_INCLUDE_DIR szlib.h) | ||||
| + | ||||
| +set(szip_names ${SZIP_NAMES} sz szip szip-static libsz libszip libszip-static) | ||||
| +foreach(name ${szip_names}) | ||||
| +  list (APPEND szip_names_debug "${name}d") | ||||
| +endforeach() | ||||
| + | ||||
| +if(NOT SZIP_LIBRARY) | ||||
| +  find_library(SZIP_LIBRARY_RELEASE NAMES ${szip_names}) | ||||
| +  find_library(SZIP_LIBRARY_DEBUG NAMES ${szip_names_debug}) | ||||
| +  include(SelectLibraryConfigurations) | ||||
| +  select_library_configurations(SZIP) | ||||
| +  mark_as_advanced(SZIP_LIBRARY_RELEASE SZIP_LIBRARY_DEBUG) | ||||
| +endif() | ||||
| +unset(szip_names) | ||||
| +unset(szip_names_debug) | ||||
| + | ||||
| +if(SZIP_INCLUDE_DIR AND EXISTS "${SZIP_INCLUDE_DIR}/SZconfig.h") | ||||
| +    file(STRINGS "${SZIP_INCLUDE_DIR}/SZconfig.h" szip_version_str | ||||
| +         REGEX "^#define[\t ]+SZIP_PACKAGE_VERSION[\t ]+.*") | ||||
| + | ||||
| +    string(REGEX REPLACE "^#define[\t ]+SZIP_PACKAGE_VERSION[\t ]+([0-9]+).*" | ||||
| +           "\\1" SZIP_VERSION "${szip_version_str}") | ||||
| +    unset(szip_version_str) | ||||
| +endif() | ||||
| + | ||||
| +include(FindPackageHandleStandardArgs) | ||||
| +find_package_handle_standard_args(SZIP | ||||
| +  REQUIRED_VARS SZIP_LIBRARY SZIP_INCLUDE_DIR | ||||
| +  VERSION_VAR SZIP_VERSION) | ||||
| + | ||||
| +if(SZIP_FOUND) | ||||
| +  set(SZIP_LIBRARIES ${SZIP_LIBRARY}) | ||||
| +  set(SZIP_INCLUDE_DIRS "${SZIP_INCLUDE_DIR}") | ||||
| + | ||||
| +  if(NOT TARGET SZIP::SZIP) | ||||
| +    add_library(SZIP::SZIP UNKNOWN IMPORTED) | ||||
| +    if(SZIP_INCLUDE_DIRS) | ||||
| +      set_target_properties(SZIP::SZIP PROPERTIES | ||||
| +        INTERFACE_INCLUDE_DIRECTORIES "${SZIP_INCLUDE_DIRS}") | ||||
| +    endif() | ||||
| +    if(EXISTS "${SZIP_LIBRARY}") | ||||
| +      set_target_properties(SZIP::SZIP PROPERTIES | ||||
| +        IMPORTED_LINK_INTERFACE_LANGUAGES "C" | ||||
| +        IMPORTED_LOCATION "${SZIP_LIBRARY}") | ||||
| +    endif() | ||||
| +    if(EXISTS "${SZIP_LIBRARY_RELEASE}") | ||||
| +      set_property(TARGET SZIP::SZIP APPEND PROPERTY | ||||
| +        IMPORTED_CONFIGURATIONS RELEASE) | ||||
| +      set_target_properties(SZIP::SZIP PROPERTIES | ||||
| +        IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C" | ||||
| +        IMPORTED_LOCATION_RELEASE "${SZIP_LIBRARY_RELEASE}") | ||||
| +    endif() | ||||
| +    if(EXISTS "${SZIP_LIBRARY_DEBUG}") | ||||
| +      set_property(TARGET SZIP::SZIP APPEND PROPERTY | ||||
| +        IMPORTED_CONFIGURATIONS DEBUG) | ||||
| +      set_target_properties(SZIP::SZIP PROPERTIES | ||||
| +        IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C" | ||||
| +        IMPORTED_LOCATION_DEBUG "${SZIP_LIBRARY_DEBUG}") | ||||
| +    endif() | ||||
| +  endif() | ||||
| +endif() | ||||
| + | ||||
| +mark_as_advanced(SZIP_LIBRARY SZIP_INCLUDE_DIR) | ||||
|   | ||||
|  # Report the results. | ||||
|  if (NOT SZIP_FOUND) | ||||
| @@ -146,36 +118,12 @@ if (NOT SZIP_FOUND) | ||||
|        "SZip was not found. Make sure SZIP_LIBRARY and SZIP_INCLUDE_DIR are set or set the SZIP_INSTALL environment variable." | ||||
|    ) | ||||
|    if (NOT SZIP_FIND_QUIETLY) | ||||
| -    message (STATUS "${SZIP_DIR_MESSAGE}") | ||||
| +    if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.15.0") | ||||
| +      message (VERBOSE "${SZIP_DIR_MESSAGE}") | ||||
| +    endif () | ||||
|    else () | ||||
|      if (SZIP_FIND_REQUIRED) | ||||
|        message (FATAL_ERROR "SZip was NOT found and is Required by this project") | ||||
|      endif () | ||||
|    endif () | ||||
|  endif () | ||||
| - | ||||
| -if (SZIP_FOUND) | ||||
| -  include (CheckSymbolExists) | ||||
| -  ############################################# | ||||
| -  # Find out if SZIP was build using dll's | ||||
| -  ############################################# | ||||
| -  # Save required variable | ||||
| -  set (CMAKE_REQUIRED_INCLUDES_SAVE ${CMAKE_REQUIRED_INCLUDES}) | ||||
| -  set (CMAKE_REQUIRED_FLAGS_SAVE    ${CMAKE_REQUIRED_FLAGS}) | ||||
| -  # Add SZIP_INCLUDE_DIR to CMAKE_REQUIRED_INCLUDES | ||||
| -  set (CMAKE_REQUIRED_INCLUDES "${CMAKE_REQUIRED_INCLUDES};${SZIP_INCLUDE_DIRS}") | ||||
| - | ||||
| -  # Restore CMAKE_REQUIRED_INCLUDES and CMAKE_REQUIRED_FLAGS variables | ||||
| -  set (CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES_SAVE}) | ||||
| -  set (CMAKE_REQUIRED_FLAGS    ${CMAKE_REQUIRED_FLAGS_SAVE}) | ||||
| -  # | ||||
| -  ############################################# | ||||
| -endif () | ||||
| - | ||||
| -if (FIND_SZIP_DEBUG) | ||||
| -  message (STATUS "SZIP_INCLUDE_DIR: ${SZIP_INCLUDE_DIR}") | ||||
| -  message (STATUS "SZIP_INCLUDE_DIRS: ${SZIP_INCLUDE_DIRS}") | ||||
| -  message (STATUS "SZIP_LIBRARY_DEBUG: ${SZIP_LIBRARY_DEBUG}") | ||||
| -  message (STATUS "SZIP_LIBRARY_RELEASE: ${SZIP_LIBRARY_RELEASE}") | ||||
| -  message (STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}") | ||||
| -endif () | ||||
| diff --git a/hl/c++/src/CMakeLists.txt b/hl/c++/src/CMakeLists.txt | ||||
| index 7949b73..a633bdd 100644 | ||||
| --- a/hl/c++/src/CMakeLists.txt | ||||
| +++ b/hl/c++/src/CMakeLists.txt | ||||
| @@ -102,7 +102,11 @@ install ( | ||||
|  ) | ||||
|   | ||||
|  if (NOT WIN32) | ||||
| -  set (_PKG_CONFIG_COMPILER ${CMAKE_CXX_COMPILER}) | ||||
| +  if (HDF5_ENABLE_PARALLEL AND MPI_CXX_FOUND) | ||||
| +    set (_PKG_CONFIG_COMPILER ${MPI_CXX_COMPILER}) | ||||
| +  else () | ||||
| +    set (_PKG_CONFIG_COMPILER ${CMAKE_CXX_COMPILER}) | ||||
| +  endif () | ||||
|    configure_file ( | ||||
|        ${HDF_RESOURCES_DIR}/libh5cc.in | ||||
|        ${HDF5_BINARY_DIR}/CMakeFiles/h5hlc++ | ||||
| diff --git a/hl/src/CMakeLists.txt b/hl/src/CMakeLists.txt | ||||
| index d570265..e652ed3 100644 | ||||
| --- a/hl/src/CMakeLists.txt | ||||
| +++ b/hl/src/CMakeLists.txt | ||||
| @@ -118,7 +118,11 @@ install ( | ||||
|  ) | ||||
|   | ||||
|  if (NOT WIN32) | ||||
| -  set (_PKG_CONFIG_COMPILER ${CMAKE_C_COMPILER}) | ||||
| +  if (HDF5_ENABLE_PARALLEL AND MPI_C_FOUND) | ||||
| +    set (_PKG_CONFIG_COMPILER ${MPI_C_COMPILER}) | ||||
| +  else () | ||||
| +    set (_PKG_CONFIG_COMPILER ${CMAKE_C_COMPILER}) | ||||
| +  endif () | ||||
|    configure_file ( | ||||
|        ${HDF_RESOURCES_DIR}/libh5cc.in | ||||
|        ${HDF5_BINARY_DIR}/CMakeFiles/h5hlcc | ||||
| diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt | ||||
| index 4d2f1bc..39cfbca 100644 | ||||
| --- a/src/CMakeLists.txt | ||||
| +++ b/src/CMakeLists.txt | ||||
| @@ -820,7 +820,11 @@ install ( | ||||
|  ) | ||||
|   | ||||
|  if (NOT WIN32) | ||||
| -  set (_PKG_CONFIG_COMPILER ${CMAKE_C_COMPILER}) | ||||
| +  if (HDF5_ENABLE_PARALLEL AND MPI_C_FOUND) | ||||
| +    set (_PKG_CONFIG_COMPILER ${MPI_C_COMPILER}) | ||||
| +  else () | ||||
| +    set (_PKG_CONFIG_COMPILER ${CMAKE_C_COMPILER}) | ||||
| +  endif () | ||||
|    configure_file ( | ||||
|        ${HDF_RESOURCES_DIR}/libh5cc.in | ||||
|        ${HDF5_BINARY_DIR}/CMakeFiles/h5cc | ||||
| @@ -832,4 +836,18 @@ if (NOT WIN32) | ||||
|        PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE | ||||
|        COMPONENT libraries | ||||
|    ) | ||||
| +  if (HDF5_ENABLE_PARALLEL AND MPI_C_FOUND) | ||||
| +    #legacy requires a different name | ||||
| +    configure_file ( | ||||
| +        ${HDF_RESOURCES_DIR}/libh5cc.in | ||||
| +        ${HDF5_BINARY_DIR}/CMakeFiles/h5pcc | ||||
| +        @ONLY | ||||
| +    ) | ||||
| +    install ( | ||||
| +        FILES ${HDF5_BINARY_DIR}/CMakeFiles/h5pcc | ||||
| +        DESTINATION ${HDF5_INSTALL_BIN_DIR} | ||||
| +        PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE | ||||
| +        COMPONENT libraries | ||||
| +    ) | ||||
| +  endif () | ||||
|  endif () | ||||
| @@ -1,121 +0,0 @@ | ||||
| diff --git a/c++/src/CMakeLists.txt b/c++/src/CMakeLists.txt | ||||
| index 65d1d43..9e4bf24 100644 | ||||
| --- a/c++/src/CMakeLists.txt | ||||
| +++ b/c++/src/CMakeLists.txt | ||||
| @@ -211,7 +211,11 @@ install ( | ||||
|  ) | ||||
|   | ||||
|  if (NOT WIN32 AND NOT MINGW) | ||||
| -  set (_PKG_CONFIG_COMPILER ${CMAKE_CXX_COMPILER}) | ||||
| +  if (HDF5_ENABLE_PARALLEL AND MPI_CXX_FOUND) | ||||
| +    set (_PKG_CONFIG_COMPILER ${MPI_CXX_COMPILER}) | ||||
| +  else () | ||||
| +    set (_PKG_CONFIG_COMPILER ${CMAKE_CXX_COMPILER}) | ||||
| +  endif () | ||||
|    configure_file ( | ||||
|        ${HDF_RESOURCES_DIR}/libh5cc.in | ||||
|        ${HDF5_BINARY_DIR}/CMakeFiles/h5c++ | ||||
| diff --git a/fortran/src/CMakeLists.txt b/fortran/src/CMakeLists.txt | ||||
| index dd03439..f58dde9 100644 | ||||
| --- a/fortran/src/CMakeLists.txt | ||||
| +++ b/fortran/src/CMakeLists.txt | ||||
| @@ -595,7 +595,11 @@ install ( | ||||
|  ) | ||||
|   | ||||
|  if (NOT WIN32 AND NOT MINGW) | ||||
| -  set (_PKG_CONFIG_COMPILER ${CMAKE_Fortran_COMPILER}) | ||||
| +  if (HDF5_ENABLE_PARALLEL AND MPI_Fortran_FOUND) | ||||
| +    set (_PKG_CONFIG_COMPILER ${MPI_Fortran_COMPILER}) | ||||
| +  else () | ||||
| +    set (_PKG_CONFIG_COMPILER ${CMAKE_Fortran_COMPILER}) | ||||
| +  endif () | ||||
|    configure_file ( | ||||
|        ${HDF_RESOURCES_DIR}/libh5cc.in | ||||
|        ${HDF5_BINARY_DIR}/CMakeFiles/h5fc | ||||
| diff --git a/hl/c++/src/CMakeLists.txt b/hl/c++/src/CMakeLists.txt | ||||
| index 1eac9fe..e488656 100644 | ||||
| --- a/hl/c++/src/CMakeLists.txt | ||||
| +++ b/hl/c++/src/CMakeLists.txt | ||||
| @@ -120,7 +120,11 @@ install ( | ||||
|  ) | ||||
|   | ||||
|  if (NOT WIN32 AND NOT MINGW) | ||||
| -  set (_PKG_CONFIG_COMPILER ${CMAKE_CXX_COMPILER}) | ||||
| +  if (HDF5_ENABLE_PARALLEL AND MPI_CXX_FOUND) | ||||
| +    set (_PKG_CONFIG_COMPILER ${MPI_CXX_COMPILER}) | ||||
| +  else () | ||||
| +    set (_PKG_CONFIG_COMPILER ${CMAKE_CXX_COMPILER}) | ||||
| +  endif () | ||||
|    configure_file ( | ||||
|        ${HDF_RESOURCES_DIR}/libh5cc.in | ||||
|        ${HDF5_BINARY_DIR}/CMakeFiles/h5hlc++ | ||||
| diff --git a/hl/fortran/src/CMakeLists.txt b/hl/fortran/src/CMakeLists.txt | ||||
| index b309e92..c889736 100644 | ||||
| --- a/hl/fortran/src/CMakeLists.txt | ||||
| +++ b/hl/fortran/src/CMakeLists.txt | ||||
| @@ -260,7 +260,11 @@ install ( | ||||
|  ) | ||||
|   | ||||
|  if (NOT WIN32 AND NOT MINGW) | ||||
| -  set (_PKG_CONFIG_COMPILER ${CMAKE_Fortran_COMPILER}) | ||||
| +  if (HDF5_ENABLE_PARALLEL AND MPI_Fortran_FOUND) | ||||
| +    set (_PKG_CONFIG_COMPILER ${MPI_Fortran_COMPILER}) | ||||
| +  else () | ||||
| +    set (_PKG_CONFIG_COMPILER ${CMAKE_Fortran_COMPILER}) | ||||
| +  endif () | ||||
|    configure_file ( | ||||
|        ${HDF_RESOURCES_DIR}/libh5cc.in | ||||
|        ${HDF5_BINARY_DIR}/CMakeFiles/h5hlfc | ||||
| diff --git a/hl/src/CMakeLists.txt b/hl/src/CMakeLists.txt | ||||
| index cc5aca5..d07f354 100644 | ||||
| --- a/hl/src/CMakeLists.txt | ||||
| +++ b/hl/src/CMakeLists.txt | ||||
| @@ -148,7 +148,11 @@ install ( | ||||
|  ) | ||||
|   | ||||
|  if (NOT WIN32 AND NOT MINGW) | ||||
| -  set (_PKG_CONFIG_COMPILER ${CMAKE_C_COMPILER}) | ||||
| +  if (HDF5_ENABLE_PARALLEL AND MPI_C_FOUND) | ||||
| +    set (_PKG_CONFIG_COMPILER ${MPI_C_COMPILER}) | ||||
| +  else () | ||||
| +    set (_PKG_CONFIG_COMPILER ${CMAKE_C_COMPILER}) | ||||
| +  endif () | ||||
|    configure_file ( | ||||
|        ${HDF_RESOURCES_DIR}/libh5cc.in | ||||
|        ${HDF5_BINARY_DIR}/CMakeFiles/h5hlcc | ||||
| diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt | ||||
| index 217c55d..521d3fd 100644 | ||||
| --- a/src/CMakeLists.txt | ||||
| +++ b/src/CMakeLists.txt | ||||
| @@ -1129,7 +1129,11 @@ install ( | ||||
|  ) | ||||
|   | ||||
|  if (NOT WIN32) | ||||
| -  set (_PKG_CONFIG_COMPILER ${CMAKE_C_COMPILER}) | ||||
| +  if (HDF5_ENABLE_PARALLEL AND MPI_C_FOUND) | ||||
| +    set (_PKG_CONFIG_COMPILER ${MPI_C_COMPILER}) | ||||
| +  else () | ||||
| +    set (_PKG_CONFIG_COMPILER ${CMAKE_C_COMPILER}) | ||||
| +  endif () | ||||
|    configure_file ( | ||||
|        ${HDF_RESOURCES_DIR}/libh5cc.in | ||||
|        ${HDF5_BINARY_DIR}/CMakeFiles/h5cc | ||||
| @@ -1141,4 +1145,18 @@ if (NOT WIN32) | ||||
|        PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE | ||||
|        COMPONENT libraries | ||||
|    ) | ||||
| +  if (HDF5_ENABLE_PARALLEL AND MPI_C_FOUND) | ||||
| +    #legacy requires a different name | ||||
| +    configure_file ( | ||||
| +        ${HDF_RESOURCES_DIR}/libh5cc.in | ||||
| +        ${HDF5_BINARY_DIR}/CMakeFiles/h5pcc | ||||
| +        @ONLY | ||||
| +    ) | ||||
| +    install ( | ||||
| +        FILES ${HDF5_BINARY_DIR}/CMakeFiles/h5pcc | ||||
| +        DESTINATION ${HDF5_INSTALL_BIN_DIR} | ||||
| +        PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE | ||||
| +        COMPONENT libraries | ||||
| +    ) | ||||
| +  endif () | ||||
|  endif () | ||||
| @@ -1,62 +0,0 @@ | ||||
| --- a/bin/ltmain.sh | ||||
| +++ b/bin/ltmain.sh | ||||
| @@ -8881,7 +8881,8 @@ func_mode_link () | ||||
|  	  xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" | ||||
|  	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" | ||||
|            # On Darwin other compilers | ||||
| -          case $CC in | ||||
| +          func_cc_basename $CC | ||||
| +          case $func_cc_basename_result in | ||||
|                nagfor*) | ||||
|                    verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" | ||||
|                    ;; | ||||
| --- a/configure | ||||
| +++ b/configure | ||||
| @@ -12817,6 +12817,15 @@ func_cc_basename () | ||||
|          compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; | ||||
|          distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; | ||||
|          \-*) ;; | ||||
| +        mpicc | *[\\/]mpicc | \ | ||||
| +        mpic++ | *[\\/]mpic++ | mpicxx | *[\\/]mpicxx | mpiCC | *[\\/]mpiCC | \ | ||||
| +        mpif77 | *[\\/]mpif77 | mpif90 | *[\\/]mpif90 | mpifort | *[\\/]mpifort ) | ||||
| +          # OpenMPI or MPICH wrapper | ||||
| +          mpi_cc_temp= | ||||
| +          mpi_show=`$cc_temp -show 2>/dev/null` | ||||
| +          test $? -eq 0 && mpi_cc_temp=`$ECHO "$mpi_show" | cut -d' ' -f1` | ||||
| +          test -z $mpi_cc_temp >/dev/null 2>&1 || cc_temp=$mpi_cc_temp | ||||
| +          break;; | ||||
|          *) break;; | ||||
|        esac | ||||
|      done | ||||
| @@ -33230,6 +33239,15 @@ func_cc_basename () | ||||
|          compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; | ||||
|          distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; | ||||
|          \-*) ;; | ||||
| +        mpicc | *[\\/]mpicc | \ | ||||
| +        mpic++ | *[\\/]mpic++ | mpicxx | *[\\/]mpicxx | mpiCC | *[\\/]mpiCC | \ | ||||
| +        mpif77 | *[\\/]mpif77 | mpif90 | *[\\/]mpif90 | mpifort | *[\\/]mpifort ) | ||||
| +          # OpenMPI or MPICH wrapper | ||||
| +          mpi_cc_temp= | ||||
| +          mpi_show=`$cc_temp -show 2>/dev/null` | ||||
| +          test $? -eq 0 && mpi_cc_temp=`$ECHO "$mpi_show" | cut -d' ' -f1` | ||||
| +          test -z $mpi_cc_temp >/dev/null 2>&1 || cc_temp=$mpi_cc_temp | ||||
| +          break;; | ||||
|          *) break;; | ||||
|        esac | ||||
|      done | ||||
| @@ -36300,6 +36318,15 @@ func_cc_basename () | ||||
|          compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; | ||||
|          distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; | ||||
|          \-*) ;; | ||||
| +        mpicc | *[\\/]mpicc | \ | ||||
| +        mpic++ | *[\\/]mpic++ | mpicxx | *[\\/]mpicxx | mpiCC | *[\\/]mpiCC | \ | ||||
| +        mpif77 | *[\\/]mpif77 | mpif90 | *[\\/]mpif90 | mpifort | *[\\/]mpifort ) | ||||
| +          # OpenMPI or MPICH wrapper | ||||
| +          mpi_cc_temp= | ||||
| +          mpi_show=`$cc_temp -show 2>/dev/null` | ||||
| +          test $? -eq 0 && mpi_cc_temp=`$ECHO "$mpi_show" | cut -d' ' -f1` | ||||
| +          test -z $mpi_cc_temp >/dev/null 2>&1 || cc_temp=$mpi_cc_temp | ||||
| +          break;; | ||||
|          *) break;; | ||||
|        esac | ||||
|      done | ||||
| @@ -3,9 +3,12 @@ | ||||
| # | ||||
| # SPDX-License-Identifier: (Apache-2.0 OR MIT) | ||||
| 
 | ||||
| import os | ||||
| import shutil | ||||
| import sys | ||||
| 
 | ||||
| import llnl.util.tty as tty | ||||
| 
 | ||||
| 
 | ||||
| class Hdf5(CMakePackage): | ||||
|     """HDF5 is a data model, library, and file format for storing and managing | ||||
| @@ -23,7 +26,9 @@ class Hdf5(CMakePackage): | ||||
| 
 | ||||
|     test_requires_compiler = True | ||||
| 
 | ||||
|     version('develop', branch='develop') | ||||
|     # The 'develop' version is renamed so that we could uninstall (or patch) it | ||||
|     # without affecting other develop version. | ||||
|     version('develop-1.13', branch='develop') | ||||
|     version('develop-1.12', branch='hdf5_1_12') | ||||
|     version('develop-1.10', branch='hdf5_1_10') | ||||
|     version('develop-1.8', branch='hdf5_1_8') | ||||
| @@ -66,17 +71,13 @@ class Hdf5(CMakePackage): | ||||
|     variant('tools', default=True, description='Enable building tools') | ||||
|     variant('mpi', default=True, description='Enable MPI support') | ||||
|     variant('szip', default=False, description='Enable szip support') | ||||
|     variant('pic', default=True, | ||||
|             description='Produce position-independent code (for shared libs)') | ||||
|     # Build HDF5 with API compatibility. | ||||
|     variant('api', default='default', description='Choose api compatibility for earlier version', values=('default', 'v114', 'v112', 'v110', 'v18', 'v16'), multi=False) | ||||
|     variant('api', default='default', | ||||
|             description='Choose api compatibility for earlier version', | ||||
|             values=('default', 'v114', 'v112', 'v110', 'v18', 'v16'), | ||||
|             multi=False) | ||||
| 
 | ||||
|     conflicts('api=v114', when='@1.6:1.12.99', msg='v114 is not compatible with this release') | ||||
|     conflicts('api=v112', when='@1.6:1.10.99', msg='v112 is not compatible with this release') | ||||
|     conflicts('api=v110', when='@1.6:1.8.99', msg='v110 is not compatible with this release') | ||||
|     conflicts('api=v18', when='@1.6:1.6.99', msg='v18 is not compatible with this release') | ||||
| 
 | ||||
|     depends_on('cmake@3.12:') | ||||
|     depends_on('cmake@3.12:', type='build') | ||||
| 
 | ||||
|     depends_on('mpi', when='+mpi') | ||||
|     depends_on('java', type=('build', 'run'), when='+java') | ||||
| @@ -86,16 +87,24 @@ class Hdf5(CMakePackage): | ||||
|     depends_on('szip', when='+szip') | ||||
|     depends_on('zlib@1.1.2:') | ||||
| 
 | ||||
|     # The compiler wrappers (h5cc, h5fc, etc.) run 'pkg-config'. | ||||
|     depends_on('pkgconfig', type='run') | ||||
| 
 | ||||
|     conflicts('api=v114', when='@1.6:1.12.99', | ||||
|               msg='v114 is not compatible with this release') | ||||
|     conflicts('api=v112', when='@1.6:1.10.99', | ||||
|               msg='v112 is not compatible with this release') | ||||
|     conflicts('api=v110', when='@1.6:1.8.99', | ||||
|               msg='v110 is not compatible with this release') | ||||
|     conflicts('api=v18', when='@1.6:1.6.99', | ||||
|               msg='v18 is not compatible with this release') | ||||
| 
 | ||||
|     # The Java wrappers and associated libhdf5_java library | ||||
|     # were first available in 1.10 | ||||
|     conflicts('+java', when='@:1.9') | ||||
|     # The Java wrappers cannot be built without shared libs. | ||||
|     conflicts('+java', when='~shared') | ||||
| 
 | ||||
|     # Earlier versions of HDF5 will not correctly find szip without the patches | ||||
|     # in the <version>_cmake.patch files | ||||
|     conflicts('+szip', when='@:1.8.19,1.9.0:1.10.5') | ||||
| 
 | ||||
|     # There are several officially unsupported combinations of the features: | ||||
|     # 1. Thread safety is not guaranteed via high-level C-API but in some cases | ||||
|     #    it works. | ||||
| @@ -147,20 +156,6 @@ class Hdf5(CMakePackage): | ||||
|     patch('hdf5_1.8_gcc10.patch', when='@:1.8.21', | ||||
|           sha256='0e20187cda3980a4fdff410da92358b63de7ebef2df1d7a425371af78e50f666') | ||||
| 
 | ||||
|     # Libtool fails to recognize NAG compiler behind the MPI wrappers and apply | ||||
|     # correct linker flags enabling shared libraries. # We support only versions | ||||
|     # based on Libtool 2.4.6. | ||||
|     patch('nag.mpi.libtool.patch', when='@1.8.18:%nag+fortran+mpi+shared') | ||||
| 
 | ||||
|     patch('1.12.0_cmake.patch', when='@1.12.0', | ||||
|           sha256='e5b3bc2eecb693e88ce084dfceb35fdce68a0749945173c4bff7cf29fa81de4c') | ||||
|     patch('1.10.7_cmake.patch', when='@1.10.6:1.10.7', | ||||
|           sha256='dd9491bbe833b13929cb14b52137f7f44a539b4bfc89fc31e6e50a36e3e1b171') | ||||
|     patch('1.8.22_cmake.patch', when='@1.8.22', | ||||
|           sha256='2ca847df0f4aa24e8fe9aa7f156d48aae505a0226ca8df5d3e9b21d8087035bd') | ||||
|     patch('1.8.21_cmake.patch', when='@1.8.21', | ||||
|           sha256='b6a39255b2cc4fdf5767969a3f0cf83fc278b1750221b55ad48352a6ee3e4071') | ||||
| 
 | ||||
|     # The argument 'buf_size' of the C function 'h5fget_file_image_c' is | ||||
|     # declared as intent(in) though it is modified by the invocation. As a | ||||
|     # result, aggressive compilers such as Fujitsu's may do a wrong | ||||
| @@ -177,28 +172,41 @@ def patch(self): | ||||
|             'fortran/src/H5Fff_F03.f90', | ||||
|             string=True, ignore_absent=True) | ||||
| 
 | ||||
|     filter_compiler_wrappers('h5cc', 'h5c++', 'h5fc', | ||||
|                              'h5pcc', 'h5pfc', relative_root='bin') | ||||
|     # The parallel compiler wrappers (i.e. h5pcc, h5pfc, etc.) reference MPI | ||||
|     # compiler wrappers and do not need to be changed. | ||||
|     filter_compiler_wrappers('h5cc', 'h5hlcc', | ||||
|                              'h5fc', 'h5hlfc', | ||||
|                              'h5c++', 'h5hlc++', | ||||
|                              relative_root='bin') | ||||
| 
 | ||||
|     def url_for_version(self, version): | ||||
|         url = "https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-{0}/hdf5-{1}/src/hdf5-{1}.tar.gz" | ||||
|         return url.format(version.up_to(2), version) | ||||
| 
 | ||||
|     def flag_handler(self, name, flags): | ||||
|         if '+pic' in self.spec: | ||||
|             if name == "cflags": | ||||
|                 flags.append(self.compiler.cc_pic_flag) | ||||
|             elif name == "cxxflags": | ||||
|                 flags.append(self.compiler.cxx_pic_flag) | ||||
|             elif name == "fflags": | ||||
|                 flags.append(self.compiler.fc_pic_flag) | ||||
|         cmake_flags = [] | ||||
| 
 | ||||
|         # Quiet warnings/errors about implicit declaration of functions in C99 | ||||
|         if name == "cflags": | ||||
|             if "%clang" in self.spec or "%gcc" in self.spec: | ||||
|                 flags.append("-Wno-implicit-function-declaration") | ||||
|             if "clang" in self.compiler.cc or "gcc" in self.compiler.cc: | ||||
|                 # Quiet warnings/errors about implicit declaration of functions | ||||
|                 # in C99: | ||||
|                 cmake_flags.append("-Wno-implicit-function-declaration") | ||||
|             if self.spec.satisfies('@:1.8.12~shared'): | ||||
|                 # More recent versions set CMAKE_POSITION_INDEPENDENT_CODE to | ||||
|                 # True and build with PIC flags. | ||||
|                 cmake_flags.append(self.compiler.cc_pic_flag) | ||||
|         elif name == 'cxxflags': | ||||
|             if self.spec.satisfies('@:1.8.12+cxx~shared'): | ||||
|                 cmake_flags.append(self.compiler.cxx_pic_flag) | ||||
|         elif name == "fflags": | ||||
|             if self.spec.satisfies('@:1.8.12+fortran~shared'): | ||||
|                 cmake_flags.append(self.compiler.fc_pic_flag) | ||||
|         elif name == "ldlibs": | ||||
|             if '+fortran %fj' in self.spec: | ||||
|                 cmake_flags.extend(['-lfj90i', '-lfj90f', | ||||
|                                     '-lfjsrcinfo', '-lelf']) | ||||
| 
 | ||||
|         return (None, None, flags) | ||||
|         return flags, None, (cmake_flags or None) | ||||
| 
 | ||||
|     @property | ||||
|     def libs(self): | ||||
| @@ -220,10 +228,32 @@ def libs(self): | ||||
|         query2libraries = { | ||||
|             tuple(): ['libhdf5'], | ||||
|             ('cxx', 'fortran', 'hl', 'java'): [ | ||||
|                 'libhdf5hl_fortran', | ||||
|                 # When installed with Autotools, the basename of the real | ||||
|                 # library file implementing the High-level Fortran interface is | ||||
|                 # 'libhdf5hl_fortran'. Starting versions 1.8.22, 1.10.5 and | ||||
|                 # 1.12.0, the Autotools installation also produces a symbolic | ||||
|                 # link 'libhdf5_hl_fortran.<so/a>' to | ||||
|                 # 'libhdf5hl_fortran.<so/a>'. Note that in the case of the | ||||
|                 # dynamic library, the latter is a symlink to the real sonamed | ||||
|                 # file 'libhdf5_fortran.so.<abi-version>'. This means that all | ||||
|                 # dynamically linked executables/libraries of the dependent | ||||
|                 # packages need 'libhdf5_fortran.so.<abi-version>' with the same | ||||
|                 # DT_SONAME entry. However, the CMake installation (at least | ||||
|                 # starting version 1.8.10) does not produce it. Instead, the | ||||
|                 # basename of the library file is 'libhdf5_hl_fortran'. Which | ||||
|                 # means that switching to CMake requires rebuilding of all | ||||
|                 # dependant packages that use the High-level Fortran interface. | ||||
|                 # Therefore, we do not try to preserve backward compatibility | ||||
|                 # with Autotools installations by creating symlinks. The only | ||||
|                 # packages that could benefit from it would be those that | ||||
|                 # hardcode the library name in their building systems. Such | ||||
|                 # packages should simply be patched. | ||||
|                 'libhdf5_hl_fortran', | ||||
|                 'libhdf5_hl_f90cstub', | ||||
|                 'libhdf5_hl_cpp', | ||||
|                 'libhdf5_hl', | ||||
|                 'libhdf5_fortran', | ||||
|                 'libhdf5_f90cstub', | ||||
|                 'libhdf5_java', | ||||
|                 'libhdf5', | ||||
|             ], | ||||
| @@ -233,9 +263,11 @@ def libs(self): | ||||
|                 'libhdf5', | ||||
|             ], | ||||
|             ('fortran', 'hl'): [ | ||||
|                 'libhdf5hl_fortran', | ||||
|                 'libhdf5_hl_fortran', | ||||
|                 'libhdf5_hl_f90cstub', | ||||
|                 'libhdf5_hl', | ||||
|                 'libhdf5_fortran', | ||||
|                 'libhdf5_f90cstub', | ||||
|                 'libhdf5', | ||||
|             ], | ||||
|             ('hl',): [ | ||||
| @@ -244,6 +276,7 @@ def libs(self): | ||||
|             ], | ||||
|             ('cxx', 'fortran'): [ | ||||
|                 'libhdf5_fortran', | ||||
|                 'libhdf5_f90cstub', | ||||
|                 'libhdf5_cpp', | ||||
|                 'libhdf5', | ||||
|             ], | ||||
| @@ -253,6 +286,7 @@ def libs(self): | ||||
|             ], | ||||
|             ('fortran',): [ | ||||
|                 'libhdf5_fortran', | ||||
|                 'libhdf5_f90cstub', | ||||
|                 'libhdf5', | ||||
|             ], | ||||
|             ('java',): [ | ||||
| @@ -269,6 +303,10 @@ def libs(self): | ||||
|             libraries, root=self.prefix, shared=shared, recursive=True | ||||
|         ) | ||||
| 
 | ||||
|     @when('@:1.8.21,1.10.0:1.10.5+szip') | ||||
|     def setup_build_environment(self, env): | ||||
|         env.set('SZIP_INSTALL', self.spec['szip'].prefix) | ||||
| 
 | ||||
|     @run_before('cmake') | ||||
|     def fortran_check(self): | ||||
|         if '+fortran' in self.spec and not self.compiler.fc: | ||||
| @@ -278,15 +316,27 @@ def fortran_check(self): | ||||
|     def cmake_args(self): | ||||
|         spec = self.spec | ||||
| 
 | ||||
|         # Always enable this option. This does not actually enable any | ||||
|         # features: it only *allows* the user to specify certain | ||||
|         # combinations of other arguments. Enabling it just skips a | ||||
|         # sanity check in configure, so this doesn't merit a variant. | ||||
|         if spec.satisfies('@:1.8.15+shared'): | ||||
|             tty.warn('hdf5@:1.8.15+shared does not produce static libraries') | ||||
| 
 | ||||
|         args = [ | ||||
|             # Always enable this option. This does not actually enable any | ||||
|             # features: it only *allows* the user to specify certain | ||||
|             # combinations of other arguments. | ||||
|             self.define('ALLOW_UNSUPPORTED', True), | ||||
|             # Speed-up the building by skipping the examples: | ||||
|             self.define('HDF5_BUILD_EXAMPLES', False), | ||||
|             self.define( | ||||
|                 'BUILD_TESTING', | ||||
|                 self.run_tests or | ||||
|                 # Version 1.8.22 fails to build the tools when shared libraries | ||||
|                 # are enabled but the tests are disabled. | ||||
|                 spec.satisfies('@1.8.22+shared+tools')), | ||||
|             self.define('HDF5_ENABLE_Z_LIB_SUPPORT', True), | ||||
|             self.define_from_variant('HDF5_ENABLE_SZIP_SUPPORT', 'szip'), | ||||
|             self.define_from_variant('HDF5_ENABLE_SZIP_ENCODING', 'szip'), | ||||
|             self.define_from_variant('BUILD_SHARED_LIBS', 'shared'), | ||||
|             self.define('ONLY_SHARED_LIBS', False), | ||||
|             self.define_from_variant('HDF5_ENABLE_PARALLEL', 'mpi'), | ||||
|             self.define_from_variant('HDF5_ENABLE_THREADSAFE', 'threadsafe'), | ||||
|             self.define_from_variant('HDF5_BUILD_HL_LIB', 'hl'), | ||||
| @@ -296,56 +346,89 @@ def cmake_args(self): | ||||
|             self.define_from_variant('HDF5_BUILD_TOOLS', 'tools') | ||||
|         ] | ||||
| 
 | ||||
|         if '+szip' in spec: | ||||
|             args.append(self.define('HDF5_ENABLE_SZIP_ENCODING', True)) | ||||
| 
 | ||||
|         api = spec.variants['api'].value | ||||
|         if api != 'default': | ||||
|             args.append(self.define('DEFAULT_API_VERSION', api)) | ||||
| 
 | ||||
|         # The variable CMAKE_POSITION_INDEPENDENT_CODE is set to True by default in | ||||
|         # HDF5 Cmake code;  this should insure that it is off if '~pic' in spec. The | ||||
|         # flags that were previously set for '+pic' in the Autotools version are kept | ||||
|         # in case CMake doesn't set them as expected.  Both the 'pic' variant and the | ||||
|         # CMAKE_POSITION_INDEPENDENT_CODE variable are True by default, but '~pic' | ||||
|         # should disable them both. | ||||
|         args.append(self.define_from_variant('CMAKE_POSITION_INDEPENDENT_CODE', 'pic')) | ||||
|         if '+pic' in spec: | ||||
|             # use global spack compiler flags | ||||
|             _flags = self.compiler.cc_pic_flag | ||||
|             _flags += " " + ' '.join(spec.compiler_flags['cflags']) | ||||
|             args.append('CFLAGS={0}'.format(_flags)) | ||||
| 
 | ||||
|             if '+cxx' in spec: | ||||
|                 _flags = self.compiler.cxx_pic_flag | ||||
|                 _flags += " " + ' '.join(spec.compiler_flags['cxxflags']) | ||||
|                 args.append('CXXFLAGS={0}'.format(_flags)) | ||||
| 
 | ||||
|             if '+fortran' in spec: | ||||
|                 _flags = self.compiler.fc_pic_flag | ||||
|                 _flags += " " + ' '.join(spec.compiler_flags['fflags']) | ||||
|                 args.append('FCFLAGS={0}'.format(_flags)) | ||||
| 
 | ||||
|         # Fujitsu Compiler does not add Fortran runtime in rpath. | ||||
|         if '+fortran %fj' in spec: | ||||
|             args.append('LDFLAGS=-lfj90i -lfj90f -lfjsrcinfo -lelf') | ||||
| 
 | ||||
|         if '+mpi' in spec: | ||||
|             # The HDF5 configure script warns if cxx and mpi are enabled | ||||
|             # together. There doesn't seem to be a real reason for this, except | ||||
|             # that parts of the MPI interface are not accessible via the C++ | ||||
|             # interface. Since they are still accessible via the C interface, | ||||
|             # this is not actually a problem. | ||||
|             args.append('CC=%s' % self.spec['mpi'].mpicc) | ||||
|             args.append(self.define('CMAKE_C_COMPILER', spec['mpi'].mpicc)) | ||||
| 
 | ||||
|             if '+cxx' in self.spec: | ||||
|                 args.append('CXX=%s' % self.spec['mpi'].mpicxx) | ||||
|                 args.append(self.define('CMAKE_CXX_COMPILER', | ||||
|                                         spec['mpi'].mpicxx)) | ||||
| 
 | ||||
|             if '+fortran' in self.spec: | ||||
|                 args.append('FC=%s' % self.spec['mpi'].mpifc) | ||||
|                 args.append(self.define('CMAKE_Fortran_COMPILER', | ||||
|                                         spec['mpi'].mpifc)) | ||||
| 
 | ||||
|         return args | ||||
| 
 | ||||
|     @run_after('install') | ||||
|     def ensure_parallel_compiler_wrappers(self): | ||||
|         # When installed with Autotools and starting at least version 1.8.10, | ||||
|         # the package produces C compiler wrapper called either 'h5cc' (when MPI | ||||
|         # support is disabled) or 'h5pcc' (when MPI support is enabled). The | ||||
|         # CMake installation produces the wrapper called 'h5cc' (regardless of | ||||
|         # whether MPI support is enabled) only starting versions 1.8.21, 1.10.2 | ||||
|         # and 1.12.0. The current develop versions also produce 'h5pcc' when MPI | ||||
|         # support is enabled and the file is identical to 'h5cc'. Here, we make | ||||
|         # sure that 'h5pcc' is available when MPI support is enabled (only for | ||||
|         # versions that generate 'h5cc'). | ||||
|         if self.spec.satisfies('@1.8.21:1.8.22,1.10.2:1.10.7,1.12.0+mpi'): | ||||
|             with working_dir(self.prefix.bin): | ||||
|                 # No try/except here, fix the condition above instead: | ||||
|                 symlink('h5cc', 'h5pcc') | ||||
| 
 | ||||
|         # The same as for 'h5pcc'. However, the CMake installation produces the | ||||
|         # Fortran compiler wrapper called 'h5fc' only starting versions 1.8.22, | ||||
|         # 1.10.6 and 1.12.0. The current develop versions do not produce 'h5pfc' | ||||
|         # at all. Here, we make sure that 'h5pfc' is available when Fortran and | ||||
|         # MPI support are enabled (only for versions that generate 'h5fc'). | ||||
|         if self.spec.satisfies('@1.8.22:1.8.999,' | ||||
|                                '1.10.6:1.10.999,' | ||||
|                                '1.12.0:1.12.999,' | ||||
|                                'develop:' | ||||
|                                '+fortran+mpi'): | ||||
|             with working_dir(self.prefix.bin): | ||||
|                 # No try/except here, fix the condition above instead: | ||||
|                 symlink('h5fc', 'h5pfc') | ||||
| 
 | ||||
|     @run_after('install') | ||||
|     def fix_package_config(self): | ||||
|         # We need to fix the pkg-config files, which are also used by the | ||||
|         # compiler wrappers. The files are created starting versions 1.8.21, | ||||
|         # 1.10.2 and 1.12.0. However, they are broken (except for the version | ||||
|         # 1.8.22): the files are named <name>-<version>.pc but reference <name> | ||||
|         # packages. This was fixed in the develop versions at some point: the | ||||
|         # files started referencing <name>-<version> packages but got broken | ||||
|         # again: the files got names <name>.pc but references had not been | ||||
|         # updated accordingly. Another issue, which we address here, is that | ||||
|         # some Linux distributions install pkg-config files named hdf5.pc and we | ||||
|         # want to override them. Therefore, the following solution makes sure | ||||
|         # that each <name>-<version>.pc file is symlinked by <name>.pc and all | ||||
|         # references to <name>-<version> packages in the original files are | ||||
|         # replaced with references to <name> packages. | ||||
|         pc_files = find(self.prefix.lib.pkgconfig, 'hdf5*.pc', recursive=False) | ||||
| 
 | ||||
|         if not pc_files: | ||||
|             # This also tells us that the pkgconfig directory does not exist. | ||||
|             return | ||||
| 
 | ||||
|         # Replace versioned references in all pkg-config files: | ||||
|         filter_file( | ||||
|             r'(Requires(?:\.private)?:.*)(hdf5[^\s,]*)(?:-[^\s,]*)(.*)', | ||||
|             r'\1\2\3', *pc_files, backup=False) | ||||
| 
 | ||||
|         # Create non-versioned symlinks to the versioned pkg-config files: | ||||
|         with working_dir(self.prefix.lib.pkgconfig): | ||||
|             for f in pc_files: | ||||
|                 src_filename = os.path.basename(f) | ||||
|                 version_sep_idx = src_filename.find('-') | ||||
|                 if version_sep_idx > -1: | ||||
|                     tgt_filename = src_filename[:version_sep_idx] + '.pc' | ||||
|                     if not os.path.exists(tgt_filename): | ||||
|                         symlink(src_filename, tgt_filename) | ||||
| 
 | ||||
|     @run_after('install') | ||||
|     @on_package_attributes(run_tests=True) | ||||
|     def check_install(self): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Sergey Kosukhin
					Sergey Kosukhin