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.

341 lines
8.7 KiB

  1. ##########################################################################
  2. #
  3. # Microsoft Confidential
  4. # Copyright (C) Microsoft Corporation 1991-1998
  5. # All Rights Reserved.
  6. #
  7. ##########################################################################
  8. #
  9. # Common include file 'sources' files in the shell project.
  10. #
  11. #
  12. # These definitions are required in your sources file:
  13. #
  14. # CCSHELL_DIR
  15. # Path to ccshell root.
  16. #
  17. # FREEBUILD
  18. # Set by makefile.def file for you. One of the following:
  19. # 0 - build debug
  20. # 1 - build retail
  21. #
  22. #
  23. # Definitions used if defined:
  24. #
  25. # TARGET_WIN95
  26. # Build component explicitly for the Win95 platform. If this is
  27. # not defined, default is NT or both.
  28. #
  29. # TARGET_BOTH
  30. # Build component to run on both platforms.
  31. #
  32. # NO_PRIVATE_HEADERS
  33. # If set to 1, this is defined as a manifest constant, so the
  34. # stub headers in shell\inc\stubs do not include the private
  35. # companion headers.
  36. #
  37. # BUILD_PRIVLIB
  38. # Build a private import library too. See the comments in
  39. # makefile.inc.
  40. #
  41. # USE_NT_PRODUCT_VER
  42. # If defined, this will use the NT team's product version
  43. # numbers, as opposed to the IE team's numbers.
  44. #
  45. #
  46. # Environment Variables and their meanings
  47. #
  48. # ATL_DEBUG_QI
  49. # When set to 1, debug builds will also have _ATL_DEBUG_QI
  50. # defined. ATL code spews a bunch of debug stuff during QueryInterface.
  51. #
  52. # ATL_DEBUG_REFCOUNT
  53. # When set to 1, debug builds will also have _ATL_DEBUG_REFCOUNT
  54. # defined. ATL code spews a bunch of debug stuff during AddRef
  55. # and Release.
  56. #
  57. # SHELL_FULL_DEBUG
  58. # If set to 1, then debug builds will also have FULL_DEBUG defined.
  59. # Retail builds unaffected. This is highly encouraged for regular
  60. # development purposes. Not to be set or used by the build labs.
  61. #
  62. # SHELL_BROWSER_INFO
  63. # If set to 1, then the build process generates .sbr files for everything
  64. # in the shell that is compiled. These .sbr files are then rolled into one
  65. # giant bsc file that the MSDEV can use (see the shell\browseinfo dir) to
  66. # index the source.
  67. #
  68. # MEASURE_PERF
  69. # If set to 1, enables performance timing code for both debug and
  70. # retail builds. This code squirts the timings for interesting
  71. # events to the debug terminal.
  72. #
  73. # USE_LEGO
  74. # Define lego macros
  75. #
  76. # FEATURE_STARTPAGE
  77. # Compile in changes to support the Start page prototype, based on DUI technology
  78. # disabled by default for Whistler.
  79. !if !defined(CCSHELL_DIR)
  80. !error CCSHELL_DIR must be defined in sources file
  81. !endif
  82. #
  83. # Set private paths
  84. #
  85. INCLUDES = \
  86. ..;\
  87. $(CCSHELL_DIR)\inc;\
  88. $(CCSHELL_DIR)\inc\stubs;\
  89. $(WINDOWS_INC_PATH);\
  90. $(BASE_INC_PATH);\
  91. $(SDK_INC_PATH);\
  92. $(INCLUDES)
  93. #
  94. # Skip these files when determining dependencies
  95. #
  96. CONDITIONAL_INCLUDES = $(CONDITIONAL_INCLUDES) \
  97. atlbase.h \
  98. atlcom.h \
  99. atlconv.h \
  100. atlctl.h \
  101. atlctl.cpp \
  102. atliface.h \
  103. atlimpl.cpp \
  104. atlwin.h \
  105. atlwin.cpp \
  106. ia64inst.h \
  107. macapi.h \
  108. macname1.h \
  109. macname2.h \
  110. macocidl.h \
  111. macpub.h \
  112. macwin32.h \
  113. mainwin.h \
  114. mwversion.h \
  115. penwin.h \
  116. pshpck16.h \
  117. rpcerr.h \
  118. rpcmac.h \
  119. setupx.h \
  120. skbapi.h \
  121. statreg.h \
  122. statreg.cpp \
  123. unixstuff.h \
  124. version.h \
  125. winwlm.h \
  126. ..\inc16\shellapi.h \
  127. \vobs\userx\userx\public\sdk\inc\winbase.h \
  128. \vobs\userx\userx\public\sdk\inc\wingdi.h \
  129. \vobs\userx\userx\public\sdk\inc\winuser.h \
  130. \vobs\userx\userx\public\sdk\inc\shellapi.h \
  131. \vobs\userx\userx\public\sdk\inc\winspool.h \
  132. \vobs\userx\userx\public\sdk\inc\prsht.h \
  133. \vobs\userx\userx\public\sdk\inc\commdlg.h \
  134. \vobs\userx\userx\public\sdk\inc\shlobj.h \
  135. \vobs\userx\userx\public\sdk\inc\commctrl.h \
  136. \vobs\userx\userx\public\sdk\inc\shlguid.h \
  137. \vobs\userx\userx\public\sdk\inc\shlwapi.h \
  138. \vobs\userx\userx\public\sdk\inc\intshcut.h
  139. #
  140. # set this so we know when we are stupid
  141. #
  142. !if "$(BUILD_PASS)" == "PASS2"
  143. VERIFY_SOURCES = 1
  144. !endif
  145. !if !defined(TARGET_WIN95)
  146. LIBRARY_PLATFORM_PATH = $(SDK_LIB_DEST)
  147. !else
  148. # (use 'chicago' since that is already used in the NT tree)
  149. INCLUDES = $(INCLUDES);$(CCSHELL_DIR)\inc\win95;
  150. LIBRARY_PLATFORM_PATH = $(SDK_LIB_DEST)\chicago
  151. ALT_PROJECT_TARGET = chicago
  152. !endif
  153. #
  154. # Set common options
  155. #
  156. !if !defined(ATL_VER)
  157. ATL_VER=30
  158. !endif
  159. #
  160. # set the WIN32_XXX_VERSION defines properly
  161. #
  162. # assume latesst IE version
  163. WIN32_IE_VERSION=$(LATEST_WIN32_IE_VERSION)
  164. !if defined(TARGET_WIN95) || defined(TARGET_BOTH)
  165. WIN32_WINNT_VERSION=0x0400
  166. WIN32_WIN95_VERSION=0x0400
  167. SUBSYSTEM_VERSION=4.00
  168. !else
  169. WIN32_WINNT_VERSION=$(LATEST_WIN32_WINNT_VERSION)
  170. WIN32_WIN95_VERSION=$(LATEST_WIN32_WINNT_VERSION)
  171. SUBSYSTEM_VERSION=$(SUBSYSTEM_VERSION_CURRENT)
  172. !endif
  173. # Defining this allows windows.h to include other headers
  174. NOT_LEAN_AND_MEAN= 1
  175. # Don't link to the runtime libs
  176. USE_NOLIBS = 1
  177. # Don't link to NTDLL if this runs on both platforms
  178. !ifdef TARGET_BOTH
  179. NO_NTDLL=1
  180. !endif
  181. !if defined(TARGET_WIN95)
  182. # Don't define WINNT
  183. CHICAGO_PRODUCT = 1
  184. # workaround for makefile.def shortcomming:
  185. #
  186. # makefile.def is too clever for its own good. It think that Win95 builds
  187. # should never define _WIN32_WINNT. But of course, Millennium picked up
  188. # some NT features, so we have to specify explicitly that we like those
  189. # features or we don't get them.
  190. #
  191. C_DEFINES = $(C_DEFINES) -D_WIN32_WINNT=$(WIN32_WINNT_VERSION)
  192. !endif
  193. UMTYPE = windows
  194. #
  195. # Lego options
  196. #
  197. !if defined(USE_LEGO)
  198. NTBBT = 1
  199. NTPROFILEINPUT = 1
  200. !endif
  201. #
  202. # Additional compiler flags
  203. #
  204. C_DEFINES = $(C_DEFINES) -DWIN32 -D_WIN32 -DPOSTSPLIT -DUSE_MIRRORING
  205. !if defined(TARGET_DEMO)
  206. C_DEFINES = $(C_DEFINES) -DWINNT_6DEMO
  207. !endif
  208. !ifdef USE_ICECAP
  209. C_DEFINES = $(C_DEFINES) -DPRODUCT_PROF
  210. !endif
  211. !if !defined(TARGET_WIN95)
  212. C_DEFINES = $(C_DEFINES) -DNT
  213. ! if !defined(NOT_UNICODE)
  214. C_DEFINES = $(C_DEFINES) -DUNICODE -D_UNICODE
  215. ! endif
  216. !endif
  217. # ------ Debug Only Defines --------
  218. !if "$(FREEBUILD)" == "0"
  219. C_DEFINES = $(C_DEFINES) -DDEBUG
  220. LINKER_NOICF = 1 # ICF is s-l-o-w
  221. # Check for missing PURE directives in interface decls (debug only)
  222. C_DEFINES = $(C_DEFINES) -DNO_NOVTABLE
  223. # Define FULL_DEBUG for asserts to break by default
  224. ! if "$(SHELL_FULL_DEBUG)" == "1" || "$(FULL_DEBUG)" == "1"
  225. C_DEFINES = $(C_DEFINES) -DFULL_DEBUG
  226. # Also turn off compiler optimizations when FULL_DEBUG is set
  227. MSC_OPTIMIZATION= /Odi
  228. ! endif
  229. # Allow someone to have ATL_DEBUG_REFCOUNT and ATL_DEBUG_QI set
  230. # in their environment to turn this on
  231. ! if "$(ATL_DEBUG_REFCOUNT)" == "1"
  232. C_DEFINES = $(C_DEFINES) -D_ATL_DEBUG_REFCOUNT
  233. ! endif
  234. ! if "$(ATL_DEBUG_QI)" == "1"
  235. C_DEFINES = $(C_DEFINES) -D_ATL_DEBUG_QI
  236. ! endif
  237. !endif
  238. # ------ End Debug Only Defines --------
  239. !if "$(SHELL_BROWSER_INFO)" == "1"
  240. BROWSER_INFO = 1;
  241. NO_BROWSER_FILE = 1;
  242. USER_ENV_BROWSER_INFO=1
  243. !endif
  244. !if "$(MEASURE_PERF)" == "1"
  245. C_DEFINES = $(C_DEFINES) -DMEASURE_PERF
  246. !endif
  247. !if "$(NO_PRIVATE_HEADERS)" == "1"
  248. C_DEFINES = $(C_DEFINES) -DNO_PRIVATE_HEADERS
  249. !endif
  250. !ifdef USE_NT_PRODUCT_VER
  251. # Use the NT product version numbers
  252. C_DEFINES = $(C_DEFINES) -UNASHVILLE
  253. !else
  254. # Use the IE product version numbers. (The ntverp.h file checks
  255. # for NASHVILLE.)
  256. C_DEFINES = $(C_DEFINES) -DNASHVILLE
  257. !endif
  258. # IE40-only features
  259. FEATURE_IE40 = 1
  260. !ifdef FEATURE_IE40
  261. C_DEFINES = $(C_DEFINES) -DFEATURE_IE40 -DNASH
  262. !endif
  263. # Start page prototype, disabled by default
  264. !ifdef FEATURE_STARTPAGE
  265. C_DEFINES = $(C_DEFINES) -DFEATURE_STARTPAGE
  266. !endif
  267. # Make warnings equivalent to errors
  268. !if !defined(MSC_WARNING_LEVEL)
  269. MSC_WARNING_LEVEL= /W3
  270. !endif
  271. MSC_WARNING_LEVEL= $(MSC_WARNING_LEVEL) /WX
  272. !if defined(TARGET_WIN95) || defined(TARGET_BOTH)
  273. USE_MAPSYM = 1
  274. !endif
  275. !if !defined(CLEANINF_FLAGS)
  276. # Cleaninf flags
  277. CLEANINF_FLAGS = -w
  278. !endif
  279. # Cleaninf utility
  280. CLEANINF = cleaninf.exe $(CLEANINF_FLAGS)
  281. !ifdef BUILD_PRIVLIB
  282. NTTARGETFILE1 = $(NTTARGETFILE1) $(TARGETPATHLIB)\*\$(PRIVLIB)
  283. !endif