Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/cmake/Modules/G4HDF5Shim.cmake

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /cmake/Modules/G4HDF5Shim.cmake (Version 11.3.0) and /cmake/Modules/G4HDF5Shim.cmake (Version 11.2.1)


  1 # - G4HDF5Shim                                      1 # - G4HDF5Shim
  2 #                                                   2 #
  3 # Geant4's Geant4Config.cmake file aims to sup      3 # Geant4's Geant4Config.cmake file aims to support CMake 3.8 and newer
  4 # The HDF5 dependency is located through CMake      4 # The HDF5 dependency is located through CMake's builtin FindHDF5
  5 # module, but this does not supply imported ta      5 # module, but this does not supply imported targets until CMake 3.20.
  6 # It may use HDF5's hdf5-config.cmake file if       6 # It may use HDF5's hdf5-config.cmake file if available, so create
  7 # custom imported target hdf5::hdf5 to allow b      7 # custom imported target hdf5::hdf5 to allow both cases to be handled
  8 # without interference with either.                 8 # without interference with either.
  9                                                     9  
 10 if(HDF5_FOUND)                                     10 if(HDF5_FOUND)
 11  # If we're in MT mode, found HDF5 must also s     11  # If we're in MT mode, found HDF5 must also support MT
 12  if(GEANT4_BUILD_MULTITHREADED OR Geant4_multi     12  if(GEANT4_BUILD_MULTITHREADED OR Geant4_multithreaded_FOUND)
 13    include(CheckCXXSymbolExists)                   13    include(CheckCXXSymbolExists)
 14    set(CMAKE_REQUIRED_INCLUDES "${HDF5_INCLUDE     14    set(CMAKE_REQUIRED_INCLUDES "${HDF5_INCLUDE_DIRS}")
 15    check_cxx_symbol_exists(H5_HAVE_THREADSAFE      15    check_cxx_symbol_exists(H5_HAVE_THREADSAFE "H5pubconf.h" GEANT4_HAVE_H5_HAVE_THREADSAFE)
 16    unset(CMAKE_REQUIRED_INCLUDES)                  16    unset(CMAKE_REQUIRED_INCLUDES)
 17                                                    17 
 18    if(NOT GEANT4_HAVE_H5_HAVE_THREADSAFE)          18    if(NOT GEANT4_HAVE_H5_HAVE_THREADSAFE)
 19      message(FATAL_ERROR                           19      message(FATAL_ERROR
 20        "Found an install of HDF5, but it was n     20        "Found an install of HDF5, but it was not built with support for thread safety. "
 21        "Either build Geant4 in single threaded     21        "Either build Geant4 in single threaded mode, or use/reinstall HDF5 with "
 22        "thread safety enabled. See HDF5's inst     22        "thread safety enabled. See HDF5's install guides, available from https://support.hdfgroup.org/HDF5/release/, for instructions on this.\n"
 23        )                                           23        )
 24    endif()                                         24    endif()
 25  endif()                                           25  endif()
 26                                                    26 
 27  # If FindHDF5 does not yet supply imported ta     27  # If FindHDF5 does not yet supply imported targets, we
 28  # create an internal INTERFACE target to wrap     28  # create an internal INTERFACE target to wrap these.
 29  # This still hard-codes include/library paths     29  # This still hard-codes include/library paths, but limits it
 30  # to one place. Later, we'll create proper im     30  # to one place. Later, we'll create proper imported targets
 31  # with re-finds but for now this is the best      31  # with re-finds but for now this is the best minimally invasive proceedure
 32  if(NOT TARGET hdf5::hdf5)                         32  if(NOT TARGET hdf5::hdf5)
 33    add_library(hdf5::hdf5 IMPORTED UNKNOWN)        33    add_library(hdf5::hdf5 IMPORTED UNKNOWN)
 34    set_target_properties(hdf5::hdf5 PROPERTIES     34    set_target_properties(hdf5::hdf5 PROPERTIES
 35      IMPORTED_LINK_INTERFACE_LANGUAGES "C"         35      IMPORTED_LINK_INTERFACE_LANGUAGES "C"
 36      IMPORTED_LOCATION "${HDF5_C_LIBRARY_hdf5}     36      IMPORTED_LOCATION "${HDF5_C_LIBRARY_hdf5}"
 37      INTERFACE_INCLUDE_DIRECTORIES "${HDF5_C_I     37      INTERFACE_INCLUDE_DIRECTORIES "${HDF5_C_INCLUDE_DIRS}"
 38      INTERFACE_LINK_LIBRARIES "${HDF5_C_LIBRAR     38      INTERFACE_LINK_LIBRARIES "${HDF5_C_LIBRARIES}"
 39      )                                             39      )
 40  endif()                                           40  endif()
 41 endif()                                            41 endif()