commit ed38bc5b19bb021847602b73dd62d26f79772cf9
parent c64b344d2f72743c6432bfbec901f47d214f99ba
Author: Ryan Sepassi <rsepassi@gmail.com>
Date: Mon, 25 May 2026 16:09:42 -0700
Tighten release binary size
Diffstat:
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
@@ -1,16 +1,22 @@
CC = clang
AR = ar
LD = ld
+STRIP = strip
BUILD_DIR ?= build
SYSROOT = $(shell xcrun --show-sdk-path)
RELEASE ?= 0
+HOST_UNAME := $(shell uname -s)
.DEFAULT_GOAL := all
ifeq ($(RELEASE),1)
HOST_OPTFLAGS ?= -O2
HOST_MODE_CPPFLAGS = -DNDEBUG
-HOST_MODE_CFLAGS =
-HOST_MODE_LDFLAGS =
+HOST_MODE_CFLAGS = -ffunction-sections -fdata-sections
+ifeq ($(HOST_UNAME),Darwin)
+HOST_MODE_LDFLAGS = -Wl,-dead_strip
+else
+HOST_MODE_LDFLAGS = -Wl,--gc-sections
+endif
else
HOST_OPTFLAGS ?= -O0
HOST_MODE_CPPFLAGS =
@@ -240,6 +246,9 @@ $(LIB_AR): $(LIB_RELOC_OBJ)
$(BIN): $(DRIVER_OBJS) $(LIB_AR) $(BUILD_CONFIG)
$(CC) $(HOST_LDFLAGS) -o $@ $(DRIVER_OBJS) $(LIB_AR)
+ifeq ($(RELEASE),1)
+ $(STRIP) $@
+endif
$(BUILD_DIR)/lib/%.o: src/%.c Makefile $(BUILD_CONFIG)
@mkdir -p $(dir $@)