📄 makefile.def
字号:
#
# 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
!IF !$(MPPC)
DYNLINK_EXP=$(TARGETPATHLIB)\$(TARGET_DIRECTORY)\$(TARGETNAME).exp
!ENDIF
#
# 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
! ELSE # "$(MAKEDLL)" != ""
TARGETEXT=lib
TARGETLIB=
! ENDIF # "$(MAKEDLL)" != ""
!ELSEIF "$(TARGETTYPE)" == "LIBRARY"
TARGETEXT=lib
TARGETLIB=
!ELSEIF "$(TARGETTYPE)" == "DRIVER"
TARGETEXT=sys
!if "$(DRIVERTYPE)" == "wdm" || "$(DRIVERTYPE)" == "WDM"
TARGETLIB=$(DDK_LIB_PATH)\wdm.lib
!ELSE
TARGETLIB=$(DDK_LIB_PATH)\ntoskrnl.lib $(DDK_LIB_PATH)\hal.lib $(DDK_LIB_PATH)\wmilib.lib
!ENDIF
!ELSEIF "$(TARGETTYPE)" == "EXPORT_DRIVER"
! IF "$(MAKEDLL)" != ""
TARGETEXT=sys
!if "$(DRIVERTYPE)" == "wdm" || "$(DRIVERTYPE)" == "WDM"
TARGETLIB=$(DDK_LIB_PATH)\wdm.lib
!ELSE
TARGETLIB=$(DDK_LIB_PATH)\ntoskrnl.lib $(DDK_LIB_PATH)\hal.lib $(DDK_LIB_PATH)\wmilib.lib
!ENDIF
! ELSE
TARGETEXT=lib
TARGETLIB=
! ENDIF
!ELSEIF "$(TARGETTYPE)" == "HAL"
! IF "$(MAKEDLL)" != ""
TARGETEXT=dll
TARGETLIB=$(DDK_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
!ifdef USE_LIBCNTPR_FOR_GDI_DRIVER_CRTS
TARGETLIB=$(SDK_LIB_PATH)\libcntpr.lib $(TARGETLIB)
!endif
!ENDIF # TARGETTYPE
TARGET=
!IF "$(TARGETTYPE)" != "UMAPPL_NOLIB"
! IF "$(OBJECTS)" != ""
TARGET=$(TARGETPATH)\*\$(TARGETNAME).$(TARGETEXT)
! ELSEIF "$(OBJLIBFILES)" != "" && "$(TARGETTYPE)" == "LIBRARY"
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)" == ""
UMAPPLEXT=.exe
!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
!IFDEF USE_LINT
! IFNDEF LINT_OUTPUT
LINT_OUTPUT=$(TARGETNAME)
! ENDIF
! IFNDEF LINT_EXT
LINT_EXT=tmp
! ENDIF
! IF "$(LINT_TYPE)" == "all"
TARGETLOBFILES1=
TARGETLOBFILES2=$O\$(LINT_OUTPUT).$(LINT_EXT)
! ELSEIF "$(LINT_TYPE)" == "lob"
TARGETLOBFILES1=$(TARGETOBJFILES:.obj=.lob)
TARGETLOBFILES2=
! ELSE
TARGETLOBFILES1=
TARGETLOBFILES2=$(TARGETOBJFILES:.obj=.lob)
! ENDIF
!ELSE
TARGETLOBFILES1=
TARGETLOBFILES2=
!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
#
# 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
!IF "$(NTDEBUG)" == ""
TARGET_DBG_DEFINES= -DDEVL=1
DBGFLAGS=
!ELSEIF "$(NTDEBUG)" == "ntsdnodbg"
DBGFLAGS= /Zi
TARGET_DBG_DEFINES= -DDEVL=1
!ELSEIF "$(NTDEBUG)" == "ntsd" || "$(NTDEBUG)" == "cvp" || "$(NTDEBUG)" == "sym"
DBGFLAGS=/Zi
TARGET_DBG_DEFINES= -DDBG=1 -DDEVL=1
! UNDEF NTBBT
!ELSE
! ERROR NTDEBUG macro can be either "ntsd", "cvp" or "sym" or "ntsdnodbg"
!ENDIF
!ifdef OFFICIAL_BUILD_MACHINE
TARGET_DBG_DEFINES=$(TARGET_DBG_DEFINES) -DOFFICIAL_BUILD=1
!endif
!if !$(COFF_SUPPORTED)
LINKER_DBG_TYPE=-debugtype:cv
USE_PDB=1
!else
!IF "$(NTDEBUGTYPE)" == "windbg"
LINKER_DBG_TYPE = -debugtype:cv
!if !defined(USE_CV)
USE_PDB=1
!endif
!ELSEIF "$(NTDEBUGTYPE)" == "ntsd" || "$(NTDEBUGTYPE)" == "coff" || "$(NTDEBUGTYPE)" == ""
LINKER_DBG_TYPE = -debugtype:coff
COFF_OUTPUT_ONLY=1
!ELSEIF "$(NTDEBUGTYPE)" == "both"
LINKER_DBG_TYPE = -debugtype:both
!if !defined(USE_CV)
USE_PDB=1
!endif
!ELSE
! ERROR NTDEBUGTYPE macro can one of "", "ntsd", "coff", "windbg" or "both"
!ENDIF
!endif # COFF_SUPPORTED
!IF "$(NTNOPCH)" != ""
PRECOMPILED=
PRECOMPILED_CXX=
PRECOMPILED_INCLUDE=
!ENDIF
!IF "$(PRECOMPILED_OPTION)" == ""
! IF "$(PRECOMPILED_INCLUDE)" != ""
! IF "$(PRECOMPILED_INCLUDE)" != "$(PRECOMPILED_INCLUDE:.hxx=)"
PRECOMPILED_CXX=1
! ENDIF
! IF "$(PRECOMPILED_INCLUDE)" != "$(PRECOMPILED_INCLUDE:.hpp=)"
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:.hpp=.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 !$(MPPC)
! IF "$(PRECOMPILED_CXX)" == ""
PRECOMPILED=/Yu$(PRECOMPILED_INCLUDE:..\=) $(HEADERFILE)
PRECOMPILED_CXX=
! ELSE
PRECOMPILED=
PRECOMPILED_CXX=/Yu$(PRECOMPILED_INCLUDE:..\=) $(HEADERFILE)
! ENDIF
! ENDIF
PRECOMPILED_TARGET=$O\$(PRECOMPILED_PCH)
! ELSE
! IF "$(PRECOMPILED_INCLUDE)" != ""
! IF !$(MPPC)
! IF "$(PRECOMPILED_CXX)" == ""
PRECOMPILED=/Yu$(PRECOMPILED_INCLUDE)
PRECOMPILED_CXX=
! ELSE
PRECOMPILED=
PRECOMPILED_CXX=/Yu$(PRECOMPILED_INCLUDE)
! ENDIF
! 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
USECXX_FLAG=$(USECXX_FLAG:p=P)
!IF ("$(PRECOMPILED_CXX)" == "") && ("$(USECXX_FLAG)" == "")
PRECOMPILED_FLAG=$(PRECOMPILED_FLAG) /Tc
!ELSE
PRECOMPILED_FLAG=$(PRECOMPILED_FLAG) /Tp
!ENDIF
#
# Set linker options
#
#
# Merge _PAGE with PAGE, _TEXT with .text, and make sure
# INIT sections are discardable
#
!if !$(MPPC) && !$(IA64)
!ifdef LINKER_NOREF
LINK_REF_FLAG=-OPT:NOREF -OPT:NOICF
!else
! ifdef LINKER_NOICF
LINK_REF_FLAG=-OPT:REF -OPT:NOICF
! else
LINK_REF_FLAG=-OPT:REF -OPT:ICF
! endif
!endif
!endif
!ifdef NOT_TERMINAL_SERVER_AWARE
TSLINKER_FLAG=
!else
TSLINKER_FLAG=/tsaware
!endif
!ifdef LINKER_STACKSIZE
LINKER_FLAGS = $(LINKER_FLAGS) $(LINKER_STACKSIZE)
!else
!ifdef LINKER_STACKCOMMITSIZE
LINKER_FLAGS = $(LINKER_FLAGS) -STACK:262144,$(LINKER_STACKCOMMITSIZE)
!else
LINKER_FLAGS = $(LINKER_FLAGS) -STACK:262144,4096
!endif
!endif
LINK_LIB_IGNORE_FLAG=-IGNORE:4001,4037,4039,4044,4065,4070,4078,4087,4089,4198
!IF $(IA64)
LINK_LIB_IGNORE_FLAG= $(LINK_LIB_IGNORE_FLAG),4108,4088
!ENDIF
!ifdef LINK_NO_RELEASE
LINK_RELEASE=
!else
LINK_RELEASE=/release
!endif
!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) \
$(LINK_LIB_IGNORE_FLAG) \
-INCREMENTAL:NO \
-FULLBUILD \
-FORCE:MULTIPLE \
-NOCOMMENT \
$(LINK_RELEASE)
!endif
!ifdef BACKGROUND_USE
LINKER_FLAGS = $(LINKER_FLAGS) -WS:aggressive
!endif
!if $(MPPC)
LINKER_FLAGS = $(LINKER_FLAGS) \
-SECTION:INIT,d \
$(LINK_INCREMENTAL_FLAG) \
-NODEFAULTLIB
!else
LINKER_FLAGS = $(LINKER_FLAGS) \
-MERGE:_PAGE=PAGE \
-MERGE:_TEXT=.text \
-SECTION:INIT,d \
$(LINK_INCREMENTAL_FLAG) \
-NODEFAULTLIB
# -miscrdata
!ifndef NO_OPTIDATA
LINKER_OPTIDATA=-optidata
!else
LINKER_OPTIDATA=-nooptidata
!endif
!endif
LINK_OS_VERSIONS = -version:5.00 -osversion:5.00
!IF $(MPPC)
#*****MacPPC linker flags
TARGET_DIRECTORY=mppc
UMLIBS=$(UMLIBS:*=mppc)
LINKLIBS=$(LINKLIBS:*=mppc)
DLLDEF=$(DLLDEF:*=mppc)
PRECOMPILED_TARGET= $(PRECOMPILED_TARGET:*=mppc)
PRECOMPILED_OBJ= $(PRECOMPILED_OBJ:*=mppc)
PRECOMPILED_OPTION= $(PRECOMPILED_OPTION:*=mppc)
#
# Set the default creator and type. If were building a dll then use
# cfmg and shlb, for apps use ???? and APPL.
#
!ifndef MAC_CREATOR
!if "$(TARGETTYPE)" == "DYNLINK"
MAC_CREATOR=cfmg
!else
MAC_CREATOR=????
!endif
!endif
!ifndef MAC_TYPE
!if "$(TARGETTYPE)" == "DYNLINK"
MAC_TYPE=shlb
!else
MAC_TYPE=APPL
!endif
!endif
#
# MAC_CREATOR and MAC_TYPE may contain embedded spaces. To do this we need to
# enclose their operand in quotes. Now get rid of the quotes leaving the spaces
#
MAC_CREATOR=$(MAC_CREATOR:^"=)
MAC_TYPE=$(MAC_TYPE:^"=)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -