Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
129 changes: 4 additions & 125 deletions .github/workflows/build-test-package.yml
Original file line number Diff line number Diff line change
@@ -1,138 +1,17 @@
name: Build, test, package
name: Build, test

on:
push:
branches:
- main
- master
tags:
- 'v*'
pull_request:
branches:
- main
- master

jobs:
cxx-build-workflow:
runs-on: ${{ matrix.os }}
strategy:
max-parallel: 3
matrix:
os: [ubuntu-24.04, windows-2022, macos-10.15]
include:
- os: ubuntu-24.04
c-compiler: "gcc"
cxx-compiler: "g++"
itk-git-tag: "v6.0a02"
cmake-build-type: "MinSizeRel"
- os: windows-2022
c-compiler: "cl.exe"
cxx-compiler: "cl.exe"
itk-git-tag: "v6.0a02"
cmake-build-type: "Release"
- os: macos-10.15
c-compiler: "clang"
cxx-compiler: "clang++"
itk-git-tag: "v6.0a02"
cmake-build-type: "MinSizeRel"

steps:
- uses: actions/checkout@v4

- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: 3.12

- name: Install build dependencies
run: |
python -m pip install --upgrade pip
python -m pip install ninja

- name: Get specific version of CMake, Ninja
uses: lukka/get-cmake@3.31.5

- name: Download ITK
run: |
cd ..
git clone https://github.com/InsightSoftwareConsortium/ITK.git
cd ITK
git checkout ${{ matrix.itk-git-tag }}

- name: Build ITK
if: matrix.os != 'windows-2022'
run: |
cd ..
mkdir ITK-build
cd ITK-build
cmake -DCMAKE_C_COMPILER:FILEPATH="${{ matrix.c-compiler }}" -DBUILD_SHARED_LIBS:BOOL=OFF -DCMAKE_CXX_COMPILER="${{ matrix.cxx-compiler }}" -DCMAKE_BUILD_TYPE:STRING=${{ matrix.cmake-build-type }} -DBUILD_TESTING:BOOL=OFF -GNinja ../ITK
ninja

- name: Build ITK
if: matrix.os == 'windows-2022'
run: |
cd ..
mkdir ITK-build
cd ITK-build
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
cmake -DCMAKE_C_COMPILER:FILEPATH="${{ matrix.c-compiler }}" -DBUILD_SHARED_LIBS:BOOL=OFF -DCMAKE_CXX_COMPILER="${{ matrix.cxx-compiler }}" -DCMAKE_BUILD_TYPE:STRING=${{ matrix.cmake-build-type }} -DBUILD_TESTING:BOOL=OFF -GNinja ../ITK
ninja
shell: cmd

- name: Fetch CTest driver script
run: |
curl -L https://raw.githubusercontent.com/InsightSoftwareConsortium/ITK/dashboard/itk_common.cmake -O

- name: Configure CTest script
shell: bash
run: |
operating_system="${{ matrix.os }}"
cat > dashboard.cmake << EOF
set(CTEST_SITE "GitHubActions")
file(TO_CMAKE_PATH "\$ENV{GITHUB_WORKSPACE}/.." CTEST_DASHBOARD_ROOT)
file(TO_CMAKE_PATH "\$ENV{GITHUB_WORKSPACE}/" CTEST_SOURCE_DIRECTORY)
file(TO_CMAKE_PATH "\$ENV{GITHUB_WORKSPACE}/../build" CTEST_BINARY_DIRECTORY)
set(dashboard_source_name "${GITHUB_REPOSITORY}")
if(ENV{GITHUB_REF} MATCHES "master")
set(branch "-master")
set(dashboard_model "Continuous")
else()
set(branch "-${GITHUB_REF}")
set(dashboard_model "Experimental")
endif()
set(CTEST_BUILD_NAME "${GITHUB_REPOSITORY}-${operating_system}-\${branch}")
set(CTEST_UPDATE_VERSION_ONLY 1)
set(CTEST_TEST_ARGS \${CTEST_TEST_ARGS} PARALLEL_LEVEL \${PARALLEL_LEVEL})
set(CTEST_BUILD_CONFIGURATION "Release")
set(CTEST_CMAKE_GENERATOR "Ninja")
set(CTEST_CUSTOM_WARNING_EXCEPTION
\${CTEST_CUSTOM_WARNING_EXCEPTION}
# macOS Azure VM Warning
"ld: warning: text-based stub file"
)
set(dashboard_no_clean 1)
set(ENV{CC} ${{ matrix.c-compiler }})
set(ENV{CXX} ${{ matrix.cxx-compiler }})
if(WIN32)
set(ENV{PATH} "\${CTEST_DASHBOARD_ROOT}/ITK-build/bin;\$ENV{PATH}")
endif()
set(dashboard_cache "
ITK_DIR:PATH=\${CTEST_DASHBOARD_ROOT}/ITK-build
BUILD_TESTING:BOOL=ON
")
string(TIMESTAMP build_date "%Y-%m-%d")
message("CDash Build Identifier: \${build_date} \${CTEST_BUILD_NAME}")
message("CTEST_SITE = \${CTEST_SITE}")
include(\${CTEST_SCRIPT_DIRECTORY}/itk_common.cmake)
EOF
cat dashboard.cmake

- name: Build and test
if: matrix.os != 'windows-2022'
run: |
ctest --output-on-failure -j 2 -V -S dashboard.cmake

- name: Build and test
if: matrix.os == 'windows-2022'
run: |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
ctest --output-on-failure -j 2 -VV -S dashboard.cmake
shell: cmd
uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-cxx.yml@v5.4.3
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.22.1)
# Need to set CMAKE_CXX_STANDARD, CMAKE_CXX_STANDARD_REQUIRED, CMAKE_CXX_EXTENSIONS
# before calling project to ensure that it is available globally within your CMake project.
if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 17) # Supported values are ``14``, ``17`` and ``20``.
set(CMAKE_CXX_STANDARD 17) # Supported values are ``17`` and ``20``.
endif()
if(NOT CMAKE_CXX_STANDARD_REQUIRED)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
Expand Down
4 changes: 2 additions & 2 deletions evaluate-itk-performance.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ def build_itk(itk_src, itk_bin):
subprocess.check_call(['cmake',
'-G', 'Ninja',
'-DCMAKE_BUILD_TYPE:STRING=Release',
'-DCMAKE_CXX_STANDARD:STRING=11',
'-DCMAKE_CXX_STANDARD:STRING=17',
'-DBUILD_TESTING:BOOL=OFF',
'-DBUILD_EXAMPLES:BOOL=OFF',
'-DBUILD_SHARED_LIBS:BOOL=OFF',
Expand Down Expand Up @@ -163,7 +163,7 @@ def build_benchmarks(benchmark_src, benchmark_bin,
subprocess.check_call(['cmake',
'-G', 'Ninja',
'-DCMAKE_BUILD_TYPE:STRING=Release',
'-DCMAKE_CXX_STANDARD:STRING=11',
'-DCMAKE_CXX_STANDARD:STRING=17',
'-DITK_DIR:PATH=' + itk_bin,
build_information_arg,
benchmark_src])
Expand Down
Loading