makefile.inc 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649
  1. #############################################################################
  2. #
  3. # Common makefile definitions
  4. #
  5. #############################################################################
  6. !IFNDEF SRCROOT
  7. SRCROOT=$(MAINTARGROOT)
  8. !ENDIF
  9. !IFNDEF DESTROOT
  10. DESTROOT=$(SRCROOT)
  11. !ENDIF
  12. !IFNDEF PROJCLEAN
  13. PROJCLEAN=DefaultClean
  14. !ENDIF
  15. FEDSRC=$(FEDROOT)\src
  16. FEDEXT=$(FEDROOT)\extern
  17. SRCDIR=$(FEDSRC)\$(SRCROOT)
  18. DESTDIR=$(FEDROOT)\Objs\$(FLAVOR)\$(DESTROOT)
  19. !IFNDEF PCHINCLOCAL
  20. PCHINCLOCAL=$(SRCDIR)\*.h
  21. !ENDIF
  22. # Use DX6 by default, or define DX5, DX6, or DX7 to use dx5, dx6, or dx7
  23. !IFDEF DX5
  24. DXROOT=$(FEDEXT)\dx
  25. !ELSE
  26. !IFDEF DX6
  27. DXROOT=$(FEDEXT)\dx6
  28. !ELSE
  29. !IFDEF DX7
  30. DXROOT=$(FEDEXT)\dx7
  31. !ELSE
  32. # default to DX7
  33. DXROOT=$(FEDEXT)\dx7
  34. !ENDIF
  35. !ENDIF
  36. !ENDIF
  37. MAINTARG=$(MAINTARGROOT).$(MAINTARGEXT)
  38. MAINTARGFULLPATH=$(DESTDIR)\$(MAINTARG)
  39. #todo: use an env var to specify prefix installation location
  40. !if defined(prefix)
  41. CC=c:\prefix\bin\prefix.exe
  42. !else
  43. CC=cl
  44. !endif
  45. LINK=link
  46. BSCMAKE=bscmake
  47. LIB=lib
  48. MIDL=midl
  49. MSDEV=msdev
  50. REMDIR=$(FEDSRC)\tools\bin32\delnode -q
  51. MKDEP=$(FEDSRC)\tools\bin32\mkdep
  52. REGSVR=regsvr32 /s /c
  53. SPLITSYMBOLSTOOL=$(FEDSRC)\tools\build\SplitSymbols
  54. #############################################################################
  55. # MIDL Build Rule Arguments
  56. !IFNDEF MIDLINCLOCAL
  57. MIDLINCLOCAL=
  58. !ENDIF
  59. MIDLINC =/I $(FEDEXT)\vc\inc
  60. MIDLARGS=$(MIDLINC) $(MIDLINCLOCAL) \
  61. /win32 \
  62. /Oicf /no_def_idir /out $(DESTDIR) \
  63. /h $(*B).h \
  64. /tlb $(*B).tlb \
  65. /dlldata $(*B)_d.c \
  66. /iid $(*B)_i.c \
  67. /proxy $(*B)_p.c
  68. #############################################################################
  69. # Registration username/password
  70. !if defined(user)
  71. REGUSER=$(user)
  72. REGPW=$(pw)
  73. !else
  74. REGUSER=Interactive User
  75. REGPW=
  76. !endif
  77. #############################################################################
  78. # Registration commands
  79. REGEXE=if exist $(MAINTARGFULLPATH) $(MAINTARGFULLPATH) -RegServer "$(REGUSER)" $(REGPW)
  80. UNREGEXE=if exist $(MAINTARGFULLPATH) $(MAINTARGFULLPATH) -UnregServer
  81. REGDLL=if exist $(MAINTARGFULLPATH) $(REGSVR) $(MAINTARGFULLPATH)
  82. UNREGDLL=if exist $(MAINTARGFULLPATH) $(REGSVR) /u $(MAINTARGFULLPATH)
  83. #############################################################################
  84. # What registry key to use
  85. !if defined (ALLEGIANCE_DEV)
  86. COMPILE_DEV_REGKEY=/D_ALLEGIANCE_DEV_
  87. !else
  88. COMPILE_DEV_REGKEY=
  89. !endif
  90. #############################################################################
  91. #
  92. # Path
  93. #
  94. #############################################################################
  95. !include "path.mak"
  96. #############################################################################
  97. #
  98. # Version info
  99. #
  100. #############################################################################
  101. !IFDEF VER
  102. RARGSVERSION= /d VER=$(VER)
  103. !ELSE
  104. RARGSVERSION=
  105. !ENDIF
  106. #############################################################################
  107. #
  108. # Static Retail build
  109. #
  110. #############################################################################
  111. # /O1 == /Og /Os /Oy /Ob1 /Gs /Gf /Gy
  112. # /O2 == /Og /Ot /Oy /Ob1 /Gs /Gf /Gy /Oi
  113. #
  114. # /Og global optimization
  115. # /Os small code sequences
  116. # /Ot fast code sequences
  117. # /Oy frame pointer omission
  118. # /Ob1 inline
  119. # /Ob2 automatic inline
  120. # /Gs stack probes
  121. # /Gf string pooling
  122. # /Gy function level linking
  123. #
  124. # /Oi inline intrisics
  125. # /Oa assume no aliasing
  126. # /Ow assume aliasing across function calls
  127. # /Gr _fastcall
  128. # /G5 Pentium
  129. # /G6 Pentium Pro
  130. OPTIMIZATION_FLAGS=/Og /Os /Oy /Ob1 /Gs /Gf /Gy
  131. #OPTIMIZATION_FLAGS=/O1
  132. #############################################################################
  133. #
  134. # Static Retail build
  135. #
  136. #############################################################################
  137. !IFDEF sretail
  138. FLAVOR=SRetail
  139. STATICFLAVOR=SRetail
  140. CARGSFLAVOR= $(COMPILE_DEV_REGKEY) /D "NDEBUG" /D "OPTIMIZED" /MT $(OPTIMIZATION_FLAGS) /GR-
  141. RARGSFLAVOR= /d "NDEBUG" /D "OPTIMIZED" $(RARGSVERSION)
  142. LIBSFLAVOR=libcmt.lib libcpmt.lib libcimt.lib
  143. MFCLIBSFLAVOR=nafxcw.lib ctl3d32s.lib comctl32.lib
  144. LARGSFLAVOR=/debug /debugtype:map,cv /INCREMENTAL:NO /RELEASE /nodefaultlib /OPT:REF /OPT:ICF,4
  145. !ELSEIFDEF stest
  146. #############################################################################
  147. #
  148. # Static Test build
  149. #
  150. #############################################################################
  151. FLAVOR=STest
  152. STATICFLAVOR=STest
  153. CARGSFLAVOR= $(COMPILE_DEV_REGKEY) /D "_DEBUG" /D "DEBUG" /D "OPTIMIZED" /MT $(OPTIMIZATION_FLAGS) /GR
  154. RARGSFLAVOR= /d "_DEBUG" /d "DEBUG" /D "OPTIMIZED" $(RARGSVERSION)
  155. LIBSFLAVOR=libcmtd.lib libcpmtd.lib libcimtd.lib
  156. MFCLIBSFLAVOR=nafxcwd.lib ctl3d32s.lib comctl32.lib
  157. LARGSFLAVOR=/debug /debugtype:map,cv /INCREMENTAL:NO /nodefaultlib /OPT:REF /OPT:ICF,4
  158. !ELSEIFDEF sdebug
  159. #############################################################################
  160. #
  161. # Static Debug build
  162. #
  163. #############################################################################
  164. FLAVOR=SDebug
  165. STATICFLAVOR=SDebug
  166. CARGSFLAVOR = $(COMPILE_DEV_REGKEY) /D "_DEBUG" /D "DEBUG" /MTd /Od /GR /GZ
  167. RARGSFLAVOR= /d "_DEBUG" /d "DEBUG" $(RARGSVERSION)
  168. LIBSFLAVOR=libcmtd.lib libcpmtd.lib libcimtd.lib
  169. MFCLIBSFLAVOR=nafxcwd.lib ctl3d32s.lib comctl32.lib
  170. LARGSFLAVOR=/debug /debugtype:map,cv /INCREMENTAL:NO /nodefaultlib
  171. !ELSEIFDEF retail
  172. #############################################################################
  173. #
  174. # Retail build
  175. #
  176. #############################################################################
  177. FLAVOR=Retail
  178. CARGSFLAVOR= $(COMPILE_DEV_REGKEY) /D "NDEBUG" /D "OPTIMIZED" /D"_AFXDLL" /MD $(OPTIMIZATION_FLAGS) /GR-
  179. RARGSFLAVOR= /d "NDEBUG" /D "OPTIMIZED" /D"_AFXDLL" $(RARGSVERSION)
  180. LIBSFLAVOR=msvcrt.lib msvcprt.lib
  181. MFCLIBSFLAVOR=mfc42.lib mfcs42.lib ctl3d32.lib
  182. LARGSFLAVOR=/debug /debugtype:map,cv /INCREMENTAL:NO /RELEASE /nodefaultlib /fixed:no /OPT:REF /OPT:ICF,4
  183. !ELSEIFDEF test
  184. #############################################################################
  185. #
  186. # Test build
  187. #
  188. #############################################################################
  189. FLAVOR=Test
  190. CARGSFLAVOR= $(COMPILE_DEV_REGKEY) /D "_DEBUG" /D "DEBUG" /D "OPTIMIZED" /D"_AFXDLL" /MD $(OPTIMIZATION_FLAGS) /GR
  191. RARGSFLAVOR= /d "_DEBUG" /d "DEBUG" /D "OPTIMIZED" /D"_AFXDLL" $(RARGSVERSION)
  192. LIBSFLAVOR=msvcrtd.lib msvcprtd.lib
  193. MFCLIBSFLAVOR=mfc42d.lib mfcs42d.lib mfco42d.lib ctl3d32.lib
  194. LARGSFLAVOR=/debug /debugtype:map,cv /INCREMENTAL:NO /nodefaultlib /OPT:REF /OPT:ICF,4
  195. !ELSEIFDEF training
  196. #############################################################################
  197. #
  198. # Debug Training build
  199. #
  200. #############################################################################
  201. FLAVOR=Debug
  202. CARGSFLAVOR = $(COMPILE_DEV_REGKEY) /D "_DEBUG_TRAINING" /D "_DEBUG" /D "DEBUG" /D"_AFXDLL" /MDd /Od /GR /GZ
  203. RARGSFLAVOR= /d "_DEBUG" /d "DEBUG" /D"_AFXDLL" $(RARGSVERSION)
  204. LIBSFLAVOR=msvcrtd.lib msvcprtd.lib
  205. MFCLIBSFLAVOR=mfc42d.lib mfcs42d.lib mfco42d.lib ctl3d32.lib
  206. LARGSFLAVOR=/debug /debugtype:map,cv /INCREMENTAL:NO /nodefaultlib
  207. !ELSEIFDEF icap
  208. #############################################################################
  209. #
  210. # IceCap build
  211. #
  212. # This only works for the standard retail build.
  213. #
  214. #############################################################################
  215. FLAVOR=ICap
  216. RARGSFLAVOR= /d "_DEBUG" /d "DEBUG" /D "OPTIMIZED" /D"_AFXDLL" $(RARGSVERSION)
  217. MFCLIBSFLAVOR=mfc42.lib mfcs42.lib ctl3d32.lib
  218. NOMAP=1
  219. icepick=1
  220. !ifdef icepick
  221. CARGSFLAVOR= $(COMPILE_DEV_REGKEY) /D "ICAP" /D "NDEBUG" /D "OPTIMIZED" /D"_AFXDLL" /ML $(OPTIMIZATION_FLAGS) /GR- /Zi
  222. LARGSFLAVOR= /INCREMENTAL:NO /RELEASE /nodefaultlib /fixed:no /dbgimplib /debug /debugtype:cv,fixup /opt:ref
  223. LIBSFLAVOR=libc.lib libcp.lib icecap.lib
  224. !else
  225. CARGSFLAVOR= $(COMPILE_DEV_REGKEY) /D "NDEBUG" /D "OPTIMIZED" /D"_AFXDLL" /ML /GR- /Zi /Osyb1 /Gs /Gf /Gy /fastcap
  226. LARGSFLAVOR= /INCREMENTAL:NO /RELEASE /nodefaultlib /fixed:no /debug /debugtype:cv
  227. LIBSFLAVOR=libc.lib libcp.lib icecap.lib
  228. !endif
  229. !ELSEIFDEF prefix
  230. #############################################################################
  231. #
  232. # prefix build
  233. #
  234. # This only works for the standard retail build.
  235. #
  236. #############################################################################
  237. FLAVOR=prefix
  238. CARGSFLAVOR= $(COMPILE_DEV_REGKEY) /D "NDEBUG" /D "OPTIMIZED" /D"_AFXDLL" /MD $(OPTIMIZATION_FLAGS) /GR-
  239. RARGSFLAVOR= /d "NDEBUG" /D "OPTIMIZED" /D"_AFXDLL" $(RARGSVERSION)
  240. LIBSFLAVOR=msvcrt.lib msvcprt.lib
  241. MFCLIBSFLAVOR=mfc42.lib mfcs42.lib ctl3d32.lib
  242. LARGSFLAVOR=/debug /debugtype:map,cv /INCREMENTAL:NO /RELEASE /nodefaultlib /fixed:no
  243. !ELSE
  244. #############################################################################
  245. #
  246. # Debug build
  247. #
  248. #############################################################################
  249. FLAVOR=Debug
  250. CARGSFLAVOR = $(COMPILE_DEV_REGKEY) /D "_DEBUG" /D "DEBUG" /D"_AFXDLL" /MDd /Od /GR /GZ
  251. RARGSFLAVOR= /d "_DEBUG" /d "DEBUG" /D"_AFXDLL" $(RARGSVERSION)
  252. LIBSFLAVOR=msvcrtd.lib msvcprtd.lib
  253. MFCLIBSFLAVOR=mfc42d.lib mfcs42d.lib mfco42d.lib ctl3d32.lib
  254. LARGSFLAVOR=/debug /debugtype:map,cv /INCREMENTAL:NO /nodefaultlib
  255. !ENDIF
  256. #############################################################################
  257. #
  258. # BoundsChecker build
  259. #
  260. #############################################################################
  261. !ifdef BCHK
  262. !ifndef BCBINDIR
  263. !error For BC build, specify location of nmcl.exe in BCBINDIR variable!
  264. !endif
  265. !ifdef STATICFLAVOR
  266. !IFDEF sretail
  267. FLAVOR = SBChecker
  268. !else
  269. FLAVOR = SBCheckerD
  270. !endif
  271. !else
  272. !IFDEF retail
  273. FLAVOR = BChecker
  274. !else
  275. FLAVOR = BCheckerD
  276. !endif
  277. !endif
  278. CC = "$(BCBINDIR)\nmcl.exe" $(BCOPTS)
  279. LINK = "$(BCBINDIR)\nmlink.exe"
  280. !endif
  281. #############################################################################
  282. #
  283. # Numega TrueTime build
  284. #
  285. #############################################################################
  286. !ifdef TRUETIME
  287. !ifndef TTBINDIR
  288. !error For TT build, specify location of nmcl.exe in TTBINDIR variable!
  289. !endif
  290. !ifdef STATICFLAVOR
  291. !IFDEF sretail
  292. FLAVOR = STrueTime
  293. !else
  294. FLAVOR = STrueTimeD
  295. !endif
  296. !else
  297. !IFDEF retail
  298. FLAVOR = TrueTime
  299. !else
  300. FLAVOR = TrueTimeD
  301. !endif
  302. !endif
  303. CC = "$(TTBINDIR)\nmcl.exe" /NMttOn $(TTOPTS)
  304. LINK = "$(TTBINDIR)\nmlink.exe" /NMttOn
  305. !endif
  306. !if defined(VERBOSE)
  307. NOLOGO=
  308. !else
  309. CC=@$(CC)
  310. LINK=@$(LINK)
  311. LIB=@$(LIB)
  312. MIDL=@$(MIDL)
  313. BSCMAKE=@$(BSCMAKE)
  314. MSDEV=@$(MSDEV)
  315. REMDIR=@$(REMDIR)
  316. MKDEP=@$(MKDEP)
  317. NOLOGO=/nologo
  318. REGEXE=@$(REGEXE)
  319. UNREGEXE=@$(UNREGEXE)
  320. REGDLL=@$(REGDLL)
  321. UNREGDLL=@$(UNREGDLL)
  322. !endif
  323. #############################################################################
  324. #
  325. # DreamCast build
  326. #
  327. #############################################################################
  328. !ifdef DREAMCAST
  329. !IFDEF retail
  330. FLAVOR=DreamCast
  331. !else
  332. FLAVOR=DreamCastD
  333. !endif
  334. CESubsystem=windowsce,2.10
  335. CEVersion=210
  336. CEConfigName=Maxall (WWE) 2.10
  337. CECrt=C
  338. CECrtDebug=C
  339. CECrtMT=C
  340. CECrtMTDebug=C
  341. CEx86NoDefaultLib=libc.lib /nodefaultlib:libcd.lib /nodefaultlib:libcmt.lib\
  342. /nodefaultlib:libcmtd.lib /nodefaultlib:msvcrt.lib /nodefaultlib:msvcrtd.lib
  343. CEx86Corelibc=corelibc.lib
  344. CARGSFLAVOR=/nologo /Qsh4 /MC /W3 /Zi /Oi /Qs /Qfast /c\
  345. /D "UNICODE" /D "STRICT"\
  346. /D "SHx" /D "SH4" /D "_SH4_"\
  347. /D "DRAGON" /D "DREAMCAST"\
  348. /D _WIN32_WCE=$(CEVersion) /D "$(CEConfigName)" /D UNDER_CE=$(CEVersion)\
  349. /I $(FEDSRC)\dreamcast\
  350. /Fo$(DESTDIR)\ /Fd$(PDB)
  351. !IFDEF retail
  352. CARGSFLAVOR= $(CARGSFLAVOR) /O2 /D "NDEBUG"
  353. !else
  354. CARGSFLAVOR= $(CARGSFLAVOR) /Od /D "_DEBUG" /D "DEBUG"
  355. !endif
  356. LIBSFLAVOR=
  357. CC=shcl
  358. LIB=link.exe -lib
  359. !endif
  360. #############################################################################
  361. #
  362. # Win95
  363. #
  364. #############################################################################
  365. !IFDEF WIN95
  366. CARGSFLAVOR= $(CARGSFLAVOR) /D"WIN95"
  367. !ENDIF
  368. #############################################################################
  369. #
  370. # BSC options
  371. #
  372. #############################################################################
  373. BSC=$(DESTDIR)\$(MAINTARGROOT).bsc
  374. !IFDEF retail
  375. # don't build browse info for retail builds
  376. BSCARG=
  377. BSCTARG=
  378. !else
  379. !IFNDEF NOBSC
  380. BSCARG=/Fr$* /Zn
  381. BSCTARG=$(BSC)
  382. !ELSE
  383. BSCARG=
  384. BSCTARG=
  385. !ENDIF
  386. !endif
  387. #############################################################################
  388. #
  389. # Compiler options
  390. #
  391. #############################################################################
  392. PDB=$(DESTDIR)\$(MAINTARGROOT).pdb
  393. !ifdef DREAMCAST
  394. CARGSINC= $(CARGSFLAVOR)
  395. !else
  396. CARGSINC= $(CARGSFLAVOR) \
  397. $(BSCARG) \
  398. $(NOLOGO) /W3 /WX /Zi /c \
  399. /Gi- /Gm- /GX- \
  400. /D "WIN32" /D "_WINDOWS" /D "STRICT" \
  401. /Fo$(DESTDIR)\ /FD /Fd$(PDB)
  402. !endif
  403. CARGS=$(CARGSLOCAL) $(CARGSINC)
  404. !ifdef USERNAME
  405. !if "$(USERNAME)"=="a-markcu"
  406. USERNAME=markcu
  407. !endif
  408. CARGS=/D "$(USERNAME)" $(CARGS)
  409. !endif
  410. !ifdef DREAMCAST
  411. INCLUDESYS=$(FEDEXT)\dreamcast\inc
  412. INCLUDEINC=$(FEDEXT)\dreamcast\inc;$(FEDSRC)\Inc;
  413. INCLUDE=$(INCLUDELOCAL);$(INCLUDEINC);
  414. !else
  415. INCLUDESYS=$(DXROOT)\include;$(FEDEXT)\vc\inc;$(FEDEXT)\vc\inc\sys;$(FEDEXT)\vc\atl\inc;
  416. INCLUDEINC=$(DXROOT)\include;$(FEDSRC)\Inc;$(FEDEXT)\vc\inc;$(FEDEXT)\vc\inc\sys;$(FEDEXT)\vc\atl\inc;$(FEDEXT)\icecap\include;$(FEDEXT)\Zone;$(FEDSRC)\Zone;$(FEDEXT)\icqapi;$(FEDSRC)\Guids
  417. INCLUDE=$(INCLUDELOCAL);$(INCLUDEINC);
  418. !endif
  419. #############################################################################
  420. #
  421. # Resources
  422. #
  423. #############################################################################
  424. !if defined(VERBOSE)
  425. RC=RC
  426. !else
  427. RC=@RC
  428. !endif
  429. LANG=Usa
  430. #############################################################################
  431. #
  432. # Message Files
  433. #
  434. #############################################################################
  435. !if defined(VERBOSE)
  436. MC=MC
  437. !else
  438. MC=@MC
  439. !endif
  440. #############################################################################
  441. #
  442. # Link
  443. #
  444. #############################################################################
  445. LIBARGS= $(NOLOGO) /out:$(MAINTARGFULLPATH)
  446. !if defined(VERBOSE)
  447. MAPSYM=MAPSYM
  448. !else
  449. MAPSYM=@MAPSYM -nologo
  450. !endif
  451. #############################################################################
  452. #
  453. # Targets
  454. #
  455. #############################################################################
  456. !MESSAGE -----------------------------------------------------------------------------
  457. !MESSAGE Building $(MAINTARG), Flavor: $(FLAVOR), Language: $(LANG)
  458. First: $(DESTDIR) $(IDLTARGS) $(MAINTARGFULLPATH)
  459. Shell:
  460. $(OSCMDSHELL)
  461. DefaultClean: $(DESTDIR)
  462. del $(DESTDIR)\*.h <$(FEDSRC)\tools\yes.txt
  463. del $(DESTDIR)\*.c <$(FEDSRC)\tools\yes.txt
  464. del $(DESTDIR)\*.obj <$(FEDSRC)\tools\yes.txt
  465. del $(DESTDIR)\*.sbr <$(FEDSRC)\tools\yes.txt
  466. del $(DESTDIR)\*.pch <$(FEDSRC)\tools\yes.txt
  467. del $(DESTDIR)\*.pdb <$(FEDSRC)\tools\yes.txt
  468. del $(DESTDIR)\*.res <$(FEDSRC)\tools\yes.txt
  469. Clean: $(PROJCLEAN)
  470. Full: Clean $(MAINTARGFULLPATH)
  471. $(DESTDIR):
  472. -if not exist $(FEDROOT)\Objs md $(FEDROOT)\Objs
  473. -if not exist $(FEDROOT)\Objs\$(FLAVOR) md $(FEDROOT)\Objs\$(FLAVOR)
  474. -if not exist $(DESTDIR) md $(DESTDIR)
  475. #############################################################################
  476. #
  477. # Precompiled headers
  478. #
  479. #############################################################################
  480. !ifdef PCHROOT
  481. PCHFILE=$(DESTDIR)\$(PCHROOT).pch
  482. PCHHEADER=$(PCHROOT).h
  483. !if defined(prefix)
  484. CARGSPCH=
  485. !else
  486. CARGSPCH=/Yu$(PCHHEADER) /Fp$(PCHFILE)
  487. !endif
  488. $(PCHFILE): $(PCHINCLOCAL) $(PCHINC)
  489. $(CC) $(CARGS) /Yc$(PCHHEADER) /Fp$(PCHFILE) $(SRCDIR)\$(@B).cpp
  490. !else
  491. CARGSPCH=
  492. !endif
  493. !ifdef MSGFILE
  494. MSGRCFILE=$(DESTDIR)\$(MSGFILE).rc
  495. $(MSGFILE): $(MSGRCFILE)
  496. $(MSGRCFILE): $(SRCDIR)\$(MSGFILE).msg
  497. !if defined(VERBOSE)
  498. $(MC) $(SRCDIR)\$(@B).msg -r $(DESTDIR) -h $(DESTDIR) 2>&1 | $(SED) -n -e "/Redefining value of English/!p"
  499. !else
  500. $(MC) $(SRCDIR)\$(@B).msg -r $(DESTDIR) -h $(DESTDIR)
  501. !endif
  502. # $(MC) $(SRCDIR)\$(@B).msg
  503. !endif
  504. .cpp{$(DESTDIR)}.obj:
  505. $(CC) $(CARGS) $(CARGSPCH) $(SRCDIR)\$(@B).cpp
  506. #.c{$(DESTDIR)}.obj:
  507. # $(CC) $(CARGS) $(SRCDIR)\$(@B).c
  508. #############################################################################
  509. #
  510. # Automatic Dependency Generation
  511. #
  512. !ifndef NODEPENDENCIES
  513. !include "makedep.inc"
  514. !endif