diff options
-rw-r--r-- | etc/spack/defaults/packages.yaml | 2 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/hdf5/1.10.7_cmake.patch | 90 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/hdf5/1.12.0_cmake.patch | 104 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/hdf5/1.8.21_cmake.patch | 362 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/hdf5/1.8.22_cmake.patch | 121 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/hdf5/package.py | 195 |
6 files changed, 770 insertions, 104 deletions
diff --git a/etc/spack/defaults/packages.yaml b/etc/spack/defaults/packages.yaml index 2d6b3da9be..0a5e00ce08 100644 --- a/etc/spack/defaults/packages.yaml +++ b/etc/spack/defaults/packages.yaml @@ -48,7 +48,7 @@ packages: rpc: [libtirpc] scalapack: [netlib-scalapack, amdscalapack] sycl: [hipsycl] - szip: [libszip, libaec] + szip: [libaec, libszip] tbb: [intel-tbb] unwind: [libunwind] uuid: [util-linux-uuid, libuuid] diff --git a/var/spack/repos/builtin/packages/hdf5/1.10.7_cmake.patch b/var/spack/repos/builtin/packages/hdf5/1.10.7_cmake.patch new file mode 100644 index 0000000000..a85aad1bb3 --- /dev/null +++ b/var/spack/repos/builtin/packages/hdf5/1.10.7_cmake.patch @@ -0,0 +1,90 @@ +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 () + + #----------------------------------------------------------------------------- diff --git a/var/spack/repos/builtin/packages/hdf5/1.12.0_cmake.patch b/var/spack/repos/builtin/packages/hdf5/1.12.0_cmake.patch new file mode 100644 index 0000000000..68e56e96e7 --- /dev/null +++ b/var/spack/repos/builtin/packages/hdf5/1.12.0_cmake.patch @@ -0,0 +1,104 @@ +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 () diff --git a/var/spack/repos/builtin/packages/hdf5/1.8.21_cmake.patch b/var/spack/repos/builtin/packages/hdf5/1.8.21_cmake.patch new file mode 100644 index 0000000000..227c4db565 --- /dev/null +++ b/var/spack/repos/builtin/packages/hdf5/1.8.21_cmake.patch @@ -0,0 +1,362 @@ +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 () diff --git a/var/spack/repos/builtin/packages/hdf5/1.8.22_cmake.patch b/var/spack/repos/builtin/packages/hdf5/1.8.22_cmake.patch new file mode 100644 index 0000000000..b6016fd5b0 --- /dev/null +++ b/var/spack/repos/builtin/packages/hdf5/1.8.22_cmake.patch @@ -0,0 +1,121 @@ +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 () diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py index 0aa7e5b730..99cb1e4975 100644 --- a/var/spack/repos/builtin/packages/hdf5/package.py +++ b/var/spack/repos/builtin/packages/hdf5/package.py @@ -6,10 +6,8 @@ import shutil import sys -from spack.util.environment import is_system_path - -class Hdf5(AutotoolsPackage): +class Hdf5(CMakePackage): """HDF5 is a data model, library, and file format for storing and managing data. It supports an unlimited variety of datatypes, and is designed for flexible and efficient I/O and for high volume and complex data. @@ -19,20 +17,18 @@ class Hdf5(AutotoolsPackage): url = "https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.7/src/hdf5-1.10.7.tar.gz" list_url = "https://support.hdfgroup.org/ftp/HDF5/releases" list_depth = 3 - git = "https://bitbucket.hdfgroup.org/scm/hdffv/hdf5.git" - maintainers = ['lrknox'] + git = "https://github.com/HDFGroup/hdf5.git" + maintainers = ['lrknox', 'brtnfld', 'byrnHDF', 'ChristopherHogan', 'epourmal', + 'gheber', 'hyoklee', 'lkurz', 'soumagne'] test_requires_compiler = True - # We rely on the *.la files to be removed and, therefore, do not try to make - # sure that they are correct. The following is a precaution against someone - # blindly changing the value to True, either here or in the baseclass. - install_libtool_archives = False - version('develop', 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') version('1.12.0', sha256='a62dcb276658cb78e6795dd29bf926ed7a9bc4edf6e77025cd2c689a8f97c17a') - # HDF5 1.12 broke API compatibility, so we currently prefer the latest # 1.10 release. packages that want later versions of HDF5 should specify, # e.g., depends_on("hdf5@1.12:") to get 1.12 or higher. @@ -58,8 +54,6 @@ class Hdf5(AutotoolsPackage): version('1.8.12', sha256='b5cccea850096962b5fd9e96f22c4f47d2379224bb41130d9bc038bb6c37dfcb') version('1.8.10', sha256='4813b79c5fb8701a625b9924b8203bc7154a77f9b826ad4e034144b4056a160a') - variant('debug', default=False, - description='Builds a debug version of the library') variant('shared', default=True, description='Builds a shared version of the library') @@ -69,32 +63,39 @@ class Hdf5(AutotoolsPackage): variant('java', default=False, description='Enable Java support') variant('threadsafe', default=False, description='Enable thread-safe capabilities') - + 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 compaitibility. - variant('api', default='none', description='choose api compatibility', values=('none', 'v114', 'v112', 'v110', 'v18', 'v16'), multi=False) + # 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) 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('autoconf', type='build', when='@develop') - depends_on('automake', type='build', when='@develop') - depends_on('libtool', type='build', when='@develop') - depends_on('m4', type='build', when='@develop') + depends_on('cmake@3.12:') depends_on('mpi', when='+mpi') - depends_on('java', when='+java') + depends_on('java', type=('build', 'run'), when='+java') # numactl does not currently build on darwin if sys.platform != 'darwin': depends_on('numactl', when='+mpi+fortran') depends_on('szip', when='+szip') depends_on('zlib@1.1.2:') + # 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. @@ -138,7 +139,7 @@ class Hdf5(AutotoolsPackage): # Disable MPI C++ interface when C++ is disabled, otherwise downstream # libraries fail to link; see https://github.com/spack/spack/issues/12586 - patch('h5public-skip-mpicxx.patch', when='@:1.8.21,1.10.0:1.10.5+mpi~cxx', + patch('h5public-skip-mpicxx.patch', when='@1.8.10:1.8.21,1.10.0:1.10.5+mpi~cxx', sha256='b61e2f058964ad85be6ee5ecea10080bf79e73f83ff88d1fa4b602d00209da9c') # Fixes BOZ literal constant error when compiled with GCC 10. @@ -151,6 +152,15 @@ class Hdf5(AutotoolsPackage): # 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 @@ -190,11 +200,6 @@ class Hdf5(AutotoolsPackage): return (None, None, flags) - @when('@develop') - def autoreconf(self, spec, prefix): - autogen = Executable('./autogen.sh') - autogen() - @property def libs(self): """HDF5 can be queried for the following parameters: @@ -202,6 +207,7 @@ class Hdf5(AutotoolsPackage): - "hl": high-level interface - "cxx": C++ APIs - "fortran": Fortran APIs + - "java": Java APIs :return: list of matching libraries """ @@ -213,11 +219,12 @@ class Hdf5(AutotoolsPackage): # to the libraries needed query2libraries = { tuple(): ['libhdf5'], - ('cxx', 'fortran', 'hl'): [ + ('cxx', 'fortran', 'hl', 'java'): [ 'libhdf5hl_fortran', 'libhdf5_hl_cpp', 'libhdf5_hl', 'libhdf5_fortran', + 'libhdf5_java', 'libhdf5', ], ('cxx', 'hl'): [ @@ -247,6 +254,10 @@ class Hdf5(AutotoolsPackage): ('fortran',): [ 'libhdf5_fortran', 'libhdf5', + ], + ('java',): [ + 'libhdf5_java', + 'libhdf5', ] } @@ -258,104 +269,82 @@ class Hdf5(AutotoolsPackage): libraries, root=self.prefix, shared=shared, recursive=True ) - @run_before('configure') + @run_before('cmake') def fortran_check(self): if '+fortran' in self.spec and not self.compiler.fc: msg = 'cannot build a Fortran variant without a Fortran compiler' raise RuntimeError(msg) - def with_or_without_szip(self, activated): - return '--{0}-szlib'.format('with' if activated else 'without') + def cmake_args(self): + spec = self.spec - def configure_args(self): # 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. - extra_args = ['--enable-unsupported', - '--enable-symbols=yes'] - - # Do not specify the prefix of zlib if it is in a system directory - # (see https://github.com/spack/spack/pull/21900). - zlib_prefix = self.spec['zlib'].prefix - extra_args.append('--with-zlib={0}'.format( - 'yes' if is_system_path(zlib_prefix) else zlib_prefix)) - - extra_args += self.enable_or_disable('threadsafe') - extra_args += self.enable_or_disable('cxx') - extra_args += self.enable_or_disable('hl') - extra_args += self.enable_or_disable('fortran') - extra_args += self.enable_or_disable('java') - extra_args += self.with_or_without('szip') - - api = self.spec.variants['api'].value - if api != 'none': - extra_args.append('--with-default-api-version=' + api) - - if self.spec.satisfies('@1.10:'): - if '+debug' in self.spec: - extra_args.append('--enable-build-mode=debug') - else: - extra_args.append('--enable-build-mode=production') - else: - if '+debug' in self.spec: - extra_args.append('--enable-debug=all') - else: - extra_args.append('--enable-production') - - # '--enable-fortran2003' no longer exists as of version 1.10.0 - if '+fortran' in self.spec: - extra_args.append('--enable-fortran2003') - else: - extra_args.append('--disable-fortran2003') + args = [ + self.define('ALLOW_UNSUPPORTED', True), + self.define('HDF5_ENABLE_Z_LIB_SUPPORT', True), + self.define_from_variant('HDF5_ENABLE_SZIP_SUPPORT', 'szip'), + self.define_from_variant('BUILD_SHARED_LIBS', 'shared'), + 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'), + self.define_from_variant('HDF5_BUILD_CPP_LIB', 'cxx'), + self.define_from_variant('HDF5_BUILD_FORTRAN', 'fortran'), + self.define_from_variant('HDF5_BUILD_JAVA', 'java'), + self.define_from_variant('HDF5_BUILD_TOOLS', 'tools') + ] - if '+shared' in self.spec: - extra_args.append('--enable-shared') - else: - extra_args.append('--disable-shared') - extra_args.append('--enable-static-exec') + 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 self.spec: - extra_args.append('LDFLAGS=-lfj90i -lfj90f -lfjsrcinfo -lelf') + if '+fortran %fj' in spec: + args.append('LDFLAGS=-lfj90i -lfj90f -lfjsrcinfo -lelf') - if '+mpi' in self.spec: + 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. - extra_args += ['--enable-parallel', - 'CC=%s' % self.spec['mpi'].mpicc] + args.append('CC=%s' % self.spec['mpi'].mpicc) if '+cxx' in self.spec: - extra_args.append('CXX=%s' % self.spec['mpi'].mpicxx) + args.append('CXX=%s' % self.spec['mpi'].mpicxx) if '+fortran' in self.spec: - extra_args.append('FC=%s' % self.spec['mpi'].mpifc) - - return extra_args - - @run_after('configure') - def patch_postdeps(self): - if '@:1.8.14' in self.spec: - # On Ubuntu14, HDF5 1.8.12 (and maybe other versions) - # mysteriously end up with "-l -l" in the postdeps in the - # libtool script. Patch this by removing the spurious -l's. - filter_file( - r'postdeps="([^"]*)"', - lambda m: 'postdeps="%s"' % ' '.join( - arg for arg in m.group(1).split(' ') if arg != '-l'), - 'libtool') - - @run_after('configure') - def patch_libtool(self): - """AOCC support for HDF5""" - if '%aocc' in self.spec: - filter_file( - r'\$wl-soname \$wl\$soname', - r'-fuse-ld=ld -Wl,-soname,\$soname', - 'libtool', string=True) + args.append('FC=%s' % self.spec['mpi'].mpifc) + + return args @run_after('install') @on_package_attributes(run_tests=True) |