From 0e56999a573fada2cce6e94c21ef856cc88dc933 Mon Sep 17 00:00:00 2001 From: Ellie Hermaszewska Date: Wed, 10 Jul 2024 22:37:21 +0800 Subject: WIP Drop Premake (#3703) * Remove premake lua * Remove premake generated vs project * remove deps file * Remove premake driving bat files * Full test matrix under CMake * Remove premake based ci workflows * Wiggle CI * remove cmake from ci name * find frameworks correctly on osx * remove cmake from ci name * Cope with sccache not being available * cmake based falcor tests * ci wobble * only install ninja if necessary * more appropriate cache name * Remove premake from build instructions * Add some docs on ci setup * remove premake from regression tests * remove premake from perf test * Set SLANGC_PATH * ci wobble * bump slang-binaries * ci wobble * Bump spirv tools * dont use timestamp in cache * remote debug code * cache key wobble * Install sccache after building llvm * Do not build llvm tools * ci wobble * ci wobble * ci wobble * ci wobble * ci wobble * Tests spirv via glsl in ci * Define SLANG_ENABLE_XLIB=1 * osx builds on aarch64 * ci wobble * ci wobble * ci wobble * ci wobble * ci wobble * ci wobble * package documentation and metadata with cmake * ci wobble * Split hlsl double intrinsic tests * ci wobble * Correct type for double log10 Fixes https://github.com/shader-slang/slang/issues/4549 * remove working test from expected failures * add broken test to expected failures * smaller build for falcor tests * ci wobble * A few exclusions in ci * wip, release script * Enable examples in ci * neaten release script * Correct building docs * Only use xlib vulkan when slang_enable_xlib is true * bump slang-llvm version * Remove toolchain file use * Bump slang-llvm preset version * slash direction * Improve build directions * Add msvc cross build documentation * Disable old release files * Smaller set of releases for test * Allow not building llvm * simplify release matrix * Cross releases * formatting * formatting * ci wiggle * ci wiggle * cleaner * neaten * ci wobble * formatting * Install cross tools on linux * do not clean build dir * neaten ci * neaten ci * neaten ci * remove unused release workflow files * Build llvm on some platforms * neaten ci * notarize on osx * s/x64/x86_64 * ci wobble * Embed stdlib for release build * wobble ci * wobble ci * s/x64/x86_64 * ci wobble * ci wobble * ci wobble * vk-gl-cts on cmake * neaten ci * neaten ci * bump cache action version * Cope with windows being weird about case * old glibc version * old glibc version * Correct action file * Keep cache hot on main branch * separate small script for old glibc releases * ci wobble * ci wobble * Run cmake outside of docker * only sign on releases * Revert "Run cmake outside of docker" This reverts commit a58aaba939a4aa35fe70962fd60d9512b143592f. * python3 on build image * less parallel * ci wobble * ci wobble * ci wobble * newer git * ci wobble * ci wobble * Use newer docker image * Use newer docker image * sccache wobble * permissions issue * neaten * build llvm in ci * build llvm in ci * Remove linux clang build in ci * Only install crossbuild tools on non-aarch64 systems * neaten ci.yml * Correct github matrix * Simplify github matrix * ci wobble * Disable broken test See https://github.com/shader-slang/slang/issues/4589 * ci wobble * Neater slang-llvm archive filename * Neater path for uploading artifacts * Neater ci names * Use Windows SDK 10.0.19041.0 in cmake builds --- .github/actions/common-setup/action.yml | 83 +++++++---- .github/workflows/ci.yml | 105 +++++++------- .github/workflows/compile-regression-test.yml | 53 ++++--- .github/workflows/falcor-compiler-perf-test.yml | 45 ++++-- .github/workflows/falcor-test.yml | 56 +++++--- .github/workflows/linux-arm64.yml | 59 -------- .github/workflows/linux.yml | 75 ---------- .github/workflows/macos.yml | 74 ---------- .github/workflows/release-linux-arm64.yml | 56 -------- .github/workflows/release-linux-glibc-2-17.yml | 67 ++++----- .github/workflows/release-linux.yml | 68 --------- .github/workflows/release-macos.yml | 132 ----------------- .github/workflows/release-windows.yml | 116 --------------- .github/workflows/release.yml | 181 ++++++++++++++++++++++++ .github/workflows/verify-solution-file.yml | 25 ---- .github/workflows/vk-gl-cts-nightly.yml | 51 +++++-- .github/workflows/windows-selfhosted.yml | 52 ------- .github/workflows/windows.yml | 76 ---------- 18 files changed, 453 insertions(+), 921 deletions(-) delete mode 100644 .github/workflows/linux-arm64.yml delete mode 100644 .github/workflows/linux.yml delete mode 100644 .github/workflows/macos.yml delete mode 100644 .github/workflows/release-linux-arm64.yml delete mode 100644 .github/workflows/release-linux.yml delete mode 100644 .github/workflows/release-macos.yml delete mode 100644 .github/workflows/release-windows.yml create mode 100644 .github/workflows/release.yml delete mode 100644 .github/workflows/verify-solution-file.yml delete mode 100644 .github/workflows/windows-selfhosted.yml delete mode 100644 .github/workflows/windows.yml (limited to '.github') diff --git a/.github/actions/common-setup/action.yml b/.github/actions/common-setup/action.yml index a1323ddbd..712a74df5 100644 --- a/.github/actions/common-setup/action.yml +++ b/.github/actions/common-setup/action.yml @@ -5,35 +5,39 @@ description: Performs setup common to all our actions inputs: os: required: true - runs-on: - required: true compiler: required: true platform: required: true config: required: true + build-llvm: + required: true runs: using: composite steps: - name: Set up MSVC dev tools on Windows uses: ilammy/msvc-dev-cmd@v1 - - name: Set up sccache - uses: hendrikmuhs/ccache-action@v1.2 with: - key: ${{inputs.os}}-${{inputs.compiler}}-${{inputs.platform}}-${{inputs.config}} - variant: sccache - append-timestamp: false + sdk: "10.0.19041.0" + - shell: bash run: | # Set up system dependencies # Install Ninja - case "${{inputs.os}}" in - linux*) sudo apt-get install -y ninja-build;; - windows*) choco install ninja;; - macos*) brew install ninja;; - esac + if ! command -v ninja; then + case "${{inputs.os}}" in + linux*) sudo apt-get install -y ninja-build;; + windows*) choco install ninja;; + macos*) brew install ninja;; + esac + fi + + # Install cross tools on Ubuntu + if [[ "${{inputs.os}}" == linux* && "${{inputs.platform}}" == "aarch64" && "$(uname -m)" != "aarch64" ]]; then + sudo apt-get install -y crossbuild-essential-arm64 + fi # Set compiler CC=${{inputs.compiler}} @@ -41,50 +45,69 @@ runs: # infer C++ compiler CXX=${CXX/gcc/g++} CXX=${CXX/clang/clang++} - # Correct version on older ubuntu - if [[ "${{inputs.runs-on}}" == ubuntu-20.04 ]]; then - CC=${CC/gcc/gcc-10} - CXX=${CXX/g++/g++-10} + # Correct gcc version on older ubuntu + if [[ "${{inputs.os}}" == linux* ]]; then + gcc_version=$(gcc -dumpversion | cut -d'.' -f1) + if [ "$gcc_version" -lt 10 ]; then + CC=${CC/gcc/gcc-10} + CXX=${CXX/g++/g++-10} + fi fi # Export echo "CC=$CC" >> "$GITHUB_ENV" echo "CXX=$CXX" >> "$GITHUB_ENV" - # Set CMake to use sccache - echo "CMAKE_CXX_COMPILER_LAUNCHER=sccache" >> "$GITHUB_ENV" - echo "CMAKE_C_COMPILER_LAUNCHER=sccache" >> "$GITHUB_ENV" - # Some useful variables config=${{inputs.config}} Config=$(echo "${{inputs.config}}" | sed 's/debug/Debug/;s/release/Release/') bin_dir=$(pwd)/build/$Config/bin lib_dir=$(pwd)/build/$Config/lib echo "config=$config" >> "$GITHUB_ENV" - echo "Config=$Config" >> "$GITHUB_ENV" echo "bin_dir=$bin_dir" >> "$GITHUB_ENV" echo "lib_dir=$lib_dir" >> "$GITHUB_ENV" # Try to restore a LLVM install, and build it otherwise - - uses: actions/cache/restore@v3 + - uses: actions/cache/restore@v4 id: cache-llvm + if: inputs.build-llvm == 'true' with: path: ${{ github.workspace }}/build/llvm-project-install # Use os*compiler*platform in lieu of an ABI key here, which is what we really want - key: ${{ inputs.os }}-${{ inputs.compiler }}-${{ inputs.platform }}-${{ hashFiles('external/build-llvm.sh') }} + key: llvm-${{ inputs.os }}-${{ inputs.compiler }}-${{ inputs.platform }}-${{ hashFiles('external/build-llvm.sh') }} - name: Build LLVM - if: steps.cache-llvm.outputs.cache-hit != 'true' + if: inputs.build-llvm == 'true' && steps.cache-llvm.outputs.cache-hit != 'true' shell: bash run: ./external/build-llvm.sh --install-prefix "${{ github.workspace }}/build/llvm-project-install" - - uses: actions/cache/save@v3 - if: steps.cache-llvm.outputs.cache-hit != 'true' + - uses: actions/cache/save@v4 + if: inputs.build-llvm == 'true' && steps.cache-llvm.outputs.cache-hit != 'true' with: path: ${{ github.workspace }}/build/llvm-project-install key: ${{ steps.cache-llvm.outputs.cache-primary-key }} + + # Run this after building llvm, it's pointless to fill the caches with + # infrequent llvm build products + - name: Set up sccache + uses: hendrikmuhs/ccache-action@v1.2 + with: + key: ${{inputs.os}}-${{inputs.compiler}}-${{inputs.platform}}-${{inputs.config}} + variant: sccache + # Opportunistically use sccache, it's not available for example on self + # hosted runners or ARM + continue-on-error: true + - name: Set environment variable for CMake shell: bash run: | - echo "LLVM_DIR=${{ github.workspace }}/build/llvm-project-install" >> "$GITHUB_ENV" - echo "Clang_DIR=${{ github.workspace }}/build/llvm-project-install" >> "$GITHUB_ENV" + if [ "${{inputs.build-llvm}}" == "true" ]; then + echo "LLVM_DIR=${{ github.workspace }}/build/llvm-project-install" >> "$GITHUB_ENV" + echo "Clang_DIR=${{ github.workspace }}/build/llvm-project-install" >> "$GITHUB_ENV" + fi + + # Set CMake to use sccache if it's available + if command -v sccache; then + echo "CMAKE_CXX_COMPILER_LAUNCHER=sccache" >> "$GITHUB_ENV" + echo "CMAKE_C_COMPILER_LAUNCHER=sccache" >> "$GITHUB_ENV" + fi # Install swiftshader - uses: robinraju/release-downloader@v1.8 @@ -107,7 +130,9 @@ runs: # Put spirv-tools in path - shell: bash run: | + win_platform="${{ inputs.platform }}" + win_platform="${win_platform//x86_64/x64}" case "${{inputs.os}}" in - windows*) echo "${{github.workspace}}/external/slang-binaries/spirv-tools/windows-${{inputs.platform}}/bin" >> "$GITHUB_PATH";; + windows*) echo "${{github.workspace}}/external/slang-binaries/spirv-tools/windows-$win_platform/bin" >> "$GITHUB_PATH";; linux*) echo "${{github.workspace}}/external/slang-binaries/spirv-tools/$(uname -m)-linux/bin" >> "$GITHUB_PATH";; esac diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d6fa7673f..b23308ab3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,4 @@ -name: CI (CMake) +name: CI on: push: @@ -12,60 +12,54 @@ jobs: build: strategy: matrix: - # Until we switch to CMake fully, just run something minimal + 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 } + # When to have warnings + - warnings-as-errors: false + - { compiler: cl, 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 + # Self-hosted aarch64 build - os: linux compiler: gcc - platform: x64 - config: debug - warnings-as-errors: true + platform: aarch64 + config: release + warnings-as-errors: false test-category: smoke full-gpu-tests: false - runs-on: ubuntu-20.04 - # os: [linux, macos, windows] - # compiler: ['gcc', 'clang', 'cl'] - # config: ['debug', 'release'] - # platform: ['x64'] - # full-gpu-tests: [false] - # exclude: - # # Exclude invalid or undesired os/compiler - # - { os: linux, compiler: cl } - # - { os: macos, compiler: cl } - # - { os: macos, compiler: gcc } - # - { os: windows, compiler: gcc } - # - { os: windows, compiler: clang } - # # or os/config combinations - # - { os: macos, config: debug } - # include: - # - { os: linux, runs-on: ubuntu-20.04 } - # - { os: windows, runs-on: windows-latest } - # - { os: macos, runs-on: macos-latest } - # # 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 } - # # Only CL has werror - # - warnings-as-errors: false - # - { compiler: cl, warnings-as-errors: true } - # # Self-hosted aarch64 build - # - os: linux - # compiler: gcc - # platform: aarch64 - # config: release - # warnings-as-errors: false - # test-category: smoke - # full-gpu-tests: false - # runs-on: [self-hosted, Linux, ARM64] - # # Self-hosted full gpu build - # - os: windows - # compiler: cl - # platform: x64 - # config: release - # warnings-as-errors: false - # test-category: full - # full-gpu-tests: true - # runs-on: [Windows, self-hosted] + runs-on: [self-hosted, Linux, ARM64] + # Self-hosted full gpu build + - os: windows + compiler: cl + platform: x86_64 + config: release + warnings-as-errors: false + test-category: full + full-gpu-tests: true + runs-on: [Windows, self-hosted] fail-fast: false runs-on: ${{ matrix.runs-on }} @@ -82,10 +76,10 @@ jobs: uses: ./.github/actions/common-setup with: os: ${{matrix.os}} - runs-on: ${{matrix.runs-on}} compiler: ${{matrix.compiler}} platform: ${{matrix.platform}} config: ${{matrix.config}} + build-llvm: true - name: Build Slang run: | if [[ "${{ matrix.os }}" =~ "windows" && "${{ matrix.config }}" != "release" ]]; then @@ -96,8 +90,7 @@ jobs: # 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-slang-llvm.zip \ - -DSLANG_ENABLE_EXAMPLES=OFF \ + -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 @@ -105,13 +98,13 @@ jobs: # cache in the setup phase cmake --preset default --fresh \ -DSLANG_SLANG_LLVM_FLAVOR=USE_SYSTEM_LLVM \ - -DSLANG_ENABLE_EXAMPLES=OFF \ -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 failed=0 if [[ "${{matrix.full-gpu-tests}}" == "true" ]]; then $bin_dir/slang-test \ @@ -123,7 +116,7 @@ jobs: $bin_dir/slang-test \ -use-test-server \ -server-count 8 \ - -emit-spirv-directly \ + -emit-spirv-via-glsl \ -api vk \ -category ${{ matrix.test-category }} \ -expected-failure-list tests/expected-failure.txt || @@ -142,4 +135,4 @@ jobs: 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}}/**/slang/* + path: build/dist-${{matrix.config}}/**/ZIP/slang/* diff --git a/.github/workflows/compile-regression-test.yml b/.github/workflows/compile-regression-test.yml index 962b2cf54..b6b484b9a 100644 --- a/.github/workflows/compile-regression-test.yml +++ b/.github/workflows/compile-regression-test.yml @@ -1,5 +1,3 @@ -# This is a basic workflow to help you get started with Actions - name: Compile Regression-Test on: @@ -12,37 +10,48 @@ concurrency: cancel-in-progress: true jobs: build: - runs-on: [self-hosted, Windows, regression-test] timeout-minutes: 100 continue-on-error: true strategy: fail-fast: false matrix: - configuration: ['Release'] - platform: ['x64'] + os: [windows] + config: [release] + compiler: [cl] + platform: [x86_64] include: - - platform: x64 - testPlatform: x64 - - platform: x64 - testCategory: full + # Self-hosted falcor tests + - warnings-as-errors: false + test-category: full + full-gpu-tests: false + runs-on: [Windows, self-hosted, regression-test] + runs-on: ${{ matrix.runs-on }} + defaults: + run: + shell: bash steps: - uses: actions/checkout@v3 with: submodules: 'true' fetch-depth: '0' - - name: setup-msbuild - uses: microsoft/setup-msbuild@v1 - - name: build + - 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: | - .\premake.bat vs2019 --arch=${{matrix.platform}} --deps=true --no-progress=true --enable-cuda=true --enable-examples=false - - .\make-slang-tag-version.bat - - MSBuild.exe slang.sln -v:m -m -property:Configuration=${{matrix.configuration}} -property:Platform=${{matrix.platform}} -property:WindowsTargetPlatformVersion=10.0.19041.0 -maxcpucount:12 - + cmake --preset default --fresh \ + -DSLANG_SLANG_LLVM_FLAVOR=USE_SYSTEM_LLVM \ + -DCMAKE_COMPILE_WARNING_AS_ERROR=${{matrix.warnings-as-errors}} \ + -DSLANG_ENABLE_CUDA=1 + cmake --workflow --preset "${{matrix.config}}" - name: Run compile and validation test run: | - $gitbash = 'C:\Program Files\git\bin\bash.exe' - cp -r 'C:\slang_compile_test_suite_a' .\ - cd .\slang_compile_test_suite_a - & $gitbash compile_all_slang.sh + cp -r /c/slang_compile_test_suite_a . + cd slang_compile_test_suite_a + export SLANGC_PATH="$bin_dir/slangc.exe" + bash ./compile_all_slang.sh diff --git a/.github/workflows/falcor-compiler-perf-test.yml b/.github/workflows/falcor-compiler-perf-test.yml index 6a5a91929..449944181 100644 --- a/.github/workflows/falcor-compiler-perf-test.yml +++ b/.github/workflows/falcor-compiler-perf-test.yml @@ -12,33 +12,47 @@ concurrency: cancel-in-progress: true jobs: build: - runs-on: [Windows, self-hosted, perf] timeout-minutes: 100 continue-on-error: true strategy: fail-fast: false matrix: - configuration: ['Release'] - platform: ['x64'] + os: [windows] + config: [release] + compiler: [cl] + platform: [x86_64] include: - - platform: x64 - testPlatform: x64 - - platform: x64 - testCategory: full + # Self-hosted falcor tests + - warnings-as-errors: false + test-category: full + full-gpu-tests: false + runs-on: [Windows, self-hosted, perf] + runs-on: ${{ matrix.runs-on }} + defaults: + run: + shell: bash steps: - uses: actions/checkout@v3 with: submodules: 'true' fetch-depth: '0' - - name: setup-msbuild - uses: microsoft/setup-msbuild@v1 - - name: build - run: | - .\premake.bat vs2019 --arch=${{matrix.platform}} --deps=true --no-progress=true --enable-cuda=true --enable-examples=false - .\make-slang-tag-version.bat + - name: Setup + uses: ./.github/actions/common-setup + with: + os: ${{matrix.os}} + compiler: ${{matrix.compiler}} + platform: ${{matrix.platform}} + config: ${{matrix.config}} + build-llvm: true - MSBuild.exe slang.sln -v:m -m -property:Configuration=${{matrix.configuration}} -property:Platform=${{matrix.platform}} -property:WindowsTargetPlatformVersion=10.0.19041.0 -maxcpucount:12 + - name: Build Slang + run: | + cmake --preset default --fresh \ + -DSLANG_SLANG_LLVM_FLAVOR=USE_SYSTEM_LLVM \ + -DCMAKE_COMPILE_WARNING_AS_ERROR=${{matrix.warnings-as-errors}} \ + -DSLANG_ENABLE_CUDA=1 + cmake --workflow --preset "${{matrix.config}}" - uses: robinraju/release-downloader@v1.9 id: download @@ -70,8 +84,9 @@ jobs: extract: false - name: run falcor-compiler-perf-test + shell: pwsh run: | $filename = '${{ fromJson(steps.download.outputs.downloaded_files)[0] }}' Expand-Archive $filename -DestinationPath .\falcor-perf-test - $env:PATH += ";.\bin\windows-${{matrix.testPlatform}}\${{matrix.configuration}}"; + $env:PATH += ";.\build\${{matrix.config}}\bin"; .\falcor-perf-test\bin\Release\falcor_perftest.exe diff --git a/.github/workflows/falcor-test.yml b/.github/workflows/falcor-test.yml index 60506f062..9dccb6af2 100644 --- a/.github/workflows/falcor-test.yml +++ b/.github/workflows/falcor-test.yml @@ -1,5 +1,3 @@ -# This is a basic workflow to help you get started with Actions - name: Falcor Tests on: @@ -12,27 +10,40 @@ concurrency: cancel-in-progress: true jobs: build: - runs-on: [Windows, self-hosted, falcor] timeout-minutes: 100 continue-on-error: true strategy: fail-fast: false matrix: - configuration: ['Release'] - platform: ['x64'] + os: [windows] + config: [release] + compiler: [cl] + platform: [x86_64] include: - - platform: x64 - testPlatform: x64 - - platform: x64 - testCategory: full + # Self-hosted falcor tests + - warnings-as-errors: false + test-category: full + full-gpu-tests: false + runs-on: [Windows, self-hosted, falcor] + runs-on: ${{ matrix.runs-on }} + defaults: + run: + shell: bash steps: - uses: actions/checkout@v3 with: submodules: 'true' fetch-depth: '0' - - name: setup-msbuild - uses: microsoft/setup-msbuild@v1 + - name: Setup + uses: ./.github/actions/common-setup + with: + os: ${{matrix.os}} + compiler: ${{matrix.compiler}} + platform: ${{matrix.platform}} + config: ${{matrix.config}} + build-llvm: true - name: setup-falcor + shell: pwsh run: | mkdir FalcorBin cd FalcorBin @@ -43,25 +54,30 @@ jobs: Copy-Item -Path 'C:\Falcor\media_internal' -Destination '.\' -Recurse Copy-Item -Path 'C:\Falcor\scripts' -Destination '.\' -Recurse cd ..\ - - name: build + - name: Build Slang run: | - .\premake.bat vs2019 --arch=${{matrix.platform}} --deps=true --no-progress=true --enable-cuda=true --enable-examples=false - - .\make-slang-tag-version.bat - - MSBuild.exe slang.sln -v:m -m -property:Configuration=${{matrix.configuration}} -property:Platform=${{matrix.platform}} -property:WindowsTargetPlatformVersion=10.0.19041.0 -maxcpucount:12 - - Copy-Item -Path '.\bin\windows-${{matrix.platform}}\${{matrix.configuration}}\*' -Destination '.\FalcorBin\build\windows-vs2022\bin\Release\' -Recurse -Exclude ("*.pdb", "gfx.dll") + cmake --preset default --fresh \ + -DSLANG_SLANG_LLVM_FLAVOR=USE_SYSTEM_LLVM \ + -DCMAKE_COMPILE_WARNING_AS_ERROR=${{matrix.warnings-as-errors}} \ + -DSLANG_ENABLE_CUDA=1 \ + -DSLANG_ENABLE_EXAMPLES=0 \ + -DSLANG_ENABLE_GFX=0 \ + -DSLANG_ENABLE_TESTS=0 + cmake --workflow --preset "${{matrix.config}}" + - name: Copy Slang to Falcor + run: | + cp --verbose --recursive --target-directory ./FalcorBin/build/windows-vs2022/bin/Release build/Release/bin/* - name: falcor-unit-test + shell: pwsh run: | $ErrorActionPreference = "SilentlyContinue" cd .\FalcorBin\tests python ./testing/run_unit_tests.py --config windows-vs2022-Release -t "-slow" cd ../../ - name: falcor-image-test + shell: pwsh run: | $ErrorActionPreference = "SilentlyContinue" cd .\FalcorBin\tests python ./testing/run_image_tests.py --config windows-vs2022-Release --run-only cd ../../ - diff --git a/.github/workflows/linux-arm64.yml b/.github/workflows/linux-arm64.yml deleted file mode 100644 index a35672c5f..000000000 --- a/.github/workflows/linux-arm64.yml +++ /dev/null @@ -1,59 +0,0 @@ -name: Linux/ARM64 Build and Test - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true -jobs: - build: - - runs-on: ['self-hosted', 'Linux', 'ARM64'] - strategy: - matrix: - configuration: ['release'] - compiler: ['gcc'] - platform: ['aarch64'] - steps: - - uses: actions/checkout@v3 - with: - submodules: 'true' - fetch-depth: '0' - - name: build - run: | - CC=${{matrix.compiler}} - CONFIGURATION=${{matrix.configuration}} - ARCH=${{matrix.platform}} - TARGETARCH=${{matrix.platform}} - if [[ "$CC" == "clang" ]]; then - CFLAGS=-Werror - CPPFLAGS=-Werror - CXXFLAGS=-Werror - fi - source ./github_build.sh - - uses: actions/upload-artifact@v3 - with: - name: slang-build-${{matrix.configuration}}-${{matrix.platform}}-${{matrix.compiler}} - path: | - slang.h - slang-com-helper.h - slang-com-ptr.h - slang-tag-version.h - slang-gfx.h - prelude/*.h - bin/**/*.dll - bin/**/*.exe - bin/**/*.so - bin/**/slangc - bin/**/slangd - docs/*.md - - name: test - run: - CONFIGURATION=${{matrix.configuration}} - CC=${{matrix.compiler}} - ARCH=${{matrix.platform}} - PATH="${PATH:+${PATH}:}$(pwd)/external/slang-binaries/spirv-tools/$(uname -m)-linux/bin" - source .github/github_test.sh diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml deleted file mode 100644 index 8180965f9..000000000 --- a/.github/workflows/linux.yml +++ /dev/null @@ -1,75 +0,0 @@ -name: Linux Build CI - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true -jobs: - build: - - runs-on: ubuntu-20.04 - strategy: - matrix: - configuration: ['debug', 'release'] - compiler: ['gcc', 'clang'] - platform: ['x64'] - steps: - - name: select gcc 10 - run: | - sudo update-alternatives \ - --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 \ - --slave /usr/bin/g++ g++ /usr/bin/g++-10 \ - --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-10 \ - --slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-10 \ - --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-10 \ - --slave /usr/bin/gcov gcov /usr/bin/gcov-10 \ - --slave /usr/bin/gcov-dump gcov-dump /usr/bin/gcov-dump-10 \ - --slave /usr/bin/gcov-tool gcov-tool /usr/bin/gcov-tool-10 - - uses: actions/checkout@v3 - with: - submodules: 'true' - fetch-depth: '0' - - uses: robinraju/release-downloader@v1.7 - with: - latest: true - repository: "shader-slang/swiftshader" - fileName: "vk_swiftshader_linux_${{matrix.platform}}.zip" - - name: build - run: | - CC=${{matrix.compiler}} - CONFIGURATION=${{matrix.configuration}} - ARCH=${{matrix.platform}} - TARGETARCH=${{matrix.platform}} - if [[ "$CC" == "clang" ]]; then - CFLAGS=-Werror - CPPFLAGS=-Werror - CXXFLAGS=-Werror - fi - source ./github_build.sh - - uses: actions/upload-artifact@v3 - with: - name: slang-build-${{matrix.configuration}}-${{matrix.platform}}-${{matrix.compiler}} - path: | - slang.h - slang-com-helper.h - slang-com-ptr.h - slang-tag-version.h - slang-gfx.h - prelude/*.h - bin/**/*.dll - bin/**/*.exe - bin/**/*.so - bin/**/slangc - bin/**/slangd - docs/*.md - - name: test - run: - CONFIGURATION=${{matrix.configuration}} - CC=${{matrix.compiler}} - ARCH=${{matrix.platform}} - PATH="${PATH:+${PATH}:}$(pwd)/external/slang-binaries/spirv-tools/$(uname -m)-linux/bin" - source .github/github_test.sh diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml deleted file mode 100644 index 12993528d..000000000 --- a/.github/workflows/macos.yml +++ /dev/null @@ -1,74 +0,0 @@ -name: MacOS Build CI - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true -jobs: - build: - name: MacOS Build CI - runs-on: macos-latest - - strategy: - matrix: - configuration: ['release'] # 'debug' - compiler: ['clang'] - platform: ['aarch64'] - targetPlatform: ['aarch64'] - steps: - - uses: actions/checkout@v3 - with: - submodules: 'true' - fetch-depth: '0' - - name: build - run: | - CC=${{matrix.compiler}} - CONFIGURATION=${{matrix.configuration}} - ARCH=${{matrix.platform}} - TARGETARCH=${{matrix.targetPlatform}} - CPPFLAGS=-Werror - CFLAGS=-Werror - CXXFLAGS=-Werror - source ./github_macos_build.sh - - name: Package - id: package - run: | - export SLANG_OS_NAME=macos - export SLANG_ARCH_NAME=${{matrix.targetPlatform}} - export TAG_NAME=`git describe --tags` - export SLANG_TAG=${TAG_NAME#v} - echo "tag:$TAG_NAME" - echo "slang-tag:$SLANG_TAG" - export SLANG_BINARY_ARCHIVE=slang-${SLANG_TAG}-${SLANG_OS_NAME}-${SLANG_ARCH_NAME}.zip - echo "creating zip" - 7z a ${SLANG_BINARY_ARCHIVE} slang.h - 7z a ${SLANG_BINARY_ARCHIVE} slang-com-helper.h - 7z a ${SLANG_BINARY_ARCHIVE} slang-com-ptr.h - 7z a ${SLANG_BINARY_ARCHIVE} slang-tag-version.h - 7z a ${SLANG_BINARY_ARCHIVE} slang-gfx.h - 7z a ${SLANG_BINARY_ARCHIVE} prelude/*.h - 7z a ${SLANG_BINARY_ARCHIVE} bin/*/*/libslang.dylib - 7z a ${SLANG_BINARY_ARCHIVE} bin/*/*/libslang-glslang.dylib - 7z a ${SLANG_BINARY_ARCHIVE} bin/*/*/libgfx.dylib - 7z a ${SLANG_BINARY_ARCHIVE} bin/*/*/slangc - 7z a ${SLANG_BINARY_ARCHIVE} bin/*/*/slangd - 7z a ${SLANG_BINARY_ARCHIVE} docs/*.md - 7z a ${SLANG_BINARY_ARCHIVE} README.md - 7z a ${SLANG_BINARY_ARCHIVE} LICENSE - echo "SLANG_BINARY_ARCHIVE=${SLANG_BINARY_ARCHIVE}" >> $GITHUB_OUTPUT - - uses: actions/upload-artifact@v3 - with: - name: slang-build-${{matrix.configuration}}-${{matrix.targetPlatform}}-${{matrix.compiler}} - path: | - ${{ steps.package.outputs.SLANG_BINARY_ARCHIVE }} - - name: test - if: ${{ matrix.targetPlatform != 'x64' }} - run: - CONFIGURATION=${{matrix.configuration}} - CC=${{matrix.compiler}} - ARCH=${{matrix.targetPlatform}} - source .github/github_test.sh diff --git a/.github/workflows/release-linux-arm64.yml b/.github/workflows/release-linux-arm64.yml deleted file mode 100644 index aa7b8f832..000000000 --- a/.github/workflows/release-linux-arm64.yml +++ /dev/null @@ -1,56 +0,0 @@ -on: - push: - # Sequence of patterns matched against refs/tags - tags: - - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 - -name: Linux ARM64 Release - -jobs: - build: - name: Upload Release Asset - runs-on: ['self-hosted', 'Linux', 'ARM64'] - strategy: - matrix: - configuration: ['release'] - compiler: ['gcc'] - platform: ['aarch64'] - targetPlatform: ['aarch64'] - steps: - - uses: actions/checkout@v3 - with: - submodules: 'true' - fetch-depth: '0' - - name: Build release project - id: build - run: | - echo "starting to build..." - export CC=${{matrix.compiler}} - export CONFIGURATION=${{matrix.configuration}} - export ARCH=${{matrix.platform}} - export TARGETARCH=${{matrix.targetPlatform}} - echo "building..." - source ./github_build.sh - echo "creating binary archieves..." - export SLANG_OS_NAME=linux - export SLANG_ARCH_NAME=`uname -p` - export TAG_NAME=`git describe --tags` - export SLANG_TAG=${TAG_NAME#v} - echo "tag:$TAG_NAME" - echo "slang-tag:$SLANG_TAG" - export SLANG_BINARY_ARCHIVE=slang-${SLANG_TAG}-${SLANG_OS_NAME}-${SLANG_ARCH_NAME}.zip - export SLANG_BINARY_ARCHIVE_TAR=slang-${SLANG_TAG}-${SLANG_OS_NAME}-${SLANG_ARCH_NAME}.tar.gz - echo "creating zip" - zip -r ${SLANG_BINARY_ARCHIVE} bin/*/*/slangc bin/*/*/slangd bin/*/*/libslang.so bin/*/*/libslang-glslang.so bin/*/*/libgfx.so docs/*.md README.md LICENSE slang.h slang-com-helper.h slang-com-ptr.h slang-tag-version.h slang-gfx.h prelude/*.h - echo "creating tar" - tar -czf ${SLANG_BINARY_ARCHIVE_TAR} bin/*/*/slangc bin/*/*/slangd bin/*/*/libslang.so bin/*/*/libslang-glslang.so bin/*/*/libgfx.so docs/*.md README.md LICENSE slang.h slang-com-helper.h slang-com-ptr.h slang-tag-version.h slang-gfx.h prelude/*.h - echo "SLANG_BINARY_ARCHIVE=${SLANG_BINARY_ARCHIVE}" >> $GITHUB_OUTPUT - echo "SLANG_BINARY_ARCHIVE_TAR=${SLANG_BINARY_ARCHIVE_TAR}" >> $GITHUB_OUTPUT - - name: UploadBinary - uses: softprops/action-gh-release@v1 - with: - files: | - ${{ steps.build.outputs.SLANG_BINARY_ARCHIVE }} - ${{ steps.build.outputs.SLANG_BINARY_ARCHIVE_TAR }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release-linux-glibc-2-17.yml b/.github/workflows/release-linux-glibc-2-17.yml index 8a912ecc2..59f50ffd2 100644 --- a/.github/workflows/release-linux-glibc-2-17.yml +++ b/.github/workflows/release-linux-glibc-2-17.yml @@ -1,16 +1,14 @@ on: push: - # Sequence of patterns matched against refs/tags tags: - - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 + - 'v*' name: centos7-gcc9 Release jobs: build: runs-on: ubuntu-latest steps: - - name: Check out the repo - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: submodules: 'true' fetch-depth: '0' @@ -19,38 +17,43 @@ jobs: - name: Run the build process with Docker uses: addnab/docker-run-action@v3 with: - image: slangdeveloper/centos7-gcc9:cmake - options: -v ${{ github.workspace }}:/home/app -v /etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt - run: | - source /opt/rh/devtoolset-9/enable - cd /home/app - git config --global --add safe.directory /home/app - /cmake-3.30.0-linux-x86_64/bin/cmake --preset default - /cmake-3.30.0-linux-x86_64/bin/cmake --build --preset release - - - name: CreatePackages - id: build + image: slangdeveloper/centos7-gcc9:cmake + options: -v ${{ github.workspace }}:/home/app -v /etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt + run: | + export PATH=$PATH:/cmake-3.30.0-linux-x86_64/bin/ + + source /opt/rh/devtoolset-9/enable + + cd /home/app + git config --global --add safe.directory /home/app + cmake --preset default --fresh -DSLANG_SLANG_LLVM_FLAVOR=DISABLE -DSLANG_EMBED_STDLIB=1 + cmake --build --preset release + cpack --preset release -G ZIP + cpack --preset release -G TGZ + + - name: Package Slang + id: package + run: | + triggering_ref=${{ github.ref_name }} + version=${triggering_ref#v} + base=$(pwd)/slang-${version}-linux-x86_64-glibc-2.17 + + sudo mv "$(pwd)/build/dist-release/slang.zip" "${base}.zip" + echo "SLANG_BINARY_ARCHIVE_ZIP=${base}.zip" >> $GITHUB_OUTPUT + + sudo mv "$(pwd)/build/dist-release/slang.tar.gz" "${base}.tar.gz" + echo "SLANG_BINARY_ARCHIVE_TAR=${base}.tar.gz" >> $GITHUB_OUTPUT + + - name: File check run: | - echo "creating binary archieves..." - export SLANG_OS_NAME=linux - export SLANG_ARCH_NAME=`uname -p` - export TAG_NAME=`git describe --tags` - export SLANG_TAG=${TAG_NAME#v} - echo "tag:$TAG_NAME" - echo "slang-tag:$SLANG_TAG" - export SLANG_BINARY_ARCHIVE=slang-${SLANG_TAG}-${SLANG_OS_NAME}-${SLANG_ARCH_NAME}-glibc-2.17.zip - export SLANG_BINARY_ARCHIVE_TAR=slang-${SLANG_TAG}-${SLANG_OS_NAME}-${SLANG_ARCH_NAME}-glibc-2.17.tar.gz - echo "creating zip" - zip -r ${SLANG_BINARY_ARCHIVE} build/Release/bin/slangc build/Release/bin/slangd build/Release/lib/libslang.so build/Release/lib/libslang-glslang.so build/Release/lib/libgfx.so docs/*.md README.md LICENSE slang.h slang-com-helper.h slang-com-ptr.h slang-tag-version.h slang-gfx.h prelude/*.h - echo "creating tar" - tar -czf ${SLANG_BINARY_ARCHIVE_TAR} build/Release/bin/slangc build/Release/bin/slangd build/Release/lib/libslang.so build/Release/lib/libslang-glslang.so build/Release/lib/libgfx.so docs/*.md README.md LICENSE slang.h slang-com-helper.h slang-com-ptr.h slang-tag-version.h slang-gfx.h prelude/*.h - echo "SLANG_BINARY_ARCHIVE=${SLANG_BINARY_ARCHIVE}" >> $GITHUB_OUTPUT - echo "SLANG_BINARY_ARCHIVE_TAR=${SLANG_BINARY_ARCHIVE_TAR}" >> $GITHUB_OUTPUT + find "build/dist-release" ! -iname '*.md' ! -iname '*.h' -type f | xargs file + - name: UploadBinary uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/v') with: files: | - ${{ steps.build.outputs.SLANG_BINARY_ARCHIVE }} - ${{ steps.build.outputs.SLANG_BINARY_ARCHIVE_TAR }} + ${{ steps.package.outputs.SLANG_BINARY_ARCHIVE_ZIP }} + ${{ steps.package.outputs.SLANG_BINARY_ARCHIVE_TAR }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release-linux.yml b/.github/workflows/release-linux.yml deleted file mode 100644 index 3c7d1c75e..000000000 --- a/.github/workflows/release-linux.yml +++ /dev/null @@ -1,68 +0,0 @@ -on: - push: - # Sequence of patterns matched against refs/tags - tags: - - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 - -name: Linux Release - -jobs: - build: - name: Upload Release Asset - runs-on: ubuntu-20.04 - strategy: - matrix: - configuration: ['release'] - compiler: ['gcc'] - platform: ['x64'] - targetPlatform: ['x64'] - steps: - - name: select gcc 10 - run: | - sudo update-alternatives \ - --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 \ - --slave /usr/bin/g++ g++ /usr/bin/g++-10 \ - --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-10 \ - --slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-10 \ - --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-10 \ - --slave /usr/bin/gcov gcov /usr/bin/gcov-10 \ - --slave /usr/bin/gcov-dump gcov-dump /usr/bin/gcov-dump-10 \ - --slave /usr/bin/gcov-tool gcov-tool /usr/bin/gcov-tool-10 - - name: Checkout code - uses: actions/checkout@v3 - with: - submodules: 'true' - fetch-depth: '0' - - name: Build release project - id: build - run: | - echo "starting to build..." - export CC=${{matrix.compiler}} - export CONFIGURATION=${{matrix.configuration}} - export ARCH=${{matrix.platform}} - export TARGETARCH=${{matrix.targetPlatform}} - echo "building..." - source ./github_build.sh - echo "creating binary archieves..." - export SLANG_OS_NAME=linux - export SLANG_ARCH_NAME=`uname -p` - export TAG_NAME=`git describe --tags` - export SLANG_TAG=${TAG_NAME#v} - echo "tag:$TAG_NAME" - echo "slang-tag:$SLANG_TAG" - export SLANG_BINARY_ARCHIVE=slang-${SLANG_TAG}-${SLANG_OS_NAME}-${SLANG_ARCH_NAME}.zip - export SLANG_BINARY_ARCHIVE_TAR=slang-${SLANG_TAG}-${SLANG_OS_NAME}-${SLANG_ARCH_NAME}.tar.gz - echo "creating zip" - zip -r ${SLANG_BINARY_ARCHIVE} bin/*/*/slangc bin/*/*/slangd bin/*/*/libslang.so bin/*/*/libslang-glslang.so bin/*/*/libgfx.so bin/*/*/libslang-llvm.so docs/*.md README.md LICENSE slang.h slang-com-helper.h slang-com-ptr.h slang-tag-version.h slang-gfx.h prelude/*.h - echo "creating tar" - tar -czf ${SLANG_BINARY_ARCHIVE_TAR} bin/*/*/slangc bin/*/*/slangd bin/*/*/libslang.so bin/*/*/libslang-glslang.so bin/*/*/libgfx.so bin/*/*/libslang-llvm.so docs/*.md README.md LICENSE slang.h slang-com-helper.h slang-com-ptr.h slang-tag-version.h slang-gfx.h prelude/*.h - echo "SLANG_BINARY_ARCHIVE=${SLANG_BINARY_ARCHIVE}" >> $GITHUB_OUTPUT - echo "SLANG_BINARY_ARCHIVE_TAR=${SLANG_BINARY_ARCHIVE_TAR}" >> $GITHUB_OUTPUT - - name: UploadBinary - uses: softprops/action-gh-release@v1 - with: - files: | - ${{ steps.build.outputs.SLANG_BINARY_ARCHIVE }} - ${{ steps.build.outputs.SLANG_BINARY_ARCHIVE_TAR }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release-macos.yml b/.github/workflows/release-macos.yml deleted file mode 100644 index 9df540007..000000000 --- a/.github/workflows/release-macos.yml +++ /dev/null @@ -1,132 +0,0 @@ -on: - push: - # Sequence of patterns matched against refs/tags - tags: - - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 - -name: MacOS Release - -jobs: - build_with_signing: - name: Upload Release Asset - runs-on: macos-latest - strategy: - matrix: - configuration: ['release'] # 'debug' - compiler: ['clang'] - platform: ['aarch64'] - targetPlatform: ['x64', 'aarch64'] - steps: - - name: Checkout code - uses: actions/checkout@v3 - with: - submodules: 'true' - fetch-depth: '0' - - name: Build release project - id: build - run: | - echo "starting to build..." - export CC=${{matrix.compiler}} - export CONFIGURATION=${{matrix.configuration}} - export ARCH=${{matrix.platform}} - export TARGETARCH=${{matrix.targetPlatform}} - echo "building..." - source ./github_macos_build.sh - - name: "Import signing certificate" - env: - BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }} - P12_PASSWORD: ${{ secrets.P12_PASSWORD }} - KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} - run: | - # create variables - CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12 - KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db - - # import certificate and provisioning profile from secrets - echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode --output $CERTIFICATE_PATH - - # create temporary keychain - security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH - security set-keychain-settings -lut 21600 $KEYCHAIN_PATH - security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH - - # import certificate to keychain - security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH - security list-keychain -d user -s $KEYCHAIN_PATH - - security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k ${KEYCHAIN_PASSWORD} $KEYCHAIN_PATH - - - name: Install nortarize tools - run: | - brew install Bearer/tap/gon - security find-identity -v - brew install coreutils - - name: Sign binaries - env: - IDENTITY_ID: d6ada82a113e4204aaad914e1013e9548ffd30d0 - run: | - /usr/bin/codesign --force --options runtime -s ${IDENTITY_ID} ./bin/macosx-${{matrix.targetPlatform}}/release/libslang.dylib -v - /usr/bin/codesign --force --options runtime -s ${IDENTITY_ID} ./bin/macosx-${{matrix.targetPlatform}}/release/libslang-glslang.dylib -v - /usr/bin/codesign --force --options runtime -s ${IDENTITY_ID} ./bin/macosx-${{matrix.targetPlatform}}/release/libgfx.dylib -v - /usr/bin/codesign --force --options runtime -s ${IDENTITY_ID} ./bin/macosx-${{matrix.targetPlatform}}/release/slangd -v - /usr/bin/codesign --force --options runtime -s ${IDENTITY_ID} ./bin/macosx-${{matrix.targetPlatform}}/release/slangc -v - - name: Package - id: package - run: | - export SLANG_OS_NAME=macos - export SLANG_ARCH_NAME=${{matrix.targetPlatform}} - export TAG_NAME=`git describe --tags` - export SLANG_TAG=${TAG_NAME#v} - echo "tag:$TAG_NAME" - echo "slang-tag:$SLANG_TAG" - export SLANG_BINARY_ARCHIVE=slang-${SLANG_TAG}-${SLANG_OS_NAME}-${SLANG_ARCH_NAME}.zip - echo "creating zip" - 7z a ${SLANG_BINARY_ARCHIVE} slang.h - 7z a ${SLANG_BINARY_ARCHIVE} slang-com-helper.h - 7z a ${SLANG_BINARY_ARCHIVE} slang-com-ptr.h - 7z a ${SLANG_BINARY_ARCHIVE} slang-tag-version.h - 7z a ${SLANG_BINARY_ARCHIVE} slang-gfx.h - 7z a ${SLANG_BINARY_ARCHIVE} prelude/*.h - 7z a ${SLANG_BINARY_ARCHIVE} bin/*/*/libslang.dylib - 7z a ${SLANG_BINARY_ARCHIVE} bin/*/*/libslang-glslang.dylib - 7z a ${SLANG_BINARY_ARCHIVE} bin/*/*/libgfx.dylib - 7z a ${SLANG_BINARY_ARCHIVE} bin/*/*/slangc - 7z a ${SLANG_BINARY_ARCHIVE} bin/*/*/slangd - 7z a ${SLANG_BINARY_ARCHIVE} docs/*.md - 7z a ${SLANG_BINARY_ARCHIVE} README.md - 7z a ${SLANG_BINARY_ARCHIVE} LICENSE - echo "SLANG_BINARY_ARCHIVE=${SLANG_BINARY_ARCHIVE}" >> $GITHUB_OUTPUT - - name: UploadBinary - uses: softprops/action-gh-release@v1 - with: - files: | - ${{ steps.package.outputs.SLANG_BINARY_ARCHIVE }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Notarize - env: - AC_PASSWORD: ${{secrets.APPLE_ID_PASSWORD}} - AC_PROVIDER: ${{secrets.APPLE_ID_PPOVIDER}} - AC_USERNAME: ${{secrets.APPLE_ID_USERNAME}} - run: | - cp ./bin/macosx-${{matrix.targetPlatform}}/release/libslang.dylib libslang.dylib - cp ./bin/macosx-${{matrix.targetPlatform}}/release/libslang-glslang.dylib libslang-glslang.dylib - cp ./bin/macosx-${{matrix.targetPlatform}}/release/libslang.dylib libgfx.dylib - cp ./bin/macosx-${{matrix.targetPlatform}}/release/slangd slangd - cp ./bin/macosx-${{matrix.targetPlatform}}/release/slangc slangc - 7z a slang-macos-dist.zip libslang.dylib - 7z a slang-macos-dist.zip libslang-glslang.dylib - 7z a slang-macos-dist.zip libgfx.dylib - 7z a slang-macos-dist.zip slangd - 7z a slang-macos-dist.zip slangc - cp slang-macos-dist.zip slang-macos-dist-${{matrix.targetPlatform}}.zip - timeout 1000 gon ./extras/macos-notarize.json - - name: UploadNotarizedBinary - if: always() - uses: softprops/action-gh-release@v1 - with: - files: | - slang-macos-dist-${{matrix.targetPlatform}}.zip - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - diff --git a/.github/workflows/release-windows.yml b/.github/workflows/release-windows.yml deleted file mode 100644 index f4cacd873..000000000 --- a/.github/workflows/release-windows.yml +++ /dev/null @@ -1,116 +0,0 @@ -on: - push: - # Sequence of patterns matched against refs/tags - tags: - - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 - -name: Windows Release - -jobs: - build: - name: Upload Release Asset - Windows - runs-on: windows-latest - strategy: - matrix: - configuration: ['Release'] - platform: ['Win32', 'x64', 'aarch64'] - steps: - - uses: actions/checkout@v3 - with: - submodules: 'true' - fetch-depth: '0' - - name: setup-msbuild - uses: microsoft/setup-msbuild@v1 - - - name: msbuild (x64 tools) - # If we are building for ARM64 we want to build x64 first, so that all generated files are produced - if: ${{ matrix.platform == 'aarch64' }} - run: | - .\premake.bat vs2019 --arch=x64 --ignore-deps=slang-llvm,slang-glslang --no-progress=true - MSBuild.exe slang.sln -v:m -m -property:Configuration=Release -property:Platform=x64 -property:WindowsTargetPlatformVersion=10.0.19041.0 - Remove-Item .\bin\* -Recurse -Force - .\premake.bat vs2019 --arch=${{matrix.platform}} --ignore-deps=slang-llvm,slang-glslang --no-progress=true --skip-source-generation=true --deploy-slang-llvm=false --deploy-slang-glslang=false - # Do the premake for the actual target, downloading dependencies if necessary - - name: premake - if: ${{ matrix.platform != 'aarch64' }} - run: - .\premake.bat vs2019 --enable-embed-stdlib=true --arch=${{matrix.platform}} --deps=true --no-progress=true - - name: tag-version - run: .\make-slang-tag-version.bat - - name: msbuild - run: - MSBuild.exe slang.sln -v:m -m -property:Configuration=${{matrix.configuration}} -property:Platform=${{matrix.platform}} -property:WindowsTargetPlatformVersion=10.0.19041.0 - - name: archive - id: archive - run: | - echo "achiving files..." - if ("${{matrix.platform}}" -eq "aarch64") - { - $slangDeployPlatform = "win-arm64" - } - elseif ("${{matrix.platform}}" -eq "x64") - { - $slangDeployPlatform = "win64" - } - else - { - $slangDeployPlatform = "win32" - } - $tagName = & git describe --tags - $slangVersion = $tagName.TrimStart("v") - $binArchive = "slang-$slangVersion-$slangDeployPlatform.zip" - - echo "name=SLANG_BINARY_ARCHIVE::$binArchive" - echo "SLANG_WIN32_BINARY_ARCHIVE=$binArchive" >> $env:GITHUB_OUTPUT - - 7z a "$binArchive" slang.h - 7z a "$binArchive" slang-com-helper.h - 7z a "$binArchive" slang-com-ptr.h - 7z a "$binArchive" slang-tag-version.h - 7z a "$binArchive" slang-gfx.h - 7z a "$binArchive" prelude\*.h - 7z a "$binArchive" bin\*\*\slang.dll - 7z a "$binArchive" bin\*\*\slang.lib - 7z a "$binArchive" bin\*\*\slang-rt.lib - 7z a "$binArchive" bin\*\*\slang-rt.dll - 7z a "$binArchive" bin\*\*\slang-glslang.dll - 7z a "$binArchive" bin\*\*\slang-llvm.dll - 7z a "$binArchive" bin\*\*\gfx.dll - 7z a "$binArchive" bin\*\*\gfx.lib - 7z a "$binArchive" bin\*\*\slangc.exe - 7z a "$binArchive" bin\*\*\slangd.exe - 7z a "$binArchive" docs\*.md - 7z a "$binArchive" README.md - 7z a "$binArchive" LICENSE - - $srcArchive = "slang-$slangVersion-source.zip" - echo "SLANG_SOURCE_ARCHIVE=$srcArchive" >> $env:GITHUB_OUTPUT - - 7z a "$srcArchive" slang.h - 7z a "$srcArchive" slang-com-helper.h - 7z a "$srcArchive" slang-com-ptr.h - 7z a "$srcArchive" slang-tag-version.h - 7z a "$srcArchive" slang-gfx.h - 7z a "$srcArchive" prelude\*.h - 7z a "$srcArchive" source\*\*.h - 7z a "$srcArchive" source\*\*.cpp - 7z a "$srcArchive" docs\*.md - 7z a "$srcArchive" README.md - 7z a "$srcArchive" LICENSE - - name: Check outputs - shell: pwsh - run: echo "binary is ${{ steps.archive.outputs.SLANG_WIN32_BINARY_ARCHIVE }}" - - name: UploadBinary - uses: softprops/action-gh-release@v1 - with: - files: | - ${{ steps.archive.outputs.SLANG_WIN32_BINARY_ARCHIVE }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: UploadSource - uses: softprops/action-gh-release@v1 - if: ${{ matrix.platform == 'x64' }} - with: - files: ${{ steps.archive.outputs.SLANG_SOURCE_ARCHIVE }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..2fefe5bd9 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,181 @@ +name: Release + +on: + push: + # Also run on pushes to the main branch so that we can keep the llvm and sccache + # caches filled in a scope available to everyone + branches: + - master + tags: + - 'v*' + +jobs: + release: + strategy: + matrix: + os: [linux, macos, windows] + config: [release] + platform: [x86_64, aarch64] + test-category: [smoke] + include: + - {os: linux, runs-on: ubuntu-20.04, compiler: gcc} + - {os: windows, runs-on: windows-latest, compiler: cl} + - {os: macos, runs-on: macos-latest, compiler: clang} + + - {build-slang-llvm: false} + - {os: linux, platform: x86_64, build-slang-llvm: true} + - {os: windows, platform: x86_64, build-slang-llvm: true} + - {os: macos, platform: aarch64, build-slang-llvm: true} + fail-fast: false + runs-on: ${{ matrix.runs-on }} + container: ${{ matrix.image || '' }} + + defaults: + run: + shell: bash + + steps: + - uses: actions/checkout@v3 + with: + submodules: 'true' + 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: ${{matrix.build-slang-llvm}} + + - name: Build slang generators + run: | + cmake --workflow --preset generators --fresh + mkdir build-platform-generators + cmake --install build --config Release --component generators --prefix build-platform-generators + + - name: Change dev tools to host arch (windows) + uses: ilammy/msvc-dev-cmd@v1 + with: + arch: ${{matrix.platform == 'aarch64' && 'amd64_arm64' || 'amd64'}} + sdk: "10.0.19041.0" + + - name: Change dev tools to host arch (linux and macos) + run: | + if [[ "${{inputs.os}}" == linux* && "${{inputs.platform}}" == "aarch64" && "$(uname -m)" != "aarch64" ]]; then + export CC=aarch64-linux-gnu-gcc + export CXX=aarch64-linux-gnu-g++ + fi + CMAKE_OSX_ARCHITECTURES="${{matrix.platform}}" + CMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES//aarch64/arm64} + + echo "CC=$CC" >> "$GITHUB_ENV" + echo "CXX=$CXX" >> "$GITHUB_ENV" + echo "CMAKE_OSX_ARCHITECTURES=$CMAKE_OSX_ARCHITECTURES" >> "$GITHUB_ENV" + + - name: Build Slang + run: | + if [[ "${{ matrix.os }}" == "windows" && "${{ matrix.config }}" != "release" ]]; then + echo "Please see ci.yml for the steps to make debug builds work on Windows" >&2 + exit 1 + fi + + cmake --preset default --fresh \ + -DSLANG_GENERATORS_PATH=build-platform-generators/bin \ + -DSLANG_ENABLE_EXAMPLES=OFF \ + -DSLANG_EMBED_STDLIB=ON \ + -DSLANG_SLANG_LLVM_FLAVOR=$( + [[ "${{matrix.build-slang-llvm}}" = "true" ]] && echo "USE_SYSTEM_LLVM" || echo "DISABLE") + + cmake --build --preset "${{matrix.config}}" + + - name: Sign and notarize binaries + if: matrix.os == 'macos' && startsWith(github.ref, 'refs/tags/v') + id: notarize + env: + BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }} + P12_PASSWORD: ${{ secrets.P12_PASSWORD }} + KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} + IDENTITY_ID: d6ada82a113e4204aaad914e1013e9548ffd30d0 + AC_PASSWORD: ${{secrets.APPLE_ID_PASSWORD}} + AC_PROVIDER: ${{secrets.APPLE_ID_PPOVIDER}} + AC_USERNAME: ${{secrets.APPLE_ID_USERNAME}} + run: | + brew install Bearer/tap/gon + security find-identity -v + brew install coreutils + + # create variables + CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12 + KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db + + # import certificate and provisioning profile from secrets + echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode --output $CERTIFICATE_PATH + + # create temporary keychain + security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH + security set-keychain-settings -lut 21600 $KEYCHAIN_PATH + security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH + + # import certificate to keychain + security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH + security list-keychain -d user -s $KEYCHAIN_PATH + + security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k ${KEYCHAIN_PASSWORD} $KEYCHAIN_PATH + + signedFiles + find "${bin_dir}" "${lib_dir}" -type f -perm +111 \ + | xargs codesign --force --options runtime -s "${IDENTITY_ID}" -v + + binaries=( + "${lib_dir}/libslang.dylib" + "${lib_dir}/libslang-rt.dylib" + "${lib_dir}/libslang-glslang.dylib" + "${lib_dir}/libslang-llvm.dylib" + "${lib_dir}/libgfx.dylib" + "${bin_dir}/slangd" + "${bin_dir}/slangc" + ) + for b in "${binaries[@]}"; do + if [[ -f "$b" ]]; then + 7z a "slang-macos-dist.zip" "${existing_files[@]}" + fi + done + + timeout 1000 gon ./extras/macos-notarize.json + + cp slang-macos-dist.zip "slang-macos-dist-${{matrix.platform}}.zip" + echo "SLANG_NOTARIZED_DIST=slang-macos-dist-${{matrix.platform}}.zip" >> $GITHUB_OUTPUT + + - name: Package Slang + id: package + run: | + # For the release, also generate a tar.gz file + cpack --preset "$config" -G ZIP + cpack --preset "$config" -G TGZ + triggering_ref=${{ github.ref_name }} + base=$(pwd)/slang-${triggering_ref#v}-${{matrix.os}}-${{matrix.platform}} + mv "$(pwd)/build/dist-${config}/slang.zip" "${base}.zip" + echo "SLANG_BINARY_ARCHIVE_ZIP=${base}.zip" >> $GITHUB_OUTPUT + mv "$(pwd)/build/dist-${config}/slang.tar.gz" "${base}.tar.gz" + echo "SLANG_BINARY_ARCHIVE_TAR=${base}.tar.gz" >> $GITHUB_OUTPUT + + - name: File check + run: | + find "build/dist-$config" ! -iname '*.md' ! -iname '*.h' -type f | xargs file + if [ "${{matrix.os}}" = "macos" ]; then + find "build/dist-$config" ! -iname '*.md' ! -iname '*.h' -type f | + xargs codesign --verify --verbose=2 || + echo "code signing failed" + fi + + - name: UploadBinary + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/v') + with: + files: | + ${{ steps.package.outputs.SLANG_BINARY_ARCHIVE_ZIP }} + ${{ steps.package.outputs.SLANG_BINARY_ARCHIVE_TAR }} + ${{ steps.notarize.outputs.SLANG_NOTARIZED_DIST }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/verify-solution-file.yml b/.github/workflows/verify-solution-file.yml deleted file mode 100644 index df4503dad..000000000 --- a/.github/workflows/verify-solution-file.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: Verify-VSProjects - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - build: - runs-on: windows-latest - steps: - - uses: actions/checkout@v3 - with: - submodules: 'true' - fetch-depth: '1' - - name: verify - run: | - & .\premake.bat vs2019 --deps=true - $diff = & git diff - if ($diff.length -ne 0) - { - $diff - throw "error: vs project file verification failed." - } diff --git a/.github/workflows/vk-gl-cts-nightly.yml b/.github/workflows/vk-gl-cts-nightly.yml index 3a328001b..587e7db30 100644 --- a/.github/workflows/vk-gl-cts-nightly.yml +++ b/.github/workflows/vk-gl-cts-nightly.yml @@ -10,22 +10,45 @@ env: DISABLE_CTS_SLANG: 0 jobs: build: - runs-on: [Windows, self-hosted] + strategy: + matrix: + include: + # Self-hosted falcor tests + - os: windows + compiler: cl + platform: x86_64 + config: release + warnings-as-errors: false + test-category: full + full-gpu-tests: false + runs-on: [Windows, self-hosted] timeout-minutes: 180 + defaults: + run: + shell: bash steps: - uses: actions/checkout@v4 with: submodules: 'true' fetch-depth: '0' - - name: setup-msbuild - uses: microsoft/setup-msbuild@v1 - - name: build slang + - 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: | - .\premake.bat vs2019 --arch=x64 --deps=true --no-progress=true --enable-cuda=true - - .\make-slang-tag-version.bat - - MSBuild.exe slang.sln -v:m -m -property:Configuration=Release -property:Platform=x64 -property:WindowsTargetPlatformVersion=10.0.19041.0 -maxcpucount:12 + cmake --preset default --fresh \ + -DSLANG_SLANG_LLVM_FLAVOR=USE_SYSTEM_LLVM \ + -DCMAKE_COMPILE_WARNING_AS_ERROR=${{matrix.warnings-as-errors}} \ + -DSLANG_ENABLE_CUDA=1 \ + -DSLANG_ENABLE_EXAMPLES=0 \ + -DSLANG_ENABLE_GFX=0 \ + -DSLANG_ENABLE_TESTS=1 + cmake --workflow --preset "${{matrix.config}}" - uses: robinraju/release-downloader@v1.7 with: latest: true @@ -40,19 +63,19 @@ jobs: path: test-lists sparse-checkout-cone-mode: false - name: vkcts setup + shell: pwsh run: | Expand-Archive VK-GL-CTS_WithSlang-0.0.3-win64.zip - copy ${{ github.workspace }}\bin\windows-x64\release\slang.dll ${{ github.workspace }}\VK-GL-CTS_WithSlang-0.0.3-win64\VK-GL-CTS_WithSlang-0.0.3-win64\slang.dll - - copy ${{ github.workspace }}\bin\windows-x64\release\slang-glslang.dll ${{ github.workspace }}\VK-GL-CTS_WithSlang-0.0.3-win64\VK-GL-CTS_WithSlang-0.0.3-win64\slang-glslang.dll + copy ${{ github.workspace }}\build\Release\bin\slang.dll ${{ github.workspace }}\VK-GL-CTS_WithSlang-0.0.3-win64\VK-GL-CTS_WithSlang-0.0.3-win64\slang.dll + copy ${{ github.workspace }}\build\Release\bin\slang-glslang.dll ${{ github.workspace }}\VK-GL-CTS_WithSlang-0.0.3-win64\VK-GL-CTS_WithSlang-0.0.3-win64\slang-glslang.dll + copy ${{ github.workspace }}\build\Release\bin\test-server.exe ${{ github.workspace }}\VK-GL-CTS_WithSlang-0.0.3-win64\VK-GL-CTS_WithSlang-0.0.3-win64\test-server.exe copy ${{ github.workspace }}\test-lists\test-lists\slang-passing-tests.txt ${{ github.workspace }}\VK-GL-CTS_WithSlang-0.0.3-win64\VK-GL-CTS_WithSlang-0.0.3-win64\slang-passing-tests.txt - copy ${{ github.workspace }}\test-lists\test-lists\slang-waiver-tests.xml ${{ github.workspace }}\VK-GL-CTS_WithSlang-0.0.3-win64\VK-GL-CTS_WithSlang-0.0.3-win64\slang-waiver-tests.xml - copy ${{ github.workspace }}\bin\windows-x64\release\test-server.exe ${{ github.workspace }}\VK-GL-CTS_WithSlang-0.0.3-win64\VK-GL-CTS_WithSlang-0.0.3-win64\test-server.exe - name: vkcts run + shell: pwsh working-directory: ${{ github.workspace }}\VK-GL-CTS_WithSlang-0.0.3-win64\VK-GL-CTS_WithSlang-0.0.3-win64 run: | .\deqp-vk.exe --deqp-archive-dir=${{ github.workspace }}\VK-GL-CTS_WithSlang-0.0.3-win64\VK-GL-CTS_WithSlang-0.0.3-win64 --deqp-caselist-file=${{ github.workspace }}\VK-GL-CTS_WithSlang-0.0.3-win64\VK-GL-CTS_WithSlang-0.0.3-win64\slang-passing-tests.txt --deqp-waiver-file=${{ github.workspace }}\VK-GL-CTS_WithSlang-0.0.3-win64\VK-GL-CTS_WithSlang-0.0.3-win64\slang-waiver-tests.xml diff --git a/.github/workflows/windows-selfhosted.yml b/.github/workflows/windows-selfhosted.yml deleted file mode 100644 index ce2c82010..000000000 --- a/.github/workflows/windows-selfhosted.yml +++ /dev/null @@ -1,52 +0,0 @@ -# This is a basic workflow to help you get started with Actions - -name: Full GPU Tests (Windows) - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - build: - runs-on: [Windows, self-hosted] - timeout-minutes: 100 - continue-on-error: true - strategy: - fail-fast: false - matrix: - configuration: ['Release'] - platform: ['x64'] - include: - - platform: x64 - testPlatform: x64 - - platform: x64 - testCategory: full - steps: - - uses: actions/checkout@v3 - with: - submodules: 'true' - fetch-depth: '0' - - name: setup-msbuild - uses: microsoft/setup-msbuild@v1 - - name: build - run: | - .\premake.bat vs2019 --arch=${{matrix.platform}} --deps=true --no-progress=true --enable-cuda=true - - .\make-slang-tag-version.bat - - MSBuild.exe slang.sln -v:m -m -property:Configuration=${{matrix.configuration}} -property:Platform=${{matrix.platform}} -maxcpucount:12 - - name: test-glsl - run: | - $ErrorActionPreference = "SilentlyContinue" - where.exe spirv-dis - spirv-dis --version - $env:SLANG_RUN_SPIRV_VALIDATION='1' - .\bin\windows-${{matrix.testPlatform}}\${{matrix.configuration}}\slang-test.exe tests/ -use-test-server -server-count 8 -emit-spirv-via-glsl -expected-failure-list tests/expected-failure.txt -api vk 2>&1 - - - name: test - run: | - $ErrorActionPreference = "SilentlyContinue" - .\bin\windows-${{matrix.testPlatform}}\${{matrix.configuration}}\slang-test.exe -use-test-server -server-count 8 -api all-cpu - diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml deleted file mode 100644 index 04085aad2..000000000 --- a/.github/workflows/windows.yml +++ /dev/null @@ -1,76 +0,0 @@ -# This is a basic workflow to help you get started with Actions - -name: Windows Build CI - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true -jobs: - build: - runs-on: windows-latest - strategy: - matrix: - configuration: ['Debug', 'Release'] - platform: ['Win32', 'x64'] - include: - - platform: Win32 - testPlatform: x86 - - platform: x64 - testPlatform: x64 - - testCategory: quick - - platform: x64 - testCategory: full - - configuration: Debug - testCategory: smoke - steps: - - uses: actions/checkout@v3 - with: - submodules: 'true' - fetch-depth: '0' - - uses: robinraju/release-downloader@v1.7 - with: - latest: true - repository: "shader-slang/swiftshader" - fileName: "vk_swiftshader_windows_${{matrix.testPlatform}}.zip" - - name: setup-msbuild - uses: microsoft/setup-msbuild@v1 - - name: build - run: | - .\premake.bat vs2019 --enable-embed-stdlib=true --arch=${{matrix.platform}} --deps=true --no-progress=true - - .\make-slang-tag-version.bat - - MSBuild.exe slang.sln -v:m -m -property:Configuration=${{matrix.configuration}} -property:Platform=${{matrix.platform}} -property:WindowsTargetPlatformVersion=10.0.19041.0 -warnAsError - - uses: actions/upload-artifact@v3 - with: - name: slang-build-${{matrix.configuration}}-${{matrix.platform}}-${{matrix.compiler}} - path: | - slang.h - slang-com-helper.h - slang-com-ptr.h - slang-tag-version.h - slang-gfx.h - prelude/*.h - bin/**/*.dll - bin/**/*.exe - bin/**/*.so - bin/**/slangc - bin/**/slangd - docs/*.md - README.md - LICENSE - - name: test - run: | - $slangTestBinDir = ".\bin\windows-${{matrix.testPlatform}}\${{matrix.configuration}}\"; - $spirvToolsBinDir = ".\external\slang-binaries\spirv-tools\windows-${{matrix.testPlatform}}\bin\"; - $env:Path += ";$slangTestBinDir;$spirvToolsBinDir"; - $env:SLANG_RUN_SPIRV_VALIDATION='1'; - $env:SLANG_USE_SPV_SOURCE_LANGUAGE_UNKNOWN='1'; - Expand-Archive "vk_swiftshader_windows_${{matrix.testPlatform}}.zip" -DestinationPath $slangTestBinDir; - & "$slangTestBinDir\slang-test.exe" -api all-dx12 -appveyor -bindir "$slangTestBinDir\" -platform ${{matrix.testPlatform}} -configuration ${{matrix.configuration}} -category ${{matrix.testCategory}} -expected-failure-list tests/expected-failure-github.txt 2>&1; - -- cgit v1.2.3