Index: trunk/kBuild/tools/VCC100.kmk
===================================================================
--- trunk/kBuild/tools/VCC100.kmk	(revision 2603)
+++ trunk/kBuild/tools/VCC100.kmk	(revision 2604)
@@ -74,8 +74,6 @@
  TOOL_VCC100_CXX ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100_BIN)/cl.exe
  TOOL_VCC100_AS  ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100_BIN)/ml64.exe
- TOOL_VCC100_RC  ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100_BIN.x86)/rc.exe
  TOOL_VCC100_AR  ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100_BIN)/lib.exe
  TOOL_VCC100_LD  ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100_BIN)/link.exe
- TOOL_VCC100_MT  ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100_BIN.x86)/mt.exe
 else
  # Pathless, relies on the environment.
@@ -83,9 +81,19 @@
  TOOL_VCC100_CXX ?= $(EXEC_X86_WIN32) cl.exe
  TOOL_VCC100_AS  ?= $(EXEC_X86_WIN32) ml64.exe
- TOOL_VCC100_RC  ?= $(EXEC_X86_WIN32) rc.exe
  TOOL_VCC100_AR  ?= $(EXEC_X86_WIN32) lib.exe
  TOOL_VCC100_LD  ?= $(EXEC_X86_WIN32) link.exe
- TOOL_VCC100_MT  ?= $(EXEC_X86_WIN32) mt.exe
 endif
+TOOL_VCC100_RC   ?= $(EXEC_X86_WIN32) $(call TOOL_VCC100_FN_FIND_SDK_TOOL,rc.exe,TOOL_VCC100_RC_CACHED)
+#TOOL_VCC100_MT   ?= $(EXEC_X86_WIN32) $(call TOOL_VCC100_FN_FIND_SDK_TOOL,mt.exe,TOOL_VCC100_MT_CACHED)
+
+# The following in duplicated in VCC100.kmk and VCC100X86.kmk.
+TOOL_VCC100_FN_FIND_SDK_TOOL_SUB = $(eval $2 := $(firstword  \
+       $(if-expr defined(PATH_SDK_WINPSDK71_BIN), $(wildcard $(PATH_SDK_WINPSDK71_BIN)/$1)) \
+       $(if-expr defined(PATH_SDK_WINPSDK_BIN)  , $(wildcard $(PATH_SDK_WINPSDK_BIN)/$1)) \
+	$(rsort $(wildcard $(KBUILD_DEVTOOLS_HST)/sdk/*/[Bb][Ii][Nn]/$1)) \
+	$(rsort $(wildcard $(KBUILD_DEVTOOLS_HST_ALT)/sdk/*/[Bb][Ii][Nn]/$1)) \
+	$1))
+TOOL_VCC100_FN_FIND_SDK_TOOL = $(if-expr !defined($2),$(TOOL_VCC100_FN_FIND_SDK_TOOL_SUB),)$($2)
+
 ## Disabled fast DEP_IDB based dependencies.
 #VCC100_OLD_DEPS = 1
Index: trunk/kBuild/tools/VCC100AMD64.kmk
===================================================================
--- trunk/kBuild/tools/VCC100AMD64.kmk	(revision 2603)
+++ trunk/kBuild/tools/VCC100AMD64.kmk	(revision 2604)
@@ -69,8 +69,18 @@
 TOOL_VCC100AMD64_CXX ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100AMD64_BIN)/cl.exe
 TOOL_VCC100AMD64_AS  ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100AMD64_BIN)/ml64.exe
-TOOL_VCC100AMD64_RC  ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100AMD64_BIN)/../rc.exe
 TOOL_VCC100AMD64_AR  ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100AMD64_BIN)/lib.exe
 TOOL_VCC100AMD64_LD  ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100AMD64_BIN)/link.exe
