home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1998 May / Pcwk5b98.iso / Borland / Cplus45 / BC45 / CLASSSRC.PAK / MAKEFILE < prev    next >
Text File  |  1995-08-29  |  23KB  |  639 lines

  1. #--------------------------------------------------------------------------#
  2. #                                                                          #
  3. #   MAKEFILE for Class Libraries                                           #
  4. #                                                                          #
  5. #   Copyright (c) Borland International 1991, 1994                         #
  6. #   All Rights Reserved                                                    #
  7. #                                                                          #
  8. #   Usage:                                                                 #
  9. #                                                                          #
  10. #       maker options                                                      #
  11. #                                                                          #
  12. #   Options:                                                               #
  13. #                                                                          #
  14. #       -DDOS, -DWIN32, -DOS2   Specifies target system                    #
  15. #                                                                          #
  16. #       -DMT                    Build multi-thread version                 #
  17. #                                                                          #
  18. #       -DMODEL=x               Specifies memory model for DOS library.    #
  19. #                               Required when building DOS library.        #
  20. #                               Must be s, c, m, l, or h.                  #
  21. #                                                                          #
  22. #       -DNAME=xxx              Base name of the target library or DLL     #
  23. #                               Always required.                           #
  24. #                                                                          #
  25. #       -DSUFFIX=xxx            Suffix to add to the base name when        #
  26. #                               building a DLL. For example, -DSUFFIX=d is #
  27. #                               used when building the DBG DLLs. This puts #
  28. #                               'd' into the name of the dll and the name  #
  29. #                               of the import library.                     #
  30. #                                                                          #
  31. #       -DDLL                   Build a DLL.                               #
  32. #                                                                          #
  33. #       -DDBG                   Build the debugging version of the target. #
  34. #                                                                          #
  35. #       -DOBJECTS               Also build the object-based containers     #
  36. #                                                                          #
  37. #       -DBIDSFARVTABLE         moves class vtables out of dgroup          #
  38. #                                                                          #
  39. #   16-bit non-diagnostic static libraries:                                #
  40. #   make -r -DDOS -DMODEL=s -DNAME=bidss                                   #
  41. #   make -r -DDOS -DMODEL=c -DNAME=bidsc                                   #
  42. #   make -r -DDOS -DMODEL=m -DNAME=bidsm                                   #
  43. #   make -r -DDOS -DMODEL=l -DNAME=bidsl                                   #
  44. #   make -r -DDOS -DMODEL=h -DNAME=bidsh                                   #
  45. #                                                                          #
  46. #   16-bit diagnostic static libraries:                                    #
  47. #   make -r -DDOS -DMODEL=s -DDBG -DNAME=bidsdbs                           #
  48. #   make -r -DDOS -DMODEL=c -DDBG -DNAME=bidsdbc                           #
  49. #   make -r -DDOS -DMODEL=m -DDBG -DNAME=bidsdbm                           #
  50. #   make -r -DDOS -DMODEL=l -DDBG -DNAME=bidsdbl                           #
  51. #   make -r -DDOS -DMODEL=h -DDBG -DNAME=bidsdbh                           #
  52. #                                                                          #
  53. #   16-bit DLLs:                                                           #
  54. #   make -r -DDOS -DDLL -DNAME=bids                                        #
  55. #   make -r -DDOS -DDLL -DDBG -DNAME=bids -DSUFFIX=d                       #
  56. #                                                                          #
  57. #   WIN32 libraries:                                                       #
  58. #   make -r -DWIN32 -DNAME=bidsf                                           #
  59. #   make -r -DWIN32 -DDBG -DNAME=bidsdf                                    #
  60. #                                                                          #
  61. #   WIN32 DLLs:                                                            #
  62. #   make -r -DWIN32 -DDLL -DNAME=bids -DSUFFIX=f                           #
  63. #   make -r -DWIN32 -DDLL -DDBG -DNAME=bids -DSUFFIX=df                    #
  64. #                                                                          #
  65. #   OS/2 libraries:                                                        #
  66. #   make -r -DOS2 -DNAME=bids2                                             #
  67. #   make -r -DOS2 -DDBG -DNAME=bidsdb2                                     #
  68. #                                                                          #
  69. #   OS/2 DLLs:                                                             #
  70. #   make -r -DOS2 -DDLL -DNAME=bids -DSUFFIX=2                             #
  71. #   make -r -DOS2 -DDLL -DDBG -DNAME=bids -DSUFFIX=d2                      #
  72. #                                                                          #
  73. #--------------------------------------------------------------------------#
  74.  
  75. .autodepend
  76. .swap
  77.  
  78. !if !$d(DOS) && !$d(WIN32) && !$d(OS2)
  79. !error Must specify target system DOS, WIN32, or OS2
  80. !endif
  81.  
  82. !if $d(DOS) && !($d(MODEL) || $d(DLL))
  83. !error When building DOS libraries, must specify MODEL or DLL
  84. !endif
  85.  
  86. !if $d(MODEL) && ($d(OS2) || $d(WIN32))
  87. !error When building OS2 or WIN32 libraries, cannot specify MODEL
  88. !endif
  89.  
  90. !if $d(DLL) && !$d(NAME)
  91. !error Must specify a NAME for a DLL.
  92. !endif
  93.  
  94. !if $d(DOS) && $d(MT)
  95. !error Cannot build multi-thread library for DOS.
  96. !endif
  97.  
  98. !if $d(MODEL)
  99. !if $(MODEL)!=s && $(MODEL)!=c && $(MODEL)!=m && $(MODEL)!=l && $(MODEL)!=h
  100. !Error MODEL must be s, c, m, l, or h
  101. !endif
  102. !endif
  103.  
  104. #--------------------------------------------------------------------#
  105. #                                                                    #
  106. # Set up the names of the tools to be used. If these macros have     #
  107. #   already been defined in the environment, use those definitions.  #
  108. #                                                                    #
  109. #   BCC is the compiler.                                             #
  110. #   MAKE is make.                                                    #
  111. #   TLIB is the librarian.                                           #
  112. #   TLINK is the linker.                                             #
  113. #                                                                    #
  114. #--------------------------------------------------------------------#
  115.  
  116.  
  117. !if !$d(BCC)
  118. !if $d(WIN32)
  119. BCC = bcc32 +turboc.cfg -v- -x
  120. !elif $d(OS2)
  121. BCC = bcc
  122. !else
  123. BCC = bcc -2- -x
  124. !endif
  125. !endif
  126.  
  127. !if !$d(MAKE)
  128. !if $d(WIN32)
  129. MAKE = maker
  130. !else
  131. MAKE = make
  132. !endif
  133. !endif
  134.  
  135. !if !$d(TLIB)
  136. !if $d(WIN32)
  137. TLIB = tlib /C
  138. !else
  139. TLIB = tlib /C
  140. !endif
  141. !endif
  142.  
  143. !if !$d(TLINK)
  144. !if $d(WIN32)
  145. TLINK = tlink32
  146. !else
  147. TLINK = tlink
  148. !endif
  149. !endif
  150.  
  151. !if !$d(BRCC)
  152. !if $d(WIN32)
  153. BRCC = brcc32 -dWIN32
  154. !else
  155. BRCC = brcc
  156. !endif
  157. !endif
  158.  
  159. #--------------------------------------------------------------------#
  160. #                                                                    #
  161. # Set up options for the various tools                               #
  162. #                                                                    #
  163. #   WFLAG does some magic to produce a library that works for both   #
  164. #   DOS and Windows.                                                 #
  165. #                                                                    #
  166. #   WLFLAG is a variation of WFLAG for the implib objs               #
  167. #                                                                    #
  168. #   DFLAG contains the debugging switches that will be passed to the #
  169. #   compiler through the .CFG file.                                  #
  170. #                                                                    #
  171. #   LFLAG contains the switches that will be passed to TLIB on the   #
  172. #   command line.                                                    #
  173. #                                                                    #
  174. #   XFLAG handles _RTLDLL, which is passed to the compiler in the    #
  175. #   .CFG file and determines whether classes are to be exported.     #
  176. #   It also handle far vtable options when they are enabled.         #
  177. #                                                                    #
  178. #   LINKOPTS is the list of options for the linker.                  #
  179. #                                                                    #
  180. #--------------------------------------------------------------------#
  181.  
  182. !if $d(DOS) && $d(DLL)
  183. WFLAG = -WDE -xc
  184. WLFLAG = -Y
  185. !elif $d(DOS) && ($(MODEL) == s || $(MODEL) == c )
  186. WFLAG = -WE
  187. !elif $d(DOS) && ($(MODEL) == m || $(MODEL) == l)
  188. WFLAG = -Y
  189. !endif
  190.  
  191. !if $d(MT)
  192. !if $d(OS2)
  193. MTFLAG = -sm
  194. !else
  195. MTFLAG = -WM
  196. !endif
  197. !endif
  198.  
  199. !if $d(DBG)
  200. DFLAG = -v- -D__DEBUG=2 -D__WARN -D__TRACE
  201. LFLAG = /0
  202. !else
  203. DFLAG = -v- -D__DEBUG=0
  204. LFLAG = /0
  205. !endif
  206.  
  207. !if $d(DLL)
  208. XFLAG = -D_RTLDLL -D_BUILDBIDSDLL
  209. !endif
  210.  
  211. !if $d(BIDSFARVTABLE)
  212. XFLAG = $(XFLAG) -D_BIDSFARVTABLE  #;_RTLFARVTABLE if RTL is rebuilt too
  213. !endif
  214.  
  215. !if $d(DOS)
  216. !if $d(DLL)
  217. MFLAG = -ml
  218. !else
  219. MFLAG = -m$(MODEL)
  220. !endif
  221. !endif
  222.  
  223. !if $d(DOS)
  224. LINKOPTS = /C/c/s/Twd/Oc/Oi/Oa/Or
  225. !elif $d(OS2)
  226. LINKOPTS = /c/s/Tod
  227. !elif $d(WIN32)
  228. LINKOPTS = /c/s/Tpd
  229. !endif
  230.  
  231. !if $d(DLL)
  232. DEFFILE=deffile
  233. !endif
  234.  
  235. #--------------------------------------------------------------------#
  236. #                                                                    #
  237. # Build the macros to provide the startup code and library names     #
  238. # for building DLLs.                                                 #
  239. #                                                                    #
  240. #   STARTUP is the startup code.                                     #
  241. #                                                                    #
  242. #   LINKLIBS is the list of libraries.                               #
  243. #                                                                    #
  244. #--------------------------------------------------------------------#
  245.  
  246. !if !$d(DLL)
  247.  
  248. TARGETLIB = $(NAME)
  249.  
  250. !else
  251.  
  252. VER = 45
  253.  
  254. !if $d(DLL) && $d(WIN32) && $d(DBG)
  255. TARGETFILE = bds$(VER)$(SUFFIX)     # name is too long if we use 'bids'
  256. !else
  257. TARGETFILE = $(NAME)$(VER)$(SUFFIX)
  258. !endif
  259. TARGETLIB  = $(NAME)$(SUFFIX)i.lib
  260.  
  261. !if $d(DOS)
  262.  
  263. STARTUP = $(LIB)\c0dl.obj
  264. LINKLIBS = $(LIB)\import.lib $(LIB)\crtldll.lib
  265.  
  266. !elif $d(OS2)
  267.  
  268. STARTUP = $(LIB)\c02d.obj
  269.  
  270. !if $d(MT)
  271. LINKLIBS = $(LIB)\c2mti.lib $(LIB)\os2.lib
  272. !else
  273. LINKLIBS = $(LIB)\c2i.lib $(LIB)\os2.lib
  274. !endif
  275.  
  276. !else
  277.  
  278. STARTUP = $(LIB)\c0d32.obj
  279.  
  280. !if $d(MT)
  281. LINKLIBS = $(LIB)\cw32mti.lib $(LIB)\import32.lib
  282. !else
  283. LINKLIBS = $(LIB)\cw32i.lib $(LIB)\import32.lib
  284. !endif
  285.  
  286. !endif
  287.  
  288. !endif
  289.  
  290. #--------------------------------------------------------------------#
  291. #                                                                    #
  292. # OBJDIRLIST is the list of subdirectories under the OBJ directory   #
  293. #                                                                    #
  294. #   This is used by dirs to be sure all the subdirectories are       #
  295. #   present and by clean to remove all OBJ files                     #
  296. #                                                                    #
  297. #--------------------------------------------------------------------#
  298.  
  299. !if $d(DOS)
  300. OBJDIRLIST = s ds c dc m dm l dl h dh i di
  301. !endif
  302.  
  303. !if $d(WIN32)
  304. OBJDIRLIST = 32 d32 i32 di32
  305. !endif
  306.  
  307. !if $d(OS2)
  308. OBJDIRLIST = 2 d2 i2 di2
  309. !endif
  310.  
  311. #--------------------------------------------------------------------#
  312. #                                                                    #
  313. # Set up the paths that will be needed later.                        #
  314. #                                                                    #
  315. #   INCLUDE is the full path to the compiler's include files and     #
  316. #   to the classlib's include files.  If it is not defined in the    #
  317. #   environment, it is assumed to be under the directory where the   #
  318. #   compiler was installed in the subdirectory INCLUDE.              #
  319. #                                                                    #
  320. #   LIB is the full path to the compiler's libraries.  If it is not  #
  321. #   defined in the environment, it is assumed to be under the        #
  322. #   directory where the compiler was installed in the subdirectory   #
  323. #   LIB.                                                             #
  324. #                                                                    #
  325. #   SOURCEDIR is the full path to the source code.  If it is not     #
  326. #   defined in the environment, it is assumed to be under the        #
  327. #   directory where the compiler was installed in the subdirectory   #
  328. #   SOURCE\CLASSLIB.                                                 #
  329. #                                                                    #
  330. #   ROOTDIR is the full path to the directory in which the makefile  #
  331. #   is located.  If it is not defined in the environment, it is      #
  332. #   assumed to be the same as SOURCEDIR.                             #
  333. #                                                                    #
  334. #   LIBDIR is the full path to the directory in which the libraries  #
  335. #   should be placed when they are built.  If it is not defined in   #
  336. #   the environment, it is assumed to be the same as the directory   #
  337. #   specified by LIB.                                                #
  338. #                                                                    #
  339. #--------------------------------------------------------------------#
  340.  
  341. !if !$d(BCROOT)
  342. !if $d(OS2)
  343. BCROOT=$(MAKEDIR)\..
  344. !else
  345. !include $(MAKEDIR)\bcroot.inc
  346. !endif
  347. !endif
  348.  
  349. !if !$d(INCLUDE)
  350. INCLUDE = $(BCROOT)\include
  351. !endif
  352.  
  353. !if !$d(RCINCLUDE)
  354. RCINCLUDE = $(BCROOT)\include
  355. !endif
  356.  
  357. !if !$d(LIB)
  358. LIB = $(BCROOT)\lib
  359. !endif
  360.  
  361. !if !$d(SOURCEDIR)
  362. SOURCEDIR = $(BCROOT)\source\classlib
  363. !endif
  364.  
  365. !if !$d(LIBDIR)
  366. LIBDIR = $(LIB)
  367. !endif
  368.  
  369. !if !$d(ROOTDIR)
  370. ROOTDIR = $(SOURCEDIR)
  371. !endif
  372.  
  373. #--------------------------------------------------------------------#
  374. #                                                                    #
  375. # Set up the various paths that MAKE will use                        #
  376. #                                                                    #
  377. #   OBJDIR will only have been defined when we've decide on a target #
  378. #   platform and a set of options. Since .PATH.obj isn't used in any #
  379. #   context in which DBG and SUFFIX haven't been defined, it's ok    #
  380. #   to use DBG and SUFFIX to define it.                              #
  381. #                                                                    #
  382. #--------------------------------------------------------------------#
  383.  
  384. .PATH.cpp = $(SOURCEDIR)
  385. .PATH.cpo = $(SOURCEDIR)\obsolete
  386.  
  387. .PATH.lib = $(LIBDIR)
  388.  
  389. .PATH.rc = $(SOURCEDIR)
  390.  
  391. !if $d(DOS)
  392. OBJDIR=$(MODEL)
  393. !elif $d(OS2)
  394. OBJDIR=2
  395. !else
  396. OBJDIR=32
  397. !endif
  398.  
  399. !if $d(DLL)
  400. OBJDIR=i$(OBJDIR)
  401. !endif
  402.  
  403. !if $d(DBG)
  404. .PATH.obj = $(SOURCEDIR)\d$(OBJDIR)
  405. !else
  406. .PATH.obj = $(SOURCEDIR)\$(OBJDIR)
  407. !endif
  408.  
  409. #--------------------------------------------------------------------#
  410. #                                                                    #
  411. # Build the various file lists needed for dependency checking,       #
  412. # and LIBing.                                                        #
  413. #                                                                    #
  414. #   OBJS is the main list, conditionalized for the various targets   #
  415. #       and options.                                                 #
  416. #                                                                    #
  417. #   OBJS_LIB are the objs that only go in libs & implib, not the dll #
  418. #                                                                    #
  419. #   OBJS_DLL are the objs that only go in the dll, not the libs      #
  420. #                                                                    #
  421. #   DEPOBJS is the list of object files for dependency checking      #
  422. #                                                                    #
  423. #   LIBOBJS is the list of object files for building the library     #
  424. #                                                                    #
  425. #--------------------------------------------------------------------#
  426.  
  427. !if $d(OBJECTS)
  428. OBJS =              \
  429.     PFXassoc.obj    \
  430.     PFXbtree.obj    \
  431.     PFXbtreeinn.obj \
  432.     PFXbtreelfn.obj \
  433.     PFXcollect.obj  \
  434.     PFXcontain.obj  \
  435.     PFXdbllist.obj  \
  436.     PFXhashtbl.obj  \
  437.     PFXldate.obj    \
  438.     PFXlist.obj     \
  439.     PFXltime.obj    \
  440.     PFXobject.obj
  441. !endif
  442.  
  443. OBJS = $(OBJS)      \
  444.     PFXbinimp.obj   \
  445.     PFXcastable.obj \
  446.     PFXdate.obj     \
  447.     PFXdateio.obj   \
  448.     PFXdatep.obj    \
  449.     PFXfile.obj     \
  450.     PFXheapsel.obj  \
  451.     PFXobjstrm.obj  \
  452.     PFXtime.obj     \
  453.     PFXtimep.obj    \
  454.     PFXtimeio.obj   \
  455.     PFXversion.obj
  456.  
  457. !if !$d(OS2)
  458. OBJS = $(OBJS)      \
  459.     PFXexbase.obj   \
  460.     PFXgeometry.obj \
  461.     PFXgeomstrm.obj \
  462.     PFXreglink.obj
  463. !endif
  464.  
  465. OBJS_LIB =          \
  466.     PFXlocale.obj   \
  467.     PFXlocaleco.obj \
  468.     PFXlocaleid.obj \
  469.     PFXregheap.obj  \
  470.     PFXustring.obj
  471.  
  472. OBJS_DLL =
  473.  
  474. !if $d(DOS) && !$d(DLL)
  475. OBJS = $(OBJS) PFXtimer.obj
  476. !endif
  477.  
  478. !if $d(WIN32) || $d(OS2)
  479. OBJS = $(OBJS) PFXthread.obj
  480. !endif
  481.  
  482. !if $d(OBJECTS)
  483. !if $d(TEMPLATES)
  484. OBJS = $(OBJS)      \
  485.     PFXbabstary.obj \
  486.     PFXbdict.obj    \
  487.     PFXbsortary.obj
  488. !else
  489. OBJS = $(OBJS)      \
  490.     PFXabstarry.obj \
  491.     PFXarray.obj    \
  492.     PFXdeque.obj    \
  493.     PFXdict.obj     \
  494.     PFXsortarry.obj \
  495.     PFXstack.obj
  496. !endif
  497. !endif
  498.  
  499. !if $d(DLL) && $(DOS)
  500. OBJS = $(OBJS) PFXclasmain.obj
  501. !endif
  502.  
  503. !if $d(DLL) && $d(OBJECTS)
  504.  
  505. !if $d(TEMPLATES)
  506. OBJS = $(OBJS) PFXtmpl2.obj
  507. !else
  508. OBJS = $(OBJS) PFXtmpl1.obj
  509. !endif
  510.  
  511. !endif
  512.  
  513. !if $d(DLL) && !$d(OBJECTS) && !$d(OS2)
  514. RESFILE = version.res
  515. !endif
  516.  
  517. #PFXOBJS = $(OBJS:SFX=)
  518. #SFXOBJS = $(OBJS:PFX=)
  519.  
  520. DEPOBJS = $(OBJS:PFX=) $(OBJS_LIB:PFX=) $(OBJS_DLL:PFX=)
  521. !if $d(DLL)
  522. LIBOBJS = $(OBJS_LIB:PFX=+)
  523. LINKOBJS = $(OBJS:PFX=) $(OBJS_DLL:PFX=)
  524. !else
  525. LIBOBJS = $(OBJS:PFX=-+) $(OBJS_LIB:PFX=-+)
  526. !endif
  527.  
  528. #--------------------------------------------------------------------#
  529. #                                                                    #
  530. # These are the targets that we can make.                            #
  531. #                                                                    #
  532. #   target: builds the target file                                   #
  533. #                                                                    #
  534. #   dirs:   makes sure all the necessary subdirectories are present  #
  535. #                                                                    #
  536. #   clean:  deletes the .OBJ files                                   #
  537. #                                                                    #
  538. #   config: builds a .CFG file with the correct flags                #
  539. #                                                                    #
  540. #--------------------------------------------------------------------#
  541.  
  542. target: config $(DEFFILE) $(DEPOBJS) $(RESFILE)
  543. !if !$d(DLL)
  544.     cd $(.PATH.obj)
  545.     $(TLIB) $(LFLAG) $(.PATH.lib)\$(TARGETLIB) @&&!
  546. $(LIBOBJS)
  547. !
  548.     cd $(ROOTDIR)
  549. !else
  550.     cd $(.PATH.obj)
  551.     $(TLINK) @&&!
  552. $(STARTUP)+
  553. $(LINKOBJS)
  554. $(TARGETFILE).dll
  555. $(LINKOPTS) $(.PATH.lib)\$(TARGETFILE).map
  556. $(LINKLIBS)
  557. temp.def
  558. $(RESFILE)
  559. !
  560. !if $(TARGET) == DOS
  561.     rc -30 $(TARGETFILE)
  562. !endif
  563.     implib $(TARGETLIB) $(TARGETFILE).dll
  564.     tlib $(LFLAG) $(TARGETLIB) @&&|
  565. $(LIBOBJS)
  566. |
  567.     cd $(ROOTDIR)
  568.     copy $(.PATH.obj)\$(TARGETFILE).dll $(.PATH.lib)
  569.     del $(.PATH.obj)\$(TARGETFILE).dll
  570.     copy $(.PATH.obj)\$(TARGETLIB) $(.PATH.lib)
  571.     del $(.PATH.obj)\$(TARGETLIB)
  572. !endif
  573.  
  574.  
  575. dirs:
  576.     -for %d in ($(OBJDIRLIST)) do md $(SOURCEDIR)\%d
  577.  
  578. clean:
  579.     -for %d in ($(OBJDIRLIST)) do del $(SOURCEDIR)\%d\*.obj
  580.  
  581. config:
  582.     @-if not exist $(.PATH.obj)\..\NUL md $(.PATH.obj)\..
  583.     @-if not exist $(.PATH.obj)\NUL md $(.PATH.obj)
  584.     @type &&!
  585. -c -n$(.PATH.obj) -I$(INCLUDE) $(DFLAG) $(XFLAG) $(MFLAG) $(TFLAG)
  586. ! >turboc.cfg
  587.  
  588. deffile:
  589. !if $d(DOS)
  590.     @echo >$(.PATH.obj)\temp.def LIBRARY     $(TARGETFILE)
  591. !else
  592.     @echo >$(.PATH.obj)\temp.def LIBRARY     $(TARGETFILE) INITINSTANCE
  593. !endif
  594.     @echo >>$(.PATH.obj)\temp.def DESCRIPTION 'Parametrized Class Library for BC++'
  595. !if $d(DOS)
  596.     @echo >>$(.PATH.obj)\temp.def EXETYPE     WINDOWS
  597.     @echo >>$(.PATH.obj)\temp.def CODE        PRELOAD MOVEABLE DISCARDABLE
  598.     @echo >>$(.PATH.obj)\temp.def DATA        PRELOAD MOVEABLE SINGLE
  599. !else
  600.     @echo >>$(.PATH.obj)\temp.def DATA        MULTIPLE NONSHARED
  601. !endif
  602.     @echo >>$(.PATH.obj)\temp.def HEAPSIZE    4096
  603.  
  604.  
  605. #--------------------------------------------------------------------#
  606. #                                                                    #
  607. # We need an implicit rule for building .OBJ files, and a few        #
  608. # explicit rules for special cases.                                  #
  609. #                                                                    #
  610. #   TIMER.OBJ is never built for windows, so doesn't need the        #
  611. #       windows flags.                                               #
  612. #                                                                    #
  613. #--------------------------------------------------------------------#
  614.  
  615. timer.obj: timer.cpp
  616.     $(BCC) $(SOURCEDIR)\timer
  617.  
  618. tmpl1.obj: tmplinst.cpp
  619.     $(BCC) -o$(.PATH.obj)\tmpl1.obj $(WFLAG) $(.PATH.cpp)\tmplinst
  620.  
  621. tmpl2.obj: tmplinst.cpp
  622.     $(BCC) -o$(.PATH.obj)\tmpl2.obj -DTEMPLATES $(WFLAG) $(.PATH.cpp)\tmplinst
  623.  
  624. .cpo.obj:
  625.     $(BCC) $(WFLAG) -P {$< }
  626.  
  627. .cpp.obj:
  628.     $(BCC) $(WFLAG) $(MTFLAG) {$* }
  629.  
  630. .rc.res:
  631.     $(BRCC) -i$(RCINCLUDE) $*.rc
  632.     copy $*.res $(.PATH.obj)
  633.     del $*.res
  634.  
  635. !if $d(DOS) && $d(DLL)
  636. $(OBJS_LIB:PFX=):
  637.     $(BCC) $(WLFLAG) $(MTFLAG) -D_BIDSDLL -U_BUILDBIDSDLL $(.PATH.cpp)\$&.cpp
  638. !endif
  639.