summaryrefslogtreecommitdiff
path: root/kBuild
diff options
context:
space:
mode:
Diffstat (limited to 'kBuild')
-rw-r--r--kBuild/doc/QuickReference-kmk.html2
-rw-r--r--kBuild/header.kmk21
-rw-r--r--kBuild/sdks/ReorderCompilerIncs.kmk63
-rw-r--r--kBuild/sdks/WINDDK71.kmk107
-rw-r--r--kBuild/sdks/WINDDK71WLH.kmk47
-rw-r--r--kBuild/sdks/WINDDK71WNET.kmk47
-rw-r--r--kBuild/sdks/WINDDK71WXP.kmk43
-rw-r--r--kBuild/sdks/WINDDK80.kmk98
-rw-r--r--kBuild/sdks/WINDDK80W8.kmk46
-rw-r--r--kBuild/sdks/WINPSDK.kmk7
-rw-r--r--kBuild/sdks/WINPSDK71.kmk161
-rw-r--r--kBuild/sdks/WINPSDK71INCS.kmk90
-rw-r--r--kBuild/tools/JWASM.kmk63
-rw-r--r--kBuild/tools/MINGWW64.kmk273
-rw-r--r--kBuild/tools/OPENWATCOM-WL.kmk12
-rw-r--r--kBuild/tools/OPENWATCOM.kmk5
-rw-r--r--kBuild/tools/VCC100.kmk77
-rw-r--r--kBuild/tools/VCC100AMD64.kmk88
-rw-r--r--kBuild/tools/VCC100X86.kmk66
-rw-r--r--kBuild/tools/YASM.kmk28
20 files changed, 1268 insertions, 76 deletions
diff --git a/kBuild/doc/QuickReference-kmk.html b/kBuild/doc/QuickReference-kmk.html
index 3f56877..b6241b5 100644
--- a/kBuild/doc/QuickReference-kmk.html
+++ b/kBuild/doc/QuickReference-kmk.html
@@ -10,7 +10,7 @@
/*
:Author: David Goodger
:Contact: goodger@users.sourceforge.net
-:Date: $Date: 2009-04-18 14:05:47 +0200 (Sa, 18 Apr 2009) $
+:Date: $Date: 2009-04-18 08:05:47 -0400 (Sat, 18 Apr 2009) $
:Revision: $Revision: 2340 $
:Copyright: This stylesheet has been placed in the public domain.
diff --git a/kBuild/header.kmk b/kBuild/header.kmk
index a4f51f3..852c1a6 100644
--- a/kBuild/header.kmk
+++ b/kBuild/header.kmk
@@ -1,4 +1,4 @@
-# $Id: header.kmk 2577 2012-06-04 11:01:00Z bird $
+# $Id: header.kmk 2689 2013-07-11 21:31:43Z bird $
## @file
# kBuild - File included at top of a makefile.
#
@@ -79,7 +79,7 @@ endif
# The revision in which this file was last modified.
# This can be useful when using development versions of kBuild.
#
-KMK_REVISION := $(patsubst %:,, $Rev: 2577 $ )
+KMK_REVISION := $(patsubst %:,, $Rev: 2689 $ )
#
@@ -1276,10 +1276,17 @@ else if1of ($(KBUILD_TARGET), freebsd netbsd openbsd dragonfly)
KBUILD_LIB_SEARCH_SUBS := lib/
else ifeq ($(KBUILD_TARGET),linux)
- KBUILD_LIB_SEARCH_ROOTS := \
- / \
- /usr/ \
- /usr/local/
+ ifeq ($(realpath /bin),/usr/bin)
+ KBUILD_LIB_SEARCH_ROOTS := \
+ /usr/ \
+ / \
+ /usr/local/
+ else
+ KBUILD_LIB_SEARCH_ROOTS := \
+ / \
+ /usr/ \
+ /usr/local/
+ endif
ifeq ($(KBUILD_TARGET_ARCH),amd64)
KBUILD_LIB_SEARCH_SUBS := \
lib/x86_64-linux-gnu/ \
@@ -1562,6 +1569,6 @@ endif
# end-of-file-content
__header_kmk__ := 1
-endif # __header_kmk__
+endif # !__header_kmk__
diff --git a/kBuild/sdks/ReorderCompilerIncs.kmk b/kBuild/sdks/ReorderCompilerIncs.kmk
new file mode 100644
index 0000000..bf7aca5
--- /dev/null
+++ b/kBuild/sdks/ReorderCompilerIncs.kmk
@@ -0,0 +1,63 @@
+# $Id: ReorderCompilerIncs.kmk 2603 2012-07-12 20:26:28Z bird $
+## @file
+# kBuild SDK - Pseudo SDK that inserts the compiler includes a bit earlier.
+#
+# Note! This SDK is using a number of internal kBuild variables as well as
+# making assumptions about expansion order and location.
+# Please, do NOT attempt anything like this in your own SDKs!!
+#
+
+#
+# Copyright (c) 2006-2012 knut st. osmundsen <bird-kBuild-spamx@anduin.net>
+#
+# This file is part of kBuild.
+#
+# kBuild is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# kBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with kBuild; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+#
+# As a special exception you are granted permission to include this file, via
+# the kmk include directive, as you wish without this in itself causing the
+# resulting makefile, program or whatever to be covered by the GPL license.
+# This exception does not however invalidate any other reasons why the makefile,
+# program, whatever should not be covered the GPL.
+#
+#
+
+SDK_ReorderCompilerIncs := Pseudo SDK that inserts the compiler includes a bit earlier.
+
+FN_SDK_ReorderCompilerIncs_GET_INCS = \
+ $(TOOL_$(tool)_$(1)INCS.$(2).$(3).$(5)) \
+ $(TOOL_$(tool)_$(1)INCS.$(2).$(3)) \
+ $(TOOL_$(tool)_$(1)INCS.$(2).$(5)) \
+ $(TOOL_$(tool)_$(1)INCS.$(4)) \
+ $(TOOL_$(tool)_$(1)INCS.$(3)) \
+ $(TOOL_$(tool)_$(1)INCS.$(2)) \
+ $(TOOL_$(tool)_$(1)INCS.$(5)) \
+ $(TOOL_$(tool)_$(1)INCS) \
+ $(TOOL_$(tool)_INCS.$(2).$(3).$(5)) \
+ $(TOOL_$(tool)_INCS.$(2).$(3)) \
+ $(TOOL_$(tool)_INCS.$(2).$(5)) \
+ $(TOOL_$(tool)_INCS.$(4)) \
+ $(TOOL_$(tool)_INCS.$(3)) \
+ $(TOOL_$(tool)_INCS.$(2)) \
+ $(TOOL_$(tool)_INCS.$(5)) \
+ $(TOOL_$(tool)_INCS) \
+
+$(foreach os,$(KBUILD_OSES),$(foreach arch,$(KBUILD_ARCHES),$(foreach cat,$(KBUILD_COMPILE_CATEGTORIES) \
+ ,$(eval SDK_ReorderCompilerIncs_$(cat)INCS.$(os).$(arch) = \
+ $$(call FN_SDK_ReorderCompilerIncs_GET_INCS,CXX,win,amd64,$$(bld_trg_cpu),$$(bld_type))\
+ )\
+)))
+
diff --git a/kBuild/sdks/WINDDK71.kmk b/kBuild/sdks/WINDDK71.kmk
new file mode 100644
index 0000000..92f0f6c
--- /dev/null
+++ b/kBuild/sdks/WINDDK71.kmk
@@ -0,0 +1,107 @@
+# $Id: WINDDK71.kmk 2602 2012-07-12 20:21:45Z bird $
+## @file
+# kBuild SDK - The Microsoft Windows 7 DDK, v7.1.
+# Defaults to $(KBUILD_TARGET_ARCH). Base SDK.
+#
+
+#
+# Copyright (c) 2006-2012 knut st. osmundsen <bird-kBuild-spamx@anduin.net>
+#
+# This file is part of kBuild.
+#
+# kBuild is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# kBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with kBuild; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+#
+# As a special exception you are granted permission to include this file, via
+# the kmk include directive, as you wish without this in itself causing the
+# resulting makefile, program or whatever to be covered by the GPL license.
+# This exception does not however invalidate any other reasons why the makefile,
+# program, whatever should not be covered the GPL.
+#
+#
+
+SDK_WINDDK71 := The Microsoft Windows 7 DDK, v7.1. \
+ Defaults to $(KBUILD_TARGET_ARCH). Base SDK.
+
+# SDK Specific Properties
+ifndef PATH_SDK_WINDDK71
+ PATH_SDK_WINDDK71 := $(wildcard $(PATH_DEVTOOLS_TRG)/ddk/7600.16385.1*)
+ ifeq ($(PATH_SDK_WINDDK71),)
+ PATH_SDK_WINDDK71 := $(wildcard $(PATH_DEVTOOLS)/win.x86/ddk/7600.16385.1*)
+ endif
+ ifeq ($(PATH_SDK_WINDDK71),)
+ PATH_SDK_WINDDK71 := $(wildcard $(PATH_DEVTOOLS)/win.amd64/ddk/7600.16385.1*)
+ endif
+ ifeq ($(PATH_SDK_WINDDK71),)
+ ifeq ($(KBUILD_HOST),win)
+ PATH_SDK_WINDDK71 := $(wildcard C:/WinDDK/7600.16385.1*)
+ endif
+ endif
+ ifneq ($(PATH_SDK_WINDDK71),)
+ PATH_SDK_WINDDK71 := $(lastword $(sort $(PATH_SDK_WINDDK71)))
+ else
+ $(warning kBuild: PATH_SDK_WINDDK71 couldn't be determined!)
+ PATH_SDK_WINDDK71 := $(PATH_DEVTOOLS)/win.x86/ddk/7600.16385.1-not-found
+ endif
+else
+ # Resolve any fancy stuff once and for all.
+ PATH_SDK_WINDDK71 := $(PATH_SDK_WINDDK71)
+endif
+
+PATH_SDK_WINDDK71_INC ?= $(PATH_SDK_WINDDK71)/inc
+PATH_SDK_WINDDK71_INC_API ?= $(PATH_SDK_WINDDK71_INC)/api
+PATH_SDK_WINDDK71_INC_CRT ?= $(PATH_SDK_WINDDK71_INC)/crt
+PATH_SDK_WINDDK71_INC_DDK ?= $(PATH_SDK_WINDDK71_INC)/ddk
+
+PATH_SDK_WINDDK71_LIB_ROOT ?= $(PATH_SDK_WINDDK71)/lib
+PATH_SDK_WINDDK71_LIB_WLH_ROOT ?= $(PATH_SDK_WINDDK71_LIB_ROOT)/wlh
+PATH_SDK_WINDDK71_LIB_WNET_ROOT ?= $(PATH_SDK_WINDDK71_LIB_ROOT)/wnet
+PATH_SDK_WINDDK71_LIB_WXP_ROOT ?= $(PATH_SDK_WINDDK71_LIB_ROOT)/wxp
+PATH_SDK_WINDDK71_LIB_W2K_ROOT ?= $(PATH_SDK_WINDDK71_LIB_ROOT)/w2k
+PATH_SDK_WINDDK71_LIB_WDF_ROOT ?= $(PATH_SDK_WINDDK71_LIB_ROOT)/w2k
+
+PATH_SDK_WINDDK71_LIB_WLH.amd64 ?= $(PATH_SDK_WINDDK71_LIB_WLH_ROOT)/amd64
+PATH_SDK_WINDDK71_LIB_WLH.ia64 ?= $(PATH_SDK_WINDDK71_LIB_WLH_ROOT)/ia64
+PATH_SDK_WINDDK71_LIB_WLH.x86 ?= $(PATH_SDK_WINDDK71_LIB_WLH_ROOT)/i386
+PATH_SDK_WINDDK71_LIB_WLH ?= $(PATH_SDK_WINDDK71_LIB_WLH.$(KBUILD_TARGET_ARCH))
+
+PATH_SDK_WINDDK71_LIB_WNET.amd64?= $(PATH_SDK_WINDDK71_LIB_WNET_ROOT)/amd64
+PATH_SDK_WINDDK71_LIB_WNET.ia64 ?= $(PATH_SDK_WINDDK71_LIB_WNET_ROOT)/ia64
+PATH_SDK_WINDDK71_LIB_WNET.x86 ?= $(PATH_SDK_WINDDK71_LIB_WNET_ROOT)/i386
+PATH_SDK_WINDDK71_LIB_WNET ?= $(PATH_SDK_WINDDK71_LIB_WNET.$(KBUILD_TARGET_ARCH))
+
+PATH_SDK_WINDDK71_LIB_WXP.x86 ?= $(PATH_SDK_WINDDK71_LIB_WXP_ROOT)/i386
+PATH_SDK_WINDDK71_LIB_WXP ?= $(PATH_SDK_WINDDK71_LIB_WXP.$(KBUILD_TARGET_ARCH))
+
+PATH_SDK_WINDDK71_LIB_W2K.x86 ?= $(PATH_SDK_WINDDK71_LIB_W2K_ROOT)/i386
+PATH_SDK_WINDDK71_LIB_W2K ?= $(PATH_SDK_WINDDK71_LIB_W2K.$(KBUILD_TARGET_ARCH))
+
+PATH_SDK_WINDDK71_LIB.amd64 ?= $(PATH_SDK_WINDDK71_LIB_WLH.amd64)
+PATH_SDK_WINDDK71_LIB.ia64 ?= $(PATH_SDK_WINDDK71_LIB_WLH.ia64)
+PATH_SDK_WINDDK71_LIB.x86 ?= $(PATH_SDK_WINDDK71_LIB_WLH.x86)
+PATH_SDK_WINDDK71_LIB ?= $(PATH_SDK_WINDDK71_LIB.$(KBUILD_TARGET_ARCH))
+
+# General Properties used by kBuild
+SDK_WINDDK71_DEFS.amd64 ?= _AMD64_ AMD64 _WIN64
+SDK_WINDDK71_DEFS.ia64 ?= _IA64_=1 IA64=1 _WIN64 _MSC_EXTENSIONS
+SDK_WINDDK71_DEFS.x86 ?= _X86_=1 i386=1 STD_CALL
+SDK_WINDDK71_INCS ?= \
+ $(PATH_SDK_WINDDK71_INC_API) \
+ $(PATH_SDK_WINDDK71_INC_DDK)
+# The compiler tool(s) will have to select the appropriate crt includes.
+SDK_WINDDK71_LIBPATH.amd64 ?= $(PATH_SDK_WINDDK71_LIB_WLH.amd64)
+SDK_WINDDK71_LIBPATH.ia64 ?= $(PATH_SDK_WINDDK71_LIB_WLH.ia64)
+SDK_WINDDK71_LIBPATH.x86 ?= $(PATH_SDK_WINDDK71_LIB_WLH.x86)
+
diff --git a/kBuild/sdks/WINDDK71WLH.kmk b/kBuild/sdks/WINDDK71WLH.kmk
new file mode 100644
index 0000000..3b7e452
--- /dev/null
+++ b/kBuild/sdks/WINDDK71WLH.kmk
@@ -0,0 +1,47 @@
+# $Id: WINDDK71WLH.kmk 2602 2012-07-12 20:21:45Z bird $
+## @file
+# kBuild SDK - The Microsoft Windows 7 DDKs, v7.1, Targeting Vista and 2008 (KBUILD_TARGET_ARCH).
+#
+
+#
+# Copyright (c) 2006-2012 knut st. osmundsen <bird-kBuild-spamx@anduin.net>
+#
+# This file is part of kBuild.
+#
+# kBuild is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# kBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with kBuild; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+#
+# As a special exception you are granted permission to include this file, via
+# the kmk include directive, as you wish without this in itself causing the
+# resulting makefile, program or whatever to be covered by the GPL license.
+# This exception does not however invalidate any other reasons why the makefile,
+# program, whatever should not be covered the GPL.
+#
+#
+
+SDK_WINDDK71WLH := The Microsoft Windows 7 DDKs, v7.1, Targeting Vista and 2008 (KBUILD_TARGET_ARCH).
+SDK_WINDDK71WLH_EXTENDS = WINDDK71
+SDK_WINDDK71WLH_DEFS ?= WIN32=100 _WIN32_WINNT=0x0600 WINVER=0x0600 _WIN32_IE=0x0700 NTDDI_VERSION=0x06000000 KMDF_MAJOR_VERSION=01 KMDF_MINOR_VERSION=005
+SDK_WINDDK71WLH_LIBPATH.amd64 ?= $(PATH_SDK_WINDDK71_LIB_WLH.amd64)
+SDK_WINDDK71WLH_LIBPATH.ia64 ?= $(PATH_SDK_WINDDK71_LIB_WLH.ia64)
+SDK_WINDDK71WLH_LIBPATH.x86 ?= $(PATH_SDK_WINDDK71_LIB_WLH.x86)
+
+# SDK Specific Properties.
+# Note! extends the WINDDK71 sdk, so use those variables where ever possible
+PATH_SDK_WINDDK71WLH_LIB.amd64?= $(PATH_SDK_WINDDK71_LIB_WLH.amd64)
+PATH_SDK_WINDDK71WLH_LIB.ia64 ?= $(PATH_SDK_WINDDK71_LIB_WLH.ia64)
+PATH_SDK_WINDDK71WLH_LIB.x86 ?= $(PATH_SDK_WINDDK71_LIB_WLH.x86)
+PATH_SDK_WINDDK71WLH_LIB ?= $(PATH_SDK_WINDDK71WLH_LIB.$(KBUILD_TARGET_ARCH))
+
diff --git a/kBuild/sdks/WINDDK71WNET.kmk b/kBuild/sdks/WINDDK71WNET.kmk
new file mode 100644
index 0000000..df02cab
--- /dev/null
+++ b/kBuild/sdks/WINDDK71WNET.kmk
@@ -0,0 +1,47 @@
+# $Id: WINDDK71WNET.kmk 2602 2012-07-12 20:21:45Z bird $
+## @file
+# kBuild SDK - The Microsoft Windows 7 DDKs, v7.1, Targeting Windows Server 2003 (KBUILD_TARGET_ARCH).
+#
+
+#
+# Copyright (c) 2006-2012 knut st. osmundsen <bird-kBuild-spamx@anduin.net>
+#
+# This file is part of kBuild.
+#
+# kBuild is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# kBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with kBuild; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+#
+# As a special exception you are granted permission to include this file, via
+# the kmk include directive, as you wish without this in itself causing the
+# resulting makefile, program or whatever to be covered by the GPL license.
+# This exception does not however invalidate any other reasons why the makefile,
+# program, whatever should not be covered the GPL.
+#
+#
+
+SDK_WINDDK71WNET := The Microsoft Windows 7 DDKs, v7.1, Targeting Windows Server 2003 (KBUILD_TARGET_ARCH).
+SDK_WINDDK71WNET_EXTENDS = WINDDK71
+SDK_WINDDK71WNET_DEFS ?= WIN32=100 _WIN32_WINNT=0x0502 WINVER=0x0502 _WIN32_IE=0x0603 NTDDI_VERSION=0x05020100
+SDK_WINDDK71WNET_LIBPATH.amd64 ?= $(PATH_SDK_WINDDK71_LIB_WNET.amd64)
+SDK_WINDDK71WNET_LIBPATH.ia64 ?= $(PATH_SDK_WINDDK71_LIB_WNET.ia64)
+SDK_WINDDK71WNET_LIBPATH.x86 ?= $(PATH_SDK_WINDDK71_LIB_WNET.x86)
+
+# SDK Specific Properties.
+# Note! extends the WINDDK71 sdk, so use those variables where ever possible
+PATH_SDK_WINDDK71WNET_LIB.amd64?= $(PATH_SDK_WINDDK71_LIB_WNET.amd64)
+PATH_SDK_WINDDK71WNET_LIB.ia64 ?= $(PATH_SDK_WINDDK71_LIB_WNET.ia64)
+PATH_SDK_WINDDK71WNET_LIB.x86 ?= $(PATH_SDK_WINDDK71_LIB_WNET.x86)
+PATH_SDK_WINDDK71WNET_LIB ?= $(PATH_SDK_WINDDK71WNET_LIB.$(KBUILD_TARGET_ARCH))
+
diff --git a/kBuild/sdks/WINDDK71WXP.kmk b/kBuild/sdks/WINDDK71WXP.kmk
new file mode 100644
index 0000000..42a4f73
--- /dev/null
+++ b/kBuild/sdks/WINDDK71WXP.kmk
@@ -0,0 +1,43 @@
+# $Id: WINDDK71WXP.kmk 2602 2012-07-12 20:21:45Z bird $
+## @file
+# kBuild SDK - The Microsoft Windows 7 DDK, v7.1, Targeting Windows XP (x86).
+#
+
+#
+# Copyright (c) 2006-2012 knut st. osmundsen <bird-kBuild-spamx@anduin.net>
+#
+# This file is part of kBuild.
+#
+# kBuild is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# kBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with kBuild; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+#
+# As a special exception you are granted permission to include this file, via
+# the kmk include directive, as you wish without this in itself causing the
+# resulting makefile, program or whatever to be covered by the GPL license.
+# This exception does not however invalidate any other reasons why the makefile,
+# program, whatever should not be covered the GPL.
+#
+#
+
+SDK_WINDDK71WXP := The Microsoft Windows 7 DDK, v7.1, Targeting Windows XP (x86).
+SDK_WINDDK71WXP_EXTENDS = WINDDK71
+SDK_WINDDK71WXP_DEFS ?= WIN32=100 _WIN32_WINNT=0x0501 WINVER=0x0501 _WIN32_IE=0x0603 NTDDI_VERSION=0x05010200
+SDK_WINDDK71WXP_LIBPATH.x86 ?= $(PATH_SDK_WINDDK71_LIB_WXP.x86)
+
+# SDK Specific Properties.
+# Note! extends the WINDDK71 sdk, so use those variables where ever possible
+PATH_SDK_WINDDK71WXP_LIB.x86 ?= $(PATH_SDK_WINDDK71_LIB_WXP.x86)
+PATH_SDK_WINDDK71WXP_LIB ?= $(PATH_SDK_WINDDK71WXP_LIB.x86)
+
diff --git a/kBuild/sdks/WINDDK80.kmk b/kBuild/sdks/WINDDK80.kmk
new file mode 100644
index 0000000..69acd16
--- /dev/null
+++ b/kBuild/sdks/WINDDK80.kmk
@@ -0,0 +1,98 @@
+# $Id: WINDDK80.kmk 2607 2012-07-20 12:12:58Z bird $
+## @file
+# kBuild SDK - The Microsoft Windows 8 DDK.
+# Defaults to $(KBUILD_TARGET_ARCH). Base SDK.
+#
+
+#
+# Copyright (c) 2006-2012 knut st. osmundsen <bird-kBuild-spamx@anduin.net>
+#
+# This file is part of kBuild.
+#
+# kBuild is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# kBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with kBuild; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+#
+# As a special exception you are granted permission to include this file, via
+# the kmk include directive, as you wish without this in itself causing the
+# resulting makefile, program or whatever to be covered by the GPL license.
+# This exception does not however invalidate any other reasons why the makefile,
+# program, whatever should not be covered the GPL.
+#
+#
+
+SDK_WINDDK80 := The Microsoft Windows 8 DDK. \
+ Defaults to $(KBUILD_TARGET_ARCH). Base SDK.
+
+# SDK Specific Properties
+ifndef PATH_SDK_WINDDK80
+ PATH_SDK_WINDDK80 := $(wildcard $(PATH_DEVTOOLS_TRG)/ddk/v8*)
+ ifeq ($(PATH_SDK_WINDDK80),)
+ PATH_SDK_WINDDK80 := $(wildcard $(PATH_DEVTOOLS)/win.x86/ddk/v8*)
+ endif
+ ifeq ($(PATH_SDK_WINDDK80),)
+ PATH_SDK_WINDDK80 := $(wildcard $(PATH_DEVTOOLS)/win.amd64/ddk/v8*)
+ endif
+ ifneq ($(PATH_SDK_WINDDK80),)
+ PATH_SDK_WINDDK80 := $(lastword $(sort $(PATH_SDK_WINDDK80)))
+ else
+ $(warning kBuild: PATH_SDK_WINDDK80 couldn't be determined!)
+ PATH_SDK_WINDDK80 := $(PATH_DEVTOOLS)/win.x86/ddk/v8.0/not/found
+ endif
+else
+ # Resolve any fancy stuff once and for all.
+ PATH_SDK_WINDDK80 := $(PATH_SDK_WINDDK80)
+endif
+
+PATH_SDK_WINDDK80_INC ?= $(PATH_SDK_WINDDK80)/Include
+PATH_SDK_WINDDK80_INC_UM ?= $(PATH_SDK_WINDDK80_INC)/um
+PATH_SDK_WINDDK80_INC_KM ?= $(PATH_SDK_WINDDK80_INC)/km
+PATH_SDK_WINDDK80_INC_KM_CRT ?= $(PATH_SDK_WINDDK80_INC_KM)/crt
+PATH_SDK_WINDDK80_INC_SHARED ?= $(PATH_SDK_WINDDK80_INC)/Shared
+
+PATH_SDK_WINDDK80_LIB_ROOT ?= $(PATH_SDK_WINDDK80)/Lib
+PATH_SDK_WINDDK80_LIB_W8_ROOT ?= $(PATH_SDK_WINDDK80_LIB_ROOT)/win8
+PATH_SDK_WINDDK80_LIB_W7_ROOT ?= $(PATH_SDK_WINDDK80_LIB_ROOT)/win7
+PATH_SDK_WINDDK80_LIB_WLH_ROOT ?= $(PATH_SDK_WINDDK80_LIB_ROOT)/wlh
+PATH_SDK_WINDDK80_LIB_WDF_ROOT ?= $(PATH_SDK_WINDDK80_LIB_ROOT)/wdf
+PATH_SDK_WINDDK80_LIB_MFC_ROOT ?= $(PATH_SDK_WINDDK80_LIB_ROOT)/Mfc
+PATH_SDK_WINDDK80_LIB_ATL_ROOT ?= $(PATH_SDK_WINDDK80_LIB_ROOT)/Atl
+
+PATH_SDK_WINDDK80_LIB_W8.amd64 ?= $(PATH_SDK_WINDDK80_LIB_W8_ROOT)/km/x64
+PATH_SDK_WINDDK80_LIB_W8.x86 ?= $(PATH_SDK_WINDDK80_LIB_W8_ROOT)/km/x86
+PATH_SDK_WINDDK80_LIB_W8 ?= $(PATH_SDK_WINDDK80_LIB_W8.$(KBUILD_TARGET_ARCH))
+
+PATH_SDK_WINDDK80_LIB_W7.amd64 ?= $(PATH_SDK_WINDDK80_LIB_W7_ROOT)/km/x64
+PATH_SDK_WINDDK80_LIB_W7.x86 ?= $(PATH_SDK_WINDDK80_LIB_W7_ROOT)/km/x86
+PATH_SDK_WINDDK80_LIB_W7 ?= $(PATH_SDK_WINDDK80_LIB_W7.$(KBUILD_TARGET_ARCH))
+
+PATH_SDK_WINDDK80_LIB_WLH.amd64 ?= $(PATH_SDK_WINDDK80_LIB_WLH_ROOT)/km/x64
+PATH_SDK_WINDDK80_LIB_WLH.x86 ?= $(PATH_SDK_WINDDK80_LIB_WLH_ROOT)/km/x86
+PATH_SDK_WINDDK80_LIB_WLH ?= $(PATH_SDK_WINDDK80_LIB_WLH.$(KBUILD_TARGET_ARCH))
+
+PATH_SDK_WINDDK80_LIB.amd64 ?= $(PATH_SDK_WINDDK80_LIB_WLH.amd64)
+PATH_SDK_WINDDK80_LIB.x86 ?= $(PATH_SDK_WINDDK80_LIB_WLH.x86)
+PATH_SDK_WINDDK80_LIB ?= $(PATH_SDK_WINDDK80_LIB.$(KBUILD_TARGET_ARCH))
+
+# General Properties used by kBuild
+SDK_WINDDK80_DEFS.amd64 ?= _AMD64_ AMD64 _WIN64
+SDK_WINDDK80_DEFS.x86 ?= _X86_=1 i386=1 STD_CALL
+SDK_WINDDK80_INCS ?= \
+ $(PATH_SDK_WINDDK80_INC_KM) \
+ $(PATH_SDK_WINDDK80_INC_UM) \
+ $(PATH_SDK_WINDDK80_INC_SHARED) \
+# The compiler tool(s) will have to select the appropriate crt includes.
+SDK_WINDDK80_LIBPATH.amd64 ?= $(PATH_SDK_WINDDK80_LIB_WLH.amd64)
+SDK_WINDDK80_LIBPATH.x86 ?= $(PATH_SDK_WINDDK80_LIB_WLH.x86)
+
diff --git a/kBuild/sdks/WINDDK80W8.kmk b/kBuild/sdks/WINDDK80W8.kmk
new file mode 100644
index 0000000..24e48f8
--- /dev/null
+++ b/kBuild/sdks/WINDDK80W8.kmk
@@ -0,0 +1,46 @@
+# $Id: WINDDK80W8.kmk 2607 2012-07-20 12:12:58Z bird $
+## @file
+# kBuild SDK - The Microsoft Windows 8 DDKs, Targeting Windows 8 (KBUILD_TARGET_ARCH).
+#
+
+#
+# Copyright (c) 2006-2012 knut st. osmundsen <bird-kBuild-spamx@anduin.net>
+#
+# This file is part of kBuild.
+#
+# kBuild is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# kBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with kBuild; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+#
+# As a special exception you are granted permission to include this file, via
+# the kmk include directive, as you wish without this in itself causing the
+# resulting makefile, program or whatever to be covered by the GPL license.
+# This exception does not however invalidate any other reasons why the makefile,
+# program, whatever should not be covered the GPL.
+#
+#
+
+SDK_WINDDK80W8 := The Microsoft Windows 8 DDKs, Targeting Windows 8 (KBUILD_TARGET_ARCH).
+SDK_WINDDK80W8_EXTENDS = WINDDK80
+SDK_WINDDK80W8_DEFS ?= WIN32=100 _WIN32_WINNT=0x0602 WINVER=0x0602 _WIN32_IE=0x0A00 NTDDI_VERSION=0x06020000 \
+ KMDF_MAJOR_VERSION=01 KMDF_MINOR_VERSION=005
+SDK_WINDDK80W8_LIBPATH.amd64 ?= $(PATH_SDK_WINDDK80_LIB_W8.amd64)
+SDK_WINDDK80W8_LIBPATH.x86 ?= $(PATH_SDK_WINDDK80_LIB_W8.x86)
+
+# SDK Specific Properties.
+# Note! extends the WINDDK80 sdk, so use those variables where ever possible
+PATH_SDK_WINDDK80W8_LIB.amd64?= $(PATH_SDK_WINDDK80_LIB_W8.amd64)
+PATH_SDK_WINDDK80W8_LIB.x86 ?= $(PATH_SDK_WINDDK80_LIB_W8.x86)
+PATH_SDK_WINDDK80W8_LIB ?= $(PATH_SDK_WINDDK80W8_LIB.$(KBUILD_TARGET_ARCH))
+
diff --git a/kBuild/sdks/WINPSDK.kmk b/kBuild/sdks/WINPSDK.kmk
index 21ef6f6..e357676 100644
--- a/kBuild/sdks/WINPSDK.kmk
+++ b/kBuild/sdks/WINPSDK.kmk
@@ -1,10 +1,10 @@
-# $Id: WINPSDK.kmk 2430 2010-11-16 15:26:34Z bird $
+# $Id: WINPSDK.kmk 2602 2012-07-12 20:21:45Z bird $
## @file
# kBuild SDK - The Windows Platform SDK, targeting (KBUILD_TARGET).
#
#
-# Copyright (c) 2006-2010 knut st. osmundsen <bird-kBuild-spamx@anduin.net>
+# Copyright (c) 2006-2012 knut st. osmundsen <bird-kBuild-spamx@anduin.net>
#
# This file is part of kBuild.
#
@@ -43,9 +43,6 @@ ifndef PATH_SDK_WINPSDK
PATH_SDK_WINPSDK := $(wildcard $(PATH_DEVTOOLS)/win.x86/sdk/2*)
endif
ifeq ($(PATH_SDK_WINPSDK),)
- PATH_SDK_WINPSDK := $(wildcard $(PATH_DEVTOOLS)/x86.win32/sdk/2*)
- endif
- ifeq ($(PATH_SDK_WINPSDK),)
PATH_SDK_WINPSDK := $(wildcard $(PATH_DEVTOOLS)/win.amd64/sdk/2*)
endif
ifneq ($(PATH_SDK_WINPSDK),)
diff --git a/kBuild/sdks/WINPSDK71.kmk b/kBuild/sdks/WINPSDK71.kmk
new file mode 100644
index 0000000..f030435
--- /dev/null
+++ b/kBuild/sdks/WINPSDK71.kmk
@@ -0,0 +1,161 @@
+# $Id: WINPSDK71.kmk 2602 2012-07-12 20:21:45Z bird $
+## @file
+# kBuild SDK - The Windows Platform SDK v7.1, targeting (KBUILD_TARGET).
+#
+
+#
+# Copyright (c) 2006-2012 knut st. osmundsen <bird-kBuild-spamx@anduin.net>
+#
+# This file is part of kBuild.
+#
+# kBuild is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# kBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with kBuild; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+#
+# As a special exception you are granted permission to include this file, via
+# the kmk include directive, as you wish without this in itself causing the
+# resulting makefile, program or whatever to be covered by the GPL license.
+# This exception does not however invalidate any other reasons why the makefile,
+# program, whatever should not be covered the GPL.
+#
+#
+
+SDK_WINPSDK71 := The Windows Platform SDK v7.1, targeting (KBUILD_TARGET).
+
+# SDK Specific Properties
+ifndef PATH_SDK_WINPSDK71
+ PATH_SDK_WINPSDK71 := $(wildcard $(PATH_DEVTOOLS_BLD)/sdk/v7.1*)
+ ifeq ($(PATH_SDK_WINPSDK71),)
+ PATH_SDK_WINPSDK71 := $(wildcard $(PATH_DEVTOOLS_TRG)/sdk/v7.1*)
+ endif
+ ifeq ($(PATH_SDK_WINPSDK71),)
+ PATH_SDK_WINPSDK71 := $(wildcard $(PATH_DEVTOOLS)/win.x86/sdk/v7.1*)
+ endif
+ ifeq ($(PATH_SDK_WINPSDK71),)
+ PATH_SDK_WINPSDK71 := $(wildcard $(PATH_DEVTOOLS)/win.amd64/sdk/v7.1*)
+ endif
+ ifneq ($(PATH_SDK_WINPSDK71),)
+ PATH_SDK_WINPSDK71 := $(lastword $(sort $(PATH_SDK_WINPSDK71)))
+ else
+ $(warning kBuild: PATH_SDK_WINPSDK71 couldn't be determined!)
+ PATH_SDK_WINPSDK71 := $(PATH_DEVTOOLS_BLD)/sdk/v7.1-not-found
+ endif
+else
+ PATH_SDK_WINPSDK71 := $(PATH_SDK_WINPSDK71)
+endif
+
+ifndef PATH_SDK_WINPSDK71_INC
+PATH_SDK_WINPSDK71_INC := $(firstword $(wildcard $(PATH_SDK_WINPSDK71)/[Ii][Nn][Cc][Ll][Uu][Dd][Ee]) $(PATH_SDK_WINPSDK71)/Include)
+endif
+
+ifndef PATH_SDK_WINPSDK71_LIB.x86
+PATH_SDK_WINPSDK71_LIB.x86 := $(firstword $(wildcard $(PATH_SDK_WINPSDK71)/[Ll][Ii][Bb]) $(PATH_SDK_WINPSDK71)/Lib)
+endif
+ifndef PATH_SDK_WINPSDK71_LIB.amd64
+PATH_SDK_WINPSDK71_LIB.amd64 := $(firstword $(wildcard $(PATH_SDK_WINPSDK71)/[Ll][Ii][Bb]/[Aa][Mm][Dd]64 $(PATH_SDK_WINPSDK71)/[Ll][Ii][Bb]/[xX]64) $(PATH_SDK_WINPSDK71)/Lib/AMD64)
+endif
+ifndef PATH_SDK_WINPSDK71_LIB.ia64
+PATH_SDK_WINPSDK71_LIB.ia64 := $(firstword $(wildcard $(PATH_SDK_WINPSDK71)/[Ll][Ii][Bb]/[Ii][Aa]64) $(PATH_SDK_WINPSDK71)/Lib/IA64)
+endif
+PATH_SDK_WINPSDK71_LIB ?= $(PATH_SDK_WINPSDK71_LIB.$(KBUILD_TARGET_ARCH))
+
+ifndef PATH_SDK_WINPSDK71_BIN
+PATH_SDK_WINPSDK71_BIN := $(firstword $(wildcard $(PATH_SDK_WINPSDK71)/[Bb][Ii][Nn]) $(PATH_SDK_WINPSDK71)/Bin)
+endif
+ifndef PATH_SDK_WINPSDK71_BIN_AMD64
+PATH_SDK_WINPSDK71_BIN_AMD64 := $(firstword $(wildcard $(PATH_SDK_WINPSDK71_BIN)/[Ww][Ii][Nn]64/[Xx]86/[Aa][Mm][Dd]64 $(PATH_SDK_WINPSDK71_BIN)/[Ww][Ii][Nn]64/[Xx]86) $(PATH_SDK_WINPSDK71_BIN)/win64/AMD64)
+endif
+ifndef PATH_SDK_WINPSDK71_BIN_IA64
+PATH_SDK_WINPSDK71_BIN_IA64 := $(firstword $(wildcard $(PATH_SDK_WINPSDK71_BIN)/[Ww][Ii][Nn]64) $(PATH_SDK_WINPSDK71_BIN)/win64)
+endif
+
+
+# General Properties used by kBuild
+SDK_WINPSDK71_INCS ?= $(PATH_SDK_WINPSDK71_INC)
+SDK_WINPSDK71_LIBPATH.x86 ?= $(PATH_SDK_WINPSDK71_LIB.x86)
+SDK_WINPSDK71_LIBPATH.amd64 ?= $(PATH_SDK_WINPSDK71_LIB.amd64)
+SDK_WINPSDK71_LIBPATH.ia64 ?= $(PATH_SDK_WINPSDK71_LIB.ia64)
+SDK_WINPSDK71_LIBS.x86 ?= \
+ $(PATH_SDK_WINPSDK71_LIB.x86)/Kernel32.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.x86)/User32.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.x86)/Gdi32.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.x86)/AdvAPI32.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.x86)/Shell32.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.x86)/ShLwApi.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.x86)/SetupAPI.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.x86)/Uuid.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.x86)/Version.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.x86)/WS2_32.Lib \
+ \
+ $(PATH_SDK_WINPSDK71_LIB.x86)/Ole32.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.x86)/OleAut32.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.x86)/OleDlg.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.x86)/RpcRT4.Lib \
+ \
+ $(PATH_SDK_WINPSDK71_LIB.x86)/DbgHelp.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.x86)/ImageHlp.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.x86)/IPHlpApi.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.x86)/ComCtl32.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.x86)/ComDlg32.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.x86)/WinSpool.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.x86)/WinMM.Lib
+SDK_WINPSDK71_LIBS.amd64 ?= \
+ $(PATH_SDK_WINPSDK71_LIB.amd64)/Kernel32.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.amd64)/User32.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.amd64)/Gdi32.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.amd64)/AdvAPI32.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.amd64)/Shell32.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.amd64)/ShLwApi.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.amd64)/SetupAPI.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.amd64)/Uuid.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.amd64)/Version.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.amd64)/WS2_32.Lib \
+ \
+ $(PATH_SDK_WINPSDK71_LIB.amd64)/Ole32.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.amd64)/OleAut32.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.amd64)/OleDlg.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.amd64)/RpcRT4.Lib \
+ \
+ $(PATH_SDK_WINPSDK71_LIB.amd64)/DbgHelp.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.amd64)/ImageHlp.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.amd64)/IPHlpApi.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.amd64)/ComCtl32.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.amd64)/ComDlg32.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.amd64)/WinSpool.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.amd64)/WinMM.Lib
+SDK_WINPSDK71_LIBS.ia64 ?= \
+ $(PATH_SDK_WINPSDK71_LIB.ia64)/Kernel32.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.ia64)/User32.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.ia64)/Gdi32.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.ia64)/AdvAPI32.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.ia64)/Shell32.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.ia64)/ShLwApi.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.ia64)/SetupAPI.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.ia64)/Uuid.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.ia64)/Version.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.ia64)/WS2_32.Lib \
+ \
+ $(PATH_SDK_WINPSDK71_LIB.ia64)/Ole32.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.ia64)/OleAut32.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.ia64)/OleDlg.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.ia64)/RpcRT4.Lib \
+ \
+ $(PATH_SDK_WINPSDK71_LIB.ia64)/DbgHelp.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.ia64)/ImageHlp.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.ia64)/IPHlpApi.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.ia64)/ComCtl32.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.ia64)/ComDlg32.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.ia64)/WinSpool.Lib \
+ $(PATH_SDK_WINPSDK71_LIB.ia64)/WinMM.Lib
+
diff --git a/kBuild/sdks/WINPSDK71INCS.kmk b/kBuild/sdks/WINPSDK71INCS.kmk
new file mode 100644
index 0000000..4edf170
--- /dev/null
+++ b/kBuild/sdks/WINPSDK71INCS.kmk
@@ -0,0 +1,90 @@
+# $Id: WINPSDK71INCS.kmk 2602 2012-07-12 20:21:45Z bird $
+## @file
+# kBuild SDK - The Windows Platform SDK v7.1, targeting (KBUILD_TARGET) but
+# without any libraries or LIBPATH properties.
+# Basically for finding specstrings.h when using the DDK.
+#
+
+#
+# Copyright (c) 2006-2012 knut st. osmundsen <bird-kBuild-spamx@anduin.net>
+#
+# This file is part of kBuild.
+#
+# kBuild is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# kBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with kBuild; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+#
+# As a special exception you are granted permission to include this file, via
+# the kmk include directive, as you wish without this in itself causing the
+# resulting makefile, program or whatever to be covered by the GPL license.
+# This exception does not however invalidate any other reasons why the makefile,
+# program, whatever should not be covered the GPL.
+#
+#
+
+SDK_WINPSDK71INCS := The Windows Platform SDK v7.1, targeting (KBUILD_TARGET) but \
+ without any library or LIBPATH properties. \
+ Basically for finding specstrings.h when using the DDK.
+
+# SDK Specific Properties
+ifndef PATH_SDK_WINPSDK71INCS
+ ifdef PATH_SDK_WINPSDK71
+ PATH_SDK_WINPSDK71INCS := $(PATH_SDK_WINPSDK71)
+ else
+ PATH_SDK_WINPSDK71INCS := $(wildcard $(PATH_DEVTOOLS_BLD)/sdk/v7.1*)
+ ifeq ($(PATH_SDK_WINPSDK71INCS),)
+ PATH_SDK_WINPSDK71INCS := $(wildcard $(PATH_DEVTOOLS_TRG)/sdk/v7.1*)
+ endif
+ ifeq ($(PATH_SDK_WINPSDK71INCS),)
+ PATH_SDK_WINPSDK71INCS := $(wildcard $(PATH_DEVTOOLS)/win.x86/sdk/v7.1*)
+ endif
+ ifeq ($(PATH_SDK_WINPSDK71INCS),)
+ PATH_SDK_WINPSDK71INCS := $(wildcard $(PATH_DEVTOOLS)/win.amd64/sdk/v7.1*)
+ endif
+ ifneq ($(PATH_SDK_WINPSDK71INCS),)
+ PATH_SDK_WINPSDK71INCS := $(lastword $(sort $(PATH_SDK_WINPSDK71INCS)))
+ else
+ $(warning kBuild: PATH_SDK_WINPSDK71INCS couldn't be determined!)
+ PATH_SDK_WINPSDK71INCS := $(PATH_DEVTOOLS_BLD)/sdk/v7.1-not-found
+ endif
+ endif
+else
+ PATH_SDK_WINPSDK71INCS := $(PATH_SDK_WINPSDK71INCS)
+endif
+ifndef PATH_SDK_WINPSDK71INCS_INC
+PATH_SDK_WINPSDK71INCS_INC := $(firstword $(wildcard $(PATH_SDK_WINPSDK71INCS)/[Ii][Nn][Cc][Ll][Uu][Dd][Ee]) $(PATH_SDK_WINPSDK71INCS)/Include)
+endif
+
+ifndef PATH_SDK_WINPSDK71INCS_LIB.x86
+PATH_SDK_WINPSDK71INCS_LIB.x86 := $(firstword $(wildcard $(PATH_SDK_WINPSDK71INCS)/[Ll][Ii][Bb]) $(PATH_SDK_WINPSDK71INCS)/Lib)
+endif
+ifndef PATH_SDK_WINPSDK71INCS_LIB.amd64
+PATH_SDK_WINPSDK71INCS_LIB.amd64 := $(firstword $(wildcard $(PATH_SDK_WINPSDK71INCS)/[Ll][Ii][Bb]/[Aa][Mm][Dd]64) $(PATH_SDK_WINPSDK71INCS)/Lib/AMD64)
+endif
+PATH_SDK_WINPSDK71INCS_LIB ?= $(PATH_SDK_WINPSDK71INCS_LIB.$(KBUILD_TARGET_ARCH))
+
+ifndef PATH_SDK_WINPSDK71INCS_BIN
+PATH_SDK_WINPSDK71INCS_BIN := $(firstword $(wildcard $(PATH_SDK_WINPSDK71INCS)/[Bb][Ii][Nn]) $(PATH_SDK_WINPSDK71INCS)/Bin)
+endif
+ifndef PATH_SDK_WINPSDK71INCS_BIN_AMD64
+PATH_SDK_WINPSDK71INCS_BIN_AMD64 := $(firstword $(wildcard $(PATH_SDK_WINPSDK71INCS_BIN)/[Ww][Ii][Nn]64/[Xx]86/[Aa][Mm][Dd]64) $(PATH_SDK_WINPSDK71INCS_BIN)/win64/AMD64)
+endif
+ifndef PATH_SDK_WINPSDK71INCS_BIN_IA64
+PATH_SDK_WINPSDK71INCS_BIN_IA64 := $(firstword $(wildcard $(PATH_SDK_WINPSDK71INCS_BIN)/[Ww][Ii][Nn]64) $(PATH_SDK_WINPSDK71INCS_BIN)/win64)
+endif
+
+
+# General Properties used by kBuild
+SDK_WINPSDK71INCS_INCS ?= $(PATH_SDK_WINPSDK71INCS_INC)
+
diff --git a/kBuild/tools/JWASM.kmk b/kBuild/tools/JWASM.kmk
new file mode 100644
index 0000000..748b7d2
--- /dev/null
+++ b/kBuild/tools/JWASM.kmk
@@ -0,0 +1,63 @@
+# $Id: JWASM.kmk 2578 2012-06-07 00:08:22Z bird $
+## @file
+# kBuild Tool Config - JWasm
+#
+
+#
+# Copyright (c) 2012 knut st. osmundsen <bird-kBuild-spamx@anduin.net>
+#
+# This file is part of kBuild.
+#
+# kBuild is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# kBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with kBuild; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+#
+# As a special exception you are granted permission to include this file, via
+# the kmk include directive, as you wish without this in itself causing the
+# resulting makefile, program or whatever to be covered by the GPL license.
+# This exception does not however invalidate any other reasons why the makefile,
+# program, whatever should not be covered the GPL.
+#
+#
+
+
+TOOL_JWASM := JWasm - MASM clone based on the Open Watcom assembler.
+
+# Tool Specific Properties
+ifndef TOOL_JWASM_AS
+ TOOL_JWASM_AS := $(firstword $(rsort $(wildcard $(PATH_DEVTOOLS_BLD)/jwasm/*/jwasm$(HOSTSUFF_EXE))))
+ ifeq ($(TOOL_JWASM_AS),)
+ TOOL_JWASM_AS := $(firstword $(rsort $(wildcard $(PATH_DEVTOOLS_TRG)/jwasm/*/jwasm$(HOSTSUFF_EXE))))
+ endif
+endif
+ifeq ($(TOOL_JWASM_AS),)
+ TOOL_JWASM_AS := $(firstword $(which ml$(HOSTSUFF_EXE)) jwasm$(HOSTSUFF_EXE))
+endif
+
+# General Properties used by kBuild
+TOOL_JWASM_ASFLAGS ?= -X -nologo
+
+TOOL_JWASM_COMPILE_AS_OUTPUT = $(outbase).lst
+TOOL_JWASM_COMPILE_AS_DEPEND =
+TOOL_JWASM_COMPILE_AS_DEPORD =
+define TOOL_JWASM_COMPILE_AS_CMDS
+ $(TOOL_JWASM_AS) -c \
+ $(strip $(flags)) \
+ $(addprefix -D,$(defs)) \
+ $(addprefix -I,$(incs)) \
+ -Fo$(obj) \
+ -Fl$(outbase).lst \
+ $(source)
+endef
+
diff --git a/kBuild/tools/MINGWW64.kmk b/kBuild/tools/MINGWW64.kmk
new file mode 100644
index 0000000..b838812
--- /dev/null
+++ b/kBuild/tools/MINGWW64.kmk
@@ -0,0 +1,273 @@
+# $Id: MINGWW64.kmk 2695 2013-07-26 12:42:25Z bird $
+## @file
+# kBuild Tool Config - MinGW-W64.
+#
+
+#
+# Copyright (c) 2004-2012 knut st. osmundsen <bird-kBuild-spamx@anduin.net>
+#
+# This file is part of kBuild.
+#
+# kBuild is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# kBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with kBuild; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+#
+# As a special exception you are granted permission to include this file, via
+# the kmk include directive, as you wish without this in itself causing the
+# resulting makefile, program or whatever to be covered by the GPL license.
+# This exception does not however invalidate any other reasons why the makefile,
+# program, whatever should not be covered the GPL.
+#
+#
+
+ifdef TOOL_MINGWW64
+$(error Already included (TOOL_MINGWW64=$(TOOL_MINGWW64)))
+endif
+TOOL_MINGWW64 := MinGW-W64 - The incomprehensible 64-bit GCC port to Windows.
+
+# Tool Specific Properties
+ifndef PATH_TOOL_MINGWW64
+ PATH_TOOL_MINGWW64 := $(wildcard $(PATH_DEVTOOLS_BLD)/mingw-w64/r*)
+ ifeq ($(PATH_TOOL_MINGWW64),)
+ PATH_TOOL_MINGWW64 := $(wildcard $(PATH_DEVTOOLS)/win.amd64/mingw-w64/r*)
+ endif
+ ifeq ($(PATH_TOOL_MINGWW64),)
+ PATH_TOOL_MINGWW64 := $(wildcard $(PATH_DEVTOOLS)/win.x86/mingw-w64/r*)
+ endif
+ ifneq ($(PATH_TOOL_MINGWW64),)
+ PATH_TOOL_MINGWW64 := $(lastword $(sort $(PATH_TOOL_MINGWW64)))
+ endif
+else
+ # Resolve any fancy stuff once and for all.
+ PATH_TOOL_MINGWW64 := $(PATH_TOOL_MINGWW64)
+endif
+
+# figure out if it's native or needs a win32 launcher
+TOOL_MINGWW64_HOSTSUFF_EXE ?= $(HOSTSUFF_EXE)
+ifndef TOOL_MINGWW64_PREFIX
+ ifneq ($(PATH_TOOL_MINGWW64),)
+ TOOL_MINGWW64_PREFIX := $(PATH_TOOL_MINGWW64)/bin/
+ else
+ TOOL_MINGWW64_PREFIX :=
+ endif
+ ifneq ($(KBUILD_HOST),win)
+# # we're cross compiling either using an emulator (wine/odin) or a cross compiler.
+# ifneq ($(PATH_TOOL_MINGWW64),$(subst /win.x86,,$(subst /x86.win,,$(PATH_TOOL_MINGWW64))))
+ TOOL_MINGWW64_PREFIX := $(EXEC_X86_WIN32) $(TOOL_MINGWW64_PREFIX)
+ TOOL_MINGWW64_HOSTSUFF_EXE := .exe
+# else
+# TOOL_MINGWW64_PREFIX := $(TOOL_MINGWW64_PREFIX)i386-mingw32msvc-
+# TOOL_MINGWW64_HOSTSUFF_EXE :=
+# TOOL_MINGWW64_XCOMPILE := 1
+# endif
+ endif
+else
+ # Resolve any fancy stuff once and for all.
+ TOOL_MINGWW64_PREFIX := $(TOOL_MINGWW64_PREFIX)
+endif
+
+TOOL_MINGWW64_CC ?= $(TOOL_MINGWW64_PREFIX)gcc$(TOOL_MINGWW64_HOSTSUFF_EXE)
+TOOL_MINGWW64_CXX ?= $(TOOL_MINGWW64_PREFIX)g++$(TOOL_MINGWW64_HOSTSUFF_EXE)
+TOOL_MINGWW64_AS ?= $(TOOL_MINGWW64_PREFIX)gcc$(TOOL_MINGWW64_HOSTSUFF_EXE)
+TOOL_MINGWW64_AR ?= $(TOOL_MINGWW64_PREFIX)ar$(TOOL_MINGWW64_HOSTSUFF_EXE)
+ifndef TOOL_MINGWW64_XCOMPILE# The gentoo package doesn't have g++.
+TOOL_MINGWW64_LD ?= $(TOOL_MINGWW64_PREFIX)g++$(TOOL_MINGWW64_HOSTSUFF_EXE)
+else
+TOOL_MINGWW64_LD ?= $(TOOL_MINGWW64_PREFIX)gcc$(TOOL_MINGWW64_HOSTSUFF_EXE)
+endif
+TOOL_MINGWW64_DLLWRAP ?= $(TOOL_MINGWW64_PREFIX)dllwrap$(TOOL_MINGWW64_HOSTSUFF_EXE)
+TOOL_MINGWW64_DLLTOOL ?= $(TOOL_MINGWW64_PREFIX)dlltool$(TOOL_MINGWW64_HOSTSUFF_EXE)
+
+# General Properties used by kBuild
+TOOL_MINGWW64_COBJSUFF ?= .o
+TOOL_MINGWW64_CFLAGS ?= -g
+TOOL_MINGWW64_CFLAGS.debug ?= -O0
+TOOL_MINGWW64_CFLAGS.release ?= -O2
+TOOL_MINGWW64_CFLAGS.profile ?= -O2 #-pg
+TOOL_MINGWW64_CINCS ?=
+TOOL_MINGWW64_CDEFS ?=
+
+TOOL_MINGWW64_CXXOBJSUFF ?= .o
+TOOL_MINGWW64_CXXOBJSUFF ?= .o
+TOOL_MINGWW64_CXXFLAGS ?= -g
+TOOL_MINGWW64_CXXFLAGS.debug ?= -O0
+TOOL_MINGWW64_CXXFLAGS.release ?= -O2
+TOOL_MINGWW64_CXXFLAGS.profile ?= -O2 #-pg
+TOOL_MINGWW64_CXXINCS ?=
+TOOL_MINGWW64_CXXDEFS ?=
+
+TOOL_MINGWW64_ASFLAGS ?= -g -x assembler-with-cpp
+TOOL_MINGWW64_ASOBJSUFF ?= .o
+
+TOOL_MINGWW64_ARFLAGS ?= cr
+TOOL_MINGWW64_ARLIBSUFF ?= .a
+
+TOOL_MINGWW64_LDFLAGS ?=
+TOOL_MINGWW64_LDFLAGS.debug ?= -g
+TOOL_MINGWW64_LDFLAGS.release ?= -s
+
+
+## Compile C 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_MINGWW64_COMPILE_C_OUTPUT =
+TOOL_MINGWW64_COMPILE_C_DEPEND =
+TOOL_MINGWW64_COMPILE_C_DEPORD =
+define TOOL_MINGWW64_COMPILE_C_CMDS
+ $(QUIET)$(TOOL_MINGWW64_CC) -c\
+ $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
+ -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
+ -o $(obj)\
+ $(abspath $(source))
+endef
+
+
+## Compile C++ 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_MINGWW64_COMPILE_CXX_OUTPUT =
+TOOL_MINGWW64_COMPILE_CXX_DEPEND =
+TOOL_MINGWW64_COMPILE_CXX_DEPORD =
+define TOOL_MINGWW64_COMPILE_CXX_CMDS
+ $(QUIET)$(TOOL_MINGWW64_CXX) -c\
+ $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
+ -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
+ -o $(obj)\
+ $(abspath $(source))
+endef
+
+
+## Compile Assembly 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_MINGWW64_COMPILE_AS_OUTPUT =
+TOOL_MINGWW64_COMPILE_AS_DEPEND =
+TOOL_MINGWW64_COMPILE_AS_DEPORD =
+define TOOL_MINGWW64_COMPILE_AS_CMDS
+ $(QUIET)$(TOOL_MINGWW64_AS) -c\
+ $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
+ -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
+ -o $(obj)\
+ $(abspath $(source))
+endef
+
+
+## Link library
+# @param $(target) Normalized main target name.
+# @param $(out) Library name.
+# @param $(objs) Object files to put in the library.
+# @param $(flags) Flags.
+# @param $(dirdep) Directory creation dependency.
+# @param $(deps) Other dependencies.
+#
+# @param $(outbase) Output basename (full). Use this for list files and such.
+TOOL_MINGWW64_LINK_LIBRARY_OUTPUT = $(out).ar-script
+TOOL_MINGWW64_LINK_LIBRARY_DEPEND = $(othersrc)
+TOOL_MINGWW64_LINK_LIBRARY_DEPORD =
+define TOOL_MINGWW64_LINK_LIBRARY_CMDS
+ $(QUIET)$(APPEND) $(out).ar-script 'CREATE $(out)'
+ $(QUIET)$(APPEND) -n $(out).ar-script \
+ $(foreach o,$(objs), 'ADDMOD $(o)') \
+ $(foreach o,$(othersrc), 'ADDLIB $(o)')
+ $(QUIET)$(APPEND) $(out).ar-script 'SAVE'
+ $(QUIET)$(APPEND) $(out).ar-script 'END'
+ $(QUIET)$(TOOL_MINGWW64_AR) -M < $(out).ar-script
+endef
+
+
+
+## Link program
+# @param $(target) Normalized main target name.
+# @param $(out) Program name.
+# @param $(objs) Object files to link together.
+# @param $(libs) Libraries to search.
+# @param $(libpath) Library search paths.
+# @param $(flags) Flags.
+# @param $(dirdep) Directory creation dependency.
+# @param $(deps) Other dependencies.
+# @param $(othersrc) Unhandled sources.
+# @param $(custom_pre) Custom step invoked before linking.
+# @param $(custom_post) Custom step invoked after linking.
+#
+# @param $(outbase) Output basename (full). Use this for list files and such.
+TOOL_MINGWW64_LINK_PROGRAM_OUTPUT =
+TOOL_MINGWW64_LINK_PROGRAM_DEPEND = $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib)))
+TOOL_MINGWW64_LINK_PROGRAM_DEPORD =
+define TOOL_MINGWW64_LINK_PROGRAM_CMDS
+ $(QUIET)$(TOOL_MINGWW64_LD) $(flags) -o $(out) $(objs)\
+ $(foreach p,$(libpath), -L$(p))\
+ $(foreach lib,$(libs), $(if $(findstring $(lib),$(subst /,x,$(lib))), -l$(patsubst lib%,%,$(basename $(lib))), $(lib)))
+endef
+
+
+## Link DLL.
+# @param $(target) Normalized main target name.
+# @param $(out) DLL name.
+# @param $(objs) Object files to link together.
+# @param $(libs) Libraries to search.
+# @param $(libpath) Library search paths.
+# @param $(flags) Flags.
+# @param $(dirdep) Directory creation dependency.
+# @param $(deps) Other dependencies.
+# @param $(othersrc) Unhandled sources.
+# @param $(custom_pre) Custom step invoked before linking.
+# @param $(custom_post) Custom step invoked after linking.
+# @param $(outbase) Output basename (full). Use this for list files and such.
+TOOL_MINGWW64_LINK_DLL_OUTPUT =
+TOOL_MINGWW64_LINK_DLL_OUTPUT_MAYBE = $(outbase).a $(outbase).exp $(PATH_STAGE_LIB)/$(notdir $(outbase)).exp $(PATH_STAGE_LIB)/$(notdir $(outbase)).a
+## @todo Find a better solution for installing the extra files (.a, .exp, .pdb, etc).
+TOOL_MINGWW64_LINK_DLL_DEPEND = $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib)))\
+ $(filter %.def %.res,$(othersrc))
+TOOL_MINGWW64_LINK_DLL_DEPORD = $(call DIRDEP,$(PATH_STAGE_LIB))
+define TOOL_MINGWW64_LINK_DLL_CMDS
+ $(QUIET)$(REDIRECT) -C "$(dir $(out))" -- $(TOOL_MINGWW64_DLLWRAP) $(flags)\
+ --dllname=$(notdir $(out))\
+ --output-exp=$(outbase).exp\
+ --output-lib=$(outbase).a\
+ $(foreach def,$(filter %.def,$(othersrc)), --def $(def))\
+ $(filter %.res,$(othersrc))\
+ $(objs)\
+ $(foreach p,$(libpath), -L$(p))\
+ $(foreach lib,$(libs), $(if $(findstring $(lib),$(subst /,x,$(lib))), -l$(patsubst lib%,%,$(basename $(lib))), $(lib)))
+ $(QUIET)$(CP) $(outbase).exp $(outbase).a $(PATH_STAGE_LIB)/
+endef
+## @todo separate install stuff!
diff --git a/kBuild/tools/OPENWATCOM-WL.kmk b/kBuild/tools/OPENWATCOM-WL.kmk
index 25556ac..7d28629 100644
--- a/kBuild/tools/OPENWATCOM-WL.kmk
+++ b/kBuild/tools/OPENWATCOM-WL.kmk
@@ -1,4 +1,4 @@
-# $Id: OPENWATCOM-WL.kmk 2572 2012-04-27 13:19:55Z bird $
+# $Id: OPENWATCOM-WL.kmk 2663 2012-10-15 13:13:45Z bird $
## @file
# kBuild Tool Config - Open Watcom v1.4 and later, using wlink.
#
@@ -49,11 +49,11 @@ TOOL_OPENWATCOM-WL_LINK_PROGRAM_DEPORD =
define TOOL_OPENWATCOM-WL_LINK_PROGRAM_CMDS
$(QUIET)$(APPEND) -tn $(outbase).rsp \
$(if $(flags),'$(flags)',) \
- 'Name $(call TOOL_OPENWATCOM_FIX_SLASHES,$(out)$(if $(suffix $(out)),,.))' \
- 'Option Map=$(call TOOL_OPENWATCOM_FIX_SLASHES,$(outbase)).map' \
- $(foreach p,$(call TOOL_OPENWATCOM_FIX_SLASHES,$(libpath)),'LIBPath $p') \
- $(foreach o,$(call TOOL_OPENWATCOM_FIX_SLASHES,$(filter-out %.res,$(objs)) $(othersrc)),'$(if $(filter %.lib %.a,$l),LIB,)File $o') \
- $(foreach l,$(call TOOL_OPENWATCOM_FIX_SLASHES,$(libs)),'Library $l')
+ 'Name $(call TOOL_OPENWATCOM_FIX_SLASHES_SQ,$(out)$(if $(suffix $(out)),,.))' \
+ 'Option Map=$(call TOOL_OPENWATCOM_FIX_SLASHES_SQ,$(outbase)).map' \
+ $(foreach p,$(call TOOL_OPENWATCOM_FIX_SLASHES_SQ,$(libpath)),'LIBPath $p') \
+ $(foreach o,$(call TOOL_OPENWATCOM_FIX_SLASHES_SQ,$(filter-out %.res,$(objs)) $(othersrc)),'$(if $(filter %.lib %.a,$l),LIB,)File $o') \
+ $(foreach l,$(call TOOL_OPENWATCOM_FIX_SLASHES_SQ,$(libs)),'Library $l')
$(QUIET)$(call TOOL_OPENWATCOM_ENV_SETUP) \
$(TOOL_OPENWATCOM_WLINK) @$(outbase).rsp
$(if $(filter %.res,$(objs)), $(QUIET)$(call TOOL_OPENWATCOM_ENV_SETUP) \
diff --git a/kBuild/tools/OPENWATCOM.kmk b/kBuild/tools/OPENWATCOM.kmk
index 9d361bb..bbfdc46 100644
--- a/kBuild/tools/OPENWATCOM.kmk
+++ b/kBuild/tools/OPENWATCOM.kmk
@@ -1,4 +1,4 @@
-# $Id: OPENWATCOM.kmk 2576 2012-05-31 15:07:00Z bird $
+# $Id: OPENWATCOM.kmk 2663 2012-10-15 13:13:45Z bird $
## @file
# kBuild Tool Config - Open Watcom v1.4 and later.
#
@@ -147,10 +147,13 @@ else
endif
+# Functions for changing slashes (SQ = single quoted).
if1of ($(KBUILD_HOST), os2 win)
TOOL_OPENWATCOM_FIX_SLASHES = $(subst /,\\,$1)
+ TOOL_OPENWATCOM_FIX_SLASHES_SQ = $(subst /,\,$1)
else
TOOL_OPENWATCOM_FIX_SLASHES = $1
+ TOOL_OPENWATCOM_FIX_SLASHES_SQ = $1
endif
# General Properties used by kBuild
diff --git a/kBuild/tools/VCC100.kmk b/kBuild/tools/VCC100.kmk
index a16807a..fdacfa1 100644
--- a/kBuild/tools/VCC100.kmk
+++ b/kBuild/tools/VCC100.kmk
@@ -1,4 +1,4 @@
-# $Id: VCC100.kmk 2557 2011-12-13 12:48:32Z bird $
+# $Id: VCC100.kmk 2677 2013-02-01 15:04:53Z bird $
## @file
# kBuild Tool Config - Visual C++ 10.0 (aka Visual 2010 and MSC v16), targeting $(KBUILD_TARGET).
#
@@ -73,20 +73,32 @@ ifneq ($(PATH_TOOL_VCC100),)
TOOL_VCC100_CC ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100_BIN)/cl.exe
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
+ TOOL_VCC100_DUMPBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100_BIN)/dumpbin.exe
+ TOOL_VCC100_EDITBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100_BIN)/editbin.exe
else
# Pathless, relies on the environment.
TOOL_VCC100_CC ?= $(EXEC_X86_WIN32) cl.exe
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
+ TOOL_VCC100_DUMPBIN ?= $(EXEC_X86_WIN32) dumpbin.exe
+ TOOL_VCC100_EDITBIN ?= $(EXEC_X86_WIN32) editbin.exe
endif
+TOOL_VCC100_RC ?= $(EXEC_X86_WIN32) $(call TOOL_VCC100_FN_FIND_SDK_TOOL,rc.exe,[Rr][Cc].[Ee][Xx][Ee],TOOL_VCC100_RC_CACHED)
+TOOL_VCC100_MT ?= $(EXEC_X86_WIN32) $(call TOOL_VCC100_FN_FIND_SDK_TOOL,mt.exe,[Mm][Tt].[Ee][Xx][Ee],TOOL_VCC100_MT_CACHED)
+
+# The following in duplicated in VCC100.kmk and VCC100X86.kmk.
+TOOL_VCC100_FN_FIND_SDK_TOOL_SUB = $(eval $3 := $(firstword \
+ $(if-expr defined(PATH_SDK_WINPSDK71_BIN), $(wildcard $(PATH_SDK_WINPSDK71_BIN)/$2)) \
+ $(if-expr defined(PATH_SDK_WINPSDK_BIN) , $(wildcard $(PATH_SDK_WINPSDK_BIN)/$2)) \
+ $(rsort $(wildcard $(KBUILD_DEVTOOLS_HST)/sdk/*/[Bb][Ii][Nn]/$2)) \
+ $(rsort $(wildcard $(KBUILD_DEVTOOLS_HST_ALT)/sdk/*/[Bb][Ii][Nn]/$2)) \
+ $1))
+TOOL_VCC100_FN_FIND_SDK_TOOL = $(if-expr !defined($3),$(TOOL_VCC100_FN_FIND_SDK_TOOL_SUB),)$($3)
+
## Disabled fast DEP_IDB based dependencies.
#VCC100_OLD_DEPS = 1
@@ -96,16 +108,18 @@ endif
TOOL_VCC100_PDB = $(dir $(1))$(tolower $(notdir $(1))).$(2)
TOOL_VCC100_COBJSUFF ?= .obj
-TOOL_VCC100_CFLAGS ?= -TC -c -nologo
-TOOL_VCC100_CFLAGS.debug ?= -Od -Zi
+TOOL_VCC100_CFLAGS ?= -TC -nologo
+TOOL_VCC100_CFLAGS.debug ?= -Zi
+TOOL_VCC100_CFLAGS.dbgopt ?= -O2 -Zi
TOOL_VCC100_CFLAGS.release ?= -O2
TOOL_VCC100_CFLAGS.profile ?= -O2
TOOL_VCC100_CINCS ?= $(PATH_TOOL_VCC100_INC)
TOOL_VCC100_CDEFS ?=
TOOL_VCC100_CXXOBJSUFF ?= .obj
-TOOL_VCC100_CXXFLAGS ?= -TP -c -nologo
-TOOL_VCC100_CXXFLAGS.debug ?= -Od -Zi
+TOOL_VCC100_CXXFLAGS ?= -TP -nologo
+TOOL_VCC100_CXXFLAGS.debug ?= -Zi
+TOOL_VCC100_CXXFLAGS.dbgopt ?= -O2 -Zi
TOOL_VCC100_CXXFLAGS.release ?= -O2
TOOL_VCC100_CXXFLAGS.profile ?= -O2
TOOL_VCC100_CXXINCS ?= $(PATH_TOOL_VCC100_INC) $(PATH_TOOL_VCC100_ATLMFC_INC)
@@ -125,6 +139,8 @@ TOOL_VCC100_LDFLAGS.amd64 ?= -machine:amd64
TOOL_VCC100_LDFLAGS.x86 ?= -machine:x86
TOOL_VCC100_LDFLAGS ?= -nologo
TOOL_VCC100_LDFLAGS.debug ?= -debug
+TOOL_VCC100_LDFLAGS.dbgopt ?= -debug
+TOOL_VCC100_LDFLAGS.profile ?= -debug
TOOL_VCC100_LDFLAGS.release ?=
TOOL_VCC100_LIBPATH.amd64 ?= $(PATH_TOOL_VCC100_LIB.amd64) $(PATH_TOOL_VCC100_ATLMFC_LIB.amd64)
TOOL_VCC100_LIBPATH.x86 ?= $(PATH_TOOL_VCC100_LIB.x86) $(PATH_TOOL_VCC100_ATLMFC_LIB.x86)
@@ -146,6 +162,25 @@ TOOL_VCC100_LIBPATH.x86 ?= $(PATH_TOOL_VCC100_LIB.x86) $(PATH_TOOL_VCC100_A
# @param $(objsuff) Object suffix.
TOOL_VCC100_COMPILE_C_DEPEND =
TOOL_VCC100_COMPILE_C_DEPORD =
+ifdef KBUILD_USE_KOBJCACHE
+TOOL_VCC100_COMPILE_C_USES_KOBJCACHE = 1
+TOOL_VCC100_COMPILE_C_OUTPUT = $(outbase).i
+TOOL_VCC100_COMPILE_C_OUTPUT_MAYBE =
+define TOOL_VCC100_COMPILE_C_CMDS
+ $(QUIET)$(KOBJCACHE) -f $(outbase).koc -d $(PATH_OBJCACHE) -t $(bld_trg).$(bld_trg_arch) -O2 -r\
+ --make-dep-fix-case --make-dep-gen-stubs --make-dep-quiet --make-dep-file $(dep)\
+ --kObjCache-cpp $(outbase).i\
+ $(TOOL_VCC100_CC) -E\
+ $(subst -Zi,-Z7,$(flags))\
+ $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
+ $(subst /,\\,$(abspath $(source))) \
+ --kObjCache-cc $(obj)\
+ $(TOOL_VCC100_CC) -c\
+ $(subst -Zi,-Z7,$(flags))\
+ -Fo$(obj)\
+ $(outbase).i
+endef
+else # !KBUILD_USE_KOBJCACHE
TOOL_VCC100_COMPILE_C_OUTPUT = $(call TOOL_VCC100_PDB, $(outbase)-obj,idb)
TOOL_VCC100_COMPILE_C_OUTPUT_MAYBE = $(call TOOL_VCC100_PDB, $(outbase)-obj,pdb)
define TOOL_VCC100_COMPILE_C_CMDS
@@ -157,6 +192,7 @@ define TOOL_VCC100_COMPILE_C_CMDS
$(subst /,\\,$(abspath $(source)))
$(QUIET)$(DEP_IDB) -f -s -q -o $(dep) -t $(obj) $(call TOOL_VCC100_PDB,$(outbase)-obj,idb)
endef
+endif # !KBUILD_USE_KOBJCACHE
## Compile C++ source.
@@ -174,6 +210,25 @@ endef
# @param $(objsuff) Object suffix.
TOOL_VCC100_COMPILE_CXX_DEPEND =
TOOL_VCC100_COMPILE_CXX_DEPORD =
+ifdef KBUILD_USE_KOBJCACHE
+TOOL_VCC100_COMPILE_CXX_USES_KOBJCACHE = 1
+TOOL_VCC100_COMPILE_CXX_OUTPUT = $(outbase).ii
+TOOL_VCC100_COMPILE_CXX_OUTPUT_MAYBE =
+define TOOL_VCC100_COMPILE_CXX_CMDS
+ $(QUIET)$(KOBJCACHE) -f $(outbase).koc -d $(PATH_OBJCACHE) -t $(bld_trg).$(bld_trg_arch) -O2 -r\
+ --make-dep-fix-case --make-dep-gen-stubs --make-dep-quiet --make-dep-file $(dep)\
+ --kObjCache-cpp $(outbase).ii\
+ $(TOOL_VCC100_CXX) -E\
+ $(subst -Zi,-Z7,$(flags))\
+ $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
+ $(subst /,\\,$(abspath $(source))) \
+ --kObjCache-cc $(obj)\
+ $(TOOL_VCC100_CXX) -c\
+ $(subst -Zi,-Z7,$(flags))\
+ -Fo$(obj)\
+ $(outbase).ii
+endef
+else # !KBUILD_USE_KOBJCACHE
TOOL_VCC100_COMPILE_CXX_OUTPUT = $(call TOOL_VCC100_PDB, $(outbase)-obj,idb)
TOOL_VCC100_COMPILE_CXX_OUTPUT_MAYBE = $(call TOOL_VCC100_PDB, $(outbase)-obj,pdb)
define TOOL_VCC100_COMPILE_CXX_CMDS
@@ -185,7 +240,9 @@ define TOOL_VCC100_COMPILE_CXX_CMDS
$(subst /,\\,$(abspath $(source)))
$(QUIET)$(DEP_IDB) -f -s -q -o $(dep) -t $(obj) $(call TOOL_VCC100_PDB,$(outbase)-obj,idb)
endef
+endif # !KBUILD_USE_KOBJCACHE
+## @todo configure the assembler template.
## Compile resource source.
# @param $(target) Normalized main target name.
@@ -255,7 +312,7 @@ endef
TOOL_VCC100_LINK_PROGRAM_DEPEND = $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(othersrc)
TOOL_VCC100_LINK_PROGRAM_DEPORD =
TOOL_VCC100_LINK_PROGRAM_OUTPUT = $(outbase).map $(outbase).rsp
-TOOL_VCC100_LINK_PROGRAM_OUTPUT_MAYBE = $(outbase).map $(outbase).lib $(outbase).exp $(outbase).ilk $(out).manifest
+TOOL_VCC100_LINK_PROGRAM_OUTPUT_MAYBE = $(outbase).lib $(outbase).exp $(outbase).ilk $(out).manifest
TOOL_VCC100_LINK_PROGRAM_OUTPUT_DEBUG = $(outbase).pdb
TOOL_VCC100_LINK_PROGRAM_DEBUG_INSTALL_FN = $(2).pdb=>$(basename $(3)).pdb
define TOOL_VCC100_LINK_PROGRAM_CMDS
diff --git a/kBuild/tools/VCC100AMD64.kmk b/kBuild/tools/VCC100AMD64.kmk
index 43e7ecd..0a06a4d 100644
--- a/kBuild/tools/VCC100AMD64.kmk
+++ b/kBuild/tools/VCC100AMD64.kmk
@@ -1,4 +1,4 @@
-# $Id: VCC100AMD64.kmk 2557 2011-12-13 12:48:32Z bird $
+# $Id: VCC100AMD64.kmk 2625 2012-08-07 20:26:48Z bird $
## @file
# kBuild Tool Config - Visual C++ 10.0 (aka Visual 2010 and MSC v16), targeting AMD64.
#
@@ -68,10 +68,22 @@ PATH_TOOL_VCC100AMD64_ATLMFC_LIB ?= $(PATH_TOOL_VCC100AMD64_ATLMFC)/lib/amd64
TOOL_VCC100AMD64_CC ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100AMD64_BIN)/cl.exe
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_DUMPBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100AMD64_BIN)/dumpbin.exe
+TOOL_VCC100AMD64_EDITBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100AMD64_BIN)/editbin.exe
+TOOL_VCC100AMD64_RC ?= $(EXEC_X86_WIN32) $(call TOOL_VCC100_FN_FIND_SDK_TOOL,rc.exe,[Rr][Cc].[Ee][Xx][Ee],TOOL_VCC100_RC_CACHED)
+TOOL_VCC100AMD64_MT ?= $(EXEC_X86_WIN32) $(call TOOL_VCC100_FN_FIND_SDK_TOOL,mt.exe,[Mm][Tt].[Ee][Xx][Ee],TOOL_VCC100_MT_CACHED)
+
+# The following in duplicated in VCC100.kmk and VCC100X86.kmk.
+TOOL_VCC100_FN_FIND_SDK_TOOL_SUB = $(eval $3 := $(firstword \
+ $(if-expr defined(PATH_SDK_WINPSDK71_BIN), $(wildcard $(PATH_SDK_WINPSDK71_BIN)/$2)) \
+ $(if-expr defined(PATH_SDK_WINPSDK_BIN) , $(wildcard $(PATH_SDK_WINPSDK_BIN)/$2)) \
+ $(rsort $(wildcard $(KBUILD_DEVTOOLS_HST)/sdk/*/[Bb][Ii][Nn]/$2)) \
+ $(rsort $(wildcard $(KBUILD_DEVTOOLS_HST_ALT)/sdk/*/[Bb][Ii][Nn]/$2)) \
+ $1))
+TOOL_VCC100_FN_FIND_SDK_TOOL = $(if-expr !defined($3),$(TOOL_VCC100_FN_FIND_SDK_TOOL_SUB),)$($3)
+
## Disabled fast DEP_IDB based dependencies.
#VCC100AMD64_OLD_DEPS = 1
@@ -81,16 +93,18 @@ TOOL_VCC100AMD64_MT ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100AMD64_BIN)/../mt.exe
TOOL_VCC100AMD64_PDB = $(dir $(1))$(tolower $(notdir $(1))).$(2)
TOOL_VCC100AMD64_COBJSUFF ?= .obj
-TOOL_VCC100AMD64_CFLAGS ?= -TC -c -nologo
-TOOL_VCC100AMD64_CFLAGS.debug ?= -Od -Zi
+TOOL_VCC100AMD64_CFLAGS ?= -TC -nologo
+TOOL_VCC100AMD64_CFLAGS.debug ?= -Zi
+TOOL_VCC100AMD64_CFLAGS.dbgopt ?= -O2 -Zi
TOOL_VCC100AMD64_CFLAGS.release ?= -O2
TOOL_VCC100AMD64_CFLAGS.profile ?= -O2
TOOL_VCC100AMD64_CINCS ?= $(PATH_TOOL_VCC100AMD64_INC)
TOOL_VCC100AMD64_CDEFS ?=
TOOL_VCC100AMD64_CXXOBJSUFF ?= .obj
-TOOL_VCC100AMD64_CXXFLAGS ?= -TP -c -nologo
-TOOL_VCC100AMD64_CXXFLAGS.debug ?= -Od -Zi
+TOOL_VCC100AMD64_CXXFLAGS ?= -TP -nologo
+TOOL_VCC100AMD64_CXXFLAGS.debug ?= -Zi
+TOOL_VCC100AMD64_CXXFLAGS.dbgopt ?= -O2 -Zi
TOOL_VCC100AMD64_CXXFLAGS.release ?= -O2
TOOL_VCC100AMD64_CXXFLAGS.profile ?= -O2
TOOL_VCC100AMD64_CXXINCS ?= $(PATH_TOOL_VCC100AMD64_INC) $(PATH_TOOL_VCC100AMD64_ATLMFC_INC)
@@ -106,6 +120,8 @@ TOOL_VCC100AMD64_ARLIBSUFF ?= .lib
TOOL_VCC100AMD64_LDFLAGS ?= -nologo -machine:amd64
TOOL_VCC100AMD64_LDFLAGS.debug ?= -debug
+TOOL_VCC100AMD64_LDFLAGS.dbgopt ?= -debug
+TOOL_VCC100AMD64_LDFLAGS.profile ?= -debug
TOOL_VCC100AMD64_LDFLAGS.release ?=
@@ -125,6 +141,25 @@ TOOL_VCC100AMD64_LDFLAGS.release ?=
# @param $(objsuff) Object suffix.
TOOL_VCC100AMD64_COMPILE_C_DEPEND =
TOOL_VCC100AMD64_COMPILE_C_DEPORD =
+ifdef KBUILD_USE_KOBJCACHE
+TOOL_VCC100AMD64_COMPILE_C_USES_KOBJCACHE = 1
+TOOL_VCC100AMD64_COMPILE_C_OUTPUT = $(outbase).i
+TOOL_VCC100AMD64_COMPILE_C_OUTPUT_MAYBE =
+define TOOL_VCC100AMD64_COMPILE_C_CMDS
+ $(QUIET)$(KOBJCACHE) -f $(outbase).koc -d $(PATH_OBJCACHE) -t $(bld_trg).$(bld_trg_arch) -O2 -r\
+ --make-dep-fix-case --make-dep-gen-stubs --make-dep-quiet --make-dep-file $(dep)\
+ --kObjCache-cpp $(outbase).i\
+ $(TOOL_VCC100AMD64_CC) -E\
+ $(subst -Zi,-Z7,$(flags))\
+ $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
+ $(subst /,\\,$(abspath $(source))) \
+ --kObjCache-cc $(obj)\
+ $(TOOL_VCC100AMD64_CC) -c\
+ $(subst -Zi,-Z7,$(flags))\
+ -Fo$(obj)\
+ $(outbase).i
+endef
+else # !KBUILD_USE_KOBJCACHE
TOOL_VCC100AMD64_COMPILE_C_OUTPUT = $(call TOOL_VCC100AMD64_PDB, $(outbase)-obj,idb)
TOOL_VCC100AMD64_COMPILE_C_OUTPUT_MAYBE = $(call TOOL_VCC100AMD64_PDB, $(outbase)-obj,pdb)
define TOOL_VCC100AMD64_COMPILE_C_CMDS
@@ -136,6 +171,7 @@ define TOOL_VCC100AMD64_COMPILE_C_CMDS
$(subst /,\\,$(abspath $(source)))
$(QUIET)$(DEP_IDB) -f -s -q -o $(dep) -t $(obj) $(call TOOL_VCC100AMD64_PDB,$(outbase)-obj,idb)
endef
+endif # !KBUILD_USE_KOBJCACHE
## Compile C++ source.
@@ -155,44 +191,22 @@ TOOL_VCC100AMD64_COMPILE_CXX_DEPEND =
TOOL_VCC100AMD64_COMPILE_CXX_DEPORD =
ifdef KBUILD_USE_KOBJCACHE
TOOL_VCC100AMD64_COMPILE_CXX_USES_KOBJCACHE = 1
-TOOL_VCC100AMD64_COMPILE_CXX_OUTPUT = $(call TOOL_VCC100AMD64_PDB, $(outbase)-obj,idb) $(outbase).ii
-TOOL_VCC100AMD64_COMPILE_CXX_OUTPUT_MAYBE = $(call TOOL_VCC100AMD64_PDB, $(outbase)-obj,pdb)
-if 1
+TOOL_VCC100AMD64_COMPILE_CXX_OUTPUT = $(outbase).ii
+TOOL_VCC100AMD64_COMPILE_CXX_OUTPUT_MAYBE =
define TOOL_VCC100AMD64_COMPILE_CXX_CMDS
- $(QUIET)$(KOBJCACHE) -f $(outbase).koc -d $(PATH_OBJCACHE) -t $(bld_trg).$(bld_trg_arch) -r\
- --named-pipe-compile $(subst /,\\,//./pipe/kObjCache/$(translate $(outbase),:,_)/$(notdir $(source)))\
+ $(QUIET)$(KOBJCACHE) -f $(outbase).koc -d $(PATH_OBJCACHE) -t $(bld_trg).$(bld_trg_arch) -O2 -r\
+ --make-dep-fix-case --make-dep-gen-stubs --make-dep-quiet --make-dep-file $(dep)\
--kObjCache-cpp $(outbase).ii\
$(TOOL_VCC100AMD64_CXX) -E\
- $(flags)\
+ $(subst -Zi,-Z7,$(flags))\
$(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
$(subst /,\\,$(abspath $(source))) \
--kObjCache-cc $(obj)\
- windbg $(TOOL_VCC100AMD64_CXX) -c -TP\
- $(flags)\
- -Fd$(outbase)-obj.pdb \
- -FD\
- -Fo$(obj)\
- $(subst /,\\,//./pipe/kObjCache/$(translate $(outbase),:,_)/$(notdir $(source)))
- $(QUIET)$(DEP_IDB) -f -s -q -o $(dep) -t $(obj) $(call TOOL_VCC100AMD64_PDB,$(outbase)-obj,idb)
-endef
-else
-define TOOL_VCC100AMD64_COMPILE_CXX_CMDS
- $(QUIET)$(KOBJCACHE) -f $(outbase).koc -d $(PATH_OBJCACHE) -t $(bld_trg).$(bld_trg_arch) -r\
- --kObjCache-cpp $(outbase).ii\
- $(TOOL_VCC100AMD64_CXX) -E\
- $(flags)\
- $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
- $(subst /,\\,$(abspath $(source))) \
- --kObjCache-cc $(obj)\
- $(TOOL_VCC100AMD64_CXX) -c -TP\
- $(flags)\
- -Fd$(outbase)-obj.pdb \
- -FD\
+ $(TOOL_VCC100AMD64_CXX) -c\
+ $(subst -Zi,-Z7,$(flags))\
-Fo$(obj)\
$(outbase).ii
- $(QUIET)$(DEP_IDB) -f -s -q -o $(dep) -t $(obj) $(call TOOL_VCC100AMD64_PDB,$(outbase)-obj,idb)
endef
-endif
else # !KBUILD_USE_KOBJCACHE
TOOL_VCC100AMD64_COMPILE_CXX_OUTPUT = $(call TOOL_VCC100AMD64_PDB, $(outbase)-obj,idb)
TOOL_VCC100AMD64_COMPILE_CXX_OUTPUT_MAYBE = $(call TOOL_VCC100AMD64_PDB, $(outbase)-obj,pdb)
@@ -207,6 +221,8 @@ define TOOL_VCC100AMD64_COMPILE_CXX_CMDS
endef
endif # !KBUILD_USE_KOBJCACHE
+## @todo configure the assembler template.
+
## Compile resource source.
# @param $(target) Normalized main target name.
# @param $(source) Source filename (relative).
diff --git a/kBuild/tools/VCC100X86.kmk b/kBuild/tools/VCC100X86.kmk
index 1ec1f57..3aa31cd 100644
--- a/kBuild/tools/VCC100X86.kmk
+++ b/kBuild/tools/VCC100X86.kmk
@@ -1,4 +1,4 @@
-# $Id: VCC100X86.kmk 2557 2011-12-13 12:48:32Z bird $
+# $Id: VCC100X86.kmk 2625 2012-08-07 20:26:48Z bird $
## @file
# kBuild Tool Config - Visual C++ 10.0 (aka Visual 2010 and MSC v16), targeting x86.
#
@@ -67,10 +67,22 @@ PATH_TOOL_VCC100X86_ATLMFC_LIB ?= $(PATH_TOOL_VCC100X86_ATLMFC)/lib
TOOL_VCC100X86_CC ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100X86_BIN)/cl.exe
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_DUMPBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100X86_BIN)/dumpbin.exe
+TOOL_VCC100X86_EDITBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC100X86_BIN)/editbin.exe
+TOOL_VCC100X86_RC ?= $(EXEC_X86_WIN32) $(call TOOL_VCC100_FN_FIND_SDK_TOOL,rc.exe,[Rr][Cc].[Ee][Xx][Ee],TOOL_VCC100_RC_CACHED)
+TOOL_VCC100X86_MT ?= $(EXEC_X86_WIN32) $(call TOOL_VCC100_FN_FIND_SDK_TOOL,mt.exe,[Mm][Tt].[Ee][Xx][Ee],TOOL_VCC100_MT_CACHED)
+
+# The following in duplicated in VCC100.kmk and VCC100X86.kmk.
+TOOL_VCC100_FN_FIND_SDK_TOOL_SUB = $(eval $3 := $(firstword \
+ $(if-expr defined(PATH_SDK_WINPSDK71_BIN), $(wildcard $(PATH_SDK_WINPSDK71_BIN)/$2)) \
+ $(if-expr defined(PATH_SDK_WINPSDK_BIN) , $(wildcard $(PATH_SDK_WINPSDK_BIN)/$2)) \
+ $(rsort $(wildcard $(KBUILD_DEVTOOLS_HST)/sdk/*/[Bb][Ii][Nn]/$2)) \
+ $(rsort $(wildcard $(KBUILD_DEVTOOLS_HST_ALT)/sdk/*/[Bb][Ii][Nn]/$2)) \
+ $1))
+TOOL_VCC100_FN_FIND_SDK_TOOL = $(if-expr !defined($3),$(TOOL_VCC100_FN_FIND_SDK_TOOL_SUB),)$($3)
+
## Disabled fast DEP_IDB based dependencies.
#VCC100X86_OLD_DEPS = 1
@@ -82,16 +94,18 @@ TOOL_VCC100X86_PDB = $(dir $(1))$(tolower $(notdir $(1))).$(2)
# General Properties used by kBuild
TOOL_VCC100X86_COBJSUFF ?= .obj
-TOOL_VCC100X86_CFLAGS ?= -TC -c -nologo
+TOOL_VCC100X86_CFLAGS ?= -TC -nologo
TOOL_VCC100X86_CFLAGS.debug ?= -Zi
+TOOL_VCC100X86_CFLAGS.dbgopt ?= -O2 -Zi
TOOL_VCC100X86_CFLAGS.release ?= -O2
TOOL_VCC100X86_CFLAGS.profile ?= -O2
TOOL_VCC100X86_CINCS ?= $(PATH_TOOL_VCC100X86_INC)
TOOL_VCC100X86_CDEFS ?=
TOOL_VCC100X86_CXXOBJSUFF ?= .obj
-TOOL_VCC100X86_CXXFLAGS ?= -TP -c -nologo
+TOOL_VCC100X86_CXXFLAGS ?= -TP -nologo
TOOL_VCC100X86_CXXFLAGS.debug ?= -Zi
+TOOL_VCC100X86_CXXFLAGS.dbgopt ?= -O2 -Zi
TOOL_VCC100X86_CXXFLAGS.release ?= -O2
TOOL_VCC100X86_CXXFLAGS.profile ?= -O2
TOOL_VCC100X86_CXXINCS ?= $(PATH_TOOL_VCC100X86_INC) $(PATH_TOOL_VCC100X86_ATLMFC_INC)
@@ -107,6 +121,8 @@ TOOL_VCC100X86_ARLIBSUFF ?= .lib
TOOL_VCC100X86_LDFLAGS ?= -nologo -machine:x86
TOOL_VCC100X86_LDFLAGS.debug ?= -debug
+TOOL_VCC100X86_LDFLAGS.dbgopt ?= -debug
+TOOL_VCC100X86_LDFLAGS.profile ?= -debug
TOOL_VCC100X86_LDFLAGS.release ?=
@@ -126,6 +142,25 @@ TOOL_VCC100X86_LDFLAGS.release ?=
# @param $(objsuff) Object suffix.
TOOL_VCC100X86_COMPILE_C_DEPEND =
TOOL_VCC100X86_COMPILE_C_DEPORD =
+ifdef KBUILD_USE_KOBJCACHE
+TOOL_VCC100X86_COMPILE_C_USES_KOBJCACHE = 1
+TOOL_VCC100X86_COMPILE_C_OUTPUT = $(outbase).i
+TOOL_VCC100AMD64_COMPILE_C_OUTPUT_MAYBE =
+define TOOL_VCC100X86_COMPILE_C_CMDS
+ $(QUIET)$(KOBJCACHE) -f $(outbase).koc -d $(PATH_OBJCACHE) -t $(bld_trg).$(bld_trg_arch) -O2 -r\
+ --make-dep-fix-case --make-dep-gen-stubs --make-dep-quiet --make-dep-file $(dep)\
+ --kObjCache-cpp $(outbase).i\
+ $(TOOL_VCC100X86_CC) -E\
+ $(subst -Zi,-Z7,$(flags))\
+ $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
+ $(subst /,\\,$(abspath $(source))) \
+ --kObjCache-cc $(obj)\
+ $(TOOL_VCC100X86_CC) -c\
+ $(subst -Zi,-Z7,$(flags))\
+ -Fo$(obj)\
+ $(outbase).i
+endef
+else # !KBUILD_USE_KOBJCACHE
TOOL_VCC100X86_COMPILE_C_OUTPUT = $(call TOOL_VCC100X86_PDB, $(outbase)-obj,idb)
TOOL_VCC100X86_COMPILE_C_OUTPUT_MAYBE = $(call TOOL_VCC100X86_PDB, $(outbase)-obj,pdb)
define TOOL_VCC100X86_COMPILE_C_CMDS
@@ -137,6 +172,7 @@ define TOOL_VCC100X86_COMPILE_C_CMDS
$(subst /,\\,$(abspath $(source)))
$(QUIET)$(DEP_IDB) -f -s -q -o $(dep) -t $(obj) $(call TOOL_VCC100X86_PDB,$(outbase)-obj,idb)
endef
+endif # !KBUILD_USE_KOBJCACHE
## Compile C++ source.
@@ -154,6 +190,25 @@ endef
# @param $(objsuff) Object suffix.
TOOL_VCC100X86_COMPILE_CXX_DEPEND =
TOOL_VCC100X86_COMPILE_CXX_DEPORD =
+ifdef KBUILD_USE_KOBJCACHE
+TOOL_VCC100X86_COMPILE_CXX_USES_KOBJCACHE = 1
+TOOL_VCC100X86_COMPILE_CXX_OUTPUT = $(outbase).ii
+TOOL_VCC100AMD64_COMPILE_CXX_OUTPUT_MAYBE =
+define TOOL_VCC100X86_COMPILE_CXX_CMDS
+ $(QUIET)$(KOBJCACHE) -f $(outbase).koc -d $(PATH_OBJCACHE) -t $(bld_trg).$(bld_trg_arch) -O2 -r\
+ --make-dep-fix-case --make-dep-gen-stubs --make-dep-quiet --make-dep-file $(dep)\
+ --kObjCache-cpp $(outbase).ii\
+ $(TOOL_VCC100X86_CXX) -E\
+ $(subst -Zi,-Z7,$(flags))\
+ $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
+ $(subst /,\\,$(abspath $(source))) \
+ --kObjCache-cc $(obj)\
+ $(TOOL_VCC100X86_CXX) -c\
+ $(subst -Zi,-Z7,$(flags))\
+ -Fo$(obj)\
+ $(outbase).ii
+endef
+else # !KBUILD_USE_KOBJCACHE
TOOL_VCC100X86_COMPILE_CXX_OUTPUT = $(call TOOL_VCC100X86_PDB, $(outbase)-obj,idb)
TOOL_VCC100X86_COMPILE_CXX_OUTPUT_MAYBE = $(call TOOL_VCC100X86_PDB, $(outbase)-obj,pdb)
define TOOL_VCC100X86_COMPILE_CXX_CMDS
@@ -165,6 +220,7 @@ define TOOL_VCC100X86_COMPILE_CXX_CMDS
$(subst /,\\,$(abspath $(source)))
$(QUIET)$(DEP_IDB) -f -s -q -o $(dep) -t $(obj) $(call TOOL_VCC100X86_PDB,$(outbase)-obj,idb)
endef
+endif # !KBUILD_USE_KOBJCACHE
## @todo configure the assembler template.
diff --git a/kBuild/tools/YASM.kmk b/kBuild/tools/YASM.kmk
index 8f958f0..8963f14 100644
--- a/kBuild/tools/YASM.kmk
+++ b/kBuild/tools/YASM.kmk
@@ -1,10 +1,10 @@
-# $Id: YASM.kmk 2413 2010-09-11 17:43:04Z bird $
+# $Id: YASM.kmk 2694 2013-07-22 13:39:36Z bird $
## @file
# kBuild Tool Config - YASM 0.4.0 or later.
#
#
-# Copyright (c) 2006-2010 knut st. osmundsen <bird-kBuild-spamx@anduin.net>
+# Copyright (c) 2006-2013 knut st. osmundsen <bird-kBuild-spamx@anduin.net>
#
# This file is part of kBuild.
#
@@ -67,18 +67,36 @@ TOOL_YASM_ASFLAGS ?=
# @param $(objsuff) Object suffix.
#
TOOL_YASM_COMPILE_AS_OUTPUT = $(outbase).lst
+TOOL_YASM_COMPILE_AS_OUTPUT_MAYBE = $(obj).map
TOOL_YASM_COMPILE_AS_DEPEND =
TOOL_YASM_COMPILE_AS_DEPORD =
define TOOL_YASM_COMPILE_AS_CMDS
$(QUIET)$(TOOL_YASM_AS)\
- $(flags) $(addsuffix /,$(addprefix -I, $(incs))) $(addprefix -D, $(defs))\
+ $(patsubst --mapfile%,--mapfile=$(obj).map,$(flags))\
+ $(addsuffix /,$(addprefix -I, $(incs))) $(addprefix -D, $(defs))\
-l $(outbase).lst\
-o $(obj)\
$(abspath $(source))
- $(QUIET)$(REDIRECT) -wo $(dep) -- $(TOOL_YASM_AS)\
- $(flags) $(addsuffix /,$(addprefix -I, $(incs))) $(addprefix -D, $(defs))\
+ $(QUIET)$(REDIRECT) -wo $(dep) -- $(TOOL_YASM_AS) -DKBUILD_GENERATING_MAKEFILE_DEPENDENCIES\
+ $(patsubst --mapfile%,--mapfile=$(obj).map,$(flags))\
+ $(addsuffix /,$(addprefix -I, $(incs))) $(addprefix -D, $(defs))\
-o $(obj) \
$(abspath $(source)) \
-M
+ if1of ($(KBUILD_HOST), win nt os2)
+ $(QUIET)$(SED) -e 's/\\\(.\)/\/\1/g' --output "$(dep).tmp" "$(dep)"
+ else
+ $(QUIET)$(CP) -f -- "$(dep)" "$(dep).tmp"
+ endif
+ $(QUIET)$(APPEND) -n "$(dep).tmp" "" ""
+ $(QUIET)$(SED) $(if $(intersects $(KBUILD_HOST), win nt os2), -e 's/\\\(.\)/\/\1/g',)\
+ -e 's/^[^ ]*: / /'\
+ -e 's/ *\\$$(DOLLAR)//'\
+ -e 's/^ *//'\
+ -e 's/ */\n/g'\
+ -e 's/ *\([^ \n][^ \n]*\)/\1:\n/g'\
+ --append "$(dep).tmp"\
+ "$(dep)"
+ $(QUIET)$(MV) -f -- "$(dep).tmp" "$(dep)"
endef