Index: /trunk/kBuild/footer.kmk
===================================================================
--- /trunk/kBuild/footer.kmk	(revision 640)
+++ /trunk/kBuild/footer.kmk	(revision 641)
@@ -977,6 +977,6 @@
 # @remark 	obsoleted by kBuild helpers in kmk. Only required for limited gmake compatbility.
 #
-define def_target_source_c_cpp_asm_old
-#$ (warning dbg: def_target_source_c_cpp_asm: source='$(source)' target='$(target)' type='$(type)')
+define def_target_source_c_cpp_asm_rc_old
+#$ (warning dbg: def_target_source_c_cpp_asm_rc_old: source='$(source)' target='$(target)' type='$(type)')
 
 tool := $(call _SOURCE_TOOL,$(source),$(target),$(type))
@@ -1354,10 +1354,10 @@
 #
 #$ (warning dbg: def_target_source_c_cpp_asm: source='$(source)' target='$(target)' type='$(type)')
-def_target_source_c_cpp_asm_new = $(kb-src-one x)
+def_target_source_c_cpp_asm_rc_new = $(kb-src-one x)
 
 ifneq ($(filter kb-src-one,$(KMK_FEATURES)),)
-def_target_source_c_cpp_asm_var = def_target_source_c_cpp_asm_new
+def_target_source_c_cpp_asm_rc_var = def_target_source_c_cpp_asm_rc_new
 else
-def_target_source_c_cpp_asm_var = def_target_source_c_cpp_asm_old
+def_target_source_c_cpp_asm_rc_var = def_target_source_c_cpp_asm_rc_old
 endif
 
@@ -1369,15 +1369,20 @@
 type := C
 $(foreach source, $(filter %.c             , $($(target)_SOURCES) $($(target)_SOURCES.$(bld_trg)) $($(target)_SOURCES.$(bld_trg).$(bld_trg_arch)) $($(target)_SOURCES.$(bld_trg_arch)) $($(target)_SOURCES.$(bld_trg_cpu)) $($(target)_SOURCES.$(bld_type)))\
-   ,$(eval $(value $(def_target_source_c_cpp_asm_var))) )
+   ,$(eval $(value $(def_target_source_c_cpp_asm_rc_var))) )
 
 # C++ sources
 type := CXX
 $(foreach source, $(filter %.cpp %.cxx %.xx, $($(target)_SOURCES) $($(target)_SOURCES.$(bld_trg)) $($(target)_SOURCES.$(bld_trg).$(bld_trg_arch)) $($(target)_SOURCES.$(bld_trg_arch)) $($(target)_SOURCES.$(bld_trg_cpu)) $($(target)_SOURCES.$(bld_type)))\
-	,$(eval $(value $(def_target_source_c_cpp_asm_var))) )
+	,$(eval $(value $(def_target_source_c_cpp_asm_rc_var))) )
 
 # ASM sources
 type := AS
 $(foreach source, $(filter %.asm %.s %.S   , $($(target)_SOURCES) $($(target)_SOURCES.$(bld_trg)) $($(target)_SOURCES.$(bld_trg).$(bld_trg_arch)) $($(target)_SOURCES.$(bld_trg_arch)) $($(target)_SOURCES.$(bld_trg_cpu)) $($(target)_SOURCES.$(bld_type)))\
-	,$(eval $(value $(def_target_source_c_cpp_asm_var))) )
+	,$(eval $(value $(def_target_source_c_cpp_asm_rc_var))) )
+
+# Resource sources
+type := RC
+$(foreach source, $(filter %.rc            , $($(target)_SOURCES) $($(target)_SOURCES.$(bld_trg)) $($(target)_SOURCES.$(bld_trg).$(bld_trg_arch)) $($(target)_SOURCES.$(bld_trg_arch)) $($(target)_SOURCES.$(bld_trg_cpu)) $($(target)_SOURCES.$(bld_type)))\
+	,$(eval $(value $(def_target_source_c_cpp_asm_rc_var))) )
 
 endef
Index: /trunk/kBuild/header.kmk
===================================================================
--- /trunk/kBuild/header.kmk	(revision 640)
+++ /trunk/kBuild/header.kmk	(revision 641)
@@ -510,5 +510,5 @@
 ## PROPS_TOOLS
 # This is a subset of the other PROPS
-PROPS_TOOLS := TOOL CTOOL CXXTOOL ASTOOL ARTOOL LDTOOL FETCHTOOL UNPACKTOOL PATCHTOOL
+PROPS_TOOLS := TOOL CTOOL CXXTOOL ASTOOL RCTOOL ARTOOL LDTOOL FETCHTOOL UNPACKTOOL PATCHTOOL
 
 ## PROPS_SINGLE
