########################################################################## # # Microsoft Confidential # Copyright (C) Microsoft Corporation 1991-1998 # All Rights Reserved. # ########################################################################## # # Common include file 'sources' files in the shell project. # # # These definitions are required in your sources file: # # CCSHELL_DIR # Path to ccshell root. # # FREEBUILD # Set by makefile.def file for you. One of the following: # 0 - build debug # 1 - build retail # # # Definitions used if defined: # # TARGET_WIN95 # Build component explicitly for the Win95 platform. If this is # not defined, default is NT or both. # # TARGET_BOTH # Build component to run on both platforms. # # NO_PRIVATE_HEADERS # If set to 1, this is defined as a manifest constant, so the # stub headers in shell\inc\stubs do not include the private # companion headers. # # BUILD_PRIVLIB # Build a private import library too. See the comments in # makefile.inc. # # USE_NT_PRODUCT_VER # If defined, this will use the NT team's product version # numbers, as opposed to the IE team's numbers. # # # Environment Variables and their meanings # # ATL_DEBUG_QI # When set to 1, debug builds will also have _ATL_DEBUG_QI # defined. ATL code spews a bunch of debug stuff during QueryInterface. # # ATL_DEBUG_REFCOUNT # When set to 1, debug builds will also have _ATL_DEBUG_REFCOUNT # defined. ATL code spews a bunch of debug stuff during AddRef # and Release. # # FULL_DEBUG # If set to 1, then debug builds will also have FULL_DEBUG defined. # Retail builds unaffected. This is highly encouraged for regular # development purposes. Not to be set or used by the build labs. # # MEASURE_PERF # If set to 1, enables performance timing code for both debug and # retail builds. This code squirts the timings for interesting # events to the debug terminal. # # USE_LEGO # Define lego macros # !if !defined(CCSHELL_DIR) !error CCSHELL_DIR must be defined in sources file !endif # # Set private paths # INCLUDES = \ ..;\ $(CCSHELL_DIR)\inc;\ $(CCSHELL_DIR)\inc\stubs;\ $(BASEDIR)\private\windows\inc;\ $(SDK_INC_PATH);\ $(BASEDIR)\private\inc;\ $(INCLUDES) # # Skip these files when determining dependencies # CONDITIONAL_INCLUDES = $(CONDITIONAL_INCLUDES) \ atlbase.h \ atlcom.h \ atlconv.h \ atlctl.h \ atlctl.cpp \ atliface.h \ atlimpl.cpp \ atlwin.h \ atlwin.cpp \ ia64inst.h \ macapi.h \ macname1.h \ macname2.h \ macocidl.h \ macpub.h \ macwin32.h \ mainwin.h \ mwversion.h \ penwin.h \ pshpck16.h \ rpcerr.h \ rpcmac.h \ setupx.h \ skbapi.h \ statreg.h \ statreg.cpp \ unixstuff.h \ version.h \ winwlm.h \ ..\inc16\shellapi.h \ \vobs\userx\userx\public\sdk\inc\winbase.h \ \vobs\userx\userx\public\sdk\inc\wingdi.h \ \vobs\userx\userx\public\sdk\inc\winuser.h \ \vobs\userx\userx\public\sdk\inc\shellapi.h \ \vobs\userx\userx\public\sdk\inc\winspool.h \ \vobs\userx\userx\public\sdk\inc\prsht.h \ \vobs\userx\userx\public\sdk\inc\commdlg.h \ \vobs\userx\userx\public\sdk\inc\shlobj.h \ \vobs\userx\userx\public\sdk\inc\commctrl.h \ \vobs\userx\userx\public\sdk\inc\shlguid.h \ \vobs\userx\userx\public\sdk\inc\shlwapi.h \ \vobs\userx\userx\public\sdk\inc\intshcut.h \ !if !defined(TARGET_WIN95) LIBRARY_PLATFORM_PATH = $(BASEDIR)\public\sdk\lib !else # (use 'chicago' since that is already used in the NT tree) INCLUDES = $(INCLUDES);$(CCSHELL_DIR)\inc\win95; LIBRARY_PLATFORM_PATH = $(BASEDIR)\public\sdk\lib\chicago ALT_PROJECT_TARGET = chicago !endif # # Set common options # # Do this to assure that we run on NT 4.0 and Win95, even with # NT5/Memphis headers. !if !defined(WIN32_WINNT_VERSION) WIN32_WINNT_VERSION=0x0400 !endif !if !defined(WIN32_WIN95_VERSION) WIN32_WIN95_VERSION=0x0400 !endif !if !defined(WIN32_IE_VERSION) # WARNING! If you increment WIN32_IE_VERSION, make sure to tell the # Wx86 people or their build will break! WIN32_IE_VERSION=0x0501 !endif # Override NT5 settings SUBSYSTEM_VERSION=4.00 # Defining this allows windows.h to include other headers NOT_LEAN_AND_MEAN= 1 # Don't link to the runtime libs USE_NOLIBS = 1 # Don't link to NTDLL if this runs on both platforms !ifdef TARGET_BOTH NO_NTDLL=1 !endif !if defined(TARGET_WIN95) # Don't define WINNT CHICAGO_PRODUCT = 1 !endif UMTYPE = windows # Ignore the following linker warnings # 4049:locally defined symbol "Xxx" imported LINKER_FLAGS = $(LINKER_FLAGS) -ignore:4049 # # Lego options # !if defined(USE_LEGO) NTBBT = 1 NTPROFILEINPUT = 1 !endif # # Additional compiler flags # C_DEFINES = $(C_DEFINES) -DWIN32 -D_WIN32 -DPOSTSPLIT -DUSE_MIRRORING C_DEFINES = $(C_DEFINES) -DUNICODE_SHDOCVW !if defined(TARGET_DEMO) C_DEFINES = $(C_DEFINES) -DWINNT_6DEMO !endif !ifdef USE_ICECAP C_DEFINES = $(C_DEFINES) -DPRODUCT_PROF !endif !if !defined(TARGET_WIN95) C_DEFINES = $(C_DEFINES) -DNT ! if !defined(NOT_UNICODE) C_DEFINES = $(C_DEFINES) -DUNICODE -D_UNICODE ! endif !endif # ------ Debug Only Defines -------- !if "$(FREEBUILD)" == "0" C_DEFINES = $(C_DEFINES) -DDEBUG LINKER_NOICF = 1 # ICF is s-l-o-w # Check for missing PURE directives in interface decls (debug only) C_DEFINES = $(C_DEFINES) -DNO_NOVTABLE # Define FULL_DEBUG for asserts to break by default ! if "$(FULL_DEBUG)" == "1" C_DEFINES = $(C_DEFINES) -DFULL_DEBUG ! endif # Allow someone to have ATL_DEBUG_REFCOUNT and ATL_DEBUG_QI set # in their environment to turn this on ! if "$(ATL_DEBUG_REFCOUNT)" == "1" C_DEFINES = $(C_DEFINES) -D_ATL_DEBUG_REFCOUNT ! endif ! if "$(ATL_DEBUG_QI)" == "1" C_DEFINES = $(C_DEFINES) -D_ATL_DEBUG_QI ! endif !endif # ------ End Debug Only Defines -------- !if "$(MEASURE_PERF)" == "1" C_DEFINES = $(C_DEFINES) -DMEASURE_PERF !endif !if "$(NO_PRIVATE_HEADERS)" == "1" C_DEFINES = $(C_DEFINES) -DNO_PRIVATE_HEADERS !endif !ifdef USE_NT_PRODUCT_VER # Use the NT product version numbers C_DEFINES = $(C_DEFINES) -UNASHVILLE !else # Use the IE product version numbers. (The ntverp.h file checks # for NASHVILLE.) C_DEFINES = $(C_DEFINES) -DNASHVILLE !endif # This define helps us distinguish our development environment # BUGBUG (scotth): I think we can get rid of this now C_DEFINES = $(C_DEFINES) -DWINNT_ENV # IE40-only features FEATURE_IE40 = 1 !ifdef FEATURE_IE40 C_DEFINES = $(C_DEFINES) -DFEATURE_IE40 -DNASH !endif # Make warnings equivalent to errors !if !defined(MSC_WARNING_LEVEL) MSC_WARNING_LEVEL= /W3 !endif MSC_WARNING_LEVEL= $(MSC_WARNING_LEVEL) /WX !if defined(TARGET_WIN95) || defined(TARGET_BOTH) USE_MAPSYM = 1 !endif !if !defined(CLEANINF_FLAGS) # Cleaninf flags CLEANINF_FLAGS = -w !endif # Cleaninf utility CLEANINF = cleaninf.exe $(CLEANINF_FLAGS) !ifdef BUILD_PRIVLIB NTTARGETFILE1 = $(NTTARGETFILE1) $(TARGETPATHLIB)\*\$(PRIVLIB) !endif # Short: if you're a shell dev, you should have SHELLDEV=1 set in your # environment. # # Long: Components like BROWSEUI.DLL build standard and alternate DLLs depending # on the BUILD_PRODUCT environment variable. (See browseui\sources.inc for # more details.) Because of other expectations in iedev\lib that we (the # shell team) need, we must have our razzle environment set BUILD_PRODUCT=IE. # However, in the scope of the shell project, we need to change this to # BUILD_PRODUCT=NT so we mimic the NT build lab's settings. But the IE team # needs the BUILD_PRODUCT to remain "IE". We key off of SHELLDEV to know # whether to switch. # !if "$(SHELLDEV)" == "1" BUILD_PRODUCT = NT !endif # # Linker flags # !if "$(BUILD_PRODUCT)" == "IE" USE_WIN98OPT=1 !endif