# Makefile for installing CLISP

# -------------- Start of configurable section --------------------

# Subdirectory containing lispinit.mem:
# Replace `base' by `full' to get a full-fledged CLISP.
fromdir = base

# Directories used by "make install":
# Common base directory for not architecture dependent files.
prefix = /usr/local
# Common base directory for architecture dependent files.
exec_prefix = $(prefix)
# Directory where executables are installed.
bindir = $(exec_prefix)/bin
mandir = $(exec_prefix)/man
libdir = $(exec_prefix)/lib
lisplibdir = $(libdir)/lisp
# If you have $(exec_prefix) different from $(prefix), and indend to use
# different versions of CLISP on different architectures, replace the
# following line by:  datadir = $(exec_prefix)/share
datadir = $(prefix)/share
localedir = $(datadir)/locale

# Programs used by "make":
CC = cc
CFLAGS = -O

# Programs used by "make install":
INSTALL = cp
INSTALL_PROGRAM = $(INSTALL)
INSTALL_DATA = $(INSTALL)

# -------------- End of configurable section --------------------

SHELL = /bin/sh

all : $(fromdir)/lisp.run $(fromdir)/wlisp.run

base/lisp.run :  base/lisp.a base/wlisp.a base/libavcall.a base/libvacall.a base/libtrampoline.a base/libnoreadline.a base/libreadline.a base/libintl.a
	$(CC) $(CFLAGS)  base/lisp.a base/libintl.a base/libreadline.a base/libavcall.a base/libvacall.a base/libtrampoline.a -lncurses -o base/lisp.run

base/wlisp.run :  base/lisp.a base/wlisp.a base/libavcall.a base/libvacall.a base/libtrampoline.a base/libnoreadline.a base/libreadline.a base/libintl.a
	$(CC) $(CFLAGS)  base/wlisp.a base/libintl.a base/libreadline.a base/libavcall.a base/libvacall.a base/libtrampoline.a -lncurses -o base/wlisp.run

full/lisp.run :  full/modules.o full/lisp.a full/wlisp.a full/libavcall.a full/libvacall.a full/libtrampoline.a full/libnoreadline.a full/libreadline.a full/libintl.a full/wildcard.o full/fnmatch.o full/wildcard.dvi full/wwildcard.o full/regexp.o full/regexi.o full/regex.o full/regexp.dvi full/wregexp.o full/linux.o full/wlinux.o full/clx.o full/wclx.o full/clx-preload.lsp full/clx.lsp full/clx.fas full/image.lsp full/image.fas
	$(CC) $(CFLAGS)  full/modules.o full/clx.o -lXpm -lXext full/linux.o -lm full/regexp.o full/regexi.o full/regex.o full/wildcard.o full/fnmatch.o full/lisp.a full/libintl.a full/libreadline.a full/libavcall.a full/libvacall.a full/libtrampoline.a -lncurses -o full/lisp.run

full/wlisp.run :  full/modules.o full/lisp.a full/wlisp.a full/libavcall.a full/libvacall.a full/libtrampoline.a full/libnoreadline.a full/libreadline.a full/libintl.a full/wildcard.o full/fnmatch.o full/wildcard.dvi full/wwildcard.o full/regexp.o full/regexi.o full/regex.o full/regexp.dvi full/wregexp.o full/linux.o full/wlinux.o full/clx.o full/wclx.o full/clx-preload.lsp full/clx.lsp full/clx.fas full/image.lsp full/image.fas
	$(CC) $(CFLAGS)  full/wmodules.o full/wclx.o -lXpm -lXext full/wlinux.o -lm full/wregexp.o full/regexi.o full/regex.o full/wwildcard.o full/fnmatch.o full/wlisp.a full/libintl.a full/libreadline.a full/libavcall.a full/libvacall.a full/libtrampoline.a -lncurses -o full/wlisp.run

install : install-bin install-man

install-bin : $(fromdir)/lisp.run $(fromdir)/lispinit.mem force
	if [ ! -d $(libdir) ] ; then mkdir $(libdir) ; fi
	if [ ! -d $(lisplibdir) ] ; then mkdir $(lisplibdir) ; fi
	$(INSTALL_PROGRAM) $(fromdir)/lisp.run $(lisplibdir)/lisp.run
	rm -f $(lisplibdir)/lispinit.mem
	$(INSTALL_DATA) $(fromdir)/lispinit.mem $(lisplibdir)/lispinit.mem
	$(INSTALL_PROGRAM) $(fromdir)/wlisp.run $(lisplibdir)/wlisp.run
	rm -f $(lisplibdir)/wlispinit.mem
	$(INSTALL_DATA) $(fromdir)/wlispinit.mem $(lisplibdir)/wlispinit.mem
	if [ ! -d $(datadir) ] ; then mkdir $(datadir) ; fi
	if [ ! -d $(localedir) ] ; then mkdir $(localedir) ; fi
	(cd locale && tar cf - .) | (cd $(localedir) && tar xf -)
	if [ ! -d $(bindir) ] ; then mkdir $(bindir) ; fi
	$(CC) $(CFLAGS) -DLISPLIBDIR='"$(lisplibdir)"' -DLOCALEDIR='"$(localedir)"' src/clisp.c -o $(bindir)/clisp

install-man : doc/clisp.1 doc/clreadline.3 force
	if [ ! -d $(mandir) ] ; then mkdir $(mandir) ; fi
	if [ ! -d $(mandir)/man1 ] ; then mkdir $(mandir)/man1 ; fi
	sed -e 's,/usr/local/bin/,$(bindir)/,g' < doc/clisp.1 > /tmp/clisp.1.inst \
	  && $(INSTALL_DATA) /tmp/clisp.1.inst $(mandir)/man1/clisp.1 \
	  && rm -f /tmp/clisp.1.inst
	if [ ! -d $(mandir)/man3 ] ; then mkdir $(mandir)/man3 ; fi
	$(INSTALL_DATA) doc/clreadline.3 $(mandir)/man3/clreadline.3

force:

