diff options
Diffstat (limited to 'infra/cmake/packages/HDF5Source.patch')
-rw-r--r-- | infra/cmake/packages/HDF5Source.patch | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/infra/cmake/packages/HDF5Source.patch b/infra/cmake/packages/HDF5Source.patch new file mode 100644 index 000000000..b8602a08a --- /dev/null +++ b/infra/cmake/packages/HDF5Source.patch @@ -0,0 +1,195 @@ +Only in HDF5: build +diff -r -u a/config/cmake/ConfigureChecks.cmake b/config/cmake/ConfigureChecks.cmake +--- a/config/cmake/ConfigureChecks.cmake ++++ b/config/cmake/ConfigureChecks.cmake +@@ -109,15 +109,15 @@ + if (NOT WINDOWS) + CHECK_FUNCTION_EXISTS(clock_gettime CLOCK_GETTIME_IN_LIBC) + CHECK_LIBRARY_EXISTS(rt clock_gettime "" CLOCK_GETTIME_IN_LIBRT) +- CHECK_LIBRARY_EXISTS(posix4 clock_gettime "" CLOCK_GETTIME_IN_LIBPOSIX4) ++ #CHECK_LIBRARY_EXISTS(posix4 clock_gettime "" CLOCK_GETTIME_IN_LIBPOSIX4) + if (CLOCK_GETTIME_IN_LIBC) + set (H5_HAVE_CLOCK_GETTIME 1) + elseif (CLOCK_GETTIME_IN_LIBRT) + set (H5_HAVE_CLOCK_GETTIME 1) + list (APPEND LINK_LIBS rt) +- elseif (CLOCK_GETTIME_IN_LIBPOSIX4) +- set (H5_HAVE_CLOCK_GETTIME 1) +- list (APPEND LINK_LIBS posix4) ++ #elseif (CLOCK_GETTIME_IN_LIBPOSIX4) ++ # set (H5_HAVE_CLOCK_GETTIME 1) ++ # list (APPEND LINK_LIBS posix4) + endif (CLOCK_GETTIME_IN_LIBC) + endif (NOT WINDOWS) + #----------------------------------------------------------------------------- +@@ -130,12 +130,17 @@ + if (HDF5_ENABLE_DIRECT_VFD) + set (msg "Performing TEST_DIRECT_VFD_WORKS") + set (MACRO_CHECK_FUNCTION_DEFINITIONS "-DTEST_DIRECT_VFD_WORKS -D_GNU_SOURCE ${CMAKE_REQUIRED_FLAGS}") ++ if(NOT CMAKE_CROSSCOMPILING) + TRY_RUN (TEST_DIRECT_VFD_WORKS_RUN TEST_DIRECT_VFD_WORKS_COMPILE + ${CMAKE_BINARY_DIR} + ${HDF_RESOURCES_EXT_DIR}/HDFTests.c + CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS} + OUTPUT_VARIABLE OUTPUT + ) ++ else(NOT CMAKE_CROSSCOMPILING) ++ set(TEST_DIRECT_VFD_WORKS_RUN 0) ++ set(TEST_DIRECT_VFD_WORKS_COMPILE TRUE) ++ endif(NOT CMAKE_CROSSCOMPILING) + if (TEST_DIRECT_VFD_WORKS_COMPILE) + if (TEST_DIRECT_VFD_WORKS_RUN MATCHES 0) + HDF_FUNCTION_TEST (HAVE_DIRECT) +@@ -221,7 +226,12 @@ + # The machine's conversion gets the correct value. We define the macro and disable + # this kind of test until we figure out what algorithm they use. + # ++if(NOT CMAKE_CROSSCOMPILING) + H5ConversionTests (H5_LDOUBLE_TO_LONG_SPECIAL "Checking IF your system converts long double to (unsigned) long values with special algorithm") ++else(NOT CMAKE_CROSSCOMPILING) ++ set(H5_LDOUBLE_TO_LONG_SPECIAL_RUN 1) ++ set(H5_LDOUBLE_TO_LONG_SPECIAL_COMPILE TRUE) ++endif(NOT CMAKE_CROSSCOMPILING) + # ---------------------------------------------------------------------- + # Set the flag to indicate that the machine is using a special algorithm + # to convert some values of '(unsigned) long' to 'long double' values. +@@ -230,7 +240,12 @@ + # ..., 7fffff..., the compiler uses a unknown algorithm. We define a + # macro and skip the test for now until we know about the algorithm. + # ++if(NOT CMAKE_CROSSCOMPILING) + H5ConversionTests (H5_LONG_TO_LDOUBLE_SPECIAL "Checking IF your system can convert (unsigned) long to long double values with special algorithm") ++else(NOT CMAKE_CROSSCOMPILING) ++ set(H5_LONG_TO_LDOUBLE_SPECIAL_RUN 1) ++ set(H5_LONG_TO_LDOUBLE_SPECIAL_COMPILE TRUE) ++endif(NOT CMAKE_CROSSCOMPILING) + # ---------------------------------------------------------------------- + # Set the flag to indicate that the machine can accurately convert + # 'long double' to '(unsigned) long long' values. (This flag should be set for +@@ -240,7 +255,12 @@ + # 0x4351ccf385ebc8a0dfcc... or 0x4351ccf385ebc8a0ffcc... will make the converted + # values wildly wrong. This test detects this wrong behavior and disable the test. + # ++if(NOT CMAKE_CROSSCOMPILING) + H5ConversionTests (H5_LDOUBLE_TO_LLONG_ACCURATE "Checking IF correctly converting long double to (unsigned) long long values") ++else(NOT CMAKE_CROSSCOMPILING) ++ set(H5_LDOUBLE_TO_LLONG_ACCURATE_RUN 0) ++ set(H5_LDOUBLE_TO_LLONG_ACCURATE_COMPILE TRUE) ++endif(NOT CMAKE_CROSSCOMPILING) + # ---------------------------------------------------------------------- + # Set the flag to indicate that the machine can accurately convert + # '(unsigned) long long' to 'long double' values. (This flag should be set for +@@ -248,11 +268,21 @@ + # 007fff..., 00ffff..., 01ffff..., ..., 7fffff..., the converted values are twice + # as big as they should be. + # ++if(NOT CMAKE_CROSSCOMPILING) + H5ConversionTests (H5_LLONG_TO_LDOUBLE_CORRECT "Checking IF correctly converting (unsigned) long long to long double values") ++else(NOT CMAKE_CROSSCOMPILING) ++ set(H5_LLONG_TO_LDOUBLE_CORRECT_RUN 0) ++ set(H5_LLONG_TO_LDOUBLE_CORRECT_COMPILE TRUE) ++endif(NOT CMAKE_CROSSCOMPILING) + # ---------------------------------------------------------------------- + # Check if pointer alignments are enforced + # ++if(NOT CMAKE_CROSSCOMPILING) + H5ConversionTests (H5_NO_ALIGNMENT_RESTRICTIONS "Checking IF alignment restrictions are strictly enforced") ++else(NOT CMAKE_CROSSCOMPILING) ++ set(H5_NO_ALIGNMENT_RESTRICTIONS_RUN 0) ++ set(H5_NO_ALIGNMENT_RESTRICTIONS_COMPILE TRUE) ++endif(NOT CMAKE_CROSSCOMPILING) + + # ----------------------------------------------------------------------- + # wrapper script variables +diff -r -u a/config/cmake_ext_mod/ConfigureChecks.cmake b/config/cmake_ext_mod/ConfigureChecks.cmake +--- a/config/cmake_ext_mod/ConfigureChecks.cmake ++++ b/config/cmake_ext_mod/ConfigureChecks.cmake +@@ -272,12 +272,17 @@ + # http://www.gnu.org/s/libc/manual/html_node/Feature-Test-Macros.html + set (HDF_EXTRA_C_FLAGS -D_POSIX_C_SOURCE=199506L) + # _BSD_SOURCE deprecated in GLIBC >= 2.20 ++ if(NOT CMAKE_CROSSCOMPILING) + TRY_RUN (HAVE_DEFAULT_SOURCE_RUN HAVE_DEFAULT_SOURCE_COMPILE + ${CMAKE_BINARY_DIR} + ${HDF_RESOURCES_EXT_DIR}/HDFTests.c + CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=-DHAVE_DEFAULT_SOURCE + OUTPUT_VARIABLE OUTPUT + ) ++ else(NOT CMAKE_CROSSCOMPILING) ++ set(HAVE_DEFAULT_SOURCE_RUN 1) ++ set(HAVE_DEFAULT_SOURCE_COMPILE TRUE) ++ endif(NOT CMAKE_CROSSCOMPILING) + if (HAVE_DEFAULT_SOURCE_COMPILE AND HAVE_DEFAULT_SOURCE_RUN) + set (HDF_EXTRA_FLAGS -D_DEFAULT_SOURCE) + else (HAVE_DEFAULT_SOURCE_COMPILE AND HAVE_DEFAULT_SOURCE_RUN) +@@ -287,12 +292,17 @@ + option (HDF_ENABLE_LARGE_FILE "Enable support for large (64-bit) files on Linux." ON) + if (HDF_ENABLE_LARGE_FILE) + set (msg "Performing TEST_LFS_WORKS") ++ if(NOT CMAKE_CROSSCOMPILING) + TRY_RUN (TEST_LFS_WORKS_RUN TEST_LFS_WORKS_COMPILE + ${CMAKE_BINARY_DIR} + ${HDF_RESOURCES_EXT_DIR}/HDFTests.c + CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=-DTEST_LFS_WORKS + OUTPUT_VARIABLE OUTPUT + ) ++ else(NOT CMAKE_CROSSCOMPILING) ++ set(TEST_LFS_WORKS_RUN 0) ++ set(TEST_LFS_WORKS_COMPILE TRUE) ++ endif(NOT CMAKE_CROSSCOMPILING) + if (TEST_LFS_WORKS_COMPILE) + if (TEST_LFS_WORKS_RUN MATCHES 0) + set (TEST_LFS_WORKS 1 CACHE INTERNAL ${msg}) +@@ -702,7 +712,8 @@ + set (CURRENT_TEST_DEFINITIONS "-DPRINTF_LL_WIDTH") + if (${HDF_PREFIX}_SIZEOF_LONG_LONG) + set (CURRENT_TEST_DEFINITIONS "${CURRENT_TEST_DEFINITIONS} -DHAVE_LONG_LONG") + endif (${HDF_PREFIX}_SIZEOF_LONG_LONG) ++ if(NOT CMAKE_CROSSCOMPILING) + TRY_RUN (${HDF_PREFIX}_PRINTF_LL_TEST_RUN ${HDF_PREFIX}_PRINTF_LL_TEST_COMPILE + ${CMAKE_BINARY_DIR} + ${HDF_RESOURCES_EXT_DIR}/HDFTests.c +@@ -722,6 +733,13 @@ + "Test ${HDF_PREFIX}_PRINTF_LL_WIDTH failed with the following output:\n ${OUTPUT}\n" + ) + endif (${HDF_PREFIX}_PRINTF_LL_TEST_COMPILE) ++ else(NOT CMAKE_CROSSCOMPILING) ++ set (${HDF_PREFIX}_PRINTF_LL_TEST_RUN 1) ++ set (${HDF_PREFIX}_PRINTF_LL_TEST_COMPILE 1) ++ set (${HDF_PREFIX}_PRINTF_LL_WIDTH "\"L\"") ++ set (${HDF_PREFIX}_PRINTF_LL "L") ++ set (PRINT_LL_FOUND 1) ++ endif(NOT CMAKE_CROSSCOMPILING) + + if (PRINT_LL_FOUND) + message (STATUS "Checking for appropriate format for 64 bit long: found ${${HDF_PREFIX}_PRINTF_LL_WIDTH}") +diff -r -u a/src/CMakeLists.txt b/src/CMakeLists.txt +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -616,6 +616,7 @@ + target_link_libraries (H5detect "ws2_32.lib") + endif (MSVC OR MINGW) + ++if (NOT CMAKE_CROSSCOMPILING) + set (CMD $<TARGET_FILE:H5detect>) + add_custom_command ( + OUTPUT ${HDF5_BINARY_DIR}/H5Tinit.c +@@ -623,6 +624,7 @@ + ARGS > ${HDF5_BINARY_DIR}/H5Tinit.c + DEPENDS H5detect + ) ++endif (NOT CMAKE_CROSSCOMPILING) + + add_executable (H5make_libsettings ${HDF5_SRC_DIR}/H5make_libsettings.c) + TARGET_C_PROPERTIES (H5make_libsettings STATIC " " " ") +@@ -631,6 +633,10 @@ + endif (MSVC OR MINGW) + + set (CMD $<TARGET_FILE:H5make_libsettings>) ++# for cross compile ++if (DEFINED ENV{EXTERNAL_H5MAKE_LIBSETTINGS}) ++ set(CMD $ENV{EXTERNAL_H5MAKE_LIBSETTINGS}) ++endif (DEFINED ENV{EXTERNAL_H5MAKE_LIBSETTINGS}) + add_custom_command ( + OUTPUT ${HDF5_BINARY_DIR}/H5lib_settings.c + COMMAND ${CMD} |