name: CI on: [push, pull_request, workflow_dispatch] jobs: build_netbsd: name: NetBSD Build, Check, and Test runs-on: ubuntu-latest env: PKGSRC_BRANCH: 2024Q1 steps: - uses: actions/checkout@v4 - name: Build, Check, and Test timeout-minutes: 25 uses: vmactions/netbsd-vm@v1 with: release: "10.0" envs: PKGSRC_BRANCH usesh: true copyback: false prepare: | PKG_PATH="https://cdn.NetBSD.org/pub/pkgsrc/packages/NetBSD/$(uname -p)/$(uname -r | cut -d_ -f1)_${PKGSRC_BRANCH}/All" /usr/sbin/pkg_add pkgin pkgin -y in gmake git bash python311 pkgin -y in libxml2 perl zstd /usr/sbin/pkg_add https://github.com/andreas-jonsson/llvm17-netbsd-bin/releases/download/pkgsrc-current/llvm-17.0.6.tgz /usr/sbin/pkg_add https://github.com/andreas-jonsson/llvm17-netbsd-bin/releases/download/pkgsrc-current/clang-17.0.6.tgz ln -s /usr/pkg/bin/python3.11 /usr/bin/python3 ln -s /usr/pkg/bin/bash /bin/bash run: | git config --global --add safe.directory $(pwd) gmake release ./odin version ./odin report ./odin check examples/all -vet -strict-style -target:netbsd_amd64 (cd tests/core; gmake all_bsd) (cd tests/internal; gmake all_bsd) (cd tests/issues; ./run.sh) (cd tests/benchmark; gmake all) build_linux: name: Ubuntu Build, Check, and Test runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: Download LLVM run: | wget https://apt.llvm.org/llvm.sh chmod +x llvm.sh sudo ./llvm.sh 17 echo "/usr/lib/llvm-17/bin" >> $GITHUB_PATH - name: build odin run: ./build_odin.sh release - name: Odin version run: ./odin version timeout-minutes: 1 - name: Odin report run: ./odin report timeout-minutes: 1 - name: Odin check run: ./odin check examples/demo -vet timeout-minutes: 10 - name: Odin run run: ./odin run examples/demo timeout-minutes: 10 - name: Odin run -debug run: ./odin run examples/demo -debug timeout-minutes: 10 - name: Odin check examples/all run: ./odin check examples/all -strict-style timeout-minutes: 10 - name: Core library tests run: | cd tests/core make timeout-minutes: 10 - name: Vendor library tests run: | cd tests/vendor make timeout-minutes: 10 - name: Odin internals tests run: | cd tests/internal make timeout-minutes: 10 - name: Odin core library benchmarks run: | cd tests/benchmark make timeout-minutes: 10 - name: Odin check examples/all for Linux i386 run: ./odin check examples/all -vet -strict-style -target:linux_i386 timeout-minutes: 10 - name: Odin check examples/all for Linux arm64 run: ./odin check examples/all -vet -strict-style -target:linux_arm64 timeout-minutes: 10 - name: Odin check examples/all for FreeBSD amd64 run: ./odin check examples/all -vet -strict-style -target:freebsd_amd64 timeout-minutes: 10 - name: Odin check examples/all for OpenBSD amd64 run: ./odin check examples/all -vet -strict-style -target:openbsd_amd64 timeout-minutes: 10 build_macOS: name: MacOS Build, Check, and Test runs-on: macos-13 steps: - uses: actions/checkout@v1 - name: Download LLVM, and setup PATH run: | brew install llvm@17 echo "/usr/local/opt/llvm@17/bin" >> $GITHUB_PATH - name: build odin run: ./build_odin.sh release - name: Odin version run: ./odin version timeout-minutes: 1 - name: Odin report run: ./odin report timeout-minutes: 1 - name: Odin check run: ./odin check examples/demo -vet timeout-minutes: 10 - name: Odin run run: ./odin run examples/demo timeout-minutes: 10 - name: Odin run -debug run: ./odin run examples/demo -debug timeout-minutes: 10 - name: Odin check examples/all run: ./odin check examples/all -strict-style timeout-minutes: 10 - name: Core library tests run: | cd tests/core make timeout-minutes: 10 - name: Odin internals tests run: | cd tests/internal make timeout-minutes: 10 - name: Odin core library benchmarks run: | cd tests/benchmark make timeout-minutes: 10 build_macOS_arm: name: MacOS ARM Build, Check, and Test runs-on: macos-14 # This is an arm/m1 runner. steps: - uses: actions/checkout@v1 - name: Download LLVM and setup PATH run: | brew install llvm@17 echo "/opt/homebrew/opt/llvm@17/bin" >> $GITHUB_PATH - name: build odin run: ./build_odin.sh release - name: Odin version run: ./odin version timeout-minutes: 1 - name: Odin report run: ./odin report timeout-minutes: 1 - name: Odin check run: ./odin check examples/demo -vet timeout-minutes: 10 - name: Odin run run: ./odin run examples/demo timeout-minutes: 10 - name: Odin run -debug run: ./odin run examples/demo -debug timeout-minutes: 10 - name: Odin check examples/all run: ./odin check examples/all -strict-style timeout-minutes: 10 - name: Core library tests run: | cd tests/core make timeout-minutes: 10 - name: Odin internals tests run: | cd tests/internal make timeout-minutes: 10 - name: Odin core library benchmarks run: | cd tests/benchmark make timeout-minutes: 10 build_windows: name: Windows Build, Check, and Test runs-on: windows-2022 steps: - uses: actions/checkout@v1 - name: build Odin shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat ./build.bat 1 - name: Odin version run: ./odin version timeout-minutes: 1 - name: Odin report run: ./odin report timeout-minutes: 1 - name: Odin check shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat odin check examples/demo -vet timeout-minutes: 10 - name: Odin run shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat odin run examples/demo timeout-minutes: 10 - name: Odin run -debug shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat odin run examples/demo -debug timeout-minutes: 10 - name: Odin check examples/all shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat odin check examples/all -strict-style timeout-minutes: 10 - name: Core library tests shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat cd tests\core call build.bat timeout-minutes: 10 - name: Core library benchmarks shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat cd tests\benchmark call build.bat timeout-minutes: 10 - name: Vendor library tests shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat cd tests\vendor call build.bat timeout-minutes: 10 - name: Odin internals tests shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat cd tests\internal call build.bat timeout-minutes: 10 - name: Odin documentation tests shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat cd tests\documentation call build.bat timeout-minutes: 10 - name: core:math/big tests shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat cd tests\core\math\big call build.bat timeout-minutes: 10 - name: Odin check examples/all for Windows 32bits shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat odin check examples/all -strict-style -target:windows_i386 timeout-minutes: 10