home *** CD-ROM | disk | FTP | other *** search
/ Software Collection (I) / TOOLS.iso / c02 / 20.img / DOC.PAK / COMPAT.TXT < prev    next >
Encoding:
Text File  |  1994-02-15  |  25.3 KB  |  812 lines

  1. Using the Paradox Engine And Database Frameworks with BC 4.0
  2. ============================================================
  3.  
  4. THE PARADOX ENGINE
  5.  
  6. There is only one significant detail regarding the use of the Paradox
  7. Engine 3.0x with Borland C++ 4.0.  The BC 3.1 versions of setjump and
  8. longjump will have to be linked into your application in order to create
  9. DOS Paradox Engine and Database Framework applications.  The object
  10. module, setjmp.obj, is provided in the BC4\LIB\COMPAT directory. Linking
  11. this module into your application will replace the BC 4.0 version of
  12. these functions.  To do this, simply add the file
  13. \BC4\LIB\COMPAT\SETJMP.OBJ to your project file or to the link command
  14. in your makefile.
  15.  
  16.  
  17. REBUILDING THE DATABASE FRAMEWORKS
  18.  
  19. Due to changes in the debug information format, symbol length, and
  20. runtime library, the Database Framework library must be recompiled with
  21. Borland C++ 4.0.
  22.  
  23. A number of changes will have to be made to the Paradox Engine DBF v3.01
  24. makefile in order for it to work with BC 4.0 (this makefile is available
  25. from our local BBS at (408) 431-5096 as the file TI1169.ZIP and from
  26. TechFax at (800) 822-4269, document number 1169):
  27.  
  28. 1. Copy makefile.bc to make40.mak
  29.  
  30. 2. Make certain that a turboc.cfg file exists in the BC4\BIN directory
  31.    containing:
  32.  
  33.       -Ic:\bc4\include
  34.       -Lc:\bc4\lib
  35.  
  36.    Make certain that a tlink.cfg file exist in the BC4\BIN directory
  37.    containing:
  38.  
  39.       -Lc:\bc4\lib
  40.  
  41.    Adjust the above paths to reflect your systems' configuration.
  42.  
  43. 3. Make the following changes:
  44.  
  45.    Line 83: Change the 'CCINCLUDE=' line to contain the path to the BC
  46.             4.0 include directory.
  47.    Line 168: Delete the blank space at the end of the 'DEBUGFLAG=v ' line
  48.    Line 172: Delete the blank space at the end of the 'DYNAMICFLAG=d ' line
  49.    Line 202: Add '-DWindows' after '-DWINDOWS'
  50.    Line 204: Add '-DWindows' after '-DWINDOWS'
  51.    Line 206: Add '-DWindows' after '-DWINDOWS'
  52.    Line 239: Replace '$D' with 'BuildDir'
  53.    Line 249: Replace '$D' with 'BuildDir'
  54.    Line 261: Replace '$D' with 'BuildDir'
  55.  
  56. Then use the following command to create a Database Framework Library.
  57. Add one or both of the options -DDBG and -DWINDOWS to add debug info or
  58. build for use in WINDOWS code. (Refer to the makefile for even more
  59. options.)
  60.  
  61.    make -fmake40.mak
  62.  
  63. For example, the following command will create a large model, static
  64. windows DBF library with debug info:
  65.  
  66.    make -DWINDOWS -DDBG -fmake40.mak
  67.  
  68. The libraries will be created in the PXENG30\C\LIB directory.  These
  69. libraries are now ready for use in your Database Frameworks Program.
  70.  
  71.  
  72. CHANGES TO USER CODE WITH RESPECT TO DBF
  73.  
  74. The only change to your source code involves the use of the 'new'
  75. operator. In BC++ 4.0, the new operator no longer returns NULL in case
  76. of failure, rather the xalloc exception is thrown.  To change this back
  77. so operator new returns NULL, call set_new_handler(0).
  78.  
  79. The only remaining issue is with using the new operator in the
  80. constructor of global objects.  How do you call set_new_handler(0)
  81. before a global object's constructor is called?  This is accomplished by
  82. using a #pragma startup function with a priority higher than that of the
  83. startup function used to call the particular global object's
  84. constructor.  The following code shows an example of changing the
  85. behavior of new:
  86.  
  87.    #include <new.h>
  88.  
  89.    void old_new(void)
  90.    {
  91.       set_new_handler(0);
  92.    }
  93.  
  94.    #pragma startup old_new 31
  95.  
  96.    BEngine eng(pxWin);
  97.  
  98.    int main (void)
  99.    {
  100.    .
  101.    .
  102.    .
  103.       return 0;
  104.    }
  105.  
  106. Note that creating global instances of Database Framework objects is not
  107. recommended because it can make error checking difficult.
  108.  
  109. The other option is to change the source of the Database Frameworks: Add
  110. the try {} catch(xalloc) clause everywhere that new is called.
  111.  
  112.  
  113.  
  114. Using Turbo Vision 1.0x with Borland C++ 4.0
  115. ============================================
  116.  
  117. REBUILDING THE TURBO VISION LIBRARY:
  118.  
  119. Due to changes in the debug information format, symbol length, and
  120. runtime library, the Turbo Vision library must be recompiled with
  121. Borland C++ 4.0.
  122.  
  123. There are a few minor changes that need to be made to the source code
  124. before recompiling it with the new compiler.  These are due to slightly
  125. tightened syntax restrictions.  The makefile will require some
  126. modification as well, which are shown below.
  127.  
  128. There are 3 steps to this process:
  129.  
  130.    1. Copy the old 3.1 Turbo Vision source into the new BC4 directory
  131.       structure.
  132.    2. Make the appropriate changes according to the instructions below.
  133.    3. Run MAKE to build the new Turbo Vision library you need to
  134.       continue your work.  If you are using Turbo Vision in an overlaid
  135.       application, make sure you follow the instructions specific to
  136.       overlays.
  137.  
  138. These steps are now presented in more detail:  Note that the Borland C++
  139. root directory is assumed to be \BC4.  Change this as necessary for your
  140. particular installation.  Also, if you are upgrading from Borland C++
  141. 2.0 and have the original version of Turbo Vision, some of the line
  142. numbers mentioned may not accurately reflect your version.
  143.  
  144. You need to copy your old Turbo Vision source and include files from
  145. Borland C++ 3.1 into your Borland C++ 4.0 directory hierarchy.  To do
  146. this, just run the following command:
  147.  
  148.    XCOPY \BC31\TVISION \BC4\TVISION /S
  149.  
  150. and when it asks you about creating a directory called TVISION, say yes.
  151. Modify the above paths according to your system configuration if
  152. necessary.  You are now ready to make the necessary modifications before
  153. rebuilding the library.
  154.  
  155. The changes are as follows:
  156.  
  157. 1. Due to tighter syntax checking, case blocks that declare initialized
  158.    local variables need their own scoping block.  Make the changes below
  159.    in the order shown so that confusion over the correct line numbers
  160.    can be avoided.  In general, the '{' follows a case statement, and
  161.    the '}' follows a break statement.
  162.  
  163.    COLORSEL.CPP
  164.  
  165.       Add after line 219:  }
  166.       Add after line 179:  {
  167.       Add after line 177:  }
  168.       Add after line 164:  {
  169.  
  170.    TBUTTON.CPP
  171.  
  172.       Add after line 226:  }
  173.       Add after line 211:  {
  174.       Add after line 209:  }
  175.       Add after line 192:  {
  176.  
  177. 2. TINPUTLIN.CPP
  178.    Replace line 44:  if( (p = strchr( s, '~' )) != 0 )
  179.    With              if( (p = (char*) strchr( s, '~' )) != 0)
  180.  
  181. 3. TMNUVIEW.CPP
  182.    Replace line 348:  char *loc = strchr( p->name, '~' );
  183.    With               char *loc = (char*)strchr( p->name, '~' );
  184.  
  185. 4. TVWRITE.ASM
  186.    Replace line 25:  PUBLIC  @TView@writeChar$qsszcucs
  187.    With              PUBLIC  @TView@writeChar$qsscucs
  188.  
  189.    Replace line 27:  PUBLIC  @TView@writeStr$qssnxzcuc
  190.    With              PUBLIC  @TView@writeStr$qssnxcuc
  191.  
  192.    Replace line 366:  PROC    @TView@writeChar$qsszcucs
  193.    With               PROC    @TView@writeChar$qsscucs
  194.  
  195.    Replace line 436:  PROC    @TView@writeStr$qssnxzcuc
  196.    With               PROC    @TView@writeStr$qssnxcuc
  197.  
  198.    Note that all of the above changes simply entail removing
  199.    the letter 'z' from the last part of the mangled symbol
  200.    name.
  201.  
  202. 5. MAKEFILE
  203.    Replace line 100:
  204.       CFLAGS = -c $(CCOVYFLAGS) -P -O1 -m$(MODEL) -I$(INCLUDE) -n$(OBJDIR)
  205.    With
  206.       CFLAGS = -c -x- $(CCOVYFLAGS) -P -O1 -m$(MODEL) -I$(INCLUDE) -n$(OBJDIR)
  207.  
  208.    Replace line 73:
  209.       TLIB = $(BCROOT)\bin\tlib /0
  210.    With this group of 5 lines:
  211.       !ifdef DEBUG
  212.          TLIB = $(BCROOT)\bin\tlib
  213.       !else
  214.          TLIB = $(BCROOT)\bin\tlib /0
  215.       !endif
  216.  
  217.    *** If you did NOT purchase the Turbo Assembler add-on package for
  218.    Borland C++ 4.0, you must make some additional changes.
  219.  
  220.    Replace the group at lines 259-263:
  221.       !if $d(BC)
  222.          $(TASM) $&.asm, $(OBJDIR)\$&.obj
  223.       !else
  224.          copy $(TVLIBDIR)\$&.obj $(OBJDIR)
  225.       !endif
  226.    With this group:
  227.       !if !$d(NOTASM)
  228.          $(TASM) $&.asm, $(OBJDIR)\$&.obj
  229.       !else
  230.          copy $(LIBDIR)\COMPAT\$&.obj $(OBJDIR)
  231.       !endif
  232.  
  233.    Add after line 49:
  234.       NOTASM = 1
  235.  
  236.  
  237. USE OF EXCEPTION HANDLING WITH TURBO VISION:
  238.  
  239. Turbo Vision was designed with its own global new operator.  Due to this
  240. internal design you will not be able to use exception handling with the
  241. new operator. However, any other type of exception handling is
  242. supported. In order to enable exception handling do not make the change
  243. to line 88 of the makefile.
  244.  
  245.  
  246. USE OF OVERLAYS WITH TURBO VISION:
  247.  
  248. ** Note: All instructions in this section are in addition to the changes
  249. recommended above.
  250.  
  251. As with Borland C++ 3.1, Turbo Vision can be used in an overlayed program
  252. if the library is rebuild with certain options, shown below:
  253.  
  254.    All overlayed modules must be compiled with local virtual tables (-Vs).
  255.  
  256.    Overlayed modules no longer need to be compiled via assembler (-B).
  257.  
  258.    Overlayed modules must be compiled with exceptions disabled (-x-).
  259.  
  260. Here are the steps required to build an overlayable version of TV.LIB:
  261.  
  262. 1. First make an additional change to file TVISION\SOURCE\MAKEFILE:
  263.  
  264.    Change line 96 from : CCOVYFLAGS = -Y -Vs -B
  265.                     to : CCOVYFLAGS = -Y -Vs
  266.  
  267. 2. Change to the \BC4\TVISION\LIB directory and make a backup copy of
  268.    TV.LIB by typing:
  269.  
  270.    COPY TV.LIB OLDTV.LIB
  271.  
  272. 3. Switch to the \BC4\TVISION\SOURCE directory and type:
  273.  
  274.    MAKE -B -DOVERLAY
  275.  
  276. 4. This will create a new TV.LIB in the \BC4\TVISION\LIB directory.
  277.    There are seven modules in TV.LIB which cannot be overlayed.  The
  278.    easiest solution to this problem is to create three seperate
  279.    libraries.  Two libraries will be used when creating overlayed TV
  280.    apps, and the original TV.LIB will remain for use in non-overlayed TV
  281.    apps:
  282.  
  283.     TV.LIB   - full TV lib for use in non-overlayed TV apps
  284.     TVO.LIB  - overlayable modules of TV.LIB
  285.     TVNO.LIB - non-overlayable modules of TV.LIB
  286.  
  287.    To create these libraries, switch into the TVISION\LIB directory and
  288.    type the following commands:
  289.  
  290.     TLIB TV.LIB -*SYSERR -*TSCREEN -*DRIVERS -*DRIVERS2 -*SWAPST -*TEVENT -*SYSINT
  291.     TLIB TVNO.LIB +SYSERR +TSCREEN +DRIVERS +DRIVERS2 +SWAPST +TEVENT +SYSINT
  292.     RENAME TV.LIB TVO.LIB
  293.     RENAME TVOLD.LIB TV.LIB
  294.     DEL *.OBJ *.BAK
  295.  
  296. 5. You will now have the three libraries.  To create an overlayed Turbo
  297.    Vision application, include both TVO.LIB and TVNO.LIB in the project
  298.    file or link line of the makefile.  Using the local options for each
  299.    item, mark TVO.LIB as overlayed and TVNO.LIB as non-overlayed.  Also,
  300.    go to the TargetExpert dialog box for this target and uncheck the
  301.    Turbo Vision Library.
  302.  
  303.  
  304.  
  305. Using the Object Based Class Library with Borland C++ 4.0
  306. =========================================================
  307.  
  308. The object based class library, while still included with Borland C++
  309. 4.0, must be compiled before it can be used.  Here are instructions for
  310. doing so:
  311.  
  312. There is a makefile in the source directory, \BC4\SOURCE\CLASSLIB which
  313. can be used to build all versions of the class library.  For example, to
  314. build a large model static version for use with Object Windows, run the
  315. following command:
  316.  
  317.    MAKE -DDOS -DOBJECTS "-DBCC=bcc -x-" -DMODEL=l -DNAME=tclassl
  318.  
  319. To build a debugging dynamic version of the class library DLL, run the
  320. following command:
  321.  
  322.    MAKE -DDOS -DDBG -DOBJECTS "-DBCC=bcc -x-" -DDLL -DNAME=tclass
  323.  
  324. Note that to successfully use the DLL version of the class library you will
  325. have to copy TCLASS40.DLL from the \BC4\LIB directory into the \BC4\BIN
  326. directory.
  327.  
  328.  
  329.  
  330. Using OWL 1.0 with Borland C++ 4.0
  331. ==================================
  332.  
  333. REBUILDING THE OWL LIBRARY:
  334.  
  335. Due to changes in the debug information format, symbol length, and
  336. runtime library, the Object Windows library must be recompiled with
  337. Borland C++ 4.0.
  338.  
  339. Rebuilding Object Windows requires that you first rebuild the Object
  340. Based Class Library.  If you have not already done so, go to the section
  341. above marked "Using the Object Based Class Library with Borland C++ 4.0"
  342. and follow those directions before continuing here.
  343.  
  344. There are 4 steps to this process:
  345.  
  346.    1. Copy the old 3.1 OWL source into the new BC4 directory structure.
  347.    2. Extract the new makefile from the end of this file and save it.
  348.    3. Make a slight modification to OWLDLL.DEF.
  349.    4. Run MAKE to build the various OWL libraries you need to continue
  350.       your work.
  351.  
  352. These steps are now presented in more detail:  Note that the Borland C++
  353. root directory is assumed to be \BC4.  Change this as necessary for your
  354. particular installation.
  355.  
  356. First, go to the \BC4\SOURCE directory and create a new subdirectory
  357. called OWL1.  In OWL1, make three more subdirectories called SOURCE,
  358. LIB, and OBJECT.  In OBJECT, make directories called WS, WM, WL, and WD.
  359. Copy the entire contents of the \BC31\OWL\SOURCE directory from Borland
  360. C++ 3.1 into \BC4\SOURCE\OWL1\SOURCE.  The following batch text
  361. (modified to reflect your systems directory structure) will automate
  362. these tasks for you:
  363.  
  364.    CD \BC4\SOURCE
  365.    MKDIR OWL1
  366.    CD OWL1
  367.    MKDIR OBJECT
  368.    MKDIR SOURCE
  369.    CD OBJECT
  370.    MKDIR WS
  371.    MKDIR WM
  372.    MKDIR WL
  373.    MKDIR DL
  374.    CD ..\SOURCE
  375.    XCOPY \BC31\OWL\SOURCE .
  376.  
  377. You are now ready to make the necessary modifications before rebuilding
  378. the library.
  379.  
  380. The makefile for OWL 1.0 needed some changes to be suitable for use with
  381. Borland C++ 4.0.  Due to the number of changes, we have enclosed a new
  382. makefile and the end of this document.  Extract it using your favorite
  383. editor (e.g. the IDE) and save it in the OWL1\SOURCE directory as
  384. MAKEFILE.
  385.  
  386. There are now new names for the OWL 1.0 libraries to avoid conflicts
  387. with the OWL 2.0 libraries.  The new names are:
  388.  
  389.    OWL100WS.LIB   Small model
  390.    OWL100WM.LIB   Medium model
  391.    OWL100WL.LIB   Large model
  392.    OWL100I.LIB    Import library for DLL
  393.    OWL100.DLL     OWL 1.0 DLL
  394.  
  395. In order to properly rename the DLL, the file OWLDLL.DEF in the
  396. OWL1\SOURCE directory must be modified as well.  Change line 1 of this
  397. file from "LIBRARY OWL31" to "LIBRARY OWL100".
  398.  
  399. The Object Window's makefile can now be invoked via MAKE.EXE to rebuild
  400. the entire library.  For example, to rebuild the large model static
  401. library with no debug information, run MAKE with this option:
  402.  
  403.    MAKE -DMODEL=l
  404.  
  405. To build the dynamic library with full debug info, run MAKE as follows:
  406.  
  407.    MAKE -DDLL -DDEBUG
  408.  
  409. *** If you did not purchase the Turbo Assembler 4.0, you can only
  410. rebuild the large model static library or the dynamic library.  You must
  411. also define NOTASM when running MAKE.  The following command will build
  412. the large model static library.
  413.  
  414.    MAKE -DMODEL=l -DNOTASM
  415.  
  416.  
  417.  
  418. USING THE NEW OWL 1.0 LIBRARIES
  419.  
  420. To import your old OWL 1.0 projects into BC++ 4.0, only a few changes
  421. are needed.  First load the .PRJ file into the IDE via Project | Open
  422. Project. After the project file is loaded, perform the following
  423. changes:
  424.  
  425.    1. Using TargetExpert (see the local menu for the project file
  426.       target) uncheck OWL and the Class Library.  Also double check that
  427.       the target is Windows 16-bit, and that the memory model is
  428.       correct.
  429.  
  430.    2. If using the static versions of these libraries, add as
  431.       dependencies to the target node TCLASSx.LIB and OWL100Wx.LIB where
  432.       'x' is the letter of the memory model being used.
  433.  
  434.       If using the dynamic versions, add as dependencies to the target
  435.       node TCLASSI.LIB and OWL100I.LIB.
  436.  
  437.    3. Select the Project Notebook (via Options | Project).
  438.       Under Directories.  Set the Include path to:
  439.          \BC4\INCLUDE;\BC4\INCLUDE\CLASSLIB\OBSOLETE;\BC4\INCLUDE\OWLCVT
  440.       Set the Library path to:
  441.          \BC4\LIB
  442.       Under C++ Options | Exception Handling/RTTI turn off all checkboxes.
  443.  
  444.       If using the dynamic versions of these libraries, go to Options |
  445.       Project | Compiler | Defines and add the symbol _CLASSDLL.
  446.  
  447.    4. If you are using OWL.DEF from OWL 1.0, make sure you copy it from
  448.       the old OWL 1.0 LIB directory to a new area and modify the project
  449.       node for this item accordingly.
  450.  
  451. *** Note that just as in Borland C++ 3.1, if you are using the dynamic
  452. version of OWL, you must also use the dymamic version of the class
  453. library and of the runtime library.
  454.  
  455.  
  456.  
  457. TEXT FOR NEW OWL 1.0 MAKEFILE:
  458. ==============================
  459. # ObjectWindows - (C) Copyright 1992 by Borland International
  460.  
  461. .autodepend
  462. .swap
  463.  
  464. !if $d(DEBUG)
  465. DBG = -v
  466. !endif
  467.  
  468. VERSION = 100
  469.  
  470. !if !$d(MODEL)
  471. !if $d(DLL)
  472. MODEL = l
  473. !else
  474. MODEL = l
  475. !endif
  476. !endif
  477.  
  478. !if $d(DLL)
  479. WIN = -WDE -D_CLASSDLL
  480. D = d
  481. SWINDOBJNAME=swndobjd.obj
  482. OWLMATHNAME=owlmathd.obj
  483. VERSIONNAME=versiond.obj
  484. !else
  485. WIN = -WE
  486. D = w
  487. SWINDOBJNAME=swndobj$(MODEL).obj
  488. OWLMATHNAME=owlmath$(MODEL).obj
  489. VERSIONNAME=version$(MODEL).obj
  490. !endif
  491.  
  492. #
  493. # By default, build OWL with STRICT and WIN30 and WIN31 entry points.
  494. #
  495.  
  496. WINMODE = -DWIN30;WIN31;STRICT
  497.  
  498. !if $d(STRICT)
  499.  
  500. WINMODE = -DSTRICT
  501. !if $d(WIN31)
  502. WINMODE = -DWIN31 $(WINMODE)
  503. !endif
  504. !if $d(WIN30)
  505. WINMODE = -DWIN30 $(WINMODE)
  506. !endif
  507.  
  508. !else # !STRICT
  509.  
  510. !if $d(WIN31)
  511. WINMODE = -DWIN31
  512. !if $d(WIN30)
  513. WINMODE = -DWIN30 $(WINMODE)
  514. !endif
  515.  
  516. !else # !WIN31 && !STRICT
  517.  
  518. !if $d(WIN30)
  519. WINMODE = -DWIN30
  520. !endif
  521.  
  522. !endif # !WIN31
  523. !endif # !STRICT
  524.  
  525.  
  526. !if !$d(BCROOT)
  527. BCROOT=..\..\..
  528. !endif
  529.  
  530. !if !$d(OWLROOT)
  531. OWLROOT=$(BCROOT)\source\owl1
  532. !endif
  533.  
  534. !if !$d(CLASSDIR)
  535. CLASSDIR = $(BCROOT)\source\classlib\obsolete
  536. !endif
  537.  
  538. KEY = $(D)$(MODEL)
  539. OBJDIR = ..\object\$(KEY)
  540.  
  541. .path.obj = $(OBJDIR)
  542.  
  543. !if $d(DEBUG)
  544. TLIB = $(BCROOT)\bin\tlib /P128
  545. !else
  546. TLIB = $(BCROOT)\bin\tlib /0
  547. !endif
  548.  
  549. CC = $(BCROOT)\bin\bcc
  550. TLINK = $(BCROOT)\bin\tlink
  551. ASM = $(BCROOT)\bin\tasmx
  552.  
  553. INCLUDE = $(BCROOT)\include\owlcvt;$(BCROOT)\include\classlib\obsolete;$(BCROOT)\include
  554. LIBDIR = $(BCROOT)\lib
  555.  
  556. !if $d(DLL)
  557. CFLAGS = -c -x- -RT- -v -vi $(WINMODE);BUILD_OWL $(WIN) -m$(MODEL) -n$(OBJDIR) -2
  558. !else
  559. CFLAGS = -c -x- -RT- $(DBG) $(WINMODE);BUILD_OWL $(WIN) -m$(MODEL) -n$(OBJDIR) -2
  560. !endif
  561.  
  562. ASMFLAGS = /o /D__LARGE__ /D__CDECL__ /e /ml
  563.  
  564. BCC = $(CC)
  565. !if $d(DLL)
  566. TBCC = $(CC) -TD_CLASSDLL
  567. !else
  568. TBCC = $(CC)
  569. !endif
  570.  
  571. #used for linking DLL
  572. LFLAGS = /v /Twd /n /x /c /C
  573. BCLIBDIR = $(BCROOT)\lib
  574. DCLASSLIB = $(BCLIBDIR)\tclassi.lib
  575. STDLIBS = $(BCLIBDIR)\import $(BCLIBDIR)\crtldll $(BCLIBDIR)\cwl
  576.  
  577. OBJS = \
  578.    module.obj     \
  579.    applicat.obj   \
  580.    window.obj     \
  581.    owl.obj        \
  582.    dialog.obj     \
  583.    scroller.obj   \
  584.    control.obj    \
  585.    button.obj     \
  586.    checkbox.obj   \
  587.    static.obj     \
  588.    edit.obj       \
  589.    groupbox.obj   \
  590.    radiobut.obj   \
  591.    listbox.obj    \
  592.    combobox.obj   \
  593.    scrollba.obj   \
  594.    mdiframe.obj   \
  595.    mdiclien.obj   \
  596.    inputdia.obj   \
  597.    filedial.obj   \
  598.    editwnd.obj    \
  599.    filewnd.obj    \
  600.    bbutton.obj    \
  601.    bchkbox.obj    \
  602.    bradio.obj     \
  603.    bdivider.obj   \
  604.    bgrpbox.obj    \
  605.    bstatic.obj    \
  606.    bstatbmp.obj   \
  607.    bwindow.obj    \
  608.    safepool.obj   \
  609.    objstrm.obj    \
  610.    tcollect.obj   \
  611.    tsortcol.obj   \
  612.    appdict.obj    \
  613.    windobj.obj    \
  614.    version.obj    \
  615.    owlmath.obj    \
  616.    swindobj.obj
  617.  
  618. .cpp.obj:
  619.     $(BCC) {$. }
  620.  
  621. .c.obj:
  622.     $(BCC) {$. }
  623.  
  624. .asm.obj:
  625.     $(TBCC) $.
  626.  
  627. !if $d(DLL)
  628. all: config $(LIBDIR)\owl.lib
  629. !else
  630. all: config $(LIBDIR)\owl$(VERSION)$(KEY).lib
  631. !endif
  632.  
  633. config: makefile
  634.    echo -I$(INCLUDE) > turboc.cfg
  635.    echo $(CFLAGS) >> turboc.cfg
  636.  
  637. swindobj.obj: swindobj.cpp
  638. !if !$d(NOTASM)
  639.    $(CC) $(CFLAGS) -S swindobj.cpp
  640.    $(ASM) $(ASMFLAGS) $(OBJDIR)\swindobj.asm,$(OBJDIR)\swindobj.obj
  641. !else
  642.     copy $(BCROOT)\LIB\COMPAT\$(SWINDOBJNAME) $(OBJDIR)\swindobj.obj
  643. !endif
  644.  
  645. owlmath.obj: owlmath.cpp
  646. !if !$d(NOTASM)
  647.    $(CC) $(CFLAGS) -S owlmath.cpp
  648.    $(ASM) $(ASMFLAGS) $(OBJDIR)\owlmath.asm,$(OBJDIR)\owlmath.obj
  649. !else
  650.    copy $(BCROOT)\LIB\COMPAT\$(OWLMATHNAME) $(OBJDIR)\owlmath.obj
  651. !endif
  652.  
  653. version.obj:
  654.    copy $(BCROOT)\LIB\COMPAT\$(VERSIONNAME) $(OBJDIR)\version.obj
  655.  
  656. tcollect.obj: tcollect.cpp
  657.    $(BCC) -RT- $?
  658.  
  659. tsortcol.obj: tsortcol.cpp
  660.    $(BCC) -RT- $?
  661.  
  662. $(LIBDIR)\owl.lib: $(OBJS) $(DCLASSLIB)
  663.    $(TLINK) $(LFLAGS) @&&!
  664. $(BCLIBDIR)\c0$(KEY) +
  665. $(OBJDIR)\windobj    +
  666. $(OBJDIR)\swindobj   +
  667. $(OBJDIR)\applicat   +
  668. $(OBJDIR)\window     +
  669. $(OBJDIR)\owl        +
  670. $(OBJDIR)\dialog     +
  671. $(OBJDIR)\scroller   +
  672. $(OBJDIR)\owlmath    +
  673. $(OBJDIR)\inputdia   +
  674. $(OBJDIR)\filedial   +
  675. $(OBJDIR)\control    +
  676. $(OBJDIR)\button     +
  677. $(OBJDIR)\checkbox   +
  678. $(OBJDIR)\static     +
  679. $(OBJDIR)\edit       +
  680. $(OBJDIR)\radiobut   +
  681. $(OBJDIR)\groupbox   +
  682. $(OBJDIR)\listbox    +
  683. $(OBJDIR)\combobox   +
  684. $(OBJDIR)\mdiframe   +
  685. $(OBJDIR)\mdiclien   +
  686. $(OBJDIR)\scrollba   +
  687. $(OBJDIR)\editwnd    +
  688. $(OBJDIR)\filewnd    +
  689. $(OBJDIR)\module     +
  690. $(OBJDIR)\bbutton    +
  691. $(OBJDIR)\bchkbox    +
  692. $(OBJDIR)\bradio     +
  693. $(OBJDIR)\bdivider   +
  694. $(OBJDIR)\bgrpbox    +
  695. $(OBJDIR)\bstatic    +
  696. $(OBJDIR)\bstatbmp   +
  697. $(OBJDIR)\bwindow    +
  698. $(OBJDIR)\safepool   +
  699. $(OBJDIR)\objstrm    +
  700. $(OBJDIR)\tcollect   +
  701. $(OBJDIR)\tsortcol   +
  702. $(OBJDIR)\appdict    +
  703. $(OBJDIR)\version
  704. ! $(LIBDIR)\owl$(VERSION).dll,, @&&!
  705. /v- $(DCLASSLIB) $(STDLIBS)
  706. !,owldll.def
  707.    implib $(LIBDIR)\owl$(VERSION)i.lib $(LIBDIR)\owl$(VERSION).dll
  708.    copy $(LIBDIR)\owl$(VERSION).dll $(BCROOT)\bin
  709.    tdstrip -s $(BCROOT)\bin\owl$(VERSION).dll
  710.    del $(LIBDIR)\owl$(VERSION).dll
  711.  
  712. $(LIBDIR)\owl$(VERSION)$(KEY).lib: $(OBJS)
  713.    del $(LIBDIR)\owl$(VERSION)$(KEY).lib
  714.    $(TLIB) $(LIBDIR)\owl$(VERSION)$(KEY).lib @&&!
  715. +$(OBJDIR)\windobj   &
  716. +$(OBJDIR)\swindobj  &
  717. +$(OBJDIR)\window    &
  718. +$(OBJDIR)\applicat  &
  719. +$(OBJDIR)\owl       &
  720. +$(OBJDIR)\dialog    &
  721. +$(OBJDIR)\scroller  &
  722. +$(OBJDIR)\owlmath   &
  723. +$(OBJDIR)\inputdia  &
  724. +$(OBJDIR)\filedial  &
  725. +$(OBJDIR)\control   &
  726. +$(OBJDIR)\button    &
  727. +$(OBJDIR)\checkbox  &
  728. +$(OBJDIR)\static    &
  729. +$(OBJDIR)\edit      &
  730. +$(OBJDIR)\radiobut  &
  731. +$(OBJDIR)\groupbox  &
  732. +$(OBJDIR)\listbox   &
  733. +$(OBJDIR)\combobox  &
  734. +$(OBJDIR)\mdiframe  &
  735. +$(OBJDIR)\mdiclien  &
  736. +$(OBJDIR)\scrollba  &
  737. +$(OBJDIR)\editwnd   &
  738. +$(OBJDIR)\filewnd   &
  739. +$(OBJDIR)\module    &
  740. +$(OBJDIR)\bbutton   &
  741. +$(OBJDIR)\bchkbox   &
  742. +$(OBJDIR)\bradio    &
  743. +$(OBJDIR)\bdivider  &
  744. +$(OBJDIR)\bgrpbox   &
  745. +$(OBJDIR)\bstatic   &
  746. +$(OBJDIR)\bstatbmp  &
  747. +$(OBJDIR)\bwindow   &
  748. +$(OBJDIR)\safepool  &
  749. +$(OBJDIR)\objstrm   &
  750. +$(OBJDIR)\tcollect  &
  751. +$(OBJDIR)\tsortcol  &
  752. +$(OBJDIR)\appdict   &
  753. +$(OBJDIR)\version
  754. !
  755.  
  756. clean:
  757.    @echo Removing .OBJ's and .ASM's from $(OBJDIR)
  758.    @if exist .\version.cpp  \
  759.       if exist $(OBJDIR)\version.obj  del $(OBJDIR)\version.obj
  760. !if !$d(NOTASM)
  761.    @if exist .\owlmath.cpp  \
  762.       if exist $(OBJDIR)\owlmath.obj  del $(OBJDIR)\owlmath.obj
  763.    @if exist .\swindobj.cpp \
  764.       if exist $(OBJDIR)\swindobj.obj del $(OBJDIR)\swindobj.obj
  765.    @if exist $(OBJDIR)\swindobj.asm   del $(OBJDIR)\swindobj.asm
  766. !endif
  767.    @if exist $(OBJDIR)\module.obj     del $(OBJDIR)\module.obj
  768.    @if exist $(OBJDIR)\applicat.obj   del $(OBJDIR)\applicat.obj
  769.    @if exist $(OBJDIR)\window.obj     del $(OBJDIR)\window.obj
  770.    @if exist $(OBJDIR)\owl.obj        del $(OBJDIR)\owl.obj
  771.    @if exist $(OBJDIR)\dialog.obj     del $(OBJDIR)\dialog.obj
  772.    @if exist $(OBJDIR)\scroller.obj   del $(OBJDIR)\scroller.obj
  773.    @if exist $(OBJDIR)\control.obj    del $(OBJDIR)\control.obj
  774.    @if exist $(OBJDIR)\button.obj     del $(OBJDIR)\button.obj
  775.    @if exist $(OBJDIR)\checkbox.obj   del $(OBJDIR)\checkbox.obj
  776.    @if exist $(OBJDIR)\static.obj     del $(OBJDIR)\static.obj
  777.    @if exist $(OBJDIR)\edit.obj       del $(OBJDIR)\edit.obj
  778.    @if exist $(OBJDIR)\groupbox.obj   del $(OBJDIR)\groupbox.obj
  779.    @if exist $(OBJDIR)\radiobut.obj   del $(OBJDIR)\radiobut.obj
  780.    @if exist $(OBJDIR)\listbox.obj    del $(OBJDIR)\listbox.obj
  781.    @if exist $(OBJDIR)\combobox.obj   del $(OBJDIR)\combobox.obj
  782.    @if exist $(OBJDIR)\scrollba.obj   del $(OBJDIR)\scrollba.obj
  783.    @if exist $(OBJDIR)\mdiframe.obj   del $(OBJDIR)\mdiframe.obj
  784.    @if exist $(OBJDIR)\mdiclien.obj   del $(OBJDIR)\mdiclien.obj
  785.    @if exist $(OBJDIR)\inputdia.obj   del $(OBJDIR)\inputdia.obj
  786.    @if exist $(OBJDIR)\filedial.obj   del $(OBJDIR)\filedial.obj
  787.    @if exist $(OBJDIR)\editwnd.obj    del $(OBJDIR)\editwnd.obj
  788.    @if exist $(OBJDIR)\filewnd.obj    del $(OBJDIR)\filewnd.obj
  789.    @if exist $(OBJDIR)\bbutton.obj    del $(OBJDIR)\bbutton.obj
  790.    @if exist $(OBJDIR)\bchkbox.obj    del $(OBJDIR)\bchkbox.obj
  791.    @if exist $(OBJDIR)\bradio.obj     del $(OBJDIR)\bradio.obj
  792.    @if exist $(OBJDIR)\bdivider.obj   del $(OBJDIR)\bdivider.obj
  793.    @if exist $(OBJDIR)\bgrpbox.obj    del $(OBJDIR)\bgrpbox.obj
  794.    @if exist $(OBJDIR)\bstatic.obj    del $(OBJDIR)\bstatic.obj
  795.    @if exist $(OBJDIR)\bstatbmp.obj   del $(OBJDIR)\bstatbmp.obj
  796.    @if exist $(OBJDIR)\bwindow.obj    del $(OBJDIR)\bwindow.obj
  797.    @if exist $(OBJDIR)\safepool.obj   del $(OBJDIR)\safepool.obj
  798.    @if exist $(OBJDIR)\objstrm.obj    del $(OBJDIR)\objstrm.obj
  799.    @if exist $(OBJDIR)\tcollect.obj   del $(OBJDIR)\tcollect.obj
  800.    @if exist $(OBJDIR)\tsortcol.obj   del $(OBJDIR)\tsortcol.obj
  801.    @if exist $(OBJDIR)\appdict.obj    del $(OBJDIR)\appdict.obj
  802.    @if exist $(OBJDIR)\windobj.obj    del $(OBJDIR)\windobj.obj
  803.    @if exist $(OBJDIR)\bwindow.obj    del $(OBJDIR)\bwindow.obj
  804.    @if exist $(OBJDIR)\safepool.obj   del $(OBJDIR)\safepool.obj
  805.    @if exist $(OBJDIR)\objstrm.obj    del $(OBJDIR)\objstrm.obj
  806.    @if exist $(OBJDIR)\tcollect.obj   del $(OBJDIR)\tcollect.obj
  807.    @if exist $(OBJDIR)\tsortcol.obj   del $(OBJDIR)\tsortcol.obj
  808.    @if exist $(OBJDIR)\appdict.obj    del $(OBJDIR)\appdict.obj
  809.    @if exist $(OBJDIR)\windobj.obj    del $(OBJDIR)\windobj.obj
  810.  
  811. # End of MAKEFILE for OWL 1.0
  812.