[FIX] Library paths and preprocessor defines should be in CPPFLAGS, Reorganization of *FLAGS

Using:
http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options
http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html#Preprocessor-Options
http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html#Link-Options
http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html#ARM-Options

To CFLAGS are added only -ffunction-sections -fdata-sections, so this should not break the build.
This commit is contained in:
Frantisek Burian
2014-01-06 21:59:26 +01:00
parent 04d4bac5af
commit 52fc38b03e

View File

@@ -25,19 +25,24 @@ Q := @
NULL := 2>/dev/null NULL := 2>/dev/null
endif endif
###############################################################################
# Executables
PREFIX ?= arm-none-eabi PREFIX ?= arm-none-eabi
CC = $(PREFIX)-gcc CC := $(PREFIX)-gcc
CXX = $(PREFIX)-g++ CXX := $(PREFIX)-g++
LD = $(PREFIX)-gcc LD := $(PREFIX)-gcc
AR = $(PREFIX)-ar AR := $(PREFIX)-ar
AS = $(PREFIX)-as AS := $(PREFIX)-as
OBJCOPY = $(PREFIX)-objcopy OBJCOPY := $(PREFIX)-objcopy
OBJDUMP = $(PREFIX)-objdump OBJDUMP := $(PREFIX)-objdump
GDB = $(PREFIX)-gdb GDB := $(PREFIX)-gdb
STFLASH = $(shell which st-flash) STFLASH = $(shell which st-flash)
###############################################################################
# Source files
LDSCRIPT ?= $(BINARY).ld LDSCRIPT ?= $(BINARY).ld
OBJS += $(BINARY).o OBJS += $(BINARY).o
@@ -65,38 +70,49 @@ INCLUDE_DIR = $(OPENCM3_DIR)/include
LIB_DIR = $(OPENCM3_DIR)/lib LIB_DIR = $(OPENCM3_DIR)/lib
SCRIPT_DIR = $(OPENCM3_DIR)/scripts SCRIPT_DIR = $(OPENCM3_DIR)/scripts
###############################################################################
# C flags # C flags
CFLAGS += -Os -g -MD $(DEFS) CFLAGS += -Os -g
CFLAGS += -Wall -Wextra -Wimplicit-function-declaration CFLAGS += -Wextra -Wshadow -Wimplicit-function-declaration
CFLAGS += -Wredundant-decls -Wmissing-prototypes -Wstrict-prototypes CFLAGS += -Wredundant-decls -Wmissing-prototypes -Wstrict-prototypes
CFLAGS += -Wundef -Wshadow -fno-common CFLAGS += -fno-common -ffunction-sections -fdata-sections
CFLAGS += -I$(INCLUDE_DIR)
###############################################################################
# C++ flags # C++ flags
CXXFLAGS += -Os -g -MD $(DEFS) CXXFLAGS += -Os -g
CXXFLAGS += -Wall -Wextra -Wimplicit-function-declaration CXXFLAGS += -Wextra -Wshadow -Wredundant-decls -Weffc++
CXXFLAGS += -Wredundant-decls -Wmissing-prototypes -Wstrict-prototypes CXXFLAGS += -fno-common -ffunction-sections -fdata-sections
CXXFLAGS += -Wundef -Wshadow -fno-common
CXXFLAGS += -I$(INCLUDE_DIR)
###############################################################################
# C & C++ preprocessor common flags
CPPFLAGS += -MD
CPPFLAGS += -Wall -Wundef
CPPFLAGS += -I$(INCLUDE_DIR) $(DEFS)
###############################################################################
# Linker flags # Linker flags
LDFLAGS += --static -nostartfiles -l$(LIBNAME) LDFLAGS += --static -nostartfiles
LDFLAGS += -Wl,--start-group -lc -lgcc -lnosys -Wl,--end-group
LDFLAGS += -Wl,--gc-sections
LDFLAGS += -L$(LIB_DIR) LDFLAGS += -L$(LIB_DIR)
LDFLAGS += -T$(LDSCRIPT) LDFLAGS += -T$(LDSCRIPT)
LDFLAGS += -Wl,-Map=$(*).map LDFLAGS += -Wl,-Map=$(*).map
LDFLAGS += -Wl,--gc-sections
ifeq ($(V),1) ifeq ($(V),1)
LDFLAGS += -Wl,--print-gc-sections LDFLAGS += -Wl,--print-gc-sections
endif endif
###############################################################################
# Used libraries
LDLIBS += -l$(LIBNAME)
LDLIBS += -Wl,--start-group -lc -lgcc -lnosys -Wl,--end-group
###############################################################################
###############################################################################
###############################################################################
.SUFFIXES: .elf .bin .hex .srec .list .map .images .SUFFIXES: .elf .bin .hex .srec .list .map .images
.SECONDEXPANSION: .SECONDEXPANSION:
@@ -128,7 +144,7 @@ flash: $(BINARY).flash
%.elf %.map: $(OBJS) $(LDSCRIPT) $(LIB_DIR)/lib$(LIBNAME).a %.elf %.map: $(OBJS) $(LDSCRIPT) $(LIB_DIR)/lib$(LIBNAME).a
@#printf " LD $(*).elf\n" @#printf " LD $(*).elf\n"
$(Q)$(LD) -o $(*).elf $(OBJS) $(LDFLAGS) $(ARCH_FLAGS) $(Q)$(LD) $(LDFLAGS) $(ARCH_FLAGS) $(OBJS) $(LDLIBS) -o $(*).elf
%.o: %.c %.o: %.c
@#printf " CC $(*).c\n" @#printf " CC $(*).c\n"