name: CI on: pull_request: push: branches: - '**' tags-ignore: - '**' env: ### compiler options HOST: WRAPPER_CMD: # Specific warnings can be disabled with -Wno-error=foo. # -pedantic-errors is not equivalent to -Werror=pedantic and thus not implied by -Werror according to the GCC manual. WERROR_CFLAGS: '-Werror -pedantic-errors' MAKEFLAGS: '-j4' BUILD: 'check' ### secp256k1 config ECMULTWINDOW: 'auto' ECMULTGENPRECISION: 'auto' ASM: 'no' WIDEMUL: 'auto' WITH_VALGRIND: 'yes' EXTRAFLAGS: ### secp256k1 modules EXPERIMENTAL: 'no' ECDH: 'no' RECOVERY: 'no' SCHNORRSIG: 'no' ELLSWIFT: 'no' ### test options SECP256K1_TEST_ITERS: BENCH: 'yes' SECP256K1_BENCH_ITERS: 2 CTIMETESTS: 'yes' # Compile and run the examples. EXAMPLES: 'yes' jobs: macos-native: name: "x86_64: macOS Ventura" # See: https://github.com/actions/runner-images#available-images. runs-on: macos-13 env: ASM: 'no' WITH_VALGRIND: 'no' CTIMETESTS: 'no' CC: 'clang' strategy: fail-fast: false matrix: env_vars: - { WIDEMUL: 'int64', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' } - { WIDEMUL: 'int64', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', CC: 'gcc' } - { WIDEMUL: 'int128_struct', ECMULTGENPRECISION: 2, ECMULTWINDOW: 4 } - { WIDEMUL: 'int128', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' } - { WIDEMUL: 'int128', RECOVERY: 'yes', SCHNORRSIG: 'yes' } - { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', CC: 'gcc' } - { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', CPPFLAGS: '-DVERIFY' } - BUILD: 'distcheck' steps: - name: Checkout uses: actions/checkout@v3 - name: Install Homebrew packages env: HOMEBREW_NO_AUTO_UPDATE: 1 HOMEBREW_NO_INSTALL_CLEANUP: 1 run: | brew install automake libtool gcc ln -s $(brew --prefix gcc)/bin/gcc-?? /usr/local/bin/gcc - name: CI script env: ${{ matrix.env_vars }} run: ./ci/cirrus.sh - run: cat tests.log || true if: ${{ always() }} - run: cat noverify_tests.log || true if: ${{ always() }} - run: cat exhaustive_tests.log || true if: ${{ always() }} - run: cat ctime_tests.log || true if: ${{ always() }} - run: cat bench.log || true if: ${{ always() }} - run: cat config.log || true if: ${{ always() }} - run: cat test_env.log || true if: ${{ always() }} - name: CI env run: env if: ${{ always() }} win64-native: name: "x86_64: Windows, VS 2022" # See: https://github.com/actions/runner-images#available-images. runs-on: windows-2022 strategy: fail-fast: false matrix: lib_type: ['shared', 'static'] steps: - name: Checkout uses: actions/checkout@v3 - name: Generate buildsystem run: cmake -E env CFLAGS="/WX" cmake -B build -A x64 -DSECP256K1_ENABLE_MODULE_RECOVERY=ON -DSECP256K1_BUILD_EXAMPLES=ON -DBUILD_SHARED_LIBS=${{ matrix.lib_type == 'shared' && 'ON' || 'OFF' }} - name: Build run: cmake --build build --config RelWithDebInfo -- /p:UseMultiToolTask=true /maxCpuCount - name: Check run: | ctest -C RelWithDebInfo --test-dir build -j ([int]$env:NUMBER_OF_PROCESSORS + 1) build\src\RelWithDebInfo\bench_ecmult.exe build\src\RelWithDebInfo\bench_internal.exe build\src\RelWithDebInfo\bench.exe sage: name: "SageMath prover" runs-on: ubuntu-latest container: image: sagemath/sagemath:latest options: --user root steps: - name: Checkout uses: actions/checkout@v3 - name: CI script run: | cd sage sage prove_group_implementations.sage