Index: trunk/kBuild/tools/VCC120AMD64.kmk
===================================================================
--- trunk/kBuild/tools/VCC120AMD64.kmk	(revision 3035)
+++ trunk/kBuild/tools/VCC120AMD64.kmk	(revision 3036)
@@ -59,4 +59,5 @@
 PATH_TOOL_VCC120AMD64_BIN ?= $(PATH_TOOL_VCC120AMD64)/bin/amd64
 else
+PATH_TOOL_VCC120AMD64_BIN_DLL ?= $(PATH_TOOL_VCC120AMD64)/bin
 PATH_TOOL_VCC120AMD64_BIN ?= $(PATH_TOOL_VCC120AMD64)/bin/x86_amd64
 endif
@@ -87,4 +88,6 @@
   endif
  endif
+else ifdef PATH_TOOL_VCC120AMD64_BIN_DLL
+ TOOL_VCC120AMD64_KSUBMIT_DD  = $(REDIRECT) -E 'PATH=$(PATH_TOOL_VCC120AMD64_BIN_DLL)$(HOST_PATH_SEP)$(PATH)' --
 endif
 
@@ -163,4 +166,5 @@
  define TOOL_VCC120AMD64_COMPILE_C_CMDS
 	$(QUIET)$(TOOL_VCC120AMD64_KSUBMIT) -P $(DEP_OBJ_INT) -f -s -q -o $(dep) -t $(obj) $(obj)\
