Optimize Base64Decode function #1800
Workflow file for this run
This file contains hidden or 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 | |
| on: [push, workflow_dispatch, pull_request] # Trigger for every push as well as for every pull request. Yes, this will run stuff twice in case we create a PR from inside this repo. I'm open for better solutions, where I do not have to specify each brach individually for the 'push' trigger. | |
| env: | |
| # Enable verbose output. | |
| # Repeat up to 5 times to deal with flaky tests. | |
| CTEST_OPTIONS: "--repeat until-pass:5 --output-on-failure" | |
| # The OpenSSL path for CI runs. Found via 'brew info openssl'. | |
| MACOS_OPENSSL_ROOT_DIR: "/opt/homebrew/Cellar/openssl@3/3.3.0" | |
| jobs: | |
| ubuntu-clang-openssl: | |
| strategy: | |
| matrix: | |
| container: ["ubuntu:latest", "ubuntu:rolling"] | |
| systemCurl: [ON, OFF] | |
| buildType: [Debug, Release] | |
| runs-on: ubuntu-latest | |
| container: ${{ matrix.container }} | |
| steps: | |
| - name: Update package list | |
| run: apt update | |
| - name: Install Dependencies | |
| run: apt install -y git libssl-dev cmake build-essential clang libcurl4-openssl-dev libpsl-dev meson libunistring-dev | |
| env: | |
| DEBIAN_FRONTEND: noninteractive | |
| - name: Setup cmake | |
| uses: jwlawson/[email protected] | |
| with: | |
| cmake-version: '3.22.x' | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| - name: "Build & Test" | |
| env: | |
| CPR_BUILD_TESTS: ON | |
| CPR_BUILD_TESTS_SSL: ON | |
| CPR_FORCE_OPENSSL_BACKEND: ON | |
| CPR_USE_SYSTEM_CURL: ${{ matrix.systemCurl }} | |
| uses: ashutoshvarma/action-cmake-build@master | |
| with: | |
| build-dir: ${{ github.workspace }}/build | |
| source-dir: ${{ github.workspace }} | |
| cc: clang | |
| cxx: clang++ | |
| build-type: ${{ matrix.buildType }} | |
| run-test: true | |
| ctest-options: ${{ env.CTEST_OPTIONS }} | |
| ubuntu-gcc-openssl: | |
| strategy: | |
| matrix: | |
| container: ["ubuntu:latest", "ubuntu:rolling"] | |
| systemCurl: [ON, OFF] | |
| buildType: [Debug, Release] | |
| runs-on: ubuntu-latest | |
| container: ${{ matrix.container }} | |
| steps: | |
| - name: Update package list | |
| run: apt update | |
| - name: Install Dependencies | |
| run: apt install -y git libssl-dev cmake build-essential libcurl4-openssl-dev libpsl-dev meson libunistring-dev | |
| env: | |
| DEBIAN_FRONTEND: noninteractive | |
| - name: Setup cmake | |
| uses: jwlawson/[email protected] | |
| with: | |
| cmake-version: '3.22.x' | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| - name: "Build & Test" | |
| env: | |
| CPR_BUILD_TESTS: ON | |
| CPR_BUILD_TESTS_SSL: ON | |
| CPR_FORCE_OPENSSL_BACKEND: ON | |
| CPR_USE_SYSTEM_CURL: ${{ matrix.systemCurl }} | |
| uses: ashutoshvarma/action-cmake-build@master | |
| with: | |
| build-dir: ${{ github.workspace }}/build | |
| source-dir: ${{ github.workspace }} | |
| cc: gcc | |
| cxx: g++ | |
| build-type: ${{ matrix.buildType }} | |
| run-test: true | |
| ctest-options: ${{ env.CTEST_OPTIONS }} | |
| ubuntu-gcc-mbedtls: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Update package list | |
| run: sudo apt update | |
| - name: Install Dependencies | |
| run: sudo apt install -y git libssl-dev libmbedtls-dev cmake build-essential libpsl-dev meson libunistring-dev | |
| env: | |
| DEBIAN_FRONTEND: noninteractive | |
| - name: Setup cmake | |
| uses: jwlawson/[email protected] | |
| with: | |
| cmake-version: '3.22.x' | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| - name: "Build & Test" | |
| env: | |
| CPR_BUILD_TESTS: ON | |
| CPR_BUILD_TESTS_SSL: ON | |
| CPR_FORCE_MBEDTLS_BACKEND: ON | |
| uses: ashutoshvarma/action-cmake-build@master | |
| with: | |
| build-dir: ${{ github.workspace }}/build | |
| source-dir: ${{ github.workspace }} | |
| cc: gcc | |
| cxx: g++ | |
| build-type: Release | |
| run-test: true | |
| ctest-options: ${{ env.CTEST_OPTIONS }} | |
| fedora-clang-openssl: | |
| runs-on: ubuntu-latest | |
| container: "fedora:latest" | |
| steps: | |
| - name: Update package list | |
| run: dnf update -y | |
| - name: Install Dependencies | |
| run: dnf install -y gcc g++ clang git make openssl-devel libcurl-devel cmake libpsl-devel libunistring-devel meson | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| - name: "Build & Test" | |
| env: | |
| CPR_BUILD_TESTS: ON | |
| CPR_BUILD_TESTS_SSL: ON | |
| CPR_FORCE_OPENSSL_BACKEND: ON | |
| CPR_USE_SYSTEM_CURL: OFF | |
| uses: ashutoshvarma/action-cmake-build@master | |
| with: | |
| build-dir: ${{ github.workspace }}/build | |
| source-dir: ${{ github.workspace }} | |
| cc: clang | |
| cxx: clang++ | |
| build-type: Release | |
| run-test: true | |
| ctest-options: ${{ env.CTEST_OPTIONS }} | |
| fedora-gcc-openssl: | |
| strategy: | |
| matrix: | |
| systemCurl: [ON, OFF] | |
| buildType: [Debug, Release] | |
| runs-on: ubuntu-latest | |
| container: "fedora:latest" | |
| steps: | |
| - name: Update package list | |
| run: dnf update -y | |
| - name: Install Dependencies | |
| run: dnf install -y gcc g++ clang git make openssl-devel libcurl-devel cmake libpsl-devel libunistring-devel meson | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| - name: "Build & Test" | |
| env: | |
| CPR_BUILD_TESTS: ON | |
| CPR_BUILD_TESTS_SSL: ON | |
| CPR_FORCE_OPENSSL_BACKEND: ON | |
| CPR_USE_SYSTEM_CURL: ${{ matrix.systemCurl }} | |
| uses: ashutoshvarma/action-cmake-build@master | |
| with: | |
| build-dir: ${{ github.workspace }}/build | |
| source-dir: ${{ github.workspace }} | |
| cc: gcc | |
| cxx: g++ | |
| build-type: ${{ matrix.buildType }} | |
| run-test: true | |
| ctest-options: ${{ env.CTEST_OPTIONS }} | |
| fedora-gcc-openssl-no-psl: | |
| runs-on: ubuntu-latest | |
| container: "fedora:latest" | |
| steps: | |
| - name: Update package list | |
| run: dnf update -y | |
| - name: Install Dependencies | |
| run: dnf install -y git gcc g++ make openssl-devel cmake libunistring-devel | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| - name: "Build & Test" | |
| env: | |
| CPR_BUILD_TESTS: ON | |
| CPR_BUILD_TESTS_SSL: ON | |
| CPR_FORCE_OPENSSL_BACKEND: ON | |
| CPR_USE_SYSTEM_CURL: OFF | |
| CPR_CURL_USE_LIBPSL: OFF | |
| uses: ashutoshvarma/action-cmake-build@master | |
| with: | |
| build-dir: ${{ github.workspace }}/build | |
| source-dir: ${{ github.workspace }} | |
| cc: gcc | |
| cxx: g++ | |
| build-type: release | |
| run-test: true | |
| ctest-options: ${{ env.CTEST_OPTIONS }} | |
| fedora-gcc-ssl-sanitizer: | |
| strategy: | |
| matrix: | |
| buildType: [UdefSan, LeakSan, AddrSan] # ThreadSan is disabled for now until all problems are resolved: https://github.com/libcpr/cpr/issues/451 | |
| runs-on: ubuntu-latest | |
| container: "fedora:latest" # Use fedora for an up to date version of all sanitizers | |
| steps: | |
| - name: Update package list | |
| run: dnf update -y | |
| - name: Install Dependencies | |
| run: dnf install -y gcc g++ clang git make openssl-devel libasan libubsan liblsan libtsan cmake libpsl-devel libunistring-devel meson | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| - name: "Build & Test" | |
| env: | |
| CPR_BUILD_TESTS: ON | |
| CPR_BUILD_TESTS_SSL: ON | |
| uses: ashutoshvarma/action-cmake-build@master | |
| with: | |
| build-dir: ${{ github.workspace }}/build | |
| source-dir: ${{ github.workspace }} | |
| cc: gcc | |
| cxx: g++ | |
| build-type: ${{ matrix.buildType }} | |
| run-test: true | |
| ctest-options: ${{ env.CTEST_OPTIONS }} | |
| windows-msvc-ssl: | |
| strategy: | |
| matrix: | |
| buildType: [Debug, Release] | |
| runs-on: windows-latest | |
| steps: | |
| - uses: actions/setup-python@v6 | |
| - name: Install meson | |
| run: pip install meson | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| - name: "Build & Test" | |
| env: | |
| CMAKE_GENERATOR: "Visual Studio 17 2022" | |
| CPR_BUILD_TESTS: ON | |
| CPR_BUILD_TESTS_SSL: OFF | |
| CURL_USE_LIBPSL: OFF | |
| uses: ashutoshvarma/action-cmake-build@master | |
| with: | |
| build-dir: ${{ github.workspace }}/build | |
| source-dir: ${{ github.workspace }} | |
| build-type: ${{ matrix.buildType }} | |
| run-test: true | |
| ctest-options: ${{ env.CTEST_OPTIONS }} | |
| windows-msvc-openssl: | |
| runs-on: windows-latest | |
| steps: | |
| - uses: actions/setup-python@v6 | |
| - name: Install meson | |
| run: pip install meson | |
| - name: Install OpenSSL | |
| run: choco install openssl -y | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| - name: "Build & Test" | |
| env: | |
| CMAKE_GENERATOR: "Visual Studio 17 2022" | |
| CPR_BUILD_TESTS: ON | |
| CPR_BUILD_TESTS_SSL: ON | |
| CPR_FORCE_OPENSSL_BACKEND: ON | |
| CURL_USE_LIBPSL: OFF | |
| uses: ashutoshvarma/action-cmake-build@master | |
| with: | |
| build-dir: ${{ github.workspace }}/build | |
| source-dir: ${{ github.workspace }} | |
| build-type: Release | |
| run-test: true | |
| ctest-options: ${{ env.CTEST_OPTIONS }} | |
| macos-clang-ssl: | |
| strategy: | |
| matrix: | |
| buildType: [Debug, Release] | |
| runs-on: macos-latest | |
| steps: | |
| - name: Install libpsl | |
| run: brew install libpsl | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| - name: "Build & Test" | |
| env: | |
| CPR_BUILD_TESTS: ON | |
| CPR_BUILD_TESTS_SSL: OFF | |
| CPR_USE_SYSTEM_LIB_PSL: ON | |
| uses: ashutoshvarma/action-cmake-build@master | |
| with: | |
| build-dir: ${{ github.workspace }}/build | |
| source-dir: ${{ github.workspace }} | |
| cc: clang | |
| cxx: clang++ | |
| build-type: ${{ matrix.buildType }} | |
| run-test: true | |
| ctest-options: ${{ env.CTEST_OPTIONS }} | |
| macos-clang-darwinssl: | |
| runs-on: macos-latest | |
| steps: | |
| - name: Install libpsl | |
| run: brew install libpsl | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| - name: "Build & Test" | |
| env: | |
| CPR_BUILD_TESTS: ON | |
| CPR_BUILD_TESTS_SSL: OFF | |
| CPR_FORCE_DARWINSSL_BACKEND: ON | |
| CPR_USE_SYSTEM_LIB_PSL: ON | |
| uses: ashutoshvarma/action-cmake-build@master | |
| with: | |
| build-dir: ${{ github.workspace }}/build | |
| source-dir: ${{ github.workspace }} | |
| cc: clang | |
| cxx: clang++ | |
| build-type: Release | |
| run-test: true | |
| ctest-options: ${{ env.CTEST_OPTIONS }} | |
| macos-clang-openssl: | |
| runs-on: macos-latest | |
| steps: | |
| - name: Install OpenSSL | |
| run: brew install openssl | |
| - name: Install libpsl | |
| run: brew install libpsl | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| - name: "Build & Test" | |
| env: | |
| CPR_BUILD_TESTS: ON | |
| CPR_BUILD_TESTS_SSL: ON | |
| CPR_FORCE_OPENSSL_BACKEND: ON | |
| CPR_USE_SYSTEM_LIB_PSL: ON | |
| OPENSSL_ROOT_DIR: "${{ env.MACOS_OPENSSL_ROOT_DIR }}" | |
| OPENSSL_LIBRARIES: "${{ env.MACOS_OPENSSL_ROOT_DIR }}/lib" | |
| LDFLAGS: "-L${{ env.MACOS_OPENSSL_ROOT_DIR }}/lib" | |
| CPPFLAGS: "-I${{ env.MACOS_OPENSSL_ROOT_DIR }}/include" | |
| PKG_CONFIG_PATH: "${{ env.MACOS_OPENSSL_ROOT_DIR }}/lib/pkgconfig" | |
| uses: ashutoshvarma/action-cmake-build@master | |
| with: | |
| build-dir: ${{ github.workspace }}/build | |
| source-dir: ${{ github.workspace }} | |
| cc: clang | |
| cxx: clang++ | |
| build-type: Release | |
| run-test: true | |
| ctest-options: ${{ env.CTEST_OPTIONS }} | |
| macos-clang-openssl-boost: | |
| runs-on: macos-latest | |
| steps: | |
| - name: Install Boost | |
| run: brew install boost | |
| - name: Install OpenSSL | |
| run: brew install openssl | |
| - name: Install libpsl | |
| run: brew install libpsl | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| - name: "Build & Test" | |
| env: | |
| CPR_BUILD_TESTS: ON | |
| CPR_BUILD_TESTS_SSL: ON | |
| CPR_FORCE_OPENSSL_BACKEND: ON | |
| CPR_USE_BOOST_FILESYSTEM: ON | |
| CPR_USE_SYSTEM_LIB_PSL: ON | |
| OPENSSL_ROOT_DIR: "${{ env.MACOS_OPENSSL_ROOT_DIR }}" | |
| OPENSSL_LIBRARIES: "${{ env.MACOS_OPENSSL_ROOT_DIR }}/lib" | |
| LDFLAGS: "-L${{ env.MACOS_OPENSSL_ROOT_DIR }}/lib" | |
| CPPFLAGS: "-I${{ env.MACOS_OPENSSL_ROOT_DIR }}/include" | |
| PKG_CONFIG_PATH: "${{ env.MACOS_OPENSSL_ROOT_DIR }}/lib/pkgconfig" | |
| uses: ashutoshvarma/action-cmake-build@master | |
| with: | |
| build-dir: ${{ github.workspace }}/build | |
| source-dir: ${{ github.workspace }} | |
| cc: clang | |
| cxx: clang++ | |
| build-type: Release | |
| run-test: true | |
| ctest-options: ${{ env.CTEST_OPTIONS }} |