common build: optee components

Signed-off-by: Pascal Brand <pascal.brand@st.com>
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
diff --git a/common.mk b/common.mk
index f3da672..24a03a5 100644
--- a/common.mk
+++ b/common.mk
@@ -2,7 +2,7 @@
 # Common definition to all platforms
 #
 
-BASH := $(shell which bash)
+BASH ?= bash
 ROOT ?= $(shell pwd)/..
 
 #
@@ -25,6 +25,45 @@
 CCACHE ?= $(shell which ccache) # Don't remove this comment (space is needed)
 
 ################################################################################
+# defines, macros, configuration etc
+################################################################################
+define KERNEL_VERSION
+$(shell cd $(LINUX_PATH) && make --no-print-directory kernelversion)
+endef
+DEBUG ?= 0
+
+################################################################################
+# OP-TEE
+################################################################################
+optee-os-common:
+	make -C $(OPTEE_OS_PATH) \
+		CROSS_COMPILE=$(CROSS_COMPILE_S_USER) \
+		CROSS_COMPILE_core=$(CROSS_COMPILE_S_KERNEL) \
+		CFG_TEE_CORE_LOG_LEVEL=3 \
+		DEBUG=$(DEBUG) \
+
+optee-os-clean-common:
+	make -C $(OPTEE_OS_PATH) \
+		clean
+
+optee-client-common:
+	make -C $(OPTEE_CLIENT_PATH) \
+		CROSS_COMPILE=$(CROSS_COMPILE_NS_USER)
+
+optee-client-clean-common:
+	make -C $(OPTEE_CLIENT_PATH) clean
+
+optee-linuxdriver-common: linux
+	make -C $(LINUX_PATH) \
+		CROSS_COMPILE=$(CROSS_COMPILE_NS_KERNEL) \
+		LOCALVERSION= \
+		M=$(OPTEE_LINUXDRIVER_PATH) modules
+
+optee-linuxdriver-clean-common:
+	make -C $(LINUX_PATH) \
+		M=$(OPTEE_LINUXDRIVER_PATH) clean
+
+################################################################################
 # xtest / optee_test
 ################################################################################
 xtest-common: optee-os optee-client
diff --git a/fvp.mk b/fvp.mk
index db1f273..9a102cf 100644
--- a/fvp.mk
+++ b/fvp.mk
@@ -1,3 +1,5 @@
+DEBUG ?= 1
+
 -include common.mk
 
 ################################################################################
@@ -24,13 +26,6 @@
 FOUNDATION_PATH		?= $(ROOT)/Foundation_Platformpkg
 
 ################################################################################
-# defines, macros, configuration etc
-################################################################################
-define KERNEL_VERSION
-$(shell cd $(LINUX_PATH) && make kernelversion)
-endef
-
-################################################################################
 # Targets
 ################################################################################
 all: arm-tf edk2 linux optee-os optee-client optee-linuxdriver generate-dtb xtest
@@ -123,39 +118,23 @@
 # OP-TEE
 ################################################################################
 optee-os:
-	make -C $(OPTEE_OS_PATH) \
-		CROSS_COMPILE="$(CCACHE)$(AARCH32_CROSS_COMPILE)" \
+	$(MAKE) \
 		PLATFORM=vexpress \
 		PLATFORM_FLAVOR=fvp \
 		CFG_TEE_CORE_LOG_LEVEL=3 \
-		DEBUG=1 \
-		-j`getconf _NPROCESSORS_ONLN`
+			optee-os-common
 
 optee-os-clean:
-	make -C $(OPTEE_OS_PATH) \
+	$(MAKE) \
 		PLATFORM=vexpress \
 		PLATFORM_FLAVOR=fvp \
-		clean
+			optee-os-clean-common
 
