Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
166a147ee4 |
@@ -64,6 +64,11 @@ GLOBAL_CPPFLAGS := --std=c++11 -fno-exceptions -fno-rtti -fno-threadsafe-statics
|
||||
GLOBAL_ASMFLAGS := -DASSEMBLY
|
||||
GLOBAL_LDFLAGS :=
|
||||
|
||||
WITH_LTO ?= true
|
||||
ifeq (true,$(call TOBOOL,$(WITH_LTO)))
|
||||
GLOBAL_COMPILEFLAGS += -flto -fno-fat-lto-objects
|
||||
endif
|
||||
|
||||
# if WERROR is set, add to the compile args
|
||||
ifeq (true,$(call TOBOOL,$(WERROR)))
|
||||
GLOBAL_COMPILEFLAGS += -Werror
|
||||
|
||||
@@ -21,10 +21,16 @@ $(OUTELF).hex: $(OUTELF)
|
||||
|
||||
$(OUTELF): $(ALLMODULE_OBJS) $(EXTRA_OBJS) $(LINKER_SCRIPT) $(EXTRA_LINKER_SCRIPTS)
|
||||
$(info linking $@)
|
||||
ifeq (true,$(call TOBOOL,$(WITH_LTO)))
|
||||
$(NOECHO)$(CC) -nostdlib -flto $(GLOBAL_LDFLAGS) $(ARCH_LDFLAGS) -T $(LINKER_SCRIPT) \
|
||||
$(addprefix -T,$(EXTRA_LINKER_SCRIPTS)) -march=rv64imac -mabi=lp64 -mcmodel=medany \
|
||||
$(ALLMODULE_OBJS) $(EXTRA_OBJS) $(LIBGCC) -o $@
|
||||
else
|
||||
$(NOECHO)$(SIZE) -t --common $(sort $(ALLMODULE_OBJS)) $(EXTRA_OBJS)
|
||||
$(NOECHO)$(LD) $(GLOBAL_LDFLAGS) $(ARCH_LDFLAGS) -dT $(LINKER_SCRIPT) \
|
||||
$(addprefix -T,$(EXTRA_LINKER_SCRIPTS)) \
|
||||
$(ALLMODULE_OBJS) $(EXTRA_OBJS) $(LIBGCC) -Map=$(OUTELF).map -o $@
|
||||
endif
|
||||
|
||||
$(OUTELF).sym: $(OUTELF)
|
||||
$(info generating symbols: $@)
|
||||
|
||||
@@ -83,6 +83,13 @@ include make/compile.mk
|
||||
# MODULE_OBJS is passed back from compile.mk
|
||||
#$(info MODULE_OBJS = $(MODULE_OBJS))
|
||||
|
||||
# track all of the source files compiled
|
||||
ALLSRCS += $(MODULE_SRCS)
|
||||
|
||||
# track all the objects built
|
||||
ALLOBJS += $(MODULE_OBJS)
|
||||
|
||||
ifeq (false,$(call TOBOOL,$(WITH_LTO)))
|
||||
# build a ld -r style combined object
|
||||
MODULE_OBJECT := $(call TOBUILDDIR,$(MODULE_SRCDIR).mod.o)
|
||||
$(MODULE_OBJECT): $(MODULE_OBJS) $(MODULE_EXTRA_OBJS)
|
||||
@@ -90,17 +97,16 @@ $(MODULE_OBJECT): $(MODULE_OBJS) $(MODULE_EXTRA_OBJS)
|
||||
$(info linking $@)
|
||||
$(NOECHO)$(LD) $(GLOBAL_MODULE_LDFLAGS) -r $^ -o $@
|
||||
|
||||
# track all of the source files compiled
|
||||
ALLSRCS += $(MODULE_SRCS)
|
||||
|
||||
# track all the objects built
|
||||
ALLOBJS += $(MODULE_OBJS)
|
||||
|
||||
# track the module object for make clean
|
||||
GENERATED += $(MODULE_OBJECT)
|
||||
|
||||
# make the rest of the build depend on our output
|
||||
ALLMODULE_OBJS := $(ALLMODULE_OBJS) $(MODULE_OBJECT)
|
||||
else
|
||||
# for LTO builds just add all of the .o files from this module to the global
|
||||
# link line. ld -r seems to foul up LTO
|
||||
ALLMODULE_OBJS := $(ALLMODULE_OBJS) $(MODULE_OBJS) $(MODULE_EXTRA_OBJS)
|
||||
endif
|
||||
|
||||
# empty out any vars set here
|
||||
MODULE :=
|
||||
|
||||
Reference in New Issue
Block a user