wolfBoot/Makefile

124 lines
2.8 KiB
Makefile

CROSS_COMPILE:=arm-none-eabi-
CC:=$(CROSS_COMPILE)gcc
LD:=$(CROSS_COMPILE)gcc
OBJCOPY:=$(CROSS_COMPILE)objcopy
SIZE:=$(CROSS_COMPILE)size
BOOT_IMG?=test-app/image.bin
BOOT0_OFFSET?=0x20000
SIGN?=ED25519
TARGET?=stm32f4
DEBUG?=0
VTOR?=1
SWAP?=1
CORTEX_M0?=0
LSCRIPT:=hal/$(TARGET).ld
OBJS:= \
./hal/$(TARGET).o \
./src/loader.o \
./src/mem.o \
./src/crypto.o \
./src/wolfboot.o \
./src/image.o \
./src/libwolfboot.o \
./lib/wolfssl/wolfcrypt/src/sha256.o \
./lib/wolfssl/wolfcrypt/src/hash.o \
./lib/wolfssl/wolfcrypt/src/wolfmath.o \
./lib/wolfssl/wolfcrypt/src/fe_low_mem.o
ifeq ($(TARGET),samr21)
CORTEX_M0=1
endif
ifeq ($(CORTEX_M0),1)
CFLAGS:=-mcpu=cortex-m0
else
CFLAGS:=-mcpu=cortex-m3
endif
CFLAGS+=-mthumb -Wall -Wextra -Wno-main -Wstack-usage=1024 -ffreestanding -Wno-unused \
-Ilib/bootutil/include -Iinclude/ -Ilib/wolfssl -nostartfiles \
-nostdlib \
-DWOLFSSL_USER_SETTINGS \
-DPLATFORM_$(TARGET)
ifeq ($(SIGN),ED25519)
OBJS+= ./lib/wolfssl/wolfcrypt/src/sha512.o \
./lib/wolfssl/wolfcrypt/src/ed25519.o \
./lib/wolfssl/wolfcrypt/src/ge_low_mem.o \
./src/ed25519_pub_key.o
CFLAGS+=-DWOLFBOOT_SIGN_ED25519
endif
ifeq ($(SIGN),EC256)
OBJS+= ./ext/wolfssl/wolfcrypt/src/ecc.o
CFLAGS+=-DWOLFBOOT_SIGN_EC256
endif
ifeq ($(DEBUG),1)
CFLAGS+=-O0 -g -ggdb3 -DDEBUG=1
else
CFLAGS+=-Os
endif
ifeq ($(VTOR),0)
CFLAGS+=-DNO_VTOR
endif
LDFLAGS:=-T $(LSCRIPT) -Wl,-gc-sections -Wl,-Map=wolfboot.map -ffreestanding -nostartfiles -mcpu=cortex-m3 -mthumb -nostdlib
all: factory.bin
wolfboot.bin: wolfboot.elf
$(OBJCOPY) -O binary $^ $@
$(SIZE) wolfboot.elf
wolfboot.hex: wolfboot.elf
$(OBJCOPY) -O ihex $^ $@
align: wolfboot-align.bin
wolfboot-align.bin: wolfboot.elf
$(OBJCOPY) -O binary $^ $@ --pad-to=$(BOOT0_OFFSET) --gap-fill=255
$(SIZE) wolfboot.elf
test-app/image.bin:
make -C test-app TARGET=$(TARGET)
tools/ed25519/ed25519_sign:
make -C tools/ed25519
ed25519.der: tools/ed25519/ed25519_sign
tools/ed25519/ed25519_keygen src/ed25519_pub_key.c
factory.bin: $(BOOT_IMG) wolfboot-align.bin tools/ed25519/ed25519_sign ed25519.der
tools/ed25519/ed25519_sign $(BOOT_IMG) ed25519.der 1
cat wolfboot-align.bin $(BOOT_IMG).v1.signed > $@
second.img: $(BOOT_IMG) wolfboot-align.bin tools/ed25519/ed25519_sign ed25519.der
tools/ed25519/ed25519_sign $(BOOT_IMG) ed25519.der 1 65536
tools/ed25519/ed25519_sign $(BOOT_IMG) ed25519.der 2
cat wolfboot-align.bin $(BOOT_IMG).v1.signed $(BOOT_IMG).v2.signed > $@
wolfboot.elf: $(OBJS) $(LSCRIPT)
grep stat $(OBJS)
$(LD) $(LDFLAGS) -Wl,--start-group $(OBJS) -Wl,--end-group -o $@
src/ed25519_pub_key.c: ed25519.der
keys: ed25519.der
clean:
rm -f *.bin *.elf $(OBJS) wolfboot.map *.bin *.hex
make -C test-app clean
distclean: clean
make -C tools/ed25519 clean
rm -f *.pem *.der tags ./src/ed25519_pub_key.c