Skip to content

WIP reduced matrix combinations #21

WIP reduced matrix combinations

WIP reduced matrix combinations #21

Workflow file for this run

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