aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Kenta Iwasaki <kenta@lithdew.net> 2021-11-24 21:05:15 +0000
committerGravatar Kenta Iwasaki <kenta@lithdew.net> 2021-11-24 21:05:15 +0000
commitcc712668f0c357a4056e28fd435d1359e3c9a48b (patch)
treec9c270b19671549a4890e57b32114cd8b52fbcb9
parentf7dbf5ac3892a27bcbb99072b57fcd46e57a51b2 (diff)
downloadbun-lithdew/picohttp-mimalloc.tar.gz
bun-lithdew/picohttp-mimalloc.tar.zst
bun-lithdew/picohttp-mimalloc.zip
mimalloc: patch malloc/freelithdew/picohttp-mimalloc
Diffstat (limited to '')
-rw-r--r--Makefile13
-rw-r--r--build.zig29
2 files changed, 35 insertions, 7 deletions
diff --git a/Makefile b/Makefile
index 08497583b..1c9e691f9 100644
--- a/Makefile
+++ b/Makefile
@@ -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
diff --git a/build.zig b/build.zig
index c0b59110d..7d4305ae8 100644
--- a/build.zig
+++ b/build.zig
@@ -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;