CMake: Fix Fortran cross-compilation support

Refactor the cross-compilation infrastructure to rely on the standard
CMAKE_CROSSCOMPILING_EMULATOR variable instead of the custom
CROSSCOMPILING_PATH environment hack.

Key changes:
- Removed `ENVIRONMENT "${CROSSCOMPILING_PATH}"` from all test definitions.
- Updated custom commands (e.g., H5match_types, H5_gen) to invoke the
  emulator explicitly when cross-compiling.
- Updated ConfigureChecks.cmake and HDF5UseFortran.cmake to enable
  `try_run` checks when an emulator is defined.
- Added config/toolchain/mingw-w64-x86-64-wine.sh wrapper to automatically
  locate MinGW runtime libraries (like libgfortran) for Wine execution.
- Cleaned up toolchain files to remove hardcoded emulator paths, deferring
  configuration to the build environment.
This commit is contained in:
Julien Schueller
2026-02-13 14:45:02 -06:00
committed by GitHub
parent 3748e4308e
commit d58638be09
60 changed files with 110 additions and 379 deletions
-3
View File
@@ -223,7 +223,6 @@ if (H5EXAMPLE_BUILD_TESTING)
add_test (NAME ${EXAMPLE_VARNAME}_${testname} COMMAND $<TARGET_FILE:${EXAMPLE_VARNAME}_${testname}>)
set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
else ()
add_test (
@@ -240,7 +239,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
if (HDF5_PROVIDES_TOOLS)
add_test (
@@ -257,7 +255,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_${testname}
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
endif ()
endif ()
-3
View File
@@ -228,7 +228,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_${testname}-ERR PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
add_test (
NAME ${EXAMPLE_VARNAME}_${testname}
@@ -254,7 +253,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
endif ()
set (last_test "${EXAMPLE_VARNAME}_${testname}")
@@ -313,7 +311,6 @@ if (H5EXAMPLE_BUILD_TESTING)
endif ()
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_${testname}
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
set (last_test "${EXAMPLE_VARNAME}_H5DUMP-${testname}")
endif ()
-7
View File
@@ -249,7 +249,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
if (HDF5_PROVIDES_TOOLS)
add_test (
@@ -266,7 +265,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_${testname}
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
endif ()
endif ()
@@ -304,7 +302,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_${testname}
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
endif ()
endif ()
@@ -335,7 +332,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
if (HDF5_PROVIDES_TOOLS)
add_test (
@@ -352,7 +348,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname}1 PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_${testname}
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
add_test (
NAME ${EXAMPLE_VARNAME}_H5DUMP-${testname}2
@@ -368,7 +363,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname}2 PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_H5DUMP-${testname}1
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
endif ()
endif ()
@@ -397,7 +391,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
endif ()
endmacro ()
-3
View File
@@ -370,7 +370,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
if (HDF5_PROVIDES_TOOLS)
add_test (
@@ -387,7 +386,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_${testname}
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
endif ()
endif ()
@@ -416,7 +414,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
endif ()
endmacro ()
-2
View File
@@ -144,7 +144,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
if (HDF5_PROVIDES_TOOLS)
add_test (
@@ -161,7 +160,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_${testname}
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
endif ()
endif ()
-8
View File
@@ -215,7 +215,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
if (HDF5_PROVIDES_TOOLS)
add_test (
@@ -232,7 +231,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_${testname}
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
endif ()
endif ()
@@ -261,7 +259,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
if (HDF5_PROVIDES_TOOLS)
add_test (
@@ -279,7 +276,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_${testname}
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
endif ()
endif ()
@@ -302,12 +298,10 @@ if (H5EXAMPLE_BUILD_TESTING)
add_test (NAME ${EXAMPLE_VARNAME}_h5ex_lite1 COMMAND $<TARGET_FILE:${EXAMPLE_VARNAME}_h5ex_lite1>)
set_tests_properties (${EXAMPLE_VARNAME}_h5ex_lite1 PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_h5ex_lite-clearall
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
add_test (NAME ${EXAMPLE_VARNAME}_h5ex_lite2 COMMAND $<TARGET_FILE:${EXAMPLE_VARNAME}_h5ex_lite2>)
set_tests_properties (${EXAMPLE_VARNAME}_h5ex_lite2 PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_h5ex_lite1
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
else ()
add_test (
@@ -324,7 +318,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_h5ex_lite1 PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_h5ex_lite-clearall
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
add_test (
NAME ${EXAMPLE_VARNAME}_h5ex_lite2
@@ -340,7 +333,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_h5ex_lite2 PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_h5ex_lite1
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
endif ()
endif ()
-1
View File
@@ -101,7 +101,6 @@ if (H5EXAMPLE_BUILD_TESTING)
endif ()
set_tests_properties (${EXAMPLE_VARNAME}_tutr_${testname} PROPERTIES
FIXTURES_REQUIRED clear_${EXAMPLE_VARNAME}_tutr
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
if (last_test)
set_tests_properties (${EXAMPLE_VARNAME}_tutr_${testname} PROPERTIES DEPENDS ${last_test})
-1
View File
@@ -69,7 +69,6 @@ if (H5EXAMPLE_BUILD_TESTING)
endif ()
set_tests_properties (${EXAMPLE_VARNAME}_cpp_ex_${testname} PROPERTIES
FIXTURES_REQUIRED clear_${EXAMPLE_VARNAME}_cpp_ex
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
if (last_test)
set_tests_properties (${EXAMPLE_VARNAME}_cpp_ex_${testname} PROPERTIES DEPENDS ${last_test})
-1
View File
@@ -65,7 +65,6 @@ if (H5EXAMPLE_BUILD_TESTING)
endif ()
set_tests_properties (${EXAMPLE_VARNAME}_cpp_ex_${testname} PROPERTIES
FIXTURES_REQUIRED clear_${EXAMPLE_VARNAME}_cpp_ex
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
if (last_test)
set_tests_properties (${EXAMPLE_VARNAME}_cpp_ex_${testname} PROPERTIES DEPENDS ${last_test})
-1
View File
@@ -49,7 +49,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_cpp_ex_${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_cpp_ex_${testname}-clearall
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
endif ()
if (last_test)
-4
View File
@@ -263,9 +263,6 @@ if (H5EXAMPLE_BUILD_TESTING)
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
-P "${H5EXAMPLE_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
if (last_test)
set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES
DEPENDS ${last_test}
@@ -287,7 +284,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-f90_${testname} PROPERTIES
DEPENDS ${last_test}
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
set (last_test "${EXAMPLE_VARNAME}_H5DUMP-f90_${testname}")
endif ()
-14
View File
@@ -198,7 +198,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname}-clean PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
else ()
add_test (
@@ -213,9 +212,6 @@ if (H5EXAMPLE_BUILD_TESTING)
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
-P "${H5EXAMPLE_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
if (last_test)
set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${last_test})
endif ()
@@ -235,7 +231,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-f90_${testname} PROPERTIES
DEPENDS ${last_test}
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
set (last_test "${EXAMPLE_VARNAME}_H5DUMP-f90_${testname}")
endif ()
@@ -269,9 +264,6 @@ if (H5EXAMPLE_BUILD_TESTING)
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
-P "${H5EXAMPLE_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES}
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
if (last_test)
set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${last_test})
endif ()
@@ -291,7 +283,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-f90_${testname} PROPERTIES
DEPENDS ${last_test}
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
set (last_test "${EXAMPLE_VARNAME}_H5DUMP-f90_${testname}")
endif ()
@@ -315,7 +306,6 @@ if (H5EXAMPLE_BUILD_TESTING)
add_test (NAME ${EXAMPLE_VARNAME}_f90_${testname} COMMAND $<TARGET_FILE:${EXAMPLE_VARNAME}_f90_${testname}>)
set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}-clearall
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
add_test (
NAME ${EXAMPLE_VARNAME}_f90_${testname}-clean
@@ -352,7 +342,6 @@ if (H5EXAMPLE_BUILD_TESTING)
endif ()
set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}-clearall
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
if (HDF5_PROVIDES_TOOLS)
add_test (
@@ -369,7 +358,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-f90_${testname}1 PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
add_test (
NAME ${EXAMPLE_VARNAME}_H5DUMP-f90_${testname}2
@@ -385,7 +373,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-f90_${testname}2 PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_H5DUMP-f90_${testname}1
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
endif ()
endif ()
@@ -414,7 +401,6 @@ if (H5EXAMPLE_BUILD_TESTING)
endif ()
set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}-clearall
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
add_test (
NAME ${EXAMPLE_VARNAME}_f90_${testname}-clean
-6
View File
@@ -312,7 +312,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname}-clean PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
else ()
add_test (
@@ -327,9 +326,6 @@ if (H5EXAMPLE_BUILD_TESTING)
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
-P "${H5EXAMPLE_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
if (last_test)
set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${last_test})
endif ()
@@ -349,7 +345,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-f90_${testname} PROPERTIES
DEPENDS ${last_test}
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
set (last_test "${EXAMPLE_VARNAME}_H5DUMP-f90_${testname}")
endif ()
@@ -384,7 +379,6 @@ if (H5EXAMPLE_BUILD_TESTING)
endif ()
set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}-clearall
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
add_test (
NAME ${EXAMPLE_VARNAME}_f90_${testname}-clean
-5
View File
@@ -171,7 +171,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname}-clean PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
else ()
add_test (
@@ -186,9 +185,6 @@ if (H5EXAMPLE_BUILD_TESTING)
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
-P "${H5EXAMPLE_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
if (last_test)
set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${last_test})
endif ()
@@ -209,7 +205,6 @@ if (H5EXAMPLE_BUILD_TESTING)
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-f90_${testname} PROPERTIES
DEPENDS ${last_test}
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
set (last_test "${EXAMPLE_VARNAME}_H5DUMP-f90_${testname}")
endif ()
-1
View File
@@ -106,7 +106,6 @@ if (H5EXAMPLE_BUILD_TESTING)
endif ()
set_tests_properties (${EXAMPLE_VARNAME}_f90_tutr_${testname} PROPERTIES
FIXTURES_REQUIRED clear_${EXAMPLE_VARNAME}_f90_tutr
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
if (last_test)
set_tests_properties (${EXAMPLE_VARNAME}_f90_tutr_${testname} PROPERTIES DEPENDS ${last_test})
@@ -42,7 +42,6 @@ elseif(MINGW)
set (CMAKE_CROSSCOMPILING_EMULATOR wine)
include_directories(/usr/${TOOLCHAIN_PREFIX}/include)
set (CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS On CACHE BOOL "Export windows symbols")
else ()
set (CMAKE_SYSTEM_NAME Linux)
@@ -25,8 +25,6 @@ set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set (CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
set (CMAKE_CROSSCOMPILING_EMULATOR wine64)
set (CROSSCOMPILING_PATH "WINEPATH=/usr/${TOOLCHAIN_PREFIX}/sys-root/mingw/bin/")
set (CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS On CACHE BOOL "Export windows symbols")