Fix LLVM 20 compilation #6053
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: [ master, dev, ci_testing, experiments ] | |
pull_request: | |
branches: [ master, dev ] | |
env: | |
LLVM_RELEASE_VERSION_WINDOWS: 18 | |
LLVM_RELEASE_VERSION_MAC: 17 | |
LLVM_RELEASE_VERSION_LINUX: 17 | |
LLVM_RELEASE_VERSION_UBUNTU20: 17 | |
LLVM_DEV_VERSION: 20 | |
jobs: | |
build-msvc: | |
runs-on: windows-latest | |
strategy: | |
# Don't abort runners if a single one fails | |
fail-fast: false | |
matrix: | |
build_type: [ Release, Debug ] | |
defaults: | |
run: | |
shell: cmd | |
steps: | |
- uses: actions/checkout@v4 | |
- name: CMake | |
run: | | |
cmake -B build -G "Visual Studio 17 2022" -A x64 -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} | |
cmake --build build --config ${{ matrix.build_type }} | |
- name: Compile and run some examples | |
run: | | |
cd resources | |
..\build\${{ matrix.build_type }}\c3c.exe compile-run -L C:\ --print-linking examples\hello_world_many.c3 | |
..\build\${{ matrix.build_type }}\c3c.exe compile-run --print-linking examples\time.c3 | |
..\build\${{ matrix.build_type }}\c3c.exe compile-run --print-linking examples\fannkuch-redux.c3 | |
..\build\${{ matrix.build_type }}\c3c.exe compile-run examples\contextfree\boolerr.c3 | |
..\build\${{ matrix.build_type }}\c3c.exe compile-run examples\ls.c3 | |
..\build\${{ matrix.build_type }}\c3c.exe compile-run examples\load_world.c3 | |
..\build\${{ matrix.build_type }}\c3c.exe compile-run examples\process.c3 | |
..\build\${{ matrix.build_type }}\c3c.exe compile-run examples\args.c3 -- foo -bar "baz baz" | |
..\build\${{ matrix.build_type }}\c3c.exe compile --no-entry --test -g -O0 --threads 1 --target macos-x64 examples\constants.c3 | |
..\build\${{ matrix.build_type }}\c3c.exe compile-run msvc_stack.c3 | |
- name: Build testproject | |
run: | | |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64 | |
cd resources/testproject | |
..\..\build\${{ matrix.build_type }}\c3c.exe --debug-log --emit-llvm run hello_world_win32 | |
dir build\llvm_ir | |
..\..\build\${{ matrix.build_type }}\c3c.exe clean | |
dir build\llvm_ir | |
- name: Build testproject lib | |
run: | | |
cd resources/testproject | |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64 | |
..\..\build\${{ matrix.build_type }}\c3c.exe --debug-log build hello_world_win32_lib | |
- name: Compile and run dynlib-test | |
run: | | |
cd resources/examples/dynlib-test | |
..\..\..\build\${{ matrix.build_type }}\c3c.exe dynamic-lib add.c3 | |
..\..\..\build\${{ matrix.build_type }}\c3c.exe compile-run test.c3 -l ./add.lib | |
- name: Vendor-fetch | |
run: | | |
build\${{ matrix.build_type }}\c3c.exe vendor-fetch raylib5 | |
- name: Try raylib5 | |
run: | | |
cd resources | |
..\build\${{ matrix.build_type }}\c3c.exe vendor-fetch raylib5 | |
..\build\${{ matrix.build_type }}\c3c.exe compile --lib raylib5 --print-linking examples\raylib\raylib_arkanoid.c3 | |
..\build\${{ matrix.build_type }}\c3c.exe compile --lib raylib5 --print-linking examples\raylib\raylib_snake.c3 | |
..\build\${{ matrix.build_type }}\c3c.exe compile --lib raylib5 --print-linking examples\raylib\raylib_tetris.c3 | |
- name: run compiler tests | |
run: | | |
cd test | |
python3.exe src/tester.py ..\build\${{ matrix.build_type }}\c3c.exe test_suite/ | |
- name: Compile run unit tests | |
run: | | |
cd test | |
..\build\${{ matrix.build_type }}\c3c.exe compile-test unit -O1 | |
- name: Test python script | |
run: | | |
py msvc_build_libraries.py --accept-license | |
dir msvc_sdk | |
- name: upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: c3-windows-${{ matrix.build_type }} | |
path: | | |
build\${{ matrix.build_type }}\c3c.exe | |
build\${{ matrix.build_type }}\c3c_rt | |
build-msys2-mingw: | |
runs-on: windows-latest | |
# if: ${{ false }} | |
strategy: | |
# Don't abort runners if a single one fails | |
fail-fast: false | |
matrix: | |
build_type: [Release, Debug] | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: msys2/setup-msys2@v2 | |
with: | |
msystem: MINGW64 | |
update: true | |
install: git binutils mingw-w64-x86_64-clang mingw-w64-x86_64-ninja mingw-w64-x86_64-cmake mingw-w64-x86_64-toolchain mingw-w64-x86_64-python | |
- shell: msys2 {0} | |
run: | | |
pacman --noconfirm -U https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-llvm-18.1.8-1-any.pkg.tar.zst | |
pacman --noconfirm -U https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-lld-18.1.8-1-any.pkg.tar.zst | |
- name: CMake | |
run: | | |
cmake -B build -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} | |
cmake --build build | |
- name: Compile and run some examples | |
run: | | |
cd resources | |
../build/c3c compile-run --print-linking examples/hello_world_many.c3 | |
../build/c3c compile-run --print-linking examples/time.c3 | |
../build/c3c compile-run --print-linking examples/fannkuch-redux.c3 | |
../build/c3c compile-run --print-linking examples/contextfree/boolerr.c3 | |
../build/c3c compile-run --print-linking examples/load_world.c3 | |
../build/c3c compile-run --print-linking examples/args.c3 -- foo -bar "baz baz" | |
../build/c3c compile --no-entry --test -g -O0 --threads 1 --target macos-x64 examples/constants.c3 | |
- name: Build testproject | |
run: | | |
cd resources/testproject | |
../../build/c3c run --debug-log | |
- name: Vendor-fetch | |
run: | | |
./build/c3c vendor-fetch raylib5 | |
- name: Build testproject lib | |
run: | | |
cd resources/testproject | |
../../build/c3c build hello_world_lib --cc cc --debug-log | |
- name: run compiler tests | |
run: | | |
cd test | |
python3 src/tester.py ../build/c3c.exe test_suite/ | |
build-msys2-clang: | |
runs-on: windows-latest | |
#if: ${{ false }} | |
strategy: | |
# Don't abort runners if a single one fails | |
fail-fast: false | |
matrix: | |
build_type: [Release, Debug] | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: msys2/setup-msys2@v2 | |
with: | |
msystem: CLANG64 | |
update: false | |
install: git binutils mingw-w64-clang-x86_64-cmake mingw-w64-clang-x86_64-toolchain mingw-w64-clang-x86_64-python | |
- name: CMake | |
run: | | |
cmake -B build -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} | |
cmake --build build | |
- name: Compile and run some examples | |
run: | | |
cd resources | |
../build/c3c compile-run examples/hello_world_many.c3 | |
../build/c3c compile-run examples/time.c3 | |
../build/c3c compile-run examples/fannkuch-redux.c3 | |
../build/c3c compile-run examples/contextfree/boolerr.c3 | |
../build/c3c compile-run examples/load_world.c3 | |
../build/c3c compile-run examples/args.c3 -- foo -bar "baz baz" | |
../build/c3c compile --no-entry --test -g -O0 --threads 1 --target macos-x64 examples/constants.c3 | |
- name: Build testproject | |
run: | | |
cd resources/testproject | |
../../build/c3c run --debug-log | |
- name: Build testproject lib | |
run: | | |
cd resources/testproject | |
../../build/c3c build hello_world_lib --debug-log | |
- name: run compiler tests | |
run: | | |
cd test | |
python3 src/tester.py ../build/c3c.exe test_suite/ | |
build-linux: | |
runs-on: ubuntu-latest | |
strategy: | |
# Don't abort runners if a single one fails | |
fail-fast: false | |
matrix: | |
build_type: [Release, Debug] | |
llvm_version: [17, 18, 19, 20] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install common deps | |
run: | | |
sudo apt-get install zlib1g zlib1g-dev python3 ninja-build curl | |
- name: Install Clang ${{matrix.llvm_version}} | |
run: | | |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - | |
if [[ "${{matrix.llvm_version}}" < 18 ]]; then | |
sudo add-apt-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-${{matrix.llvm_version}} main" | |
sudo apt-get update | |
sudo apt-get install -y -t llvm-toolchain-focal-${{matrix.llvm_version}} libpolly-${{matrix.llvm_version}}-dev \ | |
clang-${{matrix.llvm_version}} llvm-${{matrix.llvm_version}} llvm-${{matrix.llvm_version}}-dev \ | |
lld-${{matrix.llvm_version}} liblld-${{matrix.llvm_version}}-dev libmlir-${{matrix.llvm_version}} \ | |
libmlir-${{matrix.llvm_version}}-dev mlir-${{matrix.llvm_version}}-tools | |
else | |
if [[ "${{matrix.llvm_version}}" < "${{env.LLVM_DEV_VERSION}}" ]]; then | |
sudo add-apt-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-${{matrix.llvm_version}} main" | |
sudo apt-get update | |
sudo apt-get install -y -t llvm-toolchain-focal-${{matrix.llvm_version}} libpolly-${{matrix.llvm_version}}-dev \ | |
clang-${{matrix.llvm_version}} llvm-${{matrix.llvm_version}} llvm-${{matrix.llvm_version}}-dev \ | |
lld-${{matrix.llvm_version}} liblld-${{matrix.llvm_version}}-dev | |
else | |
sudo add-apt-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal main" | |
sudo apt-get install -y -t llvm-toolchain-focal libpolly-${{matrix.llvm_version}}-dev \ | |
clang-${{matrix.llvm_version}} llvm-${{matrix.llvm_version}} llvm-${{matrix.llvm_version}}-dev \ | |
lld-${{matrix.llvm_version}} liblld-${{matrix.llvm_version}}-dev | |
fi | |
fi | |
- name: CMake | |
if: matrix.llvm_version < 18 || matrix.llvm_version == env.LLVM_DEV_VERSION | |
run: | | |
cmake -B build \ | |
-G Ninja \ | |
-DCMAKE_BUILD_TYPE=${{matrix.build_type}} \ | |
-DCMAKE_C_COMPILER=clang-${{matrix.llvm_version}} \ | |
-DCMAKE_CXX_COMPILER=clang++-${{matrix.llvm_version}} \ | |
-DCMAKE_LINKER=lld-link-${{matrix.llvm_version}} \ | |
-DCMAKE_OBJCOPY=llvm-objcopy-${{matrix.llvm_version}} \ | |
-DCMAKE_STRIP=llvm-strip-${{matrix.llvm_version}} \ | |
-DCMAKE_DLLTOOL=llvm-dlltool-${{matrix.llvm_version}} \ | |
-DC3_LLVM_VERSION=${{matrix.llvm_version}} | |
cmake --build build | |
- name: CMake18 | |
if: matrix.llvm_version >= 18 && matrix.llvm_version != env.LLVM_DEV_VERSION | |
run: | | |
cmake -B build \ | |
-G Ninja \ | |
-DCMAKE_BUILD_TYPE=${{matrix.build_type}} \ | |
-DCMAKE_C_COMPILER=clang-${{matrix.llvm_version}} \ | |
-DCMAKE_CXX_COMPILER=clang++-${{matrix.llvm_version}} \ | |
-DCMAKE_LINKER=lld-link-${{matrix.llvm_version}} \ | |
-DCMAKE_OBJCOPY=llvm-objcopy-${{matrix.llvm_version}} \ | |
-DCMAKE_STRIP=llvm-strip-${{matrix.llvm_version}} \ | |
-DCMAKE_DLLTOOL=llvm-dlltool-${{matrix.llvm_version}} \ | |
-DC3_LLVM_VERSION=${{matrix.llvm_version}}.1 | |
cmake --build build | |
- name: Compile and run some examples | |
run: | | |
cd resources | |
../build/c3c compile examples/base64.c3 | |
../build/c3c compile examples/binarydigits.c3 | |
../build/c3c compile examples/brainfk.c3 | |
../build/c3c compile examples/factorial_macro.c3 | |
../build/c3c compile examples/fasta.c3 | |
../build/c3c compile examples/gameoflife.c3 | |
../build/c3c compile examples/hash.c3 | |
../build/c3c compile-only examples/levenshtein.c3 | |
../build/c3c compile examples/load_world.c3 | |
../build/c3c compile-only examples/map.c3 | |
../build/c3c compile examples/mandelbrot.c3 | |
../build/c3c compile examples/plus_minus.c3 | |
../build/c3c compile examples/nbodies.c3 | |
../build/c3c compile examples/spectralnorm.c3 | |
../build/c3c compile examples/swap.c3 | |
../build/c3c compile examples/contextfree/boolerr.c3 | |
../build/c3c compile examples/contextfree/dynscope.c3 | |
../build/c3c compile examples/contextfree/guess_number.c3 | |
../build/c3c compile examples/contextfree/multi.c3 | |
../build/c3c compile examples/contextfree/cleanup.c3 | |
../build/c3c compile-run examples/hello_world_many.c3 | |
../build/c3c compile-run examples/time.c3 | |
../build/c3c compile-run examples/fannkuch-redux.c3 | |
../build/c3c compile-run examples/contextfree/boolerr.c3 | |
../build/c3c compile-run examples/load_world.c3 | |
../build/c3c compile-run examples/process.c3 | |
../build/c3c compile-run examples/ls.c3 | |
../build/c3c compile-run --linker=builtin linux_stack.c3 | |
../build/c3c compile-run linux_stack.c3 | |
../build/c3c compile-run examples/args.c3 -- foo -bar "baz baz" | |
- name: Compile and run dynlib-test | |
run: | | |
cd resources/examples/dynlib-test | |
../../../build/c3c dynamic-lib add.c3 | |
mv add.so libadd.so | |
cc test.c -L. -ladd -Wl,-rpath=. | |
./a.out | |
../../../build/c3c compile-run test.c3 -L . -l add -z -Wl,-rpath=. | |
- name: Compile run unit tests | |
run: | | |
cd test | |
../build/c3c compile-test unit | |
- name: Build testproject | |
run: | | |
cd resources/testproject | |
../../build/c3c run --debug-log | |
- name: Test WASM | |
run: | | |
cd resources/testfragments | |
../../build/c3c compile --target wasm32 -g0 --no-entry -Os wasm4.c3 | |
- name: Install QEMU and Risc-V toolchain | |
run: | | |
sudo apt-get install opensbi qemu-system-misc u-boot-qemu gcc-riscv64-unknown-elf | |
- name: Compile and run Baremetal Risc-V Example | |
run: | | |
cd resources/examples/embedded/riscv-qemu | |
make C3C_PATH=../../../../build/ run | |
- name: Build testproject direct linker | |
run: | | |
cd resources/testproject | |
../../build/c3c run --debug-log --linker=builtin | |
- name: Init a library & a project | |
run: | | |
./build/c3c init-lib mylib | |
ls mylib.c3l | |
./build/c3c init myproject | |
ls myproject | |
- name: run compiler tests | |
run: | | |
cd test | |
python3 src/tester.py ../build/c3c test_suite/ | |
- name: bundle_output | |
if: matrix.llvm_version == env.LLVM_RELEASE_VERSION_LINUX | |
run: | | |
mkdir c3 | |
cp -r lib c3 | |
cp msvc_build_libraries.py c3 | |
cp build/c3c c3 | |
tar czf c3-linux-${{matrix.build_type}}.tar.gz c3 | |
- name: upload artifacts | |
if: matrix.llvm_version == env.LLVM_RELEASE_VERSION_LINUX | |
uses: actions/upload-artifact@v4 | |
with: | |
name: c3-linux-${{matrix.build_type}} | |
path: c3-linux-${{matrix.build_type}}.tar.gz | |
build-linux-ubuntu20: | |
runs-on: ubuntu-20.04 | |
strategy: | |
# Don't abort runners if a single one fails | |
fail-fast: false | |
matrix: | |
build_type: [Release, Debug] | |
llvm_version: [17, 18, 19, 20] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install common deps | |
run: | | |
sudo apt-get install zlib1g zlib1g-dev python3 ninja-build curl | |
- name: Install Clang ${{matrix.llvm_version}} | |
run: | | |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - | |
if [[ "${{matrix.llvm_version}}" < "${{env.LLVM_DEV_VERSION}}" ]]; then | |
sudo add-apt-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-${{matrix.llvm_version}} main" | |
else | |
sudo add-apt-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal main" | |
fi | |
sudo apt-get update | |
sudo apt-get install -y clang-${{matrix.llvm_version}} llvm-${{matrix.llvm_version}} llvm-${{matrix.llvm_version}}-dev lld-${{matrix.llvm_version}} liblld-${{matrix.llvm_version}}-dev | |
sudo apt-get install -y libmlir-${{matrix.llvm_version}} libmlir-${{matrix.llvm_version}}-dev mlir-${{matrix.llvm_version}}-tools | |
sudo apt-get install -y libpolly-${{matrix.llvm_version}}-dev | |
- name: CMake Old | |
if: matrix.llvm_version < 18 || matrix.llvm_version == env.LLVM_DEV_VERSION | |
run: | | |
cmake -B build \ | |
-G Ninja \ | |
-DCMAKE_BUILD_TYPE=${{matrix.build_type}} \ | |
-DCMAKE_C_COMPILER=clang-${{matrix.llvm_version}} \ | |
-DCMAKE_CXX_COMPILER=clang++-${{matrix.llvm_version}} \ | |
-DCMAKE_LINKER=lld-link-${{matrix.llvm_version}} \ | |
-DCMAKE_OBJCOPY=llvm-objcopy-${{matrix.llvm_version}} \ | |
-DCMAKE_STRIP=llvm-strip-${{matrix.llvm_version}} \ | |
-DCMAKE_DLLTOOL=llvm-dlltool-${{matrix.llvm_version}} \ | |
-DC3_LLVM_VERSION=${{matrix.llvm_version}} | |
cmake --build build | |
- name: CMake | |
if: matrix.llvm_version >= 18 && matrix.llvm_version != env.LLVM_DEV_VERSION | |
run: | | |
cmake -B build \ | |
-G Ninja \ | |
-DCMAKE_BUILD_TYPE=${{matrix.build_type}} \ | |
-DCMAKE_C_COMPILER=clang-${{matrix.llvm_version}} \ | |
-DCMAKE_CXX_COMPILER=clang++-${{matrix.llvm_version}} \ | |
-DCMAKE_LINKER=lld-link-${{matrix.llvm_version}} \ | |
-DCMAKE_OBJCOPY=llvm-objcopy-${{matrix.llvm_version}} \ | |
-DCMAKE_STRIP=llvm-strip-${{matrix.llvm_version}} \ | |
-DCMAKE_DLLTOOL=llvm-dlltool-${{matrix.llvm_version}} \ | |
-DC3_LLVM_VERSION=${{matrix.llvm_version}}.1 | |
cmake --build build | |
- name: Compile and run some examples | |
run: | | |
cd resources | |
../build/c3c compile examples/gameoflife.c3 | |
../build/c3c compile-only examples/levenshtein.c3 | |
../build/c3c compile-only examples/map.c3 | |
../build/c3c compile examples/mandelbrot.c3 | |
../build/c3c compile examples/plus_minus.c3 | |
../build/c3c compile examples/spectralnorm.c3 | |
../build/c3c compile examples/swap.c3 | |
../build/c3c compile examples/contextfree/guess_number.c3 | |
../build/c3c compile-run examples/hash.c3 | |
../build/c3c compile-run examples/nbodies.c3 | |
../build/c3c compile-run examples/contextfree/boolerr.c3 | |
../build/c3c compile-run examples/contextfree/dynscope.c3 | |
../build/c3c compile-run examples/contextfree/multi.c3 | |
../build/c3c compile-run examples/contextfree/cleanup.c3 | |
../build/c3c compile-run examples/hello_world_many.c3 | |
../build/c3c compile-run examples/time.c3 | |
../build/c3c compile-run examples/fannkuch-redux.c3 | |
../build/c3c compile-run examples/load_world.c3 | |
../build/c3c compile-run examples/base64.c3 | |
../build/c3c compile-run examples/binarydigits.c3 | |
../build/c3c compile-run examples/brainfk.c3 | |
../build/c3c compile-run examples/factorial_macro.c3 | |
../build/c3c compile-run examples/fasta.c3 | |
../build/c3c compile-run examples/process.c3 | |
../build/c3c compile-run --linker=builtin linux_stack.c3 | |
../build/c3c compile-run linux_stack.c3 | |
../build/c3c compile-run examples/args.c3 -- foo -bar "baz baz" | |
- name: Compile run unit tests | |
run: | | |
cd test | |
../build/c3c compile-test unit | |
- name: Build testproject | |
run: | | |
cd resources/testproject | |
../../build/c3c run --debug-log | |
- name: Build testproject direct linker | |
run: | | |
cd resources/testproject | |
../../build/c3c run --debug-log --linker=builtin | |
- name: run compiler tests | |
run: | | |
cd test | |
python3 src/tester.py ../build/c3c test_suite/ | |
- name: bundle_output | |
if: matrix.llvm_version == env.LLVM_RELEASE_VERSION_UBUNTU20 | |
run: | | |
mkdir c3 | |
cp -r lib c3 | |
cp msvc_build_libraries.py c3 | |
cp build/c3c c3 | |
tar czf c3-ubuntu-20-${{matrix.build_type}}.tar.gz c3 | |
- name: upload artifacts | |
if: matrix.llvm_version == env.LLVM_RELEASE_VERSION_UBUNTU20 | |
uses: actions/upload-artifact@v4 | |
with: | |
name: c3-ubuntu-20-${{matrix.build_type}} | |
path: c3-ubuntu-20-${{matrix.build_type}}.tar.gz | |
build-with-docker: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
ubuntu_version: [20.04, 22.04] | |
build_type: [Release, Debug] | |
llvm_version: [17, 18, 19, 20] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Make script executable | |
run: chmod +x ./build-with-docker.sh | |
- name: Run build | |
run: | | |
LLVM_VERSION=${{ matrix.llvm_version }} UBUNTU_VERSION=${{ matrix.ubuntu_version }} CMAKE_BUILD_TYPE=${{ matrix.build_type }} ./build-with-docker.sh | |
- name: Compile and run some examples | |
run: | | |
cd resources | |
../build/c3c compile examples/base64.c3 | |
../build/c3c compile examples/binarydigits.c3 | |
../build/c3c compile examples/brainfk.c3 | |
../build/c3c compile examples/factorial_macro.c3 | |
../build/c3c compile examples/fasta.c3 | |
../build/c3c compile examples/gameoflife.c3 | |
../build/c3c compile examples/hash.c3 | |
../build/c3c compile-only examples/levenshtein.c3 | |
../build/c3c compile examples/load_world.c3 | |
../build/c3c compile-only examples/map.c3 | |
../build/c3c compile examples/mandelbrot.c3 | |
../build/c3c compile examples/plus_minus.c3 | |
../build/c3c compile examples/nbodies.c3 | |
../build/c3c compile examples/spectralnorm.c3 | |
../build/c3c compile examples/swap.c3 | |
../build/c3c compile examples/contextfree/boolerr.c3 | |
../build/c3c compile examples/contextfree/dynscope.c3 | |
../build/c3c compile examples/contextfree/guess_number.c3 | |
../build/c3c compile examples/contextfree/multi.c3 | |
../build/c3c compile examples/contextfree/cleanup.c3 | |
../build/c3c compile-run examples/hello_world_many.c3 | |
../build/c3c compile-run examples/time.c3 | |
../build/c3c compile-run examples/fannkuch-redux.c3 | |
../build/c3c compile-run examples/contextfree/boolerr.c3 | |
../build/c3c compile-run examples/load_world.c3 | |
../build/c3c compile-run examples/process.c3 | |
../build/c3c compile-run examples/ls.c3 | |
../build/c3c compile-run --linker=builtin linux_stack.c3 | |
../build/c3c compile-run linux_stack.c3 | |
../build/c3c compile-run examples/args.c3 -- foo -bar "baz baz" | |
- name: Compile run unit tests | |
run: | | |
cd test | |
../build/c3c compile-test unit | |
- name: Build testproject | |
run: | | |
cd resources/testproject | |
../../build/c3c run --debug-log | |
- name: Test WASM | |
run: | | |
cd resources/testfragments | |
../../build/c3c compile --reloc=none --target wasm32 -g0 --no-entry -Os wasm4.c3 | |
- name: Build testproject direct linker | |
run: | | |
cd resources/testproject | |
../../build/c3c run --debug-log --linker=builtin | |
- name: Init a library & a project | |
run: | | |
./build/c3c init-lib mylib | |
ls mylib.c3l | |
./build/c3c init myproject | |
ls myproject | |
- name: run compiler tests | |
run: | | |
cd test | |
python3 src/tester.py ../build/c3c test_suite/ | |
build-mac: | |
runs-on: macos-latest | |
strategy: | |
# Don't abort runners if a single one fails | |
fail-fast: false | |
matrix: | |
build_type: [Release, Debug] | |
llvm_version: [17, 18] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download LLVM | |
run: | | |
brew install llvm@${{ matrix.llvm_version }} ninja curl | |
echo "/opt/homebrew/opt/llvm@${{ matrix.llvm_version }}/bin" >> $GITHUB_PATH | |
TMP_PATH=$(xcrun --show-sdk-path)/user/include | |
echo "CPATH=$TMP_PATH" >> $GITHUB_ENV | |
- name: CMake | |
if: matrix.llvm_version < 18 | |
run: | | |
cmake -B build -G Ninja -DC3_LLVM_VERSION=${{matrix.llvm_version}} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} | |
cmake --build build | |
- name: CMake18 | |
if: matrix.llvm_version >= 18 | |
run: | | |
cmake -B build -G Ninja -DC3_LLVM_VERSION=${{matrix.llvm_version}}.1 -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} | |
cmake --build build | |
- name: Vendor-fetch | |
run: | | |
./build/c3c vendor-fetch raylib5 | |
- name: Compile and run some examples | |
run: | | |
cd resources | |
../build/c3c compile-run examples/hello_world_many.c3 | |
../build/c3c compile-run examples/time.c3 | |
../build/c3c compile-run examples/fannkuch-redux.c3 | |
../build/c3c compile-run examples/contextfree/boolerr.c3 | |
../build/c3c compile-run examples/process.c3 | |
../build/c3c compile-run examples/load_world.c3 | |
../build/c3c compile-run -O5 examples/load_world.c3 | |
../build/c3c compile-run examples/args.c3 -- foo -bar "baz baz" | |
- name: Compile and run dynlib-test | |
run: | | |
cd resources/examples/dynlib-test | |
../../../build/c3c dynamic-lib add.c3 | |
../../../build/c3c compile-run test.c3 -l ./add.dylib | |
- name: Compile run unit tests | |
run: | | |
cd test | |
../build/c3c compile-test unit | |
- name: Build testproject | |
run: | | |
cd resources/testproject | |
../../build/c3c run --debug-log | |
- name: Build testproject direct linker | |
run: | | |
cd resources/testproject | |
../../build/c3c run --debug-log --linker=builtin | |
- name: Build testproject lib | |
run: | | |
cd resources/testproject | |
../../build/c3c build hello_world_lib --debug-log | |
- name: run compiler tests | |
run: | | |
cd test | |
python3 src/tester.py ../build/c3c test_suite/ | |
- name: bundle_output | |
if: matrix.llvm_version == env.LLVM_RELEASE_VERSION_MAC | |
run: | | |
mkdir macos | |
cp -r lib macos | |
cp msvc_build_libraries.py macos | |
cp build/c3c macos | |
zip -r c3-macos-${{matrix.build_type}}.zip macos | |
- name: upload artifacts | |
if: matrix.llvm_version == env.LLVM_RELEASE_VERSION_MAC | |
uses: actions/upload-artifact@v4 | |
with: | |
name: c3-macos-${{matrix.build_type}} | |
path: c3-macos-${{matrix.build_type}}.zip | |
release: | |
runs-on: ubuntu-latest | |
needs: [build-msvc, build-linux, build-mac, build-linux-ubuntu20] | |
if: github.ref == 'refs/heads/master' | |
steps: | |
- uses: actions/checkout@v4 | |
- name: delete tag | |
continue-on-error: true | |
uses: actions/github-script@v6 | |
with: | |
script: | | |
github.rest.git.deleteRef({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
ref: 'tags/latest', | |
sha: context.sha | |
}) | |
- name: create tag | |
uses: actions/github-script@v6 | |
with: | |
script: | | |
github.rest.git.createRef({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
ref: 'refs/tags/latest', | |
sha: context.sha | |
}) | |
- uses: actions/download-artifact@v4 | |
- run: cp -r lib c3-windows-Release | |
- run: cp -r lib c3-windows-Debug | |
- run: cp msvc_build_libraries.py c3-windows-Release | |
- run: cp msvc_build_libraries.py c3-windows-Debug | |
- run: zip -r c3-windows.zip c3-windows-Release | |
- run: zip -r c3-windows-debug.zip c3-windows-Debug | |
- run: mv c3-linux-Release/c3-linux-Release.tar.gz c3-linux-Release/c3-linux.tar.gz | |
- run: mv c3-linux-Debug/c3-linux-Debug.tar.gz c3-linux-Debug/c3-linux-debug.tar.gz | |
- run: mv c3-ubuntu-20-Release/c3-ubuntu-20-Release.tar.gz c3-ubuntu-20-Release/c3-ubuntu-20.tar.gz | |
- run: mv c3-ubuntu-20-Debug/c3-ubuntu-20-Debug.tar.gz c3-ubuntu-20-Debug/c3-ubuntu-20-debug.tar.gz | |
- run: mv c3-macos-Release/c3-macos-Release.zip c3-macos-Release/c3-macos.zip | |
- run: mv c3-macos-Debug/c3-macos-Debug.zip c3-macos-Debug/c3-macos-debug.zip | |
- id: create_release | |
uses: softprops/action-gh-release@v2 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: latest | |
release_name: latest | |
draft: false | |
prerelease: true | |
files: | | |
c3-windows.zip | |
c3-windows-debug.zip | |
c3-linux-Release/c3-linux.tar.gz | |
c3-linux-Debug/c3-linux-debug.tar.gz | |
c3-ubuntu-20-Release/c3-ubuntu-20.tar.gz | |
c3-ubuntu-20-Debug/c3-ubuntu-20-debug.tar.gz | |
c3-macos-Release/c3-macos.zip | |
c3-macos-Debug/c3-macos-debug.zip |