@@ -516,5 +516,6 @@
 # A Config.kmk file can add it's own properties to this list and kBuild
 # will do the necessary inheritance from templates to targets.
-PROPS_SINGLE := $(PROPS_TOOLS) INST NOINST BLD_TYPE BLD_TRG BLD_TRG_ARCH BLD_TRG_CPU FETCHDIR
+PROPS_SINGLE := $(PROPS_TOOLS) INST NOINST BLD_TYPE BLD_TRG BLD_TRG_ARCH BLD_TRG_CPU FETCHDIR \
+	OBJSUFF COBJSUFF CXXOBJSUFF ASOBJSUFF RCOBJSUFF SYSSUFF EXESUFF DLLSUFF LIBSUFF ARLIBSUFF
 
 ## PROPS_DEFERRED
@@ -531,6 +532,6 @@
 	COPTS CFLAGS CDEFS CINCS CXXOPTS CXXFLAGS CXXDEFS CXXINCS \
 	ASOPTS ASFLAGS ASDEFS ASINCS \
+	RCOPTS RCFLAGS RCDEFS RCINCS \
 	LDFLAGS LIBS LIBPATH \
-	SYSSUFF EXESUFF DLLSUFF LIBSUFF ARLIBSUFF \
 	FETCHFLAGS UNPACKFLAGS PATCHFLAGS
 
Index: /trunk/kBuild/tools/VCC70.kmk
===================================================================
--- /trunk/kBuild/tools/VCC70.kmk	(revision 640)
+++ /trunk/kBuild/tools/VCC70.kmk	(revision 641)
@@ -56,4 +56,7 @@
 TOOL_VCC70_ASOBJSUFF          := .obj
 
+TOOL_VCC70_RC                 := $(EXEC_X86_WIN32) $(PATH_TOOL_VCC70)/bin/rc.exe
+TOOL_VCC70_RCOBJSUFF          := .res
+
 TOOL_VCC70_AR                 := $(EXEC_X86_WIN32) $(PATH_TOOL_VCC70)/bin/lib.exe
 TOOL_VCC70_ARFLAGS            := -nologo
@@ -162,4 +165,28 @@
 
 
+## Compile resource source.
+# @param    $(target)   Normalized main target name.
+# @param    $(source)   Source filename (relative).
+# @param    $(obj)      Object file name. This shall be (re)created by the compilation.
+# @param    $(dep)      Dependcy file. This shall be (re)created by the compilation.
+# @param    $(flags)    Flags.
+# @param    $(defs)     Definitions. No -D or something.
+# @param    $(incs)     Includes. No -I or something.
+# @param    $(dirdep)   Directory creation dependency.
+# @param    $(deps)     Other dependencies.
+#
+# @param    $(outbase)  Output basename (full). Use this for list files and such.
+# @param    $(objsuff)  Object suffix.
+TOOL_VCC70_COMPILE_RC_OUTPUT =
+TOOL_VCC70_COMPILE_RC_DEPEND =
+TOOL_VCC70_COMPILE_RC_DEPORD =
+define TOOL_VCC70_COMPILE_RC_CMDS
+	$(TOOL_VCC70_RC) \
+		$(flags) $(addprefix /i, $(subst /,\\,$(incs))) $(addprefix /d, $(defs))\
+		/fo$(obj)\
+		$(subst /,\\,$(call ABSPATH,$(source)))
+endef
+
+
 ## Link library
 # @param    $(target)   Normalized main target name.
@@ -172,5 +199,5 @@
 # @param    $(outbase)  Output basename (full). Use this for list files and such.
 #
-TOOL_VCC70_LINK_LIBRARY_OUTPUT = $(outbase).lst $(outbase).exp $(call TOOL_VCC70_PDB, $(outbase),pdb)
+TOOL_VCC70_LINK_LIBRARY_OUTPUT = $(outbase).lst $(outbase).exp $(call TOOL_VCC70_PDB, $(outbase),pdb) $(outbase).pdb
 TOOL_VCC70_LINK_LIBRARY_DEPEND = $(othersrc)
 TOOL_VCC70_LINK_LIBRARY_DEPORD =
@@ -195,5 +222,5 @@
 # @param    $(outbase)      Output basename (full). Use this for list files and such.
 #
