diff --git a/common.mk b/common.mk
index bbfc300c696e007c7c80c0f73461b08ffda05a67..e1d3de6493264860a943203a618f14b4e19a2842 100644
--- a/common.mk
+++ b/common.mk
@@ -66,9 +66,7 @@ linux-common: linux-defconfig
 	$(MAKE) -C $(LINUX_PATH) $(LINUX_COMMON_FLAGS)
 
 linux-defconfig-clean-common:
-	@if [ -f "$(LINUX_PATH)/.config" ]; then \
-		rm -f $(LINUX_PATH)/.config; \
-	fi
+	@rm -f $(LINUX_PATH)/.config
 
 LINUX_CLEAN_COMMON_FLAGS ?= $(LINUX_COMMON_FLAGS)
 	
@@ -80,7 +78,6 @@ LINUX_CLEANER_COMMON_FLAGS ?= $(LINUX_COMMON_FLAGS)
 linux-cleaner-common: linux-defconfig-clean
 	$(MAKE) -C $(LINUX_PATH) $(LINUX_CLEAN_COMMON_FLAGS) distclean
 
-
 ################################################################################
 # EDK2 / Tianocore
 ################################################################################
@@ -113,7 +110,7 @@ optee-os-common:
 
 OPTEE_OS_CLEAN_COMMON_FLAGS ?= $(OPTEE_OS_COMMON_FLAGS)
 
-optee-os-clean-common:
+optee-os-clean-common: xtest-clean
 	$(MAKE) -C $(OPTEE_OS_PATH) $(OPTEE_OS_CLEAN_COMMON_FLAGS) clean
 
 OPTEE_CLIENT_COMMON_FLAGS ?= CROSS_COMPILE=$(CROSS_COMPILE_NS_USER)
diff --git a/fvp.mk b/fvp.mk
index 82f4602c9132af561618631a3dc6dfea3bb34d06..b1ad2c3403a198aed0631d7ba71d9037de41eb17 100644
--- a/fvp.mk
+++ b/fvp.mk
@@ -38,22 +38,24 @@ all-clean: arm-tf-clean busybox-clean edk2-clean optee-os-clean \
 ################################################################################
 # ARM Trusted Firmware
 ################################################################################
-arm-tf: optee-os edk2
+ARM_TF_EXPORTS ?= \
 	CFLAGS="-O0 -gdwarf-2" \
-	CROSS_COMPILE="$(CCACHE)$(AARCH64_NONE_CROSS_COMPILE)" \
+	CROSS_COMPILE="$(CCACHE)$(AARCH64_NONE_CROSS_COMPILE)"
+
+ARM_TF_FLAGS ?= \
 	BL32=$(OPTEE_OS_BIN) \
 	BL33=$(EDK2_BIN) \
-	make -C $(ARM_TF_PATH) \
-	       -j`getconf _NPROCESSORS_ONLN` \
-	       DEBUG=0 \
-	       FVP_TSP_RAM_LOCATION=tdram \
-	       FVP_SHARED_DATA_LOCATION=tdram \
-	       PLAT=fvp \
-	       SPD=opteed \
-	       all fip
+	DEBUG=0 \
+	FVP_TSP_RAM_LOCATION=tdram \
+	FVP_SHARED_DATA_LOCATION=tdram \
+	PLAT=fvp \
+	SPD=opteed
+
+arm-tf: optee-os edk2
+	$(ARM_TF_EXPORTS) $(MAKE) -C $(ARM_TF_PATH) $(ARM_TF_FLAGS) all fip
 
 arm-tf-clean:
-	make -C $(ARM_TF_PATH) clean
+	$(ARM_TF_EXPORTS) $(MAKE) -C $(ARM_TF_PATH) $(ARM_TF_FLAGS) clean
 
 ################################################################################
 # Busybox
diff --git a/hikey.mk b/hikey.mk
index 7b69b16e187a80cb098a0106a4d02b8d8a64b9fb..b02e0fab051f2b1203042bf946bcf219cd62fab9 100644
--- a/hikey.mk
+++ b/hikey.mk
@@ -68,34 +68,24 @@ mcuimage-cleaner:
 ################################################################################
 # ARM Trusted Firmware
 ################################################################################
-arm-tf: mcuimage optee-os edk2
+ARM_TF_EXPORTS ?= \
 	CFLAGS="-O0 -gdwarf-2" \
-	CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)" \
+	CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)"
+
+ARM_TF_FLAGS ?= \
 	BL32=$(OPTEE_OS_BIN) \
 	BL33=$(EDK2_BIN) \
 	NEED_BL30=yes \
 	BL30=$(MCUIMAGE_BIN) \
-	make -C $(ARM_TF_PATH) \
-	       -j`getconf _NPROCESSORS_ONLN` \
-	       DEBUG=$(DEBUG) \
-	       PLAT=hikey \
-	       SPD=opteed \
-	       all fip
-
-.PHONY: arm-tf-clean
+	DEBUG=$(DEBUG) \
+	PLAT=hikey \
+	SPD=opteed
+
+arm-tf: mcuimage optee-os edk2
+	$(ARM_TF_EXPORTS) $(MAKE) -C $(ARM_TF_PATH) $(ARM_TF_FLAGS) all fip
+
 arm-tf-clean:
-	CFLAGS="-O0 -gdwarf-2" \
-        CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)" \
-        BL32=$(OPTEE_OS_BIN) \
-        BL33=$(EDK2_BIN) \
-        NEED_BL30=yes \
-        BL30=$(MCUIMAGE_BIN) \
-        make -C $(ARM_TF_PATH) \
-               -j`getconf _NPROCESSORS_ONLN` \
-               DEBUG=$(DEBUG) \
-               PLAT=hikey \
-               SPD=opteed \
-               clean
+	$(ARM_TF_EXPORTS) $(MAKE) -C $(ARM_TF_PATH) $(ARM_TF_FLAGS) clean
 
 ################################################################################
 # Busybox