mirror of https://github.com/ARMmbed/mbed-os.git
131 lines
4.8 KiB
Makefile
131 lines
4.8 KiB
Makefile
###########################################################################
|
|
#
|
|
# Copyright (c) 2013-2016, ARM Limited, All Rights Reserved
|
|
# 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.
|
|
#
|
|
###########################################################################
|
|
|
|
# Toolchain
|
|
PREFIX:=arm-none-eabi-
|
|
GDB:=$(PREFIX)gdb
|
|
OBJDUMP:=$(PREFIX)objdump
|
|
|
|
# Translate between uVisor namespace and mbed namespace
|
|
TARGET_TRANSLATION:=MCU_K64F.kinetis EFM32.efm32 STM32F4.stm32 ARM_BEETLE_SOC.beetle M480.m480
|
|
TARGET_PREFIX:=../
|
|
TARGET_SUPPORTED:=$(TARGET_PREFIX)targets/TARGET_UVISOR_SUPPORTED
|
|
TARGET_UNSUPPORTED:=$(TARGET_PREFIX)targets/TARGET_UVISOR_UNSUPPORTED
|
|
TARGET_INC:=$(TARGET_PREFIX)includes/uvisor/api
|
|
TARGET_LIB_SRC:=$(TARGET_PREFIX)source
|
|
TARGET_LIB_INC:=$(TARGET_PREFIX)includes/uvisor-lib
|
|
|
|
# uVisor source directory - hidden from mbed via TARGET_IGNORE
|
|
UVISOR_GIT_URL:=https://github.com/ARMmbed/uvisor
|
|
UVISOR_GIT_BRANCH:=master
|
|
UVISOR_DIR:=TARGET_IGNORE/uvisor
|
|
UVISOR_API:=$(UVISOR_DIR)/api
|
|
UVISOR_GIT_CFG=$(UVISOR_DIR)/.git/config
|
|
|
|
# Derive variables from user configuration
|
|
TARGET_LIST:=$(subst .,,$(suffix $(TARGET_TRANSLATION)))
|
|
TARGET_LIST_DIR_SRC:=$(addprefix $(UVISOR_API)/lib/,$(TARGET_LIST))
|
|
TARGET_LIST_DIR_DST:=$(addprefix $(TARGET_SUPPORTED)/,$(TARGET_LIST))
|
|
TARGET_LIST_RELEASE:=$(addsuffix /release,$(TARGET_LIST_DIR_DST))
|
|
TARGET_LIST_DEBUG:=$(addsuffix /debug,$(TARGET_LIST_DIR_DST))
|
|
|
|
# mbed OS paths
|
|
MBED_OS_ROOT:=../../..
|
|
MBED_OS_CMSIS:=$(MBED_OS_ROOT)/cmsis
|
|
|
|
.PHONY: all deploy rsync publish uvisor uvisor-compile clean cache update
|
|
|
|
all: uvisor
|
|
|
|
uvisor: uvisor-compile publish
|
|
|
|
rsync:
|
|
#
|
|
# Copying uVisor into mbed library...
|
|
rm -rf $(TARGET_SUPPORTED)
|
|
mkdir -p $(TARGET_SUPPORTED)
|
|
rsync -a --exclude='*.txt' $(TARGET_LIST_DIR_SRC) $(TARGET_SUPPORTED)
|
|
#
|
|
# Copying uVisor headers to mbed includes...
|
|
rm -rf $(TARGET_INC)
|
|
mkdir -p $(TARGET_INC)
|
|
rsync -a --delete $(UVISOR_API)/inc $(TARGET_INC)
|
|
rsync -a --delete $(UVISOR_API)/rtx/inc/ $(TARGET_LIB_INC)/rtx
|
|
#
|
|
# Copying uVisor unsupported sources to unsupported target source...
|
|
mkdir -p $(TARGET_UNSUPPORTED)
|
|
cp $(UVISOR_API)/src/unsupported.c $(TARGET_UNSUPPORTED)/
|
|
#
|
|
# Copying uVisor shared sources to mbed source...
|
|
rm -rf $(TARGET_LIB_SRC)
|
|
mkdir -p $(TARGET_LIB_SRC)
|
|
cp $(UVISOR_DIR)/core/system/src/page_allocator.c $(TARGET_LIB_SRC)/page_allocator.c_inc
|
|
cp $(UVISOR_DIR)/core/system/inc/page_allocator_config.h $(TARGET_LIB_SRC)/page_allocator_config.h
|
|
rsync -a --delete $(UVISOR_API)/rtx/src/ $(TARGET_LIB_SRC)/rtx
|
|
#
|
|
# Copying the secure API header file...
|
|
# Note: This will not be needed when we upstream the file to CMSIS.
|
|
cp $(UVISOR_DIR)/core/cmsis/inc/core_cmSecureAccess.h $(MBED_OS_CMSIS)/
|
|
#
|
|
# Copying the documentation...
|
|
cp $(UVISOR_DIR)/docs/*/QUICKSTART.md $(TARGET_PREFIX)/README.md
|
|
#
|
|
# Copying licenses
|
|
cp $(UVISOR_DIR)/LICENSE* $(TARGET_SUPPORTED)
|
|
|
|
TARGET_M%: TARGET_LIBS_FIND=$(wildcard $(TARGET_SUPPORTED)/*/*/*_cortex_m$(subst TARGET_M,,$@)*.a)
|
|
TARGET_M%: rsync
|
|
@printf "#\n# Copying $@ files...\n"
|
|
mkdir $(foreach file,$(TARGET_LIBS_FIND),$(dir $(file))$@)
|
|
$(foreach file,$(TARGET_LIBS_FIND),mv $(file) $(dir $(file))$@/lib$(notdir $(file));)
|
|
|
|
publish: TARGET_M3 TARGET_M4
|
|
#
|
|
# Rename release directorires to TARGET_RELEASE filters...
|
|
$(foreach dir, $(TARGET_LIST_RELEASE),mv $(dir) $(dir $(dir))TARGET_RELEASE;)
|
|
#
|
|
# Rename debug directorires to TARGET_DEBUG filters...
|
|
$(foreach dir, $(TARGET_LIST_DEBUG),mv $(dir) $(dir $(dir))TARGET_DEBUG;)
|
|
#
|
|
# Rename target directorires to TARGET_* filters...
|
|
$(foreach target, $(TARGET_TRANSLATION),mv $(TARGET_SUPPORTED)/$(subst .,,$(suffix $(target))) $(TARGET_SUPPORTED)/TARGET_$(basename $(target));)
|
|
#
|
|
# Updating checked out version tag
|
|
git -C $(UVISOR_DIR) describe --tags --abbrev=40 --dirty > $(TARGET_PREFIX)VERSION.txt
|
|
#
|
|
# Updated list of authors, sorted by contributions
|
|
git -C $(UVISOR_DIR) shortlog -s -n > $(TARGET_PREFIX)AUTHORS.txt
|
|
# Updated version of uvisor-tests
|
|
cp $(UVISOR_DIR)/tools/uvisor-tests.txt $(TARGET_PREFIX)uvisor-tests.txt
|
|
|
|
uvisor-compile: $(UVISOR_GIT_CFG)
|
|
make -C $(UVISOR_DIR)
|
|
|
|
update: $(UVISOR_GIT_CFG)
|
|
#
|
|
# Updating to latest uVisor library version
|
|
git -C $(UVISOR_DIR) pull --rebase
|
|
|
|
$(UVISOR_GIT_CFG):
|
|
rm -rf $(UVISOR_DIR)
|
|
git clone -b $(UVISOR_GIT_BRANCH) $(UVISOR_GIT_URL) $(UVISOR_DIR)
|
|
|
|
clean: $(UVISOR_GIT_CFG)
|
|
make -C $(UVISOR_DIR) clean
|