home *** CD-ROM | disk | FTP | other *** search
/ Supercompiler 1997 / SUPERCOMPILER97.iso / MS_VC.50 / VC / MFC / INCLUDE / MFCSAMPS.MAK < prev    next >
Encoding:
Text File  |  1996-10-30  |  9.8 KB  |  491 lines

  1. # This is a part of the Microsoft Foundation Classes C++ library.
  2. # Copyright (C) 1992-1997 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, M68K, and MPPC are supported; more will be
  33. #       added as they become available.  The default is chosen based on
  34. #       the host environment.  This option must be set for MAC_ builds.
  35. #     "DEBUG=0"     use release (default debug)
  36. #     "CODEVIEW=1"  include codeview info (even for release builds)
  37. #         "AFXDLL=1"    to use shared DLL version of MFC
  38. #         "USRDLL=1"    to build a DLL that uses static MFC
  39. #     "UNICODE=1"   to build UNICODE enabled applications
  40. #                   (not all samples support UNICODE)
  41. #     "NO_PCH=1"    do not use precompiled headers (defaults to use pch)
  42. #     "COFF=1"      include COFF symbols
  43.  
  44. !ifndef PROJ
  45. !ERROR You forgot to define 'PROJ' symbol!!
  46. !endif
  47.  
  48.  
  49. ROOT=.
  50. !ifndef ROOT
  51. !endif
  52.  
  53. !ifndef OBJS
  54. !ERROR You forgot to define 'OBJS' symbol!!
  55. !endif
  56.  
  57. !ifndef DEBUG
  58. DEBUG=1
  59. !endif
  60.  
  61. !ifndef AFXDLL
  62. AFXDLL=0
  63. !endif
  64.  
  65. !ifndef UNICODE
  66. UNICODE=0
  67. !endif
  68.  
  69. !ifndef USRDLL
  70. USRDLL=0
  71. !endif
  72.  
  73. !if "$(USRDLL)" != "0"
  74. AFXDLL=0
  75. !endif
  76.  
  77. !ifndef PLATFORM
  78. !ifndef PROCESSOR_ARCHITECTURE
  79. PROCESSOR_ARCHITECTURE=x86
  80. !endif
  81. !if "$(PROCESSOR_ARCHITECTURE)" == "x86"
  82. PLATFORM=INTEL
  83. !endif
  84. !if "$(PROCESSOR_ARCHITECTURE)" == "ALPHA"
  85. PLATFORM=ALPHA
  86. !endif
  87. !if "$(PROCESSOR_ARCHITECTURE)" == "MIPS"
  88. PLATFORM=MIPS
  89. !endif
  90. !if "$(PROCESSOR_ARCHITECTURE)" == "PPC"
  91. PLATFORM=PPC
  92. !endif
  93. !endif
  94.  
  95. !ifndef USES_OLE
  96. USES_OLE=0
  97. !endif
  98.  
  99. !ifndef USES_DB
  100. USES_DB=0
  101. !endif
  102.  
  103. !ifndef CONSOLE
  104. CONSOLE=0
  105. !endif
  106.  
  107. !ifndef NO_PCH
  108. NO_PCH=0
  109. !endif
  110.  
  111. #
  112. # Set BASE=W, M, or P depending on platform
  113. #
  114. BASE=W
  115. !if "$(PLATFORM)" == "M68K" || "$(PLATFORM)" == "MPPC"
  116. MACOS=1
  117. !undef BASE
  118. !if "$(PLATFORM)" == "M68K"
  119. BASE=M
  120. !else
  121. BASE=P
  122. !endif
  123. !endif
  124.  
  125. !if "$(UNICODE)" == "0"
  126. !if "$(AFXDLL)" == "0"
  127. !if "$(USRDLL)" != "1"
  128. STDAFX=stdafx
  129. !else
  130. STDAFX=stdusr
  131. !endif
  132. !else
  133. STDAFX=stddll
  134. !endif
  135. !endif
  136.  
  137. !if "$(UNICODE)" == "1"
  138. !if "$(AFXDLL)" == "0"
  139. !if "$(USRDLL)" != "1"
  140. STDAFX=uniafx
  141. !else
  142. STDAFX=uniusr
  143. !endif
  144. !else
  145. STDAFX=unidll
  146. !endif
  147. !endif
  148.  
  149. !if "$(DEBUG)" == "1"
  150. STDAFX=$(STDAFX)d
  151. !if "$(COFF)" != "1"
  152. !ifndef CODEVIEW
  153. CODEVIEW=1
  154. !endif
  155. !endif
  156. !endif
  157.  
  158. !if "$(CODEVIEW)" == "1"
  159. STDAFX=$(STDAFX)v
  160. !endif
  161.  
  162. !if "$(DEBUG)" == "1"
  163. DEBUG_SUFFIX=d
  164. !endif
  165.  
  166. !if "$(DEBUG)" != "0"
  167. DEBUGFLAGS=/Od
  168. MFCDEFS=$(MFCDEFS) /D_DEBUG
  169.  
  170. !if "$(PLATFORM)" == "M68K"
  171. DEBUGFLAGS=/Q68m
  172. !endif
  173.  
  174. !endif
  175.  
  176. !if "$(DEBUG)" == "0"
  177. !if "$(PLATFORM)" == "INTEL"
  178. DEBUGFLAGS=/O1 /Gy
  179. !endif
  180. !if "$(PLATFORM)" == "MIPS"
  181. DEBUGFLAGS=/O1 /Gy
  182. !endif
  183. !if "$(PLATFORM)" == "ALPHA"
  184. DEBUGFLAGS=/O1 /Gy
  185. !endif
  186. !if "$(PLATFORM)" == "PPC"
  187. DEBUGFLAGS=/O1 /Gy
  188. !endif
  189. !if "$(PLATFORM)" == "M68K"
  190. DEBUGFLAGS=/O1 /Gy
  191. !endif
  192. !if "$(PLATFORM)" == "MPPC"
  193. DEBUGFLAGS=/O1 /Gy
  194. !endif
  195. !endif # DEBUG == 0
  196.  
  197. !if "$(CODEVIEW)" == "1" || "$(COFF)" == "1"
  198. DEBUGFLAGS=$(DEBUGFLAGS) /Z7
  199. !endif
  200.  
  201. !if "$(UNICODE)" == "1"
  202. DLL_SUFFIX=u
  203. !endif
  204.  
  205. !if "$(AFXDLL)" == "1"
  206. MFCFLAGS=$(MFCFLAGS) /MD$(DEBUG_SUFFIX)
  207. MFCDEFS=$(MFCDEFS) /D_AFXDLL
  208. !endif # AFXDLL == 1
  209.  
  210. !if "$(USRDLL)" == "1"
  211. MFCDEFS=$(MFCDEFS) /D_USRDLL /D_WINDLL
  212. !endif
  213.  
  214. !if "$(AFXDLL)" == "0"
  215. !if "$(MACOS)" != "1"
  216. MFCFLAGS=$(MFCFLAGS) /MT$(DEBUG_SUFFIX)
  217. !elseif "$(PLATFORM)" != "M68K"
  218. MFCFLAGS=$(MFCFLAGS) /ML$(DEBUG_SUFFIX)
  219. !endif
  220. !endif
  221.  
  222. !if "$(UNICODE)" == "1"
  223. MFCDEFS=$(MFCDEFS) /D_UNICODE
  224. !else
  225. MFCDEFS=$(MFCDEFS) /D_MBCS
  226. !endif
  227.  
  228. !if "$(MACOS)" == "1"
  229. MFCDEFS=$(MFCDEFS) /D_MAC
  230. !if "$(PLATFORM)" == "M68K"
  231. ARCHITECTURE='m68k'
  232. !else
  233. ARCHITECTURE='pwpc'
  234. !endif
  235. !endif
  236.  
  237. !if "$(PLATFORM)" == "INTEL"
  238. MFCDEFS=$(MFCDEFS) /D_X86_
  239. CPP=cl
  240. CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
  241. !endif
  242.  
  243. !if "$(PLATFORM)" == "MIPS"
  244. MFCDEFS=$(MFCDEFS) /D_MIPS_
  245. CPP=cl
  246. CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
  247. !endif
  248.  
  249. !if "$(PLATFORM)" == "ALPHA"
  250. MFCDEFS=$(MFCDEFS) /D_ALPHA_
  251. CPP=cl
  252. CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
  253. !endif
  254.  
  255. !if "$(PLATFORM)" == "PPC"
  256. MFCDEFS=$(MFCDEFS) /D_PPC_
  257. !if "$(PROCESSOR_ARCHITECTURE)" == "x86"
  258. CPP=mcl
  259. !else
  260. CPP=cl
  261. !endif
  262. CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
  263. !endif
  264.  
  265. !if "$(PLATFORM)" == "M68K"
  266. MFCDEFS=$(MFCDEFS) /D_WINDOWS /DWIN32 /D_68K_
  267. CPP=cl
  268. CFLAGS=/GX /c /W3 /AL /Gt1 /Q68s $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
  269. !endif
  270.  
  271. !if "$(PLATFORM)" == "MPPC"
  272. MFCDEFS=$(MFCDEFS) /D_WINDOWS /DWIN32 /D_MPPC_
  273. CPP=cl
  274. CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
  275. !endif
  276.  
  277. CPPMAIN_FLAGS=$(CFLAGS)
  278.  
  279. !if "$(NO_PCH)" == "1"
  280. CPPFLAGS=$(CPPMAIN_FLAGS)
  281. !else
  282. PCHDIR=.
  283. CPPFLAGS=$(CPPMAIN_FLAGS) /Yustdafx.h /Fp$(PCHDIR)\$(STDAFX).pch
  284. !endif
  285.  
  286. !if "$(COFF)" == "1"
  287. NO_PDB=1
  288. !if "$(CODEVIEW)" != "1"
  289. LINKDEBUG=/incremental:no /debug:full /debugtype:coff
  290. !else
  291. LINKDEBUG=/incremental:no /debug:full /debugtype:both
  292. !endif
  293. !endif
  294.  
  295. !if "$(COFF)" != "1"
  296. !if "$(CODEVIEW)" == "1"
  297. LINKDEBUG=/incremental:no /debug:full /debugtype:cv
  298. !else
  299. LINKDEBUG=/incremental:no /debug:none
  300. !endif
  301. !endif
  302.  
  303. !if "$(NO_PDB)" == "1"
  304. LINKDEBUG=$(LINKDEBUG) /pdb:none
  305. !endif
  306.  
  307. !if "$(PLATFORM)" == "INTEL"
  308. LINKCMD=link $(LINKDEBUG)
  309. !endif
  310.  
  311. !if "$(PLATFORM)" == "MIPS"
  312. LINKCMD=link $(LINKDEBUG)
  313. !endif
  314.  
  315. !if "$(PLATFORM)" == "ALPHA"
  316. LINKCMD=link $(LINKDEBUG)
  317. !endif
  318.  
  319. !if "$(PLATFORM)" == "PPC"
  320. LINKCMD=link $(LINKDEBUG)
  321. !endif
  322.  
  323. !if "$(PLATFORM)" == "M68K"
  324. LINKCMD=link $(LINKDEBUG)
  325. !endif
  326.  
  327. !if "$(PLATFORM)" == "MPPC"
  328. LINKCMD=link $(LINKDEBUG)
  329. !endif
  330.  
  331. # link flags - must be specified after $(LINKCMD)
  332. #
  333. # conflags : creating a character based console application
  334. # guiflags : creating a GUI based "Windows" application
  335.  
  336. !if "$(MACOS)" != "1"
  337. CONFLAGS=/subsystem:console
  338. GUIFLAGS=/subsystem:windows
  339. !else
  340. !if defined(MACSIG)
  341. GUIFLAGS=/mac:type=APPL /mac:creator=$(MACSIG)
  342. !endif
  343. !endif
  344.  
  345. !if "$(UNICODE)" == "1"
  346. CONFLAGS=$(CONFLAGS) /entry:wmainCRTStartup
  347. GUIFLAGS=$(GUIFLAGS) /entry:wWinMainCRTStartup
  348. !endif
  349.  
  350. !if "$(MACOS)" != "1"
  351. PROJRESFILE=$(PROJ).res
  352. !else
  353. PROJRESFILE=$(PROJ).rsc $(MACSIG)mac.rsc
  354. !if "$(AFXDLL)" != "1"
  355. BASERESFILE=
  356. !endif
  357. !endif
  358. RESFILE=$(PROJRESFILE)
  359.  
  360. .SUFFIXES:
  361. .SUFFIXES: .c .cpp .rcm .rc
  362.  
  363. .cpp.obj:
  364.     $(CPP) @<<
  365. $(CPPFLAGS) $*.cpp
  366. <<
  367.  
  368. .c.obj:
  369.     $(CPP) @<<
  370. $(CFLAGS) $(CVARS) $*.c
  371. <<
  372.  
  373. !if "$(MACOS)" != "1"
  374. .rc.res:
  375.     rc /r $(MFCDEFS) $<
  376. !else
  377. .rc.rsc:
  378.     rc /r /m $(MFCDEFS) $<
  379. !endif
  380.  
  381. #############################################################################
  382.  
  383. !if "$(NO_PCH)" == "0"
  384. LINK_OBJS=$(OBJS) $(PCHDIR)\$(STDAFX).obj
  385. !else
  386. LINK_OBJS=$(OBJS)
  387. !endif
  388.  
  389. #
  390. # Build CONSOLE Win32 application
  391. #
  392. !if "$(CONSOLE)" == "1"
  393.  
  394. !if "$(MACOS)" == "1"
  395. !error Macintosh targets do not support console applications
  396. !endif
  397.  
  398. $(PROJ).exe: $(LINK_OBJS)
  399.     $(LINKCMD) @<<
  400. $(CONFLAGS) /out:$(PROJ).exe /map:$(PROJ).map
  401. $(LINK_OBJS) $(EXTRA_LIBS)
  402. <<
  403.  
  404. !endif  # CONSOLE=1
  405.  
  406. #
  407. # Build Win32 application
  408. #
  409. !if "$(CONSOLE)" == "0"
  410.  
  411. !if "$(MACOS)" == "1"
  412. copy: $(PROJ).exe
  413. !if defined(MACNAME)
  414.     mfile copy $(PROJ).exe ":$(MACNAME):$(PROJ)"
  415. !endif
  416. !endif
  417.  
  418. !if "$(MACOS)" == "1"
  419. $(MACSIG)mac.rsc: $(MACSIG)mac.r
  420.     mrc $(MFCDEFS) /DARCHITECTURE=$(ARCHITECTURE) /o $(MACSIG)mac.rsc $(MACSIG)mac.r
  421. !endif
  422.  
  423. !if "$(USRDLL)" == "1"
  424. $(PROJ).dll: $(LINK_OBJS) $(PROJRESFILE)
  425.     $(LINKCMD) @<<
  426. $(GUIFLAGS) /out:$(PROJ).dll /map:$(PROJ).map
  427. /dll /def:$(PROJ).def
  428. $(LINK_OBJS) $(RESFILE) $(EXTRA_LIBS)
  429. <<
  430.  
  431. $(PROJ).res:  resource.h
  432. $(PROJ).rsc:  resource.h
  433. !endif
  434.  
  435. !if "$(SIMPLE_APP)" != "1"
  436. $(PROJ).exe: $(LINK_OBJS) $(PROJRESFILE)
  437.     $(LINKCMD) @<<
  438. $(GUIFLAGS) /out:$(PROJ).exe /map:$(PROJ).map
  439. $(LINK_OBJS) $(RESFILE) $(EXTRA_LIBS)
  440. <<
  441.  
  442. $(PROJ).res:  resource.h
  443. $(PROJ).rsc:  resource.h
  444. !endif
  445.  
  446. !if "$(SIMPLE_APP)" == "1"
  447. !if "$(MACOS)" == "1"
  448. $(PROJ).exe: $(LINK_OBJS) $(MACSIG)mac.rsc
  449.     $(LINKCMD) @<<
  450. $(GUIFLAGS) /out:$(PROJ).exe /map:$(PROJ).map
  451. $(LINK_OBJS)  $(MACSIG)mac.rsc $(EXTRA_LIBS)
  452. <<
  453.  
  454. !else
  455. $(PROJ).exe: $(LINK_OBJS)
  456.     $(LINKCMD) @<<
  457. $(GUIFLAGS) /out:$(PROJ).exe /map:$(PROJ).map
  458. $(LINK_OBJS) $(EXTRA_LIBS)
  459. <<
  460.  
  461. !endif
  462. !endif
  463.  
  464. !if "$(NO_PCH)" == "0"
  465. $(PCHDIR)\$(STDAFX).obj $(PCHDIR)\$(STDAFX).pch: stdafx.h stdafx.cpp
  466.     echo "BUILDING SHARED PCH and PCT files"
  467.     $(CPP) @<<
  468. $(CPPMAIN_FLAGS) /Ycstdafx.h /Fp$(PCHDIR)\$(STDAFX).pch /Fo$(PCHDIR)\$(STDAFX).obj /c $(ROOT)\stdafx.cpp
  469. <<
  470.  
  471. $(OBJS): $(PCHDIR)\$(STDAFX).pch
  472. !endif
  473.  
  474. !endif  # CONSOLE=0
  475.  
  476. clean::
  477.     if exist $(PROJ).exe erase $(PROJ).exe
  478.     if exist *.aps erase *.aps
  479.     if exist *.pch erase *.pch
  480.     if exist *.map erase *.map
  481.     if exist *.obj erase *.obj
  482.     if exist *.exp erase *.exp
  483.     if exist *.pdb erase *.pdb
  484.     if exist *.map erase *.map
  485.     if exist *.lib erase *.lib
  486.     if exist *.res erase *.res
  487.     if exist *.rsc erase *.rsc
  488.     if exist *.pef erase *.pef
  489.  
  490. #############################################################################
  491.