Skip to content

Windows Release

Windows Release #1

Workflow file for this run

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
$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 }}