March 95
Version 1.32 of pccts
 
At the moment this file is available via anonymous FTP at
 
        Node: marvin.ecn.purdue.edu
        File: pub/pccts/1.32/NOTES.BCC
 
Mail corrections or additions to David Seidel <71333.1575@compuserve.com>
===============================================================================
Notes on Building PCCTS 1.32 with Borland C++
 
David Seidel, Innovative Data Concepts Incorporated
CompuServe: 71333,1575
Internet:   71333.1575@compuserve.com
            dseidel@delphi.com
 
I have gotten ANTLR and DLG to succesfully build with BCC 4.0, but have found
from experience that ANTLR, in particular, is likely to run out of memory
with grammars over a certain size, or with larger values for the -k and -ck
options.  Now that BCC 4.02 and the new Borland Power Pack for DOS is now
available, I feel that there is no excuse not to build these tools as
32-bit executables, as they ought to be.
 
For people without the Power Pack, the makefiles below should be fairly easily
modified to build 16-bit real-mode executables, but I don't really recommend
it.  As an alternative, you might consider the highly regarded DJGPP compiler
(a DOS port of the Gnu GCC compiler, with a DOS extender included).  Hopefully
some other PCCTS who has DJGPP can provode whatever advice is necessary.  The
Watcom compiler is also an excellent possibility (albeit a commercial one),
and I hope to make available Watcom makefiles in the near future.
 
Here are the makefiles I am using.  Both makefiles use a compiler configuration
file that contains compiler switches such as optimization settings.  I call
this file bor32.cfg and keep a copy in both the ANTLR and DLG subdirectories.
 
==== File: bor32.cfg (cut here) ===============================================
-w-
-RT-
-x-
-N-
-k-
-d
-O2-e-l
-Z
-D__STDC__=1
==== End of file bor32.cfg (cut here) =========================================
 
==== File: antlr\bor32.mak (cut here) =========================================
#
#  ANTLR 1.32 Makefile for Borland C++ 4.02 with DPMI 32-bit DOS extender by
#  David Seidel
#  Innovative Data Concepts Incorporated
#  71333.1575@compuserve.com (or) dseidel@delphi.com
#
#  Notes:   1. Compiler switches (optimization etc.) are contained in the
#              file bor32.cfg.
#           2. This makefile requires Borland C++ 4.02 or greater with
#              the DOS Power Pack add-on package.
#           3. Change the BCCDIR macro below to the topmost directory in
#              which BCC is installed on your system.
#
 
BCCDIR   =  d:\bc4
CC       =  bcc32
SET      =  ..\support\set
PCCTS_H  =  ..\h
ANTLR    =  ..\bin\antlr
DLG      =  ..\bin\dlg
CFLAGS   =  -I$(BCCDIR)\include -I. -I$(SET) -I$(PCCTS_H) -DUSER_ZZSYN \
 +bor32.cfg
LIBS     =  dpmi32 cw32
OBJ_EXT  =  obj
OBJS     =  antlr.obj scan.obj err.obj bits.obj build.obj fset2.obj fset.obj \
 gen.obj globals.obj hash.obj lex.obj main.obj misc.obj pred.obj dialog.obj \
 set.obj
 
.c.obj:
      $(CC) -c $(CFLAGS) {$&.c }
 
antlr.exe: $(OBJS)
   tlink32 @&&|
-Tpe -ax -c -s -L$(BCCDIR)\lib +
$(BCCDIR)\lib\c0x32 $**
$@
 
$(LIBS)
;
|
   copy *.exe ..\bin
 
 
# *********** Target list of PC machines ***********
#
# Don't worry about the ambiguity messages coming from antlr
# for making antlr.c etc...  [should be 10 of them, I think]
#
 
# leave this commented out for initial build!
#antlr.c stdpccts.h parser.dlg tokens.h err.c : antlr.g
#   $(ANTLR) antlr.g
 
antlr.$(OBJ_EXT): antlr.c mode.h tokens.h
 
scan.$(OBJ_EXT): scan.c mode.h tokens.h
 
# leave this commented out for initial build!
#scan.c mode.h: parser.dlg
#   $(DLG) -C2 parser.dlg scan.c
 
set.$(OBJ_EXT): $(SET)\set.c
   $(CC) -c $(CFLAGS) $(SET)\set.c
 
==== End of file antlr\bor32.mak (cut here) ===================================
 
==== File: dlg\bor32.mak (cut here) ===========================================
#
#  DLG 1.32 Makefile for Borland C++ 4.02 with DPMI 32-bit DOS extender by
#  David Seidel
#  Innovative Data Concepts Incorporated
#  71333.1575@compuserve.com (or) dseidel@delphi.com
#
#  Notes:   1. Compiler switches (optimization etc.) are contained in the
#              file bor32.cfg.
#           2. This makefile requires Borland C++ 4.02 or greater with
#              the DOS Power Pack add-on package.
#           3. Change the BCCDIR macro below to the topmost directory in
#              which BCC is installed on your system.
#
 
 
BCCDIR   =  d:\bc4
CC       =  bcc32
SET      =  ..\support\set
PCCTS_H  =  ..\h
ANTLR    =  ..\bin\antlr
DLG      =  ..\bin\dlg
CFLAGS   =  -I$(BCCDIR)\include -I. -I$(SET) -I$(PCCTS_H) -DUSER_ZZSYN \
 +bor32.cfg
LIBS     =  dpmi32 cw32
OBJ_EXT  =  obj
OBJS     =  dlg_p.obj dlg_a.obj main.obj err.obj support.obj \
 output.obj relabel.obj automata.obj set.obj
 
.c.obj:
      $(CC) -c $(CFLAGS) {$&.c }
 
dlg.exe : $(OBJS)
   tlink32 @&&|
-Tpe -ax -c -s -L$(BCCDIR)\lib +
c0x32 $**
$@
 
$(LIBS)
;
|
   copy *.exe ..\bin
 
dlg_p.obj:  dlg_p.c
 
dlg_a.obj:  dlg_a.c
 
main.obj:   main.c
 
err.obj:    err.c
 
support.obj:   support.c
 
output.obj: output.c
 
relabel.obj:   relabel.c
 
automata.obj:  automata.c
 
set.$(OBJ_EXT): $(SET)\set.c
   $(CC) -c $(CFLAGS) $(SET)\set.c
 
==== End of file dlg\bor32.mak (cut here) =====================================
 
 
 



