################################################################################ # \file MCUBootApp.mk # \version 1.0 # # \brief # Makefile for Cypress MCUBoot-based application. # ################################################################################ # \copyright # Copyright 2018-2019 Cypress Semiconductor Corporation # SPDX-License-Identifier: Apache-2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. ################################################################################ include host.mk # Cypress' MCUBoot Application supports GCC ARM only at this moment # Set default compiler to GCC if not specified from command line COMPILER ?= GCC_ARM USE_CRYPTO_HW ?= 0 USE_EXTERNAL_FLASH ?= 0 MCUBOOT_IMAGE_NUMBER ?= 1 ENC_IMG ?= 0 # For which core this application is built CORE ?= CM0P ifneq ($(COMPILER), GCC_ARM) $(error Only GCC ARM is supported at this moment) endif CUR_APP_PATH = $(PRJ_DIR)/$(APP_NAME) include $(PRJ_DIR)/platforms.mk include $(PRJ_DIR)/common_libs.mk include $(PRJ_DIR)/toolchains.mk # default slot size is 0x10000, 512bytes per row/sector, so 128 sectors MAX_IMG_SECTORS ?= 128 # Application-specific DEFINES DEFINES_APP := -DMBEDTLS_CONFIG_FILE="\"mcuboot_crypto_config.h\"" DEFINES_APP += -DECC256_KEY_FILE="\"keys/$(SIGN_KEY_FILE).pub\"" DEFINES_APP += -DCORE=$(CORE) DEFINES_APP += -DMCUBOOT_IMAGE_NUMBER=$(MCUBOOT_IMAGE_NUMBER) ifeq ($(USE_EXTERNAL_FLASH), 1) DEFINES_APP += -DCY_BOOT_USE_EXTERNAL_FLASH endif DEFINES_APP += -DMCUBOOT_MAX_IMG_SECTORS=$(MAX_IMG_SECTORS) # Hardrware acceleration support ifeq ($(USE_CRYPTO_HW), 1) DEFINES_APP += -DMBEDTLS_USER_CONFIG_FILE="\"mcuboot_crypto_acc_config.h\"" DEFINES_APP += -DCY_CRYPTO_HAL_DISABLE DEFINES_APP += -DCY_MBEDTLS_HW_ACCELERATION endif # Encrypted image support ifeq ($(ENC_IMG), 1) DEFINES_APP += -DENC_IMG=1 endif # Collect MCUBoot sourses SOURCES_MCUBOOT := $(wildcard $(CURDIR)/../bootutil/src/*.c) # Collect MCUBoot Application sources SOURCES_APP_SRC := $(wildcard $(CUR_APP_PATH)/*.c) # Collect Flash Layer port sources SOURCES_FLASH_PORT := $(wildcard $(CURDIR)/cy_flash_pal/*.c) SOURCES_FLASH_PORT += $(wildcard $(CURDIR)/cy_flash_pal/flash_qspi/*.c) # Collect all the sources SOURCES_APP := $(SOURCES_MCUBOOT) SOURCES_APP += $(SOURCES_APP_SRC) SOURCES_APP += $(SOURCES_FLASH_PORT) INCLUDE_DIRS_MCUBOOT := $(addprefix -I, $(CURDIR)/../bootutil/include) INCLUDE_DIRS_MCUBOOT += $(addprefix -I, $(CURDIR)/../bootutil/src) INCLUDE_DIRS_MCUBOOT += $(addprefix -I, $(CURDIR)/..) INCLUDE_DIRS_APP := $(addprefix -I, $(CURDIR)) INCLUDE_DIRS_APP += $(addprefix -I, $(CURDIR)/cy_flash_pal/flash_qspi) INCLUDE_DIRS_APP += $(addprefix -I, $(CURDIR)/cy_flash_pal/include) INCLUDE_DIRS_APP += $(addprefix -I, $(CURDIR)/cy_flash_pal/include/flash_map_backend) INCLUDE_DIRS_APP += $(addprefix -I, $(CUR_APP_PATH)) INCLUDE_DIRS_APP += $(addprefix -I, $(CUR_APP_PATH)/config) INCLUDE_DIRS_APP += $(addprefix -I, $(CUR_APP_PATH)/os) ASM_FILES_APP := ASM_FILES_APP += $(ASM_FILES_STARTUP) # Output folder OUT := $(APP_NAME)/out # Output folder to contain build artifacts OUT_TARGET := $(OUT)/$(PLATFORM) OUT_CFG := $(OUT_TARGET)/$(BUILDCFG) # Overwite path to linker script if custom is required ifeq ($(COMPILER), GCC_ARM) LINKER_SCRIPT := $(subst /cygdrive/c,c:,$(CUR_APP_PATH)/$(APP_NAME).ld) else $(error Only GCC ARM is supported at this moment) endif