From 626d4170fed88fda43e48b2457d424e8afbe6ae3 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Sun, 4 Feb 2024 16:09:40 -0800 Subject: [PATCH] move simdutf to a pkg --- .gitattributes | 3 +- build.zig | 10 +++- build.zig.zon | 1 + pkg/simdutf/build.zig | 62 ++++++++++++++++++++ pkg/simdutf/build.zig.zon | 8 +++ pkg/simdutf/main.zig | 0 {src/simd => pkg/simdutf/vendor}/simdutf.cpp | 0 {src/simd => pkg/simdutf/vendor}/simdutf.h | 0 8 files changed, 80 insertions(+), 4 deletions(-) create mode 100644 pkg/simdutf/build.zig create mode 100644 pkg/simdutf/build.zig.zon create mode 100644 pkg/simdutf/main.zig rename {src/simd => pkg/simdutf/vendor}/simdutf.cpp (100%) rename {src/simd => pkg/simdutf/vendor}/simdutf.h (100%) diff --git a/.gitattributes b/.gitattributes index 1bd04599a..f4d030ea3 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,6 +1,5 @@ vendor/** linguist-vendored website/** linguist-documentation pkg/cimgui/vendor/** linguist-vendored -src/simd/simdutf.h linguist-vendored -src/simd/simdutf.cpp linguist-vendored +pkg/simdutf/vendor/** linguist-vendored src/terminal/res/** linguist-vendored diff --git a/build.zig b/build.zig index 8058be2d4..1564bb672 100644 --- a/build.zig +++ b/build.zig @@ -951,6 +951,10 @@ fn addDeps( .target = target, .optimize = optimize, }); + const simdutf_dep = b.dependency("simdutf", .{ + .target = target, + .optimize = optimize, + }); const libpng_dep = b.dependency("libpng", .{ .target = target, .optimize = optimize, @@ -1006,10 +1010,8 @@ fn addDeps( // C++ files step.linkLibCpp(); step.addIncludePath(.{ .path = "src" }); - step.addIncludePath(.{ .path = "src/simd" }); step.addCSourceFiles(.{ .files = &.{ "src/simd/index_of.cpp", - "src/simd/simdutf.cpp", "src/simd/vt.cpp", } }); @@ -1067,6 +1069,10 @@ fn addDeps( step.linkLibrary(highway_dep.artifact("highway")); try static_libs.append(highway_dep.artifact("highway").getEmittedBin()); + // simdutf + step.linkLibrary(simdutf_dep.artifact("simdutf")); + try static_libs.append(simdutf_dep.artifact("simdutf").getEmittedBin()); + // Spirv-Cross step.linkLibrary(spirv_cross_dep.artifact("spirv_cross")); try static_libs.append(spirv_cross_dep.artifact("spirv_cross").getEmittedBin()); diff --git a/build.zig.zon b/build.zig.zon index ce295cc28..73a391eec 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -37,6 +37,7 @@ .oniguruma = .{ .path = "./pkg/oniguruma" }, .opengl = .{ .path = "./pkg/opengl" }, .pixman = .{ .path = "./pkg/pixman" }, + .simdutf = .{ .path = "./pkg/simdutf" }, .zlib = .{ .path = "./pkg/zlib" }, // Shader translation diff --git a/pkg/simdutf/build.zig b/pkg/simdutf/build.zig new file mode 100644 index 000000000..9ab1881b8 --- /dev/null +++ b/pkg/simdutf/build.zig @@ -0,0 +1,62 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) !void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + + const module = b.addModule("simdutf", .{ + .root_source_file = .{ .path = "main.zig" }, + .target = target, + .optimize = optimize, + }); + + const lib = b.addStaticLibrary(.{ + .name = "simdutf", + .target = target, + .optimize = optimize, + }); + lib.linkLibCpp(); + lib.addIncludePath(.{ .path = "vendor" }); + module.addIncludePath(.{ .path = "vendor" }); + + if (target.result.isDarwin()) { + const apple_sdk = @import("apple_sdk"); + try apple_sdk.addPaths(b, &lib.root_module); + try apple_sdk.addPaths(b, module); + } + + var flags = std.ArrayList([]const u8).init(b.allocator); + defer flags.deinit(); + try flags.appendSlice(&.{}); + + lib.addCSourceFiles(.{ + .flags = flags.items, + .files = &.{ + "vendor/simdutf.cpp", + }, + }); + lib.installHeadersDirectoryOptions(.{ + .source_dir = .{ .path = "vendor" }, + .install_dir = .header, + .install_subdir = "", + .include_extensions = &.{".h"}, + }); + + b.installArtifact(lib); + + { + const test_exe = b.addTest(.{ + .name = "test", + .root_source_file = .{ .path = "main.zig" }, + .target = target, + .optimize = optimize, + }); + test_exe.linkLibrary(lib); + + var it = module.import_table.iterator(); + while (it.next()) |entry| test_exe.root_module.addImport(entry.key_ptr.*, entry.value_ptr.*); + const tests_run = b.addRunArtifact(test_exe); + const test_step = b.step("test", "Run tests"); + test_step.dependOn(&tests_run.step); + } +} diff --git a/pkg/simdutf/build.zig.zon b/pkg/simdutf/build.zig.zon new file mode 100644 index 000000000..07afe182c --- /dev/null +++ b/pkg/simdutf/build.zig.zon @@ -0,0 +1,8 @@ +.{ + .name = "simdutf", + .version = "4.0.9", + .paths = .{""}, + .dependencies = .{ + .apple_sdk = .{ .path = "../apple-sdk" }, + }, +} diff --git a/pkg/simdutf/main.zig b/pkg/simdutf/main.zig new file mode 100644 index 000000000..e69de29bb diff --git a/src/simd/simdutf.cpp b/pkg/simdutf/vendor/simdutf.cpp similarity index 100% rename from src/simd/simdutf.cpp rename to pkg/simdutf/vendor/simdutf.cpp diff --git a/src/simd/simdutf.h b/pkg/simdutf/vendor/simdutf.h similarity index 100% rename from src/simd/simdutf.h rename to pkg/simdutf/vendor/simdutf.h