home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / tlx501.zip / SRC / BC / MAKEFILE < prev    next >
Text File  |  1996-05-14  |  20KB  |  899 lines

  1. ##############################################################################
  2. #   $Id: makefile 501.0 1995/02/28 18:37:28 RON Exp $
  3. #
  4. #   Copyright (c) 1990-95 Tarma Software Research. All rights reserved.
  5. #
  6. #   Project:    Tarma Library for C++ V5.0
  7. #   Author:    Ron van der Wal
  8. #
  9. #   MAKEFILE for Tarma Library for C++, compiler versions:
  10. #
  11. #   - Borland C++ 3.0 - 4.5 for DOS & Windows
  12. #   - Borland C++ 1.0 - 2.0 for OS/2
  13. #
  14. #   Syntax:
  15. #    MAKE <platform> [-DEBUG|-DCG] [<other options>]
  16. #
  17. #    Platform    <platform>    <other options>
  18. #    --------------------------------------------------------------------
  19. #    MS-DOS (normal) -DDOS        M=(t|s|c|m|l|h) -DSYM
  20. #    MS-DOS (16-ext) -DD16        -DLL -DSYM
  21. #    MS-DOS (32-ext) -DD32        -DLL -DSYM
  22. #    OS/2 2.x    -DOS2        -DPM, -DMT -DSYM
  23. #    Windows 16-bit    -DWIN        M=(t|s|c|m|l|h), -DLL, -DRTLDLL -DSYM
  24. #    Win32S        -DW32S        -DLL, -DRTLDLL -DSYM
  25. #    Windows NT 3.x    -DNT        -DLL, -DRTLDLL -DSYM
  26. #
  27. #   Note: To perform LINT processing, add -DLIN to the command line.
  28. #
  29. #   $Log: makefile $
  30. #   Revision 501.0  1995/02/28 18:37:28  RON
  31. #   Updated for TLX 5.01
  32. #   Revision 1.9  1995/01/31 17:17:50  RON
  33. #   Update for release 012
  34. #   Added partial support for SunPro C++ compiler
  35. #   Revision 1.8  1995/01/18  19:07:33    ron
  36. #   Added support for Windows NT
  37. #
  38. #   Revision 1.7  1995/01/05  16:18:26    ron
  39. #   Reorganized
  40. #
  41. #   Revision 1.6  1994/10/13  12:01:18    ron
  42. #   Moved all file lists to separate file
  43. #   Switched to explicit response files
  44. #   Added initial support for LINT
  45. #   Reorganized several sections
  46. #
  47. #   Revision 1.5  1994/10/10  17:10:29    ron
  48. #   Several updates to library contents
  49. #   Added support for PROJLEVEL environment variable
  50. #
  51. #   Revision 1.4  1994/10/07  17:13:11    ron
  52. #   Many clean-up changes; addition of new files
  53. #
  54. #   Revision 1.3  1994/10/05  18:52:41    ron
  55. #   Reorganized comments & formatting
  56. #   Added new file
  57. #   Added timestamping support
  58. #
  59. #   Revision 1.2  1994/09/28  14:50:07    ron
  60. #   Adapted to changes in directory layout
  61. #   Added new modules
  62. #   Added small test program
  63. #
  64. #   Revision 1.1  1994/09/07  16:34:22    ron
  65. #   Initial revision
  66. #
  67. ##############################################################################
  68.  
  69. .swap        # If applicable (real-mode version of MAKE only)
  70.  
  71. #-----------------------------------------------------------------------------
  72. #    MAKE parameters
  73. #-----------------------------------------------------------------------------
  74.  
  75. !if !$d(DOS) && !$d(D16) && !$d(D32) && !$d(OS2) && !$d(WIN) && !$d(W32S) && !$d(NT)
  76.  
  77. !if $d(__MSDOS__)
  78. DOS    = 1
  79. !elif $d(__OS2__)
  80. OS2    = 1
  81. !else
  82. !error Must specify -DDOS, -DD16, -DD32, -DOS2, -DWIN, -DW32S, or -DNT
  83. !endif
  84.  
  85. !endif
  86.  
  87. !ifdef CG
  88. EBUG=1
  89. !endif
  90.  
  91. #-----------------------------------------------------------------------------
  92. #    TLX version number (used with DLLs)
  93. #-----------------------------------------------------------------------------
  94.  
  95. TLXVER    = 501            # TLX version number
  96.  
  97. !ifndef PROJLEVEL
  98. PROJLEVEL = Experimental
  99. !endif
  100.  
  101. #-----------------------------------------------------------------------------
  102. #    Common options, part 1
  103. #-----------------------------------------------------------------------------
  104.  
  105. MAKEFILE    = makefile
  106. !ifdef LIN
  107. DEPEND        = lint.dep
  108. !else
  109. DEPEND        = makefile.dep
  110. !endif
  111.  
  112. MD        = makedep
  113. MDFLAGS     = /I$(INCLUDE) /X$(EXCLUDE) /O$(DEPEND) /A$(MAKEFILE)
  114.  
  115. !if $d(DOS)
  116. #----------------------------------------------------------------------------
  117. #    DOS options
  118. #
  119. #    Library = TLXDm[d]
  120. #----------------------------------------------------------------------------
  121.  
  122. AS        = TASM
  123. CC        = BCC
  124. LINK        = TLINK
  125. LIBR        = TLIB
  126. LINT        = c:\bin\lint\lint
  127.  
  128. !ifndef M
  129. M        = l
  130. !endif
  131.  
  132. POSTFIX     = d$(M)
  133. AFLAGS        = /mx
  134. CFLAGS        = -c -d -O1 -w -D_TLXBUILD -m$(M) -DPROJLEVEL=$(PROJLEVEL)
  135. LFLAGS        = /c /yx
  136. BFLAGS        = /C
  137. LINTF        = -zero -ic:\bin\lint std.lnt -i$(INCLUDE) +v -m$(M)
  138.  
  139. !ifdef EBUG    #-----    Debugging version
  140.  
  141. POSTFIX     = $(POSTFIX)d
  142. AFLAGS        = $(AFLAGS) /zi
  143. CFLAGS        = $(CFLAGS) -N -D_TLXDBG
  144. LFLAGS        = $(LFLAGS) /m
  145. BFLAGS        = $(BFLAGS) /P128
  146. LINTF        = $(LINTF) -D_TLXDBG
  147.  
  148. !ifdef SYM    # Include symbolic debug info
  149. CFLAGS        = $(CFLAGS) -v
  150. LFLAGS        = $(LFLAGS) /v
  151. !endif
  152.  
  153. !ifdef CG    # Include CodeGuard info
  154. !error CodeGuard not supported under DOS
  155. !endif
  156.  
  157. !else        #-----    Distribution version
  158.  
  159. AFLAGS        = $(AFLAGS)
  160. CFLAGS        = $(CFLAGS) -G- -D_NO_LINK_CHECK
  161. LFLAGS        = $(LFLAGS) /x
  162. BFLAGS        = $(BFLAGS) /P32 /0
  163. LINTF        = $(LINTF)
  164.  
  165. !endif    # EBUG
  166.  
  167. !ifdef LL
  168. !error DLLs not supported under DOS
  169. !endif
  170.  
  171. STARTUP     = C0$(M)
  172. RUNTIME     = EMU MATH$(M) C$(M)
  173.  
  174. !elif $d(D32)
  175. #----------------------------------------------------------------------------
  176. #    DOS 32-bit options
  177. #
  178. #    Library = TLXDX[d][i]
  179. #----------------------------------------------------------------------------
  180.  
  181. # Under DOS-32, compilation for static and dynamic libraries differs, and
  182. # we have separate output directories and configuration files for the .OBJ
  183. # files of each variant.
  184.  
  185. AS        = TASM
  186. CC        = BCC32
  187. LINK        = TLINK32
  188. LIBR        = TLIB
  189. LINT        = c:\bin\lint\lint
  190.  
  191. POSTFIX     = dx
  192. AFLAGS        = /mx
  193. CFLAGS        = -3 -c -d -O1 -w -D_TLXBUILD -DPROJLEVEL=$(PROJLEVEL)
  194. LFLAGS        = /c
  195. BFLAGS        = /C
  196.  
  197. !ifdef RTLDLL
  198. CFLAGS        = $(CFLAGS) -D_RTLDLL
  199. POSTFIX     = $(POSTFIX)r
  200. !endif
  201.  
  202. !ifdef EBUG    #-----    Debugging version
  203.  
  204. POSTFIX     = $(POSTFIX)d
  205. AFLAGS        = $(AFLAGS) /zi
  206. CFLAGS        = $(CFLAGS) -N -D_TLXDBG
  207. LFLAGS        = $(LFLAGS) /m
  208. BFLAGS        = $(BFLAGS) /P128
  209.  
  210. !ifdef SYM    # Include symbolic debug info
  211. CFLAGS        = $(CFLAGS) -v
  212. LFLAGS        = $(LFLAGS) /v
  213. !endif
  214.  
  215. !ifdef CG    # Include CodeGuard info
  216. !error CodeGuard not supported under DOS-386
  217. !endif
  218.  
  219. !else        #-----    Distribution version
  220.  
  221. AFLAGS        = $(AFLAGS)
  222. CFLAGS        = $(CFLAGS) -G- -D_NO_LINK_CHECK
  223. LFLAGS        = $(LFLAGS) /x
  224. BFLAGS        = $(BFLAGS) /P32 /0
  225.  
  226. !endif    # EBUG
  227.  
  228. !ifdef LL    #-----    DLL version
  229.  
  230. POSTFIX     = $(POSTFIX)i
  231. CFLAGS        = $(CFLAGS) -WXD -D_TLXDLL
  232. LFLAGS        = $(LFLAGS) /Tpd
  233. STARTUP     = C0D32
  234.  
  235. !else        #-----    Static version
  236.  
  237. CFLAGS        = $(CFLAGS) -WX
  238. LFLAGS        = $(LFLAGS) /Tpe /ax
  239. STARTUP     = C0X32
  240.  
  241. !endif    # LL
  242.  
  243. !ifdef RTLDLL
  244. RUNTIME     = crtldll IMPORT32
  245. !else
  246. RUNTIME     = CW32 DPMI32
  247. !endif
  248. XLIBS        =
  249.  
  250. !elif $d(OS2)
  251. #----------------------------------------------------------------------------
  252. #    OS/2 options
  253. #
  254. #    Library = TLX2[d][i]
  255. #----------------------------------------------------------------------------
  256.  
  257. # Under OS/2, compilation for static and dynamic libraries is identical;
  258. # only the linking step differs. Therefore, .OBJ files for both static and
  259. # dynamic libraries share the same directory and configuration file.
  260.  
  261. AS        = TASM
  262. CC        = BCC
  263. LINK        = TLINK
  264. LIBR        = TLIB
  265. LINT        = c:\bin\lint\lint2
  266.  
  267. POSTFIX     = 2
  268. AFLAGS        = /mx
  269. CFLAGS        = -3 -c -d -O1 -w -D_TLXBUILD -DPROJLEVEL=$(PROJLEVEL)
  270. LFLAGS        = /c
  271. BFLAGS        = /C
  272. LINTF        = -zero -ic:\bin\lint co-bcos2.lnt -i$(INCLUDE) +v \
  273.           -D_TLXBUILD -DPROJLEVEL=$(PROJLEVEL)
  274.  
  275. !ifdef EBUG    #-----    Debugging version
  276.  
  277. POSTFIX     = $(POSTFIX)d
  278. AFLAGS        = $(AFLAGS) /zi
  279. CFLAGS        = $(CFLAGS) -N -D_TLXDBG
  280. LFLAGS        = $(LFLAGS) /m
  281. BFLAGS        = $(BFLAGS) /P64
  282. LINTF        = $(LINTF) -D_TLXDBG
  283.  
  284. !ifdef SYM    # Include symbolic debug info
  285. CFLAGS        = $(CFLAGS) -v
  286. LFLAGS        = $(LFLAGS) /v
  287. !endif
  288.  
  289. !ifdef CG    # Include CodeGuard info
  290. !error CodeGuard not supported under OS/2
  291. !endif
  292.  
  293. !else        #-----    Distribution version
  294.  
  295. AFLAGS        = $(AFLAGS)
  296. CFLAGS        = $(CFLAGS) -G- -D_NO_LINK_CHECK
  297. LFLAGS        = $(LFLAGS) /x
  298. BFLAGS        = $(BFLAGS) /P32 /0
  299. LINTF        = $(LINTF)
  300.  
  301. !endif    # EBUG
  302.  
  303. !ifdef LL    #-----    DLL version
  304.  
  305. POSTFIX     = $(POSTFIX)i
  306. CFLAGS        = $(CFLAGS) -D_TLXDLL
  307. LFLAGS        = $(LFLAGS) /Tod
  308. LINTF        = $(LINTF)
  309. STARTUP     = C02D
  310.  
  311. !else        #-----    Static version
  312.  
  313. LFLAGS        = $(LFLAGS) /Toe
  314. LINTF        = $(LINTF)
  315. STARTUP     = C02
  316.  
  317. !endif    # LL
  318.  
  319. RUNTIME     = C2 OS2
  320.  
  321. !elif $d(WIN)
  322. #----------------------------------------------------------------------------
  323. #    Windows 16-bit options
  324. #
  325. #    Library = TLXWm[d][i]
  326. #----------------------------------------------------------------------------
  327.  
  328. # Under Windows, compilation for static and dynamic libraries differs, and
  329. # we have separate output directories and configuration files for the .OBJ
  330. # files of each variant.
  331.  
  332. AS        = TASM
  333. CC        = BCC
  334. LINK        = TLINK
  335. LIBR        = TLIB
  336. LINT        = c:\bin\lint\lint
  337.  
  338. !ifndef M
  339. M        = l
  340. !endif
  341.  
  342. POSTFIX     = w$(M)
  343. AFLAGS        = /mx
  344. CFLAGS        = -2 -c -d -O1 -w -D_TLXBUILD -m$(M) -DPROJLEVEL=$(PROJLEVEL)
  345. LFLAGS        = /c /C /yx
  346. BFLAGS        = /C
  347.  
  348. !ifdef RTLDLL
  349. CFLAGS        = $(CFLAGS) -D_RTLDLL
  350. POSTFIX     = $(POSTFIX)r
  351. !endif
  352.  
  353. !ifdef EBUG    #-----    Debugging version
  354.  
  355. AFLAGS        = $(AFLAGS) /zi
  356. CFLAGS        = $(CFLAGS) -N -D_TLXDBG
  357. LFLAGS        = $(LFLAGS) /m
  358. BFLAGS        = $(BFLAGS) /P128
  359.  
  360. !ifdef SYM    # Include symbolic debug info
  361. CFLAGS        = $(CFLAGS) -v
  362. LFLAGS        = $(LFLAGS) /v
  363. !endif
  364.  
  365. !ifdef CG    # Include CodeGuard info
  366. !if $M != l
  367. !error CodeGuard only supported with Large memory model
  368. !endif
  369. POSTFIX     = $(POSTFIX)g
  370. CFLAGS        = $(CFLAGS) -vGd -vGt
  371. !else
  372. POSTFIX     = $(POSTFIX)d
  373. !endif
  374.  
  375. !else        #-----    Distribution version
  376.  
  377. AFLAGS        = $(AFLAGS)
  378. CFLAGS        = $(CFLAGS) -G- -D_NO_LINK_CHECK
  379. LFLAGS        = $(LFLAGS) /x
  380. BFLAGS        = $(BFLAGS) /P32 /0
  381.  
  382. !endif    # EBUG
  383.  
  384. !ifdef LL    #-----    DLL version
  385.  
  386. POSTFIX     = $(POSTFIX)i
  387. CFLAGS        = $(CFLAGS) -WDE -D_TLXDLL
  388. LFLAGS        = $(LFLAGS) /Twd
  389. STARTUP     = C0D$(M)
  390.  
  391. !else        #-----    Static version
  392.  
  393. CFLAGS        = $(CFLAGS) -WE
  394. LFLAGS        = $(LFLAGS) /Twe
  395. STARTUP     = C0W$(M)
  396.  
  397. !endif    # LL
  398.  
  399. !ifdef CG
  400. RUNTIME        = cg16
  401. !endif
  402.  
  403. !ifdef RTLDLL
  404. RUNTIME     = $(RUNTIME) crtldll IMPORT
  405. !else
  406. RUNTIME     = $(RUNTIME) MATHW$(M) CW$(M) IMPORT
  407. !endif
  408. XLIBS        =
  409.  
  410. !elif $d(W32S)
  411. #----------------------------------------------------------------------------
  412. #    Win32S options
  413. #
  414. #    Library = TLXWX[d][i]
  415. #----------------------------------------------------------------------------
  416.  
  417. # Under Windows, compilation for static and dynamic libraries differs, and
  418. # we have separate output directories and configuration files for the .OBJ
  419. # files of each variant.
  420.  
  421. AS        = TASM
  422. CC        = BCC32
  423. LINK        = TLINK32
  424. LIBR        = TLIB
  425. LINT        = c:\bin\lint\lint
  426.  
  427. POSTFIX     = wx
  428. AFLAGS        = /mx
  429. CFLAGS        = -3 -c -d -O1 -w -D_TLXBUILD -DPROJLEVEL=$(PROJLEVEL)
  430. LFLAGS        = /c
  431. BFLAGS        = /C
  432.  
  433. !ifdef RTLDLL
  434. CFLAGS        = $(CFLAGS) -D_RTLDLL
  435. POSTFIX     = $(POSTFIX)r
  436. !endif
  437.  
  438. !ifdef EBUG    #-----    Debugging version
  439.  
  440. AFLAGS        = $(AFLAGS) /zi
  441. CFLAGS        = $(CFLAGS) -N -D_TLXDBG
  442. LFLAGS        = $(LFLAGS) /m
  443. BFLAGS        = $(BFLAGS) /P128
  444.  
  445. !ifdef SYM    # Include symbolic debug info
  446. CFLAGS        = $(CFLAGS) -v
  447. LFLAGS        = $(LFLAGS) /v
  448. !endif
  449.  
  450. !ifdef CG    # Include CodeGuard info
  451. CFLAGS        = $(CFLAGS) -vGd -vGt
  452. POSTFIX     = $(POSTFIX)g
  453. !else
  454. POSTFIX     = $(POSTFIX)d
  455. !endif
  456.  
  457. !else        #-----    Distribution version
  458.  
  459. AFLAGS        = $(AFLAGS)
  460. CFLAGS        = $(CFLAGS) -G- -D_NO_LINK_CHECK
  461. LFLAGS        = $(LFLAGS) /x
  462. BFLAGS        = $(BFLAGS) /P32 /0
  463.  
  464. !endif    # EBUG
  465.  
  466. !ifdef LL    #-----    DLL version
  467.  
  468. POSTFIX     = $(POSTFIX)i
  469. CFLAGS        = $(CFLAGS) -tWDE -D_TLXDLL
  470. LFLAGS        = $(LFLAGS) /Tpd
  471. STARTUP     = C0D32
  472.  
  473. !else        #-----    Static version
  474.  
  475. CFLAGS        = $(CFLAGS) -tW
  476. LFLAGS        = $(LFLAGS) /Tpe
  477. STARTUP     = C0W32
  478.  
  479. !endif    # LL
  480.  
  481. !ifdef RTLDLL
  482. RUNTIME     = crtldll IMPORT32
  483. !else
  484. RUNTIME     = CW32 IMPORT32
  485. !endif
  486. XLIBS        =
  487.  
  488. !elif $d(NT)
  489. #----------------------------------------------------------------------------
  490. #    Windows NT 32-bit options
  491. #
  492. #    Library = TLXN[d][i]
  493. #----------------------------------------------------------------------------
  494.  
  495. # Under Windows, compilation for static and dynamic libraries differs, and
  496. # we have separate output directories and configuration files for the .OBJ
  497. # files of each variant.
  498.  
  499. AS        = TASM
  500. CC        = BCC32
  501. LINK        = TLINK32
  502. LIBR        = TLIB
  503. LINT        = c:\bin\lint\lint
  504.  
  505. POSTFIX     = n
  506. AFLAGS        = /mx
  507. CFLAGS        = -3 -c -d -O1 -w -D_TLXBUILD -DPROJLEVEL=$(PROJLEVEL)
  508. LFLAGS        = /c /ap        # Console version for now
  509. BFLAGS        = /C
  510.  
  511. !ifdef RTLDLL
  512. CFLAGS        = $(CFLAGS) -D_RTLDLL
  513. POSTFIX     = $(POSTFIX)r
  514. !endif
  515.  
  516. !ifdef EBUG    #-----    Debugging version
  517.  
  518. AFLAGS        = $(AFLAGS) /zi
  519. CFLAGS        = $(CFLAGS) -N -D_TLXDBG
  520. LFLAGS        = $(LFLAGS) /m
  521. BFLAGS        = $(BFLAGS) /P128
  522.  
  523. !ifdef SYM    # Include symbolic debug info
  524. CFLAGS        = $(CFLAGS) -v
  525. LFLAGS        = $(LFLAGS) /v
  526. !endif
  527.  
  528. !ifdef CG    # Include CodeGuard info
  529. CFLAGS        = $(CFLAGS) -vGd -vGt
  530. POSTFIX     = $(POSTFIX)g
  531. !else
  532. POSTFIX     = $(POSTFIX)d
  533. !endif
  534.  
  535. !else        #-----    Distribution version
  536.  
  537. AFLAGS        = $(AFLAGS)
  538. CFLAGS        = $(CFLAGS) -G- -D_NO_LINK_CHECK
  539. LFLAGS        = $(LFLAGS) /x
  540. BFLAGS        = $(BFLAGS) /P32 /0
  541.  
  542. !endif    # EBUG
  543.  
  544. !ifdef LL    #-----    DLL version
  545.  
  546. POSTFIX     = $(POSTFIX)i
  547. CFLAGS        = $(CFLAGS) -tWCDE -D_TLXDLL      # Console version for now
  548. LFLAGS        = $(LFLAGS) /Tpd
  549. STARTUP     = C0D32
  550.  
  551. !else        #-----    Static version
  552.  
  553. CFLAGS        = $(CFLAGS) -tWC    # Console version for now
  554. LFLAGS        = $(LFLAGS) /Tpe
  555. STARTUP     = C0X32         # Console version
  556.  
  557. !endif    # LL
  558.  
  559. !ifdef CG
  560. RUNTIME        = cg32
  561. !endif
  562.  
  563. !ifdef RTLDLL
  564. RUNTIME     = $(RUNTIME) crtldll IMPORT32
  565. !else
  566. RUNTIME     = $(RUNTIME) CW32 IMPORT32
  567. !endif
  568. XLIBS        =
  569.  
  570. !else
  571. !error Unsupported platform; contact Tarma Software Research
  572. !endif
  573.  
  574. #-----------------------------------------------------------------------------
  575. #    Common options, part 2
  576. #-----------------------------------------------------------------------------
  577.  
  578. .PATH.asm    = ..
  579. .PATH.c     = ..
  580. .PATH.cpp    = ..
  581. ##.PATH.h     = ..\..
  582. .PATH.obj    = $(POSTFIX)
  583. .PATH.lin    = $(POSTFIX)
  584. .PATH.dll    = .
  585. .PATH.lib    = .
  586.  
  587. !ifndef INCLUDE
  588. !error You must set the INCLUDE environment variable
  589. !endif
  590. EXCLUDE        = \bc45\include
  591. ##INCLUDE     = $(.PATH.h);$(INCLUDE)
  592. INCLUDE     = \Dev;$(INCLUDE)
  593.  
  594. !ifndef LIB
  595. !error You must set the LIB environment variable
  596. !endif
  597. LIB        = $(.PATH.lib);$(LIB)
  598.  
  599. BASENAME    = tlx$(POSTFIX)
  600. CCONFIG     = $(BASENAME).cfg
  601. DEFFILE     = $(BASENAME).def
  602. LIBRSP        = $(BASENAME).rsp
  603. LINTRSP     = $(BASENAME).lnt
  604. TEST        = $(BASENAME).exe
  605. DLLTARGET    = $(BASENAME).dll
  606.  
  607. !ifdef LIN
  608. TARGET        = $(BASENAME).ln
  609. !else
  610. TARGET        = $(BASENAME).lib
  611. !endif
  612.  
  613. #-----------------------------------------------------------------------------
  614. #    Implicit rules
  615. #-----------------------------------------------------------------------------
  616.  
  617. .suffixes:
  618. .suffixes: .CPP .C .ASM
  619.  
  620. .asm.obj:
  621.     $(AS) $(AFLAGS) $<
  622.  
  623. .c.obj:
  624.     $(CC) +$(CCONFIG) $<
  625.  
  626. .cpp.obj:
  627.     $(CC) +$(CCONFIG) $<
  628.  
  629. .c.lin:
  630.     $(LINT) $(LINTRSP) -os($@) $<
  631.  
  632. .cpp.lin:
  633.     $(LINT) $(LINTRSP) -os($@) $<
  634.  
  635. #-----------------------------------------------------------------------------
  636. #    Target files
  637. #-----------------------------------------------------------------------------
  638.  
  639. !ifdef LIN
  640. OBJ        = lin
  641. !else
  642. OBJ        = obj
  643. !endif
  644.  
  645. FILELIST    = ..\filelist.mak
  646. !include $(FILELIST)
  647.  
  648. OBJECTS     = $(FILES:+PFX\=)
  649. LIBFILES    = $(FILES:PFX=$(.PATH.obj))
  650. DLLFILES    = $(FILES:+PFX=$(.PATH.obj))
  651.  
  652. #-----------------------------------------------------------------------------
  653. #    Default target checks if output directory exists, then builds
  654. #    compiler configuration file and target library
  655. #-----------------------------------------------------------------------------
  656.  
  657. !ifdef LIN
  658. all:    start $(TARGET)
  659. !else
  660. all:    start $(CCONFIG) timestamp timestmp.obj $(TARGET) $(TEST)
  661. !endif
  662.  
  663. start:
  664.     @-if not exist $(.PATH.obj)\*.* md $(.PATH.obj)
  665.  
  666. timestamp:
  667.     -touch $(.PATH.cpp)\timestmp.cpp
  668.  
  669. #-----------------------------------------------------------------------------
  670. #    Library file target
  671. #-----------------------------------------------------------------------------
  672.  
  673. !ifdef LL    #-------- DLL target
  674.  
  675. $(TARGET): $(DLLTARGET)
  676.     implib $(.PATH.lib)\$(TARGET) $(.PATH.dll)\$(DLLTARGET)
  677.  
  678. $(DLLTARGET): $(OBJECTS) libmain.obj $(XLIBS)
  679.     @-del $(.PATH.dll)\$(DLLTARGET) >nul
  680.     $(LINK) @$(LIBRSP)
  681.  
  682. $(LIBRSP): $(MAKEFILE) $(FILELIST)
  683.     copy &&|
  684. $(LFLAGS) /L$(LIB) $(STARTUP) +
  685. $(DLLFILES)
  686. $(.PATH.dll)\$(DLLTARGET)
  687.  
  688. $(XLIBS) $(RUNTIME)
  689. $(DEFFILE)
  690. | $(LIBRSP)
  691.  
  692. !else        #-------- Static library target
  693.  
  694. !ifdef LIN
  695. $(TARGET): $(OBJECTS) $(LINTRSP)
  696.  
  697. $(LINTRSP): $(MAKEFILE)
  698.     copy &&|
  699. $(LINTF)
  700. | $(LINTRSP)
  701. !else
  702. $(TARGET): $(OBJECTS) $(LIBRSP)
  703.     @-del $(.PATH.lib)\$(TARGET) >nul
  704.     $(LIBR) @$(LIBRSP)
  705.  
  706. $(LIBRSP): $(MAKEFILE) $(FILELIST)
  707.     copy &&|
  708. $(.PATH.lib)\$(TARGET) $(BFLAGS) &
  709. $(LIBFILES)
  710. | $(LIBRSP)
  711. !endif
  712.  
  713. !endif
  714.  
  715. #-----------------------------------------------------------------------------
  716. #    Test program target
  717. #-----------------------------------------------------------------------------
  718.  
  719. !ifdef DOS
  720.  
  721. $(TEST): $(TARGET) maintest.obj
  722.     $(LINK) @&&|
  723. $(LFLAGS) /L$(LIB)    +
  724. $(STARTUP)        +
  725. $(.PATH.obj)\maintest.obj
  726. $(TEST)
  727.  
  728. $(TARGET) $(RUNTIME)
  729. |
  730.     -$(TEST)
  731.  
  732. !else
  733.  
  734. $(TEST): $(TARGET) maintest.obj $(DEFFILE)
  735.     $(LINK) @&&|
  736. $(LFLAGS) /L$(LIB)    +
  737. $(STARTUP)        +
  738. $(.PATH.obj)\maintest.obj
  739. $(TEST)
  740.  
  741. $(TARGET) $(RUNTIME)
  742. $(DEFFILE)
  743. |
  744.     -$(TEST)
  745.  
  746. !endif
  747.  
  748. #-----------------------------------------------------------------------------
  749. #    Compiler configuration file
  750. #-----------------------------------------------------------------------------
  751.  
  752. $(CCONFIG): $(MAKEFILE)
  753.     copy &&|
  754. $(CFLAGS)
  755. -I$(INCLUDE)
  756. -n$(.PATH.obj)
  757. | $(CCONFIG)
  758.  
  759. #-----------------------------------------------------------------------------
  760. #    Linker definition file
  761. #-----------------------------------------------------------------------------
  762.  
  763. !if $d(DOS)        #-----    DOS version
  764.  
  765. $(DEFFILE): $(MAKEFILE)
  766.     copy &&|
  767. ; Linker definition file for $(TEST)
  768. ;
  769. ; Copyright (c) 1995 Tarma Software Research. All rights reserved.
  770. | $(DEFFILE)
  771.  
  772. !elif $d(D32)        #-----    DOS-32 version
  773.  
  774. $(DEFFILE): $(MAKEFILE)
  775.     copy &&|
  776. ; Linker definition file for $(TEST)
  777. ;
  778. ; Copyright (c) 1995 Tarma Software Research. All rights reserved.
  779.  
  780. EXETYPE     WINDOWS
  781.  
  782. CODE    PRELOAD
  783. DATA    PRELOAD MULTIPLE
  784.  
  785. HEAPSIZE    4096
  786. STACKSIZE    8192
  787. | $(DEFFILE)
  788.  
  789. !elif $d(OS2)        #-----    OS/2 version
  790.  
  791. $(DEFFILE): $(MAKEFILE)
  792.     copy &&|
  793. ; Linker definition file for $(TEST)
  794. ;
  795. ; Copyright (c) 1995 Tarma Software Research. All rights reserved.
  796.  
  797. EXETYPE     OS2
  798.  
  799. CODE    PRELOAD EXECUTEREAD
  800. DATA    PRELOAD MULTIPLE
  801.  
  802. HEAPSIZE    4096
  803. STACKSIZE    8192
  804. | $(DEFFILE)
  805.  
  806. !elif $d(WIN)        #-----    Windows version
  807.  
  808. $(DEFFILE): $(MAKEFILE)
  809.     copy &&|
  810. ; Linker definition file for $(TEST)
  811. ;
  812. ; Copyright (c) 1995 Tarma Software Research. All rights reserved.
  813.  
  814. EXETYPE     WINDOWS
  815.  
  816. CODE    PRELOAD MOVEABLE DISCARDABLE
  817. DATA    PRELOAD MOVEABLE MULTIPLE
  818.  
  819. HEAPSIZE    4096
  820. STACKSIZE    8192
  821. | $(DEFFILE)
  822.  
  823. !elif $d(W32S)        #-----    Win32S version
  824.  
  825. $(DEFFILE): $(MAKEFILE)
  826.     copy &&|
  827. ; Linker definition file for $(TEST)
  828. ;
  829. ; Copyright (c) 1995 Tarma Software Research. All rights reserved.
  830.  
  831. EXETYPE     WINDOWS
  832.  
  833. CODE    PRELOAD
  834. DATA    PRELOAD MULTIPLE
  835.  
  836. HEAPSIZE    4096
  837. STACKSIZE    8192
  838. | $(DEFFILE)
  839.  
  840. !elif $d(NT)        #-----    Windows NT version
  841.  
  842. $(DEFFILE): $(MAKEFILE)
  843.     copy &&|
  844. ; Linker definition file for $(TEST)
  845. ;
  846. ; Copyright (c) 1995 Tarma Software Research. All rights reserved.
  847.  
  848. EXETYPE     WINDOWS
  849.  
  850. CODE    PRELOAD
  851. DATA    PRELOAD MULTIPLE
  852.  
  853. HEAPSIZE    4096
  854. STACKSIZE    8192
  855. | $(DEFFILE)
  856.  
  857. !else
  858. !error Unknown platform; contact Tarma Software Research
  859. !endif
  860.  
  861. #-----------------------------------------------------------------------------
  862. #    Tracing DLL & import library targets
  863. #-----------------------------------------------------------------------------
  864.  
  865. !if $d(WIN)
  866.  
  867. tlxtrace: tlxtrace.lib
  868.  
  869. tlxtrace.lib: tlxtr$(TLXVER).dll
  870.     IMPLIB $(.PATH.lib)\tlxtr$(TLXVER).lib $(.PATH.dll)\tlxtr$(TLXVER).dll
  871.  
  872. tlxtr$(TLXVER).dll: tracelib.def tracelib.cpp
  873.     $(CC) -v -c -WDE -d -G- -I$(INCLUDE) -m$(M) -O1 -w -D_TRACEBUILD \
  874.         -D_NO_LINK_CHECK $(.PATH.cpp)\tracelib.cpp
  875.     $(LINK) /v /c /yx /L$(LIB) /Twd C0D$(M).OBJ tracelib.obj, \
  876.          $(.PATH.dll)\tlxtr$(TLXVER).dll,,CW$(M).LIB MATHW$(M).LIB \
  877.          IMPORT.LIB, tracelib.def
  878.  
  879. !endif
  880.  
  881. #-----------------------------------------------------------------------------
  882. #    Explicit rules
  883. #-----------------------------------------------------------------------------
  884.  
  885. clean:
  886.     del /s *.bak *.map *.sym *.obj
  887.  
  888. depend:
  889.     $(MD) $(MDFLAGS) /E$(OBJ) $(.PATH.cpp)\*.cpp
  890.  
  891. version:
  892.     ci /q /u *.c *.cpp *.h $(MAKEFILE)
  893.  
  894. #-----------------------------------------------------------------------------
  895. #    File dependencies
  896. #-----------------------------------------------------------------------------
  897.  
  898. !include $(DEPEND)
  899.