Files
sdes_lab/Makefile
2026-01-27 16:38:04 +01:00

105 lines
2.5 KiB
Makefile

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 -DGT_CPU_CYCLE_SCALE=1.33
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)