summaryrefslogtreecommitdiff
path: root/c/menu/Makefile
blob: bd92e6a28f3aeb36c461be7da7e3b141b8a0d5a1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
CC ?= clang
CFLAGS_MARCH ?= -march=rv32imacb_zicntr_zicond_zicsr_zifencei_zihintpause_zilsd_zclsd_zabha_zacas_zbkb_zbkx_zcb_zcmp_zcmt
CFLAGS_OPT ?= -O3
CFLAGS ?= ${CFLAGS_MARCH} ${CFLAGS_OPT}

ifeq (${CC}, clang)
	CC := ${CC} -target riscv32-none-elf
endif

.PHONY: all dump load clean

all: menu.hex

menu.o: menu.c calculator.h digilines.h games.h screensaver.h
	${CC} -I../rvcontroller-libraries ${CFLAGS} -ffreestanding -c -o menu.o menu.c

calculator.o: calculator.c
	${CC} -I../rvcontroller-libraries ${CFLAGS} -ffreestanding -c -o calculator.o calculator.c

digilines.o: digilines.c
	${CC} -I../rvcontroller-libraries ${CFLAGS} -ffreestanding -c -o digilines.o digilines.c

games.o: games.c
	${CC} -I../rvcontroller-libraries ${CFLAGS} -ffreestanding -c -o games.o games.c

screensaver.o: screensaver.c
	${CC} -I../rvcontroller-libraries ${CFLAGS} -ffreestanding -c -o screensaver.o screensaver.c

menu.elf: ../rvcontroller-libraries/rvcontroller-init.o ../rvcontroller-libraries/rvcontroller-ecalls.o menu.o calculator.o digilines.o games.o screensaver.o
# riscv32-none-elf-ld -T rvcontroller.ld --no-warn-rwx-segments -o menu.elf ../rvcontroller-libraries/rvcontroller-init.o ../rvcontroller-libraries/rvcontroller-ecalls.o menu.o calculator.o digilines.o games.o
	${CC} -T rvcontroller.ld -nostdlib -nostartfiles -Xlinker --no-warn-rwx-segments -o menu.elf ../rvcontroller-libraries/rvcontroller-init.o ../rvcontroller-libraries/rvcontroller-ecalls.o menu.o calculator.o digilines.o games.o screensaver.o

dump: menu.elf
	riscv32-none-elf-objdump -d menu.elf

menu.hex: menu.elf
	riscv32-none-elf-objcopy -O ihex menu.elf menu.hex

load: menu.hex
	bash -c "wl-copy < menu.hex"

clean:
	rm -f menu.bin menu.elf menu.o init.o calculator.o digilines.o games.o screensaver.o