Skip to content

Commit d2ede45

Browse files
authored
Add WinArm64 support. (#3)
1 parent 6e1baa3 commit d2ede45

File tree

3 files changed

+27
-12
lines changed

3 files changed

+27
-12
lines changed

basis_universal

Submodule basis_universal updated 224 files

build/BuildWindowsTask.cs

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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)\nset(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

Comments
 (0)