home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / mfc / include / mfcsamps.mak < prev    next >
Text File  |  1998-06-16  |  8KB  |  405 lines

  1. # This is a part of the Microsoft Foundation Classes C++ library.
  2. # Copyright (C) 1992-1998 Microsoft Corporation
  3. # All rights reserved.
  4. #
  5. # This source code is only intended as a supplement to the
  6. # Microsoft Foundation Classes Reference and related
  7. # electronic documentation provided with the library.
  8. # See these sources for detailed information regarding the
  9. # Microsoft Foundation Classes product.
  10.  
  11. # Common include for building MFC Sample programs
  12. #
  13. #  typical usage
  14. #       PROJ=foo
  15. #       OBJS=foo.obj bar.obj ...
  16. #       !INCLUDE ..\..\SAMPLE_.MAK
  17. #
  18. #  ROOT specifies the location of the msdev\samples\mfc directory,
  19. #  relative to the project directory. Because the MFC tutorial samples
  20. #  have an intermediate STEP<n> subdirectory, they use
  21. #       ROOT=..\..\..
  22. #  instead of the default
  23. #       ROOT=..\..
  24. #
  25. # NOTE: do not include 'stdafx.obj' in the OBJS list - the correctly
  26. #    built version will be included for you
  27. #
  28. # Options to NMAKE:
  29. #     "PLATFORM=?"
  30. #       This option chooses the appropriate tools and sources for the
  31. #       different platforms support by Windows/NT.  Currently INTEL,
  32. #       MIPS, ALPHA, PPC are supported. The default is chosen based on
  33. #       the host environment.
  34. #     "DEBUG=0"     use release (default debug)
  35. #     "CODEVIEW=1"  include codeview info (even for release builds)
  36. #         "AFXDLL=1"    to use shared DLL version of MFC
  37. #         "USRDLL=1"    to build a DLL that uses static MFC
  38. #     "UNICODE=1"   to build UNICODE enabled applications
  39. #                   (not all samples support UNICODE)
  40. #     "NO_PCH=1"    do not use precompiled headers (defaults to use pch)
  41. #     "COFF=1"      include COFF symbols
  42.  
  43. !ifndef PROJ
  44. !ERROR You forgot to define 'PROJ' symbol!!
  45. !endif
  46.  
  47.  
  48. ROOT=.
  49. !ifndef ROOT
  50. !endif
  51.  
  52. !ifndef OBJS
  53. !ERROR You forgot to define 'OBJS' symbol!!
  54. !endif
  55.  
  56. !ifndef DEBUG
  57. DEBUG=1
  58. !endif
  59.  
  60. !ifndef AFXDLL
  61. AFXDLL=0
  62. !endif
  63.  
  64. !ifndef UNICODE
  65. UNICODE=0
  66. !endif
  67.  
  68. !ifndef USRDLL
  69. USRDLL=0
  70. !endif
  71.  
  72. !if "$(USRDLL)" != "0"
  73. AFXDLL=0
  74. !endif
  75.  
  76. !ifndef PLATFORM
  77. !ifndef PROCESSOR_ARCHITECTURE
  78. PROCESSOR_ARCHITECTURE=x86
  79. !endif
  80. !if "$(PROCESSOR_ARCHITECTURE)" == "x86"
  81. PLATFORM=INTEL
  82. !endif
  83. !if "$(PROCESSOR_ARCHITECTURE)" == "ALPHA"
  84. PLATFORM=ALPHA
  85. !endif
  86. !if "$(PROCESSOR_ARCHITECTURE)" == "MIPS"
  87. PLATFORM=MIPS
  88. !endif
  89. !if "$(PROCESSOR_ARCHITECTURE)" == "PPC"
  90. PLATFORM=PPC
  91. !endif
  92. !endif
  93.  
  94. !ifndef USES_OLE
  95. USES_OLE=0
  96. !endif
  97.  
  98. !ifndef USES_DB
  99. USES_DB=0
  100. !endif
  101.  
  102. !ifndef CONSOLE
  103. CONSOLE=0
  104. !endif
  105.  
  106. !ifndef MBCS
  107. MBCS=1
  108. !endif
  109.  
  110. !ifndef NO_PCH
  111. NO_PCH=0
  112. !endif
  113.  
  114. BASE=W
  115.  
  116. !if "$(UNICODE)" == "0"
  117. !if "$(AFXDLL)" == "0"
  118. !if "$(USRDLL)" != "1"
  119. STDAFX=stdafx
  120. !else
  121. STDAFX=stdusr
  122. !endif
  123. !else
  124. STDAFX=stddll
  125. !endif
  126. !endif
  127.  
  128. !if "$(UNICODE)" == "1"
  129. !if "$(AFXDLL)" == "0"
  130. !if "$(USRDLL)" != "1"
  131. STDAFX=uniafx
  132. !else
  133. STDAFX=uniusr
  134. !endif
  135. !else
  136. STDAFX=unidll
  137. !endif
  138. !endif
  139.  
  140. !if "$(DEBUG)" == "1"
  141. STDAFX=$(STDAFX)d
  142. !if "$(COFF)" != "1"
  143. !ifndef CODEVIEW
  144. CODEVIEW=1
  145. !endif
  146. !endif
  147. !endif
  148.  
  149. !if "$(CODEVIEW)" == "1"
  150. STDAFX=$(STDAFX)v
  151. !endif
  152.  
  153. !if "$(DEBUG)" == "1"
  154. DEBUG_SUFFIX=d
  155. !endif
  156.  
  157. !if "$(DEBUG)" != "0"
  158. DEBUGFLAGS=/Od
  159. MFCDEFS=$(MFCDEFS) /D_DEBUG
  160.  
  161. !endif
  162.  
  163. !if "$(DEBUG)" == "0"
  164. !if "$(PLATFORM)" == "INTEL"
  165. DEBUGFLAGS=/O1 /Gy
  166. !endif
  167. !if "$(PLATFORM)" == "MIPS"
  168. DEBUGFLAGS=/O1 /Gy
  169. !endif
  170. !if "$(PLATFORM)" == "ALPHA"
  171. DEBUGFLAGS=/O1 /Gy
  172. !endif
  173. !if "$(PLATFORM)" == "PPC"
  174. DEBUGFLAGS=/O1 /Gy
  175. !endif
  176. !endif # DEBUG == 0
  177.  
  178. !if "$(CODEVIEW)" == "1" || "$(COFF)" == "1"
  179. DEBUGFLAGS=$(DEBUGFLAGS) /Z7
  180. !endif
  181.  
  182. !if "$(UNICODE)" == "1"
  183. DLL_SUFFIX=u
  184. !endif
  185.  
  186. !if "$(AFXDLL)" == "1"
  187. MFCFLAGS=$(MFCFLAGS) /MD$(DEBUG_SUFFIX)
  188. MFCDEFS=$(MFCDEFS) /D_AFXDLL
  189. !endif # AFXDLL == 1
  190.  
  191. !if "$(USRDLL)" == "1"
  192. MFCDEFS=$(MFCDEFS) /D_USRDLL /D_WINDLL
  193. !endif
  194.  
  195. !if "$(AFXDLL)" == "0"
  196. !if "$(MD)" == "1"
  197. MFCFLAGS=$(MFCFLAGS) /MD$(DEBUG_SUFFIX)
  198. !elseif "$(MT)" == "0"
  199. MFCFLAGS=$(MFCFLAGS) /ML$(DEBUG_SUFFIX)
  200. !else
  201. MFCFLAGS=$(MFCFLAGS) /MT$(DEBUG_SUFFIX)
  202. !endif
  203. !endif
  204.  
  205. !if "$(UNICODE)" == "1"
  206. MFCDEFS=$(MFCDEFS) /D_UNICODE
  207. !else
  208. !if "$(MBCS)" == "1"
  209. MFCDEFS=$(MFCDEFS) /D_MBCS
  210. !endif
  211. !endif
  212.  
  213. !if "$(PLATFORM)" == "INTEL"
  214. MFCDEFS=$(MFCDEFS) /D_X86_
  215. CPP=cl
  216. CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
  217. !endif
  218.  
  219. !if "$(PLATFORM)" == "MIPS"
  220. MFCDEFS=$(MFCDEFS) /D_MIPS_
  221. CPP=cl
  222. CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
  223. !endif
  224.  
  225. !if "$(PLATFORM)" == "ALPHA"
  226. MFCDEFS=$(MFCDEFS) /D_ALPHA_
  227. CPP=cl
  228. CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
  229. !endif
  230.  
  231. !if "$(PLATFORM)" == "PPC"
  232. MFCDEFS=$(MFCDEFS) /D_PPC_
  233. !if "$(PROCESSOR_ARCHITECTURE)" == "x86"
  234. CPP=mcl
  235. !else
  236. CPP=cl
  237. !endif
  238. CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
  239. !endif
  240.  
  241. CPPMAIN_FLAGS=$(CFLAGS)
  242.  
  243. !if "$(NO_PCH)" == "1"
  244. CPPFLAGS=$(CPPMAIN_FLAGS)
  245. !else
  246. PCHDIR=.
  247. CPPFLAGS=$(CPPMAIN_FLAGS) /Yustdafx.h /Fp$(PCHDIR)\$(STDAFX).pch
  248. !endif
  249.  
  250. !if "$(COFF)" == "1"
  251. NO_PDB=1
  252. !if "$(CODEVIEW)" != "1"
  253. LINKDEBUG=/incremental:no /debug:full /debugtype:coff
  254. !else
  255. LINKDEBUG=/incremental:no /debug:full /debugtype:both
  256. !endif
  257. !endif
  258.  
  259. !if "$(COFF)" != "1"
  260. !if "$(CODEVIEW)" == "1"
  261. LINKDEBUG=/incremental:no /debug:full /debugtype:cv
  262. !else
  263. LINKDEBUG=/incremental:no /debug:none
  264. !endif
  265. !endif
  266.  
  267. !if "$(NO_PDB)" == "1"
  268. LINKDEBUG=$(LINKDEBUG) /pdb:none
  269. !endif
  270.  
  271. !if "$(PLATFORM)" == "INTEL"
  272. LINKCMD=link $(LINKDEBUG)
  273. !endif
  274.  
  275. !if "$(PLATFORM)" == "MIPS"
  276. LINKCMD=link $(LINKDEBUG)
  277. !endif
  278.  
  279. !if "$(PLATFORM)" == "ALPHA"
  280. LINKCMD=link $(LINKDEBUG)
  281. !endif
  282.  
  283. !if "$(PLATFORM)" == "PPC"
  284. LINKCMD=link $(LINKDEBUG)
  285. !endif
  286.  
  287. # link flags - must be specified after $(LINKCMD)
  288. #
  289. # conflags : creating a character based console application
  290. # guiflags : creating a GUI based "Windows" application
  291.  
  292. CONFLAGS=/subsystem:console
  293. GUIFLAGS=/subsystem:windows
  294.  
  295. !if "$(UNICODE)" == "1"
  296. CONFLAGS=$(CONFLAGS) /entry:wmainCRTStartup
  297. GUIFLAGS=$(GUIFLAGS) /entry:wWinMainCRTStartup
  298. !endif
  299.  
  300. PROJRESFILE=$(PROJ).res
  301. RESFILE=$(PROJRESFILE)
  302.  
  303. .SUFFIXES:
  304. .SUFFIXES: .c .cpp .rcm .rc
  305.  
  306. .cpp.obj:
  307.     $(CPP) @<<
  308. $(CPPFLAGS) $*.cpp
  309. <<
  310.  
  311. .c.obj:
  312.     $(CPP) @<<
  313. $(CFLAGS) $(CVARS) $*.c
  314. <<
  315.  
  316. .rc.res:
  317.     rc /r $(MFCDEFS) $<
  318.  
  319. #############################################################################
  320.  
  321. !if "$(NO_PCH)" == "0"
  322. LINK_OBJS=$(OBJS) $(PCHDIR)\$(STDAFX).obj
  323. !else
  324. LINK_OBJS=$(OBJS)
  325. !endif
  326.  
  327. #
  328. # Build CONSOLE Win32 application
  329. #
  330. !if "$(CONSOLE)" == "1"
  331.  
  332. $(PROJ).exe: $(LINK_OBJS)
  333.     $(LINKCMD) @<<
  334. $(CONFLAGS) /out:$(PROJ).exe /map:$(PROJ).map
  335. $(LINK_OBJS) $(EXTRA_LIBS)
  336. <<
  337.  
  338. !endif  # CONSOLE=1
  339.  
  340. #
  341. # Build Win32 application
  342. #
  343. !if "$(CONSOLE)" == "0"
  344.  
  345. !if "$(USRDLL)" == "1"
  346. $(PROJ).dll: $(LINK_OBJS) $(PROJRESFILE)
  347.     $(LINKCMD) @<<
  348. $(GUIFLAGS) /out:$(PROJ).dll /map:$(PROJ).map
  349. /dll /def:$(PROJ).def
  350. $(LINK_OBJS) $(RESFILE) $(EXTRA_LIBS)
  351. <<
  352.  
  353. $(PROJ).res:  resource.h
  354. $(PROJ).rsc:  resource.h
  355. !endif
  356.  
  357. !if "$(SIMPLE_APP)" != "1"
  358. $(PROJ).exe: $(LINK_OBJS) $(PROJRESFILE)
  359.     $(LINKCMD) @<<
  360. $(GUIFLAGS) /out:$(PROJ).exe /map:$(PROJ).map
  361. $(LINK_OBJS) $(RESFILE) $(EXTRA_LIBS)
  362. <<
  363.  
  364. $(PROJ).res:  resource.h
  365. $(PROJ).rsc:  resource.h
  366. !endif
  367.  
  368. !if "$(SIMPLE_APP)" == "1"
  369.  
  370. $(PROJ).exe: $(LINK_OBJS)
  371.     $(LINKCMD) @<<
  372. $(GUIFLAGS) /out:$(PROJ).exe /map:$(PROJ).map
  373. $(LINK_OBJS) $(EXTRA_LIBS)
  374. <<
  375.  
  376. !endif
  377.  
  378. !if "$(NO_PCH)" == "0"
  379. $(PCHDIR)\$(STDAFX).obj $(PCHDIR)\$(STDAFX).pch: stdafx.h stdafx.cpp
  380.     echo "BUILDING SHARED PCH and PCT files"
  381.     $(CPP) @<<
  382. $(CPPMAIN_FLAGS) /Ycstdafx.h /Fp$(PCHDIR)\$(STDAFX).pch /Fo$(PCHDIR)\$(STDAFX).obj /c $(ROOT)\stdafx.cpp
  383. <<
  384.  
  385. $(OBJS): $(PCHDIR)\$(STDAFX).pch
  386. !endif
  387.  
  388. !endif  # CONSOLE=0
  389.  
  390. clean::
  391.     if exist $(PROJ).exe erase $(PROJ).exe
  392.     if exist *.aps erase *.aps
  393.     if exist *.pch erase *.pch
  394.     if exist *.map erase *.map
  395.     if exist *.obj erase *.obj
  396.     if exist *.exp erase *.exp
  397.     if exist *.pdb erase *.pdb
  398.     if exist *.map erase *.map
  399.     if exist *.lib erase *.lib
  400.     if exist *.res erase *.res
  401.     if exist *.rsc erase *.rsc
  402.     if exist *.pef erase *.pef
  403.  
  404. #############################################################################
  405.