Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

317 lines
9.4 KiB

#
# sources.vip
#
# Common sources directives for all of Viper.
# The line
#
# !include "$(NTMAKEENV)\sources.vip"
#
# should be the first line in all of Viper's sources files
#
# Bob Atkinson
# April, 1997
MAJORCOMP =mts
SUBSYSTEM_VERSION =4.00
USE_PDB_TO_COMPILE =1
USE_MAPSYM =1
NT_UP =0
!ifndef KERNELMODE
#######################################################################################
#
# User mode: Do not Use the DLL version of the C runtime
#
CRTLIBS =
#######################################################################################
#
# User mode: Set the DLL entry point as sent to the linker
#
DLLENTRY =_DllMainCRTStartup
!else
#######################################################################################
#
# Kernel mode: Use the auxiliary kernel mode C runtime support
#
!if $(AMD64) || $(386)
CRTLIBS =$(SDK_LIB_PATH)\libcntpr.lib
!endif
!endif
#######################################################################################
#
# As we don't want any proxy or stub files (at least for now;
# an interesting idea to add same!) we make the file names
# used for these file to be nul. MIDL_OPTIMIZATION is a macro
# that happens to get passed through LAST (!) to the MIDL compiler,
# allowing us to override pretty much anything that makefile.def
# is doing instead.
#
# REVIEW: Make this a better flag, something like VIPER_MIDL_FLAGS
# Some of this has now been done, but many sources files
# should be updated.
#
MIDL_DEFAULT_OPTIMIZATION =/Oicf
MIDL_HEADER_AND_IID =$(MIDL_DEFAULT_OPTIMIZATION) /dlldata nul /proxy nul
MIDL_HEADER_ONLY =$(MIDL_DEFAULT_OPTIMIZATION) /iid nul /dlldata nul /proxy nul
MIDL_EVERYTHING =$(MIDL_DEFAULT_OPTIMIZATION)
# This is the macro that the IDL build line actually sees. It's
# last on the command line, so takes precedence.
#
MIDL_OPTIMIZATION =$(MIDL_DEFAULT_OPTIMIZATION) $(VIPER_MIDL_FLAGS)
# If you want in your sources file to control which files MIDL generates, then
# set the VIPER_MIDL_FLAGS macro. The following:
#
# VIPER_MIDL_FLAGS =$(MIDL_HEADER_ONLY)
# VIPER_MIDL_FLAGS =$(MIDL_HEADER_AND_IID)
# VIPER_MIDL_FLAGS =$(MIDL_EVERYTHING)
#
# are the common settings, though fancier ones are possible by setting various
# of the generated files to be built to the file named 'nul'. The default is
# to only emit the header; if you want for example the typelib you need to override.
#
VIPER_MIDL_FLAGS =$(MIDL_HEADER_ONLY)
#######################################################################################
#
# Generate stack checking calls in the checked builds. A custom
# __chkstk is linked to expose uses of uninitialized local variables.
#
VIPDEBUGLIBS =
USE_STACK_CHECK =
!if $(FREEBUILD) || defined(KERNELMODE)
!else
!if $(386)
VIPDEBUGLIBS = $(VIPLIBS)\chkstk.lib
USE_STACK_CHECK = /Ge
!endif #386
!endif #FREEBUILD
#######################################################################################
#
# Set DDKBUILDENV
#
!if $(FREEBUILD)
DDKBUILDENV = Free
!else
DDKBUILDENV = Checked
!endif
#
# Set DEBUG,_DEBUG
#
!if $(FREEBUILD)
USE_MSVCRT = 1
!else
C_DEFINES = $(C_DEFINES) -D_DEBUG=1 -DDEBUG=1
DEBUG_CRTS = 1
USE_LIBCMT = 1
!endif
#
# Set COFFBASE_TXT_FILE
#
COFFBASE_TXT_FILE = $(VIPBASE)\common\coffbase.txt
# If you need to link a library that is built by Viper itself,
# then use (for example)
#
# $(VIPLIBS)\util.lib
#
# as the name of said library. If you need a special non-Viper library,
# use
# $(SDK_LIB_PATH)\oldnames.lib
#
VIPLIBS = $(VIPBASE)\bin\$(TARGET_DIRECTORY)\$(DDKBUILDENV)
#
# When linking Win32 DLLs and EXEs, we have a standard set of libraries that
# we use. For a DLL (aka DYNLINK) you don't have to say anything special in
# your SOURCES file to get these, as the definition of WIN32DLL_LIBS below
# takes care of that. However, for EXEs you'll have to do something special,
# like
# UMLIBS = $(VIPWIN32_LIBS)
#
# However, depending on your situation, TARGETLIBS or LINKLIBS might be more
# appropriate. See Build.Hlp for info.
#
# We must be sure to link against thunk libs before any Win32 libs.
# Viper binaries that must run on both Win95 and NT must link against the
# thunks. Those rare few that are NT-only can chose to not do so by setting
#
# VIPTHUNKLIBS =
#
# in their Sources file.
#
# Components that use the shared version of MFC (and not MFCSubs) need to stay
# away from using our own version of heap allocation (malloc, free, etc). To do so
# they should define
#
# VIPPERFLIBS =
#
# in their Sources file.
#
VIPTHUNKLIBS =
VIPPERFLIBS =
VIPWIN32_LIBS =$(VIPTHUNKLIBS) $(VIPPERFLIBS) $(VIPDEBUGLIBS)
VIPWIN32_LIBS =$(VIPWIN32_LIBS) $(SDK_LIB_PATH)\user32.lib $(SDK_LIB_PATH)\kernel32.lib $(SDK_LIB_PATH)\gdi32.lib
VIPWIN32_LIBS =$(VIPWIN32_LIBS) $(SDK_LIB_PATH)\ole32.lib $(SDK_LIB_PATH)\oleaut32.lib $(SDK_LIB_PATH)\atl.lib
VIPWIN32_LIBS =$(VIPWIN32_LIBS) $(SDK_LIB_PATH)\uuid.lib $(SDK_LIB_PATH)\advapi32.lib $(SDK_LIB_PATH)\rpcndr.lib
VIPWIN32_LIBS =$(VIPWIN32_LIBS) $(SDK_LIB_PATH)\rpcrt4.lib $(SDK_LIB_PATH)\rpcns4.lib
VIPWIN32_LIBS =$(VIPWIN32_LIBS) $(SDK_LIB_PATH)\comctl32.lib $(SDK_LIB_PATH)\netapi32.lib
#
# By setting WIN32DLL_LIBs we set the default for DYNLINK to be what we want
# so you don't have to say anything special in sources
#
WIN32DLL_LIBS =$(VIPWIN32_LIBS)
#######################################################################################
#
# Set our include paths to be the tree of 'inc'lude directories above
# us. Each is assumed, if it exists, to be a include directory of increasingly
# greater degree of public disclosure.
#
!if ($(IA64) || $(AMD64))
#
# The 64 bit targets need to use the updated CRT includes. The reason they aren't
# merged is that we'd need to go to a newer compiler, and the newer compiler breaks
# MORE stuff. Note that this makes things look in a "more global" directory before looking
# in a local directory.
#
INCLUDES=$(VIPBASE)\inc64;$(VIPBASE)\inc64\ntos;$(VIPBASE)\inc64\mfc;.\inc;.;..\inc;..\..\inc;..\..\..\inc;..\..\..\..\inc;
!else
INCLUDES=.\inc;.;..\inc;..\..\inc;..\..\..\inc;..\..\..\..\inc;
!endif
#######################################################################################
#
# Setup paths indicating where targets should be built to.
#
TARGETVIPBIN = $(VIPBASE)\bin
TARGETVIPBIN_NS = $(VIPBASE)\bin.ns
TARGETVIPLIB = $(VIPBASE)\bin
#######################################################################################
#
# Control the extraction of .dbg files and the use of incremental linking.
#
# .dbg files are produced only on the build machine, not on developers' workstations.
# When produced, the are placed in the Symbols subdirectory of the build directory,
# e.g.:
# \viper\bin\i386\checked\Symbols\...
#
# Incremental linking is used only in checked builds, and only not on the build machine
# (using incremental linking requires the use of .PDBs).
#
# When splitsym'ing DLL/EXEs, we also copy the .PDBs for mere libraries.
# The binaries are copied over to a non-split folder so that we have a copy of the non-split
# binaries too
!ifndef VIPER_BUILD_MACHINE
VIPER_BUILD_MACHINE =0
!endif
!if $(VIPER_BUILD_MACHINE)
NTDBGFILES =1
_NTTREE =$(TARGETVIPBIN)\$(TARGET_DIRECTORY)\$(DDKBUILDENV)
_NTTREE_NS =$(TARGETVIPBIN_NS)\$(TARGET_DIRECTORY)\$(DDKBUILDENV)
CUSTOM_BINPLACE_CMD =xcopy $@ $(_NTTREE_NS) && xcopy $(@R).pdb $(_NTTREE_NS) && splitsym -a $(BINPLACE_DBGFLAGS_NT) $@
!undef USE_PDB
!undef USE_INCREMENTAL_LINKING
PLACE_LIBRARY_PDB =$(_NTTREE)\Symbols
!else
USE_PDB =1
! if $(FREEBUILD)
! undef USE_INCREMENTAL_LINKING
! else
USE_INCREMENTAL_LINKING =1
! endif
!endif
#######################################################################################
#
# Various forms of exception handling that we can use
#
!if ($(AMD64) || $(386) || $(IA64))
FULLCXXEH = /EHs- /EHa /EHc-
SYNCCXXEH = /EHs /EHa- /EHc-
SEHONLY = /EHs- /EHa- /EHc-
!ELSE
! error Unknown CPU type
!endif
# Set the default exception handling paradigm. In a local Sources file you
# can use, eg, to override
#
# EXCEPTION_HANDLING = $(FULLCXXEH)
#
EXCEPTION_HANDLING = $(SYNCCXXEH)
#######################################################################################
#
# Allow minimal rebuild in the checked builds
#
!if $(FREEBUILD)
!else
USE_INCREMENTAL_COMPILING=1
!endif
#######################################################################################
#
# The actual set of flags passed to the compiler. Set VIPER_C_FLAGS if you
# want something special.
#
USER_C_FLAGS = $(EXCEPTION_HANDLING) $(USE_STACK_CHECK) $(VIPER_C_FLAGS)
#######################################################################################
#
# Allow custom resource compiler flags for viper
#
RCOPTIONS = $(RCOPTIONS) $(VIPER_RCOPTIONS)
#######################################################################################
#
# Use a global warning-control file.
#
COMPILER_WARNINGS =/FIWarningControl.h
#######################################################################################
#
# We have a pair of global version files on which .res files should depend.
#
!undef DEFAULT_VERSION_FILE
MASTER_VERSION_FILE =$(VIPBASE)\src\inc\version\__official__.ver $(VIPBASE)\src\inc\version\__private__.ver