WIP reduced matrix combinations #21
Workflow file for this run
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 | |
on: | |
push: | |
branches: [ main, dev, ci_testing, experiments ] | |
pull_request: | |
branches: [ main, dev ] | |
env: | |
llvm_version: 18 | |
jobs: | |
build-linux: | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
line_width: [80, 100] | |
indent: ["4", "t"] | |
steps: | |
- name: Checkout c3tools | |
uses: actions/checkout@v4 | |
- name: Checkout c3c compiler source | |
uses: actions/checkout@v4 | |
with: | |
repository: c3lang/c3c | |
path: c3c | |
- name: Setup environment | |
run: | | |
echo "$PWD/c3c/build" >> "$GITHUB_PATH" | |
echo "PATH: $PATH" | |
git config --global user.email "ci@c3tools.com" | |
git config --global user.name "c3tools CI" | |
- name: Install common deps | |
run: | | |
sudo apt-get install zlib1g zlib1g-dev python3 ninja-build curl | |
- name: Install Clang ${{env.llvm_version}} | |
run: | | |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - | |
sudo add-apt-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-${{env.llvm_version}} main" | |
sudo apt-get update | |
sudo apt-get install -y -t llvm-toolchain-focal-${{env.llvm_version}} libpolly-${{env.llvm_version}}-dev \ | |
clang-${{env.llvm_version}} llvm-${{env.llvm_version}} llvm-${{env.llvm_version}}-dev \ | |
lld-${{env.llvm_version}} liblld-${{env.llvm_version}}-dev | |
- name: CMake18 | |
if: env.llvm_version >= 18 && env.llvm_version != env.LLVM_DEV_VERSION | |
run: | | |
cd c3c | |
cmake -B build \ | |
-G Ninja \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DCMAKE_C_COMPILER=clang-${{env.llvm_version}} \ | |
-DCMAKE_CXX_COMPILER=clang++-${{env.llvm_version}} \ | |
-DCMAKE_LINKER=lld-link-${{env.llvm_version}} \ | |
-DCMAKE_OBJCOPY=llvm-objcopy-${{env.llvm_version}} \ | |
-DCMAKE_STRIP=llvm-strip-${{env.llvm_version}} \ | |
-DCMAKE_DLLTOOL=llvm-dlltool-${{env.llvm_version}} \ | |
-DC3_LLVM_VERSION=${{env.llvm_version}}.1 | |
cmake --build build | |
- name: c3c compile and run | |
run: | | |
cd c3c/resources | |
../build/c3c compile examples/base64.c3 | |
../build/c3c compile-run examples/args.c3 -- foo -bar "baz baz" | |
- name: c3c unit tests | |
run: | | |
cd c3c/test | |
../build/c3c compile-test unit | |
- name: c3tools unit tests | |
run: | | |
c3c --trust=full build c3fmt | |
c3c --trust=full test | |
- name: c3fmt c3tools | |
run: | | |
find lib/ | grep ".c3$" | xargs -I{} ./build/c3fmt -w ${{ matrix.line_width }} -i ${{ matrix.indent }} {} | |
echo "Checking if any changes after formatting" | |
git add lib/ && git diff --quiet && git diff --cached | head | |
git commit -m "CI commit after formatting" | |
- name: c3tools unit tests after formatting | |
run: | | |
c3c --trust=full test | |
- name: c3fmt c3tools (double) | |
run: | | |
find lib/ | grep ".c3$" | xargs -I{} ./build/c3fmt -w ${{ matrix.line_width }} -i ${{ matrix.indent }} {} | |
echo "Checking if any changes after formatting (must be the same!)" | |
git diff --quiet | |
- name: c3tools unit tests after (double) formatting | |
run: | | |
c3c --trust=full test | |
- name: c3fmt stdlib | |
run: | | |
find c3c/lib/ | grep ".c3$" | xargs -I{} ./build/c3fmt -w ${{ matrix.line_width }} -i ${{ matrix.indent }} {} | |
cd c3c/ | |
echo "Checking if any changes in files" | |
git add . && git diff --quiet && git diff --cached | head | |
git commit -m "CI commit after formatting" | |
- name: c3c unit tests on formatted stdlib | |
run: | | |
cd c3c/test | |
../build/c3c compile-test unit | |
- name: c3fmt stdlib (double) | |
run: | | |
find c3c/lib/ | grep ".c3$" | xargs -I{} ./build/c3fmt -w ${{ matrix.line_width }} -i ${{ matrix.indent }} {} | |
cd c3c/ | |
echo "Checking if any changes after formatting (must be the same!)" | |
git diff --quiet | |
- name: c3c unit tests on formatted stdlib (double) | |
run: | | |
cd c3c/test | |
../build/c3c compile-test unit | |