From e864bf235e9da4c4953b1fedaea446fc0664e831 Mon Sep 17 00:00:00 2001 From: dtrg Date: Sat, 4 Feb 2006 00:57:04 +0000 Subject: [PATCH] Split LLgen off to be self-contained, and not necessarily part of the ACK. Replaced its build system with one based on pm. Rewrote the README. Updated the license text to match the overriding license common to all the ACK. --- util/LLgen/.distr | 7 -- util/LLgen/COPYING | 47 +++++++----- util/LLgen/LLgen.1 | 139 --------------------------------- util/LLgen/Makefile | 49 ------------ util/LLgen/READ_ME | 103 ++++++++++++++++++++----- util/LLgen/bootstrap.sh | 16 ++++ util/LLgen/c.pm | 144 ++++++++++++++++++++++++++++++++++ util/LLgen/lib/.distr | 4 - util/LLgen/mkdistr.sh | 64 ++++++++++++++++ util/LLgen/pm | Bin 0 -> 81808 bytes util/LLgen/pmfile | 103 +++++++++++++++++++++++++ util/LLgen/proto.make | 52 ------------- util/LLgen/src/.distr | 25 ------ util/LLgen/src/Makefile | 102 ------------------------- util/LLgen/src/proto.make | 157 -------------------------------------- 15 files changed, 441 insertions(+), 571 deletions(-) delete mode 100644 util/LLgen/.distr delete mode 100644 util/LLgen/LLgen.1 delete mode 100644 util/LLgen/Makefile create mode 100755 util/LLgen/bootstrap.sh create mode 100644 util/LLgen/c.pm delete mode 100644 util/LLgen/lib/.distr create mode 100755 util/LLgen/mkdistr.sh create mode 100755 util/LLgen/pm create mode 100644 util/LLgen/pmfile delete mode 100644 util/LLgen/proto.make delete mode 100644 util/LLgen/src/.distr delete mode 100644 util/LLgen/src/Makefile delete mode 100644 util/LLgen/src/proto.make diff --git a/util/LLgen/.distr b/util/LLgen/.distr deleted file mode 100644 index 6b0b1d21d..000000000 --- a/util/LLgen/.distr +++ /dev/null @@ -1,7 +0,0 @@ -READ_ME -COPYING -lib -src -Makefile -proto.make -LLgen.1 diff --git a/util/LLgen/COPYING b/util/LLgen/COPYING index b45bcecc8..a27fd6332 100644 --- a/util/LLgen/COPYING +++ b/util/LLgen/COPYING @@ -1,19 +1,32 @@ -Copyright (c) 1991 by the Vrije Universiteit, Amsterdam, the Netherlands. - +Copyright (c) 1987, 1990, 1993, 2005 Vrije Universiteit, Amsterdam, The Netherlands. All rights reserved. -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of the Vrije Universiteit -not be used in advertising or publicity pertaining to distribution of -the software without specific, written prior permission. - -THE VRIJE UNIVERSITEIT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT -SHALL THE VRIJE UNIVERSITEIT BE LIABLE FOR ANY SPECIAL, INDIRECT OR -CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, -DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. +Redistribution and use of the Amsterdam Compiler Kit in source and +binary forms, with or without modification, are permitted provided +that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Vrije Universiteit nor the names of the + software authors or contributors may be used to endorse or + promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS, AUTHORS, AND +CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL VRIJE UNIVERSITEIT OR ANY AUTHORS OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/util/LLgen/LLgen.1 b/util/LLgen/LLgen.1 deleted file mode 100644 index 0436ffa30..000000000 --- a/util/LLgen/LLgen.1 +++ /dev/null @@ -1,139 +0,0 @@ -.\" $Id$ -.TH LLGEN 1 "$Revision$" -.ad -.SH NAME -LLgen, an extended LL(1) parser generator -.SH SYNOPSIS -LLgen [ \-vxwans ] [ \-j[\fInum\fP] ] [ \-l\fInum\fP ] [ \-h\fInum\fP ] file ... -.SH DESCRIPTION -\fILLgen\fP -converts a context-free grammar into a set of -functions which form a recursive descent parser with no backtrack. -The grammar may be ambiguous; -ambiguities can be broken by user specifications. -.PP -\fILLgen\fP -reads each -\fIfile\fP -in sequence. -Together, these files must constitute a context-free grammar. -For each file, -\fILLgen\fP -generates an output file, which must be compiled by the -C-compiler. -In addition, it generates the files -\fILpars.c\fP -and -\fILpars.h.\fP -\fILpars.h\fP -contains the -\fIdefine\fP -statements that associate the -\fILLgen\fP-assigned `token-codes' with user declared `token-names'. -This allows other source files, for instance the source file -containing the lexical analyzer, -to access the token-codes by -using the token-names. -\fILpars.c\fP -contains the error recovery routines and tables. It must also -be compiled by the C-compiler. When the generated parser uses non-correcting -error recovery ( -\fB\-n\fP -option) -\fILLgen\fP -also generates a file -\fILncor.c\fP -that contains the non-correcting recovery mechanism. -.PP -\fILLgen\fP -will only update those output files that differ from their previous -version. -This allows -\fILLgen\fP -to be used with -\fImake\fP -(1) convieniently. -.PP -To obtain a working program, the user must also supply a -lexical analyzer, as well as -\fImain\fP -and -\fILLmessage\fP, -an error reporting routine; -\fILex\fP -(1) is a useful program for creating lexical analysers usable -by -\fILLgen\fP. -.PP -\fILLgen\fP accepts the following flags: -.IP \fB\-v\fP -create a file called -\fILL.output\fP, -which contains a description of the conflicts that -were not resolved. -If the flag is given more than once, -\fILLgen\fP -will be more "verbose". -If it is given three times, a complete description of the -grammar will be supplied. -.IP \fB\-x\fP -the sets that are computed are extended with the nonterminal -symbols and these extended sets are also included in the -\fILL.output\fP -file. -.IP \fB\-w\fP -no warnings are given. -.IP \fB\-a\fP -Produce ANSI C function headers and prototypes. -.IP \fB\-n\fP -Produce a parser with non-correcting error recovery. -.IP \fB\-s\fP -Simulate the calling of all defined subparsers in all semantic actions. When -using non-correcting error recovery, subparsers that are called in semantic -actions may cause problems; this flag provides a `brute-force' solution. -.IP \fB\-j\fP[\fInum\fP] -when this flag is given, \fILLgen\fP will generate dense switches, -so that the compiler can generate a jump table for it. This will only be -done for switches that have density between -\fIlow_percentage\fP and \fIhigh_percentage\fP, as explained below. -Usually, compilers generate a jumptable when the density of the switch -is above a certain threshold. When jump tables are to be used more often, -\fIhigh_percentage\fP must be set to this threshold, and \fIlow_percentage\fP -must be set to a minimum threshold. There is a time-space trade-off here. -.I num -is the minimum number of cases in a switch for the \fB\-j\fP option to be -effective. The default value (if -.I num -is not given) is 8. -.IP \fB\-l\fP\fInum\fP -The \fIlow_percentage\fP, as described above. Default value is 10. -.IP \fB\-h\fP\fInum\fP -The \fIhigh_percentage\fP, as described above. Default value is 30. -.SH FILES -LL.output verbose output file -.br -Lpars.c the error recovery routines -.br -Lncor.c non-correcting error recovery mechanism -.br -Lpars.h defines for token names -.SH "SEE ALSO" -\fIlex\fP(1) -.br -\fImake\fP(1) -.br -\fILLgen, an Extended LL(1) Parser Generator\fP -by C.J.H. Jacobs. -.br -\fITop-down Non-Correcting Error Recovery in LLgen\fP -by A.W van Deudekom and P.J. Kooiman -.SH DIAGNOSTICS -Are intended to be self-explanatory. They are reported -on standard error. A more detailed report is found in the -\fILL.output\fP -file. -.SH AUTHOR -Ceriel J. H. Jacobs -.br -The non-correcting error recovery mechanism is written by -A.W van Deudekom and P.J. Kooiman. diff --git a/util/LLgen/Makefile b/util/LLgen/Makefile deleted file mode 100644 index 858da6425..000000000 --- a/util/LLgen/Makefile +++ /dev/null @@ -1,49 +0,0 @@ -# $Id$ -INSTALLDIR=/usr/local/bin -LIBDIR=/usr/local/lib/LLgen -MANDIR=/usr/local/man/man1 - -all: - cd src; make LIBDIR=$(LIBDIR) - -clean: - -cd src; make clean - -install: - cd src; make LIBDIR=$(LIBDIR) - rm -f $(INSTALLDIR)/LLgen $(LIBDIR)/rec $(LIBDIR)/incl $(MANDIR)/LLgen.1 - cp src/LLgen $(INSTALLDIR)/LLgen - cp lib/rec $(LIBDIR)/rec - cp lib/incl $(LIBDIR)/incl - cp lib/nc_rec $(LIBDIR)/nc_rec - cp lib/nc_incl $(LIBDIR)/nc_incl - cp LLgen.1 $(MANDIR)/LLgen.1 - -firstinstall: - cd src; make LIBDIR=$(LIBDIR) first - rm -f $(INSTALLDIR)/LLgen $(LIBDIR)/rec $(LIBDIR)/incl $(MANDIR)/LLgen.1 - cp src/LLgen $(INSTALLDIR)/LLgen - -mkdir $(LIBDIR) - cp lib/rec $(LIBDIR)/rec - cp lib/incl $(LIBDIR)/incl - cp lib/nc_rec $(LIBDIR)/nc_rec - cp lib/nc_incl $(LIBDIR)/nc_incl - cp LLgen.1 $(MANDIR)/LLgen.1 - -cmp: - cd src; make LIBDIR=$(LIBDIR) - -cmp src/LLgen $(INSTALLDIR)/LLgen - -cmp lib/rec $(LIBDIR)/rec - -cmp lib/incl $(LIBDIR)/incl - -cmp lib/nc_rec $(LIBDIR)/nc_rec - -cmp lib/nc_incl $(LIBDIR)/nc_incl - -cmp LLgen.1 $(MANDIR)/LLgen.1 - -distr: - cd src; make distr - -opr: - make pr | opr - -pr: - @cd src; make pr diff --git a/util/LLgen/READ_ME b/util/LLgen/READ_ME index 9fb868be4..19f909ab5 100644 --- a/util/LLgen/READ_ME +++ b/util/LLgen/READ_ME @@ -1,19 +1,84 @@ -$Id$ - -To install LLgen, proceed as follows: - -- create a directory to put the libraryfiles in, f.i. - /usr/local/lib/LLgen -- cd to the src directory -- adapt the file machdep.c, should be easy -- adapt the Makefile, changing the options to the C-compiler if - necessary. -- change back to this directory -- edit the Makefile. LIBDIR should be set to the directory for the - library files, INSTALLDIR should be set to the directory where LLgen - is to be put. -- now type - make firstinstall -- This should do all the work. - -LLgen.1 contains a man-page. + LLGEN V1.0 + ========== + + Copyright © 1991-2005 by the Vrije Universiteit, Amsterdam, the Netherlands. + 2006-02-03 + +INTRODUCTION +============ + +LLgen is a LL(1) parser in the style of yacc. It will generate an efficient +recursive descent parser for Extended Context-Free grammars, with an optional +non-correcting error recovery mechanism. + +For more information, see the white papers in the doc directory. (You may need +to build LLgen first to be able to read them.) + +INSTALLATION +============ + +LLgen depends on the following software: + + gcc: currently, LLgen only builds on gcc, due largely to the lack of any + non-gcc test systems. Please contact the support mailing list (see + below) if this is a problem. + + groff: used to build the documentation. + +LLgen uses Prime Mover as its build tool. To build, do: + + ./pm install + +This will compile LLgen and install it into /usr/local (which you must be able +to write to). If you want it installed elsewhere, use -D to change the PREFIX +variable: + + ./pm -DPREFIX="/home/dg/" install + +(If you do change the prefix, you must supply it whenever you invoke pm. And +there must be a trailing / in the path you give it.) + +Invoking ./pm by itself will compile it but not install it; look in the bin +directory for an image of + +USING LLGEN +=========== + +Please see the white papers in PREFIX/share/doc/LLgen, or the man page (called +LLgen). + +LLgen itself uses a parser compiled in LLgen, so you can study the files in +the src directory for examples. If you wish to modify LLgen's own parser, the +bootstrap.sh script will update LLgen's source from the parser *.g files. +LLgen itself may then be recompiled with pm in the usual way. (Although you +may want to keep a copy of a known good LLgen around in case you break +something!) + +SUPPORT +======= + +LLgen is part of the Amsterdam Compiler Kit (although standalone and +distributed seperately). For more details, please see: + + http://tack.sourceforge.net + +There is a mailing list available at: + + http://sourceforge.net/mail/?group_id=130811 + +LICENSE +======= + +LLgen is © 1991-2005 by the Vrije Universiteit and is distributed under a +license equivalent to the three-clause BSD license. See the COPYING file +for details. + +Prime Mover is © 2006 David Given and is distributed under the MIT license. +Do './pm --license' for details. + +----------------------------------------------------------------------------- +David Given +dg@cowlark.com +2006-02-04 + +/* $Id$ */ \ No newline at end of file diff --git a/util/LLgen/bootstrap.sh b/util/LLgen/bootstrap.sh new file mode 100755 index 000000000..6fcc3a815 --- /dev/null +++ b/util/LLgen/bootstrap.sh @@ -0,0 +1,16 @@ +#!/bin/sh +# $Id$ +# +# Script to rebuild LLgen's own parser with LLgen. + +set -e + +if ! (which LLgen > /dev/null); then + echo "You can only bootstrap the LLgen parser if you've already got" + echo "LLgen installed." +fi + +(cd src && LLgen -vvv -x tokens.g LLgen.g) + +echo "" +echo "You should now be able to rebuild LLgen with the new parser." diff --git a/util/LLgen/c.pm b/util/LLgen/c.pm new file mode 100644 index 000000000..638316ba8 --- /dev/null +++ b/util/LLgen/c.pm @@ -0,0 +1,144 @@ +-- This file is part of Prime Mover v0.1pre1. +-- (C) 2006 David Given +-- +-- pm includefile to compile *host* C programs. + +-- Standard Lua boilerplate. + +local io_open = io.open +local string_gsub = string.gsub +local string_gfind = string.gfind +local table_insert = table.insert +local table_getn = table.getn +local filetime = pm.filetime + +-- Define some variables. + +CC = "gcc %CBUILDFLAGS% %CDYNINCLUDES% %CINCLUDES% %CEXTRAFLAGS% -c -o %out% %in%" +CPROGRAM = "gcc %CBUILDFLAGS% %CLINKFLAGS% %CEXTRAFLAGS% -o %out% %in% %CLIBRARIES%" +CDEPENDS = "gcc %CBUILDFLAGS% %CDYNINCLUDES% %CINCLUDES% %CEXTRAFLAGS% -MM -MG -MF %out% %in%" +AR = "%RM% %out% && ar cr %out% %in%" + +CBUILDFLAGS = "-g -Os" +CINCLUDES = {} +CEXTRAFLAGS = "" +CLINKFLAGS = "" +CDYNINCLUDES = "" +CLIBRARIES = "" + +--- Manage C file dependencies ---------------------------------------------- + +local dependency_cache = {} +local function load_dependency_file(fn) + local o = dependency_cache[fn] + if o then + return o + end + + -- Read in the dependency file. + + local f = io_open(fn) + if not f then + print("failed to open "..fn) + return nil + end + f = f:read("*a") + + -- Massage the dependency file into a string containing one unescaped + -- filename per line. + + f = string_gsub(f, "^.*[^\\]: *", "") + f = string_gsub(f, "\\\r?\n", "") + f = string_gsub(f, "([^\\]) +", "%1\n") + f = string_gsub(f, "\\", "") + + -- Parse the string. + + o = {} + for l in string_gfind(f, "[^\n]+") do + table_insert(o, l) + end + + dependency_cache[fn] = o + return o +end + +-- This clause specialises 'simple' to add support for smart dependencies of C +-- files. + +simple_with_clike_dependencies = simple { + class = "simple_with_clike_dependencies", + makedepends = {"%CDEPENDS%"}, + + __init = function(self, p) + simple.__init(self, p) + + -- If we're a class, don't verify. + + if ((type(p) == "table") and p.class) then + return + end + + -- If dynamicheaders is an object, turn it into a singleton list. + + if self.dynamicheaders then + if (type(self.dynamicheaders) ~= "table") then + self:__error("doesn't know what to do with dynamicheaders, which ", + "should be a list or an object but was a ", type(self.dynamicheaders)) + end + if self.dynamicheaders.class then + self.dynamicheaders = {self.dynamicheaders} + end + end + end, + + __dependencies = function(self, inputs, outputs) + local obj = simple { + CDYNINCLUDES = self.CDYNINCLUDES, + command = self.makedepends, + outputs = {"%U%-%I%.d"}, + unpack(inputs) + } + local o = obj:__build() + local depends = load_dependency_file(o[1]) + if not depends then + self:__error("could not determine the dependencies for ", + pm.rendertable(inputs)) + end + return depends + end, + + __buildadditionalchildren = function(self) + self.CDYNINCLUDES = "" + if self.dynamicheaders then + for _, i in ipairs(self.dynamicheaders) do + local o = i:__build() + if o[1] then + self.CDYNINCLUDES = self.CDYNINCLUDES..' "-I'..string_gsub(o[1], "/[^/]*$", "")..'"' + end + end + end + end +} + +-- These are the publically useful clauses. + +cfile = simple_with_clike_dependencies { + class = "cfile", + command = {"%CC%"}, + outputs = {"%U%-%I%.o"}, +} + +cprogram = simple { + class = "cprogram", + command = {"%CPROGRAM%"}, + outputs = {"%U%-%I%"}, +} + +clibrary = simple { + class = "clibrary", + command = { + "%AR%" + }, + outputs = {"%U%-%I%.a"}, +} diff --git a/util/LLgen/lib/.distr b/util/LLgen/lib/.distr deleted file mode 100644 index 3384b4e48..000000000 --- a/util/LLgen/lib/.distr +++ /dev/null @@ -1,4 +0,0 @@ -incl -rec -nc_incl -nc_rec diff --git a/util/LLgen/mkdistr.sh b/util/LLgen/mkdistr.sh new file mode 100755 index 000000000..4c6e22861 --- /dev/null +++ b/util/LLgen/mkdistr.sh @@ -0,0 +1,64 @@ +#!/bin/sh +# $Id$ +# +# Script to build a distribution package. + +set -e + +if [ "$1" = "" ]; then + echo "Please specify a version number!" + exit 1 +fi + +if [ -d ../LLgen-$1 ]; then + echo "I think you've already generated version $1." + exit 1 +fi + +mkdir ../LLgen-$1 +cp -a --parents \ + pm \ + c.pm \ + pmfile \ + doc/LLgen.refs \ + doc/LLgen_NCER.n \ + doc/LLgen.1 \ + doc/LLgen.n \ + lib/rec \ + lib/incl \ + lib/nc_incl \ + lib/nc_rec \ + src/io.h \ + src/extern.h \ + src/reach.c \ + src/LLgen.c \ + src/LLgen.g \ + src/compute.c \ + src/savegram.c \ + src/global.c \ + src/gencode.c \ + src/main.c \ + src/name.c \ + src/types.h \ + src/sets.c \ + src/sets.h \ + src/tokens.c \ + src/tokens.g \ + src/Lpars.c \ + src/Lpars.h \ + src/cclass.c \ + src/cclass.h \ + src/alloc.c \ + src/check.c \ + src/machdep.c \ + mkdistr.sh \ + bootstrap.sh \ + COPYING \ + READ_ME \ +\ + ../LLgen-$1 + +(cd .. && tar cvf LLgen-$1.tar.bz2 --bzip2 LLgen-$1) + +echo "" +echo "Done --- but did you remember to update the version number in the README?" diff --git a/util/LLgen/pm b/util/LLgen/pm new file mode 100755 index 0000000000000000000000000000000000000000..b20d520d26b0f55c26379131fbebd06503a95101 GIT binary patch literal 81808 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 literal 0 HcmV?d00001 diff --git a/util/LLgen/pmfile b/util/LLgen/pmfile new file mode 100644 index 000000000..61f362bb8 --- /dev/null +++ b/util/LLgen/pmfile @@ -0,0 +1,103 @@ +-- $Id$ +-- +-- This is the build file used to compile LLgen. It should be run through +-- Prime Mover (copy supplied). See the READ_ME file for more information. + +include "c.pm" + +-- Where is LLgen going to be installed eventually? (Needs trailing slash.) + +PREFIX = PREFIX or "/usr/local/" + +-- Where's LLgen's staging area? (Don't change. Needs trailing slash.) + +INSTALLPATH = "bin/" + +LLgen = cprogram { + CEXTRAFLAGS = '-DLIBDIR=\\"'..PREFIX..'share/LLgen\\" -DNON_CORRECTING', + + cfile "src/main.c", + cfile "src/gencode.c", + cfile "src/compute.c", + cfile "src/check.c", + cfile "src/reach.c", + cfile "src/global.c", + cfile "src/name.c", + cfile "src/sets.c", + cfile "src/alloc.c", + cfile "src/machdep.c", + cfile "src/cclass.c", + cfile "src/savegram.c", + + -- These use pre-LLgen'd version of the files. If LLgen.g gets updated, + -- they need rebuilding. Use the bootstrap script to do this. + + cfile "src/LLgen.c", + cfile "src/Lpars.c", + cfile "src/tokens.c", + + outputs = {"%U%/LLgen"}, + install = pm.install( INSTALLPATH.."bin/LLgen") +} + +library = group { + install = { + pm.install("lib/rec", INSTALLPATH.."share/LLgen/rec"), + pm.install("lib/incl", INSTALLPATH.."share/LLgen/incl"), + pm.install("lib/nc_incl", INSTALLPATH.."share/LLgen/nc_incl"), + pm.install("lib/nc_rec", INSTALLPATH.."share/LLgen/nc_rec"), + } +} + +manpage = group { + install = { + pm.install("doc/LLgen.1", INSTALLPATH.."man/man1/LLgen.1"), + } +} + +documentation = group { + simple { + outputs = {"%U%-%I%.ps.gz"}, + command = "refer -sA+T -p %in[1]% %in[2]% | groff -Tps -e -t -ms ".. + "| gzip -c9 > %out[1]%", + + file "doc/LLgen.refs", + file "doc/LLgen.n", + + install = { + pm.install(INSTALLPATH.."share/doc/LLgen/LLgen.ps.gz") + } + }, + + simple { + outputs = {"%U%-%I%.ps.gz"}, + command = "groff -Tps -e -t -p -ms %in% | gzip -c9 > %out[1]%", + + file "doc/LLgen_NCER.n", + + install = { + pm.install(INSTALLPATH.."share/doc/LLgen/NCER.ps.gz") + } + }, +} + +-- Default rule: builds everything into the staging area, but does nothing +-- else. + +default = group { + LLgen, -- build LLgen itself + library, -- copy over the library + manpage, -- copy over the man page + documentation, -- build the two white papers +} + +-- This rule will build everything, and then install it to its final location. + +install = group { + default, + + install = { + "mkdir -p %PREFIX%", + "(cd bin && tar cf - .) | (cd %PREFIX% && tar xvf -)" + } +} diff --git a/util/LLgen/proto.make b/util/LLgen/proto.make deleted file mode 100644 index d7fa271d8..000000000 --- a/util/LLgen/proto.make +++ /dev/null @@ -1,52 +0,0 @@ -# $Id$ - -#PARAMS do not remove this line! - -INSTALLDIR=$(TARGET_HOME)/bin -LIBDIR=$(TARGET_HOME)/lib/LLgen - -all: - cd src; make LIBDIR=$(LIBDIR) - -clean: - -cd src; make clean - -install: - cd src; make LIBDIR=$(LIBDIR) - cp src/LLgen $(INSTALLDIR)/LLgen - if [ $(DO_MACHINE_INDEP) = y ] ; \ - then cp $(SRC_HOME)/util/LLgen/lib/rec $(LIBDIR)/rec ; \ - cp $(SRC_HOME)/util/LLgen/lib/incl $(LIBDIR)/incl ; \ - cp $(SRC_HOME)/util/LLgen/lib/nc_incl $(LIBDIR)/nc_incl ; \ - cp $(SRC_HOME)/util/LLgen/lib/nc_rec $(LIBDIR)/nc_rec ; \ - mk_manpage $(SRC_HOME)/util/LLgen/LLgen.1 $(TARGET_HOME) ; \ - fi - -firstinstall: - cd src; make LIBDIR=$(LIBDIR) first - cp src/LLgen $(INSTALLDIR)/LLgen - if [ $(DO_MACHINE_INDEP) = y ] ; \ - then if [ -d $(LIBDIR) ] ; then : ; else mkdir $(LIBDIR) ; fi ; \ - cp $(SRC_HOME)/util/LLgen/lib/rec $(LIBDIR)/rec ; \ - cp $(SRC_HOME)/util/LLgen/lib/incl $(LIBDIR)/incl ; \ - cp $(SRC_HOME)/util/LLgen/lib/nc_incl $(LIBDIR)/nc_incl ; \ - cp $(SRC_HOME)/util/LLgen/lib/nc_rec $(LIBDIR)/nc_rec ; \ - mk_manpage $(SRC_HOME)/util/LLgen/LLgen.1 $(TARGET_HOME) ; \ - fi - -cmp: - cd src; make LIBDIR=$(LIBDIR) - -cmp src/LLgen $(INSTALLDIR)/LLgen - -cmp $(SRC_HOME)/util/LLgen/lib/rec $(LIBDIR)/rec - -cmp $(SRC_HOME)/util/LLgen/lib/incl $(LIBDIR)/incl - -cmp $(SRC_HOME)/util/LLgen/lib/nc_rec $(LIBDIR)/nc_rec - -cmp $(SRC_HOME)/util/LLgen/lib/nc_incl $(LIBDIR)/nc_incl - -distr: - cd src; make distr - -opr: - make pr | opr - -pr: - @cd src; make pr diff --git a/util/LLgen/src/.distr b/util/LLgen/src/.distr deleted file mode 100644 index c9c1b9dfa..000000000 --- a/util/LLgen/src/.distr +++ /dev/null @@ -1,25 +0,0 @@ -cclass.c -cclass.h -LLgen.c.dist -LLgen.g -Lpars.c.dist -Lpars.h.dist -Makefile -proto.make -alloc.c -check.c -compute.c -extern.h -gencode.c -global.c -io.h -machdep.c -main.c -name.c -reach.c -sets.c -sets.h -tokens.c.dist -tokens.g -types.h -savegram.c diff --git a/util/LLgen/src/Makefile b/util/LLgen/src/Makefile deleted file mode 100644 index 6729c69be..000000000 --- a/util/LLgen/src/Makefile +++ /dev/null @@ -1,102 +0,0 @@ -# $Id$ -PROF= -LLOPT= # -vvv -x -INCLUDES = -DEFINES = -DNDEBUG -DNON_CORRECTING -CFLAGS=-O $(DEFINES) $(INCLUDES) $(PROF) -LDFLAGS= -OBJECTS = main.o gencode.o compute.o LLgen.o tokens.o check.o reach.o global.o name.o sets.o Lpars.o alloc.o machdep.o cclass.o savegram.o -CFILES = main.c gencode.c compute.c LLgen.c tokens.c check.c reach.c global.c name.c sets.c Lpars.c alloc.c machdep.c cclass.c savegram.c -FILES =types.h extern.h io.h sets.h tokens.g LLgen.g main.c name.c compute.c sets.c gencode.c global.c check.c reach.c alloc.c machdep.c Makefile cclass.c savegram.c -GFILES = tokens.g LLgen.g -LINT = lint -b $(DEFINES) -DNORCSID - -LIBDIRSTR = \"$(LIBDIR)\" - -all: parser - @make LLgen "LDFLAGS=$(LDFLAGS)" "CC=$(CC)" "CFLAGS=$(CFLAGS)" "PROF=$(PROF)" "LIBDIR=$(LIBDIR)" - -parser: $(GFILES) - LLgen $(LLOPT) $(GFILES) - @touch parser - -first: firstparser - @make LLgen "LDFLAGS=$(LDFLAGS)" "CC=$(CC)" "CFLAGS=$(CFLAGS)" "PROF=$(PROF)" "LIBDIR=$(LIBDIR)" - -firstparser: - cp LLgen.c.dist LLgen.c - cp tokens.c.dist tokens.c - cp Lpars.c.dist Lpars.c - cp Lpars.h.dist Lpars.h - @touch parser - -LLgen: $(OBJECTS) - $(CC) $(PROF) $(LDFLAGS) $(OBJECTS) -o LLgen - @size LLgen - -pr : - @pr $(FILES) ../lib/rec ../lib/incl Makefile - -lint: - $(LINT) $(INCLUDES) -DLIBDIR=$(LIBDIRSTR) $(CFILES) - -clean: - -rm -f *.o LL.temp LL.xxx LL.output LLgen LLgen.c tokens.c Lpars.[ch] parser - -distr: - -rm -f parser - make parser - cp Lpars.c Lpars.c.dist - cp Lpars.h Lpars.h.dist - cp LLgen.c LLgen.c.dist - cp tokens.c tokens.c.dist - -machdep.o: machdep.c - $(CC) -c $(CFLAGS) -DLIBDIR=$(LIBDIRSTR) machdep.c - -# The next lines are generated automatically -# AUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTO -LLgen.o: Lpars.h -LLgen.o: cclass.h -LLgen.o: extern.h -LLgen.o: io.h -LLgen.o: types.h -Lpars.o: Lpars.h -alloc.o: extern.h -alloc.o: types.h -cclass.o: cclass.h -check.o: extern.h -check.o: io.h -check.o: sets.h -check.o: types.h -compute.o: extern.h -compute.o: io.h -compute.o: sets.h -compute.o: types.h -gencode.o: cclass.h -gencode.o: extern.h -gencode.o: io.h -gencode.o: sets.h -gencode.o: types.h -global.o: extern.h -global.o: io.h -global.o: types.h -machdep.o: types.h -main.o: extern.h -main.o: io.h -main.o: sets.h -main.o: types.h -name.o: extern.h -name.o: io.h -name.o: types.h -reach.o: extern.h -reach.o: io.h -reach.o: types.h -sets.o: extern.h -sets.o: sets.h -sets.o: types.h -tokens.o: Lpars.h -tokens.o: cclass.h -tokens.o: extern.h -tokens.o: io.h -tokens.o: types.h diff --git a/util/LLgen/src/proto.make b/util/LLgen/src/proto.make deleted file mode 100644 index c28630bff..000000000 --- a/util/LLgen/src/proto.make +++ /dev/null @@ -1,157 +0,0 @@ -# $Id$ - -#PARAMS do not remove this line - -SRC_DIR = $(SRC_HOME)/util/LLgen/src -LIBDIR = $(TARGET_HOME)/lib/LLgen -INCLUDES = -I$(SRC_DIR) -I. -LIBDIRSTR = \"$(LIBDIR)\" -DEFINES = -DNDEBUG -DNON_CORRECTING -CFLAGS = $(DEFINES) $(INCLUDES) $(COPTIONS) -LDFLAGS=$(LDOPTIONS) -LINTFLAGS=$(LINTOPTIONS) $(DEFINES) $(INCLUDES) -DNORCSID - -LLOPT= # -vvv -x - -OBJECTS = main.$(SUF) gencode.$(SUF) compute.$(SUF) LLgen.$(SUF) tokens.$(SUF) \ - check.$(SUF) reach.$(SUF) global.$(SUF) name.$(SUF) sets.$(SUF) \ - Lpars.$(SUF) alloc.$(SUF) machdep.$(SUF) cclass.$(SUF) savegram.$(SUF) -CSRC = $(SRC_DIR)/main.c $(SRC_DIR)/gencode.c $(SRC_DIR)/compute.c \ - $(SRC_DIR)/check.c $(SRC_DIR)/reach.c $(SRC_DIR)/global.c \ - $(SRC_DIR)/name.c $(SRC_DIR)/sets.c $(SRC_DIR)/alloc.c \ - $(SRC_DIR)/machdep.c $(SRC_DIR)/cclass.c $(SRC_DIR)/savegram.c -CFILES = LLgen.c tokens.c Lpars.c $(CSRC) -GFILES = $(SRC_DIR)/tokens.g $(SRC_DIR)/LLgen.g -FILES = $(SRC_DIR)/types.h $(SRC_DIR)/extern.h \ - $(SRC_DIR)/io.h $(SRC_DIR)/sets.h \ - $(GFILES) $(CSRC) $(SRC_DIR)/proto.make - -all: parser - @make LLgen "LDFLAGS=$(LDFLAGS)" "CC=$(CC)" "CFLAGS=$(CFLAGS)" "LIBDIR=$(LIBDIR)" - -parser: $(GFILES) - LLgen $(LLOPT) $(GFILES) - @touch parser - -first: firstparser - @make LLgen "LDFLAGS=$(LDFLAGS)" "CC=$(CC)" "CFLAGS=$(CFLAGS)" "LIBDIR=$(LIBDIR)" - -firstparser: - cp $(SRC_DIR)/LLgen.c.dist LLgen.c - cp $(SRC_DIR)/tokens.c.dist tokens.c - cp $(SRC_DIR)/Lpars.c.dist Lpars.c - cp $(SRC_DIR)/Lpars.h.dist Lpars.h - @touch parser - -LLgen: $(OBJECTS) - $(CC) $(LDFLAGS) $(OBJECTS) $(TARGET_HOME)/modules/lib/libsystem.$(LIBSUF) -o LLgen - -pr : - @pr $(FILES) $(SRC_HOME)/util/LLgen/lib/rec $(SRC_HOME)/util/LLgen/lib/incl - -lint: parser - $(LINT) $(LINTFLAGS) -DLIBDIR=$(LIBDIRSTR) $(CFILES) - -clean: - -rm -f *.$(SUF) LL.temp LL.xxx LL.output LLgen LLgen.c tokens.c Lpars.[ch] parser - -distr: - -rm -f parser - make parser - cp Lpars.c $(SRC_DIR)/Lpars.c.dist - cp Lpars.h $(SRC_DIR)/Lpars.h.dist - cp LLgen.c $(SRC_DIR)/LLgen.c.dist - cp tokens.c $(SRC_DIR)/tokens.c.dist - -LLgen.$(SUF): LLgen.c - $(CC) -c $(CFLAGS) LLgen.c -LLgen.$(SUF): Lpars.h -LLgen.$(SUF): $(SRC_DIR)/cclass.h -LLgen.$(SUF): $(SRC_DIR)/extern.h -LLgen.$(SUF): $(SRC_DIR)/io.h -LLgen.$(SUF): $(SRC_DIR)/types.h - -Lpars.$(SUF): Lpars.c - $(CC) -c $(CFLAGS) Lpars.c -Lpars.$(SUF): Lpars.h - -alloc.$(SUF): $(SRC_DIR)/alloc.c - $(CC) -c $(CFLAGS) $(SRC_DIR)/alloc.c -alloc.$(SUF): $(SRC_DIR)/extern.h -alloc.$(SUF): $(SRC_DIR)/types.h - -cclass.$(SUF): $(SRC_DIR)/cclass.c - $(CC) -c $(CFLAGS) $(SRC_DIR)/cclass.c -cclass.$(SUF): $(SRC_DIR)/cclass.h - -check.$(SUF): $(SRC_DIR)/check.c - $(CC) -c $(CFLAGS) $(SRC_DIR)/check.c -check.$(SUF): $(SRC_DIR)/extern.h -check.$(SUF): $(SRC_DIR)/io.h -check.$(SUF): $(SRC_DIR)/sets.h -check.$(SUF): $(SRC_DIR)/types.h - -compute.$(SUF): $(SRC_DIR)/compute.c - $(CC) -c $(CFLAGS) $(SRC_DIR)/compute.c -compute.$(SUF): $(SRC_DIR)/extern.h -compute.$(SUF): $(SRC_DIR)/io.h -compute.$(SUF): $(SRC_DIR)/sets.h -compute.$(SUF): $(SRC_DIR)/types.h - -gencode.$(SUF): $(SRC_DIR)/gencode.c - $(CC) -c $(CFLAGS) $(SRC_DIR)/gencode.c -gencode.$(SUF): $(SRC_DIR)/cclass.h -gencode.$(SUF): $(SRC_DIR)/extern.h -gencode.$(SUF): $(SRC_DIR)/io.h -gencode.$(SUF): $(SRC_DIR)/sets.h -gencode.$(SUF): $(SRC_DIR)/types.h - -global.$(SUF): $(SRC_DIR)/global.c - $(CC) -c $(CFLAGS) $(SRC_DIR)/global.c -global.$(SUF): $(SRC_DIR)/extern.h -global.$(SUF): $(SRC_DIR)/io.h -global.$(SUF): $(SRC_DIR)/types.h - -machdep.$(SUF): $(SRC_DIR)/machdep.c - $(CC) -c $(CFLAGS) -DUSE_SYS -DLIBDIR=$(LIBDIRSTR) $(SRC_DIR)/machdep.c -machdep.$(SUF): $(SRC_DIR)/types.h - -main.$(SUF): $(SRC_DIR)/main.c - $(CC) -c $(CFLAGS) $(SRC_DIR)/main.c -main.$(SUF): $(SRC_DIR)/extern.h -main.$(SUF): $(SRC_DIR)/io.h -main.$(SUF): $(SRC_DIR)/sets.h -main.$(SUF): $(SRC_DIR)/types.h - -name.$(SUF): $(SRC_DIR)/name.c - $(CC) -c $(CFLAGS) $(SRC_DIR)/name.c -name.$(SUF): $(SRC_DIR)/extern.h -name.$(SUF): $(SRC_DIR)/io.h -name.$(SUF): $(SRC_DIR)/types.h - -reach.$(SUF): $(SRC_DIR)/reach.c - $(CC) -c $(CFLAGS) $(SRC_DIR)/reach.c -reach.$(SUF): $(SRC_DIR)/extern.h -reach.$(SUF): $(SRC_DIR)/io.h -reach.$(SUF): $(SRC_DIR)/types.h - -sets.$(SUF): $(SRC_DIR)/sets.c - $(CC) -c $(CFLAGS) $(SRC_DIR)/sets.c -sets.$(SUF): $(SRC_DIR)/extern.h -sets.$(SUF): $(SRC_DIR)/sets.h -sets.$(SUF): $(SRC_DIR)/types.h - -tokens.$(SUF): tokens.c - $(CC) -c $(CFLAGS) tokens.c -tokens.$(SUF): Lpars.h -tokens.$(SUF): $(SRC_DIR)/cclass.h -tokens.$(SUF): $(SRC_DIR)/extern.h -tokens.$(SUF): $(SRC_DIR)/io.h -tokens.$(SUF): $(SRC_DIR)/types.h - -savegram.$(SUF): $(SRC_DIR)/savegram.c - $(CC) -c $(CFLAGS) $(SRC_DIR)/savegram.c -savegram.$(SUF): $(SRC_DIR)/types.h -savegram.$(SUF): $(SRC_DIR)/extern.h -savegram.$(SUF): $(SRC_DIR)/io.h -savegram.$(SUF): $(SRC_DIR)/sets.h -- 2.34.1