Use mix compilation mode on all platforms
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Signed-off-by: Pascal Brand <pascal.brand@st.com>
diff --git a/common.mk b/common.mk
index 76f492c..7d146ae 100644
--- a/common.mk
+++ b/common.mk
@@ -5,15 +5,6 @@
BASH ?= bash
ROOT ?= $(shell pwd)/..
-#
-# Must declare in platform specific makefiles:
-# - CROSS_COMPILE_NS_USER / CROSS_COMPILE_NS_KERNEL
-# - CROSS_COMPILE_S_USER / CROSS_COMPILE_S_KERNEL
-#
-# - OPTEE_OS_BIN
-# - OPTEE_OS_TA_DEV_KIT_DIR
-#
-
LINUX_PATH ?= $(ROOT)/linux
GEN_ROOTFS_PATH ?= $(ROOT)/gen_rootfs
GEN_ROOTFS_FILELIST ?= $(GEN_ROOTFS_PATH)/filelist-tee.txt
@@ -85,35 +76,19 @@
################################################################################
# set the compiler when COMPILE_xxx are defined
################################################################################
-
-ifeq ($(COMPILE_NS_USER),32)
-CROSS_COMPILE_NS_USER ?= "$(CCACHE)$(AARCH32_CROSS_COMPILE)"
-endif
-ifeq ($(COMPILE_NS_USER),64)
-CROSS_COMPILE_NS_USER ?= "$(CCACHE)$(AARCH64_CROSS_COMPILE)"
-endif
-
-ifeq ($(COMPILE_NS_KERNEL),32)
-CROSS_COMPILE_NS_KERNEL ?= "$(CCACHE)$(AARCH32_CROSS_COMPILE)"
-endif
-ifeq ($(COMPILE_NS_KERNEL),64)
-CROSS_COMPILE_NS_KERNEL ?= "$(CCACHE)$(AARCH64_CROSS_COMPILE)"
-endif
+CROSS_COMPILE_NS_USER ?= "$(CCACHE)$(AARCH$(COMPILE_NS_USER)_CROSS_COMPILE)"
+CROSS_COMPILE_NS_KERNEL ?= "$(CCACHE)$(AARCH$(COMPILE_NS_KERNEL)_CROSS_COMPILE)"
+CROSS_COMPILE_S_USER ?= "$(CCACHE)$(AARCH$(COMPILE_S_USER)_CROSS_COMPILE)"
+CROSS_COMPILE_S_KERNEL ?= "$(CCACHE)$(AARCH$(COMPILE_S_KERNEL)_CROSS_COMPILE)"
ifeq ($(COMPILE_S_USER),32)
-CROSS_COMPILE_S_USER ?= "$(CCACHE)$(AARCH32_CROSS_COMPILE)"
OPTEE_OS_TA_DEV_KIT_DIR ?= $(OPTEE_OS_PATH)/out/arm/export-ta_arm32
endif
ifeq ($(COMPILE_S_USER),64)
-CROSS_COMPILE_S_USER ?= "$(CCACHE)$(AARCH64_CROSS_COMPILE)"
OPTEE_OS_TA_DEV_KIT_DIR ?= $(OPTEE_OS_PATH)/out/arm/export-ta_arm64
endif
-ifeq ($(COMPILE_S_KERNEL),32)
-CROSS_COMPILE_S_KERNEL ?= "$(CCACHE)$(AARCH32_CROSS_COMPILE)"
-endif
ifeq ($(COMPILE_S_KERNEL),64)
-CROSS_COMPILE_S_KERNEL ?= "$(CCACHE)$(AARCH64_CROSS_COMPILE)"
OPTEE_OS_COMMON_EXTRA_FLAGS += CFG_ARM64_core=y
endif
@@ -136,11 +111,10 @@
################################################################################
BUSYBOX_COMMON_TARGET ?= TOBEDEFINED
BUSYBOX_CLEAN_COMMON_TARGET ?= TOBEDEFINED
-BUSYBOX_COMMON_CCDIR ?= TOBEDEFINED
busybox-common: linux
cd $(GEN_ROOTFS_PATH) && \
- CC_DIR=$(BUSYBOX_COMMON_CCDIR) \
+ CROSS_COMPILE=$(CROSS_COMPILE_NS_USER) \
PATH=${PATH}:$(LINUX_PATH)/usr \
$(GEN_ROOTFS_PATH)/generate-cpio-rootfs.sh \
$(BUSYBOX_COMMON_TARGET)
diff --git a/fvp.mk b/fvp.mk
index 08bece4..86ce0a0 100644
--- a/fvp.mk
+++ b/fvp.mk
@@ -5,9 +5,8 @@
# Application), NS_KERNEL (Non Secure Kernel), S_KERNEL (Secure Kernel) and
# S_USER (Secure User - TA) are compiled
################################################################################
-
-COMPILE_NS_USER := 64
-COMPILE_NS_KERNEL := 64
+COMPILE_NS_USER ?= 64
+override COMPILE_NS_KERNEL := 64
COMPILE_S_USER ?= 64
COMPILE_S_KERNEL ?= 64
@@ -59,9 +58,8 @@
################################################################################
# Busybox
################################################################################
-BUSYBOX_COMMON_TARGET = fvp-aarch64
-BUSYBOX_CLEAN_COMMON_TARGET = fvp-aarch64 clean
-BUSYBOX_COMMON_CCDIR = $(AARCH64_PATH)
+BUSYBOX_COMMON_TARGET = fvp
+BUSYBOX_CLEAN_COMMON_TARGET = fvp clean
busybox: busybox-common
@@ -147,6 +145,13 @@
################################################################################
# Root FS
################################################################################
+ifeq ($(COMPILE_NS_USER),32)
+ROOTFS_LIBPATH ?= "/lib/arm-linux-gnueabihf"
+endif
+ifeq ($(COMPILE_NS_USER),64)
+ROOTFS_LIBPATH ?= "/lib/aarch64-linux-gnu"
+endif
+
.PHONY: filelist-tee
filelist-tee:
@echo "# xtest / optee_test" > $(GEN_ROOTFS_FILELIST)
@@ -165,10 +170,10 @@
@echo "file /lib/modules/$(call KERNEL_VERSION)/optee_armtz.ko $(OPTEE_LINUXDRIVER_PATH)/armtz/optee_armtz.ko 755 0 0" >> $(GEN_ROOTFS_FILELIST)
@echo "# OP-TEE Client" >> $(GEN_ROOTFS_FILELIST)
@echo "file /bin/tee-supplicant $(OPTEE_CLIENT_EXPORT)/bin/tee-supplicant 755 0 0" >> $(GEN_ROOTFS_FILELIST)
- @echo "dir /lib/aarch64-linux-gnu 755 0 0" >> $(GEN_ROOTFS_FILELIST)
- @echo "file /lib/aarch64-linux-gnu/libteec.so.1.0 $(OPTEE_CLIENT_EXPORT)/lib/libteec.so.1.0 755 0 0" >> $(GEN_ROOTFS_FILELIST)
- @echo "slink /lib/aarch64-linux-gnu/libteec.so.1 libteec.so.1.0 755 0 0" >> $(GEN_ROOTFS_FILELIST)
- @echo "slink /lib/aarch64-linux-gnu/libteec.so libteec.so.1 755 0 0" >> $(GEN_ROOTFS_FILELIST)
+ @echo "dir $(ROOTFS_LIBPATH) 755 0 0" >> $(GEN_ROOTFS_FILELIST)
+ @echo "file $(ROOTFS_LIBPATH)/libteec.so.1.0 $(OPTEE_CLIENT_EXPORT)/lib/libteec.so.1.0 755 0 0" >> $(GEN_ROOTFS_FILELIST)
+ @echo "slink $(ROOTFS_LIBPATH)/libteec.so.1 libteec.so.1.0 755 0 0" >> $(GEN_ROOTFS_FILELIST)
+ @echo "slink $(ROOTFS_LIBPATH)/libteec.so libteec.so.1 755 0 0" >> $(GEN_ROOTFS_FILELIST)
update_rootfs: busybox optee-client optee-linuxdriver xtest filelist-tee
cat $(GEN_ROOTFS_PATH)/filelist-final.txt $(GEN_ROOTFS_PATH)/filelist-tee.txt > $(GEN_ROOTFS_PATH)/filelist.tmp
diff --git a/hikey.mk b/hikey.mk
index 39f9e53..35f46d1 100644
--- a/hikey.mk
+++ b/hikey.mk
@@ -1,14 +1,12 @@
################################################################################
-# User-defined variables
-# Edit so these match your target
-# NOTE: If making changes after a build, please clean before rebuilding!
+# Following variables defines how the NS_USER (Non Secure User - Client
+# Application), NS_KERNEL (Non Secure Kernel), S_KERNEL (Secure Kernel) and
+# S_USER (Secure User - TA) are compiled
################################################################################
-# Non-secure user mode (root fs binaries): 32 or 64-bit [default 64]
-NSU ?= 64
-# Secure kernel (OP-TEE OS): 32 or 64-bit [default 64]
-SK ?= 64
-# Secure user mode (Trusted Apps): 32 or 64-bit [default 32, requires SK=64 for 64]
-SU ?= 32
+COMPILE_NS_USER ?= 64
+override COMPILE_NS_KERNEL := 64
+COMPILE_S_USER ?= 32
+COMPILE_S_KERNEL ?= 64
# Normal/secure world console UARTs: 3 or 0 [default 3]
CFG_NW_CONSOLE_UART ?= 3
@@ -22,32 +20,11 @@
################################################################################
# Mandatory definition to use common.mk
################################################################################
-ifeq ($(SK),32)
-ifeq ($(SU),64)
-$(error 64-bit secure user mode requires 64-bit secure kernel, i.e. SK=64)
-endif
-endif
-
-ifeq ($(NSU),64)
-CROSS_COMPILE_NS_USER ?= "$(CCACHE)$(AARCH64_CROSS_COMPILE)"
+ifeq ($(COMPILE_NS_USER),64)
MULTIARCH := aarch64-linux-gnu
else
-CROSS_COMPILE_NS_USER ?= "$(CCACHE)$(AARCH32_CROSS_COMPILE)"
MULTIARCH := arm-linux-gnueabihf
endif
-CROSS_COMPILE_NS_KERNEL ?= "$(CCACHE)$(AARCH64_CROSS_COMPILE)"
-ifeq ($(SU),64)
-CROSS_COMPILE_S_USER ?= "$(CCACHE)$(AARCH64_CROSS_COMPILE)"
-else
-CROSS_COMPILE_S_USER ?= "$(CCACHE)$(AARCH32_CROSS_COMPILE)"
-endif
-ifeq ($(SK),64)
-CROSS_COMPILE_S_KERNEL ?= "$(CCACHE)$(AARCH64_CROSS_COMPILE)"
-else
-CROSS_COMPILE_S_KERNEL ?= "$(CCACHE)$(AARCH32_CROSS_COMPILE)"
-endif
-OPTEE_OS_BIN ?= $(OPTEE_OS_PATH)/out/arm-plat-hikey/core/tee.bin
-OPTEE_OS_TA_DEV_KIT_DIR ?= $(OPTEE_OS_PATH)/out/arm-plat-hikey/export-ta_arm$(SU)
################################################################################
# Paths to git projects and various binaries
@@ -130,11 +107,6 @@
################################################################################
BUSYBOX_COMMON_TARGET = hikey nocpio
BUSYBOX_CLEAN_COMMON_TARGET = hikey clean
-ifeq ($(NSU),64)
-BUSYBOX_COMMON_CCDIR = $(AARCH64_PATH)
-else
-BUSYBOX_COMMON_CCDIR = $(AARCH32_PATH)
-endif
busybox: busybox-common
@@ -217,11 +189,6 @@
OPTEE_OS_COMMON_FLAGS += PLATFORM=hikey CFG_TEE_TA_LOG_LEVEL=3 CFG_CONSOLE_UART=$(CFG_SW_CONSOLE_UART)
OPTEE_OS_CLEAN_COMMON_FLAGS += PLATFORM=hikey
-ifeq ($(SK),64)
-OPTEE_OS_COMMON_FLAGS += CFG_ARM64_core=y
-OPTEE_OS_CLEAN_COMMON_FLAGS += CFG_ARM64_core=y
-endif
-
optee-os: optee-os-common
.PHONY: optee-os-clean
@@ -242,10 +209,6 @@
################################################################################
# xtest / optee_test
################################################################################
-ifeq ($(NSU),32)
-XTEST_COMMON_FLAGS += CFG_ARM32=y
-XTEST_CLEAN_COMMON_FLAGS += CFG_ARM32=y
-endif
xtest: xtest-common
@@ -289,8 +252,8 @@
cd $(STRACE_PATH); \
./bootstrap; \
set -e; \
- ./configure --host=$(MULTIARCH) CC="$(CCACHE)$(AARCH64_CROSS_COMPILE)gcc" LD=$(AARCH64_CROSS_COMPILE)ld; \
- CC="$(CCACHE)$(AARCH64_CROSS_COMPILE)gcc" LD=$(AARCH64_CROSS_COMPILE)ld $(MAKE) -C $(STRACE_PATH)
+ ./configure --host=$(MULTIARCH) CC="$(CCACHE)$(AARCH$(COMPILE_NS_USER)_CROSS_COMPILE)gcc" LD=$(AARCH$(COMPILE_NS_USER)_CROSS_COMPILE)ld; \
+ CC="$(CCACHE)$(AARCH$(COMPILE_NS_USER)_CROSS_COMPILE)gcc" LD=$(AARCH$(COMPILE_NS_USER)_CROSS_COMPILE)ld $(MAKE) -C $(STRACE_PATH)
.PHONY: strace-clean
strace-clean:
diff --git a/juno.mk b/juno.mk
index 8a4ce27..d2ddfd4 100644
--- a/juno.mk
+++ b/juno.mk
@@ -1,18 +1,18 @@
+################################################################################
+# Following variables defines how the NS_USER (Non Secure User - Client
+# Application), NS_KERNEL (Non Secure Kernel), S_KERNEL (Secure Kernel) and
+# S_USER (Secure User - TA) are compiled
+################################################################################
+override COMPILE_NS_USER := 64
+override COMPILE_NS_KERNEL := 64
+override COMPILE_S_USER := 64
+override COMPILE_S_KERNEL := 64
+
DEBUG ?= 0
-include common.mk
################################################################################
-# Mandatory definition to use common.mk
-################################################################################
-CROSS_COMPILE_NS_USER ?= "$(CCACHE)$(AARCH64_CROSS_COMPILE)"
-CROSS_COMPILE_NS_KERNEL ?= "$(CCACHE)$(AARCH64_CROSS_COMPILE)"
-CROSS_COMPILE_S_USER ?= "$(CCACHE)$(AARCH64_CROSS_COMPILE)"
-CROSS_COMPILE_S_KERNEL ?= "$(CCACHE)$(AARCH64_CROSS_COMPILE)"
-OPTEE_OS_BIN ?= $(OPTEE_OS_PATH)/out/arm-plat-vexpress/core/tee.bin
-OPTEE_OS_TA_DEV_KIT_DIR ?= $(OPTEE_OS_PATH)/out/arm-plat-vexpress/export-ta_arm64
-
-################################################################################
# Paths to git projects and various binaries
################################################################################
ARM_TF_PATH ?= $(ROOT)/arm-trusted-firmware
@@ -55,9 +55,8 @@
################################################################################
# Busybox
################################################################################
-BUSYBOX_COMMON_TARGET = fvp-aarch64
-BUSYBOX_CLEAN_COMMON_TARGET = fvp-aarch64 clean
-BUSYBOX_COMMON_CCDIR = $(AARCH64_PATH)
+BUSYBOX_COMMON_TARGET = fvp
+BUSYBOX_CLEAN_COMMON_TARGET = fvp clean
busybox: busybox-common
@@ -111,7 +110,7 @@
################################################################################
# OP-TEE
################################################################################
-OPTEE_OS_COMMON_FLAGS += PLATFORM=vexpress-juno CFG_ARM64_core=y
+OPTEE_OS_COMMON_FLAGS += PLATFORM=vexpress-juno
optee-os: optee-os-common
OPTEE_OS_CLEAN_COMMON_FLAGS += PLATFORM=vexpress-juno
diff --git a/mediatek.mk b/mediatek.mk
index 4e91935..26d3610 100644
--- a/mediatek.mk
+++ b/mediatek.mk
@@ -1,14 +1,14 @@
--include common.mk
+################################################################################
+# Following variables defines how the NS_USER (Non Secure User - Client
+# Application), NS_KERNEL (Non Secure Kernel), S_KERNEL (Secure Kernel) and
+# S_USER (Secure User - TA) are compiled
+################################################################################
+override COMPILE_NS_USER := 64
+override COMPILE_NS_KERNEL := 64
+override COMPILE_S_USER := 32
+override COMPILE_S_KERNEL := 64
-################################################################################
-# Mandatory definition to use common.mk
-################################################################################
-CROSS_COMPILE_NS_USER ?= "$(CCACHE)$(AARCH64_CROSS_COMPILE)"
-CROSS_COMPILE_NS_KERNEL ?= "$(CCACHE)$(AARCH64_CROSS_COMPILE)"
-CROSS_COMPILE_S_USER ?= "$(CCACHE)$(AARCH32_CROSS_COMPILE)"
-CROSS_COMPILE_S_KERNEL ?= "$(CCACHE)$(AARCH64_CROSS_COMPILE)"
-OPTEE_OS_BIN ?= $(OPTEE_OS_PATH)/out/arm-plat-mediatek/core/tee-pager.bin
-OPTEE_OS_TA_DEV_KIT_DIR ?= $(OPTEE_OS_PATH)/out/arm-plat-mediatek/export-ta_arm32
+-include common.mk
################################################################################
# Paths to git projects and various binaries
@@ -30,7 +30,6 @@
################################################################################
BUSYBOX_COMMON_TARGET = mt8173-evb
BUSYBOX_CLEAN_COMMON_TARGET = mt8173-evb clean
-BUSYBOX_COMMON_CCDIR = $(AARCH64_PATH)
busybox: busybox-common
@@ -65,10 +64,10 @@
################################################################################
# OP-TEE
################################################################################
-OPTEE_OS_COMMON_FLAGS += PLATFORM=mediatek-mt8173 CFG_ARM64_core=y
+OPTEE_OS_COMMON_FLAGS += PLATFORM=mediatek-mt8173
optee-os: optee-os-common
-OPTEE_OS_CLEAN_COMMON_FLAGS += PLATFORM=mediatek-mt8173 CFG_ARM64_core=y
+OPTEE_OS_CLEAN_COMMON_FLAGS += PLATFORM=mediatek-mt8173
optee-os-clean: optee-os-clean-common
optee-client: optee-client-common
diff --git a/qemu.mk b/qemu.mk
index f20194d..445662f 100644
--- a/qemu.mk
+++ b/qemu.mk
@@ -1,21 +1,14 @@
--include common.mk
+################################################################################
+# Following variables defines how the NS_USER (Non Secure User - Client
+# Application), NS_KERNEL (Non Secure Kernel), S_KERNEL (Secure Kernel) and
+# S_USER (Secure User - TA) are compiled
+################################################################################
+override COMPILE_NS_USER := 32
+override COMPILE_NS_KERNEL := 32
+override COMPILE_S_USER := 32
+override COMPILE_S_KERNEL := 32
-################################################################################
-# Mandatory definition to use common.mk
-################################################################################
-ifneq ($(CROSS_COMPILE),)
-CROSS_COMPILE_NS_USER ?= "$(CROSS_COMPILE)"
-CROSS_COMPILE_NS_KERNEL ?= "$(CROSS_COMPILE)"
-CROSS_COMPILE_S_USER ?= "$(CROSS_COMPILE)"
-CROSS_COMPILE_S_KERNEL ?= "$(CROSS_COMPILE)"
-else
-CROSS_COMPILE_NS_USER ?= "$(CCACHE)$(AARCH32_CROSS_COMPILE)"
-CROSS_COMPILE_NS_KERNEL ?= "$(CCACHE)$(AARCH32_CROSS_COMPILE)"
-CROSS_COMPILE_S_USER ?= "$(CCACHE)$(AARCH32_CROSS_COMPILE)"
-CROSS_COMPILE_S_KERNEL ?= "$(CCACHE)$(AARCH32_CROSS_COMPILE)"
-endif
-OPTEE_OS_BIN ?= $(OPTEE_OS_PATH)/out/arm-plat-vexpress/core/tee.bin
-OPTEE_OS_TA_DEV_KIT_DIR ?= $(OPTEE_OS_PATH)/out/arm-plat-vexpress/export-ta_arm32
+-include common.mk
################################################################################
# Paths to git projects and various binaries
@@ -68,7 +61,6 @@
################################################################################
BUSYBOX_COMMON_TARGET = vexpress
BUSYBOX_CLEAN_COMMON_TARGET = vexpress clean
-BUSYBOX_COMMON_CCDIR = $(AARCH32_PATH)
busybox: busybox-common
@@ -131,13 +123,10 @@
################################################################################
# xtest / optee_test
################################################################################
-XTEST_COMMON_FLAGS += CFG_ARM32=y
xtest: xtest-common
-XTEST_CLEAN_COMMON_FLAGS += CFG_ARM32=y
xtest-clean: xtest-clean-common
-XTEST_PATCH_COMMON_FLAGS += CFG_ARM32=y
xtest-patch: xtest-patch-common
################################################################################