scan.h: fixed Manual indexing example #495
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: Linux | |
on: | |
push: | |
branches: | |
- master | |
- v*/dev | |
- ci/* | |
paths: | |
- '.github/workflows/linux.yml' | |
- 'benchmark/**' | |
- 'cmake/**' | |
- 'examples/**' | |
- 'include/**' | |
- 'src/**' | |
- 'tests/**' | |
- '**/CMakeLists.txt' | |
pull_request: | |
branches: | |
- master | |
- v*/dev | |
- ci/* | |
paths: | |
- '.github/workflows/linux.yml' | |
- 'benchmark/**' | |
- 'cmake/**' | |
- 'examples/**' | |
- 'include/**' | |
- 'src/**' | |
- 'tests/**' | |
- '**/CMakeLists.txt' | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref_name }}-${{ github.ref_type == 'branch' && github.sha }}-${{ github.event_name == 'workflow_dispatch' }}-${{ github.event_name == 'schedule' }}-${{ github.event.schedule }} | |
cancel-in-progress: true | |
env: | |
APT_INSTALL: | | |
sudo apt-get install | |
-yq --no-install-suggests --no-install-recommends | |
--allow-unauthenticated --allow-downgrades --allow-change-held-packages | |
CCACHE_ABSSTDERR: true | |
CCACHE_COMPRESS: true | |
CCACHE_COMPRESSLEVEL: 6 | |
CCACHE_DIR: "/tmp/ccache" | |
CCACHE_MAXSIZE: 50M | |
CCACHE_NOHASHDIR: true | |
CCACHE_SLOPPINESS: "pch_defines,time_macros" | |
CCACHE_UNIFY: true | |
DEBIAN_FRONTEND: noninteractive | |
jobs: | |
ubuntu: | |
runs-on: ubuntu-${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ 22.04, 20.04 ] | |
cxx: | |
- g++-13 | |
- g++-12 | |
- g++-11 | |
- g++-10 | |
- g++-9 | |
- g++-8 | |
- g++-7 | |
# - clang++-18 | |
# - clang++-17 | |
# - clang++-16 | |
# - clang++-15 | |
# - clang++-14 | |
# - clang++-13 | |
# - clang++-12 | |
# - clang++-11 | |
# - clang++-10 | |
# - clang++-9 | |
# - clang++-8 | |
# - clang++-7 | |
# - clang++-6.0 | |
std: [ 17 ] | |
include: | |
# Explicitly pick out pre-installed clang + os pairs -- apt.llvm.org likes to fail on us | |
- os: 24.04 | |
cxx: clang++-18 | |
std: 17 | |
- os: 24.04 | |
cxx: clang++-17 | |
std: 17 | |
- os: 24.04 | |
cxx: clang++-16 | |
std: 17 | |
- os: 22.04 | |
cxx: clang++-15 | |
std: 17 | |
- os: 22.04 | |
cxx: clang++-14 | |
std: 17 | |
- os: 22.04 | |
cxx: clang++-13 | |
std: 17 | |
- os: 20.04 | |
cxx: clang++-12 | |
std: 17 | |
- os: 20.04 | |
cxx: clang++-11 | |
std: 17 | |
- os: 20.04 | |
cxx: clang++-10 | |
std: 17 | |
# clang 8 from apt | |
- os: 20.04 | |
cxx: clang++-8 | |
std: 17 | |
# newest pre-installed gcc on 24.04, including C++20 and C++23 | |
- os: 24.04 | |
cxx: g++-14 | |
std: 17 | |
- os: 24.04 | |
cxx: g++-14 | |
std: 20 | |
- os: 24.04 | |
cxx: g++-14 | |
std: 23 | |
# newest pre-installed clang on 24.04, including C++20 and C++23 | |
- os: 24.04 | |
cxx: clang++-18 | |
std: 17 | |
- os: 24.04 | |
cxx: clang++-18 | |
std: 20 | |
- os: 24.04 | |
cxx: clang++-18 | |
std: 23 | |
exclude: | |
# gcc 8, clang 12, and before aren't available on 22.04 | |
- cxx: g++-8 | |
os: 22.04 | |
- cxx: g++-7 | |
os: 22.04 | |
# gcc 12 isn't available on 20.04 (11 and 13 are in ubuntu-toolchain-r) | |
- cxx: g++-12 | |
os: 20.04 | |
env: | |
CXX: ${{ matrix.cxx }} | |
OS: ${{ matrix.os }} | |
CMAKE_C_COMPILER_LAUNCHER: ccache | |
CMAKE_CXX_COMPILER_LAUNCHER: ccache | |
steps: | |
- name: Setup CMake and Ninja | |
uses: lukka/get-cmake@latest | |
- name: Create Build Environment | |
run: | | |
mkdir ${{ runner.workspace }}/deps | |
mkdir ${{ runner.workspace }}/build | |
sudo locale-gen en_US.UTF-8 | |
sudo locale-gen fi_FI.UTF-8 | |
sudo update-locale | |
sudo locale -a | |
- name: Install dependencies | |
working-directory: ${{ runner.workspace }}/deps | |
run: | | |
sudo add-apt-repository ppa:ubuntu-toolchain-r/test | |
sudo apt-get --allow-unauthenticated -yq update | |
${APT_INSTALL} ccache | |
if [[ "${CXX}" == "g++-13" ]]; then | |
${APT_INSTALL} g++-13 | |
fi | |
if [[ "${CXX}" == "g++-12" ]]; then | |
${APT_INSTALL} g++-12 | |
fi | |
if [[ "${CXX}" == "g++-11" ]]; then | |
${APT_INSTALL} g++-11 | |
fi | |
if [[ "${CXX}" == "g++-10" ]]; then | |
${APT_INSTALL} g++-10 | |
fi | |
if [[ "${CXX}" == "g++-9" ]]; then | |
${APT_INSTALL} g++-9 | |
fi | |
if [[ "${CXX}" == "g++-8" ]]; then | |
${APT_INSTALL} g++-8 | |
fi | |
if [[ "${CXX}" == "g++-7" ]]; then | |
${APT_INSTALL} g++-7 | |
fi | |
if [[ "${CXX}" == "clang++-8" ]]; then | |
${APT_INSTALL} clang-8 | |
fi | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Load ccache | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.CCACHE_DIR }} | |
key: ccache-${{ github.workflow }}-ubuntu${{ matrix.os }}-${{ matrix.cxx }}-std${{ matrix.std }}-${{ github.sha }} | |
restore-keys: | | |
ccache-${{ github.workflow }}-ubuntu${{ matrix.os }}-${{ matrix.cxx }}-std${{ matrix.std }}-${{ github.ref }} | |
ccache-${{ github.workflow }}-ubuntu${{ matrix.os }}-${{ matrix.cxx }}-std${{ matrix.std }}-${{ github.base_ref }} | |
ccache-${{ github.workflow }}-ubuntu${{ matrix.os }}-${{ matrix.cxx }}-std${{ matrix.std }} | |
- name: Setup ccache | |
run: | | |
ccache --version | |
ccache --zero-stats | |
ccache --show-stats | |
ccache --show-config | |
- name: Run CMake | |
working-directory: ${{ runner.workspace }}/build | |
run: | | |
cmake -G Ninja -DSCN_CI=ON -DSCN_TESTS_LOCALIZED=ON \ | |
-DCMAKE_CXX_STANDARD=${{ matrix.std }} \ | |
$GITHUB_WORKSPACE | |
- name: Build | |
working-directory: ${{ runner.workspace }}/build | |
run: cmake --build . -- -k 0 | |
- name: Show ccache stats | |
run: | | |
ccache --show-stats | |
- name: Test | |
working-directory: ${{ runner.workspace }}/build | |
run: ctest --output-on-failure | |
libcxx: | |
runs-on: ubuntu-${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
# 24.04 doesn't have libc++ (yet?) | |
os: [ 22.04, 20.04 ] | |
std: [ 17 ] | |
include: | |
- os: 22.04 | |
std: 20 | |
- os: 22.04 | |
std: 23 | |
exclude: | |
# Fails to configure (CMake) google benchmark | |
- os: 20.04 | |
env: | |
CC: clang | |
CXX: clang++ | |
OS: ${{ matrix.os }} | |
CMAKE_C_COMPILER_LAUNCHER: ccache | |
CMAKE_CXX_COMPILER_LAUNCHER: ccache | |
steps: | |
- name: Setup CMake and Ninja | |
uses: lukka/get-cmake@latest | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Create Build Environment | |
run: | | |
${APT_INSTALL} ccache | |
mkdir ${{ runner.workspace }}/build | |
sudo locale-gen en_US.UTF-8 | |
sudo locale-gen fi_FI.UTF-8 | |
sudo update-locale | |
sudo locale -a | |
- name: Load ccache | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.CCACHE_DIR }} | |
key: ccache-${{ github.workflow }}-ubuntu${{ matrix.os }}-${{ env.CXX }}-std${{ matrix.std }}-libcxx-${{ github.sha }} | |
restore-keys: | | |
ccache-${{ github.workflow }}-ubuntu${{ matrix.os }}-${{ env.CXX }}-std${{ matrix.std }}-libcxx-${{ github.ref }} | |
ccache-${{ github.workflow }}-ubuntu${{ matrix.os }}-${{ env.CXX }}-std${{ matrix.std }}-libcxx-${{ github.base_ref }} | |
ccache-${{ github.workflow }}-ubuntu${{ matrix.os }}-${{ env.CXX }}-std${{ matrix.std }}-libcxx | |
- name: Setup ccache | |
run: | | |
ccache --version | |
ccache --zero-stats | |
ccache --show-stats | |
ccache --show-config | |
- name: Run CMake | |
working-directory: ${{ runner.workspace }}/build | |
run: | | |
cmake -G Ninja -DSCN_CI=ON -DSCN_TESTS_LOCALIZED=ON \ | |
-DCMAKE_CXX_STANDARD=${{ matrix.std }} \ | |
-DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_EXE_LINKER_FLAGS="-stdlib=libc++ -lc++abi" \ | |
$GITHUB_WORKSPACE | |
- name: Build | |
working-directory: ${{ runner.workspace }}/build | |
run: cmake --build . -- -k 0 | |
- name: Show ccache stats | |
run: | | |
ccache --show-stats | |
- name: Test | |
working-directory: ${{ runner.workspace }}/build | |
run: ctest --output-on-failure | |
alpine: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Load ccache | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.CCACHE_DIR }} | |
key: ccache-${{ github.workflow }}-alpine-${{ github.sha }} | |
restore-keys: | | |
ccache-${{ github.workflow }}-alpine-${{ github.ref }} | |
ccache-${{ github.workflow }}-alpine-${{ github.base_ref }} | |
ccache-${{ github.workflow }}-alpine | |
- name: Start docker | |
run: | | |
docker run -w /src -dit --name alpine \ | |
-v $PWD:/src \ | |
-v ${{ env.CCACHE_DIR }}:${{ env.CCACHE_DIR }} \ | |
-e CCACHE_ABSSTDERR=${{ env.ABSTDERR }} \ | |
-e CCACHE_COMPRESS=${{ env.CCACHE_COMPRESS }} \ | |
-e CCACHE_DIR=${{ env.CCACHE_DIR }} \ | |
-e CCACHE_MAXSIZE=${{ env.CCACHE_MAXSIZE }} \ | |
-e CCACHE_NOHASHDIR=${{ env.CCACHE_NOHASHDIR }} \ | |
-e CCACHE_SLOPPINESS=${{ env.CCACHE_SLOPPINESS }} \ | |
-e CCACHE_UNIFY=${{ env.CCACHE_UNIFY }} \ | |
-e CMAKE_C_COMPILER_LAUNCHER=ccache \ | |
-e CMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
alpine:3.18 | |
echo 'docker exec alpine "$@";' > alpine-run.sh | |
chmod +x alpine-run.sh | |
- name: Install dependencies | |
run: | | |
./alpine-run.sh apk update | |
./alpine-run.sh apk add build-base cmake g++ linux-headers git bash ninja ccache python3 | |
- name: Setup ccache | |
run: | | |
./alpine-run.sh ccache --version | |
./alpine-run.sh ccache --zero-stats | |
./alpine-run.sh ccache --show-stats | |
./alpine-run.sh ccache --show-config | |
- name: Run CMake | |
run: | | |
./alpine-run.sh cmake -G Ninja -S /src -B build -DSCN_CI=ON | |
- name: Build | |
run: | | |
./alpine-run.sh cmake --build build -- -k 0 | |
./alpine-run.sh ccache --show-stats | |
- name: Test | |
run: | | |
./alpine-run.sh bash -c "cd build && ctest --output-on-failure" | |
asan-and-ubsan: | |
runs-on: ubuntu-24.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
std: [ 17, 20 ] | |
cxx: [ clang++-16 ] | |
env: | |
CXX: ${{ matrix.cxx }} | |
CMAKE_C_COMPILER_LAUNCHER: ccache | |
CMAKE_CXX_COMPILER_LAUNCHER: ccache | |
steps: | |
- name: Setup CMake and Ninja | |
uses: lukka/get-cmake@latest | |
- name: Create Build Environment | |
run: | | |
sudo locale-gen en_US.UTF-8 | |
sudo locale-gen fi_FI.UTF-8 | |
sudo update-locale | |
sudo locale -a | |
${APT_INSTALL} ccache | |
mkdir ${{ runner.workspace }}/build | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Load ccache | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.CCACHE_DIR }} | |
key: ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ matrix.std }}-sanitize-${{ github.sha }} | |
restore-keys: | | |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ matrix.std }}-sanitize-${{ github.ref }} | |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ matrix.std }}-sanitize-${{ github.base_ref }} | |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ matrix.std }}-sanitize | |
- name: Setup ccache | |
run: | | |
ccache --version | |
ccache --zero-stats | |
ccache --show-stats | |
ccache --show-config | |
- name: Run CMake | |
working-directory: ${{ runner.workspace }}/build | |
run: | | |
cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug \ | |
-DCMAKE_CXX_STANDARD=${{ matrix.std }} \ | |
-DSCN_CI=ON -DSCN_TESTS_LOCALIZED=ON \ | |
-DSCN_USE_ASAN=ON -DSCN_USE_UBSAN=ON \ | |
$GITHUB_WORKSPACE | |
- name: Build | |
working-directory: ${{ runner.workspace }}/build | |
run: | | |
cmake --build . -- -k 0 | |
- name: Show ccache stats | |
run: | | |
ccache --show-stats | |
- name: Test | |
working-directory: ${{ runner.workspace }}/build | |
run: | | |
ctest --output-on-failure | |
install-and-consume: | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
external_deps: [ 0, 1 ] | |
env: | |
CC: gcc-11 | |
CXX: g++-11 | |
CMAKE_CXX_STANDARD: 17 | |
CMAKE_C_COMPILER_LAUNCHER: ccache | |
CMAKE_CXX_COMPILER_LAUNCHER: ccache | |
steps: | |
- name: Setup CMake and Ninja | |
uses: lukka/get-cmake@latest | |
- name: Install ccache | |
run: | | |
${APT_INSTALL} ccache | |
- name: Load ccache | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.CCACHE_DIR }} | |
key: ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-install${{ matrix.external_deps }}-${{ github.sha }} | |
restore-keys: | | |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-install${{ matrix.external_deps }}-${{ github.ref }} | |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-install${{ matrix.external_deps }}-${{ github.base_ref }} | |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-install${{ matrix.external_deps }} | |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-${{ github.sha }} | |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-${{ github.ref }} | |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-${{ github.base_ref }} | |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }} | |
- name: Setup ccache | |
run: | | |
ccache --version | |
ccache --zero-stats | |
ccache --show-stats | |
ccache --show-config | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Build fast_float | |
if: matrix.external_deps == 1 | |
run: | | |
git clone https://github.com/fastfloat/fast_float -b v6.1.1 --depth=1 | |
cd fast_float | |
mkdir build | |
cd build | |
cmake -G Ninja .. | |
cmake --build . | |
sudo cmake --build . --target install | |
- name: Build scnlib | |
run: | | |
mkdir ${{ runner.workspace }}/lib-build | |
cd ${{ runner.workspace }}/lib-build | |
if [[ ${{ matrix.external_deps }} -eq 1 ]]; then | |
cmake -G Ninja -DSCN_INSTALL=ON -DSCN_ENABLE_EXTRAS=OFF \ | |
-DSCN_USE_EXTERNAL_FAST_FLOAT=ON \ | |
$GITHUB_WORKSPACE | |
else | |
cmake -G Ninja -DSCN_INSTALL=ON -DSCN_ENABLE_EXTRAS=OFF $GITHUB_WORKSPACE | |
fi | |
cmake --build . --target scn | |
sudo cmake --build . --target install | |
- name: Build consumer | |
run: | | |
mkdir ${{ runner.workspace }}/consumer-build | |
cd ${{ runner.workspace }}/consumer-build | |
cmake $GITHUB_WORKSPACE/tests/consumer-test | |
cmake --build . | |
- name: Show ccache stats | |
run: | | |
ccache --show-stats | |
- name: Test consumer | |
working-directory: ${{ runner.workspace }}/consumer-build | |
run: | | |
output="$(echo '42' | ./scn-consumer)" | |
test "$output" -eq 42 | |
disabled-envs: | |
runs-on: ubuntu-24.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
flags: | |
- "-DSCN_DISABLE_IOSTREAM=ON" | |
- "-DSCN_DISABLE_LOCALE=ON" | |
- "-DSCN_DISABLE_REGEX=ON" | |
- "-DSCN_DISABLE_TYPE_FLOAT=ON -DSCN_DISABLE_TYPE_DOUBLE=ON -DSCN_DISABLE_TYPE_LONG_DOUBLE=ON" | |
- "-DSCN_DISABLE_FROM_CHARS=ON -DSCN_DISABLE_STRTOD=ON" | |
env: | |
CXX: g++-14 | |
CMAKE_CXX_STANDARD: 17 | |
CMAKE_C_COMPILER_LAUNCHER: ccache | |
CMAKE_CXX_COMPILER_LAUNCHER: ccache | |
steps: | |
- name: Setup CMake and Ninja | |
uses: lukka/get-cmake@latest | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Create Build Environment | |
run: | | |
mkdir ${{ runner.workspace }}/build | |
${APT_INSTALL} ccache | |
echo "${{ matrix.flags }}" > $GITHUB_WORKSPACE/flags.txt | |
- name: Load ccache | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.CCACHE_DIR }} | |
key: ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-flags${{ hashFiles('$GITHUB_WORKSPACE/flags.txt') }}-${{ github.sha }} | |
restore-keys: | | |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-flags${{ hashFiles('$GITHUB_WORKSPACE/flags.txt') }}-${{ github.ref }} | |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-flags${{ hashFiles('$GITHUB_WORKSPACE/flags.txt') }}-${{ github.base_ref }} | |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-flags${{ hashFiles('$GITHUB_WORKSPACE/flags.txt') }} | |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-${{ github.sha }} | |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-${{ github.ref }} | |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-${{ github.base_ref }} | |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }} | |
- name: Setup ccache | |
run: | | |
ccache --version | |
ccache --zero-stats | |
ccache --show-stats | |
ccache --show-config | |
- name: Run CMake | |
working-directory: ${{ runner.workspace }}/build | |
run: | | |
cmake -G Ninja -DSCN_CI=ON ${{ matrix.flags }} \ | |
$GITHUB_WORKSPACE | |
- name: Build | |
working-directory: ${{ runner.workspace }}/build | |
run: cmake --build . --target scn -- -k 0 | |
- name: Show ccache stats | |
run: | | |
ccache --show-stats | |
regex-backends: | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
#- engine: std | |
- engine: Boost | |
icu: OFF | |
- engine: Boost | |
icu: ON | |
# Disabled due to re2 building trouble | |
#- engine: re2 | |
env: | |
CC: gcc-11 | |
CXX: g++-11 | |
CMAKE_CXX_STANDARD: 17 | |
CMAKE_C_COMPILER_LAUNCHER: ccache | |
CMAKE_CXX_COMPILER_LAUNCHER: ccache | |
steps: | |
- name: Setup CMake and Ninja | |
uses: lukka/get-cmake@latest | |
- name: Install ccache | |
run: | | |
${APT_INSTALL} ccache | |
- name: Install ICU | |
if: matrix.icu == 'ON' | |
run: | | |
${APT_INSTALL} libicu-dev | |
- name: Install Boost | |
if: matrix.engine == 'Boost' | |
run: | | |
${APT_INSTALL} libboost-regex-dev | |
- name: Install re2 | |
if: matrix.engine == 're2' | |
run: | | |
sudo apt-get remove -y libre2-dev | |
git clone https://github.com/abseil/abseil-cpp -b 20240116.1 --depth=1 | |
cd abseil-cpp | |
mkdir build | |
cd build | |
cmake -G Ninja -DABSL_BUILD_TESTING=OFF -DABSL_ENABLE_INSTALL=ON .. | |
sudo cmake --build . --target install | |
cd ../.. | |
git clone https://github.com/google/re2 -b 2024-04-01 --depth=1 | |
cd re2 | |
mkdir build | |
cd build | |
cmake -G Ninja .. | |
cmake --build . | |
sudo cmake --build . --target install | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Load ccache | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.CCACHE_DIR }} | |
key: ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-regex${{ matrix.engine }}-icu${{ matrix.icu }}-${{ github.sha }} | |
restore-keys: | | |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-regex${{ matrix.engine }}-icu${{ matrix.icu }}-${{ github.ref }} | |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-regex${{ matrix.engine }}-icu${{ matrix.icu }}-${{ github.base_ref }} | |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-regex${{ matrix.engine }}-icu${{ matrix.icu }} | |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-${{ github.sha }} | |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-${{ github.ref }} | |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-${{ github.base_ref }} | |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }} | |
- name: Setup ccache | |
run: | | |
ccache --version | |
ccache --zero-stats | |
ccache --show-stats | |
ccache --show-config | |
- name: Run CMake | |
run: | | |
mkdir ${{ runner.workspace }}/build | |
cd ${{ runner.workspace }}/build | |
if [[ ${{ matrix.engine }} == "Boost" ]]; then | |
icu_flag="-DSCN_REGEX_BOOST_USE_ICU=${{ matrix.icu }}" | |
fi | |
cmake -G Ninja -DSCN_CI=ON -DSCN_REGEX_BACKEND=${{ matrix.engine }} \ | |
$icu_flag \ | |
$GITHUB_WORKSPACE | |
- name: Build | |
working-directory: ${{ runner.workspace }}/build | |
run: cmake --build . -- -k 0 | |
- name: Show ccache stats | |
run: | | |
ccache --show-stats | |
- name: Test | |
working-directory: ${{ runner.workspace }}/build | |
run: ctest --output-on-failure | |
emscripten: | |
runs-on: ubuntu-22.04 | |
env: | |
CMAKE_CXX_STANDARD: 17 | |
CMAKE_C_COMPILER_LAUNCHER: ccache | |
CMAKE_CXX_COMPILER_LAUNCHER: ccache | |
steps: | |
- name: Setup CMake and Ninja | |
uses: lukka/get-cmake@latest | |
- name: Install ccache | |
run: | | |
${APT_INSTALL} ccache | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Load ccache | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.CCACHE_DIR }} | |
key: ccache-${{ github.workflow }}-emscripten-${{ github.sha }} | |
restore-keys: | | |
ccache-${{ github.workflow }}-emscripten-${{ github.ref }} | |
ccache-${{ github.workflow }}-emscripten-${{ github.base_ref }} | |
ccache-${{ github.workflow }}-emscripten | |
- name: Setup ccache | |
run: | | |
ccache --version | |
ccache --zero-stats | |
ccache --show-stats | |
ccache --show-config | |
- name: Setup EMSDK | |
uses: mymindstorm/setup-emsdk@v14 | |
with: | |
version: latest | |
actions-cache-folder: 'emsdk-cache' | |
- name: Run CMake | |
run: | | |
mkdir ${{ runner.workspace }}/build | |
cd ${{ runner.workspace }}/build | |
emcmake cmake -DSCN_CI=ON -DSCN_BENCHMARKS=OFF $GITHUB_WORKSPACE | |
- name: Build | |
working-directory: ${{ runner.workspace }}/build | |
run: | | |
emmake cmake --build . --parallel |