HDFFV-11116 Add option for install location of Fortran MOD files

This commit is contained in:
Allen Byrne 2020-07-09 13:03:58 -05:00
parent 4b12244091
commit 07a52ecb2f
6 changed files with 90 additions and 4 deletions

View File

@ -995,6 +995,17 @@ if (EXISTS "${HDF5_SOURCE_DIR}/fortran" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/for
endif ()
endif ()
#option (HDF5_INSTALL_MOD_FORTRAN "Copy FORTRAN mod files to include directory (NO SHARED STATIC)" "NO")
set (HDF5_INSTALL_MOD_FORTRAN "SHARED" CACHE STRING "Copy FORTRAN mod files to include directory (NO SHARED STATIC)")
set_property (CACHE HDF5_INSTALL_MOD_FORTRAN PROPERTY STRINGS NO SHARED STATIC)
if (NOT HDF5_INSTALL_MOD_FORTRAN MATCHES "NO")
if (NOT BUILD_SHARED_LIBS AND BUILD_STATIC_LIBS)
set (HDF5_INSTALL_MOD_FORTRAN "STATIC")
elseif (BUILD_SHARED_LIBS AND NOT BUILD_STATIC_LIBS)
set (HDF5_INSTALL_MOD_FORTRAN "SHARED")
endif ()
endif ()
add_subdirectory (fortran)
if (HDF5_BUILD_HL_LIB)
if (EXISTS "${HDF5_SOURCE_DIR}/hl/fortran" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/hl/fortran")

View File

@ -23,6 +23,9 @@ set (HDF_PACKAGE_NAMESPACE "hdf5::" CACHE STRING "Name for HDF package namespace
set (HDF5_BUILD_FORTRAN ON CACHE BOOL "Build FORTRAN support" FORCE)
set (HDF5_INSTALL_MOD_FORTRAN "NO" CACHE STRING "Copy FORTRAN mod files to include directory (NO SHARED STATIC)" FORCE)
set_property (CACHE HDF5_INSTALL_MOD_FORTRAN PROPERTY STRINGS NO SHARED STATIC)
set (HDF5_BUILD_GENERATORS ON CACHE BOOL "Build Test Generators" FORCE)
set (HDF5_ENABLE_Z_LIB_SUPPORT ON CACHE BOOL "Enable Zlib Filters" FORCE)

View File

@ -412,6 +412,16 @@ if (NOT ONLY_SHARED_LIBS)
COMPONENT
fortheaders
)
if (HDF5_INSTALL_MOD_FORTRAN MATCHES "STATIC")
install (
FILES
${mod_files}
DESTINATION
${HDF5_INSTALL_INCLUDE_DIR}
COMPONENT
fortheaders
)
endif ()
endif ()
if (BUILD_SHARED_LIBS)
@ -445,6 +455,16 @@ if (BUILD_SHARED_LIBS)
COMPONENT
fortheaders
)
if (HDF5_INSTALL_MOD_FORTRAN MATCHES "SHARED")
install (
FILES
${modsh_files}
DESTINATION
${HDF5_INSTALL_INCLUDE_DIR}
COMPONENT
fortheaders
)
endif ()
endif ()
#-----------------------------------------------------------------------------

View File

@ -234,7 +234,6 @@ if (NOT ONLY_SHARED_LIBS)
${MOD_BUILD_DIR}/h5lt_const.mod
${MOD_BUILD_DIR}/h5im.mod
)
install (
FILES
${mod_files}
@ -243,6 +242,16 @@ if (NOT ONLY_SHARED_LIBS)
COMPONENT
fortheaders
)
if (HDF5_INSTALL_MOD_FORTRAN MATCHES "STATIC")
install (
FILES
${mod_files}
DESTINATION
${HDF5_INSTALL_INCLUDE_DIR}
COMPONENT
fortheaders
)
endif ()
endif ()
if (BUILD_SHARED_LIBS)
set (modsh_files
@ -261,6 +270,16 @@ if (BUILD_SHARED_LIBS)
COMPONENT
fortheaders
)
if (HDF5_INSTALL_MOD_FORTRAN MATCHES "SHARED")
install (
FILES
${modsh_files}
DESTINATION
${HDF5_INSTALL_INCLUDE_DIR}
COMPONENT
fortheaders
)
endif ()
endif ()
#-----------------------------------------------------------------------------

