Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
0b8f640
Rework Fortran configure to allow cross compile overrides
byrnHDF Aug 11, 2025
e217e9e
Merge branch 'HDFGroup:develop' into develop-fortran-config
byrnHDF Aug 12, 2025
5e01b7e
Add cross-compile template toolchain and use gfortran in defaults
byrnHDF Aug 12, 2025
88a5c69
Add cross-compile action
byrnHDF Aug 12, 2025
1d8d13a
install mingw
byrnHDF Aug 12, 2025
4c34d6b
correct yaml name
byrnHDF Aug 12, 2025
84aafb4
Fix ext name
byrnHDF Aug 12, 2025
e10dc8d
disable plugins until fixed
byrnHDF Aug 12, 2025
c528c12
correct syntax
byrnHDF Aug 12, 2025
b590e5c
Try setup-mingw
byrnHDF Aug 12, 2025
d871ee0
Try a different toolchain with paths
byrnHDF Aug 12, 2025
b0f0efb
fix toolchain
byrnHDF Aug 12, 2025
239db8e
Try explict install of gfortran
byrnHDF Aug 12, 2025
8fe8f0b
Disable java
byrnHDF Aug 12, 2025
4b17b90
Adjust default values
byrnHDF Aug 12, 2025
de00e49
Adjust values and syntax
byrnHDF Aug 12, 2025
389525b
Merge branch 'HDFGroup:develop' into develop-fortran-config
byrnHDF Aug 12, 2025
2488eca
Merge branch 'HDFGroup:develop' into develop-fortran-config
byrnHDF Aug 13, 2025
fb9c79f
Merge branch 'HDFGroup:develop' into develop-fortran-config
byrnHDF Aug 13, 2025
2102251
Merge branch 'HDFGroup:develop' into develop-fortran-config
byrnHDF Aug 15, 2025
34c0750
Merge branch 'HDFGroup:develop' into develop-fortran-config
byrnHDF Aug 19, 2025
4a982aa
Merge branch 'HDFGroup:develop' into develop-fortran-config
byrnHDF Aug 21, 2025
014f661
Merge branch 'HDFGroup:develop' into develop-fortran-config
byrnHDF Aug 24, 2025
3b400a9
Merge branch 'HDFGroup:develop' into develop-fortran-config
byrnHDF Aug 28, 2025
9bc91a0
Merge branch 'HDFGroup:develop' into develop-fortran-config
byrnHDF Aug 29, 2025
f14fd3d
Merge branch 'HDFGroup:develop' into develop-fortran-config
byrnHDF Sep 2, 2025
4e2e990
Add support for Fortran pregen files
byrnHDF Sep 2, 2025
8f03e94
Update workflow with path to files
byrnHDF Sep 2, 2025
19bff07
Use full path
byrnHDF Sep 2, 2025
6773bc7
CMAKE_CROSSCOMPILING_EMULATOR is handled by CMake added PATH var
byrnHDF Sep 3, 2025
2e626c3
Correct no cross-compile Fortan custom_commands
byrnHDF Sep 3, 2025
aaddeb9
Fix failing tests for mingw
byrnHDF Sep 3, 2025
acb0897
Correct location for property
byrnHDF Sep 3, 2025
051a1af
Disable HDF5_TEST_API option for cross-compile workflow
byrnHDF Sep 3, 2025
9179ab6
Fix command properties
byrnHDF Sep 3, 2025
79a83d3
Merge develop and fix conflicts
byrnHDF Sep 4, 2025
68ee2b5
Merge branch 'develop' into develop-fortran-config
byrnHDF Sep 4, 2025
487769c
Fix the HDF5_SIZEOF_OFF_T issue with mingw
byrnHDF Sep 4, 2025
922b254
Merge branch 'HDFGroup:develop' into develop-fortran-config
byrnHDF Sep 4, 2025
6c1e774
Correct OFF_T size for mingw
byrnHDF Sep 4, 2025
b9a5400
Allow cross-compile workflow to pass with failure testing
byrnHDF Sep 4, 2025
de7ea6c
Merge branch 'HDFGroup:develop' into develop-fortran-config
byrnHDF Sep 6, 2025
2a41d84
Merge branch 'HDFGroup:develop' into develop-fortran-config
byrnHDF Sep 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/workflows/cmake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,12 @@ jobs:
thread_safety: ""
build_mode: "Debug"

