diff --git a/fvp.mk b/fvp.mk
index 9e98fbf146aa4e0b9022dcd4d98a5cfb0350feca..7f4f5206b45abfadc865b96b780579cdc1745f97 100644
--- a/fvp.mk
+++ b/fvp.mk
@@ -22,12 +22,14 @@ TF_A_BUILD		?= release
 endif
 EDK2_PATH		?= $(ROOT)/edk2
 EDK2_PLATFORMS_PATH	?= $(ROOT)/edk2-platforms
+EDK2_TOOLCHAIN		?= GCC49
+EDK2_ARCH		?= AARCH64
 ifeq ($(DEBUG),1)
 EDK2_BUILD		?= DEBUG
 else
 EDK2_BUILD		?= RELEASE
 endif
-EDK2_BIN		?= $(EDK2_PLATFORMS_PATH)/Build/ArmVExpress-FVP-AArch64/$(EDK2_BUILD)_GCC49/FV/FVP_AARCH64_EFI.fd
+EDK2_BIN		?= $(EDK2_PLATFORMS_PATH)/Build/ArmVExpress-FVP-AArch64/$(EDK2_BUILD)_$(EDK2_TOOLCHAIN)/FV/FVP_$(EDK2_ARCH)_EFI.fd
 FOUNDATION_PATH		?= $(ROOT)/Foundation_Platformpkg
 ifeq ($(wildcard $(FOUNDATION_PATH)),)
 $(error $(FOUNDATION_PATH) does not exist)
@@ -85,9 +87,9 @@ define edk2-env
 endef
 
 define edk2-call
-	GCC49_AARCH64_PREFIX=$(AARCH64_CROSS_COMPILE) \
-	build -n `getconf _NPROCESSORS_ONLN` -a "AARCH64" \
-		-t "GCC49" -p Platform/ARM/VExpressPkg/ArmVExpress-FVP-AArch64.dsc -b $(EDK2_BUILD)
+	$(EDK2_TOOLCHAIN)_$(EDK2_ARCH)_PREFIX=$(AARCH64_CROSS_COMPILE) \
+	build -n `getconf _NPROCESSORS_ONLN` -a $(EDK2_ARCH) \
+		-t $(EDK2_TOOLCHAIN) -p Platform/ARM/VExpressPkg/ArmVExpress-FVP-AArch64.dsc -b $(EDK2_BUILD)
 endef
 
 edk2: edk2-common
diff --git a/qemu_v8.mk b/qemu_v8.mk
index 9ab3d136b1f530365c93e12d4a1179c97351aaf0..9a1535b2728df6207c9146d52203aff2d44a2649 100644
--- a/qemu_v8.mk
+++ b/qemu_v8.mk
@@ -25,12 +25,14 @@ DEBUG ?= 1
 TF_A_PATH		?= $(ROOT)/trusted-firmware-a
 BINARIES_PATH		?= $(ROOT)/out/bin
 EDK2_PATH		?= $(ROOT)/edk2
+EDK2_TOOLCHAIN		?= GCC49
+EDK2_ARCH		?= AARCH64
 ifeq ($(DEBUG),1)
 EDK2_BUILD		?= DEBUG
 else
 EDK2_BUILD		?= RELEASE
 endif
-EDK2_BIN		?= $(EDK2_PATH)/Build/ArmVirtQemuKernel-AARCH64/$(EDK2_BUILD)_GCC49/FV/QEMU_EFI.fd
+EDK2_BIN		?= $(EDK2_PATH)/Build/ArmVirtQemuKernel-$(EDK2_ARCH)/$(EDK2_BUILD)_$(EDK2_TOOLCHAIN)/FV/QEMU_EFI.fd
 QEMU_PATH		?= $(ROOT)/qemu
 SOC_TERM_PATH		?= $(ROOT)/soc_term
 
@@ -120,9 +122,9 @@ define edk2-env
 endef
 
 define edk2-call
-        GCC49_AARCH64_PREFIX=$(AARCH64_CROSS_COMPILE) \
-        build -n `getconf _NPROCESSORS_ONLN` -a AARCH64 \
-                -t GCC49 -p ArmVirtPkg/ArmVirtQemuKernel.dsc \
+        $(EDK2_TOOLCHAIN)_$(EDK2_ARCH)_PREFIX=$(AARCH64_CROSS_COMPILE) \
+        build -n `getconf _NPROCESSORS_ONLN` -a $(EDK2_ARCH) \
+                -t $(EDK2_TOOLCHAIN) -p ArmVirtPkg/ArmVirtQemuKernel.dsc \
 		-b $(EDK2_BUILD)
 endef
 
diff --git a/synquacer.mk b/synquacer.mk
index 1ade97f1b13b11b9a1e60fe4676d64134a99fc55..26223419de39cf6f3161135955d982e5cf831d7c 100644
--- a/synquacer.mk
+++ b/synquacer.mk
@@ -39,6 +39,8 @@ EDK2_PLATFORMS_PATH ?= $(ROOT)/edk2-platforms
 EDK2_NON_OSI_PATH ?= $(ROOT)/edk2-non-osi
 EDK2_PKGS_PATH := "$(EDK2_PATH):$(EDK2_PLATFORMS_PATH):$(EDK2_NON_OSI_PATH)"
 EDK2_FIP ?= $(EDK2_NON_OSI_PATH)/Platform/Socionext/DeveloperBox/fip_all_arm_tf.bin
+EDK2_TOOLCHAIN ?= GCC5
+EDK2_ARCH ?= AARCH64
 
 ################################################################################
 # Targets
@@ -91,9 +93,9 @@ define edk2-env
 endef
 
 define edk2-call
-	GCC5_AARCH64_PREFIX=$(AARCH64_CROSS_COMPILE) \
+	$(EDK2_TOOLCHAIN)_$(EDK2_ARCH)_PREFIX=$(AARCH64_CROSS_COMPILE) \
 	build -n `getconf _NPROCESSORS_ONLN` \
-		-a "AARCH64" -t "GCC5" -b $(EDK2_BUILD) \
+		-a $(EDK2_ARCH) -t $(EDK2_TOOLCHAIN) -b $(EDK2_BUILD) \
 		-p Platform/Socionext/DeveloperBox/DeveloperBox.dsc
 endef