mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-11-25 00:48:19 +00:00
189 lines
5.0 KiB
Makefile
189 lines
5.0 KiB
Makefile
# source directories
|
|
SRCDIR_MP = vendor/micropython
|
|
SRCDIR_FW = embed
|
|
|
|
# target directory
|
|
PROJECT ?= bootloader
|
|
BUILD ?= embed/$(PROJECT)/build
|
|
|
|
# include py core make definitions
|
|
include $(SRCDIR_MP)/py/mkenv.mk
|
|
|
|
# sources
|
|
# =====================================
|
|
|
|
BUILD_MP = $(BUILD)/$(SRCDIR_MP)
|
|
BUILD_FW = $(BUILD)/$(SRCDIR_FW)
|
|
BUILD_HDR = $(BUILD)/genhdr
|
|
|
|
CFLAGS_MOD += \
|
|
-I$(SRCDIR_FW)/extmod/modtrezorcrypto/trezor-crypto \
|
|
-I$(SRCDIR_FW)/extmod/modtrezorcrypto/trezor-crypto/ed25519-donna \
|
|
-DAES_128 \
|
|
-DAES_192 \
|
|
-DUSE_KECCAK=1 \
|
|
-DED25519_NO_PRECOMP=1 \
|
|
-Wno-sequence-point
|
|
|
|
# OBJ vendor/micropython
|
|
OBJ_MICROPYTHON += $(addprefix $(BUILD_MP)/,\
|
|
lib/libc/string0.o \
|
|
stmhal/startup_stm32.o \
|
|
)
|
|
|
|
# OBJ vendor/micropython
|
|
OBJ_STMHAL += $(addprefix $(BUILD_MP)/,\
|
|
stmhal/hal/f4/src/stm32f4xx_hal_adc_ex.o \
|
|
stmhal/hal/f4/src/stm32f4xx_hal_adc.o \
|
|
stmhal/hal/f4/src/stm32f4xx_hal_can.o \
|
|
stmhal/hal/f4/src/stm32f4xx_hal_cortex.o \
|
|
stmhal/hal/f4/src/stm32f4xx_hal_dac_ex.o \
|
|
stmhal/hal/f4/src/stm32f4xx_hal_dac.o \
|
|
stmhal/hal/f4/src/stm32f4xx_hal_dma.o \
|
|
stmhal/hal/f4/src/stm32f4xx_hal_flash_ex.o \
|
|
stmhal/hal/f4/src/stm32f4xx_hal_flash.o \
|
|
stmhal/hal/f4/src/stm32f4xx_hal_gpio.o \
|
|
stmhal/hal/f4/src/stm32f4xx_hal_i2c.o \
|
|
stmhal/hal/f4/src/stm32f4xx_hal_pcd_ex.o \
|
|
stmhal/hal/f4/src/stm32f4xx_hal_pcd.o \
|
|
stmhal/hal/f4/src/stm32f4xx_hal_pwr_ex.o \
|
|
stmhal/hal/f4/src/stm32f4xx_hal_pwr.o \
|
|
stmhal/hal/f4/src/stm32f4xx_hal_rcc_ex.o \
|
|
stmhal/hal/f4/src/stm32f4xx_hal_rcc.o \
|
|
stmhal/hal/f4/src/stm32f4xx_hal_rng.o \
|
|
stmhal/hal/f4/src/stm32f4xx_hal_rtc_ex.o \
|
|
stmhal/hal/f4/src/stm32f4xx_hal_rtc.o \
|
|
stmhal/hal/f4/src/stm32f4xx_hal_sd.o \
|
|
stmhal/hal/f4/src/stm32f4xx_hal_spi.o \
|
|
stmhal/hal/f4/src/stm32f4xx_hal_tim_ex.o \
|
|
stmhal/hal/f4/src/stm32f4xx_hal_tim.o \
|
|
stmhal/hal/f4/src/stm32f4xx_hal_uart.o \
|
|
stmhal/hal/f4/src/stm32f4xx_hal.o \
|
|
stmhal/hal/f4/src/stm32f4xx_ll_sdmmc.o \
|
|
stmhal/hal/f4/src/stm32f4xx_ll_usb.o \
|
|
)
|
|
|
|
# OBJ embed/
|
|
OBJ_BOOTLOADER += $(addprefix $(BUILD_FW)/, \
|
|
bootloader/header.o \
|
|
bootloader/main.o \
|
|
bootloader/messages.o \
|
|
bootloader/nanopb/pb_common.o \
|
|
bootloader/nanopb/pb_decode.o \
|
|
bootloader/nanopb/pb_encode.o \
|
|
bootloader/protob/messages.pb.o \
|
|
bootloader/protob/types.pb.o \
|
|
extmod/modtrezorcrypto/trezor-crypto/ed25519-donna/ed25519.o \
|
|
extmod/modtrezorcrypto/trezor-crypto/blake2s.o \
|
|
extmod/modtrezorcrypto/trezor-crypto/sha2.o \
|
|
extmod/modtrezorui/display.o \
|
|
extmod/modtrezorui/inflate.o \
|
|
extmod/modtrezorui/font_bitmap.o \
|
|
extmod/modtrezorui/font_roboto_bold_20.o \
|
|
)
|
|
|
|
CFLAGS_MOD += \
|
|
-DTREZOR_FONT_MONO_DISABLE=1 \
|
|
-DTREZOR_FONT_NORMAL_DISABLE=1 \
|
|
|
|
OBJ_TREZORHAL += $(addprefix $(BUILD_FW)/, \
|
|
trezorhal/common.o \
|
|
trezorhal/image.o \
|
|
trezorhal/flash.o \
|
|
trezorhal/mini_printf.o \
|
|
trezorhal/stm32_it.o \
|
|
trezorhal/stm32_system.o \
|
|
trezorhal/touch.o \
|
|
trezorhal/usb.o \
|
|
trezorhal/usbd_conf.o \
|
|
trezorhal/usbd_core.o \
|
|
trezorhal/usbd_ctlreq.o \
|
|
trezorhal/usbd_ioreq.o \
|
|
trezorhal/hal/stm32f4xx_hal_sram.o \
|
|
trezorhal/hal/stm32f4xx_ll_fsmc.o \
|
|
)
|
|
|
|
OBJ = $(OBJ_MICROPYTHON) $(OBJ_STMHAL) $(OBJ_TREZORHAL)
|
|
OBJ += $(OBJ_BOOTLOADER)
|
|
|
|
# comp flags
|
|
# =====================================
|
|
|
|
CROSS_COMPILE = arm-none-eabi-
|
|
|
|
INC += -I.
|
|
INC += -I$(SRCDIR_FW)/$(PROJECT)
|
|
INC += -I$(SRCDIR_FW)/$(PROJECT)/nanopb
|
|
INC += -I$(SRCDIR_FW)/$(PROJECT)/protob
|
|
INC += -I$(SRCDIR_FW)/extmod/modtrezorui
|
|
INC += -I$(SRCDIR_FW)/trezorhal
|
|
INC += -I$(SRCDIR_FW)/trezorhal/hal
|
|
INC += -I$(SRCDIR_MP)
|
|
INC += -I$(SRCDIR_MP)/stmhal
|
|
INC += -I$(SRCDIR_MP)/stmhal/cmsis
|
|
INC += -I$(SRCDIR_MP)/stmhal/hal/f4/inc
|
|
INC += -I$(SRCDIR_MP)/lib/cmsis/inc
|
|
INC += -I$(BUILD)
|
|
|
|
ifeq ($(DEBUG), 1)
|
|
CFLAGS += -Os -g3
|
|
else
|
|
CFLAGS += -Os -DNDEBUG
|
|
endif
|
|
|
|
CFLAGS += $(INC) $(CFLAGS_MOD) $(CFLAGS_EXTRA)
|
|
CFLAGS += -std=gnu99 -nostdlib -Wall -Werror -Wdouble-promotion -Wpointer-arith
|
|
CFLAGS += -mthumb -mtune=cortex-m4 -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -fsingle-precision-constant
|
|
CFLAGS += -DSTM32F405xx -DMCU_SERIES_F4
|
|
CFLAGS += -DSTM32_HAL_H='<stm32f4xx_hal.h>'
|
|
CFLAGS += -DTREZOR_STM32
|
|
CFLAGS += -DPB_FIELD_16BIT=1
|
|
|
|
LIBS = $(shell $(CC) $(CFLAGS) -print-libgcc-file-name)
|
|
|
|
LDFLAGS = -nostdlib -T $(SRCDIR_FW)/$(PROJECT)/memory.ld -Map=$@.map --cref
|
|
|
|
# remove uncalled code from the final image
|
|
CFLAGS += -fdata-sections -ffunction-sections
|
|
LDFLAGS += --gc-sections
|
|
|
|
# comp rules
|
|
# =====================================
|
|
|
|
all: $(BUILD)/$(PROJECT).bin
|
|
|
|
$(BUILD)/$(PROJECT).elf: $(OBJ)
|
|
$(ECHO) "LINK $@"
|
|
$(Q)$(LD) $(LDFLAGS) -o $@ $^ $(LIBS)
|
|
$(Q)$(SIZE) $@
|
|
|
|
$(BUILD)/$(PROJECT).bin: $(BUILD)/$(PROJECT).elf
|
|
$(Q)$(OBJCOPY) -O binary -j .header -j .flash -j .data $^ $(BUILD)/$(PROJECT).bin
|
|
|
|
$(BUILD)/%.o: %.S
|
|
$(ECHO) "CC $<"
|
|
$(Q)$(CC) $(CFLAGS) -c -o $@ $<
|
|
|
|
$(BUILD)/%.o: %.s
|
|
$(ECHO) "AS $<"
|
|
$(Q)$(AS) -o $@ $<
|
|
|
|
$(BUILD)/%.o: %.c
|
|
$(ECHO) "CC $<"
|
|
$(Q)$(CC) $(CFLAGS) -c -MD -o $@ $<
|
|
|
|
OBJ_DIRS = $(sort $(dir $(OBJ)))
|
|
$(OBJ): | $(OBJ_DIRS)
|
|
$(OBJ_DIRS) $(BUILD_HDR):
|
|
$(MKDIR) -p $@
|
|
|
|
$(OBJ): | $(BUILD_HDR)/qstrdefs.generated.h
|
|
|
|
$(BUILD_HDR)/qstrdefs.generated.h: | $(BUILD_HDR)
|
|
touch $(BUILD_HDR)/qstrdefs.generated.h
|
|
|
|
clean:
|
|
$(RM) -rf $(BUILD)
|
|
|
|
.PHONY: all clean
|