# # If not defined, specify where to get incs and libs. # !IFNDEF _NTROOT _NTROOT=\nt !ENDIF !IFNDEF BASEDIR BASEDIR=$(_NTDRIVE)$(_NTROOT) !ENDIF # A couple of overrides !ifndef SDK_PATH SDK_PATH = $(BASEDIR)\public\sdk !endif !ifndef SDK_INC_PATH SDK_INC_PATH = $(SDK_PATH)\inc !endif !ifndef SDK_INC16_PATH SDK_INC16_PATH = $(SDK_PATH)\inc16 !endif !ifndef SDK_LIB_DEST SDK_LIB_DEST = $(SDK_PATH)\lib !endif !ifndef SDK_LIB_PATH SDK_LIB_PATH = $(SDK_LIB_DEST)\* !endif !ifndef SDK_LIB16_PATH SDK_LIB16_PATH=$(SDK_PATH)\lib16 !endif !ifndef DDK_PATH DDK_PATH = $(BASEDIR)\public\ddk !endif !ifndef DDK_INC_PATH DDK_INC_PATH = $(DDK_PATH)\inc !endif !ifndef DDK_LIB_DEST DDK_LIB_DEST = $(DDK_PATH)\lib !endif !ifndef DDK_LIB_PATH DDK_LIB_PATH = $(DDK_LIB_DEST)\* !endif !ifndef IFSKIT_PATH IFSKIT_PATH = $(BASEDIR)\public\ifskit !endif !ifndef IFSKIT_INC_PATH IFSKIT_INC_PATH = $(IFSKIT_PATH)\inc !endif !ifndef IFSKIT_LIB_DEST IFSKIT_LIB_DEST = $(IFSKIT_PATH)\lib !endif !ifndef IFSKIT_LIB_PATH IFSKIT_LIB_PATH = $(IFSKIT_LIB_DEST)\* !endif !ifndef HALKIT_PATH HALKIT_PATH = $(BASEDIR)\public\halkit !endif !ifndef HALKIT_INC_PATH HALKIT_INC_PATH = $(HALKIT_PATH)\inc !endif !ifndef HALKIT_LIB_DEST HALKIT_LIB_DEST = $(HALKIT_PATH)\lib !endif !ifndef HALKIT_LIB_PATH HALKIT_LIB_PATH = $(HALKIT_LIB_DEST)\* !endif !ifndef PROCESSOR_PATH PROCESSOR_PATH = $(BASEDIR)\public\processorkit !endif !ifndef PROCESSOR_INC_PATH PROCESSOR_INC_PATH = $(PROCESSOR_PATH)\inc !endif !ifndef PROCESSOR_LIB_DEST PROCESSOR_LIB_DEST = $(PROCESSOR_PATH)\lib !endif !ifndef PROCESSOR_LIB_PATH PROCESSOR_LIB_PATH = $(PROCESSOR_LIB_DEST)\* !endif !ifndef WDM_INC_PATH WDM_INC_PATH = $(DDK_INC_PATH)\wdm !endif !ifndef CRT_INC_PATH CRT_INC_PATH = $(SDK_INC_PATH)\crt !endif !ifndef CRT_LIB_PATH CRT_LIB_PATH = $(SDK_LIB_PATH) !endif !ifndef OAK_INC_PATH OAK_INC_PATH = $(BASEDIR)\public\oak\inc !endif !ifndef OAK_BIN_PATH OAK_BIN_PATH = $(BASEDIR)\public\oak\binr !endif !ifndef WPP_CONFIG_PATH # If this ever changes you must change the DDK's setenv.bat WPP_CONFIG_PATH = $(BASEDIR)\tools\WppConfig !endif !ifndef PUBLIC_INTERNAL_PATH PUBLIC_INTERNAL_PATH = $(BASEDIR)\public\internal !endif COPYRIGHT_STRING = Copyright (c) Microsoft Corporation. All rights reserved. !ifndef PUBLISH_CMD !ifdef LINKONLY # If this is a link step, don't publish. PUBLISH_CMD=@rem !else PUBLISH_CMD=@perl $(NTMAKEENV)\publish.pl publish.log !endif !endif !ifndef BINDROP_CMD ! ifdef NOLINK # Only drop binaries if we are linking in this pass. BINDROP_CMD=rem No bindrop pass during link !else BINDROP_CMD=perl $(NTMAKEENV)\publish.pl $(_PROJECT_)_publish.log !endif !endif !ifndef BUILD_PASS # Old build.exe. Guess the correct pass. !ifdef PASS0ONLY BUILD_PASS=PASS0 !elseif defined(LINKONLY) BUILD_PASS=PASS2 !elseif defined(NOLINK) && !defined(PASS0ONLY) BUILD_PASS=PASS1 !else # catch all - someone used build -z or build -2 BUILD_PASS=PASSALL !endif !endif # # Set the flag which indicates whether we should be publishing binaries # to 0 by default. the project.mk file is responsible for parsing # BINARY_PUBLISH_PROJECTS to determine if its value should be changed. # BINPUBLISH=0 # # Define global project paths. # !include projects.inc !ifdef NTTESTENV !include projects.tst.inc !endif # # Find and include the project configuration file. # !if exists(.\project.mk) _PROJECT_MK_PATH=. !elseif exists(..\project.mk) _PROJECT_MK_PATH=.. !elseif exists(..\..\project.mk) _PROJECT_MK_PATH=..\.. !elseif exists(..\..\..\project.mk) _PROJECT_MK_PATH=..\..\.. !elseif exists(..\..\..\..\project.mk) _PROJECT_MK_PATH=..\..\..\.. !elseif exists(..\..\..\..\..\project.mk) _PROJECT_MK_PATH=..\..\..\..\.. !elseif exists(..\..\..\..\..\..\project.mk) _PROJECT_MK_PATH=..\..\..\..\..\.. !elseif exists(..\..\..\..\..\..\..\project.mk) _PROJECT_MK_PATH=..\..\..\..\..\..\.. !elseif exists(..\..\..\..\..\..\..\..\project.mk) _PROJECT_MK_PATH=..\..\..\..\..\..\..\.. !elseif exists(..\..\..\..\..\..\..\..\..\project.mk) _PROJECT_MK_PATH=..\..\..\..\..\..\..\..\.. !elseif exists(..\..\..\..\..\..\..\..\..\..\project.mk) _PROJECT_MK_PATH=..\..\..\..\..\..\..\..\..\.. !elseif exists(..\..\..\..\..\..\..\..\..\..\..\project.mk) _PROJECT_MK_PATH=..\..\..\..\..\..\..\..\..\..\.. !elseif exists(..\..\..\..\..\..\..\..\..\..\..\..\project.mk) _PROJECT_MK_PATH=..\..\..\..\..\..\..\..\..\..\..\.. !elseif exists(..\..\..\..\..\..\..\..\..\..\..\..\..\project.mk) _PROJECT_MK_PATH=..\..\..\..\..\..\..\..\..\..\..\..\.. !elseif exists(..\..\..\..\..\..\..\..\..\..\..\..\..\..\project.mk) _PROJECT_MK_PATH=..\..\..\..\..\..\..\..\..\..\..\..\..\.. !elseif exists(..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\project.mk) _PROJECT_MK_PATH=..\..\..\..\..\..\..\..\..\..\..\..\..\..\.. !endif !if "$(_PROJECT_MK_PATH)" != "" #!message "Including $(_PROJECT_MK_PATH)\project.mk" !include $(_PROJECT_MK_PATH)\project.mk !if exists($(_PROJECT_MK_PATH)\myproject.mk) !include $(_PROJECT_MK_PATH)\myproject.mk !endif !else #!message "Unable to find project.mk. Update makefile.plt or create project.mk." !endif !IFDEF _PROJECT_ PROJECT_ROOT=$(BASEDIR)\$(_PROJECT_) PROJECT_PUBLIC_PATH=$(PUBLIC_INTERNAL_PATH)\$(_PROJECT_) PROJECT_INC_PATH=$(PROJECT_PUBLIC_PATH)\inc PRIVATE_INC_PATH=$(PROJECT_INC_PATH) PROJECT_LIB_DEST=$(PROJECT_PUBLIC_PATH)\lib PROJECT_LIB_PATH=$(PROJECT_LIB_DEST)\$(TARGET_DIRECTORY) PROJECT_INF_PATH=$(PROJECT_PUBLIC_PATH)\inf !ELSE #!message "ERROR: _PROJECT_ is not defined. Should be defined in project.mk." !ENDIF # # If not defined, define the build message banner. # !IFNDEF BUILDMSG BUILDMSG= !ENDIF !if ("$(NTDEBUG)" == "") || ("$(NTDEBUG)" == "ntsdnodbg") FREEBUILD=1 ! ifndef BUILD_TYPE BUILD_TYPE=fre ! endif !else FREEBUILD=0 ! ifndef BUILD_TYPE BUILD_TYPE=chk ! endif !endif # Allow alternate object directories. !ifndef BUILD_ALT_DIR BUILD_ALT_DIR= ! ifdef CHECKED_ALT_DIR ! if !$(FREEBUILD) BUILD_ALT_DIR=d ! endif ! endif !endif _OBJ_DIR = obj$(BUILD_ALT_DIR) # # Determine which target is being built (i386 or ia64) and define # the appropriate target variables. # !IFNDEF 386 386=0 !ENDIF !IFNDEF AMD64 AMD64=0 !ENDIF !IFNDEF PPC PPC=0 !ENDIF !IFNDEF MPPC MPPC=0 !ENDIF !IFNDEF IA64 IA64=0 !ENDIF # Disable for now. MIPS=0 AXP64=0 ALPHA=0 # # Default to building for the i386 target, if no target is specified. # !IF !$(386) ! IF !$(AMD64) ! IF !$(MPPC) ! IF !$(IA64) ! IFDEF NTAMD64DEFAULT AMD64=1 ! IFNDEF TARGETCPU TARGETCPU=AMD64 ! ENDIF ! ELSE ! IFDEF NTMPPCDEFAULT MPPC=1 ! IFNDEF TARGETCPU TARGETCPU=MPPC ! ENDIF ! ELSE ! IFDEF NTIA64DEFAULT IA64=1 ! IFNDEF TARGETCPU TARGETCPU=IA64 ! ENDIF ! ELSE 386=1 ! IFNDEF TARGETCPU TARGETCPU=I386 ! ENDIF ! ENDIF ! ENDIF ! ENDIF ! ENDIF ! ENDIF ! ENDIF !ENDIF # # Define the target platform specific information. # !if $(386) ASM_SUFFIX=asm ASM_INCLUDE_SUFFIX=inc TARGET_BRACES= !ifdef SUBSTITUTE_386_CC TARGET_CPP=$(SUBSTITUTE_386_CC) !else TARGET_CPP=cl !endif TARGET_DEFINES=-Di386 -D_X86_ TARGET_DIRECTORY=i386 TLB_SWITCHES=/tlb !ifndef _NTTREE ! ifdef _NTX86TREE _NTTREE=$(_NTX86TREE) ! elseif defined(_NT386TREE) _NTTREE=$(_NT386TREE) ! endif !endif VCCOM_SUPPORTED=1 COFF_SUPPORTED=0 WIN64=0 PLATFORM_MFC_VER=0x0600 MACHINE_TYPE=ix86 ANSI_ANNOTATION=0 TARGET_CSC=csc !elseif $(AMD64) ASM_SUFFIX=asm ASM_INCLUDE_SUFFIX=inc TARGET_BRACES= TARGET_CPP=cl TARGET_DEFINES=-D_AMD64_ -D_WIN64 TARGET_DIRECTORY=amd64 TLB_SWITCHES=/tlb !ifndef HOST_TARGETCPU HOST_TARGETCPU=i386 !endif !ifndef _NTTREE ! ifdef _NTAMD64TREE _NTTREE=$(_NTAMD64TREE) ! elseif defined(_NTAMD64TREE) _NTTREE=$(_NTAMD64TREE) ! endif !endif VCCOM_SUPPORTED=1 COFF_SUPPORTED=0 WIN64=1 PLATFORM_MFC_VER=0x0600 MACHINE_TYPE=amd64 ANSI_ANNOTATION=0 !elseif $(MPPC) ASM_SUFFIX=s ASM_INCLUDE_SUFFIX=h TARGET_BRACES=-B TARGET_CPP=cl TARGET_DEFINES=-DMPPC -D_MPPC_ TARGET_DIRECTORY=mppc TLB_SWITCHES=/tlb WIN64=0 PLATFORM_MFC_VER=0x0421 MACHINE_TYPE=mppc !ifndef _NTTREE ! ifdef _NTMPPCTREE _NTTREE=$(_NTMPPCTREE) ! endif !endif ANSI_ANNOTATION=1 !elseif $(IA64) ASM_SUFFIX=s ASM_INCLUDE_SUFFIX=h TARGET_BRACES=-B TARGET_CPP=cl TARGET_DEFINES=-DIA64 -D_IA64_ TARGET_DIRECTORY=ia64 TLB_SWITCHES=/tlb # default to X86 for now !ifndef HOST_TARGETCPU HOST_TARGETCPU=i386 !endif !ifndef _NTTREE ! ifdef _NTIA64TREE _NTTREE=$(_NTIA64TREE) ! endif !endif WIN64=1 PLATFORM_MFC_VER=0x0600 COFF_SUPPORTED=0 MACHINE_TYPE=ia64 ANSI_ANNOTATION=0 !else !error Must define the target as 386, mppc or ia64. !endif # # These flags don't depend on i386 etc. however have to be in this file. # # MIDL_OPTIMIZATION is the optimization flag set for the current NT. # MIDL_OPTIMIZATION_NO_ROBUST is the current optimization without robust. # !ifdef MIDL_PROTOCOL MIDL_PROTOCOL_DEFAULT=-protocol $(MIDL_PROTOCOL) !else # MIDL_PROTOCOL_DEFAULT=-protocol all !endif !IFNDEF MIDL_OPTIMIZATION MIDL_OPTIMIZATION=-Oicf -robust -error all $(MIDL_PROTOCOL_DEFAULT) !ENDIF MIDL_OPTIMIZATION_NO_ROBUST=-Oicf -error all MIDL_OPTIMIZATION_NT4=-Oicf -error all MIDL_OPTIMIZATION_NT5=-Oicf -robust -error all $(MIDL_PROTOCOL_DEFAULT) !ifdef SUBSTITUTE_MIDL_CC MIDL_CPP=$(SUBSTITUTE_MIDL_CC) !else MIDL_CPP=$(TARGET_CPP) !endif MIDL_FLAGS=$(TARGET_DEFINES) -D_WCHAR_T_DEFINED # # If not defined, simply set to default # !IFNDEF HOST_TARGETCPU HOST_TARGETCPU=$(TARGET_DIRECTORY) !ENDIF ! if $(WIN64) MIDL_ALWAYS_GENERATE_STUBS=1 ! else MIDL_ALWAYS_GENERATE_STUBS=0 ! endif CLEANSE_PUBLISHED_HDR=copy PATH_TOOLS16=$(BASEDIR)\tools\tools16 # If a build path is defined, use it. !ifdef BUILD_PATH PATH=$(BUILD_PATH) !endif !ifndef QFE_INC_PATH QFE_INC_PATH = $(PUBLIC_INTERNAL_PATH)\qfe\inc !endif