mirror of https://github.com/ArduPilot/ardupilot
138 lines
3.4 KiB
Makefile
138 lines
3.4 KiB
Makefile
|
TOOLCHAIN = NATIVE
|
||
|
|
||
|
include $(MK_DIR)/find_tools.mk
|
||
|
|
||
|
#
|
||
|
# Tool options
|
||
|
#
|
||
|
DEFINES = -DF_CPU=$(F_CPU)
|
||
|
DEFINES += -DSKETCH=\"$(SKETCH)\"
|
||
|
DEFINES += $(EXTRAFLAGS) # from user config.mk
|
||
|
DEFINES += -DCONFIG_HAL_BOARD=$(HAL_BOARD)
|
||
|
WARNFLAGS = -Wformat -Wall -Wshadow -Wpointer-arith -Wcast-align
|
||
|
WARNFLAGS += -Wwrite-strings -Wformat=2
|
||
|
WARNFLAGSCXX = -Wno-reorder
|
||
|
DEPFLAGS = -MD -MT $@
|
||
|
|
||
|
CXXOPTS = -ffunction-sections -fdata-sections -fno-exceptions -fsigned-char
|
||
|
COPTS = -ffunction-sections -fdata-sections -fsigned-char
|
||
|
|
||
|
ASOPTS = -x assembler-with-cpp
|
||
|
LISTOPTS = -adhlns=$(@:.o=.lst)
|
||
|
|
||
|
NATIVE_CPUFLAGS = -D_GNU_SOURCE
|
||
|
NATIVE_CPULDFLAGS = -g
|
||
|
NATIVE_OPTFLAGS = -O0 -g
|
||
|
|
||
|
CPUFLAGS= $($(TOOLCHAIN)_CPUFLAGS)
|
||
|
CPULDFLAGS= $($(TOOLCHAIN)_CPULDFLAGS)
|
||
|
OPTFLAGS= $($(TOOLCHAIN)_OPTFLAGS)
|
||
|
|
||
|
CXXFLAGS = -g $(CPUFLAGS) $(DEFINES) -Wa,$(LISTOPTS) $(OPTFLAGS)
|
||
|
CXXFLAGS += $(WARNFLAGS) $(WARNFLAGSCXX) $(DEPFLAGS) $(CXXOPTS)
|
||
|
CFLAGS = -g $(CPUFLAGS) $(DEFINES) -Wa,$(LISTOPTS) $(OPTFLAGS)
|
||
|
CFLAGS += $(WARNFLAGS) $(DEPFLAGS) $(COPTS)
|
||
|
ASFLAGS = -g $(CPUFLAGS) $(DEFINES) -Wa,$(LISTOPTS) $(DEPFLAGS)
|
||
|
ASFLAGS += $(ASOPTS)
|
||
|
LDFLAGS = -g $(CPUFLAGS) $(OPTFLAGS) $(WARNFLAGS)
|
||
|
LDFLAGS += -Wl,--gc-sections -Wl,-Map -Wl,$(SKETCHMAP)
|
||
|
|
||
|
LIBS = -lm
|
||
|
|
||
|
ifeq ($(VERBOSE),)
|
||
|
v = @
|
||
|
else
|
||
|
v =
|
||
|
endif
|
||
|
|
||
|
# Library object files
|
||
|
LIBOBJS := $(SKETCHLIBOBJS)
|
||
|
|
||
|
|
||
|
################################################################################
|
||
|
# Built products
|
||
|
#
|
||
|
|
||
|
# The ELF file
|
||
|
SKETCHELF = $(BUILDROOT)/$(SKETCH).elf
|
||
|
|
||
|
# HEX file
|
||
|
SKETCHHEX = $(BUILDROOT)/$(SKETCH).hex
|
||
|
|
||
|
# EEP file
|
||
|
SKETCHEEP = $(BUILDROOT)/$(SKETCH).eep
|
||
|
|
||
|
# Map file
|
||
|
SKETCHMAP = $(BUILDROOT)/$(SKETCH).map
|
||
|
|
||
|
# All of the objects that may be built
|
||
|
ALLOBJS = $(SKETCHOBJS) $(LIBOBJS)
|
||
|
|
||
|
# All of the dependency files that may be generated
|
||
|
ALLDEPS = $(ALLOBJS:%.o=%.d)
|
||
|
|
||
|
################################################################################
|
||
|
# Targets
|
||
|
#
|
||
|
|
||
|
all: $(SKETCHELF)
|
||
|
|
||
|
print-%:
|
||
|
echo "$*=$($*)"
|
||
|
|
||
|
################################################################################
|
||
|
# Rules
|
||
|
#
|
||
|
|
||
|
# fetch dependency info from a previous build if any of it exists
|
||
|
-include $(ALLDEPS)
|
||
|
|
||
|
# common header for rules, prints what is being built
|
||
|
define RULEHDR
|
||
|
@echo %% $(subst $(BUILDROOT)/,,$@)
|
||
|
@mkdir -p $(dir $@)
|
||
|
endef
|
||
|
|
||
|
# Link the final object
|
||
|
$(SKETCHELF): $(SKETCHOBJS) $(LIBOBJS)
|
||
|
$(RULEHDR)
|
||
|
$(v)$(LD) $(LDFLAGS) -o $@ $^ $(LIBS)
|
||
|
|
||
|
#
|
||
|
# Build sketch objects
|
||
|
#
|
||
|
SKETCH_INCLUDES = $(SKETCHLIBINCLUDES)
|
||
|
|
||
|
$(BUILDROOT)/%.o: $(BUILDROOT)/%.cpp
|
||
|
$(RULEHDR)
|
||
|
$(v)$(CXX) $(CXXFLAGS) -c -o $@ $< -I$(SRCROOT) $(SKETCH_INCLUDES)
|
||
|
|
||
|
$(BUILDROOT)/%.o: $(SRCROOT)/%.cpp
|
||
|
$(RULEHDR)
|
||
|
$(v)$(CXX) $(CXXFLAGS) -c -o $@ $< $(SKETCH_INCLUDES)
|
||
|
|
||
|
$(BUILDROOT)/%.o: $(SRCROOT)/%.c
|
||
|
$(RULEHDR)
|
||
|
$(v)$(CC) $(CFLAGS) -c -o $@ $< $(SKETCH_INCLUDES)
|
||
|
|
||
|
$(BUILDROOT)/%.o: $(SRCROOT)/%.S
|
||
|
$(RULEHDR)
|
||
|
$(v)$(AS) $(ASFLAGS) -c -o $@ $< $(SKETCH_INCLUDES)
|
||
|
|
||
|
#
|
||
|
# Build library objects from sources in the sketchbook
|
||
|
#
|
||
|
SLIB_INCLUDES = -I$(dir $<)/utility $(SKETCHLIBINCLUDES)
|
||
|
|
||
|
$(BUILDROOT)/libraries/%.o: $(SKETCHBOOK)/libraries/%.cpp
|
||
|
$(RULEHDR)
|
||
|
$(v)$(CXX) $(CXXFLAGS) -c -o $@ $< $(SLIB_INCLUDES)
|
||
|
|
||
|
$(BUILDROOT)/libraries/%.o: $(SKETCHBOOK)/libraries/%.c
|
||
|
$(RULEHDR)
|
||
|
$(v)$(CC) $(CFLAGS) -c -o $@ $< $(SLIB_INCLUDES)
|
||
|
|
||
|
$(BUILDROOT)/libraries/%.o: $(SKETCHBOOK)/libraries/%.S
|
||
|
$(RULEHDR)
|
||
|
$(v)$(AS) $(ASFLAGS) -c -o $@ $< $(SLIB_INCLUDES)
|