summaryrefslogtreecommitdiffstats
path: root/public/oak/bin/makefile.def
diff options
context:
space:
mode:
Diffstat (limited to 'public/oak/bin/makefile.def')
-rw-r--r--public/oak/bin/makefile.def2494
1 files changed, 2494 insertions, 0 deletions
diff --git a/public/oak/bin/makefile.def b/public/oak/bin/makefile.def
new file mode 100644
index 000000000..28e9e2515
--- /dev/null
+++ b/public/oak/bin/makefile.def
@@ -0,0 +1,2494 @@
+!IF 0
+
+Copyright (c) 1989-1996 Microsoft Corporation
+
+Module Name:
+
+ makefile.def
+
+Abstract:
+
+ This is the standard makefile for the components of the NT project.
+ It includes the following files:
+
+ .\sources. - developer supplies this file. It defines the
+ required TARGETNAME, TARGETPATH, TARGETTYPE and
+ SOURCES as well as optional macros that control
+ the behavior of the compiler and linker:
+
+ obj\_objects.mac - built by BUILD.EXE from .\sources.
+
+
+Targets:
+
+ all - Builds all targets in this make file
+
+ clean - Erase all targets that can be produced by this make
+ file, ignoring errors. Also rebuilds the depend target.
+
+ depend - Rebuilts source file dependencies, using BUILD.EXE tool
+
+
+Useful Variables Set:
+
+ CPUTYPE={I386|MIPS|ALPHA|PPC}
+
+Optional Controls Variables (partial list), these are environment variables,
+remember they can be set with env=value on the command line as well:
+
+NOTE: xxx_... is {MSC|386|mips|alpha|PPC} where MSC_ applies to the C8 compiler
+ independent of the cpu type. Specific cpu_ will take precedence
+ over the equivalent MSC_ variable.
+
+EXAMPLE: To compile with codeview symbols for windbg:
+
+ set NTDEBUG=ntsd
+ set NTDEBUGTYPE=windbg
+ set MSC_OPTIMIZATION=/Od
+
+
+ nttest=filename
+
+ umtest=filename
+
+ umappl=filename
+
+ NT_UP
+ Define as 0 in environment to turn on MP.
+ If undefined or equal to 1, you get UP.
+
+ xxx_warning_level
+
+ xxx_optimization
+
+ xxx_STDCALL = 1 use _stdcall calling convention
+ 0 use _cdecl calling convention
+
+ ntdebug
+
+ browser_info
+
+ xxx_cppflags
+
+ ntcppflags
+
+ NT_INST - set to turn on instrumentation
+
+ BASEDIR - \nt or \ntrel (default \nt)
+
+ PRECOMPILED_CXX=1 - do precompiled headers for CXX instead of C files
+ note: precompiled headers can not be used on both
+ c and cxx files in a single directory.
+!ENDIF
+
+!if 0
+! message You must use nmake version 1.30 or greater...
+!endif
+
+# A couple of overrides
+
+!ifndef SDK_INC_PATH
+SDK_INC_PATH = $(BASEDIR)\public\sdk\inc
+!endif
+
+!ifndef SDK_LIB_PATH
+SDK_LIB_PATH = $(BASEDIR)\public\sdk\lib\*
+!endif
+
+!ifndef DDK_LIB_PATH
+DDK_LIB_PATH = $(BASEDIR)\public\sdk\lib\*
+!endif
+
+!ifndef CRT_INC_PATH
+CRT_INC_PATH = $(BASEDIR)\public\sdk\inc\crt
+!endif
+
+!ifndef CRT_LIB_PATH
+CRT_LIB_PATH = $(BASEDIR)\public\sdk\lib\*
+!endif
+
+!ifndef OAK_INC_PATH
+OAK_INC_PATH = $(BASEDIR)\public\oak\inc
+!endif
+
+!ifndef MASTER_VERSION_FILE
+MASTER_VERSION_FILE = $(BASEDIR)\public\sdk\inc\ntverp.h
+!endif
+
+
+#
+# Select build target and set platform specific variables.
+#
+
+!INCLUDE makefile.plt
+
+
+#
+# IDL/RDL/TDL build rules.
+#
+
+!ifdef IDL_RULES
+IDL_OUT_DIR =.
+IDL_HDR_OUT_DIR =.
+RDL_OUT_DIR =.
+RDL_HDR_OUT_DIR =.
+
+! ifndef MIDL_INCS
+MIDL_INCS = $(_OBJ_DIR)\$(TARGET_DIRECTORY)
+! endif
+
+! ifndef MC_OUT_DIR
+MC_OUT_DIR = $(_OBJ_DIR)\$(TARGET_DIRECTORY)
+! endif
+!endif
+
+!ifndef LANGUAGE
+LANGUAGE=usa
+!endif
+
+# define a simple macro that can be used for the object subdir in makefile.inc/sources files
+
+O = $(_OBJ_DIR)\$(TARGET_DIRECTORY)
+
+#
+# Include the developer supplied file that defines the TARGETNAME, TARGETPATH,
+# TARGETTYPE and SOURCES macros. Make sure it defines them.
+#
+
+!ifdef USE_ICECAP
+PERFFLAGS=-Gh
+PERFLIBS=$(SDK_LIB_PATH)\icap.lib
+! if $(FREEBUILD)
+NTDEBUG=ntsdnodbg
+! else
+NTDEBUG=ntsd
+! endif
+NTDEBUGTYPE=both
+NTBBT=1
+!endif
+
+!INCLUDE .\sources.
+SOURCES_USED=$(SOURCES_USED) .\sources
+
+!if defined(LOCALIZED_RESOURCES) && !defined(RCCODEPAGE)
+! if "$(LANGUAGE)" == "JPN" || "$(LANGUAGE)" == "jpn"
+RCCODEPAGE=932
+! elseif "$(LANGUAGE)" == "KOR" || "$(LANGUAGE)" == "kor"
+RCCODEPAGE=949
+! elseif "$(LANGUAGE)" == "CHS" || "$(LANGUAGE)" == "chs"
+RCCODEPAGE=950
+! elseif "$(LANGUAGE)" == "CHT" || "$(LANGUAGE)" == "cht"
+RCCODEPAGE=936
+! endif
+!endif
+
+#
+# Attempt to include the sources file from the target subdirectory.
+#
+
+#
+# Set far east specific defines based on the project
+#
+
+!if "$(ALT_PROJECT)" != ""
+C_DEFINES=$(C_DEFINES) -D_$(ALT_PROJECT)_
+!endif
+
+!IF "$(ALT_PROJECT)" == "FE"
+C_DEFINES=$(C_DEFINES) -DFE_SB -DFE_IME
+ASM_DEFINES=$(ASM_DEFINES) -DFE_SB
+!ENDIF
+
+!IF "$(ALT_PROJECT)" == "KEIZON"
+C_DEFINES=$(C_DEFINES) -DMEMPHIS_MENUS -DMEMPHIS_MENU_WATERMARKS -DMEMPHIS_MENU_ANIMATION -DWINVER=0X040A
+EXPECTED_WINVER=0x040a
+C_COMPILER_FLAGs=$(C_COMPILER_FLAGs) -DWINVER=0X040A
+!ENDIF
+
+!IF "$(ALT_PROJECT)" == "DS"
+# Nothing, just -D_DS_ from above
+!ENDIF
+
+!IF EXIST(.\$(TARGET_DIRECTORY)\sources.)
+! INCLUDE .\$(TARGET_DIRECTORY)\sources.
+SOURCES_USED=$(SOURCES_USED) .\$(TARGET_DIRECTORY)\sources.
+!ENDIF
+
+#
+# Attempt to include the sources file from the parent target subdirectory.
+#
+
+!IF EXIST(..\$(TARGET_DIRECTORY)\sources.)
+! INCLUDE ..\$(TARGET_DIRECTORY)\sources.
+SOURCES_USED=$(SOURCES_USED) ..\$(TARGET_DIRECTORY)\sources.
+!ENDIF
+
+
+#
+# If this is a DS build (for now), include a file full of overrides
+#
+
+!ifdef DS_BUILD
+!INCLUDE ds.mk
+!endif
+
+
+!IFNDEF TARGETPATH
+! ERROR Your .\sources. file must define the TARGETPATH= macro
+!ENDIF
+
+!if "$(TARGETPATH)" == "obj" || "$(TARGETPATH)" == "OBJ"
+TARGETPATH=$(_OBJ_DIR)
+!endif
+
+!ifdef TARGETPATHLIB
+! if ("$(TARGETTYPE)" == "DYNLINK") || ("TARGETTYPE" == "EXPORT_DRIVER")
+! if "$(MAKEDLL)" == ""
+# Pass 1 of a two pass build. Make sure TargetPath is the same as targetpathlib.
+NO_BROWSER_FILE=1
+TARGETPATH=$(TARGETPATHLIB)
+! endif
+! endif
+!else
+TARGETPATHLIB=$(TARGETPATH)
+!endif
+
+!IFNDEF TARGETTYPE
+! ERROR Your .\sources. file must define the TARGETTYPE= macro
+!ENDIF
+
+!IFNDEF TARGETNAME
+! IF "$(TARGETTYPE)" != "NOTARGET"
+! ERROR Your .\sources. file must define the TARGETNAME= macro
+! ELSE
+TARGETNAME=
+! ENDIF
+!ENDIF
+
+!IFNDEF SOURCES
+! ERROR Your .\sources. file must define the SOURCES= macro
+!ENDIF
+
+!if ("$(BUILD_ALT_DIR)" != "" && "$(BUILD_ALT_DIR)" != "d")
+! if ("$(UMAPPL:*=X)" != "$(UMAPPL)")
+! error Can't use multiple UMAPPL with Alternate Directories (other than "d")
+! elseif ("$(UMTEST:*=X)" != "$(UMTEST)")
+! error Can't use multiple UMTEST with Alternate Directories (other than "d")
+! endif
+!endif
+
+!IFNDEF UMTYPE
+UMTYPE=nt
+!ENDIF
+
+!ifndef COFFBASE_TXT_FILE
+COFFBASE_TXT_FILE = $(BASEDIR)\public\sdk\lib\coffbase.txt
+!endif
+
+!IFNDEF UMBASE
+! IFDEF COFFBASE
+UMBASE=@$(COFFBASE_TXT_FILE),$(COFFBASE)
+! ELSE
+UMBASE=@$(COFFBASE_TXT_FILE),usermode
+! ENDIF
+!ENDIF
+
+LINKLIBS=$(LINKLIBS) $(PERFLIBS)
+
+!IF DEFINED(USE_MFC) || DEFINED(USE_MFCUNICODE)
+
+#---------------------------------------------------------#
+# this set of defines establishes the "correct" build #
+# environment for an app that needs to use MFC. the #
+# app's sources file only needs to specify USE_MFC=1 #
+# and this makefile will set the enviroment up correctly. #
+#---------------------------------------------------------#
+
+! ifndef UMENTRY
+! ifdef USE_MFC30
+UMENTRY=winmain
+! else
+! ifdef USE_MFCUNICODE
+UMENTRY=wwinmain
+! else
+UMENTRY=winmain
+! endif
+! endif
+! endif
+
+! if "$(TARGETTYPE)" == "DYNLINK"
+! ifndef DLLENTRY
+DLLENTRY=_DllMainCRTStartup
+! endif
+! endif
+
+! ifndef UMTYPE
+UMTYPE=windows
+! endif
+
+UMENTRYABS=
+
+# Allow other MFC's.
+# To do so, you need to:
+# 1. Define MFC_INCLUDES to point to your MFC headers.
+# 2. Define MFC_LIBS to point to your MFC libraries (specifically, the dll
+# library)
+# 3. Define USE_MSVCRT=1 if you don't want to link with the NT CRT DLL.
+#
+# Note:
+# There is only one type of build (_AFXDLL or MFC in a DLL linking to the
+# CRT in a dll).
+# You should disable the alternate MFC's if compiling for RISC platforms.
+# You need to handle specifying the correct libs for Check/Free and
+# Ansi/Unicode.
+
+! if !defined(USE_MSVCRT) && !defined(USE_NOLIBS) && !defined(USE_MSVCRT40) && !defined(USE_MSVCRT20)
+! if defined(USE_STATIC_MFC)
+USE_LIBCMT=1
+! else
+USE_CRTDLL=1
+! endif
+! endif
+
+MFC_FLAGS=$(MFC_FLAGS) -D_AFX_NOFORCE_LIBS
+
+! ifdef DEBUG_CRTS
+MFC_FLAGS=$(MFC_FLAGS) -D_AFX_ENABLE_INLINES
+! endif
+
+! IFNDEF NOMFCPDB
+USE_PDB=1
+! ENDIF
+
+! IFDEF USE_MFCUNICODE
+UNICODE=1
+MFC_FLAGS=$(MFC_FLAGS) -DUNICODE -D_UNICODE
+! ENDIF
+
+
+! ifdef USE_MFC30
+
+DCRT=
+
+MFC_FLAGS=$(MFC_FLAGS) -D_AFXDLL
+
+! ifndef MFC_INCLUDES # Allow MFC_INCLUDES override for MSN
+MFC_INCLUDES=$(SDK_INC_PATH)\mfc30
+! ifdef MFC_LANGUAGE
+MFC_INCLUDES=$(SDK_INC_PATH)\mfc30\l.$(MFC_LANGUAGE);$(MFC_INCLUDES)
+! endif
+! endif
+
+! if $(FREEBUILD)
+MFC_FLAGS = $(MFC_FLAGS) -DNDEBUG
+! else
+MFC_FLAGS = $(MFC_FLAGS) -D_DEBUG
+! endif
+
+! ifndef MFC_LIBS
+! if $(FREEBUILD)
+! ifdef USE_MFCUNICODE
+MFC_LIBS=$(SDK_LIB_PATH)\cfm30u.lib $(SDK_LIB_PATH)\cfmo30u.lib
+! else
+MFC_LIBS=$(SDK_LIB_PATH)\cfm30.lib $(SDK_LIB_PATH)\cfmo30.lib
+! endif
+! else
+! ifdef USE_MFCUNICODE
+MFC_LIBS=$(SDK_LIB_PATH)\cfm30ud.lib $(SDK_LIB_PATH)\cfmo30ud.lib
+! else
+MFC_LIBS=$(SDK_LIB_PATH)\cfm30d.lib $(SDK_LIB_PATH)\cfmo30d.lib
+! endif
+! endif
+! endif
+
+! else
+
+# Assume Latest MFC (4.0 for now)
+
+! ifndef USE_STATIC_MFC
+MFC_FLAGS=$(MFC_FLAGS) -D_AFXDLL
+LINKER_FLAGS = $(LINKER_FLAGS) /include:__afxForceSTDAFX
+! ifdef MFC_USRDLL
+MFC_FLAGS=$(MFC_FLAGS) -D_USRDLL
+LINKER_FLAGS = $(LINKER_FLAGS) /include:__afxForceUSRDLL
+! endif
+! endif
+
+# MFC 4 uses Native EH only
+
+USE_NATIVE_EH=1
+
+# UNICODE must use the UNICODE entrypoint
+
+! ifdef USE_MFCUNICODE
+! if "$(UMENTRY)" == "winmain"
+UMENTRY = wwinmain
+! else if "$(UMENTRY)" == "main"
+UMENTRY = wmain
+! endif
+! endif
+
+! ifndef MFC_VER
+MFC_VER=42
+! endif
+
+! ifndef MFC_INCLUDES # Allow MFC_INCLUDES override for MSN
+MFC_INCLUDES=$(SDK_INC_PATH)\mfc$(MFC_VER)
+! ifdef MFC_LANGUAGE
+MFC_INCLUDES=$(SDK_INC_PATH)\mfc$(MFC_VER)\l.$(MFC_LANGUAGE);$(MFC_INCLUDES)
+! endif
+! endif
+
+! ifndef MFC_LIBS
+! ifdef USE_STATIC_MFC
+
+! ifdef DEBUG_CRTS
+! ifdef USE_MFCUNICODE
+MFC_STATIC_LIB =
+MFC_LIBS=$(SDK_LIB_PATH)\uafxcwd.lib
+! else
+MFC_STATIC_LIB =
+MFC_LIBS=$(SDK_LIB_PATH)\nafxcwd.lib
+! endif
+! else
+! ifdef USE_MFCUNICODE
+MFC_STATIC_LIB =
+MFC_LIBS=$(SDK_LIB_PATH)\uafxcw.lib
+! else
+MFC_STATIC_LIB =
+MFC_LIBS=$(SDK_LIB_PATH)\nafxcw.lib
+! endif
+! endif
+
+! else # USE_STATIC_MFC
+
+! ifdef DEBUG_CRTS
+! ifdef USE_MFCUNICODE
+MFC_STATIC_LIB = $(SDK_LIB_PATH)\mfcs$(MFC_VER)ud.lib
+MFC_LIBS=$(SDK_LIB_PATH)\mfc$(MFC_VER)ud.lib \
+ $(SDK_LIB_PATH)\mfcd$(MFC_VER)ud.lib \
+ $(SDK_LIB_PATH)\mfcn$(MFC_VER)ud.lib \
+ $(SDK_LIB_PATH)\mfco$(MFC_VER)ud.lib
+! else
+MFC_STATIC_LIB = $(SDK_LIB_PATH)\mfcs$(MFC_VER)d.lib
+MFC_LIBS=$(SDK_LIB_PATH)\mfc$(MFC_VER)d.lib \
+ $(SDK_LIB_PATH)\mfcd$(MFC_VER)d.lib \
+ $(SDK_LIB_PATH)\mfcn$(MFC_VER)d.lib \
+ $(SDK_LIB_PATH)\mfco$(MFC_VER)d.lib
+! endif
+! else
+! ifdef USE_MFCUNICODE
+MFC_STATIC_LIB = $(SDK_LIB_PATH)\mfcs$(MFC_VER)u.lib
+MFC_LIBS=$(SDK_LIB_PATH)\mfc$(MFC_VER)u.lib
+! else
+MFC_STATIC_LIB = $(SDK_LIB_PATH)\mfcs$(MFC_VER).lib
+MFC_LIBS=$(SDK_LIB_PATH)\mfc$(MFC_VER).lib
+! endif
+! endif
+MFC_LIBS=$(MFC_STATIC_LIB) $(MFC_LIBS)
+
+! endif # USE_STATIC_MFC
+! endif # MFC_LIBS
+! endif # MFC 3/4
+
+!endif
+
+!ifdef USE_MFC30
+LIBC_DEFINES=
+!else
+! ifdef DEBUG_CRTS
+DCRT=d
+LIBC_DEFINES = -D_DEBUG
+! else
+DCRT=
+LIBC_DEFINES = -DNDEBUG
+! endif
+!endif
+
+# For all but X86, MSVCRT20==MSVCRT40==CRTDLL==MSVCRT
+!if "$(TARGET_DIRECTORY)" != "i386"
+! if defined(USE_MSVCRT20)
+USE_MSVCRT=1
+! undef USE_MSVCRT20
+! elseif defined(USE_MSVCRT40)
+USE_MSVCRT=1
+! undef USE_MSVCRT40
+! elseif defined(USE_CRTDLL)
+USE_MSVCRT=1
+! undef USE_CRTDLL
+! endif
+!endif
+
+!if defined(USE_CRTDLL)
+
+LIBC_LIB=$(CRT_LIB_PATH)\crtdll$(DCRT).lib $(CRT_LIB_PATH)\msvcirt$(DCRT).lib
+LIBC_DEFINES=$(LIBC_DEFINES) -D_DLL=1 -D_MT=1
+
+!elseif defined(USE_MSVCRT)
+
+LIBC_LIB=$(CRT_LIB_PATH)\msvcrt$(DCRT).lib $(CRT_LIB_PATH)\msvcirt$(DCRT).lib
+LIBC_DEFINES=$(LIBC_DEFINES) -D_DLL=1 -D_MT=1
+
+!elseif defined(USE_LIBCMT)
+
+LIBC_LIB=$(CRT_LIB_PATH)\libcmt$(DCRT).lib
+LIBC_DEFINES=$(LIBC_DEFINES) -D_MT=1
+
+!elseif defined(USE_LIBCNTPR)
+
+LIBC_LIB=$(CRT_LIB_PATH)\libcntpr.lib
+
+!elseif (defined(USE_NTDLL) || \
+ "$(TARGETTYPE)" == "DRIVER" || \
+ "$(TARGETTYPE)" == "EXPORT_DRIVER" || \
+ defined(USE_SYSDLL) )
+
+LIBC_DEFINES=$(LIBC_DEFINES) -D_DLL=1
+LIBC_LIB=
+
+!elseif defined(USE_NOLIBS) || \
+ "$(TARGETTYPE)" == "HAL" || \
+ "$(TARGETTYPE)" == "GDI_DRIVER"
+
+NO_NTDLL=1
+LIBC_LIB=
+
+!elseif defined(USE_MSVCRT20)
+
+LIBC_LIB=$(CRT_LIB_PATH)\msvcrt2$(DCRT).lib
+LIBC_DEFINES=$(LIBC_DEFINES) -D_DLL=1 -D_MT=1
+
+!elseif defined(USE_MSVCRT40)
+
+LIBC_LIB=$(CRT_LIB_PATH)\msvcrt4$(DCRT).lib
+LIBC_DEFINES=$(LIBC_DEFINES) -D_DLL=1 -D_MT=1
+
+!else
+
+LIBC_LIB=$(CRT_LIB_PATH)\libc$(DCRT).lib
+
+!endif
+
+!IFNDEF GPSIZE
+GPSIZE= 0
+!ENDIF
+
+!IFDEF CAIRO_PRODUCT
+CAIRO_LIB_PATH=$(BASEDIR)\public\sdk\lib\cairo\*
+!ENDIF # CAIRO_PRODUCT
+
+!ifdef NTLIBPATH
+LIBRARY_PATH = $(NTLIBPATH)\*\lib
+!else
+LIBRARY_PATH = $(SDK_LIB_PATH)
+!endif
+
+!if defined(USE_MFC) || defined(USE_MFCUNICODE)
+LIBC_LIB = $(MFC_LIBS) $(LIBC_LIB)
+!endif
+
+NT_LIBS=$(LIBRARY_PATH)\ntdll.lib
+GUI32_LIBS=$(LIBRARY_PATH)\gdi32.lib \
+ $(LIBRARY_PATH)\user32.lib
+
+!IFDEF CAIRO_PRODUCT
+NT_LIBS=$(NT_LIBS:lib\*\ntdll.lib=lib\cairo\*\ntdll.lib)
+!ENDIF
+
+NT_CRT=$(LIBRARY_PATH)\nt.lib
+WIN32_LIBS=$(LIBC_LIB) \
+ $(LIBRARY_PATH)\advapi32.lib \
+ $(LIBRARY_PATH)\kernel32.lib
+
+NTSS_LIBS=$(NT_LIBS) $(NT_CRT) $(SDK_LIB_PATH)\smdll.lib
+
+OS2_LIBS=$(NT_LIBS) $(SDK_LIB_PATH)\os2dll.lib
+
+POSIX_LIBS=$(NT_LIBS) $(SDK_LIB_PATH)\libcpsx.lib \
+ $(SDK_LIB_PATH)\psxdll.lib \
+ $(SDK_LIB_PATH)\psxrtl.lib
+
+!ifndef SUBSYSTEM_VERSION
+! ifndef EXPECTED_WINVER
+SUBSYSTEM_WINVER = ,4.00
+! else
+SUBSYSTEM_WINVER = ,$(EXPECTED_WINVER)
+! endif
+SUBSYSTEM_CONVER = ,4.00
+SUBSYSTEM_OS2VER =
+SUBSYSTEM_POSIXVER =
+SUBSYSTEM_NATVER = ,4.00
+!else
+SUBSYSTEM_WINVER = ,$(SUBSYSTEM_VERSION)
+SUBSYSTEM_CONVER = ,$(SUBSYSTEM_VERSION)
+SUBSYSTEM_OS2VER = ,$(SUBSYSTEM_VERSION)
+SUBSYSTEM_POSIXVER = ,$(SUBSYSTEM_VERSION)
+SUBSYSTEM_NATVER = ,$(SUBSYSTEM_VERSION)
+!endif
+
+!IF "$(UMTYPE)" == "nt"
+
+SUBSYSTEM=native$(SUBSYSTEM_NATVER)
+UMINCL=$(CRT_INC_PATH)
+
+STD_CALL_ENTRY=1
+UMENTRY=-entry:NtProcessStartup
+
+UMLIBS=$(UMLIBS) $(NT_LIBS) $(NT_CRT)
+
+!ELSEIF "$(UMTYPE)" == "windows"
+
+SUBSYSTEM=windows$(SUBSYSTEM_WINVER)
+UMINCL=$(CRT_INC_PATH)
+
+! IF "$(UMENTRY)" == "winmain"
+UMENTRY=-entry:WinMainCRTStartup
+! ELSEIF "$(UMENTRY)" == "wwinmain"
+UMENTRY=-entry:wWinMainCRTStartup
+! ELSEIF "$(UMENTRY)" == "wmain"
+UMENTRY=-entry:wmainCRTStartup
+! ELSEIF "$(UMENTRYABS)" == ""
+UMENTRY=-entry:mainCRTStartup
+! ELSE
+UMENTRY=-entry:$(UMENTRYABS)
+! ENDIF
+
+UMLIBS=$(UMLIBS) $(WIN32_LIBS) $(GUI32_LIBS)
+
+!ELSEIF "$(UMTYPE)" == "console"
+
+SUBSYSTEM=console$(SUBSYSTEM_CONVER)
+UMINCL=$(CRT_INC_PATH)
+
+! IF "$(UMENTRY)" == "winmain"
+UMENTRY=-entry:WinMainCRTStartup
+! ELSEIF "$(UMENTRY)" == "wwinmain"
+UMENTRY=-entry:wWinMainCRTStartup
+! ELSEIF "$(UMENTRY)" == "wmain"
+UMENTRY=-entry:wmainCRTStartup
+! ELSEIF "$(UMENTRYABS)" == ""
+UMENTRY=-entry:mainCRTStartup
+! ELSE
+UMENTRY=-entry:$(UMENTRYABS)
+! ENDIF
+
+UMLIBS=$(UMLIBS) $(WIN32_LIBS)
+
+!ELSEIF "$(UMTYPE)" == "ntss"
+
+SUBSYSTEM=native$(SUBSYSTEM_NATVER)
+UMINCL=$(CRT_INC_PATH)
+
+STD_CALL_ENTRY=1
+UMENTRY=-entry:NtProcessStartup
+
+UMLIBS=$(UMLIBS) $(NTSS_LIBS)
+
+!ELSEIF "$(UMTYPE)" == "os2"
+
+SUBSYSTEM=os2$(SUBSYSTEM_OS2VER)
+UMINCL=$(SDK_INC_PATH)\os2;$(CRT_INC_PATH)
+
+STD_CALL_ENTRY=1
+UMENTRY=-entry:NtProcessStartup
+
+UMLIBS=$(UMLIBS) $(OS2_LIBS)
+
+!ELSEIF "$(UMTYPE)" == "posix"
+
+SUBSYSTEM=posix$(SUBSYSTEM_POSIXVER)
+UMINCL=$(SDK_INC_PATH)\posix;$(CRT_INC_PATH)
+
+UMENTRY=-entry:__PosixProcessStartup
+
+UMLIBS=$(UMLIBS) $(POSIX_LIBS)
+
+!ELSE
+! ERROR Invalid UMTYPE value - $(UMTYPE)
+!ENDIF # UMTYPE tests
+
+
+#
+# If you edit this line you need to modify $(BASEDIR)\private\sdktools\build\build.c
+#
+
+!IFDEF NTINCPATH
+NTINCLUDES=$(OAK_INC_PATH);$(NTINCPATH)\$(TARGET_DIRECTORY)\inc
+!ELSE
+NTINCLUDES=$(OAK_INC_PATH);$(SDK_INC_PATH)
+!ENDIF
+
+!IFNDEF COMPILER_WARNINGS
+COMPILER_WARNINGS=-FI$(SDK_INC_PATH)\warning.h
+!ENDIF
+
+!IFDEF CAIRO_PRODUCT
+WIN32_DEFINE=-DWIN32=300 -D_CAIRO_=300 -DWINNT=1 -D_WIN32_WINNT=0x0400
+! IFNDEF NOT_UNICODE
+WIN32_DEFINE=$(WIN32_DEFINE) -DUNICODE -D_UNICODE
+! ENDIF
+
+!ELSE
+
+! IFDEF CHICAGO_PRODUCT
+NTINCLUDES=$(BASEDIR)\public\sdk\inc\chicago;$(BASEDIR)\public\sdk\inc\chicago\crt;$(NTINCLUDES)
+NO_NTDLL=1
+! IFNDEF WIN32_DEFINE
+WIN32_DEFINE=-DWIN32=200 -D_CHICAGO_=200 -D_WIN32_WINDOWS=0x040a
+! ENDIF
+
+! ELSE
+WIN32_DEFINE=-DWIN32=100 -D_NT1X_=100 -DWINNT=1 -D_WIN32_WINNT=0x0400
+CAIRO_LIB_PATH=$(BASEDIR)\public\sdk\lib
+! ENDIF
+
+!ENDIF
+
+INCLUDES = $(INCLUDES: =)
+NTINCLUDES = $(NTINCLUDES: =)
+UMINCL = $(UMINCL: =)
+MFC_INCLUDES = $(MFC_INCLUDES: =)
+USER_INCLUDES =$(USER_INCLUDES: =)
+
+# MFC and USER first
+
+INCPATH0=-I$(MFC_INCLUDES:;= -I) -I$(USER_INCLUDES:;= -I)
+INCPATH1=-I$(MFC_INCLUDES:;= -I) -I$(USER_INCLUDES:;= -I)
+
+# INCLUDES if set
+
+!ifdef INCLUDES
+INCPATH0 = $(INCPATH0) -I$(INCLUDES:;= -I)
+INCPATH1 = $(INCPATH1) -I$(INCLUDES:;= -I)
+!endif
+
+# Finally NT and UM
+
+INCPATH0=$(INCPATH0) -I$(NTINCLUDES:;= -I) -I$(UMINCL:;= -I)
+INCPATH1=$(INCPATH1) -I$(NTINCLUDES:;= -I) -I$(UMINCL:;= -I)
+
+# Remove empty "-I " settings (INCL/NTINCLUDES/UMINCL/MFC_INCLUDES macros may be empty above)
+
+INCPATH0=$(INCPATH0:-I =)
+INCPATH1=$(INCPATH1:-I =)
+
+!IFNDEF RELATIVE_DEPTH
+RELATIVE_DEPTH=..\..
+!ENDIF
+
+!IFNDEF DLLENTRY
+DLLENTRY=-noentry
+!ELSE
+! if "$(DLLENTRY:-entry:=)" == "$(DLLENTRY)"
+DLLENTRY=-entry:$(DLLENTRY)
+! endif
+!ENDIF
+
+!IFNDEF DLLBASE
+! IFDEF COFFBASE
+DLLBASE=@$(COFFBASE_TXT_FILE),$(COFFBASE)
+! ELSE
+DLLBASE=@$(COFFBASE_TXT_FILE),$(TARGETNAME)
+! ENDIF
+!ENDIF
+
+!IFNDEF DLLDEF
+DLLDEF=$(@B).def
+!ENDIF
+
+!IFNDEF BOOTBASE
+! IFDEF FRAZZLE
+BOOTBASE=0xd0100000,0xd0104000
+! ELSE
+BOOTBASE=0xd0ff0000,0xd0ff4000
+! ENDIF
+!ENDIF
+
+!IFNDEF DRIVERBASE
+DRIVERBASE=0x10000
+!ENDIF
+
+!IFNDEF HALBASE
+HALBASE=0x80010000
+!ENDIF
+
+#
+# Map lower case to upper case for variables that can be specified from the
+# command line.
+#
+
+!IFDEF nttest
+NTTEST=$(nttest)
+!ENDIF
+
+!IFDEF makedll
+MAKEDLL=$(makedll)
+!ENDIF
+
+!IFDEF umtest
+UMTEST=$(umtest)
+!ENDIF
+
+
+#
+# Include the list of object files (defined as the OBJECTS macro) that was
+# built by BUILD program, using the SOURCES= macro defined in the sources.
+# file. Use macro substitution to build the supported target objects.
+#
+
+!INCLUDE obj\_objects.mac
+
+!IF $(386)
+OBJECTS=$(386_OBJECTS)
+DLLLIBOBJECTS=$(DLLLIBOBJECTS) $(386_DLLLIBOBJECTS)
+!ELSEIF $(MIPS)
+OBJECTS=$(MIPS_OBJECTS)
+DLLLIBOBJECTS=$(DLLLIBOBJECTS) $(MIPS_DLLLIBOBJECTS)
+!ELSEIF $(ALPHA)
+OBJECTS=$(ALPHA_OBJECTS)
+DLLLIBOBJECTS=$(DLLLIBOBJECTS) $(ALPHA_DLLLIBOBJECTS)
+!ELSEIF $(PPC)
+OBJECTS=$(PPC_OBJECTS)
+DLLLIBOBJECTS=$(DLLLIBOBJECTS) $(PPC_DLLLIBOBJECTS)
+!ENDIF
+
+#
+# BUILD.EXE defines the NOLINK variable to disable the building of any
+# test executables when it is recursing on a dirs. file to build components
+# in subdirectories.
+#
+
+!IF "$(BUILDMSG)" != "Stop."
+! IFDEF NOLINK
+! UNDEF NTTEST
+! UNDEF MAKEDLL
+! ELSE
+! IFDEF nolink
+! UNDEF NTTEST
+! UNDEF MAKEDLL
+! ENDIF
+! ENDIF # DEF NOLINK
+!ENDIF # BUILDMSG != "Stop."
+
+DYNLINK_LIB=$(TARGETPATHLIB)\$(TARGET_DIRECTORY)\$(TARGETNAME).lib
+DYNLINK_EXP=$(TARGETPATHLIB)\$(TARGET_DIRECTORY)\$(TARGETNAME).exp
+
+#
+# Determine type of target link we are doing
+#
+!IF "$(TARGETTYPE)" == "PROGLIB"
+TARGETEXT=exe
+TARGETLIB=
+!ELSEIF "$(TARGETTYPE)" == "PROGRAM"
+TARGETEXT=exe
+TARGETLIB=
+!ELSEIF "$(TARGETTYPE)" == "DYNLINK"
+
+! IF "$(MAKEDLL)" != ""
+! IF "$(UMTYPE)" == "os2"
+TARGETLIB=$(SDK_LIB_PATH)\ntdll.lib
+
+! ELSEIF "$(UMTYPE)" == "posix"
+TARGETLIB=$(SDK_LIB_PATH)\libcpsx.lib $(SDK_LIB_PATH)\ntdll.lib
+
+! ELSEIF "$(TARGETNAME)" == "ntdll"
+TARGETLIB=
+
+! ELSEIF defined (USE_NTDLL) # USE_NTDLL never links with LIBC_LIB
+TARGETLIB=$(WIN32DLL_LIBS) $(SDK_LIB_PATH)\ntdll.lib
+
+! ELSEIF defined (USE_SYSDLL) # USE_SYSDLL uses either kernel32 (Win95) or ntdll (NT) for CRT support
+! if defined(CHICAGO_PRODUCT)
+TARGETLIB=$(WIN32DLL_LIBS) $(SDK_LIB_PATH)\kernel32.lib
+! else
+TARGETLIB=$(WIN32DLL_LIBS) $(SDK_LIB_PATH)\ntdll.lib
+! endif
+! ELSEIF defined (NO_NTDLL) # NO_NTDLL never links with ntdll
+TARGETLIB=$(WIN32DLL_LIBS) $(LIBC_LIB)
+
+! ELSE # Everything else uses ntdll after libc.
+TARGETLIB=$(WIN32DLL_LIBS) $(LIBC_LIB) $(SDK_LIB_PATH)\ntdll.lib
+
+! ENDIF
+! IF "$(TARGETEXT)" == ""
+TARGETEXT=dll
+! ENDIF
+! IFDEF CAIROLIB
+
+#
+# If we are linking a DLL then add in the cairo libs.
+#
+
+TARGETLIB=$(CAIROLIB) $(TARGETLIB)
+! ENDIF
+! IFDEF CAIRO_PRODUCT
+TARGETLIB=$(TARGETLIB:lib\*\ntdll.lib=lib\cairo\*\ntdll.lib)
+! ENDIF
+! ELSE # "$(MAKEDLL)" != ""
+TARGETEXT=lib
+TARGETLIB=
+! ENDIF # "$(MAKEDLL)" != ""
+
+!ELSEIF "$(TARGETTYPE)" == "LIBRARY"
+TARGETEXT=lib
+TARGETLIB=
+
+!ELSEIF "$(TARGETTYPE)" == "DRIVER"
+TARGETEXT=sys
+TARGETLIB=$(SDK_LIB_PATH)\ntoskrnl.lib $(SDK_LIB_PATH)\hal.lib
+
+!ELSEIF "$(TARGETTYPE)" == "EXPORT_DRIVER"
+! IF "$(MAKEDLL)" != ""
+TARGETEXT=sys
+TARGETLIB=$(SDK_LIB_PATH)\ntoskrnl.lib $(SDK_LIB_PATH)\hal.lib
+! ELSE
+TARGETEXT=lib
+TARGETLIB=
+! ENDIF
+
+!ELSEIF "$(TARGETTYPE)" == "HAL"
+! IF "$(MAKEDLL)" != ""
+TARGETEXT=dll
+TARGETLIB=$(SDK_LIB_PATH)\ntoskrnl.lib
+! ELSE
+TARGETEXT=lib
+TARGETLIB=
+! ENDIF
+
+!ELSEIF "$(TARGETTYPE)" == "BOOTPGM"
+TARGETEXT=sys
+
+!ELSEIF "$(TARGETTYPE)" == "MINIPORT"
+TARGETEXT=sys
+
+!ELSEIF "$(TARGETTYPE)" == "GDI_DRIVER"
+
+TARGETEXT=dll
+TARGETLIB=$(SDK_LIB_PATH)\win32k.lib
+!ENDIF # TARGETTYPE
+
+
+TARGET=
+
+!IF "$(TARGETTYPE)" != "UMAPPL_NOLIB"
+
+! IF "$(OBJECTS)" != ""
+TARGET=$(TARGETPATH)\*\$(TARGETNAME).$(TARGETEXT)
+! ENDIF
+
+!ENDIF # TARGETTYPE != UMAPPL_NOLIB
+
+!IFDEF NOTARGETLIB
+TARGETLIB=
+!ENDIF
+
+!IFNDEF MACHINE_TARGETLIBS
+MACHINE_TARGETLIBS=$(TARGETLIB) $(TARGETLIBS)
+!ENDIF
+
+
+TARGETOBJFILES=$(TARGETOBJFILES) $(OBJECTS)
+
+!IF "$(NOLINK)" == "" || \
+ ("$(NOLINK)" != "" && ("$(TARGETTYPE)"=="LIBRARY" || \
+ ( ("$(TARGETTYPE)"=="DYNLINK" || \
+ "$(TARGETTYPE)"=="PROGLIB" || \
+ "$(TARGETTYPE)"=="EXPORT_DRIVER" || \
+ "$(TARGETTYPE)"=="HAL") && \
+ "$(MAKEDLL)" == "") \
+ ) \
+ )
+
+
+! IF "$(NOLINK)" != "" && "$(TARGET)" != ""
+TARGETLIBFILES=$(TARGETLIBFILES) $(TARGETPATH)\*\$(TARGETNAME).lib
+! ELSE
+TARGETEXEFILES=$(TARGETEXEFILES) $(TARGET)
+! ENDIF
+
+!ENDIF # NOLINK == "" || building .lib file for dll
+
+!IF "$(NTTEST)" != ""
+
+TARGETOBJFILES=$(TARGETOBJFILES) $O\$(NTTEST).obj
+
+! IFNDEF NOLINK
+
+TARGETEXEFILES=$(TARGETEXEFILES) $O\$(NTTEST).exe
+
+! ENDIF # NDEF NOLINK
+!ENDIF # NTTEST != ""
+
+UMOBJFILES=
+UMEXEFILES=
+
+!IF "$(UMAPPLEXT)" == ""
+! IFDEF _DOT_COM_FILE
+UMAPPLEXT=.com
+! ELSE
+UMAPPLEXT=.exe
+! ENDIF
+!ENDIF
+
+!IF "$(UMAPPL)" != ""
+
+UMOBJFILES=obj\*\$(UMAPPL:*=.obj obj\*\).obj
+
+
+! IF "$(UMAPPLEXT)" == ".com"
+! IFNDEF NOLINK
+
+UMEXEFILES=obj\*\$(UMAPPL:*=.com obj\*\).com
+! ENDIF
+! ELSEIF "$(UMAPPLEXT)" == ".exe"
+! IFNDEF NOLINK
+
+UMEXEFILES=obj\*\$(UMAPPL:*=.exe obj\*\).exe
+! ENDIF
+! ELSEIF "$(UMAPPLEXT)" == ".scr"
+! IFNDEF NOLINK
+
+UMEXEFILES=obj\*\$(UMAPPL:*=.scr obj\*\).scr
+! ENDIF
+! ELSE
+! ERROR Unsupport UMAPPLEXT = $(UMAPPLEXT)
+
+! ENDIF # UMAPPLEXT
+!ENDIF # UMAPPL != ""
+
+!IF "$(UMTEST)" != ""
+
+UMOBJFILES=$(UMOBJFILES) obj\*\$(UMTEST:*=.obj obj\*\).obj
+
+! IFNDEF NOLINK
+
+UMEXEFILES=$(UMEXEFILES) obj\*\$(UMTEST:*=.exe obj\*\).exe
+
+! ENDIF
+!ENDIF
+
+!if "$(BUILD_ALT_DIR)" == "d"
+UMOBJFILES=$(UMOBJFILES:obj\*\=objd\*\)
+UMEXEFILES=$(UMEXEFILES:obj\*\=objd\*\)
+!endif
+
+#
+# Define NT_UP as 0 in environment to turn on MP.
+# If undefined or equal to 1, you get UP.
+#
+
+!IFNDEF NT_UP
+NT_UP=1
+!ENDIF
+
+!IF "$(NT_UP)"=="0"
+NT_UP_DEFINES=
+!ELSE
+NT_UP_DEFINES=-DNT_UP=1
+!ENDIF
+
+!IFNDEF NT_INST
+NT_INST=0
+!ENDIF
+
+!IFNDEF PNP_POWER
+PNP_POWER=0
+!ENDIF
+
+!IF "$(PNP_POWER)"=="0"
+NT_PNP_POWER_DEFINES=
+!ELSE
+NT_PNP_POWER_DEFINES=-D_PNP_POWER_=1
+!ENDIF
+
+!IFNDEF PNP_STUB_ENABLED
+PNP_STUB_ENABLED=0
+!ENDIF
+
+!IF "$(PNP_STUB_ENABLED)"=="0"
+NT_PNP_STUB_DEFINES=
+!ELSE
+NT_PNP_STUB_DEFINES=-D_PNP_POWER_STUB_ENABLED_=1
+!ENDIF
+
+#
+# User defined variables (environment variables or command line).
+# A cpu specific definition will take precedence over the MSC definition.
+#
+# xxx_WARNING_LEVEL
+# xxx_OPTIMIZATION
+# xxx_CPPFLAGS
+#
+
+!IFNDEF MSC_WARNING_LEVEL
+MSC_WARNING_LEVEL=/W3
+!ENDIF
+
+DEFAULT_MSC_OPT = /Oxs
+
+#
+# End of user defined variables.
+#
+
+STD_DEFINES=-DCONDITION_HANDLING=1 $(NT_UP_DEFINES) \
+ -DNT_INST=$(NT_INST) $(WIN32_DEFINE) $(NT_PNP_POWER_DEFINES) \
+ $(NT_PNP_STUB_DEFINES)
+
+!IFNDEF NOT_LEAN_AND_MEAN
+STD_DEFINES = $(STD_DEFINES) -DWIN32_LEAN_AND_MEAN=1
+!ENDIF
+
+!IFNDEF CBSTRING
+! IF "$(MAJORCOMP)" == "ntos" || "$(MAJORCOMP)" == "NTOS" || "$(DDKBUILDENV)" != ""
+CBSTRING= -cbstring
+! ELSE
+CBSTRING=
+! ENDIF
+!ENDIF
+
+!IF "$(NTDEBUG)" == "retail"
+TARGET_DBG_DEFINES= -DDEVL=1
+DBGFLAGS=
+!ELSEIF "$(NTDEBUG)" == ""
+TARGET_DBG_DEFINES= -DDEVL=1
+DBGFLAGS=
+!ELSEIF "$(NTDEBUG)" == "ntsdnodbg"
+DBGFLAGS= /Zi
+TARGET_DBG_DEFINES= -DDEVL=1
+!ELSEIF "$(NTDEBUG)" == "ntsd"
+DBGFLAGS=/Zi
+TARGET_DBG_DEFINES= -DDBG=1 -DDEVL=1
+! UNDEF NTBBT
+!ELSEIF "$(NTDEBUG)" == "cvp" || "$(NTDEBUG)" == "sym"
+DBGFLAGS= /Zd
+TARGET_DBG_DEFINES= -DDBG=1 -DDEVL=1
+! UNDEF NTBBT
+!ELSE
+! ERROR NTDEBUG macro can be either "retail", "", "ntsd", "cvp" or "sym" or "ntsdnodbg"
+!ENDIF
+
+!IF "$(NTDEBUGTYPE)" == "windbg"
+LINKER_DBG_TYPE = -debugtype:cv
+!ELSEIF "$(NTDEBUGTYPE)" == "ntsd" || "$(NTDEBUGTYPE)" == "coff" || "$(NTDEBUGTYPE)" == ""
+LINKER_DBG_TYPE = -debugtype:coff
+!ELSEIF "$(NTDEBUGTYPE)" == "both"
+LINKER_DBG_TYPE = -debugtype:both
+!ELSE
+! ERROR NTDEBUGTYPE macro can one of "", "ntsd", "coff", "windbg" or "both"
+!ENDIF
+
+
+!IF "$(PRECOMPILED_OPTION)" == ""
+! IF "$(PRECOMPILED_INCLUDE)" != ""
+! IF "$(PRECOMPILED_INCLUDE)" != "$(PRECOMPILED_INCLUDE:.hxx=)"
+PRECOMPILED_CXX=1
+! ENDIF
+! IF "$(PRECOMPILED_INCLUDE)" != "$(PRECOMPILED_INCLUDE:.cxx=)"
+PRECOMPILED_CXX=1
+! ENDIF
+! IF "$(PRECOMPILED_INCLUDE)" != "$(PRECOMPILED_INCLUDE:.cpp=)"
+PRECOMPILED_CXX=1
+! ENDIF
+! IF "$(PRECOMPILED_PCH)" == ""
+PRECOMPILED_PCH=$(PRECOMPILED_INCLUDE:.hxx=.pch)
+PRECOMPILED_PCH=$(PRECOMPILED_PCH:.h=.pch)
+PRECOMPILED_PCH=$(PRECOMPILED_PCH:.cxx=.pch)
+PRECOMPILED_PCH=$(PRECOMPILED_PCH:.cpp=.pch)
+PRECOMPILED_PCH=$(PRECOMPILED_PCH:.c=.pch)
+PRECOMPILED_PCH=$(PRECOMPILED_PCH:..\=)
+! ENDIF
+! IF "$(PRECOMPILED_OBJ)" == ""
+PRECOMPILED_OBJ=$(PRECOMPILED_PCH:.pch=.obj)
+! ENDIF
+! ENDIF
+!ENDIF
+
+!IF "$(PRECOMPILED_OPTION)" == ""
+! IF "$(PRECOMPILED_INCLUDE)" != ""
+! IF "$(PRECOMPILED_PCH)" != ""
+HEADERFILE=/Fp$O\$(PRECOMPILED_PCH)
+! ENDIF
+! IF "$(PRECOMPILED_OBJ)" != ""
+HEADEROBJNAME=$O\$(PRECOMPILED_OBJ)
+HEADEROBJ=/Fo$(MAKEDIR)\$(HEADEROBJNAME)
+! ENDIF
+! IF "$(PRECOMPILED_CXX)" == ""
+PRECOMPILED=/Yu$(PRECOMPILED_INCLUDE:..\=) $(HEADERFILE)
+PRECOMPILED_CXX=
+! ELSE
+PRECOMPILED=
+PRECOMPILED_CXX=/Yu$(PRECOMPILED_INCLUDE:..\=) $(HEADERFILE)
+! ENDIF
+PRECOMPILED_TARGET=$O\$(PRECOMPILED_PCH)
+! ELSE
+! IF "$(PRECOMPILED_INCLUDE)" != ""
+! IF "$(PRECOMPILED_CXX)" == ""
+PRECOMPILED=/Yu$(PRECOMPILED_INCLUDE)
+PRECOMPILED_CXX=
+! ELSE
+PRECOMPILED=
+PRECOMPILED_CXX=/Yu$(PRECOMPILED_INCLUDE)
+! ENDIF
+! ENDIF
+! ENDIF
+!ELSE
+! IF "$(PRECOMPILED_CXX)" == ""
+PRECOMPILED=$(PRECOMPILED_OPTION)
+PRECOMPILED_CXX=
+! ELSE
+PRECOMPILED=
+PRECOMPILED_CXX=$(PRECOMPILED_OPTION)
+! ENDIF
+PRECOMPILED_TARGET=$(PRECOMPILED_TARGET)
+! IF "$(PRECOMPILED_TARGET)" != ""
+HEADERFILE=/Fp$(PRECOMPILED_TARGET)
+! ENDIF
+! IF "$(PRECOMPILED_OBJ)" != ""
+HEADEROBJNAME=$(PRECOMPILED_OBJ)
+HEADEROBJ=/Fo$(HEADEROBJNAME)
+! ENDIF
+!ENDIF
+
+!IF ("$(PRECOMPILED_CXX)" == "") && ("$(USECXX_FLAG)" == "")
+PRECOMPILED_FLAG=$(PRECOMPILED_FLAG) /Tc
+!ELSE
+PRECOMPILED_FLAG=$(PRECOMPILED_FLAG) /Tp
+!ENDIF
+
+!IF "$(NTNOPCH)" != ""
+PRECOMPILED=
+PRECOMPILED_CXX=
+!ENDIF
+
+#
+# Set linker options
+#
+
+#
+# Merge _PAGE with PAGE, _TEXT with .text, and make sure
+# INIT sections are discardable
+#
+
+!ifdef LINKER_NOREF
+LINK_REF_FLAG=-OPT:NOREF
+!else
+LINK_REF_FLAG=-OPT:REF
+!endif
+
+LINK_LIB_IGNORE_FLAG=-IGNORE:4001,4037,4039,4065,4070,4078,4087,4089
+
+!ifdef USE_INCREMENTAL_LINKING
+USE_PDB = 1 # PDB's are required to use Incremental linking
+LINK_INCREMENTAL_FLAG = -OPT:NOREF \
+ $(LINK_LIB_IGNORE_FLAG)
+!else
+LINK_INCREMENTAL_FLAG = $(LINK_REF_FLAG) \
+ -INCREMENTAL:NO \
+ -FORCE:MULTIPLE \
+ -RELEASE \
+ -FULLBUILD \
+ $(LINK_LIB_IGNORE_FLAG)
+!endif
+
+!ifdef BACKGROUND_USE
+LINKER_FLAGS = $(LINKER_FLAGS) -WS:aggressive
+!endif
+
+LINKER_FLAGS = $(LINKER_FLAGS) \
+ -MERGE:_PAGE=PAGE \
+ -MERGE:_TEXT=.text \
+ -SECTION:INIT,d \
+ $(LINK_INCREMENTAL_FLAG) \
+ -NODEFAULTLIB
+
+!ifndef VC40_HACK
+LINKER_MERGE_RDATA=-MERGE:.rdata=.text
+!endif
+
+!ifndef NO_OPTIDATA
+LINKER_OPTIDATA=-optidata
+!endif
+
+!IF "$(NTDEBUG)" == "ntsd" || "$(NTDEBUG)" == "ntsdnodbg"
+LINKER_DBG_SECTION=-debug:notmapped,FULL
+!ELSEIF "$(NTDEBUG)" == "retail"
+LINKER_DBG_SECTION=-debug:NONE
+!ELSE
+LINKER_DBG_SECTION=-debug:notmapped,MINIMAL
+!ENDIF
+
+!IF "$(NTLEANANDMEAN)" == "leanandmean"
+! IF "$(NTDEBUGTYPE)" == "coff" || \
+ "$(NTTEST)"=="ntoskrnl" || \
+ "$(NTTEST)"=="ntkrnlmp" || \
+ "$(TARGETTYPE)"=="DRIVER" || \
+ "$(TARGETTYPE)"=="MINIPORT" || \
+ "$(TARGETTYPE)"=="EXPORT_DRIVER" || \
+ "$(TARGETTYPE)"=="HAL"
+LINKER_DBG_SECTION=-debug:notmapped,minimal
+! ELSE
+LINKER_DBG_SECTION=-debug:none
+! ENDIF # NTDEBUGTYPE != coff || TARGETTYPE
+!ENDIF # NTLEANANDMEAN == leanandmean
+
+LINK_OS_VERSIONS = -version:4.00 -osversion:4.00
+
+LINKER_FLAGS = $(LINKER_FLAGS) $(LINKER_DBG_SECTION) $(LINKER_DBG_TYPE) $(LINK_OS_VERSIONS)
+LIBRARIAN_FLAGS = $(LIBRARIAN_FLAGS) $(LINK_LIB_IGNORE_FLAG) -nodefaultlib
+
+LIBRARIAN_FLAGS = -debugtype:cv $(LIBRARIAN_FLAGS) -machine:$(TARGET_DIRECTORY)
+
+LIBRARIAN=lib -out:$@ $(LIBRARIAN_FLAGS)
+LINKER=link -out:$@ -machine:$(TARGET_DIRECTORY)
+
+!if defined(NTPROFILEINPUT) && ("$(TARGETTYPE)" == "LIBRARY")
+! message NTPROFILEINPUT s/b removed in: $(MAKEDIR).
+!endif
+
+!IF defined(NTPROFILEINPUT) || defined(EXEPROFILEINPUT)
+ORDER=-order:@$(@B).prf
+!ENDIF
+
+!IFDEF DLLORDER
+ORDER=-order:@$(DLLORDER)
+!ENDIF
+
+!IFDEF EXPORT_DRIVER_ORDER
+ORDER=-order:@$(EXPORT_DRIVER_ORDER)
+!ENDIF
+
+!IFNDEF DRIVER_ALIGNMENT
+DRIVER_ALIGNMENT=0x20
+!ENDIF
+
+!ifndef HAL_ALIGNMENT
+HAL_ALIGNMENT=0x20
+!endif
+
+!ifndef KERNEL_ALIGNMENT
+KERNEL_ALIGNMENT=0x40
+!endif
+
+#
+# Standard inference rules for C files that produce object files.
+#
+
+.SUFFIXES: .cxx .cpp .c .f .rc .s .asm .obj .exe .res .p .tdl .odl .rcpp .thk
+
+#
+# Processor specific control and options.
+#
+
+!include $(TARGET_DIRECTORY)mk.inc
+
+!if defined(CHICAGO_PRODUCT) || defined(USE_MAPSYM)
+MAPSYM_CMD = mapsym -o $(@D)\$(@B).sym $(@D)\$(@B).map
+LINKER_FLAGS=$(LINKER_FLAGS) -map
+BINPLACE_FLAGS = $(BINPLACE_FLAGS) -W
+!else
+MAPSYM_CMD =
+!endif
+
+
+!if "$(USE_PDB)" == ""
+LINKER_FLAGS = $(LINKER_FLAGS) -PDB:NONE
+!elseif ("$(PDB_ROOT)" != "") && ("$(CAIRO_PRODUCT)" == "")
+LINKER_FLAGS = $(LINKER_FLAGS) -PDB:$(PDB_ROOT)\$(TARGETEXT)^\
+PDB_ROOTUM = -PDB:$(PDB_ROOT)\$(UMAPPLEXT:.=)^\
+!elseif ("$(CAIROPDB_ROOT)" != "") && ("$(CAIRO_PRODUCT)" != "")
+LINKER_FLAGS = $(LINKER_FLAGS) -PDB:$(CAIROPDB_ROOT)\$(TARGETEXT)^\
+PDB_ROOTUM = -PDB:$(CAIROPDB_ROOT)\$(UMAPPLEXT:.=)^\
+!endif
+
+LIBRARY_OBJS=$(IMPLIB_OBJS) $(MFC_STATIC_LIB) $(LINKLIBS) $(OBJECTS)
+
+LINKER_FLAGS = $(LINKER_FLAGS) $(LINKER_MERGE_RDATA)
+
+#
+# Clear the suffixes list so we can ensure only pass zero stuff will be built
+#
+!IFDEF PASS0ONLY
+.SUFFIXES:
+!ENDIF
+
+!ifndef BINPLACE_PLACEFILE
+BINPLACE_PLACEFILE = $(BASEDIR)\public\sdk\lib\placefil.txt
+!endif
+
+BINPLACE_FLAGS = -P $(BINPLACE_PLACEFILE) $(BINPLACE_FLAGS)
+
+!IFDEF UP_DRIVER
+BINPLACE_FLAGS= $(BINPLACE_FLAGS) -U
+DRIVER_SWITCH = -driver:uponly
+!else
+DRIVER_SWITCH = -driver
+!ENDIF
+
+!IF "$(_NTTREE)" != ""
+
+! IFDEF ALT_PROJECT_TARGET
+_NTTREE= $(_NTTREE)\$(ALT_PROJECT_TARGET)
+! if "$(_NTTREE_NO_SPLIT)" != ""
+_NTTREE_NO_SPLIT= $(_NTTREE_NO_SPLIT)\$(ALT_PROJECT_TARGET)
+! endif
+! ENDIF
+
+# If NTDBGFILES is defined then use binplace to split the symbols.
+# Define BINPLACE flags as needed if separate .DBG file requested.
+
+! IFDEF NTDBGFILES
+BINPLACE_DBGFLAGS_NT = -S $(_NTTREE)\Symbols
+! else
+BINPLACE_DBGFLAGS_NT=
+! ENDIF
+
+BINPLACE_CMD_NT=binplace -R $(_NTTREE) $(BINPLACE_DBGFLAGS_NT) $(BINPLACE_FLAGS) $@
+BINPLACE_CMD_NS=binplace -R $(_NTTREE_NO_SPLIT) -Q $(BINPLACE_FLAGS) $@
+
+BINPLACE_CMD = $(BINPLACE_CMD_NT)
+
+! if "$(_NTTREE_NO_SPLIT)" != ""
+BINPLACE_CMD = $(BINPLACE_CMD) & $(BINPLACE_CMD_NS)
+! endif
+
+!ELSE
+BINPLACE_CMD=
+!ENDIF
+
+!ifdef NTDUMPAMAP
+MAPDUMP_CMD = link -dump -map $@ | sort /R /+62 > $(_NTDUMPAMAP)\$(@B).srt
+!else
+MAPDUMP_CMD =
+!endif
+
+#
+# Define this macro so including make files can supply a yes prompt
+# as appropriate. Put the "yes." file in a visible place for OEM's
+# so they can make too.
+#
+
+!IFNDEF NOPASS0
+
+#
+# Pass Zero Inference Rules: IDL files (MIDL) and MC files
+#
+
+.SUFFIXES: .idl .mc .odl .tdl .asn .thk
+
+! IF $(386)
+PASS0_OBJECTS=$(PASS0_386_OBJECTS)
+! ELSEIF $(MIPS)
+PASS0_OBJECTS=$(PASS0_MIPS_OBJECTS)
+! ELSEIF $(ALPHA)
+PASS0_OBJECTS=$(PASS0_ALPHA_OBJECTS)
+! ELSEIF $(PPC)
+PASS0_OBJECTS=$(PASS0_PPC_OBJECTS)
+! ENDIF
+
+!ENDIF # IFNDEF NOPASS0
+
+MIDL = midl
+MKTYPLIB = mktyplib
+ASN = asn1
+!IFDEF USE_OLE_MC
+MC = mc -o
+!ELSE
+MC = mc
+!ENDIF
+
+!IF "$(IDL_TYPE)" == "ole" || "$(IDL_TYPE)" == ""
+IDL_TYPE=OLE
+!ELSEIF "$(IDL_TYPE)" == "rpc"
+IDL_TYPE=RPC
+!ENDIF
+
+!IFNDEF PASS0_HEADERDIR
+PASS0_HEADERDIR=.
+!ENDIF
+
+!IFNDEF MIDL_OPTIMIZATION
+MIDL_OPTIMIZATION=-Oicf
+!ENDIF
+
+!IF "$(IDL_TYPE)" == "OLE"
+
+! IF DEFINED(PASS0_CLIENTDIR) || DEFINED(PASS0_SERVERDIR)
+! ERROR PASS0_CLIENTDIR and PASS0_SERVERDIR can only be used with IDL_TYPE=RPC!
+! ENDIF
+
+! IFNDEF PASS0_SOURCEDIR
+PASS0_SOURCEDIR=.
+! ENDIF
+
+! IFNDEF MIDL_UUIDDIR
+MIDL_UUIDDIR=$(PASS0_SOURCEDIR)
+! ENDIF
+
+! IFNDEF NO_PASS0_RULES
+.idl{$(PASS0_HEADERDIR)}.h:
+ $(MIDL) \
+ -Zp8 \
+ $(INCPATH0) \
+ -char unsigned \
+ -ms_ext -c_ext \
+ -proxy $(PASS0_SOURCEDIR)\$(<:.idl=_p.c) \
+ -dlldata $(PASS0_SOURCEDIR)\dlldata.c \
+ -iid $(MIDL_UUIDDIR)\$(<:.idl=_i.c) \
+ -header $@ \
+ -cpp_cmd $(TARGET_CPP) \
+ $(C_DEFINES) \
+ $(MIDL_FLAGS) \
+ $(MIDL_OPTIMIZATION) \
+ $<
+! ENDIF
+
+!ELSEIF "$(IDL_TYPE)" == "RPC"
+
+! IF DEFINED(PASS0_SOURCEDIR) || DEFINED(MIDL_UUIDDR)
+! ERROR PASS0_SOURCEDIR and MIDL_UUIDDIR can only be used with IDL_TYPE=OLE!
+! ENDIF
+
+! IFNDEF PASS0_CLIENTDIR
+PASS0_CLIENTDIR=$(TARGETPATH)
+! ENDIF
+
+! IFNDEF PASS0_SERVERDIR
+PASS0_SERVERDIR=$(PASS0_CLIENTDIR)
+! ENDIF
+
+! IFNDEF NO_PASS0_RULES
+.idl{$(PASS0_HEADERDIR)}.h:
+ $(MIDL) \
+ -Zp8 \
+ $(INCPATH0) \
+ -char unsigned \
+ -ms_ext -c_ext \
+ -cstub $(PASS0_CLIENTDIR)\$(<:.idl=_c.c) \
+ -sstub $(PASS0_SERVERDIR)\$(<:.idl=_s.c) \
+ -header $@ \
+ -cpp_cmd $(TARGET_CPP) \
+ $(C_DEFINES) \
+ $(MIDL_FLAGS) \
+ $(MIDL_OPTIMIZATION) \
+ $<
+! ENDIF
+
+!ELSE
+
+! ERROR Invalid IDL_TYPE value. Supported values: OLE and RPC.
+
+!ENDIF # IDL_TYPE
+
+
+!IFNDEF NO_PASS0_RULES
+
+! IFDEF PASS0_SOURCEDIR
+MC_SOURCEDIR=$(PASS0_SOURCEDIR)
+! ELSE
+MC_SOURCEDIR=$(PASS0_CLIENTDIR)
+! ENDIF
+
+{..\}.mc{$(PASS0_HEADERDIR)}.h:
+ $(MC) -h $(PASS0_HEADERDIR) -r $(MC_SOURCEDIR) $(MC_FLAGS) $<
+
+.mc{$(PASS0_HEADERDIR)}.h:
+ $(MC) -h $(PASS0_HEADERDIR) -r $(MC_SOURCEDIR) $(MC_FLAGS) $<
+
+MKTYPLIB_CPP = $(TARGET_CPP)
+
+.odl{$O\}.tlb:
+ $(MKTYPLIB) \
+ $(INCPATH0) \
+ /tlb $@ \
+ -cpp_cmd $(TARGET_CPP) \
+ $(MKTYPLIB_FLAGS) \
+ $<
+
+{..\}.odl{$O\}.tlb:
+ $(MKTYPLIB) \
+ $(INCPATH0) \
+ /tlb $@ \
+ -cpp_cmd $(TARGET_CPP) \
+ $(MKTYPLIB_FLAGS) \
+ $<
+
+.tdl{$O\}.tlb:
+ $(MKTYPLIB) \
+ $(INCPATH0) \
+ /tlb $@ \
+ -cpp_cmd $(TARGET_CPP) \
+ $(MKTYPLIB_FLAGS) \
+ $<
+
+{..\}.tdl{$O\}.tlb:
+ $(MKTYPLIB) \
+ $(INCPATH0) \
+ /tlb $@ \
+ -cpp_cmd $(TARGET_CPP) \
+ $(MKTYPLIB_FLAGS) \
+ $<
+
+
+# OSSINFO must be set in the *environment* for the ASN compiler to find its
+# configuration file, $(OSSINFO)\ossinfo.
+
+! ifndef OSSINFO
+OSSINFO=$(BASEDIR)\public\sdk\lib
+! endif
+
+! ifndef ASNDEFAULTFILE
+ASNDEFAULTFILE=$(OSSINFO)\asn1dflt.z4
+! endif
+
+! ifndef ASNSYNTAX
+ASNSYNTAX=-1990
+! endif
+
+ASNFLAGS=$(ASNDEFAULTFILE) $(ASNSYNTAX) $(ASNFLAGS)
+
+# if ASNDBG is explicitly set, let that control whether the voluminous ASN
+# symbols are supressed. Otherwise, suppress the symbols for free builds.
+
+! ifdef ASNDBG
+! if $(ASNDBG) == 0
+ASNFLAGS=-minimize $(ASNFLAGS)
+! endif
+! elseif $(FREEBUILD)
+ASNFLAGS=-minimize $(ASNFLAGS)
+! endif
+
+{}.asn{$(PASS0_HEADERDIR)}.h:
+ $(ASN) $(ASNFLAGS) -out $(PASS0_HEADERDIR)\$(@B) $<
+
+!ENDIF
+
+#
+# Default language ID to US English (0x0409)
+#
+
+!IFDEF RCCODEPAGE
+RCOPTIONS=$(RCOPTIONS) -c $(RCCODEPAGE)
+!ENDIF
+
+!IFNDEF RCNOFONTMAP
+RCOPTIONS=-z "MS Sans Serif,Helv/MS Shell Dlg" $(RCOPTIONS)
+!ENDIF
+
+RC_COMPILER=rc -l 409 $(RCOPTIONS)
+
+{..\}.rc{$O\}.res:
+ $(RC_COMPILER) -r -fo $(@R).tmp $(CDEFINES) $(INCPATH0) $<
+ @cvtres -nologo -machine:$(TARGET_DIRECTORY:i386=ix86) -readonly -out:$@ $(@R).tmp
+!IF "$(NTKEEPRESOURCETMPFILES)" == ""
+ @-erase $(@R).tmp
+!ENDIF
+
+{}.rc{$O\}.res:
+ $(RC_COMPILER) -r -fo $(@R).tmp $(CDEFINES) $(INCPATH0) $<
+ @cvtres -nologo -machine:$(TARGET_DIRECTORY:i386=ix86) -readonly -out:$@ $(@R).tmp
+!IF "$(NTKEEPRESOURCETMPFILES)" == ""
+ @-erase $(@R).tmp
+!ENDIF
+
+{..\}.rc.rcpp:
+ $(RC_COMPILER) -r -p -fo $(@R).tmp $(CDEFINES) $(INCPATH0) $<
+
+{}.rc.rcpp:
+ $(RC_COMPILER) -r -p -fo $(@R).tmp $(CDEFINES) $(INCPATH0) $<
+
+.thk{$O\}.asm:
+ thunk -o $@ $<
+
+!IFNDEF NO_C_RULES
+
+! ifdef MPNMAKE
+ECHO_RSP =
+CL_RSP =
+CLCOD_RSP =
+LINK_RSP =
+! else
+ECHO_RSP = $O\echo.msg
+CL_RSP = $O\cl.rsp
+CLCOD_RSP = $O\clcod.rsp
+LINK_RSP = $O\lnk.rsp
+! endif
+
+{$O\}.cxx{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_CXX_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\$(O)\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\}.cxx{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_CXX_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\..\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\$(TARGET_DIRECTORY)\}.cxx{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_CXX_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\$<
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{$O\}.cpp{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_CXX_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\$(O)\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\}.cpp{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_CXX_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\..\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\$(TARGET_DIRECTORY)\}.cpp{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_CXX_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\$<
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{}.cxx{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_CXX_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{$(TARGET_DIRECTORY)\}.cxx{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_CXX_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\$<
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{}.cpp{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_CXX_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{$(TARGET_DIRECTORY)\}.cpp{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_CXX_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\$<
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\}.cxx{}.cod:
+ $(CXX_COMPILER_NAME) @<<$(CLCOD_RSP) /Fc $(MAKEDIR)\..\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\}.cxx{}.pp:
+ $(CXX_COMPILER_NAME) @<<$(CL_RSP) /E $(MAKEDIR)\$< > $@
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\}.cpp{}.cod:
+ $(CXX_COMPILER_NAME) @<<$(CLCOD_RSP) /Fc $(MAKEDIR)\..\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\}.cpp{}.pp:
+ $(CXX_COMPILER_NAME) @<<$(CL_RSP) /E $(MAKEDIR)\$< > $@
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{}.cxx{}.cod:
+ $(CXX_COMPILER_NAME) @<<$(CLCOD_RSP) /Fc $(MAKEDIR)\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{}.cxx{}.pp:
+ $(CXX_COMPILER_NAME) @<<$(CL_RSP) /E $(MAKEDIR)\$< > $@
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{}.cpp{}.cod:
+ $(CXX_COMPILER_NAME) @<<$(CLCOD_RSP) /Fc $(MAKEDIR)\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{}.cpp{}.pp:
+ $(CXX_COMPILER_NAME) @<<$(CL_RSP) /E $(MAKEDIR)\$< > $@
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\}.c{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG)
+<<NOKEEP
+ @$(C_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(USECXX_FLAG) $(MAKEDIR)\..\$(<F)
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\$(TARGET_DIRECTORY)\}.c{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG)
+<<NOKEEP
+ @$(C_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(USECXX_FLAG) $(MAKEDIR)\$<
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{$O\}.c{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG)
+<<NOKEEP
+ @$(C_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\$(O)\$(<F)
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{}.c{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG)
+<<NOKEEP
+ @$(C_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(USECXX_FLAG) $(MAKEDIR)\$(<F)
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{$(TARGET_DIRECTORY)\}.c{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG)
+<<NOKEEP
+ @$(C_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(USECXX_FLAG) $(MAKEDIR)\$<
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\}.c{}.cod:
+ $(C_COMPILER_NAME) @<<$(CLCOD_RSP) /Fc $(USECXX_FLAG) $(MAKEDIR)\..\$(<F)
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\$(TARGET_DIRECTORY)\}.c{}.cod:
+ $(C_COMPILER_NAME) @<<$(CLCOD_RSP) /Fc $(USECXX_FLAG) $(MAKEDIR)\$<
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\}.c{}.pp:
+ $(C_COMPILER_NAME) @<<$(CL_RSP) /E $(USECXX_FLAG) $(MAKEDIR)\$< > $@
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\$(TARGET_DIRECTORY)\}.c{}.pp:
+ $(C_COMPILER_NAME) @<<$(CL_RSP) /E $(USECXX_FLAG) $(MAKEDIR)\$< > $@
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{}.c{}.cod:
+ $(C_COMPILER_NAME) @<<$(CLCOD_RSP) /Fc $(USECXX_FLAG) $(MAKEDIR)\$(<F)
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{$(TARGET_DIRECTORY)\}.c{}.cod:
+ $(C_COMPILER_NAME) @<<$(CLCOD_RSP) /Fc $(USECXX_FLAG) $(MAKEDIR)\$<
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{}.c{}.pp:
+ $(C_COMPILER_NAME) @<<$(CL_RSP) /E $(USECXX_FLAG) $(MAKEDIR)\$< > $@
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{$(TARGET_DIRECTORY)\}.c{}.pp:
+ $(C_COMPILER_NAME) @<<$(CL_RSP) /E $(USECXX_FLAG) $(MAKEDIR)\$< > $@
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+
+{}.c{$(TARGET_DIRECTORY)\}.pp:
+ $(C_COMPILER_NAME) @<<$(CL_RSP) /E $(USECXX_FLAG) $(MAKEDIR)\$< > $@
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+
+
+!ENDIF # NO_C_RULES
+
+!if "$(NTNOFUZZYLOOKUP)"=="1"
+LIBRARY_OBJS=
+!else
+LIBRARY_OBJS = $(LIBRARY_OBJS) $(HEADEROBJNAME)
+!endif
+
+!ifdef USE_INCREMENTAL_LINKING
+IMPLIB_DEPEND =
+!else
+IMPLIB_DEPEND = $(LIBRARY_OBJS)
+!endif
+
+#
+# Standard inference rule for generating machine specific def files.
+#
+
+.SUFFIXES: .def .src
+
+CPPXX = $(C_PREPROCESSOR_FLAGS:/Tc=)
+CPPXX = $(CPPXX:-Tc=)
+
+{..\}.src{$O}.def:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG) /EP $<
+<<NOKEEP
+ @$(C_PREPROCESSOR_NAME) @<<$(CL_RSP) /Tc$< > $@
+$(CPPXX: =
+)
+<<NOKEEP
+
+{}.src{$O}.def:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG) /EP $<
+<<NOKEEP
+ @$(C_PREPROCESSOR_NAME) @<<$(CL_RSP) /Tc$< > $@
+$(CPPXX: =
+)
+<<NOKEEP
+
+{..\}.def{$O}.def:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG) /EP $<
+<<NOKEEP
+ @$(C_PREPROCESSOR_NAME) @<<$(CL_RSP) /Tc$< > $@
+$(CPPXX: =
+)
+<<NOKEEP
+
+{}.def{$O}.def:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG) /EP $<
+<<NOKEEP
+ @$(C_PREPROCESSOR_NAME) @<<$(CL_RSP) /Tc$< > $@
+$(CPPXX: =
+)
+<<NOKEEP
+
+!ifdef NO_BROWSER_FILE
+BROWSERFILE=
+!else
+! ifdef BROWSER_INFO
+! ifndef BROWSERFILE
+BROWSERFILE = $(TARGETPATH)\$(TARGET_DIRECTORY)\$(TARGETNAME).bsc
+! endif
+! else
+BROWSERFILE=
+! endif
+!endif
+
+#
+# Standard inference rule for User Mode object files that produce User Mode
+# image files
+#
+
+{$O\}.obj{$O\}$(UMAPPLEXT):
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+$(PDB_ROOTUM)
+$(ORDER: =
+)
+$(LINKGPSIZE: =
+)
+$(LINKER_OPTIDATA)
+-base:$(UMBASE)
+-subsystem:$(SUBSYSTEM)
+$(UMENTRY)
+$(HEADEROBJNAME: =
+)
+$(UMRES: =
+)
+$<
+$(UMOBJS: =
+)
+$(UMLIBS: =
+)
+$(CRTLIBS: =
+)
+$(LINKLIBS: =
+)
+<<NOKEEP
+ $(MAPSYM_CMD)
+ $(BINPLACE_CMD)
+
+#
+# Standard list of targets: all, clean and loc. all is the default target.
+#
+
+!IFNDEF PASS0ONLY
+
+
+all: obj\_objects.mac \
+ $(NTTARGETFILE0) \
+ $(PASS0_OBJECTS) \
+ $(PRECOMPILED_TARGET) \
+ $(HEADEROBJNAME) \
+ $(TARGETOBJFILES) \
+ $(TARGETLIBFILES) \
+ $(NTTARGETFILE1) \
+ $(TARGETEXEFILES) \
+ $(BROWSERFILE) \
+ $(UMOBJFILES) \
+ $(UMEXEFILES) \
+ $(NTTARGETFILES) $(MISCFILES)
+! IFDEF MISCFILES
+! IFDEF _NTTREE
+ @for %i in ($(MISCFILES)) do @echo binplace -R $(_NTTREE) $(BINPLACE_FLAGS) $(BINPLACE_DBGFLAGS_NT) %i & binplace -R $(_NTTREE) $(BINPLACE_FLAGS) $(BINPLACE_DBGFLAGS_NT) %i
+! ENDIF
+! ENDIF
+! IF "$(BUILDMSG)" != ""
+ @ech ; $(BUILDMSG) ;
+! ENDIF
+
+!ELSE # PASS0ONLY
+
+all: $(NTTARGETFILE0) \
+ $(PASS0_OBJECTS)
+! IF "$(BUILDMSG)" != ""
+ @ech ; $(BUILDMSG) ;
+! ENDIF
+
+!ENDIF # PASS0ONLY
+
+update:
+ @ech Updating library. ;
+
+obj\_objects.mac: $(SOURCES_USED)
+ @echo Rebuilding obj\_objects.mac from $(SOURCES_USED).
+ @build -Of >nul 2>&1
+ @echo obj\_objects.mac was rebuilt, please reinvoke NMAKE
+ @md \ >nul 2>nul
+
+loc:
+ @-loc *.h $(SOURCES)
+
+print:
+ @-ppr *.h $(SOURCES)
+
+!IFDEF NTTARGETFILES
+! INCLUDE .\makefile.inc
+!ELSE
+! IFDEF NTTARGETFILE0
+! INCLUDE .\makefile.inc
+! ELSE
+! IFDEF NTTARGETFILE1
+! INCLUDE .\makefile.inc
+! ENDIF
+! ENDIF
+!ENDIF
+
+!IF "$(PRECOMPILED_INCLUDE)" != ""
+! ifdef PRECOMPILED_SOURCEFILE
+$(PRECOMPILED_TARGET) $(HEADEROBJNAME): $(PRECOMPILED_INCLUDE)
+ @type <<
+$(ECHO_PRECOMPILED_MSG1)
+<<NOKEEP
+ @$(C_COMPILER_NAME) @<< $(PRECOMPILED_FLAG) $(PRECOMPILED_SOURCEFILE)
+$(C_COMPILER_FLAGS: =
+) /Yl$(TARGETNAME) /Yc$(?F) $(HEADERFILE) $(HEADEROBJ)
+<<NOKEEP
+! else
+$(PRECOMPILED_TARGET) $(HEADEROBJNAME): $(PRECOMPILED_INCLUDE)
+ @type <<$O\pch_hdr.src
+$(ECHO_PRECOMPILED_MSG2)
+
+#include "$(?F)"
+
+<<NOKEEP
+ @$(C_COMPILER_NAME) @<< $(PRECOMPILED_FLAG)<<$O\pch_hdr.src
+$(C_COMPILER_FLAGS: =
+) /Yl$(TARGETNAME) /Yc$(?F) $(HEADERFILE) $(HEADEROBJ)
+<<NOKEEP
+#include "$(?F)"
+<<NOKEEP
+! endif
+!ENDIF
+
+!IFNDEF NOLINK
+
+! IF "$(UMTEST)" != "" || "$(UMAPPL)" != ""
+
+$(UMEXEFILES): $(UMLIBS) $(CRTLIBS) $(LINKLIBS)
+
+! ENDIF
+!ENDIF
+
+!if defined(BROWSER_INFO) && !defined(NO_BROWSER_FILE)
+$(BROWSERFILE) : $O\*.sbr
+ -bscmake -nologo -o $(BROWSERFILE) @<<$O\bscmake.rsp
+$(**: =
+)
+<<NOKEEP
+!endif
+
+#
+# These dependencies produce the target binaries from the object files.
+# These will trigger the sources to object inference rules to generate the
+# object files.
+#
+
+!IF "$(TARGET)" != ""
+! IF "$(TARGETTYPE)"=="PROGLIB"
+$(TARGET:.exe=.lib) $(TARGET:.exe=.exp): $(DLLDEF) $(IMPLIB_DEPEND)
+ -lib -out:$(@R).lib @<<
+$(LIBRARIAN_FLAGS: =
+)
+-def:$(DLLDEF)
+$(LIBRARY_OBJS: =
+)
+<<NOKEEP
+$(TARGET): $(OBJECTS) $(TARGETPATH)\$(TARGET_DIRECTORY)\$(TARGETNAME).exp $(UMRES) $(UMLIBS) $(CRTLIBS) $(MACHINE_TARGETLIBS) $(LINKLIBS)
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+$(ORDER: =
+)
+$(LINKGPSIZE: =
+)
+$(HEADEROBJNAME: =
+)
+$(LINKER_OPTIDATA)
+-subsystem:$(SUBSYSTEM)
+-base:$(UMBASE)
+$(UMENTRY: =
+)
+$(**: =
+)
+<<NOKEEP
+ $(MAPSYM_CMD)
+ $(BINPLACE_CMD)
+
+! ELSEIF "$(TARGETTYPE)"=="PROGRAM"
+
+$(TARGET): $(UMRES) $(OBJECTS) $(CRTLIBS) $(UMLIBS) $(MACHINE_TARGETLIBS) $(LINKLIBS)
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+-subsystem:$(SUBSYSTEM)
+-base:$(UMBASE)
+$(ORDER: =
+)
+$(LINKGPSIZE: =
+)
+$(UMENTRY: =
+)
+$(LINKER_OPTIDATA)
+$(HEADEROBJNAME: =
+)
+$(**: =
+)
+<<NOKEEP
+ $(MAPSYM_CMD)
+ $(BINPLACE_CMD)
+
+! ELSEIF "$(TARGETTYPE)"=="DYNLINK"
+
+! IF "$(DLLLIBOBJECTS)" == " "
+
+$(DYNLINK_LIB) $(DYNLINK_EXP) : $(DLLDEF) $(IMPLIB_DEPEND)
+ -lib -out:$(DYNLINK_LIB) @<<
+$(LIBRARIAN_FLAGS: =
+)
+-def:$(DLLDEF)
+$(LIBRARY_OBJS: =
+)
+<<NOKEEP
+
+! ELSE # "$(DLLLIBOBJECTS)" == " "
+
+$(DYNLINK_LIB) $(DYNLINK_EXP) : $(DLLDEF) $(IMPLIB_DEPEND) $(DLLLIBOBJECTS)
+ -lib -out:$(DYNLINK_LIB) @<<
+$(LIBRARIAN_FLAGS: =
+)
+-def:$(DLLDEF)
+$(LIBRARY_OBJS: =
+)
+<<NOKEEP
+ -lib -out:$(DYNLINK_LIB) @<<
+$(LIBRARIAN_FLAGS: =
+)
+$(@R).lib
+$(DLLLIBOBJECTS)
+<<NOKEEP
+
+! ENDIF # "$(DLLLIBOBJECTS)" == " "
+
+! IF "$(MAKEDLL)" != ""
+
+$(TARGET): $(DYNLINK_EXP) $(OBJECTS) $(LINKLIBS) $(CRTLIBS) $(MACHINE_TARGETLIBS)
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+-dll
+$(ORDER: =
+)
+$(LINKER_OPTIDATA)
+-base:$(DLLBASE)
+-subsystem:$(SUBSYSTEM)
+$(DLLENTRY: =
+)
+$(HEADEROBJNAME: =
+)
+$(**: =
+)
+<<NOKEEP
+ $(MAPSYM_CMD)
+ $(BINPLACE_CMD)
+ $(MAPDUMP_CMD)
+
+! ENDIF # "$(MAKEDLL)" != ""
+
+! ELSEIF "$(TARGETTYPE)"=="LIBRARY"
+
+$(TARGET): $(OBJECTS)
+ @-erase $@ >nul 2>nul
+ -$(LIBRARIAN) @<<
+$(HEADEROBJNAME: =
+)
+$(**: =
+)
+<<NOKEEP
+
+! ELSEIF "$(TARGETTYPE)"=="DRIVER" || \
+ "$(TARGETTYPE)"=="MINIPORT"
+
+$(TARGET): $(OBJECTS) $(MACHINE_TARGETLIBS) $(CRTLIBS)
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+$(ORDER: =
+)
+$(SECTION_INFO1)
+$(SECTION_INFO2)
+$(LINKER_OPTIDATA)
+$(DRIVER_SWITCH)
+-align:$(DRIVER_ALIGNMENT)
+-subsystem:native$(SUBSYSTEM_NATVER)
+-base:$(DRIVERBASE)
+-entry:DriverEntry$(ENTRY_SUFFIX)
+-out:$(TARGET)
+$(HEADEROBJNAME: =
+)
+$(**: =
+)
+<<NOKEEP
+ $(MAPSYM_CMD)
+ $(BINPLACE_CMD)
+ $(MAPDUMP_CMD)
+
+! ELSEIF "$(TARGETTYPE)"=="GDI_DRIVER"
+
+$(TARGET): $(OBJECTS) $(MACHINE_TARGETLIBS) $(CRTLIBS) $(GDI_DRIVER_LIBS)
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+-dll
+$(ORDER: =
+)
+$(SECTION_INFO1)
+$(SECTION_INFO2)
+$(LINKER_OPTIDATA)
+$(DRIVER_SWITCH)
+-align:$(DRIVER_ALIGNMENT)
+-subsystem:native$(SUBSYSTEM_NATVER)
+-base:$(DRIVERBASE)
+-entry:DrvEnableDriver$(GDI_ENTRY_SUFFIX)
+-out:$(TARGET)
+$(HEADEROBJNAME: =
+)
+$(**: =
+)
+<<NOKEEP
+ $(MAPSYM_CMD)
+ $(BINPLACE_CMD)
+ $(MAPDUMP_CMD)
+
+! ELSEIF "$(TARGETTYPE)"=="EXPORT_DRIVER"
+
+$(DYNLINK_EXP) $(DYNLINK_LIB) : $(DLLDEF) $(OBJECTS) $(LINKLIBS) $(DLLLIBOBJECTS)
+ -lib -out:$(DYNLINK_LIB) @<<
+$(LIBRARIAN_FLAGS: =
+)
+-def:$(DLLDEF)
+$(OBJECTS)
+$(LINKLIBS)
+<<NOKEEP
+! if "$(DLLLIBOBJECTS)" != " "
+ -lib -out:$(DYNLINK_LIB) @<<
+$(LIBRARIAN_FLAGS: =
+)
+$(DYNLINK_LIB)
+$(DLLLIBOBJECTS)
+<<NOKEEP
+! endif
+! IF "$(MAKEDLL)" != ""
+$(TARGET): $(DYNLINK_EXP) $(OBJECTS) $(CRTLIBS) $(MACHINE_TARGETLIBS) $(LINKLIBS)
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+$(ORDER: =
+)
+$(LINKER_OPTIDATA)
+$(DRIVER_SWITCH)
+-align:$(DRIVER_ALIGNMENT)
+-subsystem:native$(SUBSYSTEM_NATVER)
+-base:$(DRIVERBASE)
+-entry:DriverEntry$(ENTRY_SUFFIX)
+-out:$(TARGET)
+$(HEADEROBJNAME: =
+)
+$(**: =
+)
+<<NOKEEP
+ $(MAPSYM_CMD)
+ $(BINPLACE_CMD)
+! ENDIF
+
+! ELSEIF "$(TARGETTYPE)"=="HAL"
+
+! IF "$(MAKEDLL)" == ""
+$(TARGET) $(TARGET:.lib=.exp): $(DLLDEF) $O\*.obj
+ -lib -out:$(@R).lib @<<
+$(LIBRARIAN_FLAGS: =
+)
+-def:$(DLLDEF)
+$O\*.obj
+<<NOKEEP
+! ELSE
+$(TARGET:.dll=.lib) $(TARGET:.dll=.exp): $(DLLDEF) $O\*.obj
+ -lib -out:$(@R).lib @<<
+$(LIBRARIAN_FLAGS: =
+)
+-def:$(DLLDEF)
+$O\*.obj
+<<NOKEEP
+
+$(TARGET): $(TARGETPATH)\$(TARGET_DIRECTORY)\$(TARGETNAME).exp $(OBJECTS) $(CRTLIBS) $(MACHINE_TARGETLIBS) $(LINKLIBS)
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+$(LINKER_OPTIDATA)
+$(DRIVER_SWITCH)
+-align:$(HAL_ALIGNMENT)
+-subsystem:$(SUBSYSTEM)
+-base:$(HALBASE)
+-miscrdata
+-dll
+-entry:HalInitSystem$(ENTRY_SUFFIX)
+-out:$(TARGET)
+$(**: =
+)
+<<NOKEEP
+ $(BINPLACE_CMD)
+ $(MAPDUMP_CMD)
+! ENDIF
+
+! ELSEIF "$(TARGETTYPE)"=="BOOTPGM"
+
+$(TARGET): $(OBJECTS) $(CRTLIBS) $(MACHINE_TARGETLIBS) $(LINKLIBS)
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+$(DRIVER_SWITCH)
+-subsystem:$(SUBSYSTEM)
+-base:$(BOOTBASE)
+-entry:_start
+-map:$(@R).map
+$(**: =
+)
+<<NOKEEP
+
+! ENDIF
+!ENDIF
+
+!IFNDEF NOLINK
+
+! IF "$(NTTEST)" != ""
+
+! IF "$(TARGETPATH)"=="..\..\mpobj"
+KERNEL_DIR=mpobj
+KERNEL_TYPE=mp
+! ELSE
+KERNEL_DIR=obj
+KERNEL_TYPE=up
+! ENDIF
+
+obj\$(TARGET_DIRECTORY)\$(NTTEST).exe: $(NTRES) obj\$(TARGET_DIRECTORY)\$(NTTEST).obj \
+ $(RELATIVE_DEPTH)\$(KERNEL_DIR)\$(TARGET_DIRECTORY)\*.lib \
+ $(LINKLIBS) \
+ $(BASEDIR)\public\sdk\lib\$(TARGET_DIRECTORY)\hal.lib \
+ $(BASEDIR)\public\sdk\lib\$(TARGET_DIRECTORY)\ntoskrnl.exp \
+ $(BASEDIR)\public\sdk\lib\$(TARGET_DIRECTORY)\lsakrnlp.lib \
+ $(BASEDIR)\public\sdk\lib\$(TARGET_DIRECTORY)\libcntpr.lib
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+$(ORDER: =
+)
+$(LINKGPSIZE: =
+)
+$(NTTEST_LINK_OPTIONS: =
+)
+$(LINKER_OPTIDATA)
+$(DRIVER_SWITCH)
+-align:$(KERNEL_ALIGNMENT)
+-subsystem:$(SUBSYSTEM)
+-miscrdata
+$(**: =
+)
+<<NOKEEP
+ $(BINPLACE_CMD)
+ $(MAPDUMP_CMD)
+
+! ENDIF
+!ENDIF
+
+$O\*.res : $(MASTER_VERSION_FILE)