X-Git-Url: https://pd.if.org/git/?p=pccts;a=blobdiff_plain;f=NOTES.OS2;fp=NOTES.OS2;h=df81b42e1dd847ebaa2bf3f26198e4fd7286ccb4;hp=0000000000000000000000000000000000000000;hb=6d2ac3f332762a7d8fd47331a3a53ab59612c8bd;hpb=81f127806a1a4d152ad95b4cb7636b985d077e6e diff --git a/NOTES.OS2 b/NOTES.OS2 new file mode 100755 index 0000000..df81b42 --- /dev/null +++ b/NOTES.OS2 @@ -0,0 +1,296 @@ +14 April 94 +Version 1.20 of pccts + +At the moment this help file is available via anonymous FTP at + + Node: marvin.ecn.purdue.edu + File: pub/pccts/1.20/NOTES.OS2 + +Mail corrections or additions to Steve Robenalt +=============================================================================== +Notes on building PCCTS under OS/2 2.X with the C Set compilers. + +The supplied makefiles can be used to build PCCTS under OS/2 with minimal +trouble. First you need to edit the makefiles such that the Unix specific +defaults are commented out, then uncomment the lines which are specific +to OS/2 and C Set/2 compilers as originally set up by Ed Harfmann. Note +also that you need to use the target list which reflects the appropriate +naming conventions. Some of the lines now need to be changed to reflect +differences in conventions between the operating systems: 1) change forward +slashes in directories to backslashes, 2) change command line parameters +from -option to /option (note that this applies to C Set, not ANTLR and DLG +options), and 3) change rm to del for clean and scrub targets. + +To build ANTLR for the first time: + +note: I tried various combinations of "touch"ing files to try to prevent nmake + from using ANTLR to rebuild itself, and was unsuccessful. + +In the section labelled "Target list of PC machines", comment out the +scan.c and antlr.c dependencies. This prevents nmake from trying to invoke +ANTLR to build itself. After you have built ANTLR successfully for the first +time, you can uncomment these lines and it will build itself normally. (If you +had a working 1.10 installation before, you can also use the older binaries +when building the new ones.) + +An example of the resulting makefile, with all the extra baggage for Unix, DOS, +and OS/2 1.X is shown here: + +----- cut here ----- + +# +# Makefile for ANTLR 1.20 +# +# SOFTWARE RIGHTS +# +# We reserve no LEGAL rights to the Purdue Compiler Construction Tool +# Set (PCCTS) -- PCCTS is in the public domain. An individual or +# company may do whatever they wish with source code distributed with +# PCCTS or the code generated by PCCTS, including the incorporation of +# PCCTS, or its output, into commerical software. +# +# We encourage users to develop software with PCCTS. However, we do ask +# that credit is given to us for developing PCCTS. By "credit", +# we mean that if you incorporate our source code into one of your +# programs (commercial product, research project, or otherwise) that you +# acknowledge this fact somewhere in the documentation, research report, +# etc... If you like PCCTS and have developed a nice tool with the +# output, please mention that you developed it using PCCTS. In +# addition, we ask that this header remain intact in our source code. +# As long as these guidelines are kept, we expect to continue enhancing +# this system and expect to make other tools available as they are +# completed. +# +# ANTLR 1.20 +# Terence Parr +# Purdue University +# With AHPCRC, University of Minnesota +# 1989-1994 +# +# Ported to Borland C++, IBM C-Set/2 and Microsoft 6.0 by +# Ed Harfmann +# Micro Data Base Systems +# Lafayette, Indiana +# - With updates by Steve Robenalt 4/94 +# +SET=..\support\set +PCCTS_H=..\h + +# +# C-Set/2 for OS/2 +# +CC=icc +CFLAGS= /I. /I$(SET) /I$(PCCTS_H) /Sa /W3 /DUSER_ZZSYN +OUT_OBJ = /Fo +LIBS= +ANTLR=..\bin\antlr +DLG=..\bin\dlg +OBJ_EXT = obj + +antlr.exe: 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 set.obj pred.obj dialog.obj + link386 @<< +$** /NOI +$@ /STACK:32768 + +$(LIBS: = +^ +) +$(DEF_FILE) $(LFLAGS) ; +<< + 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] +# +#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 + +#scan.c mode.h: parser.dlg +# $(DLG) -C2 parser.dlg scan.c + +set.$(OBJ_EXT): $(SET)\set.c + $(CC) $(CFLAGS) /C $(OUT_OBJ)set.$(OBJ_EXT) $(SET)\set.c + +# +# what files does PCCTS generate (both ANTLR and DLG) +# + +PCCTS_GEN=antlr.c scan.c err.c tokens.h mode.h parser.dlg stdpccts.h remap.h + +SRC=antlr.c scan.c err.c bits.c build.c fset2.c fset.c gen.c globals.c \ + hash.c lex.c main.c misc.c $(SET)\set.c pred.c dialog.c + +# +# ****** These next targets are common to UNIX and PC world ******** +# + +#clean up all the intermediate files +clean: + del *.$(OBJ_EXT) + +#remove everything in clean plus the PCCTS files generated +scrub: + del $(PCCTS_GEN) *.$(OBJ_EXT) + +----- cut here ----- + +To build DLG for the first time: + +Follow the same steps as were used to build ANTLR, changing the slashes and +commands, targets, and extensions for OS/2. Comment out the dependencies for +dlg_p.c and dlg_a.c to prevent nmake from trying to invoke ANTLR and DLG to +build DLG (unless you have 1.10 binaries). + +An example of the resulting makefile, with all the extra baggage for Unix, DOS, +and OS/2 1.X is shown here: + +----- cut here ----- + +# +# Makefile for DLG 1.20 +# Terence Parr +# Purdue University +# 1989-1993 +# +# Ported to IBM C-Set/2 and Microsoft 6.0 by +# Ed Harfmann +# Micro Data Base Systems +# Lafayette, Indiana +# - With updates by Steve Robenalt 4/94 +# +SET=..\support\set +PCCTS_H=..\h + +# +# C-Set/2 for OS/2 +# +CC=icc +CFLAGS= /I. /I$(SET) /I$(PCCTS_H) /Sa /W3 +OUT_OBJ = /Fo +LIBS= +ANTLR=..\bin\antlr +DLG=..\bin\dlg +OBJ_EXT=obj + +dlg.exe : dlg_p.obj dlg_a.obj main.obj err.obj set.obj support.obj \ + output.obj relabel.obj automata.obj + link386 @<< +$** /NOI +$@ /STACK:32768 + +$(LIBS: = +^ +) +$(DEF_FILE) $(LFLAGS) ; +<< + copy *.exe ..\bin + +SRC = dlg_p.c dlg_a.c main.c err.c $(SET)\set.c support.c output.c \ + relabel.c automata.c + +#dlg_p.c parser.dlg err.c tokens.h : dlg_p.g +# $(ANTLR) dlg_p.g + +#dlg_a.c mode.h : parser.dlg +# $(DLG) -C2 parser.dlg dlg_a.c + +dlg_p.$(OBJ_EXT) : dlg_p.c dlg.h tokens.h mode.h + $(CC) $(CFLAGS) /c dlg_p.c + +dlg_a.$(OBJ_EXT) : dlg_a.c dlg.h tokens.h mode.h + $(CC) $(CFLAGS) /c dlg_a.c + +main.$(OBJ_EXT) : main.c dlg.h + $(CC) $(CFLAGS) /c main.c + +set.$(OBJ_EXT) : $(SET)\set.c + $(CC) /c $(CFLAGS) $(SET)\set.c + +lint: + lint *.c + +#clean up all the intermediate files +clean: + del *.$(OBJ_EXT) + +----- cut here ----- + +Once you have built ANTLR and DLG successfully, you will also want to build +the genmk utility, located at ~\pccts\support\genmk. The makefile in this +directory is relatively simple to modify, so I won't repeat it here. + +At this point, you can test the executables by building one of the sample +programs, such as the Pascal or C example under ~pccts\lang. The prototype +makefile which is in these directories will work fine as a base, with OS/2 +specific modifications as noted above. Note that the /Sa flag defines the +ANSI C mode of the compiler which is not the default. The default mode +does not define __STDC__ and will lead to lots of errors. + +A sample pascal makefile is shown below: + +----- cut here ----- + +GRM =pascal.g +LEX_FILE =pscan.dlg +GSRC=pascal.c err.c pscan.c ttree.c adebug.c +GOBJ=pascal.obj err.obj pscan.obj ttree.obj adebug.obj + +PCCTS_GEN= pascal.c err.c $(LEX_FILE) pscan.c mode.h tokens.h + +SRC =$(GSRC) pmain.c sym.c +OBJ =$(GOBJ) pmain.obj sym.obj +INCL = ..\..\h +SYM = ..\..\support\sym +ANTLR = ..\..\bin\antlr +DLG = ..\..\bin\dlg + +CFLAGS=/I. /I$(INCL) /Sa +AFLAGS= -fl $(LEX_FILE) -gh + +pascal.exe : $(OBJ) + $(CC) $(CFLAGS) /Fopascal.exe $(OBJ) + +pascal.c $(LEX_FILE) : $(GRM) + $(ANTLR) $(AFLAGS) $(GRM) + +mode.h pscan.c : $(LEX_FILE) + $(DLG) -C2 $(LEX_FILE) pscan.c + +pmain.obj : pmain.c pascal.h + +pascal.obj : pascal.c mode.h tokens.h + +sym.obj : $(SYM)\sym.c + icc /c /Fo sym.obj $(CFLAGS) $(SYM)\sym.c + +err.obj : err.c + +clean: + del $(PCCTS_GEN) *.obj + + +----- cut here ----- + +The C example can be built in much the same way. + +If you have problems compiling anything, I would appreciate hearing about +it. I was able to get everything built and working without changing any +of the supplied or generated C code, so if you find that you need to make +changes to any code, I've probably written something up incorrectly. + +Please post comments to the mailing list for PCCTS at: + + pccts-users@ahpcrc.umn.edu + +since I am most likely to see them there. + +- Steve Robenalt + +