diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..b22bd4e --- /dev/null +++ b/Makefile @@ -0,0 +1,834 @@ +# Generated automatically from Makefile.in by configure. +# Scheme 48 Makefile +# Documentation in files INSTALL and doc/install.txt + +SHELL = /bin/sh + +### Filled in by `configure' ### +srcdir = . +CC = gcc +DEFS = -DHAVE_CONFIG_H +LIBS = -lm +CFLAGS = -g -O2 +CPPFLAGS= -I$(srcdir)/cig -I$(srcdir)/scsh/regexp +INSTALL = /usr/local/bin/install -c +INSTALL_PROGRAM = ${INSTALL} -c +INSTALL_DATA = ${INSTALL} -m 644 -c + +LDFLAGS = -g +LIBOBJS = + +RM = rm -f + +AR = ar cq +RANLIB = ranlib + + +prefix = /home/ai/marting/ +exec_prefix = ${prefix} +### End of `configure' section### + +bindir = $(exec_prefix)/bin +libdir = $(exec_prefix)/lib +incdir = $(exec_prefix)/include +manext = 1 +mandir = $(prefix)/man/man$(manext) + +# HP 9000 series, if you don't have gcc +# CC = cc +# CFLAGS = -Aa -O +Obb1800 +# DEFS = -D_HPUX_SOURCE -Dhpux + +# Ultrix +# LDFLAGS = -N + +.c.o: + $(CC) -c $(CPPFLAGS) $(DEFS) -I$(srcdir)/c $(CFLAGS) -o $@ $< + +# You might want to change RUNNABLE to "s48" +RUNNABLE = ~/bin/s4853 +MANPAGE = $(RUNNABLE).$(manext) +LIB = $(libdir)/$(RUNNABLE) + +distdir = /tmp + +# If make barfs on this include line, just comment it out. It's only +# really needed if you want to build the linker or rebuild initial.image. +include $(srcdir)/build/filenames.make +# +#NetBSD make wants to see this instead: +#.include "$(srcdir)/build/filenames.make" + + +# Static linker: +# +# You only need the linker if you're going to make changes to the +# things that go into the initial.image, which in general means the +# files in rts/. If you decide you need to use the linker, then you +# gots your choice; it can run in just about any version of Scheme 48 +# or Pseudoscheme. (It has also been made to run in Scheme->C.) It +# doesn't matter a whole lot which Scheme you use as long as it's not +# broken or unavailable. The two best choices are: +# 1. As below: build the linker on the scheme48vm and scheme48.image +# that are in the current directory. +# 2. LINKER_VM = $(RUNNABLE) $(BIG_HEAP) +# LINKER_RUNNABLE = $(RUNNABLE) +# These settings requires you to already have a $(RUNNABLE) +# command. This is desirable if you are making changes to the +# system that might break scheme48vm and/or scheme48.image. But it +# requires you to have squirreled away a previous working version +# of scheme48. + +BIG_HEAP = -h 5000000 +LINKER_VM = ./$(VM) $(BIG_HEAP) +LINKER_RUNNABLE = $(LINKER_VM) -i $(IMAGE) +LINKER_IMAGE = build/linker.image +LINKER = $(LINKER_VM) -i $(LINKER_IMAGE) +START_LINKER = echo ',batch' && echo ',bench on' + +# -------------------- +# You shouldn't have to change anything below this point, except for possibly +# the external code rules. + +# Targets: + +IMAGE = scheme48.image +INITIAL = build/initial.image +#JMG: renamed the vm +#JMG: we need cig at the moment +VM = scsh06vm +LIBCIG = cig/lib$(VM).a +CIG = cig/cig +CIGOBJS = cig/libcig.o cig/libcig1.o + +#JMG: the scsh-lib +LIBSCSH = scsh/lib$(VM).a +SCSHVMHACKS = proc2.o + +#JMG: and it's object files +SCSHOBJS = \ + scsh/dirstuff1.o \ + scsh/flock.o scsh/flock1.o \ + scsh/machine/stdio_dep.o \ + scsh/machine/time_dep1.o \ + scsh/machine/signals1.o \ + scsh/machine/libansi.o \ + scsh/network.o scsh/network1.o \ + scsh/putenv.o \ + scsh/re.o scsh/re1.o \ + scsh/regexp/regexp.o \ + scsh/regexp/regsub.o \ + scsh/select.o scsh/select1.o \ + scsh/sleep1.o \ + scsh/syscalls.o scsh/syscalls1.o \ + scsh/time.o scsh/time1.o \ + scsh/tty.o scsh/tty1.o \ + scsh/userinfo1.o \ + scsh/rdelim.o \ + scsh/fdports1.o \ + scsh/sighandlers1.o scsh/sighandlers.o + +UNIX_OBJS = c/unix/misc.o c/unix/io.o c/unix/fd-io.o c/unix/event.o +OBJS = c/scheme48vm.o c/scheme48heap.o c/extension.o c/external.o +FAKEHS = c/fake/dlfcn.h c/fake/sigact.h c/fake/strerror.h \ + c/fake/sys-select.h + +# Sources: + +CONFIG_FILES = scheme/interfaces.scm scheme/low-packages.scm \ + scheme/rts-packages.scm scheme/comp-packages.scm + +# Rules: + +# The following is the first rule and therefore the "make" command's +# default target. +enough: $(VM) $(IMAGE) go $(LIBCIG) scsh $(LIBSCSH) +#JMG: no manpages at the moment $(MANPAGE) +#JMG no notify at the moment... .notify + +# -------------------- +# External code to include in the VM +# After changing any of these you should delete `scheme48vm' and remake it. + +EXTERNAL_OBJECTS = $(SOCKET_OBJECTS) $(LOOKUP_OBJECTS) +EXTERNAL_FLAGS = $(SOCKET_FLAGS) +EXTERNAL_INITIALIZERS = $(SOCKET_INITIALIZERS) $(LOOKUP_INITIALIZERS) + +# Rules for any external code. + +# Socket rules + +c/unix/socket.o: c/scheme48.h c/fd-io.h c/event.h + +SOCKET_OBJECTS = c/unix/socket.o +SOCKET_LD_FLAGS = +SOCKET_INITIALIZERS = s48_init_socket + +# End of socket rules + +# Lookup rules (this is just for compatibility with old code) + +c/unix/dynamo.o: c/scheme48.h + +LOOKUP_OBJECTS = c/unix/dynamo.o +LOOKUP_INITIALIZERS = s48_init_external_lookup + +# End of lookup rules +# End of external rules +# -------------------- + +# The developers are curious to know. Don't be concerned if this fails. +.notify: build/minor-version-number + touch .notify + -echo Another 0.`cat $(srcdir)/build/minor-version-number` \ + installation. \ + | mail scheme-48-notifications@martigny.ai.mit.edu + +JMG: scsh stuff +# This says how to process .scm files with cig to make .c stubs. +.SUFFIXES: .scm +.scm.c: + $(srcdir)/$(VM) -o $(srcdir)/$(VM) -i $(CIG) < $< > $*.c + +# These .h files mediate between the code exported from foo1.c +# and imported into foo.scm's stub foo.c. + +scsh/dirstuff1.o: scsh/dirstuff1.h +scsh/rdelim.o: scsh/fdports1.h +scsh/userinfo1.o: scsh/userinfo1.h +scsh/fdports1.o scsh/fdports.o: scsh/fdports1.h +scsh/flock1.o scsh/flock.o: scsh/flock1.h +scsh/network1.o scsh/network.o: scsh/network1.h +scsh/re1.o scsh/re.o: scsh/re1.h +scsh/select1.o scsh/select.o: scsh/select1.h +scsh/syscalls1.o scsh/syscalls.o: scsh/syscalls1.h +scsh/time1.o scsh/time.o: scsh/time1.h +scsh/tty1.o scsh/tty.o: scsh/tty1.h + +scsh/syscalls.o: scsh/syscalls1.h scsh/dirstuff1.h scsh/fdports1.h \ + scsh/select1.h scsh/userinfo1.h + +scsh/sighandlers1.o scsh/sighandlers.o: scsh/sighandlers1.h + +include $(srcdir)/scsh/machine/Makefile.inc +# Berkeley make wants to see this instead: (or use GNU make on BSD. -bri) +#.include "$(srcdir)/scsh/machine/Makefile.inc" + +$(VM): c/main.o $(OBJS) $(UNIX_OBJS) $(LIBOBJS) $(EXTERNAL_OBJECTS) + rm -f /tmp/s48_external_$$$$.c && \ + build/build-external-modules /tmp/s48_external_$$$$.c \ + $(EXTERNAL_INITIALIZERS) && \ + $(CC) $(LDFLAGS) $(CFLAGS) -o $@ c/main.o $(OBJS) $(UNIX_OBJS) \ + /tmp/s48_external_$$$$.c \ + $(LIBOBJS) $(LIBS) \ + $(EXTERNAL_OBJECTS) $(EXTERNAL_LD_FLAGS) && \ + rm -f /tmp/s48_external_$$$$.c + +#JMG: again cig and scsh-lib +$(LIBCIG): c/main.o $(OBJS) +# $(CC) -r -o $@ main.o $(OBJS) + $(RM) $@ + $(AR) $@ c/main.o $(OBJS) + $(RANLIB) $@ + +$(LIBSCSH): smain.o $(OBJS) + $(RM) $@ + $(AR) $@ smain.o $(OBJS) + $(RANLIB) $@ + +c/main.o: c/main.c c/scheme48vm.h c/scheme48heap.h + $(CC) -c $(CFLAGS) -o $@ \ + -DDEFAULT_IMAGE_NAME=\"$(LIB)/$(IMAGE)\" \ + $(CPPFLAGS) $(DEFS) c/main.c + +c/scheme48vm.o: c/prescheme.h c/scheme48vm.h c/scheme48heap.h c/event.h \ + c/io.h c/fd-io.h c/scheme48vm-prelude.h +c/scheme48heap.o: c/prescheme.h c/scheme48vm.h c/scheme48heap.h c/event.h \ + c/io.h c/fd-io.h +c/extension.o: c/sysdep.h $(FAKEHS) c/scheme48.h c/scheme48vm.h +c/external.o: c/sysdep.h $(FAKEHS) c/scheme48.h +c/unix/event.o: c/sysdep.h $(FAKEHS) c/scheme48vm.h c/scheme48heap.h \ + c/event.h c/fd-io.h +c/unix/fd-io.o: c/sysdep.h $(FAKEHS) c/scheme48vm.h c/scheme48heap.h \ + c/event.h c/fd-io.h +c/unix/misc.o: c/sysdep.h $(FAKEHS) +c/unix/io.o: c/io.h +c/fake/libdl1.o: c/fake/dlfcn.h +c/fake/libdl2.o: c/fake/dlfcn.h +c/fake/strerror.o: c/fake/strerror.h + +# -------------------- +# Make scheme48.image from initial.image and library .scm files. +# +# For bootstrap reasons, initial.image is *not* listed as a source, +# even though it really is. + +$(IMAGE): $(VM) scheme/env/init-defpackage.scm scheme/more-interfaces.scm \ + scheme/link-packages.scm scheme/more-packages.scm \ + $(usual-files) build/initial.debug build/build-usual-image + build/build-usual-image . "`pwd`/scheme" '$(IMAGE)' './$(VM)' \ + '$(INITIAL)' + +### Fake targets: all clean install man dist + +install: enough dirs inst-script inst-vm inst-misc inst-man inst-inc install-cig \ + inst-image + +inst-vm: + $(INSTALL_PROGRAM) $(VM) $(LIB) + +inst-image: + rm -f '/tmp/$(IMAGE)' && \ + build/build-usual-image . '$(LIB)' '/tmp/$(IMAGE)' './$(VM)' \ + '$(INITIAL)' && \ + $(INSTALL_DATA) /tmp/$(IMAGE) $(LIB) && \ + rm /tmp/$(IMAGE) + +inst-man: + if [ -d $(mandir) -a -w $(mandir) ]; then \ + sed 's=LBIN=$(bindir)=g' doc/scheme48.man | \ + sed 's=LLIB=$(LIB)=g' | \ + sed 's=LS48=$(RUNNABLE)=g' >$(MANPAGE) && \ + $(INSTALL_DATA) $(MANPAGE) $(mandir) && \ + rm $(MANPAGE); \ + else \ + echo "$(mandir) not writable dir, not installing man page" \ + >&2; \ + fi + +inst-inc: + $(INSTALL_DATA) c/scheme48.h $(incdir) + +inst-misc: + for stub in env big opt misc link; do \ + for f in scheme/$$stub/*.scm; do \ + $(INSTALL_DATA) $$f $(LIB)/$$stub || exit 1; \ + done; \ + done && \ + for f in scheme/rts/*num.scm scheme/rts/jar-defrecord.scm; do \ + $(INSTALL_DATA) $$f $(LIB)/rts || exit 1; \ + done + +inst-script: + script=$(bindir)/$(RUNNABLE) && \ + echo '#!/bin/sh' >$$script && \ + echo >>$$script && \ + echo 'lib=$(LIB)' >>$$script && \ + echo 'exec $$lib/$(VM) -o $$lib/$(VM) -i $$lib/$(IMAGE) "$$@"' \ + >>$$script && \ + chmod +x $$script + +# Script to run scheme48 in this directory. +go: + echo '#!/bin/sh' >$@ && \ + echo >>$@ && \ + echo "lib=`pwd`" >>$@ && \ + echo 'exec $$lib/$(VM) -o $$lib/$(VM) -i $$lib/$(IMAGE) "$$@"' \ + >>$@ && \ + chmod +x $@ + +dirs: + for dir in $(libdir) $(bindir) $(incdir); do \ + [ -d $$dir -a -w $$dir ] || { \ + echo "$$dir not a writable directory" >&2; \ + exit 1; \ + }; \ + done + { mkdir -p $(LIB) && [ -w $(LIB) ]; } || { \ + echo "$(LIB) not a writable directory" >&2; \ + exit 1; \ + } + for dir in rts env big opt misc link; do \ + { mkdir -p $(LIB)/$$dir && [ -w $(LIB)/$$dir ]; } || { \ + echo "$(LIB)/$$dir not a writable directory" >&2; \ + exit 1; \ + }; \ + done + +configure: configure.in + autoheader && autoconf +#JMG: clean cig and the scsh too +clean: clean-cig clean-scsh + -rm -f $(VM) *.o c/unix/*.o c/*.o c/fake/*.o \ + TAGS $(IMAGE) \ + build/*.tmp $(MANPAGE) build/linker.image \ + scheme/debug/*.image scheme/debug/*.debug config.cache \ + scheme/vm/scheme48vm.c scheme/vm/scheme48heap.c \ + go $(distname) +clean-cig: + -rm -f cig/*.o $(CIG) $(CIG).image $(LIBCIG) + +distclean: clean + rm -f Makefile config.log config.status c/sysdep.h + +check: $(VM) $(IMAGE) scheme/debug/check.scm + ( \ + echo ',batch'; \ + echo ',translate =scheme48 scheme'; \ + echo ',config ,load scheme/debug/test.scm'; \ + echo ',exec ,load scheme/debug/check.scm'; \ + echo ',exec (done)' \ + ) | ./$(VM) -i $(IMAGE) + +# -------------------- +# Rules from here on down are not essential for the basic installation +# procedure, and are not expected to work when srcdir is not the +# distribution directory. + +all: vm linker + $(MAKE) image +vm: $(VM) +linker: $(LINKER_IMAGE) +image: $(INITIAL) + $(MAKE) $(IMAGE) + +tags: + etags scsh/*.scm scsh/*.c \ + scheme/vm/arch.scm scheme/rts/*.scm scheme/bcomp/*.scm \ + scheme/*.scm scheme/env/*.scm scheme/big/*.scm scheme/link/*.scm \ + scheme/opt/*.scm scheme/debug/*.scm scheme/misc/*.scm + +# -------------------- +# Distribution... + +# DISTFILES should include all sources. +DISTFILES = README COPYING INSTALL configure \ + acconfig.h configure.in Makefile.in install-sh \ + doc/*.ps doc/*.txt doc/html/*.html doc/scheme48.man \ + doc/src/*.tex doc/src/*.sty \ + emacs/README build/*-version-number build/*.exec \ + build/*.lisp build/build-usual-image build/filenames.make \ + build/filenames.scm build/initial.debug \ + build/initial.image build/initial.scm \ + build/build-external-modules \ + c/*.[ch] c/*/*.[ch] c/scheme48.h.in \ + emacs/*.el gdbinit \ + scheme/*.scm scheme/*/*.scm \ + ps-compiler \ + c/sysdep.h.in + +distname = $(RUNNABLE)-0.`cat build/minor-version-number` + +dist: build/initial.image + distname=$(distname) && \ + distfile=$(distdir)/$$distname.tgz && \ + if [ -d $(distdir) ] && \ + [ -w $$distfile -o -w $(distdir) ]; then \ + rm -f $$distname && \ + ln -s . $$distname && \ + files='' && \ + for i in $(DISTFILES); do \ + if [ "$$i" != "c/sysdep.h" ]; then \ + files="$$files $$distname/$$i"; \ + fi \ + done && \ + tar -cf - $$files | \ + gzip --best >$$distfile && \ + rm $$distname; \ + else \ + echo "Can't write $$distfile" >&2; \ + exit 1; \ + fi + +# Increment the minor version number +inc: + f=build/minor-version-number && \ + expr `cat $$f` + 1 >$$f.tmp && \ + mv $$f.tmp $$f && \ + echo '(define version-info "0.'`cat $$f`'")' \ + >scheme/env/version-info.scm + + +# -------------------- +# Generate build/filenames.make from *packages.scm +# +# This hack traces the module dependencies described in the +# various configuration files and converts them into dependency lists +# that "make" can use for its purposes. +# +# Since the distribution comes with a filenames.make, this rule +# shouldn't be invoked for simple installations. But it will be used +# if you change any of the *-packages.scm files. +# +# You can actually run the forms in filenames.scm in any Scheme +# implementation that has syntax-rules and explicit-renaming low-level +# macros (e.g., most versions of Scheme 48 and Pseudoscheme). +# If there are errors running this script, and you need to debug, +# don't use the initial.image, use something that has a reasonable +# environment. +# +# If this fails and you don't feel like debugging or fixing the problem, +# try "touch filenames.make" and hope for the best. + +PACKAGES=scheme/packages.scm scheme/rts-packages.scm scheme/alt-packages.scm \ + scheme/comp-packages.scm scheme/initial-packages.scm \ + scheme/link-packages.scm scheme/more-packages.scm \ + build/filenames.scm + +build/filenames.make: $(PACKAGES) + $(MAKE) $(VM) PACKAGES= + ./$(VM) -i $(srcdir)/$(INITIAL) -a batch $(CIG) + -chmod +x $(CIG) + $(RM) /tmp/cig + +$(CIG)2: + (echo ",batch"; \ + echo ",translate =scheme48/ $(srcdir)/scheme/"; \ + echo ",config ,load $(srcdir)/cig/cig2.scm"; \ + echo ",config ,load $(srcdir)/cig/libcig.scm"; \ + echo ",load-package cig-standalone"; \ + echo ",in cig-standalone"; \ + echo ",translate =scheme48/ $(LIB)/"; \ + echo '(dump-scsh-program cig-standalone-toplevel "/tmp/cig")') \ + | ./$(VM) -o ./$(VM) -i ./scsh/scsh.image + $(srcdir)/cig/image2script $(LIB)/$(VM) $(CIG)2 + -chmod +x $(CIG)2 + $(RM) /tmp/cig + +$(CIG).image: $(IMAGE) $(VM) $(srcdir)/cig/cig.scm $(srcdir)/cig/libcig.scm + (echo ",batch"; \ + echo ",translate =scheme48/ $(srcdir)/scheme/"; \ + echo ",config ,load $(srcdir)/cig/cig.scm"; \ + echo ",config ,load $(srcdir)/cig/libcig.scm"; \ + echo ",load-package cig-aux"; \ + echo ",open define-foreign-syntax"; \ + echo ",translate =scheme48/ $(LIB)/"; \ + echo ",dump /tmp/cig \"(CIG Preloaded -bri)\"") \ + | ./$(VM) -o ./$(VM) -i ./$(IMAGE) + $(srcdir)/cig/image2script $(LIB)/$(VM) \ + -o $(LIB)/$(VM) \ + $(CIG).image + -chmod +x $(CIG).image + $(RM) /tmp/cig + +#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +# SCSH Specifics +#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +scsh: cig scsh/scsh scsh/scsh.image + +SCHEME =scsh/awk.scm \ + scsh/char-set.scm \ + scsh/defrec.scm \ + scsh/endian.scm \ + scsh/enumconst.scm \ + scsh/event.scm \ + scsh/fdports.scm \ + scsh/fileinfo.scm \ + scsh/filemtch.scm \ + scsh/filesys.scm \ + scsh/flock.scm \ + scsh/fname.scm \ + scsh/fr.scm \ + scsh/glob.scm \ + scsh/here.scm \ + scsh/machine/bufpol.scm \ + scsh/machine/errno.scm \ + scsh/machine/fdflags.scm \ + scsh/machine/netconst.scm \ + scsh/machine/packages.scm \ + scsh/machine/signals.scm \ + scsh/machine/time_dep.scm \ + scsh/machine/tty-consts.scm \ + scsh/machine/waitcodes.scm \ + scsh/meta-arg.scm \ + scsh/network.scm \ + scsh/newports.scm \ + scsh/procobj.scm \ + scsh/pty.scm \ + scsh/rdelim.scm \ + scsh/re.scm \ + scsh/rw.scm \ + scsh/scsh-condition.scm \ + scsh/scsh-interfaces.scm \ + scsh/scsh-package.scm \ + scsh/scsh-read.scm \ + scsh/scsh-version.scm \ + scsh/scsh.scm \ + scsh/select.scm \ + scsh/startup.scm \ + scsh/stringcoll.scm \ + scsh/syntax-helpers.scm \ + scsh/syntax.scm \ + scsh/syscalls.scm \ + scsh/time.scm \ + scsh/top.scm \ + scsh/tty.scm \ + scsh/utilities.scm + +# scsh/dbm.scm db.scm ndbm.scm +# static.scm static-heap.scm static1.scm +# jcontrol + +# Bogus, but it makes the scm->c->o two-ply dependency work. +# Explicitly giving the .o/.c dependency also makes it go. +############################################################ +cig/libcig.c: cig/libcig.scm +scsh/flock.c: scsh/flock.scm +scsh/jcontrol2.c: scsh/jcontrol2.scm +scsh/network.c: scsh/network.scm +scsh/rdelim.c: scsh/rdelim.scm +scsh/re.c: scsh/re.scm +scsh/select.c: scsh/select.scm +scsh/syscalls.c: scsh/syscalls.scm +scsh/tty.c: scsh/tty.scm +scsh/time.c: scsh/time.scm + +scsh/scsh: scsh/scsh-tramp.c + $(CC) -o $@ $(CPPFLAGS) $(CFLAGS) \ + -DVM=\"$(LIB)/$(VM)\" \ + -DIMAGE=\"$(LIB)/scsh.image\" \ + scsh/scsh-tramp.c + +scsh/scsh.image: $(VM) $(SCHEME) $(CIG).image + (echo ",translate =scheme48/ $(srcdir)/scheme/"; \ + echo ",batch on"; \ + echo ",load-package floatnums"; \ + echo ",open externals"; \ + echo "(lookup-all-externals)"; \ + echo ",config"; \ + echo ",load $(srcdir)/scsh/let-opt.scm"; \ + echo ",load $(srcdir)/scsh/scsh-interfaces.scm"; \ + echo ",load $(srcdir)/scsh/machine/packages.scm"; \ + echo ",load $(srcdir)/scsh/scsh-package.scm"; \ + echo ",load-package scsh"; \ + echo ",load-package events"; \ + echo ",load-package scsh-here-string-hax"; \ + echo ",translate =scheme48/ $(LIB)/"; \ + echo ",in scsh-level-0"; \ + echo "(autoreap-policy 'early)"; \ + echo ",user"; \ + echo ",open floatnums"; \ + echo ",open scsh"; \ + echo "(dump-scsh \"scsh/scsh.image\")") \ + | ./$(VM) -o ./$(VM) -i $(CIG).image + +#scsh/scsh.image: $(VM) $(SCHEME) $(CIG).image +# (echo ",translate =scheme48/ $(srcdir)/"; \ +# echo ",batch on"; \ +# echo ",load-package floatnums"; \ +# echo ",open externals"; \ +# echo "(lookup-all-externals)"; \ +# echo ",config"; \ +# echo ",load $(srcdir)/scsh/let-opt.scm"; \ +# echo ",load $(srcdir)/scsh/scsh-interfaces.scm"; \ +# echo ",load $(srcdir)/scsh/machine/packages.scm"; \ +# echo ",load $(srcdir)/scsh/scsh-package.scm"; \ +# echo ",load-package scsh"; \ +# echo ",load-package scsh-here-string-hax"; \ +# echo ",translate =scheme48/ $(LIB)/"; \ +# echo ",in scsh-level-0"; \ +# echo "(%install-scsh-handlers)"; \ +# echo "(autoreap-policy 'early)"; \ +# echo ",user"; \ +# echo ",open floatnums"; \ +# echo ",open scsh"; \ +# echo ",dump scsh/scsh.image") \ +# | ./$(VM) -o ./$(VM) -i $(CIG).image + +# Removed these lines from scsh/scsh.image rule so you don't lose so +# badly when you are debugging in scsh. -Olin 6/95 +# echo ",flush"; +# echo ",flush maps source names files table"; + +#scsh/scsh.runnable: scsh/scsh.image +# cig/image2script $(LIB)/$(VM) -o $(LIB)/$(VM) -h 1800000 \ +# < scsh/scsh.image > $@ +# -chmod +x $@ + +scsh/regexp/libregexp.a: + cd ./scsh/regexp; $(MAKE) + +scsh/scsh.vm: $(LIBSCSH) $(VM) scsh/scsh.image + ./$(VM) -o ./$(VM) -h 6000000 -i scsh/scsh.image \ + -lm ./vm/ps-interface.scm \ + -lm ./vm/interfaces.scm \ + -lm ./vm/package-defs.scm \ + -lm ./vm/s48-package-defs.scm \ + -dm -m static-heaps -e static-heap-linker \ + -s scsh/static.scm \ + -i scsh/scsh.image -o $@ + +install-scsh: scsh + $(RM) $(bindir)/$(RUNNABLE) + $(INSTALL_PROGRAM) $(srcdir)/scsh/scsh $(bindir)/$(RUNNABLE) + $(INSTALL_PROGRAM) $(srcdir)/scsh/scsh.image $(LIB)/scsh.image + $(INSTALL_PROGRAM) $(srcdir)/$(LIBSCSH) $(libdir)/$(LIBSCSH) + $(RANLIB) $(libdir)/$(LIBSCSH) + for f in $(srcdir)/scsh/*.scm; \ + do $(INSTALL_DATA) $$f $(LIB)/scsh/; done + +clean-scsh: + $(RM) scsh/*.o scsh/regexp/*.o scsh/machine/*.o scsh/*.image scsh/scsh + $(RM) $(LIBSCSH) scsh/scsh.vm + -cd scsh/regexp; $(MAKE) clean