summaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
authorJordan Henderson <jhenderson@hdfgroup.org>2024-03-12 23:44:49 (GMT)
committerJordan Henderson <jhenderson@hdfgroup.org>2024-03-12 23:44:49 (GMT)
commit953951b4a38dfa69a9d307976d12daac3167c9b2 (patch)
tree001dd4448ccc1bb116b77107891b2a559cc1628a /config
parent62956274377e41d308b2fe3dfc9ffbc66e24a21e (diff)
parent56f1092ddb72cc67485ef102b576714a25585ff9 (diff)
downloadhdf5-953951b4a38dfa69a9d307976d12daac3167c9b2.zip
hdf5-953951b4a38dfa69a9d307976d12daac3167c9b2.tar.gz
hdf5-953951b4a38dfa69a9d307976d12daac3167c9b2.tar.bz2
Merge branch 'develop' into feature/new_datatypes
Diffstat (limited to 'config')
-rw-r--r--config/cmake-presets/hidden-presets.json2
-rw-r--r--config/cmake/ConfigureChecks.cmake117
-rw-r--r--config/cmake/H5pubconf.h.in6
-rw-r--r--config/cmake/HDF5DeveloperBuild.cmake10
-rw-r--r--config/cmake/HDF5UseFortran.cmake9
-rw-r--r--config/cmake/HDFCompilerFlags.cmake3
-rw-r--r--config/cmake/HDFMacros.cmake5
-rw-r--r--config/cmake/HDFTests.c48
-rw-r--r--config/cmake/HDFUseFortran.cmake16
-rw-r--r--config/cmake/README.md.cmake.in22
-rw-r--r--config/cmake/UserMacros/Windows_MT.cmake34
-rw-r--r--config/cmake/mccacheinit.cmake2
-rw-r--r--config/cmake/runTest.cmake10
-rw-r--r--config/sanitizer/sanitizers.cmake44
14 files changed, 113 insertions, 215 deletions
diff --git a/config/cmake-presets/hidden-presets.json b/config/cmake-presets/hidden-presets.json
index 82565a6..d4e52ca 100644
--- a/config/cmake-presets/hidden-presets.json
+++ b/config/cmake-presets/hidden-presets.json
@@ -540,7 +540,7 @@
"name": "ci-x64-Release-Intel",
"configurePreset": "ci-x64-Release-Intel",
"hidden": true,
- "inherits": "ci-base",
+ "inherits": "ci-base"
}
]
}
diff --git a/config/cmake/ConfigureChecks.cmake b/config/cmake/ConfigureChecks.cmake
index 7c2475a..93c852e 100644
--- a/config/cmake/ConfigureChecks.cmake
+++ b/config/cmake/ConfigureChecks.cmake
@@ -78,7 +78,9 @@ if (WINDOWS)
endif ()
if (NOT UNIX AND NOT CYGWIN)
set (${HDF_PREFIX}_HAVE_GETCONSOLESCREENBUFFERINFO 1)
- set (${HDF_PREFIX}_HAVE_TIMEZONE 1)
+ if (MSVC_VERSION GREATER_EQUAL 1900)
+ set (${HDF_PREFIX}_HAVE_TIMEZONE 1)
+ endif ()
set (${HDF_PREFIX}_HAVE_GETTIMEOFDAY 1)
set (${HDF_PREFIX}_HAVE_LIBWS2_32 1)
set (${HDF_PREFIX}_HAVE_LIBWSOCK32 1)
@@ -210,86 +212,51 @@ macro (HDF_FUNCTION_TEST OTHER_TEST)
endmacro ()
#-----------------------------------------------------------------------------
-# Check for large file support
+# Platform-specific flags
#-----------------------------------------------------------------------------
-# The linux-lfs option is deprecated.
-set (LINUX_LFS 0)
-
set (HDF_EXTRA_C_FLAGS)
-set (HDF_EXTRA_FLAGS)
-if (MINGW OR NOT WINDOWS)
- if (CMAKE_SYSTEM_NAME MATCHES "Linux")
- # Linux Specific flags
- # This was originally defined as _POSIX_SOURCE which was updated to
- # _POSIX_C_SOURCE=199506L to expose a greater amount of POSIX
- # functionality so clock_gettime and CLOCK_MONOTONIC are defined
- # correctly. This was later updated to 200112L so that
- # posix_memalign() is visible for the direct VFD code on Linux
- # systems.
- # POSIX feature information can be found in the gcc manual at:
- # http://www.gnu.org/s/libc/manual/html_node/Feature-Test-Macros.html
- set (HDF_EXTRA_C_FLAGS -D_POSIX_C_SOURCE=200809L)
-
- # Need to add this so that O_DIRECT is visible for the direct
- # VFD on Linux systems.
- set (HDF_EXTRA_C_FLAGS ${HDF_EXTRA_C_FLAGS} -D_GNU_SOURCE)
-
- option (HDF_ENABLE_LARGE_FILE "Enable support for large (64-bit) files on Linux." ON)
- mark_as_advanced (HDF_ENABLE_LARGE_FILE)
- if (HDF_ENABLE_LARGE_FILE AND NOT DEFINED TEST_LFS_WORKS_RUN)
- set (msg "Performing TEST_LFS_WORKS")
- try_run (TEST_LFS_WORKS_RUN TEST_LFS_WORKS_COMPILE
- ${CMAKE_BINARY_DIR}
- ${HDF_RESOURCES_DIR}/HDFTests.c
- COMPILE_DEFINITIONS "-DTEST_LFS_WORKS"
- )
- # The LARGEFILE definitions were from the transition period
- # and are probably no longer needed. The FILE_OFFSET_BITS
- # check should be generalized for all POSIX systems as it
- # is in the Autotools.
- if (TEST_LFS_WORKS_COMPILE)
- if (TEST_LFS_WORKS_RUN MATCHES 0)
- set (TEST_LFS_WORKS 1 CACHE INTERNAL ${msg})
- set (LARGEFILE 1)
- set (HDF_EXTRA_FLAGS ${HDF_EXTRA_FLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE)
- message (VERBOSE "${msg}... yes")
- else ()
- set (TEST_LFS_WORKS "" CACHE INTERNAL ${msg})
- message (VERBOSE "${msg}... no")
- file (APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
- "Test TEST_LFS_WORKS Run failed with the following exit code:\n ${TEST_LFS_WORKS_RUN}\n"
- )
- endif ()
- else ()
- set (TEST_LFS_WORKS "" CACHE INTERNAL ${msg})
- message (VERBOSE "${msg}... no")
- file (APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
- "Test TEST_LFS_WORKS Compile failed\n"
- )
- endif ()
- endif ()
- set (CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} ${HDF_EXTRA_FLAGS})
- endif ()
+# Linux-specific flags
+if (CMAKE_SYSTEM_NAME MATCHES "Linux")
+ # This was originally defined as _POSIX_SOURCE which was updated to
+ # _POSIX_C_SOURCE=199506L to expose a greater amount of POSIX
+ # functionality so clock_gettime and CLOCK_MONOTONIC are defined
+ # correctly. This was later updated to 200112L so that
+ # posix_memalign() is visible for the direct VFD code on Linux
+ # systems.
+ # POSIX feature information can be found in the gcc manual at:
+ # http://www.gnu.org/s/libc/manual/html_node/Feature-Test-Macros.html
+ set (HDF_EXTRA_C_FLAGS -D_POSIX_C_SOURCE=200809L)
+
+ # Need to add this so that O_DIRECT is visible for the direct
+ # VFD on Linux systems.
+ set (HDF_EXTRA_C_FLAGS ${HDF_EXTRA_C_FLAGS} -D_GNU_SOURCE)
+
+ # Set up large file support. This is only necessary on 32-bit systems
+ # but is used on all Linux systems. It has no effect on 64-bit systems
+ # so it's not worth hacking up a 32/64-bit test to selectively include it.
+ #
+ # The library currently does not use any of the 64-flavored API calls
+ # or types
+ set (HDF_EXTRA_C_FLAGS ${HDF_EXTRA_C_FLAGS} -D_LARGEFILE_SOURCE)
+ set (HDF_EXTRA_C_FLAGS ${HDF_EXTRA_C_FLAGS} -D_FILE_OFFSET_BITS=64)
+
+ set (CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} ${HDF_EXTRA_C_FLAGS})
endif ()
-#-----------------------------------------------------------------------------
-# Check for HAVE_OFF64_T functionality
-#-----------------------------------------------------------------------------
-if (MINGW OR NOT WINDOWS)
- HDF_FUNCTION_TEST (HAVE_OFF64_T)
- if (${HDF_PREFIX}_HAVE_OFF64_T)
- CHECK_FUNCTION_EXISTS (lseek64 ${HDF_PREFIX}_HAVE_LSEEK64)
- endif ()
+# As of 2024, both AIX and Solaris are uncommon, but still exist! The default
+# compiler options are also often set to -m32, which produces 32-bit binaries.
- CHECK_FUNCTION_EXISTS (fseeko ${HDF_PREFIX}_HAVE_FSEEKO)
+# 32-bit AIX compiles might require _LARGE_FILES, but we don't have a system on
+# which to test this (yet).
+#
+# https://www.ibm.com/docs/en/aix/7.1?topic=volumes-writing-programs-that-access-large-files
- CHECK_STRUCT_HAS_MEMBER("struct stat64" st_blocks "sys/types.h;sys/stat.h" HAVE_STAT64_STRUCT)
- if (HAVE_STAT64_STRUCT)
- CHECK_FUNCTION_EXISTS (stat64 ${HDF_PREFIX}_HAVE_STAT64)
- endif ()
-endif ()
+# 32-bit Solaris probably needs _LARGEFILE_SOURCE and _FILE_OFFSET_BITS=64,
+# as in Linux, above.
+#
+# https://docs.oracle.com/cd/E23824_01/html/821-1474/lfcompile-5.html
#-----------------------------------------------------------------------------
# Check the size in bytes of all the int and float types
@@ -356,10 +323,6 @@ if (MINGW OR NOT WINDOWS)
endif ()
HDF_CHECK_TYPE_SIZE (off_t ${HDF_PREFIX}_SIZEOF_OFF_T)
-HDF_CHECK_TYPE_SIZE (off64_t ${HDF_PREFIX}_SIZEOF_OFF64_T)
-if (NOT ${HDF_PREFIX}_SIZEOF_OFF64_T)
- set (${HDF_PREFIX}_SIZEOF_OFF64_T 0)
-endif ()
HDF_CHECK_TYPE_SIZE (time_t ${HDF_PREFIX}_SIZEOF_TIME_T)
#-----------------------------------------------------------------------------
diff --git a/config/cmake/H5pubconf.h.in b/config/cmake/H5pubconf.h.in
index 5682c2a..5e6ea54 100644
--- a/config/cmake/H5pubconf.h.in
+++ b/config/cmake/H5pubconf.h.in
@@ -68,6 +68,9 @@
/* Define if we have Fortran intrinsic STORAGE_SIZE */
#cmakedefine H5_FORTRAN_HAVE_STORAGE_SIZE @H5_FORTRAN_HAVE_STORAGE_SIZE@
+/* Define if Fortran supports allocatable character */
+#cmakedefine H5_FORTRAN_HAVE_CHAR_ALLOC @H5_FORTRAN_HAVE_CHAR_ALLOC@
+
/* Determine the size of C long double */
#cmakedefine H5_FORTRAN_SIZEOF_LONG_DOUBLE @H5_FORTRAN_SIZEOF_LONG_DOUBLE@
@@ -544,9 +547,6 @@
#define H5_SIZEOF_LONG_LONG 8
#endif
-/* The size of `off64_t', as computed by sizeof. */
-#cmakedefine H5_SIZEOF_OFF64_T @H5_SIZEOF_OFF64_T@
-
/* The size of `off_t', as computed by sizeof. */
#cmakedefine H5_SIZEOF_OFF_T @H5_SIZEOF_OFF_T@
diff --git a/config/cmake/HDF5DeveloperBuild.cmake b/config/cmake/HDF5DeveloperBuild.cmake
index 40efb0e..f8ccc2f 100644
--- a/config/cmake/HDF5DeveloperBuild.cmake
+++ b/config/cmake/HDF5DeveloperBuild.cmake
@@ -139,16 +139,6 @@ if (HDF5_ENABLE_DEBUG_H5T_REF)
list (APPEND HDF5_DEBUG_APIS H5T_REF_DEBUG)
endif ()
-# HDF5 module debug definitions for debug code which may add
-# considerable amounts of overhead when enabled and is usually
-# only useful for specific circumstances rather than general
-# developer use.
-option (HDF5_ENABLE_DEBUG_H5B "Enable debugging of H5B module" OFF)
-mark_as_advanced (HDF5_ENABLE_DEBUG_H5B)
-if (HDF5_ENABLE_DEBUG_H5B)
- list (APPEND HDF5_DEBUG_APIS H5B_DEBUG)
-endif ()
-
option (HDF5_ENABLE_DEBUG_H5B2 "Enable debugging of H5B2 module" OFF)
mark_as_advanced (HDF5_ENABLE_DEBUG_H5B2)
if (HDF5_ENABLE_DEBUG_H5B2)
diff --git a/config/cmake/HDF5UseFortran.cmake b/config/cmake/HDF5UseFortran.cmake
index d34876c..73b4f74 100644
--- a/config/cmake/HDF5UseFortran.cmake
+++ b/config/cmake/HDF5UseFortran.cmake
@@ -124,6 +124,15 @@ else ()
message (FATAL_ERROR "Fortran compiler requires either intrinsic functions SIZEOF or STORAGE_SIZE")
endif ()
+# Check to see of Fortran supports allocatable character
+READ_SOURCE("PROGRAM PROG_CHAR_ALLOC" "END PROGRAM PROG_CHAR_ALLOC" SOURCE_CODE)
+check_fortran_source_compiles (${SOURCE_CODE} FORTRAN_CHAR_ALLOC SRC_EXT f90)
+if (${FORTRAN_CHAR_ALLOC})
+ set (${HDF_PREFIX}_FORTRAN_HAVE_CHAR_ALLOC 1)
+else ()
+ set (${HDF_PREFIX}_FORTRAN_HAVE_CHAR_ALLOC 0)
+endif ()
+
#-----------------------------------------------------------------------------
# Determine the available KINDs for REALs and INTEGERs
#-----------------------------------------------------------------------------
diff --git a/config/cmake/HDFCompilerFlags.cmake b/config/cmake/HDFCompilerFlags.cmake
index 7bddad0..007747a 100644
--- a/config/cmake/HDFCompilerFlags.cmake
+++ b/config/cmake/HDFCompilerFlags.cmake
@@ -375,11 +375,8 @@ if (HDF5_ENABLE_DEBUG_APIS)
H5D_DEBUG
H5D_CHUNK_DEBUG
H5F_DEBUG
- H5HL_DEBUG
- H5I_DEBUG
H5MM_DEBUG
H5O_DEBUG
- H5S_DEBUG
H5T_DEBUG
H5Z_DEBUG
)
diff --git a/config/cmake/HDFMacros.cmake b/config/cmake/HDFMacros.cmake
index 64e77c0..1533827 100644
--- a/config/cmake/HDFMacros.cmake
+++ b/config/cmake/HDFMacros.cmake
@@ -279,6 +279,7 @@ macro (HDF_README_PROPERTIES target_fortran)
if (WIN32)
set (BINARY_EXAMPLE_ENDING "zip")
set (BINARY_INSTALL_ENDING "msi")
+ set (BINARY_COMPRESS_ENDING "zip")
if (CMAKE_CL_64)
set (BINARY_SYSTEM_NAME "win64")
else ()
@@ -330,12 +331,14 @@ macro (HDF_README_PROPERTIES target_fortran)
endif ()
elseif (APPLE)
set (BINARY_EXAMPLE_ENDING "tar.gz")
+ set (BINARY_COMPRESS_ENDING "tar.gz")
set (BINARY_INSTALL_ENDING "sh") # if packaging changes - use dmg
set (BINARY_PLATFORM "${BINARY_PLATFORM} ${CMAKE_SYSTEM_VERSION} ${CMAKE_SYSTEM_PROCESSOR}")
set (BINARY_PLATFORM "${BINARY_PLATFORM}, using ${CMAKE_C_COMPILER_ID} C ${CMAKE_C_COMPILER_VERSION}")
else ()
set (BINARY_EXAMPLE_ENDING "tar.gz")
- set (BINARY_INSTALL_ENDING "sh")
+ set (BINARY_COMPRESS_ENDING "tar.gz")
+ set (BINARY_INSTALL_ENDING "sh/deb/rpm")
set (BINARY_PLATFORM "${BINARY_PLATFORM} ${CMAKE_SYSTEM_VERSION} ${CMAKE_SYSTEM_PROCESSOR}")
set (BINARY_PLATFORM "${BINARY_PLATFORM}, using ${CMAKE_C_COMPILER_ID} C ${CMAKE_C_COMPILER_VERSION}")
endif ()
diff --git a/config/cmake/HDFTests.c b/config/cmake/HDFTests.c
index 095f113..3d16721 100644
--- a/config/cmake/HDFTests.c
+++ b/config/cmake/HDFTests.c
@@ -89,17 +89,6 @@ int main ()
#endif /* DEV_T_IS_SCALAR */
-#ifdef HAVE_OFF64_T
-
-#include <sys/types.h>
-
-int main(void)
-{
- off64_t n = 0;
- return (int)n;
-}
-#endif
-
#ifdef TEST_DIRECT_VFD_WORKS
#include <sys/types.h>
@@ -138,43 +127,6 @@ main(void)
}
#endif
-#ifdef TEST_LFS_WORKS
-
-/* Return 0 when LFS is available and 1 otherwise. */
-
-#define _LARGEFILE_SOURCE
-#define _LARGEFILE64_SOURCE
-#define _LARGE_FILES
-#define _FILE_OFFSET_BITS 64
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <assert.h>
-#include <stdio.h>
-
-#define OFF_T_64 (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-
-int main(int argc, char **argv)
-{
-
- /* Check that off_t can hold 2^63 - 1 and perform basic operations... */
- if (OFF_T_64 % 2147483647 != 1)
- return 1;
-
- /* stat breaks on SCO OpenServer */
- struct stat buf;
- stat(argv[0], &buf);
- if (!S_ISREG(buf.st_mode))
- return 2;
-
- FILE *file = fopen(argv[0], "r");
- off_t offset = ftello(file);
- fseek(file, offset, SEEK_CUR);
- fclose(file);
- return 0;
-}
-#endif
-
#ifdef HAVE_IOEO
#include <windows.h>
diff --git a/config/cmake/HDFUseFortran.cmake b/config/cmake/HDFUseFortran.cmake
index 1389aaf..2d53a50 100644
--- a/config/cmake/HDFUseFortran.cmake
+++ b/config/cmake/HDFUseFortran.cmake
@@ -19,14 +19,6 @@ set (HDF_PREFIX "H5")
include (CheckFortranSourceRuns)
include (CheckFortranSourceCompiles)
-#-------------------------------------------------------------------------------
-# Fix Fortran flags if we are compiling statically on Windows using
-# Windows_MT.cmake from config/cmake/UserMacros
-#-------------------------------------------------------------------------------
-if (BUILD_STATIC_CRT_LIBS)
- TARGET_STATIC_CRT_FLAGS ()
-endif ()
-
#-----------------------------------------------------------------------------
# Detect name mangling convention used between Fortran and C
#-----------------------------------------------------------------------------
@@ -78,6 +70,13 @@ set (STORAGE_SIZE_CODE
END PROGRAM
"
)
+set (CHAR_ALLOC
+ "
+ PROGRAM main
+ CHARACTER(:), ALLOCATABLE :: str
+ END PROGRAM
+ "
+)
set (ISO_FORTRAN_ENV_CODE
"
PROGRAM main
@@ -132,6 +131,7 @@ check_fortran_source_compiles (${STORAGE_SIZE_CODE} ${HDF_PREFIX}_FORTRAN_HAVE_S
check_fortran_source_compiles (${ISO_FORTRAN_ENV_CODE} ${HDF_PREFIX}_HAVE_ISO_FORTRAN_ENV SRC_EXT f90)
check_fortran_source_compiles (${REALISNOTDOUBLE_CODE} ${HDF_PREFIX}_FORTRAN_DEFAULT_REAL_NOT_DOUBLE SRC_EXT f90)
check_fortran_source_compiles (${ISO_C_BINDING_CODE} ${HDF_PREFIX}_FORTRAN_HAVE_ISO_C_BINDING SRC_EXT f90)
+check_fortran_source_compiles (${CHAR_ALLOC} ${HDF_PREFIX}_FORTRAN_HAVE_CHAR_ALLOC SRC_EXT f90)
#-----------------------------------------------------------------------------
# Add debug information (intel Fortran : JB)
diff --git a/config/cmake/README.md.cmake.in b/config/cmake/README.md.cmake.in
index d7e4bc4..5ba93f3 100644
--- a/config/cmake/README.md.cmake.in
+++ b/config/cmake/README.md.cmake.in
@@ -2,13 +2,13 @@
------------------------------------------------------------------------------
This directory contains the binary (release) distribution of
-@HDF5_PACKAGE_NAME@ @HDF5_PACKAGE_VERSION_MAJOR@ that was compiled on;
+@HDF5_PACKAGE_NAME@ @HDF5_PACKAGE_VERSION_MAJOR@.@HDF5_PACKAGE_VERSION_MINOR@ that was compiled on;
@BINARY_PLATFORM@.
It was built with the following options:
-- @LIB_TYPE@ C/C++/Fortran libraries
-- SZIP (encoder enabled) and ZLIB
- -- @LIB_TYPE@ HDF5 tools
+ -- HDF5 tools
-- Java @Java_VERSION@
The contents of this directory are:
@@ -16,17 +16,12 @@ The contents of this directory are:
COPYING - Copyright notice
README.md - This file
@HDF5_PACKAGE_NAME@-@HDF5_PACKAGE_VERSION@-@BINARY_SYSTEM_NAME@.@BINARY_INSTALL_ENDING@ - HDF5 Install Package
+ OR
+ @HDF5_PACKAGE_NAME@-@HDF5_PACKAGE_VERSION@-@BINARY_SYSTEM_NAME@.@BINARY_COMPRESS_ENDING@ - HDF5 Compressed Package
This binary was built with the ZLIB and SZIP/Libaec external libraries and are
included for convenience. Libaec is an unrestricted open-source replacement for SZIP
-(version 1.0.4, Encoder ENABLED).
-
-The official ZLIB and SZIP/Libaec pages are at:
-
- ZLIB: https://git.savannah.gnu.org/cgit/gzip.git/
- https://git.savannah.gnu.org/cgit/gzip.git/tree/COPYING
- SZIP/Libaec: https://github.com/MathisRosenhauer/libaec
- https://github.com/MathisRosenhauer/libaec/blob/master/LICENSE.txt
+(Encoder ENABLED).
Installation
@@ -35,6 +30,11 @@ Installation
2. Follow prompts
===========================================================================
+Uncompress
+===========================================================================
+1. Extract @HDF5_PACKAGE_NAME@-@HDF5_PACKAGE_VERSION@-@BINARY_SYSTEM_NAME@.@BINARY_COMPRESS_ENDING@
+===========================================================================
+
After Installation
===========================================================================
The examples folder, HDF5Examples, located in the
@@ -75,6 +75,6 @@ For more information see USING_CMake_Examples.txt in the install folder.
===========================================================================
Documentation for this release can be found at the following URL:
- https://portal.hdfgroup.org/display/HDF5/HDF5
+ https://portal.hdfgroup.org/documentation/index.html#hdf5
Bugs should be reported to help@hdfgroup.org.
diff --git a/config/cmake/UserMacros/Windows_MT.cmake b/config/cmake/UserMacros/Windows_MT.cmake
index c8edbe4..351c991 100644
--- a/config/cmake/UserMacros/Windows_MT.cmake
+++ b/config/cmake/UserMacros/Windows_MT.cmake
@@ -20,34 +20,10 @@
# INCLUDE(path_to_file/WINDOWS_MT.cmake)
#-----------------------------------------------------------------------------
-# Option to Build with Static CRT libraries on Windows
-#-------------------------------------------------------------------------------
-macro (TARGET_STATIC_CRT_FLAGS)
- if (MSVC AND NOT BUILD_SHARED_LIBS)
- foreach (flag_var
- CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
- CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
- CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
- CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
- if (${flag_var} MATCHES "/MD")
- string (REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
- endif ()
- endforeach ()
- foreach (flag_var
- CMAKE_Fortran_FLAGS CMAKE_Fortran_FLAGS_DEBUG CMAKE_Fortran_FLAGS_RELEASE
- CMAKE_Fortran_FLAGS_MINSIZEREL CMAKE_Fortran_FLAGS_RELWITHDEBINFO)
- if (${flag_var} MATCHES "/libs:dll")
- string (REGEX REPLACE "/libs:dll" "/libs:static" ${flag_var} "${${flag_var}}")
- endif ()
- endforeach ()
- set (WIN_COMPILE_FLAGS "")
- set (WIN_LINK_FLAGS "/NODEFAULTLIB:MSVCRT")
- endif ()
-endmacro ()
-
+# Option to Build with Static CRT libraries on Windows (USE WITH CAUTION!!!)
#-----------------------------------------------------------------------------
-option (BUILD_STATIC_CRT_LIBS "Build With Static CRT Libraries" OFF)
-mark_as_advanced (BUILD_STATIC_CRT_LIBS)
-if (BUILD_STATIC_CRT_LIBS)
- TARGET_STATIC_CRT_FLAGS ()
+option (HDF5_BUILD_STATIC_CRT_LIBS "Build With Static Windows CRT Libraries" OFF)
+mark_as_advanced (HDF5_BUILD_STATIC_CRT_LIBS)
+if (HDF5_BUILD_STATIC_CRT_LIBS)
+ set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
endif ()
diff --git a/config/cmake/mccacheinit.cmake b/config/cmake/mccacheinit.cmake
index 0347f6e..9e4d581 100644
--- a/config/cmake/mccacheinit.cmake
+++ b/config/cmake/mccacheinit.cmake
@@ -39,7 +39,7 @@ set (HDF5_ENABLE_SZIP_ENCODING OFF CACHE BOOL "Use SZip Encoding" FORCE)
set (MPIEXEC_MAX_NUMPROCS "4" CACHE STRING "Minimum number of processes for HDF parallel tests" FORCE)
-set (HDF5_ENABLE_USING_MEMCHECKER ON CACHE BOOL "Indicate that a memory checker is used" FORCE)
+set (HDF5_USING_ANALYSIS_TOOL ON CACHE BOOL "Indicate that an analysis checker is used" FORCE)
set (HDF5_NO_PACKAGES ON CACHE BOOL "CPACK - Disable packaging" FORCE)
diff --git a/config/cmake/runTest.cmake b/config/cmake/runTest.cmake
index 4257c44..ff9732e 100644
--- a/config/cmake/runTest.cmake
+++ b/config/cmake/runTest.cmake
@@ -167,7 +167,7 @@ if (TEST_FIND_RESULT GREATER -1)
endif ()
# if the output file needs Storage text removed
-if (TEST_MASK)
+if (TEST_MASK_STORE)
file (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM)
string (REGEX REPLACE "Storage:[^\n]+\n" "Storage: <details removed for portability>\n" TEST_STREAM "${TEST_STREAM}")
file (WRITE ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}")
@@ -205,8 +205,16 @@ if (TEST_MASK_ERROR)
endif ()
# remove text from the output file
+if (TEST_MASK)
+ file (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM)
+ string (REGEX REPLACE "${TEST_MASK}" "" TEST_STREAM "${TEST_STREAM}")
+ file (WRITE ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}")
+endif ()
+
+# replace text from the output file
if (TEST_FILTER)
file (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM)
+ message (STATUS "TEST_FILTER: ${TEST_FILTER} TEST_FILTER_REPLACE: ${TEST_FILTER_REPLACE}")
string (REGEX REPLACE "${TEST_FILTER}" "${TEST_FILTER_REPLACE}" TEST_STREAM "${TEST_STREAM}")
file (WRITE ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}")
endif ()
diff --git a/config/sanitizer/sanitizers.cmake b/config/sanitizer/sanitizers.cmake
index 53591d2..bf2aad2 100644
--- a/config/sanitizer/sanitizers.cmake
+++ b/config/sanitizer/sanitizers.cmake
@@ -13,8 +13,6 @@
# License for the specific language governing permissions and limitations under
# the License.
-include(CheckCXXSourceCompiles)
-
set(USE_SANITIZER
""
CACHE
@@ -44,11 +42,12 @@ function(test_san_flags return_var flags)
unset(${return_var} CACHE)
set(FLAGS_BACKUP ${CMAKE_REQUIRED_FLAGS})
set(CMAKE_REQUIRED_FLAGS "${flags}")
- check_cxx_source_compiles("int main() { return 0; }" ${return_var})
+ check_c_source_compiles("int main() { return 0; }" ${return_var})
set(CMAKE_REQUIRED_FLAGS "${FLAGS_BACKUP}")
set(CMAKE_REQUIRED_QUIET "${QUIET_BACKUP}")
endfunction()
+message(STATUS "USE_SANITIZER=${USE_SANITIZER}, CMAKE_C_COMPILER_ID=${CMAKE_C_COMPILER_ID}")
if(USE_SANITIZER)
if(CMAKE_C_COMPILER_ID MATCHES "IntelLLVM" OR CMAKE_C_COMPILER_ID MATCHES "[Cc]lang")
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
@@ -56,10 +55,11 @@ if(USE_SANITIZER)
unset(SANITIZER_SELECTED_FLAGS)
if(UNIX)
- append("-fno-omit-frame-pointer" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
+ append("-fno-omit-frame-pointer" CMAKE_C_FLAGS)
+ message(STATUS "Building with sanitize, base flags=${CMAKE_C_SANITIZER_FLAGS}")
if(uppercase_CMAKE_BUILD_TYPE STREQUAL "DEBUG")
- append("-O1" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
+ append("-O1" CMAKE_C_FLAGS)
endif()
if(USE_SANITIZER MATCHES "([Aa]ddress)")
@@ -72,10 +72,10 @@ if(USE_SANITIZER)
append("${SANITIZER_ADDR_FLAG}" SANITIZER_SELECTED_FLAGS)
if(AFL)
- append_quoteless(AFL_USE_ASAN=1 CMAKE_C_COMPILER_LAUNCHER CMAKE_CXX_COMPILER_LAUNCHER)
+ append_quoteless(AFL_USE_ASAN=1 CMAKE_C_COMPILER_LAUNCHER)
endif()
else()
- message(FATAL_ERROR "Address sanitizer not available for ${CMAKE_CXX_COMPILER}")
+ message(FATAL_ERROR "Address sanitizer not available for ${CMAKE_C_COMPILER}")
endif()
endif()
@@ -98,10 +98,10 @@ if(USE_SANITIZER)
append("${SANITIZER_MEM_FLAG}" SANITIZER_SELECTED_FLAGS)
if(AFL)
- append_quoteless(AFL_USE_MSAN=1 CMAKE_C_COMPILER_LAUNCHER CMAKE_CXX_COMPILER_LAUNCHER)
+ append_quoteless(AFL_USE_MSAN=1 CMAKE_C_COMPILER_LAUNCHER)
endif()
else()
- message(FATAL_ERROR "Memory [With Origins] sanitizer not available for ${CMAKE_CXX_COMPILER}")
+ message(FATAL_ERROR "Memory [With Origins] sanitizer not available for ${CMAKE_C_COMPILER}")
endif()
endif()
@@ -117,10 +117,10 @@ if(USE_SANITIZER)
append("${SANITIZER_UB_FLAG}" SANITIZER_SELECTED_FLAGS)
if(AFL)
- append_quoteless(AFL_USE_UBSAN=1 CMAKE_C_COMPILER_LAUNCHER CMAKE_CXX_COMPILER_LAUNCHER)
+ append_quoteless(AFL_USE_UBSAN=1 CMAKE_C_COMPILER_LAUNCHER)
endif()
else()
- message(FATAL_ERROR "Undefined Behaviour sanitizer not available for ${CMAKE_CXX_COMPILER}")
+ message(FATAL_ERROR "Undefined Behaviour sanitizer not available for ${CMAKE_C_COMPILER}")
endif()
endif()
@@ -133,10 +133,10 @@ if(USE_SANITIZER)
append("${SANITIZER_THREAD_FLAG}" SANITIZER_SELECTED_FLAGS)
if(AFL)
- append_quoteless(AFL_USE_TSAN=1 CMAKE_C_COMPILER_LAUNCHER CMAKE_CXX_COMPILER_LAUNCHER)
+ append_quoteless(AFL_USE_TSAN=1 CMAKE_C_COMPILER_LAUNCHER)
endif()
else()
- message(FATAL_ERROR "Thread sanitizer not available for ${CMAKE_CXX_COMPILER}")
+ message(FATAL_ERROR "Thread sanitizer not available for ${CMAKE_C_COMPILER}")
endif()
endif()
@@ -149,10 +149,10 @@ if(USE_SANITIZER)
append("${SANITIZER_LEAK_FLAG}" SANITIZER_SELECTED_FLAGS)
if(AFL)
- append_quoteless(AFL_USE_LSAN=1 CMAKE_C_COMPILER_LAUNCHER CMAKE_CXX_COMPILER_LAUNCHER)
+ append_quoteless(AFL_USE_LSAN=1 CMAKE_C_COMPILER_LAUNCHER)
endif()
else()
- message(FATAL_ERROR "Thread sanitizer not available for ${CMAKE_CXX_COMPILER}")
+ message(FATAL_ERROR "Thread sanitizer not available for ${CMAKE_C_COMPILER}")
endif()
endif()
@@ -165,10 +165,10 @@ if(USE_SANITIZER)
append("${SANITIZER_LEAK_FLAG}" SANITIZER_SELECTED_FLAGS)
if(AFL)
- append_quoteless(AFL_USE_CFISAN=1 CMAKE_C_COMPILER_LAUNCHER CMAKE_CXX_COMPILER_LAUNCHER)
+ append_quoteless(AFL_USE_CFISAN=1 CMAKE_C_COMPILER_LAUNCHER)
endif()
else()
- message(FATAL_ERROR "Control Flow Integrity(CFI) sanitizer not available for ${CMAKE_CXX_COMPILER}")
+ message(FATAL_ERROR "Control Flow Integrity(CFI) sanitizer not available for ${CMAKE_C_COMPILER}")
endif()
endif()
@@ -176,17 +176,17 @@ if(USE_SANITIZER)
test_san_flags(SANITIZER_SELECTED_COMPATIBLE ${SANITIZER_SELECTED_FLAGS})
if(SANITIZER_SELECTED_COMPATIBLE)
message(STATUS " Building with ${SANITIZER_SELECTED_FLAGS}")
- append("${SANITIZER_SELECTED_FLAGS}" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
+ append("${SANITIZER_SELECTED_FLAGS}" CMAKE_C_FLAGS)
else()
- message(FATAL_ERROR " Sanitizer flags ${SANITIZER_SELECTED_FLAGS} are not compatible.")
+ message(FATAL_ERROR "Unsupported value of USE_SANITIZER: ${USE_SANITIZER}")
endif()
elseif(MSVC)
if(USE_SANITIZER MATCHES "([Aa]ddress)")
message(STATUS "Building with Address sanitizer")
- append("-fsanitize=address" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
+ append("-fsanitize=address" CMAKE_C_FLAGS)
if(AFL)
- append_quoteless(AFL_USE_ASAN=1 CMAKE_C_COMPILER_LAUNCHER CMAKE_CXX_COMPILER_LAUNCHER)
+ append_quoteless(AFL_USE_ASAN=1 CMAKE_C_COMPILER_LAUNCHER)
endif()
else()
message(FATAL_ERROR "This sanitizer not yet supported in the MSVC environment: ${USE_SANITIZER}")
@@ -197,7 +197,7 @@ if(USE_SANITIZER)
elseif(MSVC)
if(USE_SANITIZER MATCHES "([Aa]ddress)")
message(STATUS "Building with Address sanitizer")
- append("/fsanitize=address" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
+ append("/fsanitize=address" CMAKE_C_FLAGS)
else()
message(FATAL_ERROR "This sanitizer not yet supported in the MSVC environment: ${USE_SANITIZER}")
endif()