#!gmake

#settings for platforms :  SUN, OSF1
CC = gcc
ADDCFLAGS = -g 
AR = ar lrcu
RANLIB = ranlib

#settings for platforms :  SGI/MIPS
#CC = cc
#ADDCFLAGS = -g -mips2 -O
#AR = ar slrcu
#RANLIB = echo > /dev/null

#settings for platforms :  IBM AIX
#CC = cc
#ADDCFLAGS = -g 
#AR = ar lrcu
#RANLIB = ranlib


DIRS = low mem random misc cmp cpy list arg sort str hash btr \
       parse \
       complex vect mat conjdir anneal spmat

# compile everything
compile: hfiles
	cd low; make compile CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd mem; make compile CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd random; make compile CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd misc; make compile CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd cmp; make compile CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd cpy; make compile CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd list; make compile CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd arg; make compile CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd sort; make compile CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd str; make compile CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd hash; make compile CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd btr; make compile CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd parse; make compile CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd vect; make compile CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd mat; make compile CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd conjdir; make compile CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd anneal; make compile CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd spmat; make compile CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	make archive

# h file links
hfiles:
	hscript.csh

# remove objects 
clean:
	cd low; make clean; cd .. 
	cd mem; make clean; cd .. 
	cd random; make clean; cd .. 
	cd misc; make clean; cd .. 
	cd cmp; make clean; cd .. 
	cd cpy; make clean; cd .. 
	cd list; make clean; cd .. 
	cd arg; make clean; cd .. 
	cd sort; make clean; cd .. 
	cd str; make clean; cd .. 
	cd hash; make clean; cd .. 
	cd btr; make clean; cd .. 
	cd parse; make clean; cd .. 
	cd complex; make clean; cd .. 
	cd vect; make clean; cd .. 
	cd mat; make clean; cd .. 
	cd conjdir; make clean; cd .. 
	cd anneal; make clean; cd .. 
	cd spmat; make clean; cd .. 
	set nonomatch; rm -f ../doc/man/*
	set nonomatch; rm -f h/*
	rm -f text.a

# make man pages
man:
	manscript.csh

manheader:
	for dir in $(DIRS) 
	do
	  cd $dir
	  echo ""
	  echo "****" $dir "*****"
	  for file in *.man
	  do
	    head -2 < $file | tail -1
	  done
	  cd ..
	done

# self test 
selftest:
#	cd low; make selftest CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)"; cd .. 
#	cd mem; make selftest CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)"; cd .. 
#	cd random; make selftest CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)"; cd .. 
#	cd misc; make selftest CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)"; cd .. 
#	cd cmp; make selftest CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)"; cd .. 
#	cd cpy; make selftest CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)"; cd .. 
#	cd list; make selftest CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)"; cd .. 
#	cd arg; make selftest CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)"; cd .. 
#	cd sort; make selftest CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)"; cd .. 
#	cd str; make selftest CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)"; cd .. 
#	cd hash; make selftest CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)"; cd .. 
#	cd btr; make selftest CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)"; cd .. 
#	cd parse; make selftest CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)"; cd .. 
#	cd complex; make selftest CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)"; cd .. 
#	cd vect; make selftest CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)"; cd .. 
#	cd mat; make selftest CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)"; cd .. 
#	cd conjdir; make selftest CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)"; cd .. 
#	cd anneal; make selftest CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)"; cd .. 
#	cd spmat; make selftest CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)"; cd .. 
	cd low; selftest; cd .. 
	cd mem; selftest; cd .. 
	cd random; selftest; cd .. 
	cd misc; selftest; cd .. 
	cd cmp; selftest; cd .. 
	cd cpy; selftest; cd .. 
	cd list; selftest; cd .. 
	cd arg; selftest; cd .. 
	cd sort; selftest; cd .. 
	cd str; selftest; cd .. 
	cd hash; selftest; cd .. 
	cd btr; selftest; cd .. 
	cd parse; selftest; cd .. 
#	cd complex; selftest; cd .. 
	cd vect; selftest; cd .. 
	cd mat; selftest; cd .. 
	cd conjdir; selftest; cd .. 
#	cd anneal; selftest; cd .. 
#	cd spmat; selftest; cd .. 

archive:
	$(AR) text.a */wn*.o
	$(RANLIB) text.a

# make everything
all: 	
	set nonomatch; rm -f ../doc/man/*
	set nonomatch; rm -f h/*
	make hfiles
	cd low; make all CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd mem; make all CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd random; make all CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd misc; make all CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd cmp; make all CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd cpy; make all CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd list; make all CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd arg; make all CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd sort; make all CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd str; make all CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd hash; make all CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd btr; make all CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd parse; make all CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd complex; make all CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd vect; make all CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd mat; make all CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd conjdir; make all CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd anneal; make all CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
	cd spmat; make all CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)"; cd .. 
#	for dir in $(DIRS) 
#	do
#	  cd $dir; make all CC=$(CC) ADDCFLAGS="$(ADDCFLAGS)"; cd ..
#	done
	make archive