-optee-client:
-	make -C $(OPTEE_CLIENT_PATH) \
-		CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)" \
-		-j`getconf _NPROCESSORS_ONLN`
-
-optee-client-clean:
-	make -C $(OPTEE_CLIENT_PATH) clean
-
-optee-linuxdriver: linux
-	make -C $(LINUX_PATH) \
-		V=0 \
-		ARCH=arm64 \
-		CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)" \
-		LOCALVERSION= \
-		M=$(OPTEE_LINUXDRIVER_PATH) modules
-
-optee-linuxdriver-clean:
-	make -C $(LINUX_PATH) \
-		M=$(OPTEE_LINUXDRIVER_PATH) clean
+optee-client: optee-client-common
+optee-client-clean: optee-client-clean-common
+optee-linuxdriver:
+	$(MAKE) ARCH=arm64 optee-linuxdriver-common
+optee-linuxdriver-clean: optee-linuxdriver-clean-common
 
 generate-dtb:
 	$(LINUX_PATH)/scripts/dtc/dtc \
diff --git a/hikey.mk b/hikey.mk
index 05bd692..8640609 100644
--- a/hikey.mk
+++ b/hikey.mk
@@ -10,8 +10,6 @@
 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-user_ta
 
-DEBUG = 0
-
 ################################################################################
 # Paths to git projects and various binaries
 ################################################################################
@@ -47,13 +45,6 @@
 LLOADER_PATH			?=$(ROOT)/l-loader
 
 ################################################################################
-# defines, macros, configuration etc
-################################################################################
-define KERNEL_VERSION
-$(shell cd $(LINUX_PATH) && make kernelversion)
-endef
-
-################################################################################
 # Targets
 ################################################################################
 all: mcuimage arm-tf edk2 linux optee-os optee-client optee-linuxdriver xtest strace update_rootfs boot-img lloader
@@ -231,40 +222,23 @@
 # OP-TEE
 ################################################################################
 optee-os:
-	make -C $(OPTEE_OS_PATH) \
-		CROSS_COMPILE="$(CCACHE)$(AARCH32_CROSS_COMPILE)" \
-		CROSS_COMPILE_core="$(CCACHE)$(AARCH64_CROSS_COMPILE)" \
+	$(MAKE) \
 		CFG_ARM64_core=y \
 		PLATFORM=hikey \
 		CFG_TEE_CORE_LOG_LEVEL=3 \
-		DEBUG=$(DEBUG) \
-		-j`getconf _NPROCESSORS_ONLN`
+			optee-os-common
 
 optee-os-clean:
-	make -C $(OPTEE_OS_PATH) \
+	$(MAKE) \
                 CFG_ARM64_core=y \
                 PLATFORM=hikey \
-		clean
+			optee-os-clean-common
 
-optee-client:
-	make -C $(OPTEE_CLIENT_PATH) \
-		CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)" \
-		-j`getconf _NPROCESSORS_ONLN`
-
-optee-client-clean:
-	make -C $(OPTEE_CLIENT_PATH) clean
-
-optee-linuxdriver: linux
-	make -C $(LINUX_PATH) \
-		V=0 \
-		ARCH=arm64 \
-		CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)" \
-		LOCALVERSION= \
-		M=$(OPTEE_LINUXDRIVER_PATH) modules
-
-optee-linuxdriver-clean:
-	make -C $(LINUX_PATH) \
-                M=$(OPTEE_LINUXDRIVER_PATH) clean
+optee-client: optee-client-common
+optee-client-clean: optee-client-clean-common
+optee-linuxdriver:
+	$(MAKE) ARCH=arm64 optee-linuxdriver-common
+optee-linuxdriver-clean: optee-linuxdriver-clean-common
 
 ################################################################################
 # xtest / optee_test
diff --git a/mediatek.mk b/mediatek.mk
index 2533e52..9397d09 100644
--- a/mediatek.mk
+++ b/mediatek.mk
@@ -21,13 +21,6 @@
 MTK_TOOLS_PATH 			?= $(ROOT)/mtk_tools
 
 ################################################################################
-# defines, macros, configuration etc
-################################################################################
-define KERNEL_VERSION
-$(shell cd $(LINUX_PATH) && make kernelversion)
-endef
-
-################################################################################
 # Targets
 ################################################################################
 all: linux optee-os optee-client optee-linuxdriver xtest
@@ -80,41 +73,25 @@
 # OP-TEE
 ################################################################################
 optee-os:
-	make -C $(OPTEE_OS_PATH) \
-		CROSS_COMPILE="$(CCACHE)$(AARCH32_CROSS_COMPILE)" \
-		CROSS_COMPILE_core="$(CCACHE)$(AARCH64_CROSS_COMPILE)" \
+	$(MAKE) \
 		CFG_ARM64_core=y \
 		PLATFORM=mediatek \
 		PLATFORM_FLAVOR=mt8173 \
 		CFG_TEE_CORE_LOG_LEVEL=4 \
-		DEBUG=0 \
-		-j`getconf _NPROCESSORS_ONLN`
+			optee-os-common
 
 optee-os-clean:
-	make -C $(OPTEE_OS_PATH) \
+	$(MAKE) \
 		PLATFORM=mediatek \
 		PLATFORM_FLAVOR=mt8173 \
-		clean
+			optee-os-clean-common
 
-optee-client:
-	make -C $(OPTEE_CLIENT_PATH) \
-		CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)" \
-		-j`getconf _NPROCESSORS_ONLN`
+optee-client: optee-client-common
+optee-client-clean: optee-client-clean-common
 
-optee-client-clean:
-	make -C $(OPTEE_CLIENT_PATH) clean
-
-optee-linuxdriver: linux
-	make -C $(LINUX_PATH) \
-		V=0 \
-		ARCH=arm64 \
-		CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)" \
-		LOCALVERSION= \
-		M=$(OPTEE_LINUXDRIVER_PATH) modules
-
-optee-linuxdriver-clean:
-	make -C $(LINUX_PATH) \
-		M=$(OPTEE_LINUXDRIVER_PATH) clean
+optee-linuxdriver:
+	$(MAKE) ARCH=arm64 optee-linuxdriver-common
+optee-linuxdriver-clean: optee-linuxdriver-clean-common
 
 ################################################################################
 # xtest / optee_test
diff --git a/qemu.mk b/qemu.mk
index 8d3fbc4..09e0897 100644
--- a/qemu.mk
+++ b/qemu.mk
@@ -21,12 +21,7 @@
 
 SOC_TERM_PATH			?= $(ROOT)/soc_term
 
-################################################################################
-# defines, macros, configuration etc
-################################################################################
-define KERNEL_VERSION
-$(shell cd $(LINUX_PATH) && $(MAKE) --no-print-directory kernelversion)
-endef
+DEBUG = 1
 
 ################################################################################
 # Targets
@@ -107,39 +102,23 @@
 # OP-TEE
 ################################################################################
 optee-os:
-	make -C $(OPTEE_OS_PATH) \
-		CROSS_COMPILE="$(CCACHE)$(AARCH32_CROSS_COMPILE)" \
+	$(MAKE) \
 		PLATFORM=vexpress \
 		PLATFORM_FLAVOR=qemu_virt \
 		CFG_TEE_CORE_LOG_LEVEL=3 \
-		DEBUG=1 \
-		-j`getconf _NPROCESSORS_ONLN`
+			optee-os-common
 
 optee-os-clean:
-	make -C $(OPTEE_OS_PATH) \
+	$(MAKE) \
 		PLATFORM=vexpress \
 		PLATFORM_FLAVOR=qemu_virt \
-		clean
+			optee-os-clean-common
 
-optee-client:
-	make -C $(OPTEE_CLIENT_PATH) \
-		CROSS_COMPILE="$(CCACHE)$(AARCH32_CROSS_COMPILE)" \
-		-j`getconf _NPROCESSORS_ONLN`
-
-optee-client-clean:
-	make -C $(OPTEE_CLIENT_PATH) clean
-
-optee-linuxdriver: linux
-	make -C $(LINUX_PATH) \
-		V=0 \
-		ARCH=arm \
-		CROSS_COMPILE="$(CCACHE)$(AARCH32_CROSS_COMPILE)" \
-		LOCALVERSION= \
-		M=$(OPTEE_LINUXDRIVER_PATH) modules
-
-optee-linuxdriver-clean:
-	make -C $(LINUX_PATH) \
-		M=$(OPTEE_LINUXDRIVER_PATH) clean
+optee-client: optee-client-common
+optee-client-clean: optee-client-clean-common
+optee-linuxdriver:
+	$(MAKE)	ARCH=arm optee-linuxdriver-common
+optee-linuxdriver-clean: optee-linuxdriver-clean-common
 
 ################################################################################
 # Soc-term