-TOOL_VCC70_LINK_PROGRAM_OUTPUT = $(outbase).map $(outbase).lib $(outbase).exp $(call TOOL_VCC70_PDB, $(outbase),pdb) $(outbase).ilk
+TOOL_VCC70_LINK_PROGRAM_OUTPUT = $(outbase).map $(outbase).lib $(outbase).exp $(call TOOL_VCC70_PDB, $(outbase),pdb) $(outbase).pdb $(outbase).ilk
 TOOL_VCC70_LINK_PROGRAM_DEPEND = $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(othersrc)
 TOOL_VCC70_LINK_PROGRAM_DEPORD =
@@ -225,5 +252,5 @@
 #
 # @param    $(outbase)  Output basename (full). Use this for list files and such.
-TOOL_VCC70_LINK_DLL_OUTPUT = $(outbase).map $(outbase).lib $(outbase).exp $(call TOOL_VCC70_PDB, $(outbase),pdb) $(outbase).ilk
+TOOL_VCC70_LINK_DLL_OUTPUT = $(outbase).map $(outbase).lib $(outbase).exp $(call TOOL_VCC70_PDB, $(outbase),pdb) $(outbase).pdb $(outbase).ilk
 TOOL_VCC70_LINK_DLL_DEPEND = $(objs) $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(othersrc)
 TOOL_VCC70_LINK_DLL_DEPORD = $(call DIRDEP,$(PATH_LIB))
@@ -262,5 +289,5 @@
 #
 # @param    $(outbase)  Output basename (full). Use this for list files and such.
-TOOL_VCC70_LINK_SYSMOD_OUTPUT = $(outbase).map $(outbase).lib $(outbase).exp $(call TOOL_VCC70_PDB, $(outbase),pdb) $(outbase).ilk
+TOOL_VCC70_LINK_SYSMOD_OUTPUT = $(outbase).map $(outbase).lib $(outbase).exp $(call TOOL_VCC70_PDB, $(outbase),pdb) $(outbase).pdb $(outbase).ilk
 TOOL_VCC70_LINK_SYSMOD_DEPEND = $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(othersrc)
 TOOL_VCC70_LINK_SYSMOD_DEPORD =
Index: /trunk/kBuild/tools/VCC80AMD64.kmk
===================================================================
--- /trunk/kBuild/tools/VCC80AMD64.kmk	(revision 640)
+++ /trunk/kBuild/tools/VCC80AMD64.kmk	(revision 641)
@@ -2,5 +2,5 @@
 ## @file
 #
-# kBuild Tool Config - Visual C++ 8.0 (aka Visual .NET 2005)
+# kBuild Tool Config - Visual C++ 8.0 (aka Visual .NET 2005, or MSC v14)
 #
 # Copyright (c) 2004-2006 knut st. osmundsen <bird-srcspam@anduin.net>
@@ -56,4 +56,7 @@
 TOOL_VCC80AMD64_ASOBJSUFF          := .obj
 
+TOOL_VCC80AMD64_RC                 := $(EXEC_X86_WIN32) $(PATH_TOOL_VCC80AMD64_BIN)/../rc.exe
+TOOL_VCC80AMD64_RCOBJSUFF          := .res
+
 TOOL_VCC80AMD64_AR                 := $(EXEC_X86_WIN32) $(PATH_TOOL_VCC80AMD64_BIN)/lib.exe /MACHINE:X64
 TOOL_VCC80AMD64_ARFLAGS            := -nologo
@@ -165,4 +168,28 @@
 
 
+## Compile resource source.
+# @param    $(target)   Normalized main target name.
+# @param    $(source)   Source filename (relative).
+# @param    $(obj)      Object file name. This shall be (re)created by the compilation.
+# @param    $(dep)      Dependcy file. This shall be (re)created by the compilation.
+# @param    $(flags)    Flags.
+# @param    $(defs)     Definitions. No -D or something.
+# @param    $(incs)     Includes. No -I or something.
+# @param    $(dirdep)   Directory creation dependency.
+# @param    $(deps)     Other dependencies.
+#
+# @param    $(outbase)  Output basename (full). Use this for list files and such.
+# @param    $(objsuff)  Object suffix.
+TOOL_VCC80AMD64_COMPILE_RC_OUTPUT =
+TOOL_VCC80AMD64_COMPILE_RC_DEPEND =
+TOOL_VCC80AMD64_COMPILE_RC_DEPORD =
+define TOOL_VCC80AMD64_COMPILE_RC_CMDS
+	$(TOOL_VCC80AMD64_RC) \
+		$(flags) $(addprefix /i, $(subst /,\\,$(incs))) $(addprefix /d, $(defs))\
+		/fo$(obj)\
+		$(subst /,\\,$(call ABSPATH,$(source)))
+endef
+
+
 ## Link library
 # @param    $(target)   Normalized main target name.