-TOOL_VCC100AMD64_MT  ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100AMD64_BIN)/../mt.exe
+TOOL_VCC100AMD64_RC  ?= $(EXEC_X86_WIN32) $(call TOOL_VCC100_FN_FIND_SDK_TOOL,rc.exe,TOOL_VCC100_RC_CACHED)
+TOOL_VCC100AMD64_MT  ?= $(EXEC_X86_WIN32) $(call TOOL_VCC100_FN_FIND_SDK_TOOL,mt.exe,TOOL_VCC100_MT_CACHED)
+
+# The following in duplicated in VCC100.kmk and VCC100X86.kmk.
+TOOL_VCC100_FN_FIND_SDK_TOOL_SUB = $(eval $2 := $(firstword  \
+       $(if-expr defined(PATH_SDK_WINPSDK71_BIN), $(wildcard $(PATH_SDK_WINPSDK71_BIN)/$1)) \
+       $(if-expr defined(PATH_SDK_WINPSDK_BIN)  , $(wildcard $(PATH_SDK_WINPSDK_BIN)/$1)) \
+	$(rsort $(wildcard $(KBUILD_DEVTOOLS_HST)/sdk/*/[Bb][Ii][Nn]/$1)) \
+	$(rsort $(wildcard $(KBUILD_DEVTOOLS_HST_ALT)/sdk/*/[Bb][Ii][Nn]/$1)) \
+	$1))
+TOOL_VCC100_FN_FIND_SDK_TOOL = $(if-expr !defined($2),$(TOOL_VCC100_FN_FIND_SDK_TOOL_SUB),)$($2)
+
 ## Disabled fast DEP_IDB based dependencies.
 #VCC100AMD64_OLD_DEPS = 1
Index: trunk/kBuild/tools/VCC100X86.kmk
===================================================================
--- trunk/kBuild/tools/VCC100X86.kmk	(revision 2603)
+++ trunk/kBuild/tools/VCC100X86.kmk	(revision 2604)
@@ -68,8 +68,19 @@
 TOOL_VCC100X86_CXX ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100X86_BIN)/cl.exe
 TOOL_VCC100X86_AS  ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100X86_BIN)/ml.exe
-TOOL_VCC100X86_RC  ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100X86_BIN)/rc.exe
 TOOL_VCC100X86_AR  ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100X86_BIN)/lib.exe
 TOOL_VCC100X86_LD  ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100X86_BIN)/link.exe
 TOOL_VCC100X86_MT  ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100X86_BIN)/mt.exe
+TOOL_VCC100X86_RC  ?= $(EXEC_X86_WIN32) $(call TOOL_VCC100_FN_FIND_SDK_TOOL,rc.exe,TOOL_VCC100_RC_CACHED)
+TOOL_VCC100X86_MT  ?= $(EXEC_X86_WIN32) $(call TOOL_VCC100_FN_FIND_SDK_TOOL,mt.exe,TOOL_VCC100_MT_CACHED)
+
+# The following in duplicated in VCC100.kmk and VCC100X86.kmk.
+TOOL_VCC100_FN_FIND_SDK_TOOL_SUB = $(eval $2 := $(firstword  \
+       $(if-expr defined(PATH_SDK_WINPSDK71_BIN), $(wildcard $(PATH_SDK_WINPSDK71_BIN)/$1)) \
+       $(if-expr defined(PATH_SDK_WINPSDK_BIN)  , $(wildcard $(PATH_SDK_WINPSDK_BIN)/$1)) \
+	$(rsort $(wildcard $(KBUILD_DEVTOOLS_HST)/sdk/*/[Bb][Ii][Nn]/$1)) \
+	$(rsort $(wildcard $(KBUILD_DEVTOOLS_HST_ALT)/sdk/*/[Bb][Ii][Nn]/$1)) \
+	$1))
+TOOL_VCC100_FN_FIND_SDK_TOOL = $(if-expr !defined($2),$(TOOL_VCC100_FN_FIND_SDK_TOOL_SUB),)$($2)
+
 ## Disabled fast DEP_IDB based dependencies.
 #VCC100X86_OLD_DEPS = 1
