Skip to content
Snippets Groups Projects
Select Git revision
  • clang
  • main default protected
  • aspis-dev
  • clang-support-dev
  • hil-upd
  • vn300
  • sx1278
  • lps28dfw
  • lsm6dsrx
  • ads131m08
  • build-system
  • Lis3mdl-bugfix
  • lps22df-dev
  • vl53l7cxa-dev
  • stepper-logging-upd
  • tfmicro-dev
  • vn100-upd
  • timed-wait2
  • timed-wait
  • vcm
  • PYXIS_ROCCARASO
  • PYXIS_EUROC
  • lynx-euroc
  • hermes-v1.0
  • hermes-flight-1
25 results

Makefile.template

Blame
  • Makefile.template 4.00 KiB
    SBS_BASE = {SBS_BASE_PATH}
    
    ##
    ## Makefile for Miosix embedded OS
    ##
    MAKEFILE_VERSION := 1.07S
    ## Path to kernel directory (edited by init_project_out_of_git_repo.pl)
    KPATH := $(SBS_BASE)/libs/miosix-kernel/miosix
    ## Path to config directory (edited by init_project_out_of_git_repo.pl)
    CONFPATH := $(SBS_BASE)/libs/miosix-kernel/miosix
    {SBS_BOARD_DEFINE}
    {SBS_MAP_FILE}
    include $(CONFPATH)/config/Makefile.inc
    
    ##
    ## List here subdirectories which contains makefiles
    ##
    SUBDIRS := $(KPATH) {SBS_PROJECT_SUBDIRS}
    
    ##
    ## List here your source files (both .s, .c and .cpp)
    ##
    SRC := {SBS_SOURCE_FILES}
    
    ##
    ## List here additional static libraries with relative path
    ##
    LIBS := {SBS_PROJECT_LIBS}
    
    ##
    ## List here additional include directories (in the form -Iinclude_dir)
    ##
    INCLUDE_DIRS := -I$(SBS_BASE)/libs -I$(SBS_BASE)/libs/miosix-kernel/miosix \
                    {SBS_PROJECT_INCLUDES}
    
    ##############################################################################
    ## You should not need to modify anything below                             ##
    ##############################################################################
    
    ifeq ("$(VERBOSE)","1")
    Q :=
    ECHO := @true
    else
    Q := @
    ECHO := @echo
    endif
    
    BINDIR := bin/$(BOARD_UUID)
    OBJDIR := obj/$(BOARD_UUID)
    ## Replaces both "foo.cpp"-->"foo.o" and "foo.c"-->"foo.o"
    OBJ := $(addprefix $(OBJDIR)/, $(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) -Wall -Wextra -pedantic
    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) -Wall -Wextra -pedantic
    AFLAGS   := $(AFLAGS_BASE)
    LFLAGS   := $(LFLAGS_BASE) -Wl,--gc-sections,-Map,$(BINDIR)/${SBS_BIN_NAME}.map
    DFLAGS   := -MMD -MP
    
    LINK_LIBS := $(LIBS) -L$(KPATH)/bin/$(OPT_BOARD) -Wl,--start-group \
    			 -lmiosix -lstdc++ -lc -lm -lgcc -Wl,--end-group
    
    all: folders all-recursive $(BINDIR)/{SBS_BIN_NAME}.bin
    
    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) \
    		$(BINDIR)/{SBS_BIN_NAME}.elf $(BINDIR)/{SBS_BIN_NAME}.hex \
    		$(BINDIR)/{SBS_BIN_NAME}.bin $(BINDIR)/{SBS_BIN_NAME}.map \
    		$(OBJ:.o=.d)
    	$(Q)rm -rf $(BINDIR) $(OBJDIR)
    
    $(BINDIR)/{SBS_BIN_NAME}.bin: folders $(BINDIR)/{SBS_BIN_NAME}.elf
    	$(ECHO) "[CP]   Linking binary"
    	$(Q)$(CP) -O ihex   $(BINDIR)/{SBS_BIN_NAME}.elf $(BINDIR)/{SBS_BIN_NAME}.hex
    	$(Q)$(CP) -O binary $(BINDIR)/{SBS_BIN_NAME}.elf $(BINDIR)/{SBS_BIN_NAME}.bin
    	$(Q)$(SZ) $(BINDIR)/{SBS_BIN_NAME}.elf
    
    $(BINDIR)/{SBS_BIN_NAME}.elf: folders $(OBJ) all-recursive
    	$(ECHO) "[LD]   Linking binary"
    	$(Q) $(CXX) $(LFLAGS) -o $@ $(OBJ) \
    		$(KPATH)/$(BOOT_FILE) $(LINK_LIBS)
    
    $(OBJDIR)/%.o: %.s
    	$(ECHO) "[AS]  " $<
    	$(Q) $(AS)  $(AFLAGS) $< -o $@
    
    $(OBJDIR)/%.o : %.c
    	$(ECHO) "[CC]  " $<
    	$(Q) $(CC)  $(DFLAGS) $(CFLAGS) {SBS_CUSTOM_DEFINES} $< -o $@
    
    $(OBJDIR)/%.o : %.cpp
    	$(ECHO) "[CXX] " $<
    	$(Q) $(CXX) $(DFLAGS) $(CXXFLAGS) {SBS_CUSTOM_DEFINES} $< -o $@
    
    folders:
    	$(Q) mkdir -pv $(dir $(OBJ)) $(BINDIR)
    
    #pull in dependecy info for existing .o files
    -include $(OBJ:.o=.d)
    
    .PHONY: clean folders program clean-topdir clean-recursive
    .NOTPARALLEL: clean-topdir clean-recursive folders clean program