@@ -9,17 +9,32 @@ public sealed class BuildWindowsTask : FrostingTask<BuildContext>
99
1010 public override void Run ( BuildContext context )
1111 {
12- var buildWorkingDir = "basis_universal/" ;
13-
14- // needed until https://github.com/BinomialLLC/basis_universal/pull/391 gets merged
15- context . ReplaceTextInFiles ( "basis_universal/CMakeLists.txt" , "project(basisu)" , "project(basisu C CXX)\n set(CMAKE_CXX_STANDARD 17)" ) ;
12+ BuildForArchitecture ( context , "x64" , "windows-x64" ) ;
13+ BuildForArchitecture ( context , "ARM64" , "windows-arm64" , "-DSSE=OFF" ) ;
14+ }
1615
17- context . StartProcess ( "cmake" , new ProcessSettings { WorkingDirectory = buildWorkingDir , Arguments = "-DSAN=ON -DSTATIC=TRUE CMakeLists.txt" } ) ;
18- context . ReplaceTextInFiles ( "basis_universal/basisu.vcxproj" , "MultiThreadedDLL" , "MultiThreaded" ) ;
19- context . ReplaceTextInFiles ( "basis_universal/basisu_encoder.vcxproj" , "MultiThreadedDLL" , "MultiThreaded" ) ;
20- context . ReplaceTextInFiles ( "basis_universal/examples.vcxproj" , "MultiThreadedDLL" , "MultiThreaded" ) ;
16+ private void BuildForArchitecture ( BuildContext context , string cmakeArch , string rid , string cmakeOptions = "" )
17+ {
18+ var buildWorkingDir = $ "basis_universal/{ rid } ";
19+ context . CreateDirectory ( buildWorkingDir ) ;
20+
21+ context . StartProcess ( "cmake" , new ProcessSettings { WorkingDirectory = buildWorkingDir , Arguments = $ "-A { cmakeArch } { cmakeOptions } -DSAN=ON -DSTATIC=TRUE ../" } ) ;
22+ context . ReplaceTextInFiles ( $ "basis_universal/basisu.vcxproj", "MultiThreadedDLL" , "MultiThreaded" ) ;
23+ context . ReplaceTextInFiles ( $ "basis_universal/basisu_encoder.vcxproj", "MultiThreadedDLL" , "MultiThreaded" ) ;
24+ context . ReplaceTextInFiles ( $ "basis_universal/examples.vcxproj", "MultiThreadedDLL" , "MultiThreaded" ) ;
2125 context . StartProcess ( "cmake" , new ProcessSettings { WorkingDirectory = buildWorkingDir , Arguments = "--build . --config release" } ) ;
22- var files = Directory . GetFiles ( System . IO . Path . Combine ( buildWorkingDir , "bin" ) , "basisu.exe" , SearchOption . TopDirectoryOnly ) ;
23- context . CopyFile ( files [ 0 ] , $ "{ context . ArtifactsDir } /basisu.exe") ;
26+
27+ context . CreateDirectory ( $ "{ context . ArtifactsDir } /{ rid } ") ;
28+ foreach ( var file in Directory . GetFiles ( System . IO . Path . Combine ( "basis_universal" ) , "*.exe" , SearchOption . AllDirectories ) )
29+ {
30+ context . Information ( $ "Found { file } ") ;
31+ }
32+ var files = Directory . GetFiles ( System . IO . Path . Combine ( "basis_universal" , "bin" ) , "basisu.exe" , SearchOption . TopDirectoryOnly ) ;
33+ context . Information ( $ "Copying { files . Length } to { context . ArtifactsDir } /{ rid } ") ;
34+ foreach ( var file in files )
35+ {
36+ context . Information ( $ "Copying { file } to { context . ArtifactsDir } /{ rid } /basisu.exe") ;
37+ }
38+ context . CopyFile ( files [ 0 ] , $ "{ context . ArtifactsDir } /{ rid } /basisu.exe") ;
2439 }
2540}
0 commit comments