2626 STATIC_LIBS+=stdc++
2727endif
2828
29- LDFLAGS =$(CUSTOM_LDFLAGS ) $(addprefix -L,$(GLOBAL_LIBS ) ) $(addprefix -L,$(CUSTOM_INCLUDES ) ) -Xlinker -no-undefined $(addprefix -Xlinker --exclude-libs -Xlinker ,$(addsuffix .a,$(addprefix lib,$(STATIC_LIBS ) ) ) )
29+ LDFLAGS_COMMON =$(addprefix -L,$(GLOBAL_LIBS ) ) $(addprefix -L,$(CUSTOM_INCLUDES ) )
30+ LDFLAGS_LTO: =$(CUSTOM_LDFLAGS_LTO ) $(CUSTOM_LDFLAGS ) $(LDFLAGS_COMMON ) -Xlinker -no-undefined $(addprefix -Xlinker --exclude-libs -Xlinker ,$(addsuffix .a,$(addprefix lib,$(STATIC_LIBS ) ) ) )
31+ LDFLAGS_FINAL: =$(CUSTOM_LDFLAGS_FINAL ) $(CUSTOM_LDFLAGS ) $(LDFLAGS_COMMON ) -no-undefined $(addprefix --exclude-libs ,$(addsuffix .a,$(addprefix lib,$(STATIC_LIBS ) ) ) )
3032
3133TARGET_PATH =$(BUILD_DIR ) /$(NAME )
3234
33- $(TARGET_PATH ) : $(OBJECTS ) $(DEPS )
34- mkdir -p $(dir $(TARGET_PATH ) )
35- $(CC ) -fvisibility=hidden -o$(TARGET_PATH ) $(LDFLAGS ) $(OBJECTS ) $(CUSTOM_OBJECTS ) \
35+ ifeq ($(LD_IS_CC ) ,1)
36+ # If we are using the compiler to link, we need to prefix the linker options
37+ LDFLAGS_FINAL:=$(addprefix -Xlinker ,$(LDFLAGS_FINAL))
38+
39+ LINK_STEP1:=$(CC) -fvisibility=hidden -o$(TARGET_PATH) $(LDFLAGS_LTO) $(LDFLAGS_FINAL) $(OBJECTS) $(CUSTOM_OBJECTS) \
3640 -Wl,-Bstatic \
3741 -Wl,--start-group \
3842 $(addsuffix .a,$(addprefix $(PRODUCT_DIR)/lib,$(LIBS))) \
@@ -41,6 +45,26 @@ $(TARGET_PATH): $(OBJECTS) $(DEPS)
4145 -Wl,-Bdynamic \
4246 $(addsuffix .so,$(addprefix $(PRODUCT_DIR)/,$(SHARED_LIBS))) \
4347 $(addprefix -l,$(DYNAMIC_LIBS))
48+ LINK_STEP2:=
49+ else
50+ LINK_STEP1:=$(CC) -Wl,-relocatable -fvisibility=hidden -o$(TARGET_PATH).rel $(LDFLAGS_LTO) $(OBJECTS) $(CUSTOM_OBJECTS) \
51+ -Wl,-Bstatic \
52+ -Wl,--start-group \
53+ $(addsuffix .a,$(addprefix $(PRODUCT_DIR)/lib,$(LIBS))) \
54+ $(addprefix -l,$(STATIC_LIBS)) \
55+ -Wl,--end-group
56+ LINK_STEP2:=$(LD) -o$(TARGET_PATH) $(LDFLAGS_FINAL) $(TARGET_PATH).rel \
57+ -Bdynamic \
58+ $(addsuffix .so,$(addprefix $(PRODUCT_DIR)/,$(SHARED_LIBS))) \
59+ $(addprefix -l,$(DYNAMIC_LIBS))
60+ endif
61+
62+
63+ $(TARGET_PATH ) : $(OBJECTS ) $(DEPS )
64+ mkdir -p $(dir $(TARGET_PATH ) )
65+ $(LINK_STEP1 )
66+ $(LINK_STEP2 )
67+
4468ifneq ($(MODE ) ,debug)
4569 cd $(BUILD_DIR) && \
4670 $(OBJCOPY) --only-keep-debug "$(NAME)" "$(NAME).dbg" && \
0 commit comments