mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-02-17 16:10:24 +08:00
CMake updates:
Add build folder as Include for generated files Add install option for copying Fortran mod files to include folder Add PRI defines to win32defs file Exclude mingw from extra flags
This commit is contained in:
parent
7db1ff03a1
commit
271208dceb
@ -969,6 +969,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")
|
||||
|
@ -85,7 +85,7 @@ if (NOT MSVC AND NOT MINGW)
|
||||
list (APPEND H5_CXXFLAGS0 "-Wsign-compare -Wtrigraphs -Wwrite-strings")
|
||||
endif()
|
||||
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
if (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_LOADED
|
||||
if (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_LOADED
|
||||
AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 4.8)
|
||||
# add the general CXX flags for g++ compiler versions 4.8 and above.
|
||||
ADD_H5_FLAGS (HDF5_CMAKE_CXX_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/cxx-general")
|
||||
|
@ -48,7 +48,7 @@ endif ()
|
||||
# CDash is configured to only allow 3000 warnings, so
|
||||
# break into groups (from the config/gnu-flags file)
|
||||
#-----------------------------------------------------------------------------
|
||||
if (NOT MSVC)
|
||||
if (NOT MSVC AND NOT MINGW)
|
||||
# General flags
|
||||
if (CMAKE_Fortran_COMPILER_ID STREQUAL "Intel")
|
||||
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/ifort-general")
|
||||
|
@ -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)
|
||||
|
@ -2,3 +2,7 @@
|
||||
-Wno-inline
|
||||
-Wno-missing-format-attribute
|
||||
-Wno-missing-noreturn
|
||||
# NOTE: -pedantic includes -Woverlength-strings which triggers a warning
|
||||
# regarding the library settings string (H5libhdf5_settings). We'll turn
|
||||
# it off here but leave it on in the developer flags.
|
||||
-Wno-overlength-strings
|
||||
|
@ -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 ()
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
|
@ -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 ()
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
|
@ -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"
|
||||
|
@ -46,6 +46,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
|
||||
|
@ -1135,7 +1135,7 @@ if (NOT ONLY_SHARED_LIBS)
|
||||
add_library (${HDF5_LIB_TARGET} STATIC ${common_SRCS} ${gen_SRCS} ${H5_PUBLIC_HEADERS} ${H5_PRIVATE_HEADERS} ${H5_GENERATED_HEADERS})
|
||||
target_include_directories (${HDF5_LIB_TARGET}
|
||||
PRIVATE "${HDF5_SRC_DIR};${HDF5_BINARY_DIR};$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:${MPI_C_INCLUDE_DIRS}>"
|
||||
INTERFACE "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>"
|
||||
INTERFACE "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>;$<BUILD_INTERFACE:${HDF5_BINARY_DIR}>"
|
||||
)
|
||||
target_compile_options(${HDF5_LIB_TARGET} PRIVATE "${HDF5_CMAKE_C_FLAGS}")
|
||||
target_compile_definitions(${HDF5_LIB_TARGET}
|
||||
@ -1172,7 +1172,7 @@ if (BUILD_SHARED_LIBS)
|
||||
target_include_directories (${HDF5_LIBSH_TARGET}
|
||||
PRIVATE "${HDF5_SRC_DIR};${HDF5_BINARY_DIR};$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:${MPI_C_INCLUDE_DIRS}>"
|
||||
PUBLIC "$<$<BOOL:${HDF5_ENABLE_HDFS}>:${HDFS_INCLUDE_DIR}>"
|
||||
INTERFACE "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>"
|
||||
INTERFACE "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>;$<BUILD_INTERFACE:${HDF5_BINARY_DIR}>"
|
||||
)
|
||||
target_compile_options(${HDF5_LIBSH_TARGET} PRIVATE "${HDF5_CMAKE_C_FLAGS}")
|
||||
target_compile_definitions(${HDF5_LIBSH_TARGET}
|
||||
|
@ -20,6 +20,45 @@
|
||||
* inside H5private.h
|
||||
*
|
||||
*/
|
||||
#ifndef H5_HAVE_INTTYPES_H
|
||||
/* The following definitions should be suitable for 64-bit Windows, which is
|
||||
* LLP64, and for 32-bit Windows, which is ILP32. Those are the only
|
||||
* platforms where <inttypes.h> is likely to be missing. VS2015 and later
|
||||
* *may* provide these definitions.
|
||||
*/
|
||||
#ifdef _WIN64
|
||||
# define PRIdPTR "lld"
|
||||
# define PRIoPTR "llo"
|
||||
# define PRIuPTR "llu"
|
||||
# define PRIxPTR "llx"
|
||||
#else /* _WIN64 */
|
||||
# define PRIdPTR "ld"
|
||||
# define PRIoPTR "lo"
|
||||
# define PRIuPTR "lu"
|
||||
# define PRIxPTR "lx"
|
||||
#endif /* _WIN64 */
|
||||
|
||||
# define PRId8 "d"
|
||||
# define PRIo8 "o"
|
||||
# define PRIu8 "u"
|
||||
# define PRIx8 "x"
|
||||
# define PRId16 "d"
|
||||
# define PRIo16 "o"
|
||||
# define PRIu16 "u"
|
||||
# define PRIx16 "x"
|
||||
# define PRId32 "d"
|
||||
# define PRIo32 "o"
|
||||
# define PRIu32 "u"
|
||||
# define PRIx32 "x"
|
||||
# define PRId64 "lld"
|
||||
# define PRIo64 "llo"
|
||||
# define PRIu64 "llu"
|
||||
# define PRIx64 "llx"
|
||||
# define PRIdMAX "lld"
|
||||
# define PRIoMAX "llo"
|
||||
# define PRIuMAX "llu"
|
||||
# define PRIxMAX "llx"
|
||||
#endif
|
||||
|
||||
/*
|
||||
* _MSC_VER = 1900 VS2015
|
||||
@ -41,11 +80,6 @@ typedef __int64 h5_stat_size_t;
|
||||
#define HDfstat(F,B) _fstati64(F,B)
|
||||
#define HDisatty(F) _isatty(F)
|
||||
|
||||
/* The isnan function needs underscore in VS2012 and earlier */
|
||||
#if (_MSC_VER <= 1700)
|
||||
#define HDisnan(X) _isnan(X)
|
||||
#endif /* MSC_VER < 1700 */
|
||||
|
||||
#define HDgetcwd(S,Z) _getcwd(S,Z)
|
||||
#define HDgetdcwd(D,S,Z) _getdcwd(D,S,Z)
|
||||
#define HDgetdrive() _getdrive()
|
||||
@ -111,8 +145,10 @@ struct timespec
|
||||
};
|
||||
#endif /* MSC_VER < 1900 */
|
||||
|
||||
/* The round functions do not exist in VS2012 and earlier */
|
||||
#if (_MSC_VER <= 1700)
|
||||
/* The isnan function needs underscore in VS2012 and earlier */
|
||||
#define HDisnan(X) _isnan(X)
|
||||
/* The round functions do not exist in VS2012 and earlier */
|
||||
#define HDllround(V) Wllround(V)
|
||||
#define HDllroundf(V) Wllroundf(V)
|
||||
#define HDlround(V) Wlround(V)
|
||||
|
Loading…
Reference in New Issue
Block a user