call-release-cross:
name: "CMake Release Cross Compile Workflows"
uses: ./.github/workflows/cross-compile.yml
with:
build_mode: "Release"

call-release-cmake:
name: "CMake Release Workflows"
uses: ./.github/workflows/main-cmake.yml
Expand Down
93 changes: 93 additions & 0 deletions .github/workflows/cross-compile.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
name: hdf5 dev CMake CI

# Triggers the workflow on a call from another workflow
on:
workflow_call:
inputs:
build_mode:
description: "release vs. debug build"
required: true
type: string

permissions:
contents: read

jobs:
build_and_test_linux:
name: "Ubuntu mingw64-${{ inputs.build_mode }}"
runs-on: ubuntu-24.04
steps:
- name: Install CMake Dependencies (Linux)
run: |
sudo apt-get update
sudo apt-get install ninja-build graphviz
sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev
sudo apt-get install -y mingw-w64
sudo apt-get install gfortran-mingw-w64-x86-64-win32

- name: Install Dependencies
uses: ssciwr/doxygen-install@v1
with:
version: "1.13.2"

# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Get Sources
uses: actions/[email protected]

# CMAKE CONFIGURE
- name: CMake Configure
run: |
mkdir "${{ runner.workspace }}/build"
cd "${{ runner.workspace }}/build"
cmake -C $GITHUB_WORKSPACE/config/cmake/cacheinit.cmake \
-G Ninja \
--log-level=VERBOSE \
-DCMAKE_TOOLCHAIN_FILE:STRING=config/toolchain/mingw64.cmake \
-DCMAKE_BUILD_TYPE=${{ inputs.build_mode }} \
-DHDF5_ENABLE_DOXY_WARNINGS:BOOL=ON \
-DHDF5_BUILD_DOC:BOOL=ON \
-DHDF5_BUILD_JAVA:BOOL=OFF \
-DHDF5_ENABLE_PLUGIN_SUPPORT:BOOL=OFF \
-DHDF5_ENABLE_ZLIB_SUPPORT:BOOL=ON \
-DHDF5_ENABLE_SZIP_SUPPORT:BOOL=ON \
-DLIBAEC_USE_LOCALCONTENT:BOOL=OFF \
-DZLIB_USE_LOCALCONTENT:BOOL=OFF \
-DHDF5_PACK_EXAMPLES:BOOL=ON \
-DHDF5_PACKAGE_EXTLIBS:BOOL=ON \
-DHDF5_TEST_API:BOOL=OFF \
-DHDF5_USE_PREGEN:BOOL=ON \
-DHDF5_USE_PREGEN_DIR:PATH=$GITHUB_WORKSPACE/config/fortpregen/gfortran \
$GITHUB_WORKSPACE
shell: bash

# BUILD
- name: CMake Build
run: cmake --build . --parallel 3 --config ${{ inputs.build_mode }}
working-directory: ${{ runner.workspace }}/build

# RUN TESTS
- name: CMake Run Tests
run: ctest . --parallel 2 -C ${{ inputs.build_mode }} -V -E "err_compat|filenotclosed|swmr|cache_api"
working-directory: ${{ runner.workspace }}/build

# RUN Failing TESTS
- name: CMake Run Tests
run: ctest . --parallel 2 -C ${{ inputs.build_mode }} -V -R "err_compat|filenotclosed|swmr|cache_api"
working-directory: ${{ runner.workspace }}/build
continue-on-error: true

- name: CMake Run Package
run: cpack -C ${{ inputs.build_mode }} -V
working-directory: ${{ runner.workspace }}/build

- name: List files in the space
run: |
ls -l ${{ runner.workspace }}/build

