summaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile384
1 files changed, 384 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..2bb47f6
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,384 @@
+# Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this software; see the file COPYING. If not, write to
+# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+# As a special exception, the Free Software Foundation gives permission
+# for additional uses of the text contained in its release of GUILE.
+#
+# The exception is that, if you link the GUILE library with other files
+# to produce an executable, this does not by itself cause the
+# resulting executable to be covered by the GNU General Public License.
+# Your use of that executable is in no way restricted on account of
+# linking the GUILE library code into it.
+#
+# This exception does not however invalidate any other reasons why
+# the executable file might be covered by the GNU General Public License.
+#
+# This exception applies only to the code released by the
+# Free Software Foundation under the name GUILE. If you copy
+# code from other Free Software Foundation releases into a copy of
+# GUILE, as the General Public License permits, the exception does
+# not apply to the code that you add in this way. To avoid misleading
+# anyone as to the status of such modified files, you must delete
+# this exception notice from them.
+#
+# If you write modifications of your own for GUILE, it is your choice
+# whether to permit this exception to apply to your modifications.
+# If you do not wish that, delete this exception notice.
+
+# "Makefile" for scm4e6 Scheme Interpreter
+# Author: Aubrey Jaffer
+
+SHELL = /bin/sh
+#CC =
+CFLAGS = #-g
+#LIBS =
+LD = $(CC) #-g
+
+# directory where COPYING and Init.scm reside.
+#IMPLPATH = /usr/local/src/scm/
+#this one is good for bootstrapping
+IMPLPATH = `pwd`/
+# Pathname where Init.scm resides.
+IMPLINIT = $(IMPLPATH)Init.scm
+DFLAG = -DIMPLINIT=\"$(IMPLINIT)\"
+
+# If pathname where Init.scm resides is not known in advance then
+# SCM_INIT_PATH is the environment variable whose value is the
+# pathname where Init.scm resides.
+
+intro:
+ @echo
+ @echo "This is scm$(VERSION). Read \"scm.info\" (from \"scm.texi\")"
+ @echo "to learn how to build and install SCM."
+ @echo "Here is a quick guide:"
+ @echo
+ @echo " From: bos@scrg.cs.tcd.ie"
+ @echo " Build and install scripts using GNU autoconf are"
+ @echo " available as scmconfig.tar.gz in the SCM distribution"
+ @echo " directories. See README.unix in scmconfig.tar.gz for"
+ @echo " further instructions."
+ @echo
+ @echo " Alternatively:"
+ @echo " make scmlit"
+ @echo
+ @echo " If you are on a non-unix system, create an empty file"
+ @echo " \"scmflags.h\". Then compile time.c, repl.c, scl.c,"
+ @echo " sys.c, eval.c, subr.c, unif.c, and rope.c. Then link"
+ @echo " them to create a \"scmlit\" executable."
+ @echo
+ @echo " Once you have built scmlit successfully, test it:"
+ @echo " make checklit"
+ @echo " If this reports no errors, use scmlit to build.scm"
+ @echo " fancier versions of scm, with optional features."
+
+ofiles = time.o repl.o scl.o sys.o eval.o subr.o unif.o rope.o \
+ continue.o findexec.o
+# ramap.o
+
+all: scmlit
+scmlit: $(ofiles) scm.o
+ $(LD) -o scmlit $(ofiles) scm.o $(LIBS)
+scm.o: scm.c scm.h scmfig.h patchlvl.h scmflags.h
+ $(CC) $(CFLAGS) -c $(DFLAG) scm.c
+scmflags.h: scmflags
+scmflags:
+ echo "#ifndef IMPLINIT" > scmflags.h
+ echo "#define IMPLINIT \"$(IMPLINIT)\"" >> scmflags.h
+ echo "#endif" >> scmflags.h
+
+.c.o:
+ $(CC) -c $(CFLAGS) $< -o $@
+scl.o: scl.c scm.h scmfig.h scmflags.h
+eval.o: eval.c scm.h scmfig.h scmflags.h setjump.h
+unif.o: unif.c scm.h scmfig.h scmflags.h
+#ramap.o: ramap.c scm.h scmfig.h scmflags.h
+repl.o: repl.c scm.h scmfig.h scmflags.h setjump.h
+sys.o: sys.c scm.h scmfig.h scmflags.h setjump.h
+time.o: time.c scm.h scmfig.h scmflags.h
+subr.o: subr.c scm.h scmfig.h scmflags.h
+rope.o: rope.c scm.h scmfig.h scmflags.h
+continue.o: continue.c continue.h setjump.h
+ $(CC) $(CFLAGS) -c continue.c
+
+srcdir=$(HOME)/scm/
+
+udscm:
+ $(srcdir)build.scm -hsystem -Fcautious bignums arrays inexact \
+ engineering-notation dump dynamic-linking -o udscm
+
+myscm: udscm $(ifiles)
+ ./udscm -o scm
+mylib:
+ $(srcdir)build.scm -hsystem -Fcautious bignums arrays inexact \
+ engineering-notation dump dynamic-linking -tlib
+pgscm:
+ $(srcdir)build.scm -hsystem -Fcautious bignums arrays inexact \
+ engineering-notation dump dynamic-linking -o udscm \
+ --compiler-options=-pg --linker-options=-pg
+ ./udscm -o pgscm
+mydebug:
+ $(srcdir)build.scm -hsystem -Fcautious bignums arrays inexact \
+ engineering-notation dump dynamic-linking debug -ogdbscm \
+ --compiler-options=-Wall --linker-options=-Wall
+mydlls:
+ $(srcdir)build.scm -h system -t dll -c sc2.c rgx.c crs.c edline.c \
+ record.c gsubr.c ioext.c posix.c unix.c socket.c \
+ ramap.c
+myturtle:
+ $(srcdir)build.scm -h system -F turtlegr -t dll
+
+checklit: r4rstest.scm
+ ./scmlit -fr4rstest.scm -e'(test-sc4)(test-cont)(test-delay)(gc)'
+check: r4rstest.scm
+ ./scm -fr4rstest.scm -e'(test-sc4)(test-cont)(test-delay)(gc)'
+bench:
+ echo `whoami`@`hostname` testing scm >> BenchLog
+ echo on `date` >> BenchLog
+ ls -l scm >> BenchLog
+ size scm >> BenchLog
+ uname -a >> BenchLog
+ ./scm -lbench.scm
+ cat bench.log >> BenchLog
+ echo >> BenchLog
+ echo
+ tail -20 BenchLog
+benchlit:
+ echo `whoami`@`hostname` testing scmlit >> BenchLog
+ echo on `date` >> BenchLog
+ ls -l scmlit >> BenchLog
+ size scmlit >> BenchLog
+ uname -a >> BenchLog
+ ./scmlit -lbench.scm
+ cat bench.log >> BenchLog
+ echo >> BenchLog
+ echo
+ tail -20 BenchLog
+
+dvidir=../dvi/
+dvi: $(dvidir)scm.dvi
+$(dvidir)scm.dvi: $(srcdir)scm.texi $(dvidir)scm.fn Makefile
+# cd $(dvidir);texi2dvi $(srcdir)scm.texi
+ -(cd $(dvidir);export set TEXINPUTS=$(srcdir):$$TEXINPUTS;texindex scm.??)
+ cd $(dvidir);export set TEXINPUTS=$(srcdir):$$TEXINPUTS;tex $(srcdir)scm.texi
+$(dvidir)scm.fn:
+ cd $(dvidir);tex $(srcdir)scm.texi
+xdvi: $(dvidir)scm.dvi
+ xdvi -s 3 $(dvidir)scm.dvi
+htmldir=../public_html/
+html: $(htmldir)scm_toc.html
+$(htmldir)scm_toc.html: $(srcdir)scm.texi
+ cd $(htmldir);make scm_toc.html
+
+################ INSTALL DEFINITIONS ################
+
+prefix = /usr/local/
+exec_prefix = $(prefix)/
+# directory where `make install' will put executable.
+bindir = $(exec_prefix)bin/
+libdir = $(exec_prefix)lib/
+# directory where `make install' will put manual page.
+man1dir = $(prefix)man/man1/
+infodir = $(prefix)info/
+includedir = $(prefix)include/
+
+info: $(infodir)/scm.info
+$(infodir)/scm.info: scm.texi
+ makeinfo scm.texi -o $(infodir)/scm.info
+
+infoz: $(infodir)/scm.info.gz
+$(infodir)/scm.info.gz: $(infodir)/scm.info
+ -rm $(infodir)/scm.info*.gz
+ gzip $(infodir)/scm.info*
+
+install: scm.1
+ test -d $(bindir) || mkdir $(bindir)
+ test -d $(man1dir) || mkdir $(man1dir)
+ -cp scm $(bindir)
+ -strip $(bindir)scm
+ -cp scm.1 $(man1dir)
+ test -d $(IMPLPATH) || mkdir $(IMPLPATH)
+ -cp Init.scm $(IMPLPATH)
+ -cp Link.scm $(IMPLPATH)
+ -cp Transcen.scm $(IMPLPATH)
+ -cp COPYING $(IMPLPATH)
+
+installlib:
+ test -d $(includedir) || mkdir $(includedir)
+ cp scm.h $(includedir)scm.h
+ cp scmfig.h $(includedir)scmfig.h
+ test -d $(libdir) || mkdir $(libdir)
+ cp libscm.a $(libdir)libscm.a
+
+uninstall:
+ -rm $(bindir)scm
+ -rm $(man1dir)scm.1
+ -rm $(includedir)scm.h
+ -rm $(includedir)scmfig.h
+ -rm $(libdir)libscm.a
+# -rm $(IMPLPATH)Init.scm
+# -cp $(IMPLPATH)Link.scm
+# -rm $(IMPLPATH)Transcen.scm
+# -rm $(IMPLPATH)COPYING
+
+scm.doc: scm.1
+ nroff -man $< | ul -tunknown >$@
+
+#### Stuff for maintaining SCM below ####
+
+VERSION = 4e6
+ver = $(VERSION)
+RM_R = rm -rf
+cfiles = scm.c time.c repl.c ioext.c scl.c sys.c eval.c subr.c sc2.c \
+ unif.c rgx.c crs.c dynl.c record.c posix.c socket.c unix.c \
+ rope.c ramap.c gsubr.c edline.c Iedline.scm continue.c \
+ findexec.c
+ufiles = pre-crt0.c ecrt0.c gmalloc.c unexec.c unexelf.c
+confiles = scmconfig.h.in mkinstalldirs acconfig-1.5.h install-sh \
+ configure configure.in Makefile.in COPYING README.unix
+
+hfiles = scm.h scmfig.h setjump.h patchlvl.h continue.h
+ifiles = Init.scm Transcen.scm Link.scm
+tfiles = r4rstest.scm example.scm pi.scm pi.c split.scm bench.scm
+dfiles = ANNOUNCE README COPYING scm.1 scm.doc QUICKREF \
+ scm.texi ChangeLog
+mfiles = Makefile build.scm build.bat
+vfiles = setjump.mar setjump.s
+afiles = $(dfiles) $(cfiles) $(hfiles) $(ifiles) $(tfiles) $(mfiles) \
+ $(vfiles) $(ufiles)
+
+makedev = make -f $(HOME)/makefile.dev
+CHPAT=$(HOME)/bin/chpat
+dest = $(HOME)/dist/
+temp/scm: $(afiles)
+ -$(RM_R) temp
+ mkdir temp
+ mkdir temp/scm
+ ln $(afiles) temp/scm
+
+dist: $(dest)scm$(VERSION).tar.gz
+$(dest)scm$(VERSION).tar.gz: temp/scm
+ $(makedev) DEST=$(dest) PROD=scm ver=$(VERSION) tar.gz
+shar: scm.shar
+scm.shar: temp/scm
+ $(makedev) PROD=scm shar
+dclshar: scm.com
+com: scm.com
+scm.com: temp/scm
+ $(makedev) PROD=scm com
+zip: scm.zip
+scm.zip: temp/scm
+ $(makedev) PROD=scm zip
+distzip: scm$(VERSION).zip
+scm$(VERSION).zip: temp/scm turtle turtlegr.c grtest.scm require.scm
+ $(makedev) DEST=$(dest) PROD=scm ver=$(VERSION) zip
+ cd ..; zip -9ur $(dest)scm$(VERSION).zip \
+ scm/turtle scm/turtlegr.c scm/grtest.scm scm/require.scm
+ mv $(dest)scm$(VERSION).zip /c/scm/dist/
+pubzip: temp/scm
+ $(makedev) DEST=$(HOME)/pub/ PROD=scm zip
+
+diffs: pubdiffs
+pubdiffs: temp/scm
+ $(makedev) DEST=$(HOME)/pub/ PROD=scm pubdiffs
+distdiffs: temp/scm
+ $(makedev) DEST=$(dest) PROD=scm ver=$(ver) distdiffs
+
+
+HOBBITVERSION = 4d
+hobfiles = README.hob hobbit.doc hobbit.tms hobbit.scm scmhob.h
+
+hobtemp/scm: $(hobfiles)
+ -$(RM_R) hobtemp
+ mkdir hobtemp
+ mkdir hobtemp/scm
+ ln $(hobfiles) hobtemp/scm
+
+hobdist: $(dest)hobbit$(HOBBITVERSION).tar.gz
+$(dest)hobbit$(HOBBITVERSION).tar.gz: hobtemp/scm
+ $(makedev) DEST=$(dest) PROD=scm ver=-hob$(HOBBITVERSION) \
+ tar.gz TEMP=hobtemp/
+ mv $(dest)scm-hob$(HOBBITVERSION).tar.gz \
+ $(dest)hobbit$(HOBBITVERSION).tar.gz
+hobbit$(HOBBITVERSION).zip: hobtemp/scm
+ $(makedev) TEMP=hobtemp/ name=hobbit$(HOBBITVERSION) PROD=scm zip
+
+new:
+ $(CHPAT) scm$(VERSION) scm$(ver) ANNOUNCE ../jacal/ANNOUNCE \
+ ../wb/README ../wb/ANNOUNCE \
+ ../public_html/README.html ../dist/README \
+ ../public_html/SLIB.html ../public_html/JACAL.html \
+ ../public_html/SCM.html ../public_html/Hobbit.html \
+ /c/scm/dist/install.bat /c/scm/dist/makefile \
+ /c/scm/dist/mkdisk.bat
+ $(CHPAT) $(VERSION) $(ver) README scm.texi patchlvl.h \
+ Init.scm ../public_html/SCM.html Makefile
+
+configtemp/scm: $(confiles)
+ -$(RM_R) configtemp/scm
+ -mkdir configtemp
+ mkdir configtemp/scm
+ ln $(confiles) configtemp/scm
+confdist: scmconfig.tar.gz
+scmconfig.tar.gz: configtemp/scm
+ cd configtemp; tar cohf ../scmconfig.tar scm
+ chmod 664 scmconfig.tar
+ -rm -f scmconfig.tar.*z
+ gzip scmconfig.tar
+ chmod 664 scmconfig.tar.*z
+
+lint: lints
+lints: $(cfiles) $(hfiles)
+ lint $(CPPFLAGS) $(ALL_CFLAGS) $(cfiles) | tee lints
+# lint $(CPPFLAGS) $(ALL_CFLAGS) $(cfiles) | tee lintes
+
+#seds to help find names not unique in first 8 characters (name8s)
+# for BSD nm format
+SED_TO_STRIP_NM=sed -e '/.*\.o$$/d' -e 's/.* _//' -e 's/.* T //'
+#old, bad for T [^_] on suns: SED_TO_STRIP_NM=sed -e '/.*\.o$$/d' -e 's/.* _//'
+# For a System V nm where plain C identifiers have _ prepended:
+#SED_TO_STRIP_NM=sed -e '/^_[A-Za-z][A-za-z0-9_]*[ |].*|extern|!d' -e 's/|/ /g' -e 's/^_//'
+# For a System V nm where plain C identifiers have nothing prepended:
+#SED_TO_STRIP_NM=sed -e '/^[A-Za-z][A-za-z0-9_]*[ |].*|extern|!d' -e 's/|/ /g'
+
+name8: name8s
+name8s: scm
+ nm scm |\
+ $(SED_TO_STRIP_NM) |\
+ sort -u|\
+ awk '{ if (substr(l,1,8)==substr($$1,1,8)) {\
+ if (p) print l;\
+ print $$1;p=0;stat=1\
+ }else p=1;\
+ l=$$1\
+ }END{exit stat}' -
+ctags: $(hfiles) $(cfiles)
+ etags $(hfiles) $(cfiles)
+TAGS:
+tags: $(hfiles) $(cfiles) $(ifiles) $(vfiles) $(ufiles)\
+ hobbit.scm scm.texi README build.scm # $(mfiles) ChangeLog
+ etags $(hfiles) $(cfiles) $(ifiles) $(vfiles) $(ufiles)\
+ hobbit.scm scm.texi README build.scm # $(mfiles) ChangeLog
+mostlyclean:
+clean:
+ -rm -f *~ *.bak *.orig *.rej core a.out ramap.o $(ofiles) scm.o \
+ lints tmp* \#* *\#
+ -$(RM_R) *temp
+distclean: clean
+ -rm -f $(EXECFILES) *.o a.out TAGS
+realclean: distclean
+ -rm -f scm.doc
+realempty: temp/scm
+ -rm -f $(afiles)