feature: add building with pem-pack #683
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI Matrix | |
on: [push, pull_request] | |
jobs: | |
Windows: | |
name: Windows ${{ matrix.runs.generator }} (${{ matrix.build-type }}) | |
runs-on: ${{ matrix.runs.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
build-type: [Release, Debug] | |
runs: [ | |
{generator: "Ninja", os: windows-latest}, | |
{generator: "NMake Makefiles", os: windows-latest}, | |
{generator: "Visual Studio 16 2019", os: windows-2019}] | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Print env | |
run: | | |
echo github.event.action: ${{ github.event.action }} | |
echo github.event_name: ${{ github.event_name }} | |
- name: Setup Ninja | |
uses: abdes/gha-setup-ninja@master | |
with: | |
version: 1.11.0 | |
- name: Setup cmake | |
uses: jwlawson/actions-setup-cmake@v1.14 | |
with: | |
cmake-version: 3.21.x | |
- name: Setup ccache | |
# If ccache behaves badly on windows, skip this step | |
# if: runner.os != 'Windows' | |
uses: Chocobo1/setup-ccache-action@v1 | |
with: | |
install_ccache: true | |
update_packager_index: true | |
prepend_symlinks_to_path: true | |
windows_compile_environment: msvc # this field is required | |
- name: Set environment | |
uses: ilammy/msvc-dev-cmd@v1 | |
- name: Configure | |
run: | | |
cmake ` | |
-S . ` | |
-B build ` | |
-D CMAKE_BUILD_TYPE=${{ matrix.build-type }} ` | |
-G "${{ matrix.runs.generator }}" ` | |
-D USE_CCACHE=ON ` | |
-D CMAKE_VERBOSE_MAKEFILE=ON | |
- name: Build | |
run: cmake --build build --config ${{ matrix.build-type }} | |
- name: Run cryptest | |
run: ctest --verbose -j40 -R cryptest --test-dir build -C ${{ matrix.build-type }} | |
- name: Run build tests | |
run: ctest -j40 -E cryptest --output-on-failure --test-dir build -C ${{ matrix.build-type }} | |
MacOS: | |
name: ${{ matrix.config.name }} ${{matrix.generator }} (${{ matrix.build-type }}) | |
runs-on: macos-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
build-type: [Release, Debug] | |
generator: [Ninja, Xcode] | |
config: | |
- { | |
name: "MacOS", | |
omp: "OFF", | |
} | |
- { | |
name: "MacOS-omp-homebrew", | |
omp: "ON", | |
} | |
- { | |
name: "MacOS-omp-macports", | |
omp: "ON", | |
} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Print env | |
run: | | |
echo github.event.action: ${{ github.event.action }} | |
echo github.event_name: ${{ github.event_name }} | |
- name: Setup Ninja | |
uses: abdes/gha-setup-ninja@master | |
with: | |
version: 1.11.0 | |
- name: Setup cmake | |
uses: jwlawson/actions-setup-cmake@v1.14 | |
with: | |
cmake-version: 3.21.x | |
- name: Setup ccache | |
uses: Chocobo1/setup-ccache-action@v1 | |
with: | |
install_ccache: true | |
update_packager_index: true | |
prepend_symlinks_to_path: false | |
windows_compile_environment: msvc # this field is required | |
- name: Install macports | |
uses: melusina-org/setup-macports@v1 | |
if: endsWith(matrix.config.name, 'macports') | |
- name: Install libomp (macports) | |
run: | | |
port install libomp | |
brew uninstall --ignore-dependencies --zap libomp | |
if: endsWith(matrix.config.name, 'macports') | |
- name: Setup XCode | |
uses: mobiledevops/xcode-select-version-action@v1 | |
with: | |
xcode-select-version: 13.1 | |
if: matrix.generator == 'Xcode' | |
- name: Configure | |
run: | | |
cmake \ | |
-S . \ | |
-B build \ | |
-G ${{ matrix.generator }} \ | |
-D USE_CCACHE=ON \ | |
-D CMAKE_VERBOSE_MAKEFILE=ON \ | |
-D USE_OPENMP=${{ matrix.config.omp }} \ | |
-D CMAKE_BUILD_TYPE=${{ matrix.build-type }} | |
- name: Build | |
run: | | |
NINJA_STATUS="[%f/%t %o/sec] " export NINJA_STATUS | |
cmake --build build --config ${{ matrix.build-type }} | |
- name: Run cryptest | |
run: ctest -j40 --verbose -R "cryptest" --test-dir build -C ${{ matrix.build-type }} | |
- name: Run build tests | |
run: ctest -j40 -E "cryptest" --output-on-failure --test-dir build -C ${{ matrix.build-type }} | |
Ubuntu: | |
name: ${{ matrix.config.name }} (${{ matrix.build-type }}) | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
build-type: [Release, Debug] | |
config: | |
- { | |
name: "ubuntu", | |
cc: "gcc-10", | |
cxx: "g++-10", | |
generators: "Ninja", | |
} | |
- { | |
name: "ubuntu-gcc12", | |
cc: "gcc-12", | |
cxx: "g++-12", | |
generators: "Ninja", | |
} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Print env | |
run: | | |
echo github.event.action: ${{ github.event.action }} | |
echo github.event_name: ${{ github.event_name }} | |
- name: Setup Ninja | |
uses: abdes/gha-setup-ninja@master | |
with: | |
version: 1.11.0 | |
- name: Setup cmake | |
uses: jwlawson/actions-setup-cmake@v1.14 | |
with: | |
cmake-version: 3.21.x | |
- name: Install ccache | |
shell: cmake -P {0} | |
run: | | |
set(ccache_version "4.6.3") | |
set(ccache_dist "ccache-${ccache_version}-linux-x86_64") | |
set(ccache_url "https://github.com/ccache/ccache/releases/download/v${ccache_version}/${ccache_dist}.tar.xz") | |
file(DOWNLOAD "${ccache_url}" ./ccache.tar.xz SHOW_PROGRESS) | |
execute_process(COMMAND ${CMAKE_COMMAND} -E tar zxvf ./ccache.tar.xz) | |
# Add to PATH environment variable | |
file(TO_CMAKE_PATH "$ENV{GITHUB_WORKSPACE}/${ccache_dist}" ccache_dir) | |
set(path_separator ":") | |
file(APPEND "$ENV{GITHUB_PATH}" "$ENV{GITHUB_WORKSPACE}${path_separator}${ccache_dir}") | |
- name: Setup ccache | |
uses: Chocobo1/setup-ccache-action@v1 | |
with: | |
install_ccache: false | |
update_packager_index: false | |
prepend_symlinks_to_path: false | |
windows_compile_environment: msvc # this field is required | |
- name: Configure | |
run: | | |
export CC=${{ matrix.config.cc }} | |
export CXX=${{ matrix.config.cxx }} | |
export PATH=${GITHUB_WORKSPACE}:${PATH} | |
cmake \ | |
-S . \ | |
-B build \ | |
-D CMAKE_BUILD_TYPE=$ENV{BUILD_TYPE} \ | |
-G Ninja \ | |
-D CMAKE_MAKE_PROGRAM=ninja \ | |
-D USE_CCACHE=ON \ | |
-D CMAKE_VERBOSE_MAKEFILE=ON \ | |
-D CMAKE_BUILD_TYPE=${{ matrix.build-type }} | |
- name: Build | |
run: | | |
export NINJA_STATUS="[%f/%t %o/sec] " | |
cmake --build build --target all --config ${{ matrix.build-type }} | |
- name: Run cryptest | |
run: ctest -j40 --verbose -R cryptest --test-dir build -C ${{ matrix.build-type }} | |
- name: Run build tests | |
run: | | |
export CC=${{ matrix.config.cc }} | |
export CXX=${{ matrix.config.cxx }} | |
ctest -j40 -E cryptest --output-on-failure --test-dir build -C ${{ matrix.build-type }} | |
MSys: | |
runs-on: windows-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
build-type: [Release, Debug] | |
sys: [mingw32, mingw64, ucrt64, clang64] | |
config: | |
- { | |
name: "with OMP ", | |
omp: ON, | |
} | |
- { | |
name: "", | |
omp: "OFF", | |
} | |
exclude: | |
- sys: mingw32 | |
build-type: Debug | |
name: MSys - ${{ matrix.sys }} ${{ matrix.config.name }}(${{ matrix.build-type }}) | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Setup MSYS2 | |
uses: msys2/setup-msys2@v2 | |
with: | |
msystem: ${{ matrix.sys }} | |
update: true | |
install: >- | |
git | |
make | |
pacboy: >- | |
toolchain:p | |
cmake:p | |
- name: Setup ccache | |
uses: Chocobo1/setup-ccache-action@v1 | |
with: | |
prepend_symlinks_to_path: false | |
windows_compile_environment: msys2 | |
- name: Configure | |
run: | | |
cmake -G"Unix Makefiles" \ | |
-S . \ | |
-B build \ | |
-DCMAKE_VERBOSE_MAKEFILE=ON \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }} \ | |
-DUSE_OPENMP=${{ matrix.config.omp }} \ | |
-D USE_CCACHE=ON | |
- name: Build | |
run: cmake --build build --config ${{ matrix.build-type }} | |
- name: Run cryptest | |
run: ctest -j40 --verbose -R cryptest --test-dir build -C ${{ matrix.build-type }} | |
- name: Run tests | |
run: ctest -j40 -E cryptest --output-on-failure --test-dir build -C ${{ matrix.build-type }} | |
cygwin: | |
strategy: | |
fail-fast: false | |
matrix: | |
build-type: [Release] | |
config: | |
- { | |
name: "with OMP ", | |
omp: ON, | |
} | |
- { | |
name: "", | |
omp: "OFF", | |
} | |
runs-on: windows-latest | |
defaults: | |
run: | |
shell: C:\cygwin\bin\bash.exe --login -o igncr '{0}' | |
name: Cygwin ${{ matrix.config.name }}(${{ matrix.build-type }}) | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Setup cygwin | |
uses: cygwin/cygwin-install-action@master | |
with: | |
packages: >- | |
ccache | |
cmake | |
gcc-core | |
gcc-g++ | |
ninja | |
- name: Configure | |
run: | | |
cmake /cygdrive/d/a/cryptopp-cmake/cryptopp-cmake \ | |
-B build \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DCMAKE_VERBOSE_MAKEFILE=ON \ | |
-G Ninja \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }} \ | |
-DUSE_OPENMP=${{ matrix.config.omp }} \ | |
-D USE_CCACHE=ON | |
- name: Build | |
run: cmake --build build --config ${{ matrix.build-type }} | |
- name: Run cryptest | |
run: ctest -j40 --verbose -R cryptest --test-dir build -C ${{ matrix.build-type }} | |
- name: Run tests | |
run: ctest -j40 -E cryptest --output-on-failure --test-dir build -C ${{ matrix.build-type }} |