mbed-os

Fork of mbed-os by erkin yucel

Revision:
0:f269e3021894
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/features/FEATURE_UVISOR/importer/Makefile	Sun Oct 23 15:10:02 2016 +0000
@@ -0,0 +1,119 @@
+###########################################################################
+#
+#  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
+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))
+
+.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 documentation...
+	cp $(UVISOR_DIR)/docs/api/QUICKSTART.md $(TARGET_PREFIX)/README.md
+	#
+	# Copying licenses
+	cp $(UVISOR_DIR)/LICENSE* $(TARGET_SUPPORTED)
+
+TARGET_M%: $(TARGET_SUPPORTED)/*/*/*_cortex_m%*.a
+	@printf "#\n# Copying $@ files...\n"
+	mkdir $(foreach file,$^,$(dir $(file))$@)
+	$(foreach file,$^,mv $(file) $(dir $(file))$@/lib$(notdir $(file));)
+
+publish: rsync 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));)
+
+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
+	#
+	# 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
+
+$(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