- name: Save published binary (linux)
uses: actions/upload-artifact@v4
with:
name: tgz-ubuntu-2404_mingw64-${{ inputs.build_mode }}-binary
path: ${{ runner.workspace }}/build/HDF5-*-Linux.tar.gz
if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn`
if: ${{ inputs.build_mode != 'Debug' }}
6 changes: 6 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -325,6 +325,12 @@ set (HDF5_DOXYGEN_DIR ${HDF5_SOURCE_DIR}/doxygen)

set (HDF5_SRC_INCLUDE_DIRS ${HDF5_SRC_DIR})

if (HDF5_USE_PREGEN)
set (HDF5_GENERATED_SOURCE_DIR ${HDF5_USE_PREGEN_DIR})
else ()
set (HDF5_GENERATED_SOURCE_DIR ${HDF5_F90_SRC_BINARY_DIR})
endif ()

#-----------------------------------------------------------------------------
# parse the full version number from H5public.h and include in H5_VERS_INFO
#-----------------------------------------------------------------------------
Expand Down
19 changes: 13 additions & 6 deletions HDF5Examples/C/H5D/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -222,13 +222,15 @@ if (H5EX_BUILD_TESTING)
${testname}.h5
)
if (HDF5_ENABLE_USING_MEMCHECKER)
add_test (NAME ${EXAMPLE_VARNAME}_${testname} COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:${EXAMPLE_VARNAME}_${testname}>)
set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall)
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 (
NAME ${EXAMPLE_VARNAME}_${testname}
COMMAND "${CMAKE_COMMAND}"
-D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}"
-D "TEST_PROGRAM=$<TARGET_FILE:${EXAMPLE_VARNAME}_${testname}>"
-D "TEST_ARGS:STRING="
-D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
Expand All @@ -238,12 +240,14 @@ if (H5EX_BUILD_TESTING)
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
-P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall)
set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
if (HDF5_PROVIDES_TOOLS)
add_test (
NAME ${EXAMPLE_VARNAME}_H5DUMP-${testname}
COMMAND "${CMAKE_COMMAND}"
-D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}"
-D "TEST_PROGRAM=${H5EX_HDF5_DUMP_EXECUTABLE}"
-D "TEST_ARGS:STRING=${ARGN};${testname}.h5"
-D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
Expand All @@ -253,7 +257,10 @@ if (H5EX_BUILD_TESTING)
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
-P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname})
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_${testname}
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
endif ()
endif ()
endmacro ()
Expand Down
30 changes: 17 additions & 13 deletions HDF5Examples/C/H5FLT/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,6 @@ if (H5EX_BUILD_TESTING)
add_test (
NAME ${EXAMPLE_VARNAME}_${testname}-ERR
COMMAND "${CMAKE_COMMAND}"
-D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}"
-D "TEST_PROGRAM=$<TARGET_FILE:${EXAMPLE_VARNAME}_${testname}>"
-D "TEST_ARGS:STRING=${ARGN}"
-D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
Expand All @@ -228,7 +227,10 @@ if (H5EX_BUILD_TESTING)
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
-P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_${testname}-ERR PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall)
set_tests_properties (${EXAMPLE_VARNAME}_${testname}-ERR PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
add_test (
NAME ${EXAMPLE_VARNAME}_${testname}
COMMAND "${CMAKE_COMMAND}"
Expand All @@ -240,7 +242,6 @@ if (H5EX_BUILD_TESTING)
add_test (
NAME ${EXAMPLE_VARNAME}_${testname}
COMMAND "${CMAKE_COMMAND}"
-D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}"
-D "TEST_PROGRAM=$<TARGET_FILE:${EXAMPLE_VARNAME}_${testname}>"
-D "TEST_ARGS:STRING=${ARGN}"
-D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
Expand All @@ -252,15 +253,17 @@ if (H5EX_BUILD_TESTING)
-D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}"
-P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall)
set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
endif ()
set (last_test "${EXAMPLE_VARNAME}_${testname}")
if (HDF5_PROVIDES_TOOLS)
if ("${ARGN}" STREQUAL "FILTERALL")
add_test (
NAME ${EXAMPLE_VARNAME}_H5DUMP-${testname}
COMMAND "${CMAKE_COMMAND}"
-D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}"
-D "TEST_PROGRAM=${H5EX_HDF5_DUMP_EXECUTABLE}"
-D "TEST_ARGS:STRING=--enable-error-stack;-p;${testname}.h5"
-D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
Expand All @@ -278,7 +281,6 @@ if (H5EX_BUILD_TESTING)
add_test (
NAME ${EXAMPLE_VARNAME}_H5DUMP-${testname}
COMMAND "${CMAKE_COMMAND}"
-D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}"
-D "TEST_PROGRAM=${H5EX_HDF5_DUMP_EXECUTABLE}"
-D "TEST_ARGS:STRING=--enable-error-stack;-pH;${testname}.h5"
-D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
Expand All @@ -296,7 +298,6 @@ if (H5EX_BUILD_TESTING)
add_test (
NAME ${EXAMPLE_VARNAME}_H5DUMP-${testname}
COMMAND "${CMAKE_COMMAND}"
-D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}"
-D "TEST_PROGRAM=${H5EX_HDF5_DUMP_EXECUTABLE}"
-D "TEST_ARGS:STRING=--enable-error-stack;-p;${testname}.h5"
-D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
Expand All @@ -311,7 +312,10 @@ if (H5EX_BUILD_TESTING)
-P "${H5EX_RESOURCES_DIR}/runTest.cmake"
)
endif ()
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname})
set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES
DEPENDS ${EXAMPLE_VARNAME}_${testname}
ENVIRONMENT "${CROSSCOMPILING_PATH}"
)
set (last_test "${EXAMPLE_VARNAME}_H5DUMP-${testname}")
endif ()
endmacro ()
Expand All @@ -320,17 +324,17 @@ if (H5EX_BUILD_TESTING)
# Copy all the HDF5 files from the source directory into the test directory
# --------------------------------------------------------------------
foreach (h5_file ${dyn_examples})
HDFTEST_COPY_FILE("${PROJECT_SOURCE_DIR}/tfiles/${h5_file}.tst" "${PROJECT_BINARY_DIR}/${h5_file}.tst" "example_files")
HDFTEST_COPY_FILE ("${PROJECT_SOURCE_DIR}/tfiles/${h5_file}.tst" "${PROJECT_BINARY_DIR}/${h5_file}.tst" "example_files")
if (WIN32 AND MSVC_VERSION LESS 1900 AND ${h5_file} MATCHES "h5ex_d_zfp")
HDFTEST_COPY_FILE("${PROJECT_SOURCE_DIR}/tfiles/h5ex_d_zfp.wddl" "${PROJECT_BINARY_DIR}/h5ex_d_zfp.ddl" "example_files")
HDFTEST_COPY_FILE ("${PROJECT_SOURCE_DIR}/tfiles/h5ex_d_zfp.wddl" "${PROJECT_BINARY_DIR}/h5ex_d_zfp.ddl" "example_files")
else ()
HDFTEST_COPY_FILE("${PROJECT_SOURCE_DIR}/tfiles/${h5_file}.ddl" "${PROJECT_BINARY_DIR}/${h5_file}.ddl" "example_files")
HDFTEST_COPY_FILE ("${PROJECT_SOURCE_DIR}/tfiles/${h5_file}.ddl" "${PROJECT_BINARY_DIR}/${h5_file}.ddl" "example_files")
endif()
endforeach ()
foreach (h5_file ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES})
HDFTEST_COPY_FILE("${PROJECT_SOURCE_DIR}/tfiles/${h5_file}" "${PROJECT_BINARY_DIR}/${h5_file}" "example_files")
HDFTEST_COPY_FILE ("${PROJECT_SOURCE_DIR}/tfiles/${h5_file}" "${PROJECT_BINARY_DIR}/${h5_file}" "example_files")
endforeach ()
add_custom_target(${EXAMPLE_VARNAME}_example_files ALL COMMENT "Copying files needed by example tests" DEPENDS ${example_files_list})
add_custom_target (${EXAMPLE_VARNAME}_example_files ALL COMMENT "Copying files needed by example tests" DEPENDS ${example_files_list})

foreach (h5_file ${dyn_examples})
if (NOT HDF5_ENABLE_USING_MEMCHECKER)
Expand Down
Loading
Loading