Squashed all commits
This commit is contained in:
104
Makefile
Normal file
104
Makefile
Normal file
@@ -0,0 +1,104 @@
|
||||
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)/
|
||||
|
||||
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:
|
||||
SRC =
|
||||
-include $(TARGET_DIR)/build/Sources.mk
|
||||
|
||||
INC = -I./
|
||||
-include $(TARGET_DIR)/build/includes.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: $@'
|
||||
$(CD) $(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)
|
||||
Reference in New Issue
Block a user