Initial commit
Initial commit.
This commit is contained in:
212
bootloader/mcuboot/boot/cypress/Makefile
Normal file
212
bootloader/mcuboot/boot/cypress/Makefile
Normal file
@@ -0,0 +1,212 @@
|
||||
################################################################################
|
||||
# \file Makefile
|
||||
# \version 1.0
|
||||
#
|
||||
# \brief
|
||||
# Main Makefile for building MCUBoot application for Cypress target.
|
||||
#
|
||||
################################################################################
|
||||
# \copyright
|
||||
# Copyright 2018-2021 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.
|
||||
################################################################################
|
||||
|
||||
# minimum Python 3.7 is required
|
||||
# Python path definition
|
||||
ifeq ($(OS),Windows_NT)
|
||||
PYTHON_PATH?=python
|
||||
else
|
||||
PYTHON_PATH?=python3
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
# Main settings
|
||||
################################################################################
|
||||
|
||||
# Defines whether or not show verbose build output
|
||||
MAKEINFO ?= 1
|
||||
# Application name by default
|
||||
APP_NAME ?= MCUBootApp
|
||||
# Weather or now execute post build script after build - set to 0 for CI
|
||||
POST_BUILD ?= 1
|
||||
|
||||
SIGN_KEY_FILE ?= cypress-test-ec-p256
|
||||
ENC_KEY_FILE ?= enc-ec256-pub
|
||||
ENC_IMG ?= 0
|
||||
|
||||
# set this variable to a path, where cysecuretools python package is installed
|
||||
# use command `python -m pip show cysecuretools` to find out this path
|
||||
# or rely on scripts that automates this action, bit not work for virtual envs
|
||||
CY_SEC_TOOLS_PATH ?= $(shell $(PYTHON_PATH) $(CURDIR)/scripts/find_cysectools.py)
|
||||
|
||||
BUILDCFG ?= Debug
|
||||
|
||||
# Set of supported applications
|
||||
APPS := MCUBootApp BlinkyApp
|
||||
|
||||
HEADER_OFFSET ?= 0
|
||||
|
||||
ifneq ($(filter $(APP_NAME), $(APPS)),)
|
||||
include ./$(APP_NAME)/$(APP_NAME).mk
|
||||
include ./$(APP_NAME)/libs.mk
|
||||
else
|
||||
$(error Not supported application: '$(APP_NAME)')
|
||||
endif
|
||||
|
||||
ASM_FILES := $(ASM_FILES_APP)
|
||||
ASM_FILES += $(ASM_FILES_LIBS)
|
||||
|
||||
C_FILES := $(SOURCES_APP)
|
||||
C_FILES += $(SOURCES_LIBS)
|
||||
|
||||
INCLUDE_DIRS := $(INCLUDE_DIRS_APP)
|
||||
INCLUDE_DIRS += $(INCLUDE_DIRS_MCUBOOT)
|
||||
INCLUDE_DIRS += $(INCLUDE_DIRS_LIBS)
|
||||
|
||||
#INCLUDE_FILES := $(INCLUDE_FILES_APP)
|
||||
|
||||
#INCLUDES := $(addprefix -include , $(INCLUDE_FILES))
|
||||
|
||||
O_FILES := $(notdir $(C_FILES:.c=.o)) $(addsuffix .o, $(notdir $(basename $(ASM_FILES))))
|
||||
|
||||
DEFINES := $(DEFINES_APP)
|
||||
DEFINES += $(DEFINES_LIBS)
|
||||
AS_FLAGS += $(DEFINES)
|
||||
|
||||
ifeq ($(MAKEINFO), 1)
|
||||
$(info ==============================================================================)
|
||||
$(info = Directories to look for header files: =)
|
||||
$(info ==============================================================================)
|
||||
$(info $(INCLUDE_DIRS))
|
||||
|
||||
$(info ==============================================================================)
|
||||
$(info = Collected Defines string: =)
|
||||
$(info ==============================================================================)
|
||||
$(info $(DEFINES))
|
||||
endif
|
||||
|
||||
# updating CFLAGS at this point as DEFINES are completed
|
||||
CFLAGS += $(DEFINES)
|
||||
|
||||
VPATH = $(dir $(C_FILES) $(ASM_FILES))
|
||||
|
||||
#
|
||||
# STDE: For cygwin, adjust paths for compiler
|
||||
#
|
||||
MY_FILES := $(subst /cygdrive/c,c:,$(C_FILES))
|
||||
#$(info MY_FILES $(MY_FILES))
|
||||
C_FILES=$(MY_FILES)
|
||||
|
||||
MY_DIRS := $(subst /cygdrive/c,c:,$(INCLUDE_DIRS))
|
||||
#$(info MY_DIRS $(MY_DIRS))
|
||||
INCLUDE_DIRS=$(MY_DIRS)
|
||||
|
||||
MY_ASM_FILES := $(subst /cygdrive/c,c:,$(ASM_FILES))
|
||||
#$(info MY_ASM_FILES $(MY_ASM_FILES))
|
||||
ASM_FILES=$(MY_ASM_FILES)
|
||||
|
||||
MY_LDFLAGS := $(subst /cygdrive/c,c:,$(LDFLAGS))
|
||||
#$(info MY_LDFLAGS $(MY_LDFLAGS))
|
||||
LDFLAGS=$(MY_LDFLAGS)
|
||||
|
||||
# Default name pattern for output files
|
||||
# may be modified in %Application%.mk file
|
||||
OUT_FILE_NAME ?= $(OUT_APP)/$(APP_NAME)
|
||||
|
||||
OUT_OBJ := $(OUT_CFG)/obj
|
||||
OUT_APP := $(OUT_CFG)
|
||||
|
||||
.PHONY: all app build clean pre_build post_build
|
||||
|
||||
all: clean app
|
||||
|
||||
app:
|
||||
@`mkdir -p ./$(OUT)`
|
||||
@`mkdir -p ./$(OUT_TARGET)`
|
||||
@`mkdir -p ./$(OUT_CFG)`
|
||||
@`mkdir -p ./$(OUT_OBJ)`
|
||||
$(MAKE) pre_build
|
||||
$(MAKE) build -j8
|
||||
$(MAKE) post_build
|
||||
|
||||
build: $(OUT_APP)/$(APP_NAME).hex
|
||||
$(GCC_PATH)/bin/arm-none-eabi-objdump $(OUT_APP)/$(APP_NAME).elf -S --disassemble > $(OUT_APP)/$(APP_NAME).lst
|
||||
$(GCC_PATH)/bin/arm-none-eabi-objdump -h $(OUT_APP)/$(APP_NAME).elf
|
||||
$(GCC_PATH)/bin/arm-none-eabi-size --format=SysV $(OUT_APP)/$(APP_NAME).elf
|
||||
|
||||
$(OUT_APP)/$(APP_NAME).hex: $(OUT_APP)/$(APP_NAME).elf
|
||||
$(GCC_PATH)/bin/arm-none-eabi-objcopy --change-addresses=$(HEADER_OFFSET) -O ihex $(OUT_APP)/$(APP_NAME).elf $(OUT_APP)/$(APP_NAME).hex
|
||||
|
||||
$(OUT_APP)/$(APP_NAME).elf: $(addprefix $(OUT_OBJ)/, $(O_FILES))
|
||||
@echo "LD $@"
|
||||
ifeq ($(MAKEINFO), 1)
|
||||
@echo $(LD) $(O_FILES) $(CC_DEPEND) $(@:.o=.d) -o $@ $(LDFLAGS) -T $(LINKER_SCRIPT) -Wl,-Map,$(OUT_FILE_NAME).map
|
||||
endif
|
||||
@$(LD) $(addprefix $(OUT_OBJ)/, $(O_FILES)) $(CC_DEPEND) $(@:.o=.d) -o $@ $(LDFLAGS) -T $(LINKER_SCRIPT) -Wl,-Map,$(OUT_FILE_NAME).map
|
||||
|
||||
|
||||
$(OUT_OBJ)/%.o: %.c
|
||||
@echo "CC $<"
|
||||
ifeq ($(MAKEINFO), 1)
|
||||
@echo $(CC) $(CFLAGS) $(INCLUDE_DIRS) $(CC_DEPEND) $(@:.o=.d) -c $< -o $@
|
||||
endif
|
||||
@$(CC) $(CFLAGS) $(INCLUDE_DIRS) $(CC_DEPEND) $(@:.o=.d) -c $< -o $@
|
||||
ifeq ($(MAKEINFO), 1)
|
||||
@echo
|
||||
endif
|
||||
|
||||
$(OUT_OBJ)/%.o: %.S
|
||||
@echo "AS $<"
|
||||
ifeq ($(COMPILER), GCC_ARM)
|
||||
ifeq ($(MAKEINFO), 1)
|
||||
@echo @$(CC) $(CFLAGS) $(INCLUDE_DIRS) $(CC_DEPEND) $(@:.o=.d) -c $< -o $@
|
||||
endif
|
||||
@$(CC) $(CFLAGS) $(INCLUDE_DIRS) $(CC_DEPEND) $(@:.o=.d) -c $< -o $@
|
||||
else
|
||||
@echo $(AS) $< -o $@ $(AS_FLAGS)
|
||||
@$(AS) $< -o $@ $(AS_FLAGS)
|
||||
endif
|
||||
ifeq ($(MAKEINFO), 1)
|
||||
@echo
|
||||
endif
|
||||
|
||||
clean:
|
||||
@echo "Cleanup out directory..."
|
||||
rm -rf $(OUT_TARGET)/$(BUILDCFG)
|
||||
|
||||
clean_boot:
|
||||
@echo "Cleanup out BOOT directory of $(APP_NAME)..."
|
||||
rm -rf $(OUT_TARGET)/$(BUILDCFG)/boot
|
||||
|
||||
clean_upgrade:
|
||||
@echo "Cleanup out UPGRADE directory of $(APP_NAME)..."
|
||||
rm -rf $(OUT_TARGET)/$(BUILDCFG)/upgrade
|
||||
|
||||
run_cppcheck:
|
||||
@echo "Performing static code analysis with Cppcheck tool..."
|
||||
cppcheck/cppcheck.sh $(APP_NAME) $(PLATFORM) "$(DEFINES)" "$(INCLUDE_DIRS)" "$(C_FILES)" $(CPP_CHECK_SCOPE) $(BUILDCFG)
|
||||
|
||||
gen_key_ecc256:
|
||||
@echo Generate ECC256 keys: $(SIGN_KEY_FILE).pem and $(SIGN_KEY_FILE).pub
|
||||
../../scripts/imgtool.py keygen -k keys/$(SIGN_KEY_FILE).pem -t ecdsa-p256
|
||||
../../scripts/imgtool.py getpub -k keys/$(SIGN_KEY_FILE).pem > keys/$(SIGN_KEY_FILE).pub
|
||||
|
||||
ifeq ($(MAKEINFO) , 1)
|
||||
$(info ASM_FILES: $(ASM_FILES))
|
||||
$(info C_FILES: $(C_FILES))
|
||||
$(info INCLUDE_DIRS: $(INCLUDE_DIRS))
|
||||
$(info DEFINES: $(DEFINES))
|
||||
$(info CC: $(CC))
|
||||
endif
|
||||
Reference in New Issue
Block a user