!IF 0 Copyright (c) 1994-1996 Microsoft Corporation Module Name: i386mk.inc Abstract: This module contains the x86 specific build controls. It is included by makefile.def. Revision History: !ENDIF # # x86 option control # UMBASE=$(UMBASE:*=i386) UMLIBS=$(UMLIBS:*=i386) NTRES=$(NTRES:*=i386) UMRES=$(UMRES:*=i386) UMOBJS=$(UMOBJS:*=i386) LINKLIBS=$(LINKLIBS:*=i386) GDI_DRIVER_LIBS=$(GDI_DRIVER_LIBS:*=i386) DLLBASE=$(DLLBASE:*=i386) DLLDEF=$(DLLDEF:*=i386) MACHINE_TARGETLIBS=$(MACHINE_TARGETLIBS:*=i386) TARGET=$(TARGET:*=i386) DYNLINK_LIB=$(DYNLINK_LIB:*=i386) TARGETEXEFILES=$(TARGETEXEFILES:*=i386) TARGETLIBFILES=$(TARGETLIBFILES:*=i386) TARGETOBJFILES=$(TARGETOBJFILES:*=i386) UMOBJFILES=$(UMOBJFILES:*=i386) UMEXEFILES=$(UMEXEFILES:*=i386) HEADERFILE=$(HEADERFILE:*=i386) HEADEROBJNAME=$(HEADEROBJNAME:*=i386) HEADEROBJ=$(HEADEROBJ:*=i386) PRECOMPILED=$(PRECOMPILED:*=i386) PRECOMPILED_CXX=$(PRECOMPILED_CXX:*=i386) PRECOMPILED_TARGET=$(PRECOMPILED_TARGET:*=i386) MFC_STATIC_LIB=$(MFC_STATIC_LIB:*=i386) CRT_LIB_PATH=$(CRT_LIB_PATH:*=i386) SDK_LIB_PATH=$(SDK_LIB_PATH:*=i386) ORDER=$(ORDER:*=i386) !IF "$(TARGETTYPE)"=="DRIVER" || \ "$(TARGETTYPE)" == "EXPORT_DRIVER" || \ "$(TARGETTYPE)" == "HAL" || \ "$(TARGETTYPE)"=="GDI_DRIVER" || \ "$(TARGETTYPE)"=="MINIPORT" # #Drivers don't link with link libs. # MACHINE_TARGETLIBS=$(SDK_LIB_PATH)\int64.lib $(MACHINE_TARGETLIBS) !ELSE !IF defined(USE_NTDLL) || defined (USE_NOLIBS) MACHINE_TARGETLIBS=$(SDK_LIB_PATH)\int64.lib $(MACHINE_TARGETLIBS) !ENDIF !ENDIF !ifdef NTTARGETFILES NTTARGETFILES=$(NTTARGETFILES:*=i386) !endif !ifdef NTTARGETFILE0 NTTARGETFILE0=$(NTTARGETFILE0:*=i386) !endif !ifdef NTTARGETFILE1 NTTARGETFILE1=$(NTTARGETFILE1:*=i386) !endif !IF "$(DLLENTRY)" != "-noentry" ! IF "$(DLLENTRY:@12=)" == "$(DLLENTRY)" DLLENTRY=$(DLLENTRY)@12 ! ENDIF !ENDIF !IFDEF STD_CALL_ENTRY UMENTRY=$(UMENTRY)@4 !ENDIF ENTRY_SUFFIX=@8 GDI_ENTRY_SUFFIX=@12 !IFDEF 386_WARNING_LEVEL MSC_WARNING_LEVEL=$(386_WARNING_LEVEL) !ENDIF !ifdef 386_PERFFLAGS PERFFLAGS = $(386_PERFFLAGS) !endif # Set MSC_OPTIMIZATION. # Order of precedence: # Platform specific override # Environment variable # System Default !if defined(386_OPTIMIZATION) MSC_OPTIMIZATION=$(386_OPTIMIZATION) !elseif !defined(MSC_OPTIMIZATION) MSC_OPTIMIZATION=$(DEFAULT_MSC_OPT) !endif DBGFLAGS=$(DBGFLAGS) $(MSC_OPTIMIZATION) !IFDEF 386_CPPFLAGS MSC_CPPFLAGS=$(386_CPPFLAGS) !ENDIF # Undocumented switch definitions # /QIfdiv- : Don't emit code to test for bad pentiums # /QIf : Emit FPO records for every function !ifdef NO_READONLY_STRINGS STRING_POOLING = /Gf !else STRING_POOLING = /GF !endif !ifdef USE_NATIVE_EH EH_FLAGS=/GX /GR !else EH_FLAGS=/GX- /GR- !endif !ifdef USE_INCREMENTAL_COMPILING C_INCREMENTAL_FLAG = /Gi /Gm USE_PDB_TO_COMPILE = 1 !else C_INCREMENTAL_FLAG = /Gi- /Gm- !endif !ifndef X86_CPU_OPTIMIZATION X86_CPU_OPTIMIZATION=/GB !endif STDFLAGS= /c /Zel /Zp8 /Gy $(CBSTRING) $(MSC_WARNING_LEVEL) $(MSC_CALL_TYPE) \ /QIfdiv- /QIf $(X86_CPU_OPTMIZATION) $(C_INCREMENTAL_FLAG) $(EH_FLAGS) $(STRING_POOLING) $(MFC_FLAGS) !IF "$(386_STDCALL)" == "0" MSC_CALL_TYPE=/Gd MSC_CALL_DEFINE= !ELSE ! IF "$(386_STDCALL)" == "2" MSC_CALL_TYPE=/Gr MSC_CALL_DEFINE= ! ELSE MSC_CALL_TYPE=/Gz MSC_CALL_DEFINE=-DSTD_CALL ! ENDIF !ENDIF !IF "$(NTDEBUG)" == "retail" || "$(NTDEBUG)" == "" || "$(NTDEBUG)" == "ntsdnodbg" ASM_DBG_DEFINES=-DDBG=0 ! IFDEF NTNOFPO !MESSAGE $(NTMAKEENV)\i386mk.inc(1) : Overriding FPO default with NTNOFPO TARGET_DBG_DEFINES= $(TARGET_DBG_DEFINES) -DFPO=0 DBGFLAGS=$(DBGFLAGS) /Oy- ! ELSE TARGET_DBG_DEFINES= $(TARGET_DBG_DEFINES) -DFPO=1 DBGFLAGS=$(DBGFLAGS) /Oy ! ENDIF !ELSE TARGET_DBG_DEFINES= $(TARGET_DBG_DEFINES) -DFPO=0 DBGFLAGS=$(DBGFLAGS) /Oy- 386_ADBGFLAGS=$(386_ADBGFLAGS) /Zi !ENDIF !ifndef USE_PDB_TO_COMPILE DBGFLAGS=$(DBGFLAGS:/Zi=-Z7) DBGFLAGS=$(DBGFLAGS:-Zi=-Z7) !else ! if "$(TARGETTYPE)" == "LIBRARY" DBGFLAGS=$(DBGFLAGS) /Fd$(TARGETPATH)\$(TARGET_DIRECTORY)\$(TARGETNAME).pdb ! else DBGFLAGS=$(DBGFLAGS) /Fd$(MAKEDIR)\$(_OBJ_DIR)\i386^\ ! endif !endif !ifdef BROWSER_INFO DBGFLAGS=$(DBGFLAGS) /FR$(MAKEDIR)\$(_OBJ_DIR)\i386^\ !endif !IFDEF NTBBT DBGFLAGS=$(DBGFLAGS) /Z7 386_ADBGFLAGS=$(386_ADBGFLAGS) /Zi LINKER_FLAGS=$(LINKER_FLAGS) -debug:full -debugtype:cv,fixup ! ifndef USE_PDB LINKER_MERGE_RDATA= ! endif !ENDIF # # 386 option control # ENV_DEFINES= $(MSC_CPPFLAGS) $(NTCPPFLAGS) !IF "$(HALTYPE)" == "" HALDEF= !ELSE HALDEF=-D$(HALTYPE)=1 !ENDIF STD_DEFINES= -D_X86_=1 -Di386=1 $(HALDEF) $(MSC_CALL_DEFINE) $(STD_DEFINES) CDEFINES=$(STD_DEFINES) $(TARGET_DBG_DEFINES) $(ENV_DEFINES) \ $(LIBC_DEFINES) $(C_DEFINES) $(NET_C_DEFINES) CFLAGS=$(386_FLAGS) $(NT386FLAGS) $(STDFLAGS) $(DBGFLAGS) $(PERFFLAGS) $(USER_C_FLAGS) 386_ASMFLAGS=$(386_ADBGFLAGS) $(STD_DEFINES) $(ASM_DBG_DEFINES)\ $(TARGET_DBG_DEFINES) $(ENV_DEFINES) $(ASM_DEFINES) 386_CDEFINES=$(CDEFINES) 386_CFLAGS=$(CFLAGS) CC_NAME = cl -nologo C_COMPILER_NAME = $(CC_NAME) CXX_COMPILER_NAME = $(CC_NAME) C_PREPROCESSOR_NAME = $(CC_NAME) GLOBAL_C_FLAGS = -Ii386\ -I. $(INCPATH1) $(CDEFINES) $(CFLAGS) NP_COMPILER_FLAGS = $(GLOBAL_C_FLAGS) $(COMPILER_WARNINGS) C_COMPILER_FLAGS = $(NP_COMPILER_FLAGS) $(PRECOMPILED) CXX_COMPILER_FLAGS = $(NP_COMPILER_FLAGS) $(PRECOMPILED_CXX) C_PREPROCESSOR_FLAGS = $(GLOBAL_C_FLAGS) -EP -Tc C_COMPILER = $(C_COMPILER_NAME) $(C_COMPILER_FLAGS) CXX_COMPILER = $(CXX_COMPILER_NAME) $(CXX_COMPILER_FLAGS) C_PREPROCESSOR = $(C_PREPROCESSOR_NAME) $(C_PREPROCESSOR_FLAGS) 386_ASSEMBLER=ml -c -coff -Cx -nologo -Ii386\ -I. $(INCPATH1) -Zm $(386_ASMFLAGS) ECHO_MSG=$(C_COMPILER) $< ECHO_CXX_MSG=$(CXX_COMPILER) $< ECHO_PRECOMPILED_MSG1=$(C_COMPILER_NAME) $(PRECOMPILED_FLAG) $(PRECOMPILED_SOURCEFILE) \ $(C_COMPILER_FLAGS) /Yl$(TARGETNAME) /Yc$(?F) $(HEADERFILE) $(HEADEROBJ) ECHO_PRECOMPILED_MSG2=$(C_COMPILER_NAME) $(PRECOMPILED_FLAG) \ $(C_COMPILER_FLAGS) /Yl$(TARGETNAME) /Yc$(?F) $(HEADERFILE) $(HEADEROBJ) {}.c{}.asm: $(C_COMPILER_NAME) @<< /Fa $(MAKEDIR)\$(