@@ -175,5 +202,5 @@
 # @param    $(outbase)  Output basename (full). Use this for list files and such.
 #
-TOOL_VCC80AMD64_LINK_LIBRARY_OUTPUT = $(outbase).lst $(outbase).exp $(call TOOL_VCC80AMD64_PDB, $(outbase),pdb)
+TOOL_VCC80AMD64_LINK_LIBRARY_OUTPUT = $(outbase).lst $(outbase).exp $(call TOOL_VCC80AMD64_PDB, $(outbase),pdb) $(outbase).pdb
 TOOL_VCC80AMD64_LINK_LIBRARY_DEPEND = $(othersrc)
 TOOL_VCC80AMD64_LINK_LIBRARY_DEPORD =
@@ -198,5 +225,5 @@
 # @param    $(outbase)      Output basename (full). Use this for list files and such.
 #
-TOOL_VCC80AMD64_LINK_PROGRAM_OUTPUT = $(outbase).map $(outbase).lib $(outbase).exp $(call TOOL_VCC80AMD64_PDB, $(outbase),pdb) $(outbase).ilk $(out).manifest
+TOOL_VCC80AMD64_LINK_PROGRAM_OUTPUT = $(outbase).map $(outbase).lib $(outbase).exp $(call TOOL_VCC80AMD64_PDB, $(outbase),pdb) $(outbase).pdb $(outbase).ilk $(out).manifest
 TOOL_VCC80AMD64_LINK_PROGRAM_DEPEND = $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(othersrc)
 TOOL_VCC80AMD64_LINK_PROGRAM_DEPORD =
@@ -231,5 +258,5 @@
 #
 # @param    $(outbase)  Output basename (full). Use this for list files and such.
-TOOL_VCC80AMD64_LINK_DLL_OUTPUT = $(outbase).map $(outbase).lib $(outbase).exp $(call TOOL_VCC80AMD64_PDB, $(outbase),pdb) $(outbase).ilk $(out).manifest
+TOOL_VCC80AMD64_LINK_DLL_OUTPUT = $(outbase).map $(outbase).lib $(outbase).exp $(call TOOL_VCC80AMD64_PDB, $(outbase),pdb) $(outbase).pdb $(outbase).ilk $(out).manifest
 TOOL_VCC80AMD64_LINK_DLL_DEPEND = $(objs) $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(othersrc)
 TOOL_VCC80AMD64_LINK_DLL_DEPORD = $(call DIRDEP,$(PATH_LIB))
@@ -271,5 +298,5 @@
 #
 # @param    $(outbase)  Output basename (full). Use this for list files and such.
-TOOL_VCC80AMD64_LINK_SYSMOD_OUTPUT = $(outbase).map $(outbase).lib $(outbase).exp $(call TOOL_VCC80AMD64_PDB, $(outbase),pdb) $(outbase).ilk $(out).manifest
+TOOL_VCC80AMD64_LINK_SYSMOD_OUTPUT = $(outbase).map $(outbase).lib $(outbase).exp $(call TOOL_VCC80AMD64_PDB, $(outbase),pdb) $(outbase).pdb $(outbase).ilk $(out).manifest
 TOOL_VCC80AMD64_LINK_SYSMOD_DEPEND = $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(othersrc)
 TOOL_VCC80AMD64_LINK_SYSMOD_DEPORD =
Index: /trunk/kBuild/tools/VCC80X86.kmk
===================================================================
--- /trunk/kBuild/tools/VCC80X86.kmk	(revision 640)
+++ /trunk/kBuild/tools/VCC80X86.kmk	(revision 641)
@@ -2,5 +2,5 @@
 ## @file
 #
-# kBuild Tool Config - Visual C++ 8.0 (aka Visual .NET 2005)
+# kBuild Tool Config - Visual C++ 8.0 (aka Visual .NET 2005, or MSC v14)
 #
 # Copyright (c) 2004-2006 knut st. osmundsen <bird-srcspam@anduin.net>
@@ -52,4 +52,7 @@
 TOOL_VCC80X86_ASOBJSUFF          := .obj
 
+TOOL_VCC80X86_RC                 := $(EXEC_X86_WIN32) $(PATH_TOOL_VCC80X86_BIN)/rc.exe
+TOOL_VCC80X86_RCOBJSUFF          := .res
+
 TOOL_VCC80X86_AR                 := $(EXEC_X86_WIN32) $(PATH_TOOL_VCC80X86_BIN)/lib.exe
 TOOL_VCC80X86_ARFLAGS            := -nologo
