@@ -179,21 +179,27 @@ if(hdf5_have_zlib)
179
179
# Szip even though not used by default.
180
180
# If system HDF5 dynamically links libhdf5 with szip, our builds will fail if we don't also link szip.
181
181
# however, we don't require SZIP for this case as other HDF5 libraries may statically link SZIP.
182
- if (NOT SZIP_ROOT )
183
- set (SZIP_ROOT ${ZLIB_ROOT} )
184
- endif ()
185
- if (HDF5_FIND_REQUIRED )
186
- find_package (SZIP REQUIRED )
187
- else ()
188
- find_package (SZIP )
189
- endif ()
190
- if (NOT SZIP_FOUND )
182
+
183
+ find_library (SZIP_LIBRARY
184
+ NAMES szip sz
185
+ NAMES_PER_DIR
186
+ HINTS ${SZIP_ROOT} ${ZLIB_ROOT}
187
+ DOC "SZIP API"
188
+ )
189
+
190
+ find_path (SZIP_INCLUDE_DIR
191
+ NAMES szlib.h
192
+ HINTS ${SZIP_ROOT} ${ZLIB_ROOT}
193
+ DOC "SZIP header"
194
+ )
195
+
196
+ if (NOT SZIP_LIBRARY AND SZIP_INCLUDE_DIR )
191
197
set (hdf5_prereqs false PARENT_SCOPE )
192
198
return ()
193
199
endif ()
194
200
195
- list (APPEND CMAKE_REQUIRED_INCLUDES ${SZIP_INCLUDE_DIRS } )
196
- list (APPEND CMAKE_REQUIRED_LIBRARIES ${SZIP_LIBRARIES } )
201
+ list (APPEND CMAKE_REQUIRED_INCLUDES ${SZIP_INCLUDE_DIR } )
202
+ list (APPEND CMAKE_REQUIRED_LIBRARIES ${SZIP_LIBRARY } )
197
203
endif ()
198
204
199
205
list (APPEND CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIRS} )
@@ -707,13 +713,20 @@ if(HDF5_parallel_FOUND)
707
713
list (APPEND CMAKE_REQUIRED_INCLUDES ${MPI_Fortran_INCLUDE_DIRS} )
708
714
list (APPEND CMAKE_REQUIRED_LIBRARIES ${MPI_Fortran_LIBRARIES} )
709
715
710
- set (test_h5fn ${CMAKE_CURRENT_FUNCTION_LIST_DIR} /check_hdf5_mpi.f90 )
711
-
712
- if (NOT EXISTS ${test_h5fn} )
713
- message (WARNING "FindHDF5 could not find ${test_h5fn} " )
714
- return ()
715
- endif ()
716
- file (READ ${test_h5fn} src )
716
+ set (src "program test
717
+ use hdf5
718
+ use mpi
719
+ implicit none
720
+ integer :: ierr, mpi_id
721
+ integer(HID_T) :: fapl, xfer_id
722
+ call mpi_init(ierr)
723
+ call h5open_f(ierr)
724
+ call h5pcreate_f(H5P_FILE_ACCESS_F, fapl, ierr)
725
+ call h5pset_fapl_mpio_f(fapl, MPI_COMM_WORLD, MPI_INFO_NULL, ierr)
726
+ call h5pcreate_f(H5P_DATASET_XFER_F, xfer_id, ierr)
727
+ call h5pset_dxpl_mpio_f(xfer_id, H5FD_MPIO_COLLECTIVE_F, ierr)
728
+ call mpi_finalize(ierr)
729
+ end program" )
717
730
else ()
718
731
set (src "program test_minimal
719
732
use hdf5, only : h5open_f, h5close_f
@@ -887,12 +900,16 @@ if(HDF5_FOUND)
887
900
if (NOT TARGET HDF5::HDF5 )
888
901
add_library (HDF5::HDF5 INTERFACE IMPORTED )
889
902
set_target_properties (HDF5::HDF5 PROPERTIES
890
- INTERFACE_LINK_LIBRARIES "${HDF5_LIBRARIES} "
891
- INTERFACE_INCLUDE_DIRECTORIES "${HDF5_INCLUDE_DIRS} " )
903
+ INTERFACE_LINK_LIBRARIES "${HDF5_LIBRARIES} "
904
+ INTERFACE_INCLUDE_DIRECTORIES "${HDF5_INCLUDE_DIRS} "
905
+ )
892
906
907
+ target_include_directories (HDF5::HDF5 INTERFACE
908
+ $< $< BOOL:${hdf5_have_szip} > :${SZIP_INCLUDE_DIR} >
909
+ )
893
910
target_link_libraries (HDF5::HDF5 INTERFACE
894
911
$< $< BOOL:${hdf5_have_zlib} > :ZLIB::ZLIB>
895
- $< $< BOOL:${hdf5_have_szip} > :SZIP::SZIP >
912
+ $< $< BOOL:${hdf5_have_szip} > :${SZIP_LIBRARY} >
896
913
${CMAKE_THREAD_LIBS_INIT}
897
914
${CMAKE_DL_LIBS}
898
915
$< $< BOOL:${UNIX} > :m>
0 commit comments