170 lines
3.8 KiB
Makefile
170 lines
3.8 KiB
Makefile
#
|
|
# Copyright (c) 2018 Renesas Electronics Corporation. All rights reserved.
|
|
#
|
|
|
|
#/* Select BOOT("CR7"or"ICUMXA")*************************
|
|
ifeq ("$(BOOT)", "")
|
|
BOOT = ICUMXA
|
|
endif
|
|
|
|
#/* Select AArch("64"or"32" )***************************************************
|
|
ifeq ("$(AArch)", "")
|
|
AArch = 64
|
|
endif
|
|
|
|
#CPU
|
|
ifeq ("$(AArch)", "64")
|
|
CPU = -march=armv8-a
|
|
endif
|
|
ifeq ("$(AArch)", "32")
|
|
CPU = -mcpu=cortex-r7
|
|
endif
|
|
|
|
ifeq ("$(AArch)", "32")
|
|
THUMB = -marm
|
|
AS_NEON =
|
|
CC_NEON =
|
|
ALIGN = -mno-unaligned-access
|
|
endif
|
|
ifeq ("$(AArch)", "64")
|
|
THUMB =
|
|
AS_NEON =
|
|
CC_NEON = -mgeneral-regs-only
|
|
ALIGN = -mstrict-align
|
|
endif
|
|
|
|
ifeq ("$(AArch)", "32")
|
|
AArch32_64 = AArch32
|
|
BOOTDIR = AArch32_boot
|
|
OUTPUT_DIR = AArch32_output
|
|
OBJECT_DIR = AArch32_obj
|
|
CROSS_COMPILE ?= arm-eabi-
|
|
endif
|
|
ifeq ("$(AArch)", "64")
|
|
AArch32_64 = AArch64
|
|
BOOTDIR = AArch64_boot
|
|
OUTPUT_DIR = AArch64_output
|
|
OBJECT_DIR = AArch64_obj
|
|
CROSS_COMPILE ?= aarch64-elf-
|
|
endif
|
|
|
|
ifeq ("$(BOOT)", "CR7")
|
|
# BOOT_DEF = Writer
|
|
MEMORY_DEF = memory_cr7.def
|
|
FILE_NAME = $(OUTPUT_DIR)/AArch$(AArch)_Dummy_CA53_Program$(FILENAME_ADD)
|
|
endif
|
|
|
|
ifeq ("$(BOOT)", "ICUMXA")
|
|
# BOOT_DEF = Writer
|
|
MEMORY_DEF = memory_icumxa.def
|
|
FILE_NAME = $(OUTPUT_DIR)/AArch$(AArch)_Dummy_CA53_Program$(FILENAME_ADD)
|
|
endif
|
|
|
|
LIBS = -L$(subst libc.a, ,$(shell $(CC) -print-file-name=libc.a 2> /dev/null)) -lc
|
|
LIBS += -L$(subst libgcc.a, ,$(shell $(CC) -print-libgcc-file-name 2> /dev/null)) -lgcc
|
|
|
|
INCLUDE_DIR = include
|
|
|
|
OUTPUT_FILE = $(FILE_NAME).axf
|
|
|
|
#Object file
|
|
OBJ_FILE_BOOT = \
|
|
$(OBJECT_DIR)/boot_mon.o \
|
|
$(OBJECT_DIR)/stack.o
|
|
|
|
SRC_FILE := \
|
|
main.c \
|
|
init_scif.c \
|
|
scifdrv0.c \
|
|
scifdrv0_v3h.c \
|
|
scifdrv2.c \
|
|
devdrv.c \
|
|
common.c
|
|
|
|
|
|
ifeq ("$(BOOT)", "WRITER_WITH_CERT")
|
|
SRC_FILE += cert_param.c
|
|
endif
|
|
|
|
OBJ_FILE := $(addprefix $(OBJECT_DIR)/,$(patsubst %.c,%.o,$(SRC_FILE)))
|
|
|
|
#Dependency File
|
|
DEPEND_FILE = $(patsubst %.lib, ,$(OBJ_FILE:%.o=%.d))
|
|
|
|
###################################################
|
|
#C compiler
|
|
CC = $(CROSS_COMPILE)gcc
|
|
#Assembler
|
|
AS = $(CROSS_COMPILE)as
|
|
#Linker
|
|
LD = $(CROSS_COMPILE)ld
|
|
#Liblary
|
|
AR = $(CROSS_COMPILE)ar
|
|
#Object dump
|
|
OBJDMP = $(CROSS_COMPILE)objdump
|
|
#Object copy
|
|
OBJCOPY = $(CROSS_COMPILE)objcopy
|
|
|
|
#clean
|
|
CL = rm -rf
|
|
|
|
###################################################
|
|
# Suffixes
|
|
.SUFFIXES : .s .c .o
|
|
|
|
###################################################
|
|
# Command
|
|
|
|
.PHONY: all
|
|
all: $(OBJECT_DIR) $(OUTPUT_DIR) $(OBJ_FILE_BOOT) $(OBJ_FILE) $(OUTPUT_FILE)
|
|
|
|
#------------------------------------------
|
|
# Make Directory
|
|
#------------------------------------------
|
|
$(OBJECT_DIR):
|
|
-mkdir "$(OBJECT_DIR)"
|
|
|
|
$(OUTPUT_DIR):
|
|
-mkdir "$(OUTPUT_DIR)"
|
|
|
|
#------------------------------------------
|
|
# Compile
|
|
#------------------------------------------
|
|
$(OBJECT_DIR)/%.o:$(BOOTDIR)/%.s
|
|
$(AS) -g $(CPU) $(AS_NEON) --MD $(patsubst %.o,%.d,$@) -I $(BOOTDIR) -I $(INCLUDE_DIR) $< -o $@ --defsym $(AArch32_64)=0
|
|
|
|
$(OBJECT_DIR)/%.o:%.c
|
|
@if [ ! -e `dirname $@` ]; then mkdir -p `dirname $@`; fi
|
|
$(CC) -g -Os $(ALIGN) $(CPU) $(CC_NEON) $(THUMB) -MMD -MP -c -I $(BOOTDIR) -I $(INCLUDE_DIR) $< -o $@ -D$(AArch32_64)=0 $(CFLAGS)
|
|
|
|
#------------------------------------------
|
|
# Linker
|
|
#------------------------------------------
|
|
$(OUTPUT_FILE): $(OBJ_FILE_BOOT) $(OBJ_FILE) $(MEMORY_DEF)
|
|
$(LD) $(OBJ_FILE_BOOT) $(OBJ_FILE) \
|
|
-T '$(MEMORY_DEF)' \
|
|
-o '$(OUTPUT_FILE)' \
|
|
-Map '$(FILE_NAME).map' \
|
|
-static \
|
|
$(LIBS)
|
|
|
|
# Make SREC file
|
|
$(OBJCOPY) -O srec --srec-forceS3 "$(OUTPUT_FILE)" "$(FILE_NAME).srec"
|
|
|
|
# Make Binary file
|
|
$(OBJCOPY) -O binary "$(OUTPUT_FILE)" "$(FILE_NAME).bin"
|
|
|
|
# Dis assemble
|
|
$(OBJDMP) -d -S "$(OUTPUT_FILE)" > "$(FILE_NAME)_disasm.txt"
|
|
|
|
# Time Stamp
|
|
@echo ========== %date% %time% ==========
|
|
@echo ========== !!! Compile Complete !!! ==========
|
|
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
$(CL) $(OBJECT_DIR)/* $(OUTPUT_DIR)/*
|
|
|
|
-include $(DEPEND_FILE)
|