diff options
| author | Yong He <yonghe@outlook.com> | 2022-09-28 13:42:40 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-28 13:42:40 -0700 |
| commit | eb5c6b93543ca1423117045dbbfee0b6f653d392 (patch) | |
| tree | bef912602dc22b2ac624eb5630450d8303e43e0f | |
| parent | 7708d205cb186f2b95d8daa2d8e0c655488fc34a (diff) | |
Make github CI build aarch64 binaries on release. (#2417)
| -rw-r--r-- | .github/workflows/linux.yml | 1 | ||||
| -rw-r--r-- | .github/workflows/macos.yml | 2 | ||||
| -rw-r--r-- | .github/workflows/release-linux.yml | 2 | ||||
| -rw-r--r-- | .github/workflows/release-macos.yml | 30 | ||||
| -rw-r--r-- | .github/workflows/release-windows.yml | 13 | ||||
| -rw-r--r-- | .github/workflows/windows.yml | 7 | ||||
| -rw-r--r-- | build/visual-studio/run-generators/run-generators.vcxproj | 64 | ||||
| -rw-r--r-- | github_build.sh | 18 | ||||
| -rw-r--r-- | github_macos_build.sh | 17 | ||||
| -rw-r--r-- | premake5.lua | 105 |
10 files changed, 148 insertions, 111 deletions
diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index ebc658792..3d7ceee8b 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -25,6 +25,7 @@ jobs: CC=${{matrix.compiler}} CONFIGURATION=${{matrix.configuration}} ARCH=${{matrix.platform}} + TARGETARCH=${{matrix.platform}} if [[ "$CC" == "clang" ]]; then CFLAGS=-Werror CPPFLAGS=-Werror diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index a10467f06..68214d525 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -16,7 +16,6 @@ jobs: configuration: ['release'] # 'debug' compiler: ['clang'] platform: ['x64'] - steps: - uses: actions/checkout@v2.3.4 with: @@ -27,6 +26,7 @@ jobs: CC=${{matrix.compiler}} CONFIGURATION=${{matrix.configuration}} ARCH=${{matrix.platform}} + TARGETARCH=${{matrix.platform}} CPPFLAGS=-Werror CFLAGS=-Werror CXXFLAGS=-Werror diff --git a/.github/workflows/release-linux.yml b/.github/workflows/release-linux.yml index c3d075d01..f0e00d77f 100644 --- a/.github/workflows/release-linux.yml +++ b/.github/workflows/release-linux.yml @@ -15,6 +15,7 @@ jobs: configuration: ['release'] compiler: ['gcc'] platform: ['x64'] + targetPlatform: ['x64'] steps: - name: Checkout code uses: actions/checkout@v2 @@ -28,6 +29,7 @@ jobs: 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..." diff --git a/.github/workflows/release-macos.yml b/.github/workflows/release-macos.yml index 1c8a33dd8..663230f5f 100644 --- a/.github/workflows/release-macos.yml +++ b/.github/workflows/release-macos.yml @@ -15,7 +15,23 @@ jobs: configuration: ['release'] # 'debug' compiler: ['clang'] platform: ['x64'] + targetPlatform: ['x64', 'aarch64'] steps: + - name: Checkout code + uses: actions/checkout@v2 + 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 }} @@ -45,20 +61,6 @@ jobs: brew install mitchellh/gon/gon security find-identity -v brew install coreutils - - name: Checkout code - uses: actions/checkout@v2 - 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}} - echo "building..." - source ./github_macos_build.sh - name: Sign binaries env: IDENTITY_ID: d6ada82a113e4204aaad914e1013e9548ffd30d0 diff --git a/.github/workflows/release-windows.yml b/.github/workflows/release-windows.yml index b3d69e57a..1b186b187 100644 --- a/.github/workflows/release-windows.yml +++ b/.github/workflows/release-windows.yml @@ -13,7 +13,7 @@ jobs: strategy: matrix: configuration: ['Release'] - platform: ['Win32', 'x64'] + platform: ['Win32', 'x64', 'aarch64'] steps: - uses: actions/checkout@v2.3.4 with: @@ -22,17 +22,18 @@ jobs: - 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 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 vs2017 --arch=x64 --ignore-deps=slang-llvm,slang-glslang --no-progress=true + .\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 - + .\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 vs2017 --enable-embed-stdlib=true --arch=${{matrix.platform}} --deps=true --no-progress=true + .\premake.bat vs2019 --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 @@ -42,7 +43,7 @@ jobs: echo "achiving files..." if ("${{matrix.platform}}" -eq "aarch64") { - $slangDeployPlatform = "win-aarch64" + $slangDeployPlatform = "win-arm64" } elseif ("${{matrix.platform}}" -eq "x64") { diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 4fb9f0c58..e201d4613 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -22,12 +22,9 @@ jobs: fetch-depth: '0' - name: setup-msbuild uses: microsoft/setup-msbuild@v1 - - - name: premake - run: - .\premake.bat vs2017 --enable-embed-stdlib=true --arch=${{matrix.platform}} --deps=true --no-progress=true - name: build - run: + run: | + .\premake.bat vs2019 --enable-embed-stdlib=true --arch=${{matrix.platform}} --deps=true --no-progress=true 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: diff --git a/build/visual-studio/run-generators/run-generators.vcxproj b/build/visual-studio/run-generators/run-generators.vcxproj index e95f1ce02..aa948f934 100644 --- a/build/visual-studio/run-generators/run-generators.vcxproj +++ b/build/visual-studio/run-generators/run-generators.vcxproj @@ -262,137 +262,137 @@ <FileType>Document</FileType>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"../../../bin/windows-x86/debug/slang-embed" %(Identity)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"../../../bin/windows-x64/debug/slang-embed" %(Identity)</Command>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">"$(SolutionDir)/bin/windows-x64/debug/slang-embed" %(Identity)</Command>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">"../../../bin/windows-aarch64/debug/slang-embed" %(Identity)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"../../../bin/windows-x86/release/slang-embed" %(Identity)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"../../../bin/windows-x64/release/slang-embed" %(Identity)</Command>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">"$(SolutionDir)/bin/windows-x64/release/slang-embed" %(Identity)</Command>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">"../../../bin/windows-aarch64/release/slang-embed" %(Identity)</Command>
<Outputs>../../../prelude/slang-cpp-host-prelude.h.cpp</Outputs>
<Message>slang-embed %(Identity)</Message>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../../bin/windows-x86/debug/slang-embed.exe</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">../../../bin/windows-x64/debug/slang-embed.exe</AdditionalInputs>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">../../../bin/windows-x64/debug/slang-embed.exe</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">../../../bin/windows-aarch64/debug/slang-embed.exe</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../../bin/windows-x86/release/slang-embed.exe</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">../../../bin/windows-x64/release/slang-embed.exe</AdditionalInputs>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">../../../bin/windows-x64/release/slang-embed.exe</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">../../../bin/windows-aarch64/release/slang-embed.exe</AdditionalInputs>
</CustomBuild>
<CustomBuild Include="..\..\..\prelude\slang-cpp-prelude.h">
<FileType>Document</FileType>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"../../../bin/windows-x86/debug/slang-embed" %(Identity)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"../../../bin/windows-x64/debug/slang-embed" %(Identity)</Command>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">"$(SolutionDir)/bin/windows-x64/debug/slang-embed" %(Identity)</Command>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">"../../../bin/windows-aarch64/debug/slang-embed" %(Identity)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"../../../bin/windows-x86/release/slang-embed" %(Identity)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"../../../bin/windows-x64/release/slang-embed" %(Identity)</Command>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">"$(SolutionDir)/bin/windows-x64/release/slang-embed" %(Identity)</Command>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">"../../../bin/windows-aarch64/release/slang-embed" %(Identity)</Command>
<Outputs>../../../prelude/slang-cpp-prelude.h.cpp</Outputs>
<Message>slang-embed %(Identity)</Message>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../../bin/windows-x86/debug/slang-embed.exe</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">../../../bin/windows-x64/debug/slang-embed.exe</AdditionalInputs>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">../../../bin/windows-x64/debug/slang-embed.exe</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">../../../bin/windows-aarch64/debug/slang-embed.exe</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../../bin/windows-x86/release/slang-embed.exe</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">../../../bin/windows-x64/release/slang-embed.exe</AdditionalInputs>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">../../../bin/windows-x64/release/slang-embed.exe</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">../../../bin/windows-aarch64/release/slang-embed.exe</AdditionalInputs>
</CustomBuild>
<CustomBuild Include="..\..\..\prelude\slang-cuda-prelude.h">
<FileType>Document</FileType>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"../../../bin/windows-x86/debug/slang-embed" %(Identity)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"../../../bin/windows-x64/debug/slang-embed" %(Identity)</Command>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">"$(SolutionDir)/bin/windows-x64/debug/slang-embed" %(Identity)</Command>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">"../../../bin/windows-aarch64/debug/slang-embed" %(Identity)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"../../../bin/windows-x86/release/slang-embed" %(Identity)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"../../../bin/windows-x64/release/slang-embed" %(Identity)</Command>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">"$(SolutionDir)/bin/windows-x64/release/slang-embed" %(Identity)</Command>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">"../../../bin/windows-aarch64/release/slang-embed" %(Identity)</Command>
<Outputs>../../../prelude/slang-cuda-prelude.h.cpp</Outputs>
<Message>slang-embed %(Identity)</Message>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../../bin/windows-x86/debug/slang-embed.exe</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">../../../bin/windows-x64/debug/slang-embed.exe</AdditionalInputs>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">../../../bin/windows-x64/debug/slang-embed.exe</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">../../../bin/windows-aarch64/debug/slang-embed.exe</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../../bin/windows-x86/release/slang-embed.exe</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">../../../bin/windows-x64/release/slang-embed.exe</AdditionalInputs>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">../../../bin/windows-x64/release/slang-embed.exe</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">../../../bin/windows-aarch64/release/slang-embed.exe</AdditionalInputs>
</CustomBuild>
<CustomBuild Include="..\..\..\prelude\slang-hlsl-prelude.h">
<FileType>Document</FileType>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"../../../bin/windows-x86/debug/slang-embed" %(Identity)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"../../../bin/windows-x64/debug/slang-embed" %(Identity)</Command>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">"$(SolutionDir)/bin/windows-x64/debug/slang-embed" %(Identity)</Command>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">"../../../bin/windows-aarch64/debug/slang-embed" %(Identity)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"../../../bin/windows-x86/release/slang-embed" %(Identity)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"../../../bin/windows-x64/release/slang-embed" %(Identity)</Command>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">"$(SolutionDir)/bin/windows-x64/release/slang-embed" %(Identity)</Command>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">"../../../bin/windows-aarch64/release/slang-embed" %(Identity)</Command>
<Outputs>../../../prelude/slang-hlsl-prelude.h.cpp</Outputs>
<Message>slang-embed %(Identity)</Message>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../../bin/windows-x86/debug/slang-embed.exe</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">../../../bin/windows-x64/debug/slang-embed.exe</AdditionalInputs>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">../../../bin/windows-x64/debug/slang-embed.exe</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">../../../bin/windows-aarch64/debug/slang-embed.exe</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../../bin/windows-x86/release/slang-embed.exe</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">../../../bin/windows-x64/release/slang-embed.exe</AdditionalInputs>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">../../../bin/windows-x64/release/slang-embed.exe</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">../../../bin/windows-aarch64/release/slang-embed.exe</AdditionalInputs>
</CustomBuild>
<CustomBuild Include="..\..\..\source\slang\core.meta.slang">
<FileType>Document</FileType>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"../../../bin/windows-x86/debug/slang-generate" %(Identity)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"../../../bin/windows-x64/debug/slang-generate" %(Identity)</Command>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">"$(SolutionDir)/bin/windows-x64/debug/slang-generate" %(Identity)</Command>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">"../../../bin/windows-aarch64/debug/slang-generate" %(Identity)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"../../../bin/windows-x86/release/slang-generate" %(Identity)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"../../../bin/windows-x64/release/slang-generate" %(Identity)</Command>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">"$(SolutionDir)/bin/windows-x64/release/slang-generate" %(Identity)</Command>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">"../../../bin/windows-aarch64/release/slang-generate" %(Identity)</Command>
<Outputs>../../../source/slang/core.meta.slang.h</Outputs>
<Message>slang-generate %(Identity)</Message>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../../bin/windows-x86/debug/slang-generate.exe</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">../../../bin/windows-x64/debug/slang-generate.exe</AdditionalInputs>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">../../../bin/windows-x64/debug/slang-generate.exe</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">../../../bin/windows-aarch64/debug/slang-generate.exe</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../../bin/windows-x86/release/slang-generate.exe</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">../../../bin/windows-x64/release/slang-generate.exe</AdditionalInputs>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">../../../bin/windows-x64/release/slang-generate.exe</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">../../../bin/windows-aarch64/release/slang-generate.exe</AdditionalInputs>
</CustomBuild>
<CustomBuild Include="..\..\..\source\slang\diff.meta.slang">
<FileType>Document</FileType>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"../../../bin/windows-x86/debug/slang-generate" %(Identity)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"../../../bin/windows-x64/debug/slang-generate" %(Identity)</Command>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">"$(SolutionDir)/bin/windows-x64/debug/slang-generate" %(Identity)</Command>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">"../../../bin/windows-aarch64/debug/slang-generate" %(Identity)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"../../../bin/windows-x86/release/slang-generate" %(Identity)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"../../../bin/windows-x64/release/slang-generate" %(Identity)</Command>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">"$(SolutionDir)/bin/windows-x64/release/slang-generate" %(Identity)</Command>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">"../../../bin/windows-aarch64/release/slang-generate" %(Identity)</Command>
<Outputs>../../../source/slang/diff.meta.slang.h</Outputs>
<Message>slang-generate %(Identity)</Message>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../../bin/windows-x86/debug/slang-generate.exe</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">../../../bin/windows-x64/debug/slang-generate.exe</AdditionalInputs>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">../../../bin/windows-x64/debug/slang-generate.exe</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">../../../bin/windows-aarch64/debug/slang-generate.exe</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../../bin/windows-x86/release/slang-generate.exe</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">../../../bin/windows-x64/release/slang-generate.exe</AdditionalInputs>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">../../../bin/windows-x64/release/slang-generate.exe</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">../../../bin/windows-aarch64/release/slang-generate.exe</AdditionalInputs>
</CustomBuild>
<CustomBuild Include="..\..\..\source\slang\hlsl.meta.slang">
<FileType>Document</FileType>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"../../../bin/windows-x86/debug/slang-generate" %(Identity)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"../../../bin/windows-x64/debug/slang-generate" %(Identity)</Command>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">"$(SolutionDir)/bin/windows-x64/debug/slang-generate" %(Identity)</Command>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">"../../../bin/windows-aarch64/debug/slang-generate" %(Identity)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"../../../bin/windows-x86/release/slang-generate" %(Identity)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"../../../bin/windows-x64/release/slang-generate" %(Identity)</Command>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">"$(SolutionDir)/bin/windows-x64/release/slang-generate" %(Identity)</Command>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">"../../../bin/windows-aarch64/release/slang-generate" %(Identity)</Command>
<Outputs>../../../source/slang/hlsl.meta.slang.h</Outputs>
<Message>slang-generate %(Identity)</Message>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../../bin/windows-x86/debug/slang-generate.exe</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">../../../bin/windows-x64/debug/slang-generate.exe</AdditionalInputs>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">../../../bin/windows-x64/debug/slang-generate.exe</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">../../../bin/windows-aarch64/debug/slang-generate.exe</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../../bin/windows-x86/release/slang-generate.exe</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">../../../bin/windows-x64/release/slang-generate.exe</AdditionalInputs>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">../../../bin/windows-x64/release/slang-generate.exe</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">../../../bin/windows-aarch64/release/slang-generate.exe</AdditionalInputs>
</CustomBuild>
<CustomBuild Include="..\..\..\source\slang\slang-ast-reflect.h">
<FileType>Document</FileType>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"../../../bin/windows-x86/debug/slang-cpp-extractor" -d %(RootDir)%(Directory) slang-ast-support-types.h slang-ast-base.h slang-ast-decl.h slang-ast-expr.h slang-ast-modifier.h slang-ast-stmt.h slang-ast-type.h slang-ast-val.h -strip-prefix slang- -o slang-generated -output-fields -mark-suffix _CLASS</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"../../../bin/windows-x64/debug/slang-cpp-extractor" -d %(RootDir)%(Directory) slang-ast-support-types.h slang-ast-base.h slang-ast-decl.h slang-ast-expr.h slang-ast-modifier.h slang-ast-stmt.h slang-ast-type.h slang-ast-val.h -strip-prefix slang- -o slang-generated -output-fields -mark-suffix _CLASS</Command>
- <Command Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">"$(SolutionDir)/bin/windows-x64/debug/slang-cpp-extractor" -d %(RootDir)%(Directory) slang-ast-support-types.h slang-ast-base.h slang-ast-decl.h slang-ast-expr.h slang-ast-modifier.h slang-ast-stmt.h slang-ast-type.h slang-ast-val.h -strip-prefix slang- -o slang-generated -output-fields -mark-suffix _CLASS</Command>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">"../../../bin/windows-aarch64/debug/slang-cpp-extractor" -d %(RootDir)%(Directory) slang-ast-support-types.h slang-ast-base.h slang-ast-decl.h slang-ast-expr.h slang-ast-modifier.h slang-ast-stmt.h slang-ast-type.h slang-ast-val.h -strip-prefix slang- -o slang-generated -output-fields -mark-suffix _CLASS</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"../../../bin/windows-x86/release/slang-cpp-extractor" -d %(RootDir)%(Directory) slang-ast-support-types.h slang-ast-base.h slang-ast-decl.h slang-ast-expr.h slang-ast-modifier.h slang-ast-stmt.h slang-ast-type.h slang-ast-val.h -strip-prefix slang- -o slang-generated -output-fields -mark-suffix _CLASS</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"../../../bin/windows-x64/release/slang-cpp-extractor" -d %(RootDir)%(Directory) slang-ast-support-types.h slang-ast-base.h slang-ast-decl.h slang-ast-expr.h slang-ast-modifier.h slang-ast-stmt.h slang-ast-type.h slang-ast-val.h -strip-prefix slang- -o slang-generated -output-fields -mark-suffix _CLASS</Command>
- <Command Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">"$(SolutionDir)/bin/windows-x64/release/slang-cpp-extractor" -d %(RootDir)%(Directory) slang-ast-support-types.h slang-ast-base.h slang-ast-decl.h slang-ast-expr.h slang-ast-modifier.h slang-ast-stmt.h slang-ast-type.h slang-ast-val.h -strip-prefix slang- -o slang-generated -output-fields -mark-suffix _CLASS</Command>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">"../../../bin/windows-aarch64/release/slang-cpp-extractor" -d %(RootDir)%(Directory) slang-ast-support-types.h slang-ast-base.h slang-ast-decl.h slang-ast-expr.h slang-ast-modifier.h slang-ast-stmt.h slang-ast-type.h slang-ast-val.h -strip-prefix slang- -o slang-generated -output-fields -mark-suffix _CLASS</Command>
<Outputs>../../../source/slang/slang-generated-obj.h;../../../source/slang/slang-generated-obj-macro.h;../../../source/slang/slang-generated-ast.h;../../../source/slang/slang-generated-ast-macro.h;../../../source/slang/slang-generated-value.h;../../../source/slang/slang-generated-value-macro.h</Outputs>
<Message>C++ Extractor %(Identity)</Message>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../../bin/windows-x86/debug/slang-cpp-extractor.exe;../../../source/slang/slang-ast-support-types.h;../../../source/slang/slang-ast-base.h;../../../source/slang/slang-ast-decl.h;../../../source/slang/slang-ast-expr.h;../../../source/slang/slang-ast-modifier.h;../../../source/slang/slang-ast-stmt.h;../../../source/slang/slang-ast-type.h;../../../source/slang/slang-ast-val.h</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">../../../bin/windows-x64/debug/slang-cpp-extractor.exe;../../../source/slang/slang-ast-support-types.h;../../../source/slang/slang-ast-base.h;../../../source/slang/slang-ast-decl.h;../../../source/slang/slang-ast-expr.h;../../../source/slang/slang-ast-modifier.h;../../../source/slang/slang-ast-stmt.h;../../../source/slang/slang-ast-type.h;../../../source/slang/slang-ast-val.h</AdditionalInputs>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">../../../bin/windows-x64/debug/slang-cpp-extractor.exe;../../../source/slang/slang-ast-support-types.h;../../../source/slang/slang-ast-base.h;../../../source/slang/slang-ast-decl.h;../../../source/slang/slang-ast-expr.h;../../../source/slang/slang-ast-modifier.h;../../../source/slang/slang-ast-stmt.h;../../../source/slang/slang-ast-type.h;../../../source/slang/slang-ast-val.h</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug aarch64|ARM'">../../../bin/windows-aarch64/debug/slang-cpp-extractor.exe;../../../source/slang/slang-ast-support-types.h;../../../source/slang/slang-ast-base.h;../../../source/slang/slang-ast-decl.h;../../../source/slang/slang-ast-expr.h;../../../source/slang/slang-ast-modifier.h;../../../source/slang/slang-ast-stmt.h;../../../source/slang/slang-ast-type.h;../../../source/slang/slang-ast-val.h</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../../bin/windows-x86/release/slang-cpp-extractor.exe;../../../source/slang/slang-ast-support-types.h;../../../source/slang/slang-ast-base.h;../../../source/slang/slang-ast-decl.h;../../../source/slang/slang-ast-expr.h;../../../source/slang/slang-ast-modifier.h;../../../source/slang/slang-ast-stmt.h;../../../source/slang/slang-ast-type.h;../../../source/slang/slang-ast-val.h</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">../../../bin/windows-x64/release/slang-cpp-extractor.exe;../../../source/slang/slang-ast-support-types.h;../../../source/slang/slang-ast-base.h;../../../source/slang/slang-ast-decl.h;../../../source/slang/slang-ast-expr.h;../../../source/slang/slang-ast-modifier.h;../../../source/slang/slang-ast-stmt.h;../../../source/slang/slang-ast-type.h;../../../source/slang/slang-ast-val.h</AdditionalInputs>
- <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">../../../bin/windows-x64/release/slang-cpp-extractor.exe;../../../source/slang/slang-ast-support-types.h;../../../source/slang/slang-ast-base.h;../../../source/slang/slang-ast-decl.h;../../../source/slang/slang-ast-expr.h;../../../source/slang/slang-ast-modifier.h;../../../source/slang/slang-ast-stmt.h;../../../source/slang/slang-ast-type.h;../../../source/slang/slang-ast-val.h</AdditionalInputs>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release aarch64|ARM'">../../../bin/windows-aarch64/release/slang-cpp-extractor.exe;../../../source/slang/slang-ast-support-types.h;../../../source/slang/slang-ast-base.h;../../../source/slang/slang-ast-decl.h;../../../source/slang/slang-ast-expr.h;../../../source/slang/slang-ast-modifier.h;../../../source/slang/slang-ast-stmt.h;../../../source/slang/slang-ast-type.h;../../../source/slang/slang-ast-val.h</AdditionalInputs>
</CustomBuild>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/github_build.sh b/github_build.sh index 7e23294a6..bd07da2bb 100644 --- a/github_build.sh +++ b/github_build.sh @@ -7,10 +7,26 @@ chmod u+x premake5 git describe --tags | sed -e "s/\(.*\)/\#define SLANG_TAG_VERSION \"\1\"/" > slang-tag-version.h cat slang-tag-version.h +if [[ "" == "${TARGETARCH}" ]]; then +TARGETARCH=${ARCH} +fi + +if [[ "${ARCH}" != "${TARGETARCH}" ]]; then + # Create the makefile ./premake5 gmake --cc=${CC} --enable-embed-stdlib=true --arch=${ARCH} --deps=true --no-progress=true # Build the configuration -make config=${CONFIGURATION}_x64 -j`nproc` +make config=${CONFIGURATION}_${ARCH} -j`nproc` + +# Create the makefile +./premake5 gmake --cc=${CC} --enable-embed-stdlib=true --arch=${TARGETARCH} --deps=true --no-progress=true --skip-source-generation=true --deploy-slang-llvm=false --deploy-slang-glslang=false +else +# Create the makefile +./premake5 gmake --cc=${CC} --enable-embed-stdlib=true --arch=${TARGETARCH} --deps=true --no-progress=true +fi + +# Build the configuration +make config=${CONFIGURATION}_${TARGETARCH} -j`nproc` diff --git a/github_macos_build.sh b/github_macos_build.sh index 5b8305a02..2fc9fce05 100644 --- a/github_macos_build.sh +++ b/github_macos_build.sh @@ -7,10 +7,25 @@ chmod u+x premake5 git describe --tags | sed -e "s/\(.*\)/\#define SLANG_TAG_VERSION \"\1\"/" > slang-tag-version.h cat slang-tag-version.h +if [[ "" == "${TARGETARCH}" ]]; then +TARGETARCH=${ARCH} +fi + +if [[ "${ARCH}" != "${TARGETARCH}" ]]; then + # Create the makefile ./premake5 gmake --cc=${CC} --enable-xlib=false --enable-embed-stdlib=true --arch=${ARCH} --deps=true --no-progress=true # Build the configuration -make config=${CONFIGURATION}_x64 -j`sysctl -n hw.ncpu` +make config=${CONFIGURATION}_${ARCH} -j`sysctl -n hw.ncpu` + +# Create the makefile +./premake5 gmake --cc=${CC} --enable-xlib=false --enable-embed-stdlib=true --arch=${TARGETARCH} --deps=true --no-progress=true --skip-source-generation=true --deploy-slang-llvm=false --deploy-slang-glslang=false +else +# Create the makefile +./premake5 gmake --cc=${CC} --enable-xlib=false --enable-embed-stdlib=true --arch=${TARGETARCH} --deps=true --no-progress=true +fi +# Build the configuration +make config=${CONFIGURATION}_${TARGETARCH} -j`sysctl -n hw.ncpu`
\ No newline at end of file diff --git a/premake5.lua b/premake5.lua index 02875fc89..c8c1fbf6f 100644 --- a/premake5.lua +++ b/premake5.lua @@ -167,6 +167,29 @@ newoption { allowed = { { "true", "True"}, { "false", "False" } } } + newoption { + trigger = "skip-source-generation", + description = "(Optional) If true will skip source generation steps.", + value = "bool", + default = "false", + allowed = { { "true", "True"}, { "false", "False" } } + } + + newoption { + trigger = "deploy-slang-llvm", + description = "(Optional) If true will copy slang-llvm to output directory.", + value = "bool", + default = "true", + allowed = { { "true", "True"}, { "false", "False" } } + } + newoption { + trigger = "deploy-slang-glslang", + description = "(Optional) If true will copy slang-glslang to output directory.", + value = "bool", + default = "true", + allowed = { { "true", "True"}, { "false", "False" } } + } + buildLocation = _OPTIONS["build-location"] executeBinary = (_OPTIONS["execute-binary"] == "true") buildGlslang = (_OPTIONS["build-glslang"] == "true") @@ -177,7 +200,9 @@ newoption { enableProfile = (_OPTIONS["enable-profile"] == "true") enableEmbedStdLib = (_OPTIONS["enable-embed-stdlib"] == "true") enableXlib = (_OPTIONS["enable-xlib"] == "true") - enableExperimental = (_OPTIONS["enable-experimental-projects"] == "true") + skipSourceGeneration = (_OPTIONS["skip-source-generation"] == "true") + deployLLVM = (_OPTIONS["deploy-slang-llvm"] == "true") + deployGLSLang = (_OPTIONS["deploy-slang-glslang"] == "true") -- If stdlib embedding is enabled, disable stdlib source embedding by default disableStdlibSource = enableEmbedStdLib @@ -1052,28 +1077,15 @@ tool "slangd" kind "ConsoleApp" links { "core", "slang" } - function getWinArm64Filter(isArm64) - if isArm64 then - return { "system:windows", "platforms:aarch64" } - else - return { "system:not windows or platforms:not aarch64" } - end - end - - function getWinArm64BuildDir(isArm64) - if isArm64 then - return "%{wks.location}/bin/windows-x64/%{cfg.buildcfg:lower()}" - else - return "%{cfg.targetdir}" - end + function getBuildDir(isArm64) + + return "%{cfg.targetdir}" end function astReflectGenerator(isArm64) - local f = getWinArm64Filter(isArm64) - local builddir = getWinArm64BuildDir(isArm64) + local builddir = getBuildDir() - table.insert(f, "files:**/slang-ast-reflect.h") - filter(f) + filter("files:**/slang-ast-reflect.h") buildmessage "C++ Extractor %{file.relpath}" @@ -1122,12 +1134,10 @@ tool "slangd" buildinputs(buildInputTable) end - function metaSlangGenerator(isArm64) - local f = getWinArm64Filter(isArm64) - local builddir = getWinArm64BuildDir(isArm64) + function metaSlangGenerator() + local builddir = getBuildDir() - table.insert(f, "files:**.meta.slang") - filter(f) + filter("files:**.meta.slang") -- Specify the "friendly" message that should print to the build log for the action buildmessage "slang-generate %{file.relpath}" @@ -1168,12 +1178,10 @@ tool "slangd" buildinputs { builddir .. "/slang-generate" .. getExecutableSuffix() } end - function preludeGenerator(isArm64) - local f = getWinArm64Filter(isArm64) - local builddir = getWinArm64BuildDir(isArm64) + function preludeGenerator() + local builddir = getBuildDir() - table.insert(f, "files:prelude/*-prelude.h") - filter(f) + filter("files:prelude/*-prelude.h") buildmessage "slang-embed %{file.relpath}" buildcommands { '"' .. builddir .. '/slang-embed" %{file.relpath}' } @@ -1181,6 +1189,8 @@ tool "slangd" buildinputs { builddir .. "/slang-embed" .. getExecutableSuffix() } end + if not skipSourceGeneration then + generatorProject("run-generators", nil) -- We make 'source/slang' the location of the source, to make paths to source @@ -1214,8 +1224,7 @@ tool "slangd" -- We need to run the C++ extractor to generate some include files if executeBinary then - astReflectGenerator(true) - astReflectGenerator(false) + astReflectGenerator() end -- Next, we want to add a custom build rule for each of the @@ -1225,13 +1234,8 @@ tool "slangd" -- defining custom build commands: -- if executeBinary then - metaSlangGenerator(true) - metaSlangGenerator(false) - end - - if executeBinary then - preludeGenerator(true) - preludeGenerator(false) + metaSlangGenerator() + preludeGenerator() end filter { } @@ -1312,18 +1316,13 @@ tool "slangd" filter("files:source/slang/slang-stdlib-api.cpp") -- Note! Has to be an absolute path else doesn't work(!) buildoutputs { absOutputPath } - local f = getWinArm64Filter(true) - table.insert(f, "files:source/slang/slang-stdlib-api.cpp") - filter(f) - buildinputs { getWinArm64BuildDir(true) .. '/slangc-bootstrap' .. executableSuffix } - buildcommands {'"' .. getWinArm64BuildDir(true) .. '/slangc-bootstrap" -archive-type riff-lz4 -save-stdlib-bin-source "%{file.directory}/slang-stdlib-generated.h"' } - f = getWinArm64Filter(false) - table.insert(f, "files:source/slang/slang-stdlib-api.cpp") + filter("files:source/slang/slang-stdlib-api.cpp") + filter(f) buildinputs { "%{cfg.targetdir}/slangc-bootstrap" .. executableSuffix } buildcommands { '"%{cfg.targetdir}/slangc-bootstrap" -archive-type riff-lz4 -save-stdlib-bin-source "%{file.directory}/slang-stdlib-generated.h"' } end - + end -- not skipSourceGeneration -- -- TODO: Slang's current `Makefile` build does some careful incantations @@ -1360,7 +1359,9 @@ tool "slangd" if enableEmbedStdLib then -- We only have this dependency if we are embedding stdlib - dependson { "embed-stdlib-generator" } + if not skipSourceGeneration then + dependson { "embed-stdlib-generator" } + end else -- Disable StdLib embedding defines { "SLANG_WITHOUT_EMBEDDED_STD_LIB" } @@ -1395,12 +1396,14 @@ tool "slangd" -- to generate. We do this by executing the run-generators 'dummy' project -- which produces the appropriate source - dependson { "run-generators" } - + if not skipSourceGeneration then + dependson { "run-generators" } + end + -- If we have slang-llvm copy it local slangLLVMPath = deps:getProjectRelativePath("slang-llvm", "../../..") - if slangLLVMPath then + if slangLLVMPath and deployLLVM then filter { "system:linux or macosx or windows" } local sharedLibName = slangUtil.getSharedLibraryFileName(targetInfo, "slang-llvm") postbuildcommands { @@ -1412,7 +1415,7 @@ tool "slangd" -- If we are not building glslang from source, then be -- sure to copy a binary copy over to the output directory - if not buildGlslang then + if not buildGlslang and slangGlslangPath~=nil and deployGLSLang then filter { "system:linux or macosx or windows" } local sharedLibName = slangUtil.getSharedLibraryFileName(targetInfo, "slang-glslang") postbuildcommands { |
