Files
2025-10-14 09:52:32 +09:00

72 lines
2.1 KiB
Makefile

export SHELLOPTS := igncr
CPUR := -march=armv7-r -marm -mlittle-endian -mfloat-abi=soft
CPUM := -march=armv7-m -mcpu=cortex-m3 -mthumb -mlittle-endian -mfloat-abi=soft -mrestrict-it
AOPT := -g -Wall -Wa,--gdwarf2 -xassembler-with-cpp -c
COPT := -std=c99 -g -O0 -fno-jump-tables -ffunction-sections -fdata-sections -Wall -c
LOPT := -g -Wall -Wl,--nmagic -nodefaultlibs -nostartfiles -Wl,--gc-sections -Wl,--entry=_start
LIBS := -lgcc -lc
TMP := ./tmp
VPATH := . ..
CCGRP := arm-none-eabi-
NAME := coverage
.PHONY: all
all: $(NAME).elf $(NAME)_cm.elf $(NAME)_flash.elf $(NAME).c.eca
$(TMP):
mkdir $(TMP)
$(TMP)/%.o: %.c $(MAKEFILE_LIST)
$(CCGRP)gcc $(COPT) $(CPUR) -o $@ $<
$(TMP)/%.thumb2.o: %.c $(MAKEFILE_LIST)
$(CCGRP)gcc $(COPT) $(CPUM) -o $@ $<
$(TMP)/%.o: %.cpp $(MAKEFILE_LIST)
$(CCGRP)g++ $(COPT) $(CPUR) -o $@ $<
$(TMP)/%.o: %.sx $(MAKEFILE_LIST)
$(CCGRP)gcc $(AOPT) $(CPUR) -o $@ $<
$(TMP)/%.thumb2.o: %.sx $(MAKEFILE_LIST)
$(CCGRP)gcc $(AOPT) $(CPUM) -o $@ $<
$(TMP)/crt0.flash.o: crt0.sx $(MAKEFILE_LIST)
$(CCGRP)gcc $(AOPT) $(CPUR) -D FLASHSTART -o $@ $<
$(TMP)/flash.ld: cortex-r5.lds $(MAKEFILE_LIST) | $(TMP)
$(CCGRP)cpp -P -o $@ $< -D FLASHSTART -D RAMSTART=0x08000000 -D RAMSIZE=32K -D FLASHSIZE=128K
$(TMP)/sram.ld: cortex-r5.lds $(MAKEFILE_LIST) | $(TMP)
$(CCGRP)cpp -P -o $@ $< -D RAMSTART=0x08000000 -D RAMSIZE=32K
$(TMP)/sram_cm.ld: cortex-r5.lds $(MAKEFILE_LIST) | $(TMP)
$(CCGRP)cpp -P -o $@ $< -D RAMSTART=0x20000000 -D RAMSIZE=32K
$(NAME)_flash.elf: $(addprefix $(TMP)/,flash.ld crt0.flash.o main.o $(NAME).o)
$(CCGRP)gcc $(LOPT) $(CPUR) -o $@ -T $^ -Wl,--start-group $(LIBS) -Wl,--end-group
$(NAME).elf: $(addprefix $(TMP)/,sram.ld crt0.o main.o $(NAME).o)
$(CCGRP)gcc $(LOPT) $(CPUR) -o $@ -T $^ -Wl,--start-group $(LIBS) -Wl,--end-group
$(NAME)_cm.elf: $(addprefix $(TMP)/,sram_cm.ld crt0.thumb2.o main.thumb2.o $(NAME).thumb2.o)
$(CCGRP)gcc $(LOPT) $(CPUM) -o $@ -T $^ -lm -lgcc
# Create files for extended code analysis using t32cast
ECAOPT := -m32
%.c.eca: %.c | $(TMP)
$(ECAGRP)t32cast $(ECAOPT) -o $(addprefix ../,$@) $^
clean:
-rm -fvr $(TMP)
-rm -fv *.elf
-rm -fv ../*.eca