on: push: # Sequence of patterns matched against refs/tags tags: - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 name: Upload Release Asset - Windows jobs: build: name: Upload Release Asset - Windows runs-on: windows-latest strategy: matrix: configuration: ['Release'] platform: ['Win32', 'x64'] steps: - uses: actions/checkout@v2.3.4 with: submodules: 'true' fetch-depth: '0' - name: setup-msbuild uses: microsoft/setup-msbuild@v1 # If we are building for aarch64 we want to build x64 first, so that all generated files are produced - name: msbuild (x64 tools) if: ${{ matrix.platform == 'aarch64' }} run: | .\premake.bat vs2017 --arch=x64 --ignore-deps=slang-llvm MSBuild.exe slang.sln -v:m -m -property:Configuration=Release -property:Platform=x64 -property:WindowsTargetPlatformVersion=10.0.19041.0 # Do the premake for the actual target, downloading dependencies if necessary - name: premake run: .\premake.bat vs2017 --enable-embed-stdlib=true --arch=${{matrix.platform}} --deps=true --no-progress=true - 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-aarch64" } 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 "::set-output name=SLANG_WIN32_BINARY_ARCHIVE::$binArchive" 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-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" docs\*.md $srcArchive = "slang-$slangVersion-source.zip" echo "::set-output name=SLANG_SOURCE_ARCHIVE::$srcArchive" 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 }}