mirror of https://github.com/wolfSSL/wolfBoot.git
165 lines
3.8 KiB
Makefile
165 lines
3.8 KiB
Makefile
CROSS_COMPILE:=arm-none-eabi-
|
|
CC:=$(CROSS_COMPILE)gcc
|
|
LD:=$(CROSS_COMPILE)gcc
|
|
AS:=$(CROSS_COMPILE)gcc
|
|
|
|
|
|
OBJCOPY:=$(CROSS_COMPILE)objcopy
|
|
SIZE:=$(CROSS_COMPILE)size
|
|
BOOT_IMG?=test-app/image.bin
|
|
BOOT0_OFFSET?=0x10000
|
|
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/string.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 ($(SIGN),ECC256)
|
|
KEYGEN_TOOL=tools/ecc256/ecc256_keygen
|
|
SIGN_TOOL=tools/ecc256/ecc256_sign
|
|
PRIVATE_KEY=ecc256.der
|
|
else
|
|
KEYGEN_TOOL=tools/ed25519/ed25519_keygen
|
|
SIGN_TOOL=tools/ed25519/ed25519_sign
|
|
PRIVATE_KEY=ed25519.der
|
|
endif
|
|
|
|
MATH_OBJS:=./lib/wolfssl/wolfcrypt/src/sp_int.o
|
|
|
|
|
|
|
|
ifeq ($(CORTEX_M0),1)
|
|
CFLAGS:=-mcpu=cortex-m0
|
|
MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_c32.o
|
|
else
|
|
CFLAGS:=-mcpu=cortex-m3
|
|
MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_cortexm.o
|
|
endif
|
|
|
|
ifeq ($(FASTMATH),1)
|
|
MATH_OBJS:=./lib/wolfssl/wolfcrypt/src/integer.o
|
|
CFLAGS+=-DUSE_FAST_MATH
|
|
endif
|
|
|
|
CFLAGS+=-mthumb -Wall -Wextra -Wno-main -Wstack-usage=1024 -ffreestanding -Wno-unused \
|
|
-Ilib/bootutil/include -Iinclude/ -Ilib/wolfssl -nostartfiles \
|
|
-DWOLFSSL_USER_SETTINGS \
|
|
-mthumb -mlittle-endian -mthumb-interwork \
|
|
-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 -nostdlib -DWOLFSSL_STATIC_MEMORY
|
|
LDFLAGS+=-nostdlib
|
|
endif
|
|
|
|
ifeq ($(SIGN),ECC256)
|
|
OBJS+= \
|
|
$(MATH_OBJS) \
|
|
./lib/wolfssl/wolfcrypt/src/ecc.o \
|
|
./lib/wolfssl/wolfcrypt/src/ge_low_mem.o \
|
|
./lib/wolfssl/wolfcrypt/src/memory.o \
|
|
./lib/wolfssl/wolfcrypt/src/wc_port.o \
|
|
./src/ecc256_pub_key.o \
|
|
./src/xmalloc.o
|
|
CFLAGS+=-DWOLFBOOT_SIGN_ECC256 -DXMALLOC_USER
|
|
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
|
|
|
|
ASFLAGS:=$(CFLAGS)
|
|
|
|
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
|
|
|
|
tools/ecc256/ecc256_sign:
|
|
make -C tools/ecc256
|
|
|
|
ed25519.der: tools/ed25519/ed25519_sign
|
|
tools/ed25519/ed25519_keygen src/ed25519_pub_key.c
|
|
|
|
ecc256.der: tools/ecc256/ecc256_sign
|
|
tools/ecc256/ecc256_keygen src/ecc256_pub_key.c
|
|
|
|
factory.bin: $(BOOT_IMG) wolfboot-align.bin $(SIGN_TOOL) $(PRIVATE_KEY)
|
|
$(SIGN_TOOL) $(BOOT_IMG) $(PRIVATE_KEY) 1
|
|
cat wolfboot-align.bin $(BOOT_IMG).v1.signed > $@
|
|
|
|
second.img: $(BOOT_IMG) wolfboot-align.bin $(SIGN_TOOL) $(PRIVATE_KEY)
|
|
$(SIGN_TOOL) $(BOOT_IMG) $(PRIVATE_KEY) 1 65536
|
|
$(SIGN_TOOL) $(BOOT_IMG) $(PRIVATE_KEY) 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
|
|
|
|
src/ecc256_pub_key.c: ecc256.der
|
|
|
|
keys: $(PRIVATE_KEY)
|
|
|
|
clean:
|
|
rm -f *.bin *.elf $(OBJS) wolfboot.map *.bin *.hex
|
|
make -C test-app clean
|
|
|
|
distclean: clean
|
|
make -C tools/ed25519 clean
|
|
make -C tools/ecc256 clean
|
|
rm -f *.pem *.der tags ./src/ed25519_pub_key.c ./src/ecc256_pub_key.c
|
|
|