Skip to content

Update QuantLibAAD project link in README #992

Update QuantLibAAD project link in README

Update QuantLibAAD project link in README #992

Workflow file for this run

name: CI
on: [push, pull_request]
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
build_and_test_windows:
name: Windows
strategy:
fail-fast: false
matrix:
toolset: ["14.2", "14.4"]
compiler: [msvc, clang]
config: [Release, Debug]
standard: ["11", "17"]
memory: ["default", "lowmem"]
jit: [OFF]
include:
- config: Debug
sccache: "false"
cmake_extra: ""
- config: Release
sccache: "true"
cmake_extra: -DCMAKE_CXX_COMPILER_LAUNCHER=sccache
- memory: "lowmem"
cmake_mem_flag: -DXAD_REDUCED_MEMORY=ON
- compiler: clang
cxx: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/Llvm/x64/bin/clang-cl.exe
cc: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/Llvm/x64/bin/clang-cl.exe
# disable cache in Windows with Clang, as it fails compilation with latest compilers
sccache: "false"
cmake_extra: ""
vsvarsall: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat
- compiler: msvc
cxx: cl
cc: cl
vsvarsall: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat
# JIT-enabled builds: Release, C++11, all compiler versions
# MSVC
- jit: ON
toolset: "14.2"
compiler: msvc
config: Release
standard: "11"
memory: default
cxx: cl
cc: cl
vsvarsall: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat
sccache: "true"
cmake_extra: -DCMAKE_CXX_COMPILER_LAUNCHER=sccache
- jit: ON
toolset: "14.4"
compiler: msvc
config: Release
standard: "11"
memory: default
cxx: cl
cc: cl
vsvarsall: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat
sccache: "true"
cmake_extra: -DCMAKE_CXX_COMPILER_LAUNCHER=sccache
# Clang-cl
- jit: ON
toolset: "14.4"
compiler: clang
config: Release
standard: "11"
memory: default
cxx: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/Llvm/x64/bin/clang-cl.exe
cc: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/Llvm/x64/bin/clang-cl.exe
vsvarsall: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat
sccache: "false"
cmake_extra: ""
exclude:
- compiler: clang
toolset: "14.2"
- config: Release
memory: lowmem
- compiler: clang
memory: lowmem
- compiler: clang
config: Debug
runs-on: windows-2022
steps:
- uses: actions/checkout@v6
- name: setup
run: |
choco install -y ninja sccache
- name: ccache
if: ${{ matrix.sccache == 'true' }}
uses: hendrikmuhs/ccache-action@v1.2.10
with:
key: windows-${{ matrix.compiler }}-${{ matrix.toolset }}-${{ matrix.config }}-${{ matrix.memory }}
variant: sccache
- name: configure
shell: cmd
run: |
mkdir build
cd build
call "${{ matrix.vsvarsall }}" amd64 -vcvars_ver=${{ matrix.toolset }}
cmake .. -GNinja ^
-DCMAKE_INSTALL_PREFIX="${{ github.workspace }}/install" ^
-DCMAKE_CXX_COMPILER="${{ matrix.cxx }}" ^
-DCMAKE_C_COMPILER="${{ matrix.cc }}" ^
-DCMAKE_CXX_STANDARD="${{ matrix.standard }}" ^
${{ matrix.cmake_extra }} ^
${{ matrix.cmake_mem_flag }} ^
-DCMAKE_BUILD_TYPE=${{ matrix.config }} ^
-DXAD_ENABLE_JIT=${{ matrix.jit }} ^
-DXAD_ENABLE_EIGEN_TESTS=ON
- name: build
shell: cmd
run: |
cd build
call "${{ matrix.vsvarsall }}" amd64 -vcvars_ver=${{ matrix.toolset }}
cmake --build .
- name: test
shell: cmd
run: |
cd build
call "${{ matrix.vsvarsall }}" amd64 -vcvars_ver=${{ matrix.toolset }}
ctest --no-compress-output --output-on-failure -j3 --output-junit test_results.xml
- name: upload test results
if: always()
uses: actions/upload-artifact@v6
with:
name: Test Results (windows ${{ matrix.compiler }}-${{ matrix.toolset }}-${{ matrix.config }}-${{ matrix.memory }}-${{ matrix.standard }}-jit${{ matrix.jit }})
path: build/test_results.xml
- name: install
shell: cmd
run: |
cd build
call "${{ matrix.vsvarsall }}" amd64 -vcvars_ver=${{ matrix.toolset }}
cmake --install .
- name: install test
shell: cmd
run: |
mkdir installtest
cd installtest
call "${{ matrix.vsvarsall }}" amd64 -vcvars_ver=${{ matrix.toolset }}
cmake ..\\samples -GNinja ^
-DCMAKE_CXX_COMPILER="${{ matrix.cxx }}" ^
-DCMAKE_C_COMPILER="${{ matrix.cc }}" ^
-DCMAKE_CXX_STANDARD="${{ matrix.standard }}" ^
-DCMAKE_BUILD_TYPE=${{ matrix.config }} ^
${{ matrix.cmake_extra }} ^
-DCMAKE_PREFIX_PATH="${{ github.workspace }}/install"
cmake --build .
build_and_test_gcc:
name: Linux/Gcc
strategy:
fail-fast: false
matrix:
version: ["7", "8", "9", "10", "11", "12", "13", "14"]
config: [Release, Debug]
reuse_slots: [OFF, ON]
standard: [c++11, c++17]
memory: ["default", "lowmem"]
jit: [OFF]
exclude:
- config: Debug
reuse_slots: ON
- version: "7"
standard: c++17
- config: Release
memory: lowmem
- standard: c++17
config: lowmem
- version: "7"
config: Debug
- version: "8"
config: Debug
- version: "9"
config: Debug
- version: "10"
config: Debug
- version: "12"
config: Debug
- version: "13"
config: Debug
include:
- memory: lowmem
cmake_mem_flag: -DXAD_REDUCED_MEMORY=ON
# JIT-enabled builds: Release, C++11, all compiler versions
# Coverage job (requires Debug)
- jit: ON
config: Debug
version: "11"
reuse_slots: OFF
standard: c++11
memory: default
coverage: true
coverage_cxx_flags: "-fprofile-arcs -ftest-coverage"
coverage_ld_flags: "-lgcov"
# All GCC versions
- jit: ON
config: Release
version: "7"
reuse_slots: OFF
standard: c++11
memory: default
- jit: ON
config: Release
version: "8"
reuse_slots: OFF
standard: c++11
memory: default
- jit: ON
config: Release
version: "9"
reuse_slots: OFF
standard: c++11
memory: default
- jit: ON
config: Release
version: "10"
reuse_slots: OFF
standard: c++11
memory: default
- jit: ON
config: Release
version: "11"
reuse_slots: OFF
standard: c++11
memory: default
- jit: ON
config: Release
version: "12"
reuse_slots: OFF
standard: c++11
memory: default
- jit: ON
config: Release
version: "13"
reuse_slots: OFF
standard: c++11
memory: default
- jit: ON
config: Release
version: "14"
reuse_slots: OFF
standard: c++11
memory: default
runs-on: ubuntu-latest
container:
image: ghcr.io/foonathan/gcc:${{ matrix.version }}
steps:
- uses: actions/checkout@v6
- name: Use debian archive repos
if: matrix.version == '7' || matrix.version == '8'
run: |
set -e
sed -i 's|http://deb.debian.org/debian|http://archive.debian.org/debian|g' /etc/apt/sources.list
sed -i 's|http://security.debian.org/debian-security|http://archive.debian.org/debian-security|g' /etc/apt/sources.list
sed -i 's|http://deb.debian.org/debian buster-updates|http://archive.debian.org/debian buster-updates|g' /etc/apt/sources.list
echo 'Acquire::Check-Valid-Until "false";' | tee /etc/apt/apt.conf.d/99no-check-valid-until
- name: Setup tools
run: |
apt-get update
apt-get install -y ccache ninja-build lcov build-essential cmake
- name: GitHub WS Tmp
# there is an issue with workspace locations in github inside containers, which this works around
# see: https://github.com/actions/runner/issues/2058
run: |
echo "GITHUB_WORKSPACE=$GITHUB_WORKSPACE" >> $GITHUB_ENV
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2.10
with:
key: linux-gcc${{ matrix.version }}-${{ matrix.config }}-${{ matrix.reuse_slots }}-${{ matrix.memory }}-${{ matrix.standard }}
- name: configure
run: |
mkdir build
cd build
cmake .. -GNinja \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_BUILD_TYPE=${{ matrix.config }} \
-DCMAKE_CXX_FLAGS="-std=${{ matrix.standard }} ${{ matrix.coverage_cxx_flags }}" \
-DCMAKE_EXE_LINKER_FLAGS="${{ matrix.coverage_ld_flags }}" \
-DXAD_TAPE_REUSE_SLOTS=${{ matrix.reuse_slots }} \
-DXAD_ENABLE_JIT=${{ matrix.jit }} \
${{ matrix.cmake_mem_flag }} \
-DCMAKE_INSTALL_PREFIX=${{ env.GITHUB_WORKSPACE }}/install \
-DXAD_ENABLE_EIGEN_TESTS=ON
- name: build
run: |
cd build
cmake --build .
- name: coverage baseline
if: ${{ matrix.coverage }}
run: |
cd build
mkdir coverage tmp
lcov --no-external --capture --initial --directory ${{ env.GITHUB_WORKSPACE }} --output-file ./tmp/lcov_base.info
- name: test
run: |
cd build
ctest --no-compress-output --output-on-failure --parallel $(($(nproc) + 2)) --output-junit test_results.xml
- name: upload test results
if: always()
uses: actions/upload-artifact@v6
with:
name: Test Results (linux gcc${{ matrix.version }}-${{ matrix.config }}-${{ matrix.reuse_slots }}-${{ matrix.memory }}-${{ matrix.standard }}-jit${{ matrix.jit }})
path: ${{ env.GITHUB_WORKSPACE }}/build/test_results.xml
- name: coverage tests
if: ${{ matrix.coverage }}
run: |
cd build
lcov --no-external --capture --directory ${{ env.GITHUB_WORKSPACE }} --output-file ./tmp/lcov_run.info
lcov --add-tracefile ./tmp/lcov_base.info --add-tracefile ./tmp/lcov_run.info --output-file ./tmp/lcov_total.info
lcov --remove ./tmp/lcov_total.info "$PWD/*" "${{ env.GITHUB_WORKSPACE }}/test/*" "${{ env.GITHUB_WORKSPACE }}/samples/*" --output-file ./coverage/lcov.info
- name: upload coverage results
if: ${{ matrix.coverage }}
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
flag-name: linux-${{ matrix.compiler }}-${{ matrix.reuse_slots }}-${{ matrix.memory }}
path-to-lcov: ${{env.GITHUB_WORKSPACE }}/build/coverage/lcov.info
parallel: true
- name: install
run: |
cd build
cmake --install .
- name: install test
if: ${{ ! matrix.coverage }}
run: |
mkdir installtest
cd installtest
cmake ../samples -GNinja \
-DCMAKE_BUILD_TYPE=${{ matrix.config }} \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_PREFIX_PATH="${{ env.GITHUB_WORKSPACE }}/install" \
-DCMAKE_CXX_FLAGS="-std=${{ matrix.standard}}" \
-DCMAKE_EXE_LINKER_FLAGS="${{ matrix.coverage_ld_flags }}"
cmake --build .
build_and_test_clang:
name: Linux/Clang
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
version: ["11", "12", "13", "14", "15", "16", "17", "18"]
config: [Release, Debug]
reuse_slots: [OFF, ON]
standard: ["11", "17"]
memory: ["default", "lowmem"]
jit: [OFF]
include:
- version: "11"
cxx: clang++
cc: clang
- version: "12"
cxx: clang++
cc: clang
- version: "13"
cxx: clang++
cc: clang
- version: "14"
cxx: clang++
cc: clang
- version: "15"
cxx: clang++
cc: clang
- version: "16"
cxx: clang++
cc: clang
- version: "17"
cxx: clang++
cc: clang
- version: "18"
cxx: clang++
cc: clang
# JIT-enabled builds: Release, C++11, all compiler versions
- jit: ON
version: "11"
config: Release
reuse_slots: OFF
standard: "11"
memory: default
- jit: ON
version: "12"
config: Release
reuse_slots: OFF
standard: "11"
memory: default
- jit: ON
version: "13"
config: Release
reuse_slots: OFF
standard: "11"
memory: default
- jit: ON
version: "14"
config: Release
reuse_slots: OFF
standard: "11"
memory: default
- jit: ON
version: "15"
config: Release
reuse_slots: OFF
standard: "11"
memory: default
- jit: ON
version: "16"
config: Release
reuse_slots: OFF
standard: "11"
memory: default
- jit: ON
version: "17"
config: Release
reuse_slots: OFF
standard: "11"
memory: default
- jit: ON
version: "18"
config: Release
reuse_slots: OFF
standard: "11"
memory: default
exclude:
- config: Debug
reuse_slots: ON
- config: Release
memory: lowmem
- standard: "17"
memory: lowmem
- version: "11"
config: Debug
- version: "12"
config: Debug
- version: "13"
config: Debug
container:
image: ghcr.io/foonathan/clang:${{ matrix.version }}
steps:
- uses: actions/checkout@v6
- name: setup
run: |
apt-get update
apt-get install -y ccache ninja-build build-essential cmake
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2.10
with:
key: linux-clang${{ matrix.version }}-${{ matrix.config }}-${{ matrix.reuse_slots }}-${{ matrix.memory }}
- name: configure
run: |
mkdir build
cd build
cmake .. -GNinja \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_BUILD_TYPE=${{ matrix.config }} \
-DCMAKE_CXX_COMPILER=${{ matrix.cxx }} \
-DCMAKE_C_COMPILER=${{ matrix.cc }} \
-DCMAKE_CXX_STANDARD=${{ matrix.standard }} \
-DXAD_TAPE_REUSE_SLOTS=${{ matrix.reuse_slots }} \
-DXAD_ENABLE_JIT=${{ matrix.jit }} \
${{ matrix.memory == 'lowmem' && ' -DXAD_REDUCED_MEMORY=ON' || '' }} \
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install \
-DXAD_ENABLE_EIGEN_TESTS=ON
- name: build
run: |
cd build
cmake --build .
- name: test
run: |
cd build
ctest --no-compress-output --output-on-failure --parallel $(($(nproc) + 2)) --output-junit test_results.xml
- name: upload test results
if: always()
uses: actions/upload-artifact@v6
with:
name: Test Results (linux clang-${{ matrix.version }}-${{ matrix.config }}-${{ matrix.reuse_slots }}-${{ matrix.memory }}-${{ matrix.standard }}-jit${{ matrix.jit }})
path: build/test_results.xml
- name: install
run: |
cd build
cmake --install .
- name: install test
run: |
mkdir installtest
cd installtest
cmake ../samples -GNinja \
-DCMAKE_BUILD_TYPE=${{ matrix.config }} \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_PREFIX_PATH="${{ github.workspace }}/install" \
-DCMAKE_CXX_STANDARD=${{ matrix.standard }} \
-DCMAKE_CXX_COMPILER=${{ matrix.cxx }} \
-DCMAKE_C_COMPILER=${{ matrix.cc }}
cmake --build .
build_and_test_macos:
name: Mac
strategy:
fail-fast: false
matrix:
config: [Release, Debug]
os: [macos-14, macos-latest]
standard: [c++11, c++17]
memory: ["default", "lowmem"]
jit: [OFF]
include:
- memory: lowmem
cmake_mem_flag: -DXAD_REDUCED_MEMORY=ON
- config: Release
os: macos-14
compiler: default
coverage: false
- config: Debug
os: macos-14
compiler: default
coverage: true
coverage_cxx_flags: "-fprofile-arcs -ftest-coverage"
coverage_ld_flags: "-ftest-coverage"
standard: c++11
- config: Release
os: macos-latest
coverage: false
- config: Debug
os: macos-latest
coverage: true
coverage_cxx_flags: "-fprofile-arcs -ftest-coverage"
coverage_ld_flags: "-ftest-coverage"
standard: c++17
# JIT-enabled builds: Release, C++11, all OS versions
- jit: ON
config: Release
os: macos-14
standard: c++11
memory: default
coverage: false
- jit: ON
config: Release
os: macos-latest
standard: c++11
memory: default
coverage: false
exclude:
- config: Release
memory: lowmem
- standard: "c++17"
config: lowmem
runs-on: ${{ matrix.os }}
steps:
- name: setup
run: |
brew update
brew install ninja ccache
- name: setup coverage
if: ${{ matrix.coverage }}
# needs to be lcov1.14 specifically and brew no longer supports version selection
run: |
git clone --branch v1.14 https://github.com/linux-test-project/lcov.git
cd lcov
sudo make install
- uses: actions/checkout@v6
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2.10
with:
key: macos-${{ matrix.config }}-${{ matrix.compiler }}-${{ matrix.standard }}-${{ matrix.memory }}
- name: configure
run: |
mkdir build
cd build
cmake .. -GNinja \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_BUILD_TYPE=${{ matrix.config }} \
-DCMAKE_CXX_FLAGS="-std=${{matrix.standard }} ${{ matrix.coverage_cxx_flags }}" \
${{ matrix.cmake_mem_flag }} \
-DCMAKE_EXE_LINKER_FLAGS="${{ matrix.coverage_ld_flags }}" \
-DXAD_ENABLE_JIT=${{ matrix.jit }} \
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install \
-DXAD_ENABLE_EIGEN_TESTS=ON
- name: build
run: |
cd build
cmake --build .
- name: coverage baseline
if: ${{ matrix.coverage }}
run: |
cd build
mkdir coverage tmp
lcov --no-external --capture --initial --directory ${{ github.workspace }} --output-file ./tmp/lcov_base.info
- name: test
run: |
cd build
ctest --no-compress-output --output-on-failure -j$(sysctl -n hw.ncpu) --output-junit test_results.xml
- name: upload test results
if: always()
uses: actions/upload-artifact@v6
with:
name: Test Results (macos ${{ matrix.config }}-${{ matrix.os }}-${{ matrix.standard }}-${{ matrix.memory }}-jit${{ matrix.jit }})
path: build/test_results.xml
- name: coverage tests
if: ${{ matrix.coverage }}
run: |
cd build
lcov --no-external --capture --directory ${{ github.workspace }} --output-file ./tmp/lcov_run.info
lcov --add-tracefile ./tmp/lcov_base.info --add-tracefile ./tmp/lcov_run.info --ignore-errors inconsistent --output-file ./tmp/lcov_total.info
lcov --remove ./tmp/lcov_total.info "$PWD/*" "${{ github.workspace }}/test/*" "${{ github.workspace }}/samples/*" --ignore-errors inconsistent --output-file ./coverage/lcov.info
- name: upload coverage results
if: ${{ matrix.coverage }}
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
flag-name: macos-${{ matrix.compiler }}-${{ matrix.standard }}-${{ matrix.memory }}
path-to-lcov: build/coverage/lcov.info
parallel: true
- name: install
run: |
cd build
cmake --install .
- name: install test
if: ${{ ! matrix.coverage }}
run: |
mkdir installtest
cd installtest
cmake ../samples -GNinja \
-DCMAKE_BUILD_TYPE=${{ matrix.config }} \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_FLAGS="-std=${{ matrix.standard }}" \
-DCMAKE_PREFIX_PATH="${{ github.workspace }}/install"
cmake --build .
coverage_finish:
name: Coverage Collect
needs: [ build_and_test_gcc, build_and_test_macos ]
runs-on: ubuntu-latest
steps:
- name: Coveralls Finished
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
parallel-finished: true
- name: Rerun coverage workaround
# from https://github.com/lemurheavy/coveralls-public/issues/1653#issuecomment-1251587119
run: |
curl --location --request GET 'https://coveralls.io/rerun_build?repo_token=${{ secrets.COVERALLS_REPO_TOKEN }}&build_num=${{ github.run_id }}'
event_file:
name: Event File
runs-on: ubuntu-latest
steps:
- name: Upload
uses: actions/upload-artifact@v6
with:
name: Event File
path: ${{ github.event_path }}