# This workflow is for zig-based build/test running on Linux, MacOS, Windows. name: zig build on: [ push, pull_request ] jobs: build: name: ${{ matrix.os }} ${{ matrix.ttriple }} thr:${{ matrix.enable_threads }} rwlock:${{ matrix.enable_rwlock }} redir:${{ matrix.redirect_malloc }} gcdeb:${{ matrix.enable_gc_debug }} munmap:${{ matrix.enable_munmap }} paramark:${{ matrix.parallel_mark }} thrlocal:${{ matrix.thread_local_alloc }} dll:${{ matrix.shared_libs }} runs-on: ${{ matrix.os }} timeout-minutes: 7 strategy: fail-fast: false matrix: zig_version: [ "0.14.1" ] os: [ macos-latest, ubuntu-latest, windows-latest ] ttriple: [ native, native-native-msvc ] enable_cplusplus: [ true ] gc_assertions: [ true ] large_config: [ false ] enable_threads: [ false, true ] disable_handle_fork: [ false ] enable_rwlock: [ false, true ] redirect_malloc: [ false, true ] enable_gc_debug: [ false, true ] enable_munmap: [ false, true ] parallel_mark: [ false, true ] thread_local_alloc: [ false, true ] shared_libs: [ false, true ] build_cord: [ false, true ] exclude: - build_cord: true # FIXME: cordtest hangs if shared lib build by MSVC shared_libs: true ttriple: native-native-msvc - os: macos-latest ttriple: native-native-msvc - os: ubuntu-latest ttriple: native-native-msvc - os: windows-latest disable_handle_fork: true - enable_threads: false disable_handle_fork: true - enable_threads: false parallel_mark: true - enable_threads: false enable_rwlock: true - enable_threads: false thread_local_alloc: true # The following ones are long-running jobs, thus excluded. - os: macos-latest enable_gc_debug: true enable_rwlock: true # The following ones just to reduce amount of jobs. - build_cord: false shared_libs: false - build_cord: false ttriple: native - enable_munmap: false shared_libs: true - enable_munmap: true enable_threads: false shared_libs: false - enable_gc_debug: true enable_rwlock: true thread_local_alloc: false - parallel_mark: false redirect_malloc: true - enable_gc_debug: true thread_local_alloc: false - os: macos-latest enable_munmap: false enable_threads: false - os: macos-latest enable_munmap: false enable_rwlock: true - os: macos-latest enable_rwlock: true thread_local_alloc: false - os: macos-latest enable_rwlock: true parallel_mark: false - os: macos-latest enable_munmap: false redirect_malloc: false - os: macos-latest enable_threads: true redirect_malloc: false thread_local_alloc: false - os: macos-latest enable_threads: true parallel_mark: false redirect_malloc: false steps: - uses: actions/checkout@v4 - uses: korandoru/setup-zig@v1 with: zig-version: ${{ matrix.zig_version }} - name: Build run: > zig build -Dtarget=${{ matrix.ttriple }} -DBUILD_SHARED_LIBS=${{ matrix.shared_libs }} -Dbuild_cord=${{ matrix.build_cord }} -Ddisable_handle_fork=${{ matrix.disable_handle_fork }} -Denable_cplusplus=${{ matrix.enable_cplusplus }} -Denable_gc_assertions=${{ matrix.gc_assertions }} -Denable_gc_debug=${{ matrix.enable_gc_debug }} -Denable_large_config=${{ matrix.large_config }} -Denable_munmap=${{ matrix.enable_munmap }} -Denable_parallel_mark=${{ matrix.parallel_mark }} -Denable_redirect_malloc=${{ matrix.redirect_malloc }} -Denable_rwlock=${{ matrix.enable_rwlock }} -Denable_thread_local_alloc=${{ matrix.thread_local_alloc }} -Denable_threads=${{ matrix.enable_threads }} -Denable_werror test