diff --git a/examples/rules.mk b/examples/rules.mk index cd85001a..6ffdb347 100644 --- a/examples/rules.mk +++ b/examples/rules.mk @@ -43,7 +43,11 @@ STYLECHECK := /checkpatch.pl STYLECHECKFLAGS := --no-tree -f --terse --mailback STYLECHECKFILES := $(shell find . -name '*.[ch]') OPT := -Os +ifeq ($(LTO),1) +OPT += -flto +endif CSTD ?= -std=c99 +DEBUG := -ggdb3 ############################################################################### @@ -98,7 +102,7 @@ EXAMPLES_SCRIPT_DIR = $(OPENCM3_DIR)/../scripts ############################################################################### # C flags -TGT_CFLAGS += $(OPT) $(CSTD) -g +TGT_CFLAGS += $(OPT) $(CSTD) $(DEBUG) TGT_CFLAGS += $(ARCH_FLAGS) TGT_CFLAGS += -Wextra -Wshadow -Wimplicit-function-declaration TGT_CFLAGS += -Wredundant-decls -Wmissing-prototypes -Wstrict-prototypes @@ -107,10 +111,11 @@ TGT_CFLAGS += -fno-common -ffunction-sections -fdata-sections ############################################################################### # C++ flags -TGT_CXXFLAGS += $(OPT) $(CXXSTD) -g +TGT_CXXFLAGS += $(OPT) $(CXXSTD) $(DEBUG) TGT_CXXFLAGS += $(ARCH_FLAGS) TGT_CXXFLAGS += -Wextra -Wshadow -Wredundant-decls -Weffc++ TGT_CXXFLAGS += -fno-common -ffunction-sections -fdata-sections +TGT_CXXFLAGS += -fno-exceptions -fno-rtti ############################################################################### # C & C++ preprocessor common flags @@ -124,8 +129,8 @@ TGT_CPPFLAGS += $(DEFS) TGT_LDFLAGS += --static -nostartfiles TGT_LDFLAGS += -T$(LDSCRIPT) -TGT_LDFLAGS += $(ARCH_FLAGS) -TGT_LDFLAGS += -Wl,-Map=$(*).map +TGT_LDFLAGS += $(ARCH_FLAGS) $(DEBUG) +TGT_LDFLAGS += -Wl,-Map=$(*).map -Wl,--cref TGT_LDFLAGS += -Wl,--gc-sections ifeq ($(V),99) TGT_LDFLAGS += -Wl,--print-gc-sections @@ -193,7 +198,7 @@ print-%: %.elf %.map: $(OBJS) $(LDSCRIPT) @#printf " LD $(*).elf\n" - $(Q)$(LD) $(TGT_LDFLAGS) $(LDFLAGS) $(OBJS) $(LDLIBS) -o $(*).elf + $(Q)$(LD) $(OPT) $(TGT_LDFLAGS) $(LDFLAGS) $(OBJS) $(LDLIBS) -o $(*).elf %.o: %.c @#printf " CC $(*).c\n"