mirror of
https://github.com/tillitis/tillitis-key1.git
synced 2025-07-06 20:04:41 -04:00

- Use one common Makefile for all test device apps. - Use a single copy of syscall.[Sh]. - Update docs for building.
123 lines
2.6 KiB
Makefile
123 lines
2.6 KiB
Makefile
P := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
|
|
LIBDIR ?= ../tkey-libs
|
|
OBJCOPY ?= llvm-objcopy
|
|
CC = clang
|
|
CFLAGS = \
|
|
-target riscv32-unknown-none-elf \
|
|
-march=rv32iczmmul \
|
|
-mabi=ilp32 \
|
|
-mcmodel=medany \
|
|
-static \
|
|
-std=gnu99 \
|
|
-Os \
|
|
-ffast-math \
|
|
-fno-common \
|
|
-fno-builtin-printf \
|
|
-fno-builtin-putchar \
|
|
-fno-builtin-memcpy \
|
|
-nostdlib \
|
|
-mno-relax \
|
|
-Wall \
|
|
-Wpedantic \
|
|
-Wno-language-extension-token \
|
|
-Werror \
|
|
-flto \
|
|
-g \
|
|
-I $(LIBDIR)/include \
|
|
-I $(LIBDIR) \
|
|
-I include \
|
|
-I ../
|
|
|
|
AS = clang
|
|
|
|
ASFLAGS = \
|
|
-target riscv32-unknown-none-elf \
|
|
-march=rv32iczmmul \
|
|
-mabi=ilp32 \
|
|
-mno-relax
|
|
|
|
LDFLAGS = \
|
|
-T $(LIBDIR)/app.lds \
|
|
-L $(LIBDIR) -lcrt0 -lcommon -lmonocypher -lblake2s
|
|
|
|
.PHONY: all
|
|
all: defaultapp.bin reset_test.bin testapp.bin testloadapp.bin
|
|
|
|
# Turn elf into bin for device
|
|
%.bin: %.elf
|
|
$(OBJCOPY) --input-target=elf32-littleriscv --output-target=binary $^ $@
|
|
chmod a-x $@
|
|
|
|
.PHONY: tkey-libs
|
|
tkey-libs:
|
|
make -C $(LIBDIR)
|
|
|
|
OBJS=syscall.o
|
|
|
|
# syscall.o: syscall.S
|
|
# $(CC) $(CFLAGS) $(DEFAULTAPP_OBJS) $(LDFLAGS) -o $@
|
|
|
|
# defaultapp
|
|
DEFAULTAPP_FMTFILES = *.[ch]
|
|
|
|
DEFAULTAPP_OBJS = \
|
|
$(P)/defaultapp/main.o
|
|
|
|
defaultapp.elf: tkey-libs $(OBJS) $(DEFAULTAPP_OBJS)
|
|
$(CC) $(CFLAGS) $(OBJS) $(DEFAULTAPP_OBJS) $(LDFLAGS) -o $@
|
|
|
|
# reset_test
|
|
|
|
RESET_TEST_FMTFILES = *.[ch]
|
|
|
|
RESET_TEST_OBJS = \
|
|
$(P)/reset_test/main.o
|
|
|
|
reset_test.elf: tkey-libs $(RESET_TEST_OBJS)
|
|
$(CC) $(CFLAGS) $(OBJS) $(RESET_TEST_OBJS) $(LDFLAGS) -o $@
|
|
|
|
# testapp
|
|
|
|
TESTAPP_OBJS = \
|
|
$(P)/testapp/main.o
|
|
|
|
testapp.elf: tkey-libs $(TESTAPP_OBJS)
|
|
$(CC) $(CFLAGS) $(OBJS) $(TESTAPP_OBJS) $(LDFLAGS) -o $@
|
|
|
|
# testloadapp
|
|
|
|
TESTLOADAPP_OBJS = \
|
|
$(P)/testloadapp/main.o
|
|
|
|
testloadapp.elf: tkey-libs $(TESTLOADAPP_OBJS)
|
|
$(CC) $(CFLAGS) $(OBJS) $(TESTLOADAPP_OBJS) $(LDFLAGS) -o $@
|
|
|
|
.PHONY: fmt
|
|
fmt:
|
|
clang-format --dry-run --ferror-limit=0 defaultapp/*.[ch]
|
|
clang-format --verbose -i defaultapp/*.[ch]
|
|
|
|
clang-format --dry-run --ferror-limit=0 reset_test/*.[ch]
|
|
clang-format --verbose -i reset_test/*.[ch]
|
|
|
|
clang-format --dry-run --ferror-limit=0 testapp/*.[ch]
|
|
clang-format --verbose -i testapp/*.[ch]
|
|
|
|
clang-format --dry-run --ferror-limit=0 testloadapp/*.[ch]
|
|
clang-format --verbose -i testloadapp/*.[ch]
|
|
|
|
.PHONY: checkfmt
|
|
checkfmt:
|
|
clang-format --dry-run --ferror-limit=0 defaultapp/*.[ch]
|
|
|
|
clang-format --dry-run --ferror-limit=0 reset_test/*.[ch]
|
|
|
|
clang-format --dry-run --ferror-limit=0 testapp/*.[ch]
|
|
|
|
clang-format --dry-run --ferror-limit=0 testloadapp/*.[ch]
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
rm -f *.elf *.bin $(OBJS) $(DEFAULTAPP_OBJS) $(RESET_TEST_OBJS) \
|
|
$(TESTAPP_OBJS) $(TESTLOADAPP_OBJS)
|
|
|