diff options
Diffstat (limited to 'kBuild')
-rw-r--r-- | kBuild/doc/QuickReference-kmk.html | 2 | ||||
-rw-r--r-- | kBuild/header.kmk | 21 | ||||
-rw-r--r-- | kBuild/sdks/ReorderCompilerIncs.kmk | 63 | ||||
-rw-r--r-- | kBuild/sdks/WINDDK71.kmk | 107 | ||||
-rw-r--r-- | kBuild/sdks/WINDDK71WLH.kmk | 47 | ||||
-rw-r--r-- | kBuild/sdks/WINDDK71WNET.kmk | 47 | ||||
-rw-r--r-- | kBuild/sdks/WINDDK71WXP.kmk | 43 | ||||
-rw-r--r-- | kBuild/sdks/WINDDK80.kmk | 98 | ||||
-rw-r--r-- | kBuild/sdks/WINDDK80W8.kmk | 46 | ||||
-rw-r--r-- | kBuild/sdks/WINPSDK.kmk | 7 | ||||
-rw-r--r-- | kBuild/sdks/WINPSDK71.kmk | 161 | ||||
-rw-r--r-- | kBuild/sdks/WINPSDK71INCS.kmk | 90 | ||||
-rw-r--r-- | kBuild/tools/JWASM.kmk | 63 | ||||
-rw-r--r-- | kBuild/tools/MINGWW64.kmk | 273 | ||||
-rw-r--r-- | kBuild/tools/OPENWATCOM-WL.kmk | 12 | ||||
-rw-r--r-- | kBuild/tools/OPENWATCOM.kmk | 5 | ||||
-rw-r--r-- | kBuild/tools/VCC100.kmk | 77 | ||||
-rw-r--r-- | kBuild/tools/VCC100AMD64.kmk | 88 | ||||
-rw-r--r-- | kBuild/tools/VCC100X86.kmk | 66 | ||||
-rw-r--r-- | kBuild/tools/YASM.kmk | 28 |
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 |