diff options
author | 2021-11-24 21:05:15 +0000 | |
---|---|---|
committer | 2021-11-24 21:05:15 +0000 | |
commit | cc712668f0c357a4056e28fd435d1359e3c9a48b (patch) | |
tree | c9c270b19671549a4890e57b32114cd8b52fbcb9 | |
parent | f7dbf5ac3892a27bcbb99072b57fcd46e57a51b2 (diff) | |
download | bun-cc712668f0c357a4056e28fd435d1359e3c9a48b.tar.gz bun-cc712668f0c357a4056e28fd435d1359e3c9a48b.tar.zst bun-cc712668f0c357a4056e28fd435d1359e3c9a48b.zip |
mimalloc: patch malloc/freelithdew/picohttp-mimalloc
-rw-r--r-- | Makefile | 13 | ||||
-rw-r--r-- | build.zig | 29 |
2 files changed, 35 insertions, 7 deletions
@@ -818,7 +818,13 @@ PICOHTTP_BUILD_FLAGS = \ CLAP_BUILD_FLAGS = --pkg-begin clap $(DEPS_DIR)/zig-clap/clap.zig --pkg-end -MIMALLOC_BUILD_FLAGS = \ +MIMALLOC_BUILD_FLAGS = -cflags -DMI_ALLOC_OVERRIDE + +ifeq ($(OS_NAME), darwin) +MIMALLOC_BUILD_FLAGS += -DMI_OSX_ZONE=1 +endif + +MIMALLOC_BUILD_FLAGS += -- \ -I src/deps/mimalloc/include \ src/deps/mimalloc/src/stats.c \ src/deps/mimalloc/src/random.c \ @@ -835,6 +841,11 @@ MIMALLOC_BUILD_FLAGS = \ src/deps/mimalloc/src/options.c \ src/deps/mimalloc/src/init.c +ifeq ($(OS_NAME), darwin) +MIMALLOC_BUILD_FLAGS += \ + src/deps/mimalloc/src/alloc-override-osx.c +endif + build-unit: @rm -rf zig-out/bin/$(testname) @mkdir -p zig-out/bin @@ -8,8 +8,10 @@ pub fn addPicoHTTP(step: *std.build.LibExeObjStep) void { } pub fn addMimalloc(step: *std.build.LibExeObjStep) void { - step.addIncludeDir("src/deps/mimalloc/include"); - step.addCSourceFiles(&.{ + var source_files = std.ArrayList([]const u8).init(step.builder.allocator); + defer source_files.deinit(); + + inline for (.{ "src/deps/mimalloc/src/stats.c", "src/deps/mimalloc/src/random.c", "src/deps/mimalloc/src/os.c", @@ -24,7 +26,22 @@ pub fn addMimalloc(step: *std.build.LibExeObjStep) void { "src/deps/mimalloc/src/heap.c", "src/deps/mimalloc/src/options.c", "src/deps/mimalloc/src/init.c", - }, &.{}); + }) |source_file| { + source_files.append(source_file) catch unreachable; + } + + var source_flags = std.ArrayList([]const u8).init(step.builder.allocator); + defer source_flags.deinit(); + + source_flags.append("-DMI_ALLOC_OVERRIDE") catch unreachable; + + if (step.target.getOsTag().isDarwin()) { + source_files.append("src/deps/mimalloc/src/alloc-override-osx.c") catch unreachable; + source_flags.append("-DMI_OSX_ZONE=1") catch unreachable; + } + + step.addIncludeDir("src/deps/mimalloc/include"); + step.addCSourceFiles(source_files.items, source_flags.items); } fn panicIfNotFound(comptime filepath: []const u8) []const u8 { @@ -323,10 +340,10 @@ pub fn build(b: *std.build.Builder) !void { { headers_obj.setTarget(target); - headers_obj.addPackagePath("clap", "src/deps/zig-clap/clap.zig"); - - headers_obj.setOutputDir(output_dir); headers_obj.setBuildMode(mode); + headers_obj.setOutputDir(output_dir); + + headers_obj.addPackagePath("clap", "src/deps/zig-clap/clap.zig"); headers_obj.linkLibC(); headers_obj.linkLibCpp(); headers_obj.bundle_compiler_rt = true; |