121 lines
2.8 KiB
Makefile
121 lines
2.8 KiB
Makefile
|
include param.mk
|
||
|
|
||
|
COMMON_PATH = ../../Common
|
||
|
|
||
|
COMMON_OBJS = $(COMMON_PATH)/prg_bt.o $(COMMON_PATH)/prg_bt_addr.o
|
||
|
COMMON_LIB = $(COMMON_PATH)/libcommon.a
|
||
|
STARTUP_OBJS = $(COMMON_PATH)/prg_disp.o
|
||
|
PROJ_OBJS = $(STARTUP_OBJS) $(OBJS)
|
||
|
|
||
|
BIN_PATH = ../../Bin
|
||
|
GCC_PATH = $(BIN_PATH)/GNU/GNU_ARM
|
||
|
BIN_GCC_PATH = $(GCC_PATH)/bin
|
||
|
LIB_GCC_PATH = $(GCC_PATH)/lib/gcc/arm-elf
|
||
|
LIB_PATH = $(GCC_PATH)/arm-elf/lib
|
||
|
|
||
|
LD_SCRIPT = $(COMMON_PATH)/ld.lcf
|
||
|
|
||
|
TARGET_BIN = $(PROJ).bin
|
||
|
PROJ_ELF = $(PROJ).elf
|
||
|
PROJ_MAP = $(PROJ).map
|
||
|
|
||
|
CROSS_COMPILE = arm-elf
|
||
|
CROSS_COMPILE_PRE = $(CROSS_COMPILE)-
|
||
|
BIN_GCC_PATH_CROSS = $(CROSS_COMPILE_PRE)
|
||
|
|
||
|
CC = $(BIN_GCC_PATH_CROSS)gcc
|
||
|
AS_CPP = $(BIN_GCC_PATH_CROSS)gcc
|
||
|
AS = $(BIN_GCC_PATH_CROSS)as
|
||
|
AR = $(BIN_GCC_PATH_CROSS)ar
|
||
|
LD = $(BIN_GCC_PATH_CROSS)ld
|
||
|
OC = $(BIN_GCC_PATH_CROSS)objcopy
|
||
|
|
||
|
RM = $(BIN_PATH)/GNU/Tools/rm
|
||
|
|
||
|
O_LANG := -x c
|
||
|
|
||
|
GNU_ARM_M_ARCH := -mcpu=arm9e
|
||
|
GNU_ARM_L_ARCH := --architecture=armv5tej
|
||
|
|
||
|
O_OPTIM := -O3
|
||
|
|
||
|
C_INCL := . $(COMMON_PATH)
|
||
|
|
||
|
P_DEFS_GLOBAL := -DENDIAN_LITTLE
|
||
|
|
||
|
O_GDB := -gdwarf-2 -fno-dwarf2-cfi-asm
|
||
|
|
||
|
M_FLAGS_GLOBAL := $(GNU_ARM_M_ARCH)
|
||
|
__FLAGS_GLOBAL := $(M_FLAGS_GLOBAL) $(P_DEFS_GLOBAL) $(O_OPTIM) $(O_GDB)
|
||
|
|
||
|
C_FLAGS_GLOBAL := -S $(__FLAGS_GLOBAL) -fno-builtin $(O_LANG) -Wall
|
||
|
|
||
|
AS_CPP_FLAGS_GLOBAL := -c $(__FLAGS_GLOBAL) -Wa,-EL -x assembler-with-cpp -D __ASSEMBLY__ -Wall -Wa
|
||
|
|
||
|
A_FLAGS_GLOBAL := -EL
|
||
|
|
||
|
A_LST := -almns=
|
||
|
|
||
|
ARFLAGS := -rcuv
|
||
|
|
||
|
CFLAGS = \
|
||
|
-c \
|
||
|
$(addprefix -I,$(C_INCL))
|
||
|
|
||
|
LFLAGS = \
|
||
|
--cref \
|
||
|
--oformat elf32-littlearm \
|
||
|
--trace \
|
||
|
--nmagic \
|
||
|
$(GNU_ARM_L_ARCH)
|
||
|
|
||
|
S_INC = $(addprefix -I,$(C_INCL))
|
||
|
|
||
|
A_LST = -almns=
|
||
|
|
||
|
%.o : %.c
|
||
|
$(CC) $(C_FLAGS_GLOBAL) $(CFLAGS) -C -E $< > $(basename $@).p
|
||
|
$(CC) $(C_FLAGS_GLOBAL) $(CFLAGS) -o $(basename $@).asm $<
|
||
|
$(AS) $(A_FLAGS_GLOBAL) $(A_LST)$(basename $@).lst -o $@ $(basename $@).asm
|
||
|
|
||
|
%.o : %.S
|
||
|
$(AS_CPP) $(AS_CPP_FLAGS_GLOBAL) $(S_INC) -o $(basename $@).o -Wa,$(A_LST)$(basename $@).lst $<
|
||
|
|
||
|
$(COMMON_LIB): $(COMMON_OBJS)
|
||
|
$(AR) $(ARFLAGS) $(COMMON_LIB) $(COMMON_OBJS)
|
||
|
|
||
|
$(PROJ_ELF): $(PROJ_OBJS) $(LD_SCRIPT)
|
||
|
$(LD) $(LFLAGS) \
|
||
|
--library-path=$(COMMON_PATH) \
|
||
|
--library-path=$(LIB_PATH) \
|
||
|
--library-path=$(LIB_GCC_PATH) \
|
||
|
--script=$(LD_SCRIPT) \
|
||
|
$(PROJ_OBJS) \
|
||
|
--library=common \
|
||
|
--library=m \
|
||
|
--library=c \
|
||
|
--library=gcc \
|
||
|
-Map $(PROJ_MAP) \
|
||
|
-o $(PROJ_ELF)
|
||
|
|
||
|
$(TARGET_BIN): $(COMMON_LIB) $(PROJ_ELF)
|
||
|
$(OC) --output-target=binary $(PROJ_ELF) $(TARGET_BIN)
|
||
|
|
||
|
.PHONY: all
|
||
|
all: $(TARGET_BIN)
|
||
|
|
||
|
clean:
|
||
|
$(RM) -f \
|
||
|
$(PROJ_OBJS) \
|
||
|
$(PROJ_OBJS:.o=.lst) \
|
||
|
$(PROJ_OBJS:.o=.p) \
|
||
|
$(PROJ_OBJS:.o=.asm) \
|
||
|
$(COMMON_OBJS) \
|
||
|
$(COMMON_OBJS:.o=.lst) \
|
||
|
$(COMMON_OBJS:.o=.p) \
|
||
|
$(COMMON_OBJS:.o=.asm) \
|
||
|
$(COMMON_LIB) \
|
||
|
$(PROJ_MAP) \
|
||
|
$(PROJ_ELF) \
|
||
|
$(TARGET_BIN)
|