summaryrefslogtreecommitdiffstats
path: root/fortran/src
diff options
context:
space:
mode:
Diffstat (limited to 'fortran/src')
-rw-r--r--fortran/src/CMakeLists.txt254
-rw-r--r--fortran/src/H5Ff.c50
-rw-r--r--fortran/src/Makefile.in4
3 files changed, 283 insertions, 25 deletions
diff --git a/fortran/src/CMakeLists.txt b/fortran/src/CMakeLists.txt
new file mode 100644
index 0000000..c2ca1e6
--- /dev/null
+++ b/fortran/src/CMakeLists.txt
@@ -0,0 +1,254 @@
+cmake_minimum_required (VERSION 2.8)
+PROJECT (HDF5_F90_SRC C CXX Fortran)
+
+#-----------------------------------------------------------------------------
+# When building utility executables that generate other (source) files :
+# we make use of the following variables defined in the root CMakeLists.
+# Certain systems may add /Debug or /Release to output paths
+# and we need to call the executable from inside the CMake configuration
+#-----------------------------------------------------------------------------
+#inherit EXE_EXT from parent HDF5 cmake project
+#inherit CFG_INIT from parent HDF5 cmake project
+
+#-----------------------------------------------------------------------------
+# Setup the Fortran auto-detection utilities
+# H5test_kind(_SIZEOF).f90 used to generate H5fortran_detect.f90
+# H5fortran_detect.f90 used to generate H5fort_type_defines.h
+# H5fort_type_defines.h used to generate H5f90i_gen.h + H5fortran_types.f90
+#-----------------------------------------------------------------------------
+IF (FORTRAN_HAVE_SIZEOF)
+ ADD_EXECUTABLE (H5test_FortranHavekind
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5test_kind_SIZEOF.f90
+ )
+ELSE (FORTRAN_HAVE_SIZEOF)
+ ADD_EXECUTABLE (H5test_FortranHavekind
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5test_kind.f90
+ )
+ENDIF (FORTRAN_HAVE_SIZEOF)
+IF (WIN32)
+ IF (MSVC)
+ IF (BUILD_SHARED_LIBS)
+ SET_TARGET_PROPERTIES (H5test_FortranHavekind
+ PROPERTIES
+ COMPILE_FLAGS "/MT"
+ )
+ ENDIF (BUILD_SHARED_LIBS)
+ SET_TARGET_PROPERTIES (H5test_FortranHavekind
+ PROPERTIES
+ LINK_FLAGS "/SUBSYSTEM:CONSOLE"
+ )
+ ENDIF (MSVC)
+ENDIF (WIN32)
+SET_TARGET_PROPERTIES (H5test_FortranHavekind PROPERTIES LINKER_LANGUAGE Fortran)
+
+SET (CMD ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}${CFG_INIT}/H5test_FortranHavekind${EXE_EXT})
+ADD_CUSTOM_COMMAND (
+ OUTPUT ${HDF5_F90_BINARY_DIR}/H5fortran_detect.f90
+ COMMAND ${CMD}
+ ARGS > ${HDF5_F90_BINARY_DIR}/H5fortran_detect.f90
+ WORKING_DIRECTORY ${HDF5_F90_BINARY_DIR}
+ DEPENDS H5test_FortranHavekind
+)
+#-----------------------------------------------------------------------------
+ADD_EXECUTABLE (H5fortran_detect
+ ${HDF5_F90_BINARY_DIR}/H5fortran_detect.f90
+)
+IF (WIN32)
+ IF (MSVC)
+ IF (BUILD_SHARED_LIBS)
+ SET_TARGET_PROPERTIES (H5fortran_detect
+ PROPERTIES
+ COMPILE_FLAGS "/MT"
+ )
+ ENDIF (BUILD_SHARED_LIBS)
+ SET_TARGET_PROPERTIES (H5fortran_detect
+ PROPERTIES
+ LINK_FLAGS "/SUBSYSTEM:CONSOLE"
+ )
+ ENDIF (MSVC)
+ENDIF (WIN32)
+SET_TARGET_PROPERTIES (H5test_FortranHavekind PROPERTIES LINKER_LANGUAGE Fortran)
+
+SET (CMD ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}${CFG_INIT}/H5fortran_detect${EXE_EXT})
+ADD_CUSTOM_COMMAND (
+ OUTPUT ${HDF5_F90_BINARY_DIR}/H5fort_type_defines.h
+ COMMAND ${CMD}
+ ARGS > ${HDF5_F90_BINARY_DIR}/H5fort_type_defines.h
+ WORKING_DIRECTORY ${HDF5_F90_BINARY_DIR}
+ DEPENDS H5fortran_detect
+)
+
+#-----------------------------------------------------------------------------
+ADD_EXECUTABLE (H5match_types
+ ${HDF5_F90_BINARY_DIR}/H5fort_type_defines.h
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5match_types.c
+)
+SET (CMD ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}${CFG_INIT}/H5match_types${EXE_EXT})
+ADD_CUSTOM_COMMAND (
+ OUTPUT ${HDF5_F90_BINARY_DIR}/H5f90i_gen.h
+ ${HDF5_F90_BINARY_DIR}/H5fortran_types.f90
+ COMMAND ${CMD}
+ WORKING_DIRECTORY ${HDF5_F90_BINARY_DIR}
+ DEPENDS H5match_types
+)
+
+#-----------------------------------------------------------------------------
+# f90CStub lib
+#-----------------------------------------------------------------------------
+SET (f90CStub_C_SRCS
+ # generated files
+ ${HDF5_F90_BINARY_DIR}/H5f90i_gen.h
+
+ # normal distribution
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5f90kit.c
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5_f.c
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5Af.c
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5Df.c
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5Ef.c
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5Ff.c
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5Gf.c
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5If.c
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5Lf.c
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5Of.c
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5Pf.c
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5Rf.c
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5Sf.c
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5Tf.c
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5Zf.c
+)
+
+IF (H5_HAVE_PARALLEL)
+ SET (f90CStub_C_SRCS
+ ${f90CStub_C_SRCS}
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5FDmpiof.c
+ )
+ENDIF (H5_HAVE_PARALLEL)
+
+SET_SOURCE_FILES_PROPERTIES (${f90CStub_C_SRCS} PROPERTIES LANGUAGE C)
+
+ADD_LIBRARY (${HDF5_F90_C_LIB_TARGET} ${LIB_TYPE} ${f90CStub_C_SRCS})
+TARGET_LINK_LIBRARIES (${HDF5_F90_C_LIB_TARGET} ${HDF5_LIB_TARGET})
+SET_GLOBAL_VARIABLE (HDF5_LIBRARIES_TO_EXPORT "${HDF5_LIBRARIES_TO_EXPORT};${HDF5_F90_C_LIB_TARGET}")
+H5_SET_LIB_OPTIONS (${HDF5_F90_C_LIB_TARGET} ${HDF5_F90_C_LIB_NAME} ${LIB_TYPE})
+
+#-----------------------------------------------------------------------------
+# Fortran Real Size
+#-----------------------------------------------------------------------------
+IF (FORTRAN_DEFAULT_REAL_NOT_DOUBLE)
+ # default real is 4 bytes, so include double signatures
+ SET (F_DBLE "Include")
+ELSE (FORTRAN_DEFAULT_REAL_NOT_DOUBLE)
+ # default real is 8 bytes, so exclude double signatures
+ SET (F_DBLE "Exclude")
+ENDIF (FORTRAN_DEFAULT_REAL_NOT_DOUBLE)
+
+#-----------------------------------------------------------------------------
+# Fortran Modules
+#-----------------------------------------------------------------------------
+SET (f90_F_SRCS
+ # generated files
+ ${HDF5_F90_BINARY_DIR}/H5fortran_types.f90
+
+ # normal distribution
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5f90global.f90
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5_ff.f90
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5Aff.f90
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5Dff.f90
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5Eff.f90
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5Fff.f90
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5Gff.f90
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5Iff.f90
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5Lff.f90
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5Off.f90
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5Pff.f90
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5Rff.f90
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5Sff.f90
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5Tff.f90
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5Zff.f90
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5_DBLE_Interface${F_DBLE}.f90
+)
+
+#-----------------------------------------------------------------------------
+# Add H5FDMPIO if parallel
+#-----------------------------------------------------------------------------
+IF (H5_HAVE_PARALLEL)
+ SET (f90_F_SRCS
+ ${f90_F_SRCS}
+ ${HDF5_F90_SRC_SOURCE_DIR}/HDF5mpio.f90
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5FDmpioff.f90
+ )
+ELSE (H5_HAVE_PARALLEL)
+ SET (f90_F_SRCS
+ ${f90_F_SRCS}
+ ${HDF5_F90_SRC_SOURCE_DIR}/HDF5.f90
+ )
+ENDIF (H5_HAVE_PARALLEL)
+
+#-----------------------------------------------------------------------------
+# Add Main fortran library
+#-----------------------------------------------------------------------------
+ADD_LIBRARY (${HDF5_F90_LIB_TARGET} ${LIB_TYPE} ${f90_F_SRCS})
+IF (WIN32)
+ IF (BUILD_SHARED_LIBS)
+ SET_PROPERTY (TARGET ${HDF5_F90_LIB_TARGET}
+ APPEND PROPERTY COMPILE_DEFINITIONS
+ BUILD_HDF5_DLL
+ )
+ IF (MSVC)
+ SET_TARGET_PROPERTIES (${HDF5_F90_LIB_TARGET}
+ PROPERTIES
+ COMPILE_FLAGS "/dll"
+ LINK_FLAGS "/SUBSYSTEM:CONSOLE /DLL /DEF:${HDF5_F90_SRC_SOURCE_DIR}/hdf5_fortrandll.def"
+ )
+ ENDIF (MSVC)
+ ENDIF (BUILD_SHARED_LIBS)
+ SET_PROPERTY (TARGET ${HDF5_F90_LIB_TARGET}
+ APPEND PROPERTY COMPILE_DEFINITIONS
+ HDF5F90_WINDOWS
+ )
+ENDIF (WIN32)
+SET_TARGET_PROPERTIES (${HDF5_F90_LIB_TARGET} PROPERTIES LINKER_LANGUAGE Fortran)
+TARGET_LINK_LIBRARIES (${HDF5_F90_LIB_TARGET} ${HDF5_F90_C_LIB_TARGET} ${HDF5_LIB_TARGET})
+SET_GLOBAL_VARIABLE (HDF5_LIBRARIES_TO_EXPORT "${HDF5_LIBRARIES_TO_EXPORT};${HDF5_F90_LIB_TARGET}")
+H5_SET_LIB_OPTIONS (${HDF5_F90_LIB_TARGET} ${HDF5_F90_LIB_NAME} ${LIB_TYPE})
+
+#-----------------------------------------------------------------------------
+# Add file(s) to CMake Install
+#-----------------------------------------------------------------------------
+INSTALL (
+ FILES
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5f90.h
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5f90i.h
+ ${HDF5_F90_SRC_SOURCE_DIR}/H5f90proto.h
+ ${HDF5_F90_BINARY_DIR}/H5f90i_gen.h
+ ${HDF5_F90_BINARY_DIR}/H5fortran_types.f90
+ DESTINATION
+ include/fortran
+ COMPONENT
+ fortheaders
+)
+
+INSTALL (
+ DIRECTORY
+ ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/
+ DESTINATION
+ include/fortran
+ COMPONENT
+ fortheaders
+)
+
+#-----------------------------------------------------------------------------
+# Add Target(s) to CMake Install for import into other projects
+#-----------------------------------------------------------------------------
+IF (HDF5_EXPORTED_TARGETS)
+ INSTALL (
+ TARGETS
+ ${HDF5_F90_C_LIB_TARGET}
+ ${HDF5_F90_LIB_TARGET}
+ EXPORT
+ ${HDF5_EXPORTED_TARGETS}
+ LIBRARY DESTINATION lib COMPONENT fortlibraries
+ ARCHIVE DESTINATION lib COMPONENT fortlibraries
+ RUNTIME DESTINATION bin COMPONENT fortlibraries
+ )
+ENDIF (HDF5_EXPORTED_TARGETS)
diff --git a/fortran/src/H5Ff.c b/fortran/src/H5Ff.c
index 51a53a8..9640444 100644
--- a/fortran/src/H5Ff.c
+++ b/fortran/src/H5Ff.c
@@ -444,32 +444,36 @@ nh5fget_obj_count_c ( hid_t_f *file_id , int_f *obj_type, size_t_f * obj_count)
* number of open objects
* Thursday, September 25, 2008 EIP
*---------------------------------------------------------------------------*/
-
int_f
-nh5fget_obj_ids_c ( hid_t_f *file_id , int_f *obj_type, size_t_f *max_objs, hid_t_f *obj_ids, size_t_f *num_objs)
+nh5fget_obj_ids_c(hid_t_f *file_id, int_f *obj_type, size_t_f *max_objs,
+ hid_t_f *obj_ids, size_t_f *num_objs)
{
- int ret_value = 0;
- hid_t c_file_id;
- unsigned c_obj_type;
- int i;
- size_t c_max_objs;
- ssize_t c_num_objs;
- hid_t *c_obj_ids;
-
- c_file_id = (hid_t)*file_id;
- c_obj_type = (unsigned) *obj_type;
- c_max_objs = (size_t)*max_objs;
- c_obj_ids = (hid_t *)HDmalloc(sizeof(hid_t)*c_max_objs);
-
- c_num_objs = H5Fget_obj_ids(c_file_id, c_obj_type, c_max_objs, c_obj_ids);
- if ( c_num_objs < 0 ) ret_value = -1;
- for (i=0; i< c_max_objs; i++) obj_ids[i] = (hid_t_f)c_obj_ids[i];
-
- HDfree(c_obj_ids);
- *num_objs = (size_t_f)c_num_objs;
-
- return ret_value;
+ int ret_value = 0;
+ hid_t c_file_id;
+ unsigned c_obj_type;
+ size_t u;
+ size_t c_max_objs;
+ ssize_t c_num_objs;
+ hid_t *c_obj_ids;
+
+ c_file_id = (hid_t)*file_id;
+ c_obj_type = (unsigned) *obj_type;
+ c_max_objs = (size_t)*max_objs;
+ c_obj_ids = (hid_t *)HDmalloc(sizeof(hid_t)*c_max_objs);
+
+ c_num_objs = H5Fget_obj_ids(c_file_id, c_obj_type, c_max_objs, c_obj_ids);
+ if(c_num_objs < 0)
+ ret_value = -1;
+ for(u = 0; u < c_max_objs; u++)
+ obj_ids[u] = (hid_t_f)c_obj_ids[u];
+
+ HDfree(c_obj_ids);
+ *num_objs = (size_t_f)c_num_objs;
+
+ return ret_value;
}
+
+
/*----------------------------------------------------------------------------
* Name: h5fget_freespace_c
* Purpose: Call H5Fget_freespace to get amount of free space within a file
diff --git a/fortran/src/Makefile.in b/fortran/src/Makefile.in
index 4fd4a5a..fe25387 100644
--- a/fortran/src/Makefile.in
+++ b/fortran/src/Makefile.in
@@ -255,12 +255,12 @@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
INSTRUMENT = @INSTRUMENT@
INSTRUMENT_LIBRARY = @INSTRUMENT_LIBRARY@
+LARGEFILE = @LARGEFILE@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
-LINUX_LFS = @LINUX_LFS@
LIPO = @LIPO@
LL_PATH = @LL_PATH@
LN_S = @LN_S@
@@ -424,7 +424,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog
# Add libtool shared library version numbers to the HDF5 library
# See libtool versioning documentation online.
LT_VERS_INTERFACE = 6
-LT_VERS_REVISION = 59
+LT_VERS_REVISION = 63
LT_VERS_AGE = 0
# Include src directory in both Fortran and C flags (C compiler is used