diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2010-10-08 01:55:21 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2010-10-08 01:55:21 (GMT) |
commit | 3c470c9db63424d8a07c1fb789ee8e8c513dd2a6 (patch) | |
tree | 8ce7ec40f5c5e04898281cefa0f72c3e91cf9d66 /fortran/src | |
parent | 6747ebd9858374ae912b6182024861b1710518c8 (diff) | |
download | hdf5-3c470c9db63424d8a07c1fb789ee8e8c513dd2a6.zip hdf5-3c470c9db63424d8a07c1fb789ee8e8c513dd2a6.tar.gz hdf5-3c470c9db63424d8a07c1fb789ee8e8c513dd2a6.tar.bz2 |
[svn-r19543] Description:
Bring r19411:19542 from trunk to revise_chunks branch.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (amani) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, w/threadsafe, in production mode
Linux/PPC 2.6 (heiwa) w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in debug mode
Mac OS X/32 10.6.4 (amazon) in debug mode
Mac OS X/32 10.6.4 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
Mac OS X/32 10.6.4 (amazon) w/parallel, in debug mode
Diffstat (limited to 'fortran/src')
-rw-r--r-- | fortran/src/CMakeLists.txt | 54 | ||||
-rw-r--r-- | fortran/src/Makefile.in | 22 | ||||
-rwxr-xr-x | fortran/src/h5fc.in | 64 |
3 files changed, 98 insertions, 42 deletions
diff --git a/fortran/src/CMakeLists.txt b/fortran/src/CMakeLists.txt index c2ca1e6..2af57c1 100644 --- a/fortran/src/CMakeLists.txt +++ b/fortran/src/CMakeLists.txt @@ -25,20 +25,18 @@ ELSE (FORTRAN_HAVE_SIZEOF) ${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) +IF (WIN32 AND MSVC) + IF (BUILD_SHARED_LIBS) SET_TARGET_PROPERTIES (H5test_FortranHavekind PROPERTIES - LINK_FLAGS "/SUBSYSTEM:CONSOLE" + COMPILE_FLAGS "/MT" ) - ENDIF (MSVC) -ENDIF (WIN32) + ENDIF (BUILD_SHARED_LIBS) + SET_TARGET_PROPERTIES (H5test_FortranHavekind + PROPERTIES + LINK_FLAGS "/SUBSYSTEM:CONSOLE" + ) +ENDIF (WIN32 AND MSVC) SET_TARGET_PROPERTIES (H5test_FortranHavekind PROPERTIES LINKER_LANGUAGE Fortran) SET (CMD ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}${CFG_INIT}/H5test_FortranHavekind${EXE_EXT}) @@ -53,20 +51,18 @@ ADD_CUSTOM_COMMAND ( 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) +IF (WIN32 AND MSVC) + IF (BUILD_SHARED_LIBS) SET_TARGET_PROPERTIES (H5fortran_detect PROPERTIES - LINK_FLAGS "/SUBSYSTEM:CONSOLE" + COMPILE_FLAGS "/MT" ) - ENDIF (MSVC) -ENDIF (WIN32) + ENDIF (BUILD_SHARED_LIBS) + SET_TARGET_PROPERTIES (H5fortran_detect + PROPERTIES + LINK_FLAGS "/SUBSYSTEM:CONSOLE" + ) +ENDIF (WIN32 AND MSVC) SET_TARGET_PROPERTIES (H5test_FortranHavekind PROPERTIES LINKER_LANGUAGE Fortran) SET (CMD ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}${CFG_INIT}/H5fortran_detect${EXE_EXT}) @@ -188,7 +184,7 @@ ENDIF (H5_HAVE_PARALLEL) # Add Main fortran library #----------------------------------------------------------------------------- ADD_LIBRARY (${HDF5_F90_LIB_TARGET} ${LIB_TYPE} ${f90_F_SRCS}) -IF (WIN32) +IF (WIN32 AND NOT CYGWIN) IF (BUILD_SHARED_LIBS) SET_PROPERTY (TARGET ${HDF5_F90_LIB_TARGET} APPEND PROPERTY COMPILE_DEFINITIONS @@ -206,7 +202,7 @@ IF (WIN32) APPEND PROPERTY COMPILE_DEFINITIONS HDF5F90_WINDOWS ) -ENDIF (WIN32) +ENDIF (WIN32 AND NOT CYGWIN) 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}") @@ -223,7 +219,7 @@ INSTALL ( ${HDF5_F90_BINARY_DIR}/H5f90i_gen.h ${HDF5_F90_BINARY_DIR}/H5fortran_types.f90 DESTINATION - include/fortran + ${HDF5_INSTALL_INCLUDE_DIR}/fortran COMPONENT fortheaders ) @@ -232,7 +228,7 @@ INSTALL ( DIRECTORY ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/ DESTINATION - include/fortran + ${HDF5_INSTALL_INCLUDE_DIR}/fortran COMPONENT fortheaders ) @@ -247,8 +243,8 @@ IF (HDF5_EXPORTED_TARGETS) ${HDF5_F90_LIB_TARGET} EXPORT ${HDF5_EXPORTED_TARGETS} - LIBRARY DESTINATION lib COMPONENT fortlibraries - ARCHIVE DESTINATION lib COMPONENT fortlibraries - RUNTIME DESTINATION bin COMPONENT fortlibraries + LIBRARY DESTINATION ${HDF5_INSTALL_LIB_DIR} COMPONENT fortlibraries + ARCHIVE DESTINATION ${HDF5_INSTALL_LIB_DIR} COMPONENT fortlibraries + RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT fortlibraries ) ENDIF (HDF5_EXPORTED_TARGETS) diff --git a/fortran/src/Makefile.in b/fortran/src/Makefile.in index b240a7a..cbb002b 100644 --- a/fortran/src/Makefile.in +++ b/fortran/src/Makefile.in @@ -404,14 +404,24 @@ LIBH5_HL = $(top_builddir)/hl/src/libhdf5_hl.la LIBH5F_HL = $(top_builddir)/hl/fortran/src/libhdf5hl_fortran.la LIBH5CPP_HL = $(top_builddir)/hl/c++/src/libhdf5_hl_cpp.la +# Note that in svn revision 19400 the '/' after DESTDIR in H5* variables below +# has been removed. According to the official description of DESTDIR by Gnu at +# http://www.gnu.org/prep/standards/html_node/DESTDIR.html, DESTDIR is +# prepended to the normal and complete install path that it precedes for the +# purpose of installing in a temporary directory which is useful for building +# rpms and other packages. The '/' after ${DESTDIR} will be followed by another +# '/' at the beginning of the normal install path. When DESTDIR is empty the +# path then begins with '//', which is incorrect and causes problems at least for +# Cygwin. + # Scripts used to build examples # If only shared libraries have been installed, have h5cc build examples with # shared libraries instead of static libraries -H5CC = $(bindir)/h5cc -H5CC_PP = $(bindir)/h5pcc -H5FC = $(bindir)/h5fc -H5FC_PP = $(bindir)/h5pfc -H5CPP = $(bindir)/h5c++ +H5CC = ${DESTDIR}$(bindir)/h5cc +H5CC_PP = ${DESTDIR}$(bindir)/h5pcc +H5FC = ${DESTDIR}$(bindir)/h5fc +H5FC_PP = ${DESTDIR}$(bindir)/h5pfc +H5CPP = ${DESTDIR}$(bindir)/h5c++ ACLOCAL_AMFLAGS = "-I m4" # The trace script; this is used on source files from the C library to @@ -426,7 +436,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 = 65 +LT_VERS_REVISION = 66 LT_VERS_AGE = 0 # Include src directory in both Fortran and C flags (C compiler is used diff --git a/fortran/src/h5fc.in b/fortran/src/h5fc.in index db44600..9e9409d 100755 --- a/fortran/src/h5fc.in +++ b/fortran/src/h5fc.in @@ -32,6 +32,24 @@ HL="@HL@" ############################################################################ ## ## +## Things You Can Modify to Override HDF5 Library Build Components: ## +## ## +## (Advanced usage - know what you're doing - you're on your own here.) ## +## The three variables below can be used to insert paths and flags in ## +## FFLAGS, LDFLAGS, or LIBS in the h5fc compile line: ## +## $FLINKER $FFLAGS $H5BLD_FFLAGS $F9XSUFFIXFLAG $LDFLAGS $LIBS ## +## $fmodules $link_objs $link_args $shared_link ## +## ## +## These settings can be overriden by setting HDF5_FFLAGS, ## +## HDF5_LDFLAGS, or HDF5_LIBS in the environment. ## +## ## +############################################################################ +FFLAGSBASE="" +LDFLAGSBASE="" +LIBSBASE="" + +############################################################################ +## ## ## You shouldn't have to modify anything below this line. ## ## ## ############################################################################ @@ -58,14 +76,27 @@ get_output_file="no" SHOW="eval" FCBASE="@FC@" FLINKERBASE="@FC@" -FFLAGS="@AM_FCFLAGS@ @FCFLAGS@" + +# FFLAGS and LDFLAGS are reserved for use by the script user. +# FLAGS brought from the hdf5 build are put in H5BLD_*FLAGS. + +# User's FFLAGS come after their H5BLD counterparts to override +# them. User's LDFLAGS come just before clibpath, user's LIBS come after +# $link_objs and before the hdf5 libraries in $link_args, followed by any +# external library paths and libraries from AM_LDFLAGS, LDFLAGS, AM_LIBS +# or LIBS carried in from the hdf5 build. + +H5BLD_FFLAGS="@AM_FCFLAGS@ @FCFLAGS@" F9XMODFLAG="@F9XMODFLAG@" F9XSUFFIXFLAG="@F9XSUFFIXFLAG@" -LDFLAGS="@AM_LDFLAGS@ @LDFLAGS@" -LIBS="@LIBS@" +H5BLD_LDFLAGS="@AM_LDFLAGS@ @LDFLAGS@" +H5BLD_LIBS="@LIBS@" FC="${HDF5_FC:-$FCBASE}" FLINKER="${HDF5_FLINKER:-$FLINKERBASE}" +FFLAGS="${HDF5_FFLAGS:-$FFLAGSBASE}" +LDFLAGS="${HDF5_LDFLAGS:-$LDFLAGSBASE}" +LIBS="${HDF5_LIBS:-$LIBSBASE}" USE_SHARED_LIB="${HDF5_USE_SHLIB:-no}" @@ -92,6 +123,20 @@ usage() { echo " " echo " HDF5_FC - use a different Fortran 90 or 95 compiler" echo " HDF5_FLINKER - use a different linker" + echo " HDF5_USE_SHLIB=[yes|no] - use shared or static version of the HDF5 library" + echo " [default: no]" + echo " " + echo " You can also add or change paths and flags to the compile line using" + echo " the following environment varibles or by assigning them to their counterparts" + echo " in the 'Things You Can Modify to Override...'" section of $prog_name + echo " " + echo " Variable Current value to be replaced" + echo " HDF5_FFLAGS \"$CFLAGSBASE\"" + echo " HDF5_LDFLAGS \"$LDFLAGSBASE\"" + echo " HDF5_LIBS \"$LIBSBASE\"" + echo " " + echo " Note that adding library paths to HDF5_LDFLAGS where another hdf5 version" + echo " is located may link your program with that other hdf5 library version." echo " " exit $EXIT_FAILURE } @@ -228,7 +273,7 @@ if test "x$do_compile" = "xyes"; then fi - $SHOW $FC $FFLAGS ${F9XSUFFIXFLAG} ${fmodules} $compile_args + $SHOW $FC $H5BLD_FFLAGS $FFLAGS ${F9XSUFFIXFLAG} ${fmodules} $compile_args status=$? if test "$status" != "0"; then @@ -297,9 +342,14 @@ if test "x$do_link" = "xyes"; then # The LIBS are just a bunch of -l* libraries necessary for the HDF5 # module. It's okay if they're included twice in the compile line. - link_args="$link_args $LIBS" - - $SHOW $FLINKER $FFLAGS $F9XSUFFIXFLAG $fmodules $link_objs $link_args $shared_link $LDFLAGS + link_args="$link_args $H5BLD_LDFLAGS $H5BLD_LIBS" + + # User's FFLAGS come after their H5BLD counterparts to override + # them. User's LDFLAGS come just before clibpath, user's LIBS come after + # $link_objs and before the hdf5 libraries in $link_args, followed by any + # external library paths and libraries from AM_LDFLAGS, LDFLAGS, AM_LIBS + # or LIBS carried in from the hdf5 build. + $SHOW $FLINKER $FFLAGS $H5BLD_FFLAGS $F9XSUFFIXFLAG $LDFLAGS $fmodules $link_objs $LIBS $link_args $shared_link status=$? fi |