81 lines
1.8 KiB
Makefile
81 lines
1.8 KiB
Makefile
export SHELLOPTS := igncr
|
|
|
|
NAME := usraccess
|
|
OBJ := usraccess junction
|
|
|
|
.PHONY : help all gnu arm clean
|
|
help:
|
|
@echo "Valid targets:"
|
|
@echo " all : build 'gnu' and 'arm'"
|
|
@echo " gnu : build $(NAME).gnu.bin with GCC"
|
|
@echo " arm : build $(NAME).arm.bin with ARM RealView compiler"
|
|
@echo " clean : delete all o-files, elf-files and bin-files"
|
|
all: gnu arm
|
|
|
|
|
|
##### GNU compiler (gcc) #####
|
|
CCGRP := arm-none-eabi-
|
|
GCPU := -march=armv4t -marm -mlittle-endian -msoft-float
|
|
GAOPT := -Wall $(GCPU) -xassembler-with-cpp
|
|
GCOPT := -Wall $(GCPU) -mthumb -mthumb-interwork -fPIE -fshort-enums -fno-zero-initialized-in-bss
|
|
GLOPT := -Wall $(GCPU) -Wl,--nmagic -nostdlib -Wl,--entry=_start
|
|
|
|
ifneq ($(DEBUG),)
|
|
GAOPT += -Wa,--gdwarf2
|
|
GCOPT += -g
|
|
else
|
|
GCOPT += -Os
|
|
endif
|
|
|
|
.PHONY : gnu
|
|
gnu: $(NAME).gnu.bin
|
|
|
|
%.gnu.o: %.c $(MAKEFILE_LIST)
|
|
$(CCGRP)gcc $(GCOPT) -c -o $@ $<
|
|
|
|
%.gnu.o: %.sx $(MAKEFILE_LIST)
|
|
$(CCGRP)gcc $(GAOPT) -c -o $@ $<
|
|
|
|
.PRECIOUS: %.gnu.elf
|
|
%.gnu.elf: %.gnu.ld $(addsuffix .gnu.o, $(OBJ))
|
|
$(CCGRP)gcc $(GLOPT) -o $@ -T $^
|
|
|
|
%.gnu.bin : %.gnu.elf
|
|
$(CCGRP)objcopy -O binary $< $@
|
|
|
|
|
|
##### ARM RealView or Development Studio compiler (armcc) #####
|
|
ACPU := --cpu=4T --littleend
|
|
AAOPT := $(ACPU) --arm
|
|
ACOPT := $(ACPU) --thumb --apcs=/interwork/fpic --bss_threshold=8
|
|
ALOPT := $(ACPU) --no_startup --diag_suppress=L6314 --entry=__main
|
|
ifneq ($(DEBUG),)
|
|
AAOPT += --debug --dwarf3
|
|
ACOPT += --debug --dwarf3 -O0
|
|
ALOPT += --debug --bestdebug
|
|
else
|
|
ACOPT += -Ospace
|
|
endif
|
|
|
|
.PHONY : arm
|
|
arm: $(NAME).arm.bin
|
|
|
|
%.arm.o: %.c $(MAKEFILE_LIST)
|
|
armcc $(ACOPT) -c -o $@ $<
|
|
|
|
%.arm.o: %.sx $(MAKEFILE_LIST)
|
|
armcc $(AAOPT) -c -o $@ $<
|
|
|
|
.PRECIOUS: %.arm.elf
|
|
%.arm.elf: %.arm.ld $(addsuffix .arm.o, $(OBJ))
|
|
armlink $(ALOPT) -o $@ --scatter $^
|
|
|
|
%.arm.bin: %.arm.elf
|
|
fromelf --bin --output $@ $<
|
|
|
|
|
|
clean:
|
|
rm -fv *.o
|
|
rm -fv *.elf
|
|
rm -fv *.bin
|