+		$(if-expr defined(PATH_TOOL_VCC120AMD64_BIN_DLL),-E 'PATH=$(PATH_TOOL_VCC120AMD64_BIN_DLL)$(HOST_PATH_SEP)$(PATH)',)\
 		-- $(TOOL_VCC120AMD64_CC) -c\
 		$(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
@@ -171,5 +175,6 @@
 else
  define TOOL_VCC120AMD64_COMPILE_C_CMDS
-	$(QUIET)$(TOOL_VCC120AMD64_CC) -c\
+	$(QUIET)$(if-expr defined(PATH_TOOL_VCC120AMD64_BIN_DLL)\
+		,$(REDIRECT) -E 'PATH=$(PATH_TOOL_VCC120AMD64_BIN_DLL)$(HOST_PATH_SEP)$(PATH)' -- ,)$(TOOL_VCC120AMD64_CC) -c\
 		$(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
 		-Fd$(outbase)-obj.pdb \
@@ -203,4 +208,5 @@
  define TOOL_VCC120AMD64_COMPILE_CXX_CMDS
 	$(QUIET)$(TOOL_VCC120AMD64_KSUBMIT) -P $(DEP_OBJ_INT) -f -s -q -o $(dep) -t $(obj) $(obj)\
+		$(if-expr defined(PATH_TOOL_VCC120AMD64_BIN_DLL),-E 'PATH=$(PATH_TOOL_VCC120AMD64_BIN_DLL)$(HOST_PATH_SEP)$(PATH)',)\
 		-- $(TOOL_VCC120AMD64_CXX) -c\
 		$(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
@@ -213,5 +219,6 @@
 else
  define TOOL_VCC120AMD64_COMPILE_CXX_CMDS
-	$(QUIET)$(TOOL_VCC120AMD64_CXX) -c\
+	$(QUIET)$(if-expr defined(PATH_TOOL_VCC120AMD64_BIN_DLL)\
+		,$(REDIRECT) -E 'PATH=$(PATH_TOOL_VCC120AMD64_BIN_DLL)$(HOST_PATH_SEP)$(PATH)' -- ,)$(TOOL_VCC120AMD64_CXX) -c\
 		$(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
 		$(if-expr defined($(target)_PCH_HDR)\
@@ -248,4 +255,5 @@
 	$(QUIET)$(RM) -f -- $($(target)_1_VCC_PCH_FILE) $($(target)_1_VCC_COMMON_OBJ_PDB)
 	$(QUIET)$(TOOL_VCC120AMD64_KSUBMIT) --no-pch-caching -P $(DEP_OBJ_INT) -f -s -q -e .pch -o $(dep) -t $(obj) $(obj)\
+		$(if-expr defined(PATH_TOOL_VCC120AMD64_BIN_DLL),-E 'PATH=$(PATH_TOOL_VCC120AMD64_BIN_DLL)$(HOST_PATH_SEP)$(PATH)',)\
 		-- $(TOOL_VCC120AMD64_CXX) -c -Yc\
 		$(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
@@ -259,5 +267,6 @@
  define TOOL_VCC120AMD64-PCH_COMPILE_CXX_CMDS
 	$(QUIET)$(RM) -f -- $($(target)_1_VCC_PCH_FILE) $($(target)_1_VCC_COMMON_OBJ_PDB)
-	$(QUIET)$(TOOL_VCC120AMD64_CXX) -c -Yc\
+	$(QUIET)$(if-expr defined(PATH_TOOL_VCC120AMD64_BIN_DLL)\
+		,$(REDIRECT) -E 'PATH=$(PATH_TOOL_VCC120AMD64_BIN_DLL)$(HOST_PATH_SEP)$(PATH)' -- ,)$(TOOL_VCC120AMD64_CXX) -c -Yc\
 		$(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
                -Fp$($(target)_1_VCC_PCH_FILE) \
@@ -290,6 +299,8 @@
 TOOL_VCC120AMD64_COMPILE_RC_DEPORD =
 TOOL_VCC120AMD64_COMPILE_RC_OUTPUT =
+## @todo Fix kmk_redirect so we can use it for setting PATH without spawning a shell or two
 define TOOL_VCC120AMD64_COMPILE_RC_CMDS
-	$(QUIET)$(TOOL_VCC120AMD64_RC) \
+	$(QUIET)$(if-expr defined(PATH_TOOL_VCC120AMD64_BIN_DLL)\
+		,PATH='$(PATH_TOOL_VCC120AMD64_BIN_DLL)$(HOST_PATH_SEP)$(PATH)',)$(TOOL_VCC120AMD64_RC) \
 		$(flags) $(addprefix /i, $(subst /,\\,$(incs))) $(addprefix /d, $(defs))\
 		/fo$(obj)\
Index: trunk/kBuild/tools/VCC120X86.kmk
===================================================================
--- trunk/kBuild/tools/VCC120X86.kmk	(revision 3035)
+++ trunk/kBuild/tools/VCC120X86.kmk	(revision 3036)
@@ -58,4 +58,12 @@
  # Resolve any fancy stuff once and for all.
  PATH_TOOL_VCC120X86 := $(PATH_TOOL_VCC120X86)
+endif
+
+ifeq ($(KBUILD_HOST).$(KBUILD_HOST_ARCH),win.amd64)
+ PATH_TOOL_VCC120X86_BIN_DLL ?= $(PATH_TOOL_VCC120AMD64)/bin/amd64
+ PATH_TOOL_VCC120X86_BIN     ?= $(PATH_TOOL_VCC120AMD64)/bin/amd64_x86
+else
+PATH_TOOL_VCC120X86_BIN_DLL ?=
+ PATH_TOOL_VCC120X86_BIN   ?= $(PATH_TOOL_VCC120AMD64)/bin
 endif
 PATH_TOOL_VCC120X86_BIN    ?= $(PATH_TOOL_VCC120X86)/bin
@@ -80,4 +88,6 @@
   TOOL_VCC120X86_KSUBMIT_DD = $(TOOL_VCC120X86_KSUBMIT) --
  endif
+else ifdef PATH_TOOL_VCC120X86_BIN_DLL
+ TOOL_VCC120X86_KSUBMIT_DD  = $(REDIRECT) -E 'PATH=$(PATH_TOOL_VCC120X86_BIN_DLL)$(HOST_PATH_SEP)$(PATH)' --
 endif
 
@@ -156,4 +166,5 @@
  define TOOL_VCC120X86_COMPILE_C_CMDS
 	$(QUIET)$(TOOL_VCC120X86_KSUBMIT) -P $(DEP_OBJ_INT) -f -s -q -o $(dep) -t $(obj) $(obj)\
+		$(if-expr defined(PATH_TOOL_VCC120X86_BIN_DLL),-E 'PATH=$(PATH_TOOL_VCC120X86_BIN_DLL)$(HOST_PATH_SEP)$(PATH)',)\
 		-- $(TOOL_VCC120X86_CC) -c\
 		$(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
@@ -164,5 +175,6 @@
 else
  define TOOL_VCC120X86_COMPILE_C_CMDS
-	$(QUIET)$(TOOL_VCC120X86_CC) -c\
+	$(QUIET)$(if-expr defined(PATH_TOOL_VCC120X86_BIN_DLL)\
+		,$(REDIRECT) -E 'PATH=$(PATH_TOOL_VCC120X86_BIN_DLL)$(HOST_PATH_SEP)$(PATH)' -- ,)$(TOOL_VCC120X86_CC) -c\
 		$(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
 		-Fd$(outbase)-obj.pdb \
@@ -196,4 +208,5 @@
  define TOOL_VCC120X86_COMPILE_CXX_CMDS
 	$(QUIET)$(TOOL_VCC120X86_KSUBMIT) -P $(DEP_OBJ_INT) -f -s -q -o $(dep) -t $(obj) $(obj)\
+		$(if-expr defined(PATH_TOOL_VCC120X86_BIN_DLL),-E 'PATH=$(PATH_TOOL_VCC120X86_BIN_DLL)$(HOST_PATH_SEP)$(PATH)',)\
 		-- $(TOOL_VCC120X86_CXX) -c\
 		$(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
@@ -206,5 +219,6 @@
 else
  define TOOL_VCC120X86_COMPILE_CXX_CMDS
-	$(QUIET)$(TOOL_VCC120X86_CXX) -c\
+	$(QUIET)$(if-expr defined(PATH_TOOL_VCC120X86_BIN_DLL)\
+		,$(REDIRECT) -E 'PATH=$(PATH_TOOL_VCC120X86_BIN_DLL)$(HOST_PATH_SEP)$(PATH)' -- ,)$(TOOL_VCC120X86_CXX) -c\
 		$(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
 		$(if-expr defined($(target)_PCH_HDR)\
@@ -240,4 +254,5 @@
  define TOOL_VCC120X86-PCH_COMPILE_CXX_CMDS
 	$(QUIET)$(TOOL_VCC120X86_KSUBMIT) --no-pch-caching -P $(DEP_OBJ_INT) -f -s -q -e .pch -o $(dep) -t $(obj) $(obj)\
+		$(if-expr defined(PATH_TOOL_VCC120X86_BIN_DLL),-E 'PATH=$(PATH_TOOL_VCC120X86_BIN_DLL)$(HOST_PATH_SEP)$(PATH)',)\
 		-- $(TOOL_VCC120X86_CXX) -c -Yc\
 		$(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
@@ -250,5 +265,6 @@
 else
  define TOOL_VCC120X86-PCH_COMPILE_CXX_CMDS
-	$(QUIET)$(TOOL_VCC120X86_CXX) -c -Yc\
+	$(QUIET)$(if-expr defined(PATH_TOOL_VCC120X86_BIN_DLL)\
+		,$(REDIRECT) -E 'PATH=$(PATH_TOOL_VCC120X86_BIN_DLL)$(HOST_PATH_SEP)$(PATH)' -- ,)$(TOOL_VCC120X86_CXX) -c -Yc\
 		$(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
                -Fp$($(target)_1_VCC_PCH_FILE) \
@@ -281,6 +297,8 @@
 TOOL_VCC120X86_COMPILE_RC_DEPORD =
 TOOL_VCC120X86_COMPILE_RC_OUTPUT =
+## @todo Fix kmk_redirect so we can use it for setting PATH without spawning a shell or two
 define TOOL_VCC120X86_COMPILE_RC_CMDS
-	$(QUIET)$(TOOL_VCC120X86_RC) \
+	$(QUIET)$(if-expr defined(PATH_TOOL_VCC120X86_BIN_DLL)\
+		,PATH='$(PATH_TOOL_VCC120X86_BIN_DLL)$(HOST_PATH_SEP)$(PATH)') $(TOOL_VCC120X86_RC) \
 		$(flags) $(addprefix /i, $(subst /,\\,$(incs))) $(addprefix /d, $(defs))\
 		/fo$(obj)\
