ifeq ($(ARCH),psua53) CC = aarch64-elf-gcc AR = aarch64-elf-ar AS = aarch64-elf-as CP = aarch64-elf-objcopy OD = aarch64-elf-objdump SIZE = aarch64-elf-size else CC = arm-none-eabi-gcc AR = arm-none-eabi-ar AS = arm-none-eabi-as CP = arm-none-eabi-objcopy OD = arm-none-eabi-objdump SIZE = arm-none-eabi-size endif ifeq (, $(shell which ${CC})) $(error "No ${CC} in PATH variable, please extend PATH variable") endif SRC_DIR = ./src BUILD_DIR = ./Build DEBUG_DIR = ./Debug OUT_DIR = ./out TARGET := $(APP)_$(ARCH)_core$(CORE) TARGET_DIR := $(SRC_DIR)/APP/$(APP)/$(ARCH)/core$(CORE)/ $(info TARGET_DIR : ${TARGET_DIR}) OBJ_DIR = ./$(OUT_DIR)/$(TARGET) # Load specific config for compiler, linker, ... include $(TARGET_DIR)/build/config.mk #Output files: elf, map and list-file EXECUTABLE=$(OBJ_DIR)/../$(TARGET).elf MAPFILE=$(OBJ_DIR)/../$(TARGET).map LISTFILE=$(OBJ_DIR)/../$(TARGET).lst # Path to linker script ifndef LDSCRIPT LDSCRIPT = -T$(TARGET_DIR)/linker/lscript.ld endif #Include source-files: $(info TARGET_DIR : ${TARGET_DIR}) INC = -I. include $(TARGET_DIR)/build/includes.mk SRC = include $(TARGET_DIR)/build/sources.mk # C source files CFILES = $(filter %.c, $(SRC)) # Assembly source files ASMFILES = $(filter %.S, $(SRC)) # Object files COBJ = $(CFILES:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o) SOBJ = $(ASMFILES:$(SRC_DIR)/%.S=$(OBJ_DIR)/%.o) OBJ = $(SOBJ) $(COBJ) $(info CFILES : ${CFILES}) # Flags CFLAGS = $(MCFLAGS) $(DEBUG) $(OPTIMIZE) -MP -MMD -std=gnu11 ASFLAGS = $(MCFLAGS) $(DEBUG) $(OPTIMIZE) -MP -MMD -x assembler-with-cpp ODFLAGS = --source --all-headers --demangle --line-numbers --wide all: info $(LISTFILE) postbuild $(LISTFILE): $(EXECUTABLE) @echo 'Generating Listfile: $<' @$(OD) $(ODFLAGS) -d $< > $@ $(EXECUTABLE): $(OBJ) @echo 'Linking: $@' $(CC) $(CFLAGS) $(LDSCRIPT) -Wl,-Map,"$(MAPFILE)" -o "$@" $(sort $(OBJ)) $(LDFLAGS) $(COBJ): $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c @echo 'Building file: $<' @mkdir -p $(@D) $(CC) -c $(CFLAGS) $(INC) -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o $@ $< >/dev/null $(SOBJ): $(OBJ_DIR)/%.o: $(SRC_DIR)/%.S @echo 'Building file: $<' @mkdir -p $(@D) $(CC) -c $(ASFLAGS) $(INC) -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o $@ $< >/dev/null .PHONY: clean, info info: $(info APP : ${APP}) $(info TARGET : ${TARGET}) $(info TARGET_DIR : ${TARGET_DIR}) $(info Linker file : ${LDSCRIPT}) $(info CFLAGS : ${CFLAGS}) $(info ASFLAGS : ${ASFLAGS}) $(info ODFLAGS : ${ODFLAGS}) @echo "" @echo "" clean: rm -rf $(OUT_DIR) postbuild: $(EXECUTABLE) $(SIZE) --format=berkeley $(EXECUTABLE)