Skip to content

Commit 2458fe5

Browse files
committed
fix(Makefile): update CARGO_ENV and LDFLAGS for improved platform-specific optimizations
1 parent cfe4570 commit 2458fe5

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

Makefile

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ MAKEFLAGS += -j$(CPUS)
3232

3333
# Compiler and flags
3434
CC = gcc
35-
CARGO_ENV = CARGO_TARGET_DIR=$(RUST_TARGET_DIR) RUSTFLAGS="-C opt-level=z -C lto=fat -C codegen-units=1 -C strip=symbols"
35+
CARGO_ENV = CARGO_TARGET_DIR=$(RUST_TARGET_DIR) RUSTFLAGS="$(RUSTFLAGS)"
3636
ifeq ($(PLATFORM),android)
3737
OPENSSL_INSTALL_DIR = $(BUILD_DIR)/openssl/$(PLATFORM)/$(ARCH)
3838
CARGO_ENV += OPENSSL_DIR=$(CURDIR)/$(OPENSSL_INSTALL_DIR)
@@ -50,16 +50,17 @@ VPATH = $(SRC_DIR)
5050

5151
# Rust FFI library
5252
MCP_FFI_LIB = $(RUST_TARGET_DIR)/release/libmcp_ffi.a
53-
LDFLAGS = -L$(RUST_TARGET_DIR)/release -Wl,-dead_strip
53+
LDFLAGS = -L$(RUST_TARGET_DIR)/release
5454

5555
# Platform-specific settings
5656
ifeq ($(PLATFORM),windows)
5757
TARGET := $(DIST_DIR)/mcp.dll
58-
LDFLAGS += -shared
58+
LDFLAGS += -shared -Wl,--gc-sections
5959
DEF_FILE := $(BUILD_DIR)/mcp.def
6060
STRIP = strip --strip-unneeded $@
6161
LIBS = -lmcp_ffi -lws2_32 -luserenv -lbcrypt -lntdll -lgcc -lgcc_eh -lpthread
6262
T_LIBS = -lm
63+
RUSTFLAGS = -C opt-level=z -C lto=fat -C codegen-units=1 -C strip=symbols
6364
else ifeq ($(PLATFORM),macos)
6465
TARGET := $(DIST_DIR)/mcp.dylib
6566
MACOS_MIN_VERSION = 11.0
@@ -70,13 +71,14 @@ else ifeq ($(PLATFORM),macos)
7071
LDFLAGS += -arch $(ARCH)
7172
CFLAGS += -arch $(ARCH)
7273
endif
73-
LDFLAGS += -dynamiclib -undefined dynamic_lookup -headerpad_max_install_names -mmacosx-version-min=$(MACOS_MIN_VERSION)
74+
LDFLAGS += -dynamiclib -undefined dynamic_lookup -headerpad_max_install_names -mmacosx-version-min=$(MACOS_MIN_VERSION) -Wl,-dead_strip
7475
CFLAGS += -mmacosx-version-min=$(MACOS_MIN_VERSION)
7576
CARGO_ENV += MACOSX_DEPLOYMENT_TARGET=$(MACOS_MIN_VERSION)
7677
CARGO = $(CARGO_ENV) cargo
7778
STRIP = strip -x -S -r $@
7879
LIBS = -lmcp_ffi -framework CoreFoundation -framework Security -lresolv
7980
T_LIBS = -lpthread -ldl -lm
81+
RUSTFLAGS = -C opt-level=z -C lto=fat -C codegen-units=1 -C strip=symbols
8082
else ifeq ($(PLATFORM),android)
8183
ifndef ARCH
8284
$(error "Android ARCH must be set to ARCH=x86_64 or ARCH=arm64-v8a")
@@ -98,34 +100,38 @@ else ifeq ($(PLATFORM),android)
98100
CC = $(BIN)/$(ARCH)-linux-$(ANDROID_ABI)-clang
99101
OPENSSL = $(OPENSSL_INSTALL_DIR)/lib/libssl.a
100102
TARGET := $(DIST_DIR)/mcp.so
101-
LDFLAGS += -shared -L$(OPENSSL_INSTALL_DIR)/lib
103+
LDFLAGS += -shared -L$(OPENSSL_INSTALL_DIR)/lib -Wl,--gc-sections
102104
CFLAGS += -fPIC -I$(OPENSSL_INSTALL_DIR)/include
103105
STRIP = $(BIN)/llvm-strip --strip-unneeded $@
104106
LIBS = -lmcp_ffi -ldl -lm -lssl -lcrypto
105107
T_LIBS = -ldl -lm
108+
RUSTFLAGS = -C opt-level=z -C codegen-units=1 -C strip=symbols
106109
else ifeq ($(PLATFORM),ios)
107110
TARGET := $(DIST_DIR)/mcp.dylib
108111
SDK := -isysroot $(shell xcrun --sdk iphoneos --show-sdk-path) -miphoneos-version-min=11.0
109-
LDFLAGS += -dynamiclib $(SDK) -headerpad_max_install_names
112+
LDFLAGS += -dynamiclib $(SDK) -headerpad_max_install_names -Wl,-dead_strip
110113
CFLAGS += -arch arm64 $(SDK)
111114
STRIP = strip -x -S $@
112115
LIBS = -lmcp_ffi -framework CoreFoundation -framework Security -lSystem -lresolv
113116
T_LIBS = -lpthread -ldl -lm
117+
RUSTFLAGS = -C opt-level=z -C lto=fat -C codegen-units=1 -C strip=symbols
114118
else ifeq ($(PLATFORM),ios-sim)
115119
TARGET := $(DIST_DIR)/mcp.dylib
116120
SDK := -isysroot $(shell xcrun --sdk iphonesimulator --show-sdk-path) -miphonesimulator-version-min=11.0
117-
LDFLAGS += -arch x86_64 -arch arm64 -dynamiclib $(SDK) -headerpad_max_install_names
121+
LDFLAGS += -arch x86_64 -arch arm64 -dynamiclib $(SDK) -headerpad_max_install_names -Wl,-dead_strip
118122
CFLAGS += -arch x86_64 -arch arm64 $(SDK)
119123
STRIP = strip -x -S $@
120124
LIBS = -lmcp_ffi -framework CoreFoundation -framework Security -lSystem -lresolv
121125
T_LIBS = -lpthread -ldl -lm
126+
RUSTFLAGS = -C opt-level=z -C lto=fat -C codegen-units=1 -C strip=symbols
122127
else # linux
123128
TARGET := $(DIST_DIR)/mcp.so
124-
LDFLAGS += -shared
129+
LDFLAGS += -shared -Wl,--gc-sections
125130
CFLAGS += -fPIC
126131
STRIP = strip --strip-unneeded $@
127132
LIBS = -lmcp_ffi -lpthread -ldl -lm -lssl -lcrypto
128133
T_LIBS = -lpthread -ldl -lm
134+
RUSTFLAGS = -C opt-level=z -C codegen-units=1 -C strip=symbols
129135
endif
130136

131137
# Windows .def file generation

0 commit comments

Comments
 (0)