diff --git a/common.mk b/common.mk
index 12bf1a3342ed0e01de58259f3cb1e30a61360a35..690499e38cb94336219b753c954e4ba2932553ff 100644
--- a/common.mk
+++ b/common.mk
@@ -209,15 +209,15 @@ linux-cleaner-common: linux-defconfig-clean
 ################################################################################
 .PHONY: edk2-common
 edk2-common:
-	export WORKSPACE=$(ROOT) && \
-	export PACKAGES_PATH=$(EDK2_PATH):$(ROOT)/edk2-platforms && \
+	$(call edk2-env) && \
+	export PACKAGES_PATH=$(EDK2_PATH):$(EDK2_PLATFORMS_PATH) && \
 	source $(EDK2_PATH)/edksetup.sh && \
 	$(MAKE) -j1 -C $(EDK2_PATH)/BaseTools && \
 	$(call edk2-call) all
 
 .PHONY: edk2-clean-common
 edk2-clean-common:
-	export WORKSPACE=$(ROOT) && \
+	$(call edk2-env) && \
 	export PACKAGES_PATH=$(EDK2_PATH):$(ROOT)/edk2-platforms && \
 	source $(EDK2_PATH)/edksetup.sh && \
 	$(MAKE) -j1 -C $(EDK2_PATH)/BaseTools clean && \
diff --git a/fvp.mk b/fvp.mk
index 9b6f2a8d701cb974867ef4eb95ef22edbb57fa98..aa12bd7f0a46be4f08b95a48f22966bded1e9189 100644
--- a/fvp.mk
+++ b/fvp.mk
@@ -18,8 +18,8 @@ include common.mk
 ################################################################################
 ARM_TF_PATH		?= $(ROOT)/arm-trusted-firmware
 EDK2_PATH		?= $(ROOT)/edk2
-EDK2_BIN		?= $(ROOT)/Build/ArmVExpress-FVP-AArch64/RELEASE_GCC49/FV/FVP_AARCH64_EFI.fd
 EDK2_PLATFORMS_PATH	?= $(ROOT)/edk2-platforms
+EDK2_BIN		?= $(EDK2_PLATFORMS_PATH)/Build/ArmVExpress-FVP-AArch64/RELEASE_GCC49/FV/FVP_AARCH64_EFI.fd
 FOUNDATION_PATH		?= $(ROOT)/Foundation_Platformpkg
 ifeq ($(wildcard $(FOUNDATION_PATH)),)
 $(error $(FOUNDATION_PATH) does not exist)
@@ -84,10 +84,14 @@ busybox-cleaner: busybox-cleaner-common
 ################################################################################
 # EDK2 / Tianocore
 ################################################################################
+define edk2-env
+	export WORKSPACE=$(EDK2_PLATFORMS_PATH)
+endef
+
 define edk2-call
 	GCC49_AARCH64_PREFIX=$(LEGACY_AARCH64_CROSS_COMPILE) \
 	build -n `getconf _NPROCESSORS_ONLN` -a "AARCH64" \
-		-t "GCC49" -p $(EDK2_PLATFORMS_PATH)/Platform/ARM/VExpressPkg/ArmVExpress-FVP-AArch64.dsc -b RELEASE
+		-t "GCC49" -p Platform/ARM/VExpressPkg/ArmVExpress-FVP-AArch64.dsc -b RELEASE
 endef
 
 edk2: edk2-common
diff --git a/qemu_v8.mk b/qemu_v8.mk
index 92ff70ad87b4949192dbe3ee402bced81784777b..ea465bc933694578e40bc52bef6041b74dde7657 100644
--- a/qemu_v8.mk
+++ b/qemu_v8.mk
@@ -97,6 +97,10 @@ busybox-cleaner: busybox-cleaner-common
 ################################################################################
 # EDK2 / Tianocore
 ################################################################################
+define edk2-env
+	export WORKSPACE=$(EDK2_PATH)
+endef
+
 define edk2-call
 	GCC49_AARCH64_PREFIX=$(LEGACY_AARCH64_CROSS_COMPILE) \
 		$(MAKE) -j1 -C $(EDK2_PATH) \