[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:
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user