View File

@ -624,6 +624,7 @@ The config/cmake/cacheinit.cmake file can override the following values.
---------------- General Build Options ---------------------
BUILD_SHARED_LIBS "Build Shared Libraries" ON
BUILD_STATIC_LIBS "Build Static Libraries" ON
BUILD_STATIC_EXECS "Build Static Executables" OFF
BUILD_TESTING "Build HDF5 Unit Testing" ON
@ -636,6 +637,7 @@ HDF5_BUILD_HL_LIB "Build HIGH Level HDF5 Library" ON
HDF5_BUILD_TOOLS "Build HDF5 Tools" ON
---------------- HDF5 Advanced Options ---------------------
ONLY_SHARED_LIBS "Only Build Shared Libraries" OFF
ALLOW_UNSUPPORTED "Allow unsupported combinations of configure options" OFF
HDF5_EXTERNAL_LIB_PREFIX "Use prefix for custom library naming." ""
HDF5_DISABLE_COMPILER_WARNINGS "Disable compiler warnings" OFF
@ -676,6 +678,12 @@ if (CMAKE_BUILD_TYPE MATCHES Debug)
HDF5_ENABLE_INSTRUMENT "Instrument The library" OFF
if (HDF5_TEST_VFD)
HDF5_TEST_FHEAP_VFD "Execute fheap test with different VFDs" ON
if (HDF5_BUILD_FORTRAN)
HDF5_INSTALL_MOD_FORTRAN "Copy FORTRAN mod files to include directory (NO SHARED STATIC)" "XX"
if (BUILD_SHARED_LIBS AND BUILD_STATIC_LIBS) default HDF5_INSTALL_MOD_FORTRAN is SHARED
if (BUILD_SHARED_LIBS AND NOT BUILD_STATIC_LIBS) default HDF5_INSTALL_MOD_FORTRAN is SHARED
if (NOT BUILD_SHARED_LIBS AND BUILD_STATIC_LIBS) default HDF5_INSTALL_MOD_FORTRAN is STATIC
if (NOT BUILD_SHARED_LIBS AND NOT BUILD_STATIC_LIBS) default HDF5_INSTALL_MOD_FORTRAN is SHARED
---------------- External Library Options ---------------------
HDF5_ALLOW_EXTERNAL_SUPPORT "Allow External Library Building (NO GIT TGZ)" "NO"

View File

@ -48,6 +48,31 @@ New Features
Configuration:
-------------
- CMake option to link the generated Fortran MOD files into the include
directory.
The Fortran generation of MOD files by a Fortran compile can produce
different binary files between SHARED and STATIC compiles with different
compilers and/or different platforms. Note that it has been found that
different versions of Fortran compilers will produce incompatible MOD
files. Currently, CMake will locate these MOD files in subfolders of
the include directory and add that path to the Fortran library target
in the CMake config file, which can be used by the CMake find library
process. For other build systems using the binary from a CMake install,
a new CMake configuration can be used to copy the pre-chosen version
of the Fortran MOD files into the install include directory.
The default will depend on the configuration of
BUILD_STATIC_LIBS and BUILD_SHARED_LIBS:
YES YES Default to SHARED
YES NO Default to STATIC
NO YES Default to SHARED
NO NO Default to SHARED
The defaults can be overriden by setting the config option
HDF5_INSTALL_MOD_FORTRAN to one of NO, SHARED, or STATIC
(ADB - 2020/07/9, HDFFV-11116)
- CMake option to use AEC (open source SZip) library instead of SZip
The open source AEC library is a replacement library for SZip. In
@ -1015,9 +1040,9 @@ Bug Fixes since HDF5-1.10.3 release
-------
- Stopped java/test/junit.sh.in installing libs for testing under ${prefix}
Lib files needed are now copied to a subdirectory in the java/test
directory, and on Macs the loader path for libhdf5.xxxs.so is changed
in the temporary copy of libhdf5_java.dylib.
Lib files needed are now copied to a subdirectory in the java/test
directory, and on Macs the loader path for libhdf5.xxxs.so is changed
in the temporary copy of libhdf5_java.dylib.
(LRK, 2020/7/2, HDFFV-11063)