summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile41
1 files changed, 41 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..9720f63
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,41 @@
+CPU=cortex-m0plus
+TC=arm-none-eabi
+CC_OPTS=-fno-builtin -fno-pie -no-pie -nolibc -nostartfiles -mcpu=$(CPU)
+ELF2UF2=tools/elf2uf2/elf2uf2
+PAD_CHECKSUM=tools/pad_checksum.py
+
+all: firmware.uf2
+
+firmware.uf2: firmware.elf
+ $(ELF2UF2) $^ $@
+
+boot2.o: src/boot/boot2.S
+ $(TC)-gcc $(CC_OPTS) -c -o boot2.o $^
+
+boot2_crc32.o: boot2.o
+ $(TC)-objcopy -O binary boot2.o boot2.bin
+ $(PAD_CHECKSUM) -p 256 -s 0xFFFFFFFF boot2.bin boot2_crc32.S
+ $(TC)-gcc -c -o boot2_crc32.o boot2_crc32.S
+
+%.o: src/boot/%.S
+ $(TC)-gcc $(CC_OPTS) -c -o $@ $^
+
+%.o: src/%.c
+ $(TC)-gcc $(CC_OPTS) -c -o $@ $^
+
+%.o: src/libs/%.c
+ $(TC)-gcc $(CC_OPTS) -c -o $@ $^
+
+%.o: src/libs/usb/%.c
+ $(TC)-gcc $(CC_OPTS) -c -o $@ $^
+
+firmware.elf: boot2_crc32.o main.o crt0.o interrupts.o lock.o gpio.o utils.o clock.o cusb.o cdc-acm.o tty.o
+ $(TC)-ld -T linker.ld -Map=$@.map -o $@ $^
+
+clean:
+ @rm -f ./*.o ./*crc32.S ./*.elf ./*.bin ./*.map
+
+mrproper: clean
+ @rm -f firmware.uf2
+
+.PHONY: clean mrproper