Skip to content
Snippets Groups Projects
Select Git revision
  • sensor-fault-detection
  • vn300
  • main default protected
  • sensor-sync-upd
  • vcm
  • nokia-gemini-tm-dev
  • nokia-pyxis-tm-dev
  • sx1278-resilience
  • extra-transceivers
  • radio-mavlink-test-upd
  • h3lis331dl-dev
  • i2c-slaveConfig-upd
  • can-protcol-stats
  • parafoil-sensortile
  • spi
  • build-system
  • vl53l7cxa-dev
  • vn100-upd
  • timed-wait2
  • f769-disco
  • PYXIS_ROCCARASO
  • PYXIS_EUROC
  • lynx-euroc
  • hermes-v1.0
  • hermes-flight-1
25 results

Makefile.template

Blame
  • 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)