Select Git revision
Makefile.template
Forked from
Avionics / Software Development / Skyward Boardcore
2643 commits behind the upstream repository.
-
Alain Carlucci authoredAlain Carlucci authored
Makefile.template 3.50 KiB
##
## Makefile for Miosix embedded OS
##
MAKEFILE_VERSION := 1.08
## Path to kernel directory (edited by init_project_out_of_git_repo.pl)
KPATH := libs/miosix-kernel/miosix
## Path to config directory (edited by init_project_out_of_git_repo.pl)
CONFPATH := .
{SBS_BOARD_DEFINE}
{SBS_MAP_FILE}
include $(CONFPATH)/config/Makefile.inc
##
## List here subdirectories which contains makefiles
##
SUBDIRS := $(KPATH)
##
## List here your source files (both .s, .c and .cpp)
##
SRC := {SBS_SOURCE_FILES}
##
## List here additional static libraries with relative path
##
LIBS :=
##
## List here additional include directories (in the form -Iinclude_dir)
##
INCLUDE_DIRS := -Isrc/shared -Imiosix-kernel -Imiosix
##############################################################################
## You should not need to modify anything below ##
##############################################################################
ifeq ("$(VERBOSE)","1")
Q :=
ECHO := @true
else
Q := @
ECHO := @echo
endif
## Replaces both "foo.cpp"-->"foo.o" and "foo.c"-->"foo.o"
OBJ := $(addsuffix .o, $(basename $(SRC)))
## Includes the miosix base directory for C/C++
## Always include CONFPATH first, as it overrides the config file location
CXXFLAGS := $(CXXFLAGS_BASE) -I$(CONFPATH) -I$(CONFPATH)/config/$(BOARD_INC) \
-I. -I$(KPATH) -I$(KPATH)/arch/common -I$(KPATH)/$(ARCH_INC) \
-I$(KPATH)/$(BOARD_INC) $(INCLUDE_DIRS) -std=c++11 -O0
CFLAGS := $(CFLAGS_BASE) -I$(CONFPATH) -I$(CONFPATH)/config/$(BOARD_INC) \
-I. -I$(KPATH) -I$(KPATH)/arch/common -I$(KPATH)/$(ARCH_INC) \
-I$(KPATH)/$(BOARD_INC) $(INCLUDE_DIRS)
AFLAGS := $(AFLAGS_BASE)
LFLAGS := $(LFLAGS_BASE)
DFLAGS := -MMD -MP
BIN := bin
LINK_LIBS := $(LIBS) -L$(KPATH)/bin/$(OPT_BOARD) -Wl,--start-group \
-lmiosix -lstdc++ -lc -lm -lgcc -Wl,--end-group
all: folders all-recursive {SBS_BIN_NAME}
clean: clean-recursive clean-topdir
program:
$(PROGRAM_CMDLINE)
all-recursive:
$(foreach i,$(SUBDIRS),$(MAKE) -C $(i) \
KPATH=$(shell perl $(KPATH)/_tools/relpath.pl $(i) $(KPATH)) \
CONFPATH=$(shell perl $(KPATH)/_tools/relpath.pl $(i) $(CONFPATH)) \
|| exit 1;)
clean-recursive:
$(foreach i,$(SUBDIRS),$(MAKE) -C $(i) \
KPATH=$(shell perl $(KPATH)/_tools/relpath.pl $(i) $(KPATH)) \
CONFPATH=$(shell perl $(KPATH)/_tools/relpath.pl $(i) $(CONFPATH)) \
clean || exit 1;)
clean-topdir:
$(ECHO) "[RM] Cleaning files"
$(Q)rm -f $(OBJ) $(addprefix obj/,$(OBJ)) \
$(BIN)/{SBS_BIN_NAME}.elf $(BIN)/{SBS_BIN_NAME}.hex $(BIN)/{SBS_BIN_NAME}.bin $(BIN)/{SBS_BIN_NAME}.map \
$(OBJ:.o=.d)
{SBS_BIN_NAME}: folders {SBS_BIN_NAME}.elf
$(ECHO) "[CP] Linking binary"
$(Q)$(CP) -O ihex $(BIN)/{SBS_BIN_NAME}.elf $(BIN)/{SBS_BIN_NAME}.hex
$(Q)$(CP) -O binary $(BIN)/{SBS_BIN_NAME}.elf $(BIN)/{SBS_BIN_NAME}.bin
$(Q)$(SZ) $(BIN)/{SBS_BIN_NAME}.elf
{SBS_BIN_NAME}.elf: folders $(OBJ) all-recursive
$(ECHO) "[LD] Linking binary"
$(Q) $(CXX) $(LFLAGS) -o $(BIN)/{SBS_BIN_NAME}.elf $(addprefix obj/,$(OBJ)) \
$(KPATH)/$(BOOT_FILE) $(LINK_LIBS)
%.o: %.s
$(ECHO) "[AS] " $<
$(Q) $(AS) $(AFLAGS) $< -o $@
%.o : %.c
$(ECHO) "[CC] " $<
$(Q) $(CC) $(DFLAGS) $(CFLAGS) {SBS_CUSTOM_DEFINES} $< -o obj/$@
%.o : %.cpp
$(ECHO) "[CXX] " $<
$(Q) $(CXX) $(DFLAGS) $(CXXFLAGS) {SBS_CUSTOM_DEFINES} $< -o obj/$@
folders:
$(Q) mkdir -pv $(dir $(addprefix obj/,$(OBJ)))
#pull in dependecy info for existing .o files
-include $(OBJ:.o=.d)