From 5697dc8f803fc0d9ff69db930953a4b86cb21e27 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Thu, 29 Nov 2012 09:50:21 -0500 Subject: [svn-r23066] HDFFV-8265: create .def file during configure, added F2003 optional functions and refactor ISO_C_BINDING usage in cmake files Tested: local cmake --- CMakeLists.txt | 5 +++++ fortran/examples/CMakeLists.txt | 4 ++-- fortran/src/CMakeLists.txt | 9 ++++++--- fortran/src/hdf5_fortrandll.def.in | 34 ++++++++++++++++++++++++++-------- fortran/test/CMakeLists.txt | 4 ++-- 5 files changed, 41 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0d2db1d..d86d29e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -759,6 +759,11 @@ IF (EXISTS "${HDF5_SOURCE_DIR}/fortran" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/for IF (HDF5_BUILD_FORTRAN) OPTION (HDF5_ENABLE_F2003 "Enable FORTRAN 2003 Standard" OFF) INCLUDE (${HDF5_RESOURCES_DIR}/HDF5UseFortran.cmake) + IF (HDF5_ENABLE_F2003) + IF (NOT FORTRAN_HAVE_ISO_C_BINDING) + SET (HDF5_ENABLE_F2003 OFF) + ENDIF (NOT FORTRAN_HAVE_ISO_C_BINDING) + ENDIF (HDF5_ENABLE_F2003) # ----------------------------------------------------------------------- # wrapper script variables diff --git a/fortran/examples/CMakeLists.txt b/fortran/examples/CMakeLists.txt index 4bd236e..0825f81 100644 --- a/fortran/examples/CMakeLists.txt +++ b/fortran/examples/CMakeLists.txt @@ -63,7 +63,7 @@ FOREACH (example ${examples}) ENDFOREACH (example ${examples}) -IF (FORTRAN_HAVE_ISO_C_BINDING AND HDF5_ENABLE_F2003) +IF (HDF5_ENABLE_F2003) FOREACH (example ${F2003_examples}) ADD_EXECUTABLE (f03_ex_${example} ${HDF5_F90_EXAMPLES_SOURCE_DIR}/${example}.f90) TARGET_NAMING (f03_ex_${example} ${LIB_TYPE}) @@ -88,7 +88,7 @@ IF (FORTRAN_HAVE_ISO_C_BINDING AND HDF5_ENABLE_F2003) SET (last_test "f03_ex_${example}") ENDIF (BUILD_TESTING) ENDFOREACH (example ${F2003_examples}) -ENDIF (FORTRAN_HAVE_ISO_C_BINDING AND HDF5_ENABLE_F2003) +ENDIF (HDF5_ENABLE_F2003) IF (H5_HAVE_PARALLEL AND MPI_Fortran_FOUND) ADD_EXECUTABLE (f90_ex_ph5example ${HDF5_F90_EXAMPLES_SOURCE_DIR}/ph5example.f90) diff --git a/fortran/src/CMakeLists.txt b/fortran/src/CMakeLists.txt index 7cde8df..374bc44 100644 --- a/fortran/src/CMakeLists.txt +++ b/fortran/src/CMakeLists.txt @@ -9,6 +9,9 @@ IF (WIN32 AND NOT CYGWIN) IF (NOT H5_HAVE_PARALLEL) SET (H5_NOPAREXP ";") ENDIF (NOT H5_HAVE_PARALLEL) + IF (NOT HDF5_ENABLE_F2003) + SET (H5_NOF03EXP ";") + ENDIF (NOT HDF5_ENABLE_F2003) CONFIGURE_FILE (${HDF5_F90_SRC_SOURCE_DIR}/hdf5_fortrandll.def.in ${HDF5_F90_SRC_BINARY_DIR}/hdf5_fortrandll.def @ONLY) ENDIF (MSVC) ENDIF (BUILD_SHARED_LIBS) @@ -139,13 +142,13 @@ SET_TARGET_PROPERTIES (${HDF5_F90_C_LIB_TARGET} PROPERTIES LINKER_LANGUAGE C) #----------------------------------------------------------------------------- # Fortran 2003 standard #----------------------------------------------------------------------------- -IF (FORTRAN_HAVE_ISO_C_BINDING AND HDF5_ENABLE_F2003) +IF (HDF5_ENABLE_F2003) # default real is 4 bytes, so include double signatures SET (F_STATUS "_F03") -ELSE (FORTRAN_HAVE_ISO_C_BINDING AND HDF5_ENABLE_F2003) +ELSE (HDF5_ENABLE_F2003) # default real is 8 bytes, so exclude double signatures SET (F_STATUS "_F90") -ENDIF (FORTRAN_HAVE_ISO_C_BINDING AND HDF5_ENABLE_F2003) +ENDIF (HDF5_ENABLE_F2003) #----------------------------------------------------------------------------- # Fortran Real Size diff --git a/fortran/src/hdf5_fortrandll.def.in b/fortran/src/hdf5_fortrandll.def.in index 9e53ee3..bf7596d 100644 --- a/fortran/src/hdf5_fortrandll.def.in +++ b/fortran/src/hdf5_fortrandll.def.in @@ -6,6 +6,7 @@ H5LIB_mp_H5GET_LIBVERSION_F H5LIB_mp_H5CHECK_VERSION_F H5LIB_mp_H5GARBAGE_COLLECT_F H5LIB_mp_H5DONT_ATEXIT_F +@H5_NOF03EXP@H5LIB_PROVISIONAL_mp_H5OFFSETOF ; H5_DBLE_INTERFACE H5_DBLE_INTERFACE_mp_H5AREAD_DOUBLE_SCALAR H5_DBLE_INTERFACE_mp_H5AREAD_DOUBLE_1 @@ -120,6 +121,8 @@ H5A_mp_H5AEXISTS_F H5A_mp_H5AEXISTS_BY_NAME_F H5A_mp_H5AOPEN_BY_NAME_F H5A_mp_H5ARENAME_F +@H5_NOF03EXP@H5A_PROVISIONAL_mp_H5AWRITE_PTR +@H5_NOF03EXP@H5A_PROVISIONAL_mp_H5AREAD_PTR ; H5D H5D_mp_H5DCREATE_F H5D_mp_H5DOPEN_F @@ -200,6 +203,9 @@ H5D_mp_H5DGET_CREATE_PLIST_F H5D_mp_H5DGET_STORAGE_SIZE_F H5D_mp_H5DVLEN_GET_MAX_LEN_F H5D_mp_H5DGET_ACCESS_PLIST_F +@H5_NOF03EXP@H5D_PROVISIONAL_mp_H5DWRITE_PTR +@H5_NOF03EXP@H5D_PROVISIONAL_mp_H5DREAD_PTR +@H5_NOF03EXP@H5D_PROVISIONAL_mp_H5DVLEN_RECLAIM_F ; H5E H5E_mp_H5ECLEAR_F H5E_mp_H5EPRINT_F @@ -283,6 +289,8 @@ H5L_mp_H5LGET_INFO_BY_IDX_F H5L_mp_H5LIS_REGISTERED_F H5L_mp_H5LMOVE_F H5L_mp_H5LGET_NAME_BY_IDX_F +@H5_NOF03EXP@H5L_PROVISIONAL_mp_H5LITERATE_F +@H5_NOF03EXP@H5L_PROVISIONAL_mp_H5LITERATE_BY_NAME_F ; H5O H5O_mp_H5OCLOSE_F H5O_mp_H5OCOPY_F @@ -297,12 +305,11 @@ H5O_mp_H5OOPEN_BY_IDX_F H5O_mp_H5OOPEN_F H5O_mp_H5OSET_COMMENT_F H5O_mp_H5OSET_COMMENT_BY_NAME_F -; These should only get compiled with option --enable-fortran2003 -;H5O_PROVISIONAL_mp_H5OGET_INFO_BY_IDX_F -;H5O_PROVISIONAL_mp_H5OGET_INFO_BY_NAME_F -;H5O_PROVISIONAL_mp_H5OGET_INFO_F -;H5O_PROVISIONAL_mp_H5OVISIT_BY_NAME_F -;H5O_PROVISIONAL_mp_H5OVISIT_F +@H5_NOF03EXP@H5O_PROVISIONAL_mp_H5OGET_INFO_BY_IDX_F +@H5_NOF03EXP@H5O_PROVISIONAL_mp_H5OGET_INFO_BY_NAME_F +@H5_NOF03EXP@H5O_PROVISIONAL_mp_H5OGET_INFO_F +@H5_NOF03EXP@H5O_PROVISIONAL_mp_H5OVISIT_BY_NAME_F +@H5_NOF03EXP@H5O_PROVISIONAL_mp_H5OVISIT_F ; H5P H5P_mp_H5PCREATE_F H5P_mp_H5PSET_PRESERVE_F @@ -439,16 +446,26 @@ H5P_mp_H5PGET_NLINKS_F H5P_mp_H5PGET_CREATE_INTER_GROUP_F H5P_mp_H5PSET_CHUNK_CACHE_F H5P_mp_H5PGET_CHUNK_CACHE_F +@H5_NOF03EXP@H5P_PROVISIONAL_mp_H5PSET_FILL_VALUE_PTR +@H5_NOF03EXP@H5P_PROVISIONAL_mp_H5PGET_FILL_VALUE_PTR +@H5_NOF03EXP@H5P_PROVISIONAL_mp_H5PSET_PTR +@H5_NOF03EXP@H5P_PROVISIONAL_mp_H5PGET_PTR +@H5_NOF03EXP@H5P_PROVISIONAL_mp_H5PREGISTER_PTR +@H5_NOF03EXP@H5P_PROVISIONAL_mp_H5PINSERT_PTR ; H5R H5R_PROVISIONAL_mp_H5RCREATE_OBJECT_F H5R_PROVISIONAL_mp_H5RCREATE_REGION_F H5R_PROVISIONAL_mp_H5RDEREFERENCE_OBJECT_F H5R_PROVISIONAL_mp_H5RDEREFERENCE_REGION_F H5R_PROVISIONAL_mp_H5RGET_REGION_REGION_F - H5R_mp_H5RGET_OBJECT_TYPE_OBJ_F H5R_PROVISIONAL_mp_H5RGET_NAME_OBJECT_F H5R_PROVISIONAL_mp_H5RGET_NAME_REGION_F +@H5_NOF03EXP@H5R_PROVISIONAL_mp_H5RGET_REGION_PTR_F +@H5_NOF03EXP@H5R_PROVISIONAL_mp_H5RCREATE_PTR_F +@H5_NOF03EXP@H5R_PROVISIONAL_mp_H5RDEREFERENCE_PTR_F +@H5_NOF03EXP@H5R_PROVISIONAL_mp_H5RGET_NAME_PTR_F +@H5_NOF03EXP@H5R_PROVISIONAL_mp_H5RGET_OBJ_TYPE_F ; H5S H5S_mp_H5SCREATE_SIMPLE_F H5S_mp_H5SCLOSE_F @@ -538,6 +555,7 @@ H5T_mp_H5TENCODE_F H5T_mp_H5TGET_CREATE_PLIST_F H5T_mp_H5TCOMPILER_CONV_F H5T_mp_H5TGET_NATIVE_TYPE_F +@H5_NOF03EXP@H5T_PROVISIONAL_mp_H5TCONVERT_F ; H5Z H5Z_mp_H5ZUNREGISTER_F H5Z_mp_H5ZFILTER_AVAIL_F @@ -549,4 +567,4 @@ H5Z_mp_H5ZGET_FILTER_INFO_F @H5_NOPAREXP@H5FDMPIO_mp_H5PGET_DXPL_MPIO_F @H5_NOPAREXP@H5FDMPIO_mp_H5PSET_FAPL_MPIPOSIX_F @H5_NOPAREXP@H5FDMPIO_mp_H5PGET_FAPL_MPIPOSIX_F -@H5_NOPAREXP@H5FDMPIO_mp_H5PGET_MPIO_ACTUAL_IO_MODE_F \ No newline at end of file +@H5_NOPAREXP@H5FDMPIO_mp_H5PGET_MPIO_ACTUAL_IO_MODE_F diff --git a/fortran/test/CMakeLists.txt b/fortran/test/CMakeLists.txt index 3a3d084..92ba651 100644 --- a/fortran/test/CMakeLists.txt +++ b/fortran/test/CMakeLists.txt @@ -100,7 +100,7 @@ ADD_TEST (NAME testhdf5_fortran_1_8 COMMAND $) SET_TESTS_PROPERTIES(testhdf5_fortran_1_8 PROPERTIES PASS_REGULAR_EXPRESSION "[ ]*0 error.s") #-- Adding test for fortranlib_test_F03 -IF (FORTRAN_HAVE_ISO_C_BINDING AND HDF5_ENABLE_F2003) +IF (HDF5_ENABLE_F2003) ADD_EXECUTABLE (fortranlib_test_F03 fortranlib_test_F03.f90 tH5F.f90 @@ -125,7 +125,7 @@ IF (FORTRAN_HAVE_ISO_C_BINDING AND HDF5_ENABLE_F2003) ADD_TEST (NAME fortranlib_test_F03 COMMAND $) SET_TESTS_PROPERTIES(fortranlib_test_F03 PROPERTIES PASS_REGULAR_EXPRESSION "[ ]*0 error.s") -ENDIF (FORTRAN_HAVE_ISO_C_BINDING AND HDF5_ENABLE_F2003) +ENDIF (HDF5_ENABLE_F2003) #-- Adding test for fflush1 ADD_EXECUTABLE (fflush1 fflush1.f90) -- cgit v0.12