@@ -161,4 +164,28 @@
 
 
+## Compile resource source.
+# @param    $(target)   Normalized main target name.
+# @param    $(source)   Source filename (relative).
+# @param    $(obj)      Object file name. This shall be (re)created by the compilation.
+# @param    $(dep)      Dependcy file. This shall be (re)created by the compilation.
+# @param    $(flags)    Flags.
+# @param    $(defs)     Definitions. No -D or something.
+# @param    $(incs)     Includes. No -I or something.
+# @param    $(dirdep)   Directory creation dependency.
+# @param    $(deps)     Other dependencies.
+#
+# @param    $(outbase)  Output basename (full). Use this for list files and such.
+# @param    $(objsuff)  Object suffix.
+TOOL_VCC80X86_COMPILE_RC_OUTPUT =
+TOOL_VCC80X86_COMPILE_RC_DEPEND =
+TOOL_VCC80X86_COMPILE_RC_DEPORD =
+define TOOL_VCC80X86_COMPILE_RC_CMDS
+	$(TOOL_VCC80X86_RC) \
+		$(flags) $(addprefix /i, $(subst /,\\,$(incs))) $(addprefix /d, $(defs))\
+		/fo$(obj)\
+		$(subst /,\\,$(call ABSPATH,$(source)))
+endef
+
+
 ## Link library
 # @param    $(target)   Normalized main target name.
@@ -171,5 +198,5 @@
 # @param    $(outbase)  Output basename (full). Use this for list files and such.
 #
-TOOL_VCC80X86_LINK_LIBRARY_OUTPUT = $(outbase).lst $(outbase).exp $(call TOOL_VCC80X86_PDB, $(outbase),pdb)
+TOOL_VCC80X86_LINK_LIBRARY_OUTPUT = $(outbase).lst $(outbase).exp $(call TOOL_VCC80X86_PDB, $(outbase),pdb) $(outbase).pdb
 TOOL_VCC80X86_LINK_LIBRARY_DEPEND = $(othersrc)
 TOOL_VCC80X86_LINK_LIBRARY_DEPORD =
@@ -194,5 +221,5 @@
 # @param    $(outbase)      Output basename (full). Use this for list files and such.
 #
-TOOL_VCC80X86_LINK_PROGRAM_OUTPUT = $(outbase).map $(outbase).lib $(outbase).exp $(call TOOL_VCC80X86_PDB, $(outbase),pdb) $(outbase).ilk $(out).manifest
+TOOL_VCC80X86_LINK_PROGRAM_OUTPUT = $(outbase).map $(outbase).lib $(outbase).exp $(call TOOL_VCC80X86_PDB, $(outbase),pdb) $(outbase).pdb $(outbase).ilk $(out).manifest
 TOOL_VCC80X86_LINK_PROGRAM_DEPEND = $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(othersrc)
 TOOL_VCC80X86_LINK_PROGRAM_DEPORD =
@@ -227,5 +254,5 @@
 #
 # @param    $(outbase)  Output basename (full). Use this for list files and such.
-TOOL_VCC80X86_LINK_DLL_OUTPUT = $(outbase).map $(outbase).lib $(outbase).exp $(call TOOL_VCC80X86_PDB, $(outbase),pdb) $(outbase).ilk $(out).manifest
+TOOL_VCC80X86_LINK_DLL_OUTPUT = $(outbase).map $(outbase).lib $(outbase).exp $(call TOOL_VCC80X86_PDB, $(outbase),pdb) $(outbase).pdb $(outbase).ilk $(out).manifest
 TOOL_VCC80X86_LINK_DLL_DEPEND = $(objs) $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(othersrc)
 TOOL_VCC80X86_LINK_DLL_DEPORD = $(call DIRDEP,$(PATH_LIB))
@@ -267,5 +294,5 @@
 #
 # @param    $(outbase)  Output basename (full). Use this for list files and such.
-TOOL_VCC80X86_LINK_SYSMOD_OUTPUT = $(outbase).map $(outbase).lib $(outbase).exp $(call TOOL_VCC80X86_PDB, $(outbase),pdb) $(outbase).ilk $(out).manifest
+TOOL_VCC80X86_LINK_SYSMOD_OUTPUT = $(outbase).map $(outbase).lib $(outbase).exp $(call TOOL_VCC80X86_PDB, $(outbase),pdb) $(outbase).pdb $(outbase).ilk $(out).manifest
 TOOL_VCC80X86_LINK_SYSMOD_DEPEND = $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(othersrc)
 TOOL_VCC80X86_LINK_SYSMOD_DEPORD =
