Skip to content

Member-wise constructor generation with visibility control #4786

Member-wise constructor generation with visibility control

Member-wise constructor generation with visibility control #4786

Workflow file for this run

name: CI
on:
push:
branches: [master]
paths-ignore:
- 'docs/**'
- 'LICENCE'
- 'CONTRIBUTION.md'
- 'README.md'
pull_request:
branches: [master]
paths-ignore:
- 'docs/**'
- 'LICENCE'
- 'CONTRIBUTION.md'
- 'README.md'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
strategy:
matrix:
os: [linux, macos, windows]
config: [debug, release]
compiler: [gcc, clang, cl]
platform: [x86_64, aarch64]
exclude:
# Default to x64, but aarch64 on osx
- { os: linux, platform: aarch64 }
- { os: windows, platform: aarch64 }
- { os: macos, platform: x86_64 }
# Unused compiler configs
- { os: linux, compiler: clang }
- { os: linux, compiler: cl }
- { os: windows, compiler: gcc }
- { os: windows, compiler: clang }
- { os: macos, compiler: gcc }
- { os: macos, compiler: cl }
include:
- { os: linux, runs-on: ubuntu-20.04 }
- { os: macos, runs-on: macos-latest }
- { os: windows, runs-on: windows-latest }
# Warnings are treated as errors by default.
# But we may want to disable it temporarily.
- { os: linux, warnings-as-errors: true }
- { os: macos, warnings-as-errors: true }
- { os: windows, warnings-as-errors: true }
# Set a test category depending on the config, smoke by default,
# quick or full conditionally otherwise
- test-category: smoke
- { os: windows, test-category: quick }
- { config: release, test-category: full }
# default not full gpu tests
- full-gpu-tests: false
# The runners don't have a GPU by default except for the self-hosted ones
- has-gpu: false
# Self-hosted aarch64 build
- os: linux
config: release
compiler: gcc
platform: aarch64
test-category: smoke
full-gpu-tests: false
runs-on: [self-hosted, Linux, ARM64]
has-gpu: true
# Self-hosted full gpu build
- os: windows
config: release
compiler: cl
platform: x86_64
test-category: full
full-gpu-tests: true
runs-on: [Windows, self-hosted]
has-gpu: true
fail-fast: false
runs-on: ${{ matrix.runs-on }}
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v3
with:
submodules: 'recursive'
fetch-depth: '0'
- name: Setup
uses: ./.github/actions/common-setup
with:
os: ${{matrix.os}}
compiler: ${{matrix.compiler}}
platform: ${{matrix.platform}}
config: ${{matrix.config}}
build-llvm: true
- name: Build Slang
run: |
if [[ "${{ matrix.os }}" =~ "windows" && "${{ matrix.config }}" != "release" ]]; then
# Doing a debug build will try to link against a release built llvm, this
# is a problem on Windows, so make slang-llvm in release build and use
# that as though it's a fetched binary via these presets.
cmake --workflow --preset slang-llvm
# Configure, pointing to our just-generated slang-llvm archive
cmake --preset default --fresh \
-DSLANG_SLANG_LLVM_FLAVOR=FETCH_BINARY \
"-DSLANG_SLANG_LLVM_BINARY_URL=$(pwd)/build/dist-release/slang-llvm.zip" \
"-DCMAKE_COMPILE_WARNING_AS_ERROR=${{matrix.warnings-as-errors}}"
cmake --workflow --preset "${{matrix.config}}"
else
# Otherwise, use the system llvm we have just build or got from the
# cache in the setup phase
cmake --preset default --fresh \
-DSLANG_SLANG_LLVM_FLAVOR=USE_SYSTEM_LLVM \
-DCMAKE_COMPILE_WARNING_AS_ERROR=${{matrix.warnings-as-errors}}
cmake --workflow --preset "${{matrix.config}}"
fi
- name: Test Slang
run: |
export SLANG_RUN_SPIRV_VALIDATION=1
export SLANG_USE_SPV_SOURCE_LANGUAGE_UNKNOWN=1
if [[ "${{matrix.full-gpu-tests}}" == "true" ]]; then
"$bin_dir/slang-test" \
-use-test-server \
-server-count 8 \
-category ${{ matrix.test-category }} \
-api all-cpu
elif [[ "${{matrix.has-gpu}}" == "true" ]]; then
"$bin_dir/slang-test" \
-use-test-server \
-category ${{ matrix.test-category }} \
-api all-dx12 \
-expected-failure-list tests/expected-failure-github.txt
else
"$bin_dir/slang-test" \
-use-test-server \
-category ${{ matrix.test-category }} \
-api all-dx12 \
-expected-failure-list tests/expected-failure-github.txt \
-expected-failure-list tests/expected-failure-record-replay-tests.txt
fi
- name: Test Slang via glsl
if: ${{matrix.full-gpu-tests}}
run: |
export SLANG_RUN_SPIRV_VALIDATION=1
export SLANG_USE_SPV_SOURCE_LANGUAGE_UNKNOWN=1
"$bin_dir/slang-test" \
-use-test-server \
-server-count 8 \
-category ${{ matrix.test-category }} \
-emit-spirv-via-glsl \
-api vk \
-expected-failure-list tests/expected-failure.txt
- uses: actions/upload-artifact@v3
if: ${{ ! matrix.full-gpu-tests }}
with:
name: slang-build-${{matrix.os}}-${{matrix.platform}}-${{matrix.compiler}}-${{matrix.config}}
# The install directory used in the packaging step
path: build/dist-${{matrix.config}}/**/ZIP/slang/*