From 1ce3f865edcc4f2d756952a486435c5a95983453 Mon Sep 17 00:00:00 2001 From: Chuck Walbourn Date: Sat, 4 May 2024 14:47:09 -0500 Subject: [PATCH] Fix build issues with XboxOne and clang (#473) --- CMakePresets.json | 15 +- build/CompilerAndLinker.cmake | 2 +- build/DirectXTex-GitHub-CMake-Dev17.yml | 2 + build/DirectXTex-GitHub-CMake-Xbox.yml | 2 + build/DirectXTex-GitHub-CMake.yml | 2 + build/DirectXTex-GitHub-GDK-Dev17.yml | 220 +++++++++++++++++++++++- build/DirectXTex-GitHub-GDK.yml | 5 +- build/DirectXTex-GitHub-MinGW.yml | 2 + build/DirectXTex-GitHub-Test.yml | 2 + build/DirectXTex-GitHub-WSL.yml | 2 + build/DirectXTex-GitHub.yml | 2 + build/SetupBWOI.cmd | 76 ++++++++ build/SetupBWOI.targets | 5 + 13 files changed, 326 insertions(+), 11 deletions(-) create mode 100644 build/SetupBWOI.cmd diff --git a/CMakePresets.json b/CMakePresets.json index 6f084e9..cbab194 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -134,24 +134,21 @@ { "name": "Scarlett", "cacheVariables": { - "XBOX_CONSOLE_TARGET": "scarlett", - "BUILD_TESTING": false + "XBOX_CONSOLE_TARGET": "scarlett" }, "hidden": true }, { "name": "XboxOne", "cacheVariables": { - "XBOX_CONSOLE_TARGET": "xboxone", - "BUILD_TESTING": false + "XBOX_CONSOLE_TARGET": "xboxone" }, "hidden": true }, { "name": "Durango", "cacheVariables": { - "XBOX_CONSOLE_TARGET": "durango", - "BUILD_TESTING": false + "XBOX_CONSOLE_TARGET": "durango" }, "hidden": true }, @@ -309,6 +306,12 @@ { "name": "x64-Debug-GDKX-S-Clang" , "description": "MSVC for x64 (Debug) Xbox Series X|S Extensions", "inherits": [ "base", "x64", "Debug", "GDKXS", "Clang" ] }, { "name": "x64-Release-GDKX-S-Clang" , "description": "MSVC for x64 (Release) Xbox Series X|S Extensions", "inherits": [ "base", "x64", "Release", "GDKXS", "Clang" ] }, + { "name": "x64-Debug-Scarlett-Clang" , "description": "Clang/LLVM for x64 (Debug) for Xbox Series X|S", "inherits": [ "base", "x64", "Debug", "Clang", "Scarlett" ] }, + { "name": "x64-Release-Scarlett-Clang", "description": "Clang/LLVM for x64 (Release) for Xbox Series X|S", "inherits": [ "base", "x64", "Release", "Clang", "Scarlett" ] }, + + { "name": "x64-Debug-XboxOne-Clang" , "description": "Clang/LLVM for x64 (Debug) for Xbox One", "inherits": [ "base", "x64", "Debug", "Clang", "XboxOne" ] }, + { "name": "x64-Release-XboxOne-Clang" , "description": "Clang/LLVM for x64 (Release) for Xbox One", "inherits": [ "base", "x64", "Release", "Clang", "XboxOne" ] }, + { "name": "x64-Debug-MinGW" , "description": "MinG-W64 (Debug)", "inherits": [ "base", "x64", "Debug", "GNUC", "VCPKG", "MinGW64" ] }, { "name": "x64-Release-MinGW", "description": "MinG-W64 (Release)", "inherits": [ "base", "x64", "Release", "GNUC", "VCPKG", "MinGW64" ] }, { "name": "x86-Debug-MinGW" , "description": "MinG-W32 (Debug)", "inherits": [ "base", "x86", "Debug", "GNUC", "VCPKG", "MinGW32" ] }, diff --git a/build/CompilerAndLinker.cmake b/build/CompilerAndLinker.cmake index 759491f..2a6e864 100644 --- a/build/CompilerAndLinker.cmake +++ b/build/CompilerAndLinker.cmake @@ -57,7 +57,7 @@ endif() #--- Target architecture switches if(XBOX_CONSOLE_TARGET STREQUAL "scarlett") list(APPEND COMPILER_SWITCHES $,/favor:AMD64 /arch:AVX2,-march=znver2>) -elseif(XBOX_CONSOLE_TARGET STREQUAL "xboxone|durago") +elseif(XBOX_CONSOLE_TARGET MATCHES "xboxone|durango") list(APPEND COMPILER_SWITCHES $,/favor:AMD64 /arch:AVX,-march=btver2>) elseif(NOT (${DIRECTX_ARCH} MATCHES "^arm")) if((${DIRECTX_ARCH} MATCHES "x86") OR (CMAKE_SIZEOF_VOID_P EQUAL 4)) diff --git a/build/DirectXTex-GitHub-CMake-Dev17.yml b/build/DirectXTex-GitHub-CMake-Dev17.yml index 70b744c..75315e9 100644 --- a/build/DirectXTex-GitHub-CMake-Dev17.yml +++ b/build/DirectXTex-GitHub-CMake-Dev17.yml @@ -21,6 +21,7 @@ trigger: - '*.md' - LICENSE - '.nuget/*' + - build/*.cmd - build/*.json - build/*.props - build/*.ps1 @@ -35,6 +36,7 @@ pr: - '*.md' - LICENSE - '.nuget/*' + - build/*.cmd - build/*.json - build/*.props - build/*.ps1 diff --git a/build/DirectXTex-GitHub-CMake-Xbox.yml b/build/DirectXTex-GitHub-CMake-Xbox.yml index b56d3f8..3bc50d1 100644 --- a/build/DirectXTex-GitHub-CMake-Xbox.yml +++ b/build/DirectXTex-GitHub-CMake-Xbox.yml @@ -21,6 +21,7 @@ trigger: - '*.md' - LICENSE - '.nuget/*' + - build/*.cmd - build/*.json - build/*.props - build/*.ps1 @@ -35,6 +36,7 @@ pr: - '*.md' - LICENSE - '.nuget/*' + - build/*.cmd - build/*.json - build/*.props - build/*.ps1 diff --git a/build/DirectXTex-GitHub-CMake.yml b/build/DirectXTex-GitHub-CMake.yml index 029c1b1..e80350b 100644 --- a/build/DirectXTex-GitHub-CMake.yml +++ b/build/DirectXTex-GitHub-CMake.yml @@ -21,6 +21,7 @@ trigger: - '*.md' - LICENSE - '.nuget/*' + - build/*.cmd - build/*.json - build/*.props - build/*.ps1 @@ -35,6 +36,7 @@ pr: - '*.md' - LICENSE - '.nuget/*' + - build/*.cmd - build/*.json - build/*.props - build/*.ps1 diff --git a/build/DirectXTex-GitHub-GDK-Dev17.yml b/build/DirectXTex-GitHub-GDK-Dev17.yml index 3f196e4..8f846b5 100644 --- a/build/DirectXTex-GitHub-GDK-Dev17.yml +++ b/build/DirectXTex-GitHub-GDK-Dev17.yml @@ -3,7 +3,7 @@ # # http://go.microsoft.com/fwlink/?LinkId=248926 -# Builds the library with Xbox extensions using the Microsoft GDK. +# Builds the library using the Microsoft GDK. schedules: - cron: "30 3 * * *" @@ -20,7 +20,11 @@ pr: - main paths: include: + - CMakeList.txt - build/DirectXTex-GitHub-GDK-Dev17.yml + - build/*.in + - build/*.cmake + - build/SetupBWOI.* resources: repositories: @@ -38,8 +42,8 @@ variables: EXTRACTED_FOLDER: $(ExtractedFolder) GDK_EDITION: $(GDKEditionNumber) GDKEnableBWOI: true - GITHUB_PAT: $(GITHUBPUBLICTOKEN) URL_FEED: $(ADOFeedURL) + VC_PATH: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC' skipNugetSecurityAnalysis: true # We explicitly call this task so we don't need it to be auto-injected jobs: @@ -194,3 +198,215 @@ jobs: platform: x64 configuration: Release_Scarlett msbuildArchitecture: x64 + +- job: BUILD_GDK_CMAKE_SCAR + displayName: 'Microsoft Game Development Kit (GDK) using CMake (Scarlett)' + timeoutInMinutes: 120 + cancelTimeoutInMinutes: 1 + steps: + - checkout: self + clean: true + fetchTags: false + - task: NuGetToolInstaller@1 + displayName: 'Use NuGet' + inputs: + versionSpec: '6.5.x' + - task: PowerShell@2 + displayName: 'Create nuget.config with single source' + inputs: + targetType: inline + script: | + $xml = @' + + + + + + + '@ + $xml | Set-Content -Path "$(Build.SourcesDirectory)\NuGet.config" + + - task: NuGetCommand@2 + # We have to use a nuget.config to provide the feed for the 'nuget install' option. + displayName: 'NuGet set package source to ADO feed' + inputs: + command: custom + arguments: sources add -Name xboxgdk -Source $(URL_FEED) -ConfigFile $(Build.SourcesDirectory)\NuGet.config + - task: nuget-security-analysis@0 + displayName: 'Secure Supply Chain Analysis' + - task: NuGetCommand@2 + displayName: NuGet install PGDK + inputs: + command: custom + arguments: install -prerelease Microsoft.GDK.PC.$(GDK_EDITION) -ExcludeVersion -OutputDirectory $(EXTRACTED_FOLDER)\GDK + - task: NuGetCommand@2 + displayName: NuGet install GDKX + inputs: + command: custom + arguments: install -prerelease Microsoft.GDK.Xbox.$(GDK_EDITION) -ExcludeVersion -OutputDirectory $(EXTRACTED_FOLDER)\GDK + - task: CmdLine@2 + displayName: Setup BWOI for GDK command-line + inputs: + script: | + call "$(VC_PATH)\Auxiliary\Build\vcvars64.bat" + echo ##vso[task.setvariable variable=WindowsSdkVerBinPath;]%WindowsSdkVerBinPath% + echo ##vso[task.prependpath]%VSINSTALLDIR%Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja + echo ##vso[task.prependpath]%VCINSTALLDIR%Tools\Llvm\x64\bin + echo ##vso[task.prependpath]%WindowsSdkBinPath%x64 + echo ##vso[task.prependpath]%WindowsSdkVerBinPath%x64 + echo ##vso[task.prependpath]%VCToolsInstallDir%bin\HostX64\x64 + call $(Build.SourcesDirectory)\build\SetupBWOI.cmd $(EXTRACTED_FOLDER)\GDK $(GDK_EDITION) Scarlett + echo ##vso[task.setvariable variable=GameDKLatest;]%GameDKLatest% + echo ##vso[task.setvariable variable=GRDKLatest;]%GRDKLatest% + echo ##vso[task.setvariable variable=GXDKLatest;]%GXDKLatest% + echo ##vso[task.setvariable variable=INCLUDE;]%INCLUDE% + echo ##vso[task.setvariable variable=LIB;]%LIB% + echo ##vso[task.prependpath]%ADDBIN% + + failOnStderr: true + - task: CMake@1 + displayName: 'CMake (MSVC): Config Scarlett Debug' + inputs: + cwd: '$(Build.SourcesDirectory)' + cmakeArgs: --preset=x64-Debug-Scarlett + - task: CMake@1 + displayName: 'CMake (MSVC): Build Scarlett Debug' + inputs: + cwd: '$(Build.SourcesDirectory)' + cmakeArgs: --build out\build\x64-Debug-Scarlett + - task: CMake@1 + displayName: 'CMake (MSVC): Config Scarlett Release' + inputs: + cwd: '$(Build.SourcesDirectory)' + cmakeArgs: --preset=x64-Release-Scarlett + - task: CMake@1 + displayName: 'CMake (MSVC): Build Scarlett Release' + inputs: + cwd: '$(Build.SourcesDirectory)' + cmakeArgs: --build out\build\x64-Release-Scarlett + - task: CMake@1 + displayName: 'CMake (Clang): Config Scarlett Debug' + inputs: + cwd: '$(Build.SourcesDirectory)' + cmakeArgs: --preset=x64-Debug-Scarlett-Clang + - task: CMake@1 + displayName: 'CMake (Clang): Build Scarlett Debug' + inputs: + cwd: '$(Build.SourcesDirectory)' + cmakeArgs: --build out\build\x64-Debug-Scarlett-Clang + - task: CMake@1 + displayName: 'CMake (Clang): Config Scarlett Release' + inputs: + cwd: '$(Build.SourcesDirectory)' + cmakeArgs: --preset=x64-Release-Scarlett-Clang + - task: CMake@1 + displayName: 'CMake (Clang): Build Scarlett Release' + inputs: + cwd: '$(Build.SourcesDirectory)' + cmakeArgs: --build out\build\x64-Release-Scarlett-Clang + +- job: BUILD_GDK_CMAKE_XBONE + displayName: 'Microsoft Game Development Kit (GDK) using CMake (XboxOne)' + timeoutInMinutes: 120 + cancelTimeoutInMinutes: 1 + steps: + - checkout: self + clean: true + fetchTags: false + - task: NuGetToolInstaller@1 + displayName: 'Use NuGet' + inputs: + versionSpec: '6.5.x' + - task: PowerShell@2 + displayName: 'Create nuget.config with single source' + inputs: + targetType: inline + script: | + $xml = @' + + + + + + + '@ + $xml | Set-Content -Path "$(Build.SourcesDirectory)\NuGet.config" + + - task: NuGetCommand@2 + # We have to use a nuget.config to provide the feed for the 'nuget install' option. + displayName: 'NuGet set package source to ADO feed' + inputs: + command: custom + arguments: sources add -Name xboxgdk -Source $(URL_FEED) -ConfigFile $(Build.SourcesDirectory)\NuGet.config + - task: nuget-security-analysis@0 + displayName: 'Secure Supply Chain Analysis' + - task: NuGetCommand@2 + displayName: NuGet install PGDK + inputs: + command: custom + arguments: install -prerelease Microsoft.GDK.PC.$(GDK_EDITION) -ExcludeVersion -OutputDirectory $(EXTRACTED_FOLDER)\GDK + - task: NuGetCommand@2 + displayName: NuGet install GDKX + inputs: + command: custom + arguments: install -prerelease Microsoft.GDK.Xbox.$(GDK_EDITION) -ExcludeVersion -OutputDirectory $(EXTRACTED_FOLDER)\GDK + - task: CmdLine@2 + displayName: Setup BWOI for GDK command-line + inputs: + script: | + call "$(VC_PATH)\Auxiliary\Build\vcvars64.bat" + echo ##vso[task.setvariable variable=WindowsSdkVerBinPath;]%WindowsSdkVerBinPath% + echo ##vso[task.prependpath]%VSINSTALLDIR%Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja + echo ##vso[task.prependpath]%VCINSTALLDIR%Tools\Llvm\x64\bin + echo ##vso[task.prependpath]%WindowsSdkBinPath%x64 + echo ##vso[task.prependpath]%WindowsSdkVerBinPath%x64 + echo ##vso[task.prependpath]%VCToolsInstallDir%bin\HostX64\x64 + call $(Build.SourcesDirectory)\build\SetupBWOI.cmd $(EXTRACTED_FOLDER)\GDK $(GDK_EDITION) XboxOne + echo ##vso[task.setvariable variable=GameDKLatest;]%GameDKLatest% + echo ##vso[task.setvariable variable=GRDKLatest;]%GRDKLatest% + echo ##vso[task.setvariable variable=GXDKLatest;]%GXDKLatest% + echo ##vso[task.setvariable variable=INCLUDE;]%INCLUDE% + echo ##vso[task.setvariable variable=LIB;]%LIB% + echo ##vso[task.prependpath]%ADDBIN% + + failOnStderr: true + - task: CMake@1 + displayName: 'CMake (MSVC): Config XboxOne Debug' + inputs: + cwd: '$(Build.SourcesDirectory)' + cmakeArgs: --preset=x64-Debug-XboxOne + - task: CMake@1 + displayName: 'CMake (MSVC): Build XboxOne Debug' + inputs: + cwd: '$(Build.SourcesDirectory)' + cmakeArgs: --build out\build\x64-Debug-XboxOne + - task: CMake@1 + displayName: 'CMake (MSVC): Config XboxOne Release' + inputs: + cwd: '$(Build.SourcesDirectory)' + cmakeArgs: --preset=x64-Release-XboxOne + - task: CMake@1 + displayName: 'CMake (MSVC): Build XboxOne Release' + inputs: + cwd: '$(Build.SourcesDirectory)' + cmakeArgs: --build out\build\x64-Release-XboxOne + - task: CMake@1 + displayName: 'CMake (Clang): Config XboxOne Debug' + inputs: + cwd: '$(Build.SourcesDirectory)' + cmakeArgs: --preset=x64-Debug-XboxOne-Clang + - task: CMake@1 + displayName: 'CMake (Clang): Build XboxOne Debug' + inputs: + cwd: '$(Build.SourcesDirectory)' + cmakeArgs: --build out\build\x64-Debug-XboxOne-Clang + - task: CMake@1 + displayName: 'CMake (Clang): Config XboxOne Release' + inputs: + cwd: '$(Build.SourcesDirectory)' + cmakeArgs: --preset=x64-Release-XboxOne-Clang + - task: CMake@1 + displayName: 'CMake (Clang): Build XboxOne Release' + inputs: + cwd: '$(Build.SourcesDirectory)' + cmakeArgs: --build out\build\x64-Release-XboxOne-Clang diff --git a/build/DirectXTex-GitHub-GDK.yml b/build/DirectXTex-GitHub-GDK.yml index 4a5842c..28f3c5a 100644 --- a/build/DirectXTex-GitHub-GDK.yml +++ b/build/DirectXTex-GitHub-GDK.yml @@ -3,7 +3,7 @@ # # http://go.microsoft.com/fwlink/?LinkId=248926 -# Builds the library with Xbox extensions using the Microsoft GDK. +# Builds the library using the Microsoft GDK. # NOTE: We use x64 MSBuild for the GDK as the NuGets don't include 32-bit support to avoid cross-arch dependencies. @@ -25,6 +25,7 @@ trigger: - CMake* - '.nuget/*' - build/*.cmake + - build/*.cmd - build/*.in - build/*.json - build/*.ps1 @@ -40,6 +41,7 @@ pr: - CMake* - '.nuget/*' - build/*.cmake + - build/*.cmd - build/*.in - build/*.json - build/*.ps1 @@ -60,7 +62,6 @@ variables: EXTRACTED_FOLDER: $(ExtractedFolder) GDK_EDITION: $(GDKEditionNumber) GDKEnableBWOI: true - GITHUB_PAT: $(GITHUBPUBLICTOKEN) URL_FEED: $(ADOFeedURL) skipNugetSecurityAnalysis: true # We explicitly call this task so we don't need it to be auto-injected diff --git a/build/DirectXTex-GitHub-MinGW.yml b/build/DirectXTex-GitHub-MinGW.yml index 83f5219..191f9e6 100644 --- a/build/DirectXTex-GitHub-MinGW.yml +++ b/build/DirectXTex-GitHub-MinGW.yml @@ -21,6 +21,7 @@ trigger: - '*.md' - LICENSE - '.nuget/*' + - build/*.cmd - build/*.json - build/*.props - build/*.ps1 @@ -35,6 +36,7 @@ pr: - '*.md' - LICENSE - '.nuget/*' + - build/*.cmd - build/*.json - build/*.props - build/*.ps1 diff --git a/build/DirectXTex-GitHub-Test.yml b/build/DirectXTex-GitHub-Test.yml index 34fecc7..c727df6 100644 --- a/build/DirectXTex-GitHub-Test.yml +++ b/build/DirectXTex-GitHub-Test.yml @@ -23,6 +23,7 @@ trigger: - CMake* - '.nuget/*' - build/*.cmake + - build/*.cmd - build/*.in - build/*.json - build/*.props @@ -40,6 +41,7 @@ pr: - CMake* - '.nuget/*' - build/*.cmake + - build/*.cmd - build/*.in - build/*.json - build/*.props diff --git a/build/DirectXTex-GitHub-WSL.yml b/build/DirectXTex-GitHub-WSL.yml index b3bd9a2..9cc84c0 100644 --- a/build/DirectXTex-GitHub-WSL.yml +++ b/build/DirectXTex-GitHub-WSL.yml @@ -21,6 +21,7 @@ trigger: - '*.md' - LICENSE - '.nuget/*' + - build/*.cmd - build/*.json - build/*.props - build/*.ps1 @@ -35,6 +36,7 @@ pr: - '*.md' - LICENSE - '.nuget/*' + - build/*.cmd - build/*.json - build/*.props - build/*.ps1 diff --git a/build/DirectXTex-GitHub.yml b/build/DirectXTex-GitHub.yml index c44a06a..ab941f2 100644 --- a/build/DirectXTex-GitHub.yml +++ b/build/DirectXTex-GitHub.yml @@ -23,6 +23,7 @@ trigger: - CMake* - '.nuget/*' - build/*.cmake + - build/*.cmd - build/*.in - build/*.json - build/*.props @@ -41,6 +42,7 @@ pr: - CMake* - '.nuget/*' - build/*.cmake + - build/*.cmd - build/*.in - build/*.json - build/*.props diff --git a/build/SetupBWOI.cmd b/build/SetupBWOI.cmd new file mode 100644 index 0000000..64ef0d4 --- /dev/null +++ b/build/SetupBWOI.cmd @@ -0,0 +1,76 @@ +@echo off +rem Copyright (c) Microsoft Corporation. +rem Licensed under the MIT License. + +if %1.==. goto needpackage +if %2.==. goto needgdk +if %3.==PC. goto haveparams +if %3.==XboxOne. goto haveparams +if %3.==Scarlett. goto haveparams +goto needconsole + +:haveparams +set GXDKEDITION=%2 +echo GXDKEDITION: %GXDKEDITION% + +set PCNUGET=%1\Microsoft.GDK.PC.%GXDKEDITION%\ +if NOT EXIST %PCNUGET% goto missingpcnuget + +set GRDKLatest=%PCNUGET%native\%GXDKEDITION%\GRDK\ +echo GRDKLatest: %GRDKLatest% + +if %3.==PC. goto grdkonly + +set XBOXNUGET=%1\Microsoft.gdk.xbox.%GXDKEDITION%\ +if NOT EXIST %XBOXNUGET% goto missingxboxnuget + +set GXDKLatest=%XBOXNUGET%native\%GXDKEDITION%\GXDK\ +echo GXDKLatest: %GXDKLatest% + +set GameDK=%XBOXNUGET%native\ +set GameDKLatest=%XBOXNUGET%native\%GXDKEDITION%\ + +set ADDBIN=%GXDKLatest%bin\%3;%PCNUGET%native\bin;%XBOXNUGET%native\bin +set ADDINCLUDE=%GXDKLatest%gamekit\include\%3;%GXDKLatest%gamekit\include;%GRDKLatest%gamekit\include +set ADDLIB=%GXDKLatest%gamekit\lib\amd64\%3;%GXDKLatest%gamekit\lib\amd64;%GRDKLatest%gamekit\lib\amd64 +goto continue + +:grdkonly +set GameDK=%PCNUGET%native\ +set GameDKLatest=%PCNUGET%native\%GXDKEDITION%\ + +set ADDBIN=%PCNUGET%native\bin +set ADDINCLUDE=%GRDKLatest%gamekit\include +set ADDLIB=%GRDKLatest%gamekit\lib\amd64 + +:continue +echo GameDK: %GameDK% +echo GameDKLatest: %GameDKLatest% +echo ADDBIN: %ADDBIN% +echo ADDINCLUDE: %ADDINCLUDE% +echo ADDLIB: %ADDLIB% + +set PATH=%ADDBIN%;%PATH% +set INCLUDE=%INCLUDE%;%ADDINCLUDE% +set LIB=%LIB%;%ADDLIB% +exit /b 0 + +:needpackage +echo Usage: This script requires the path to the installed NuGet packages as the first parameter. +exit /b 1 + +:needgdk +echo Usage: This script requires the GDK edition number in YYMMQQ format as the second parameter +exit /b 1 + +:needconsole +echo Usage: This script requires the target type of PC, Scarlett, or XboxOne in the third parameter +exit /b 1 + +:missingpcnuget +echo ERROR - Cannot find Microsoft.GDK.PC. installed at '%1' +exit /b 1 + +:missingxboxnuget +echo ERROR - Cannot find Microsoft.GDK.Xbox. installed at '%1' +exit /b 1 diff --git a/build/SetupBWOI.targets b/build/SetupBWOI.targets index 501a4fa..df94195 100644 --- a/build/SetupBWOI.targets +++ b/build/SetupBWOI.targets @@ -1,6 +1,11 @@ + + C:\xtracted\ $(ExtractedFolder)\