# Copyright (c) 1994 James Clark
# See the file COPYING for copying permission.

# If you use gcc, then you must have at least version 2.6.0 and
# you must use -fno-implicit-templates and -O.
CXX=gcc -ansi -DHAVE_BOOL -DANSI_INST -fno-implicit-templates -O
# Executables will be *very* large if you use -g.
DEBUG=-g
CXXFLAGS=$(DEBUG)
CC=gcc
CFLAGS=-O $(DEBUG)
# Missing library functions
# Uncomment this for SunOS 4.1.3
LIBOBJS=#strerror.o memmove.o
# iostreams are required
LIBS=-liostream
# On SunOS 4, using libg++ 2.6, uncomment this.
# libg++ is needed for strtoul which is used by libiostream.
# LIBS=-liostream -lg++
srcdir=.
AR=ar
RANLIB=:
# Uncomment this for SunOS 4.1.3
#RANLIB=ranlib
M4=m4

LIBDIRS=lib parser em app
PROGDIRS=rast nsgmls #sp tree
dodirs=$(LIBDIRS) $(PROGDIRS)
PURIFY=purify

BACKUP=lib parser em app Makefile* TODO

MDEFINES="CXX=$(CXX)" "CC=$(CC)" "LIBOBJS=$(LIBOBJS)" "CXXFLAGS=$(CXXFLAGS)" \
 "CFLAGS=$(CFLAGS)" "srcdir=$(srcdir)" "AR=$(AR)" "RANLIB=$(RANLIB)" \
 "M4=$(M4)" "LIBS=$(LIBS)" "PURIFY=$(PURIFY)"

TARGETS=all depend gen clean pure
lib-Makefile=Makefile.lib
do=all

$(TARGETS):
	@$(MAKE) -f $(srcdir)/Makefile $(MDEFINES) do=$@ $(dodirs)


$(LIBDIRS): FORCE
	@if test $(srcdir) = .; \
	then srcdir=.; \
	else srcdir=`cd $(srcdir); pwd`/$@; \
	fi; \
	test -d $@ || mkdir $@; \
	cd $@; \
	test -f $$srcdir/Makefile.dep || touch $$srcdir/Makefile.dep; \
	$(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \
		-f $$srcdir/../Makefile.comm -f $$srcdir/Makefile.sub \
	        -f $$srcdir/../$(lib-Makefile) -f $$srcdir/Makefile.dep $(do)

$(PROGDIRS): FORCE
	@if test $(srcdir) = .; \
	then srcdir=.; \
	else srcdir=`cd $(srcdir); pwd`/$@; \
	fi; \
	test -d $@ || mkdir $@; \
	cd $@; \
	test -f $$srcdir/Makefile.dep || touch $$srcdir/Makefile.dep; \
	$(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \
		-f $$srcdir/../Makefile.comm -f $$srcdir/Makefile.sub \
	        -f $$srcdir/../Makefile.prog -f $$srcdir/Makefile.dep $(do)

$(PROGDIRS): $(LIBDIRS)
parser: lib
em: lib parser
app: lib parser em

backup: FORCE
	tar cvf /dev/rst0 $(BACKUP)

# GNU tar
TAR=tar
EXCLUDE=--exclude test/cap --exclude test/out --exclude test/err

dist:
	-rm -f sp.tar.gz
	cd test; ./CLEAN
	(cd $(srcdir); tar -c -f - -h -z $(EXCLUDE) `cat FILES`) >sp.tar.gz

check:
	RAST=`pwd`/rast/rast; export RAST; cd $(srcdir); ./dotest

FORCE:
