
#
# Makefile for evaluate_parameters Version 2.1 for Unix.
#
# Stephen O. Lidie, Lehigh University Computing Center.  94/03/36
#
# lusol@Lehigh.EDU
#
# 1) Change these Makefile variables as required.  The pathname variables MUST
#    be absolute!  (No ./ stuff allowed!)  You must manually create the 
#    subdirectories before running `make install'.
#
# 2) I assume that you have both Perl and Tcl/Tk installed.  If not, then
#    change PERLINC and/or TCLAUX as described below.  Inspect/change all
#    the following Makefile variables as required.
#
# NOTE:  my primary testing was done using gcc version 2.5.8 on AIX 3.2.5.
#
# INC     = path name for evap.h, "include"d in your C code.
# BIN     = path name for addmm, disci, genmp, genpdt and gentkp executables.
# LIB     = path name for libevap.a (evap.o, linked with your C code), and
#           libevapmm.a (message modules for evap's friends).
# MAN     = path name for evap, addmm, disci, genmp, genpdt and gentkp man pages.
#           You may need to make the two subdirectories $MAN/man1 and $MAN/man2.
# PERLEXE = path name for Perl.  If you don't have Perl then no change is
#	    required.
# PERLINC = path name for evap.pl, "require"d in your Perl code.  If you
#           don't have Perl then use /tmp.
# TCLEXE  = path name for Tcl's wish interpreter.  If you don't have Tcl/Tk
#           then no change is required.
# TCLAUX  = path name for Tcl/Tk auxiliary files used by generate_tk_program.
#           If you don't have Tcl/Tk then use /tmp.
# TCLSOURCE  = path name for evap.tcl, "source"d in your Tcl/Tk code.  If you
#              don't have Tcl/Tk then use /tmp.
#
# 3) Then make; make install.
#
# $Id: Makefile,v 2.1.0.10 1994/06/02 15:24:35 lusol Exp $
#

ROOT=/usr/local

INC=${ROOT}/include
BIN=${ROOT}/bin
LIB=${ROOT}/lib
MAN=${ROOT}/man
PERLEXE=${ROOT}/bin/perl
PERLINC=${ROOT}/lib/perl
PERLINC=/tmp
TCLEXE=${ROOT}/bin/wish
TCLAUX=${ROOT}/lib/tcl+tk_lucc
TCLAUX=/tmp
TCLSOURCE=${TCLAUX}

CC=cc
OPT= -O3
CC=gcc
OPT=-O -ansi -pedantic-errors -Wall
CC=gcc
OPT=-O -ansi -pedantic-errors

#
# Then:  make; make install
#

SHELL=/bin/sh
OK14=`SOL/14`


all:	evap genpdt disci addmm evapmm sample sample1 sample2 genmp gentkp sama

install:
	@echo "Installing evaluate_parameters and friends ..."
	@echo "  .GT. 14 character file names = ${OK14} ..."
	@echo "  src/evap.h --> ${INC}/evap.h ..."
	cp src/evap.h ${INC}/evap.h
	chmod 744 ${INC}/evap.h

	@echo "  saving previous message module archive file ..."
	-cp ${LIB}/libevapmm.a ${LIB}/libevapmm.a_old
	@echo "  libevapmm.a (Message Modules) --> ${LIB}/libevapmm.a ..."
	cp libevapmm.a ${LIB}/libevapmm.a
	-ranlib ${LIB}/libevapmm.a
	chmod 744 ${LIB}/libevapmm.a
	@echo "  libevap.a (evap.o) --> ${LIB}/libevap.a ..."
	cp libevap.a ${LIB}/libevap.a
	-ranlib ${LIB}/libevap.a
	chmod 744 ${LIB}/libevap.a

	@echo "  src/evap.pl --> ${PERLINC}/evap.pl ..."
	cp src/evap.pl /tmp/evap.pl
	sed -e "s[./libevapmm.a[${LIB}/libevapmm.a[" < /tmp/evap.pl > ${PERLINC}/evap.pl
	chmod 744 ${PERLINC}/evap.pl

	@echo "  src/evap.tcl --> ${TCLSOURCE}/evap.tcl ..."
	cp src/evap.tcl /tmp/evap.tcl
	sed -e "s[./libevapmm.a[${LIB}/libevapmm.a[" < /tmp/evap.tcl > ${TCLSOURCE}/evap.tcl
	chmod 744 ${TCLSOURCE}/evap.tcl

	@echo "  addmm --> ${BIN}/addmm ..."
	cp addmm ${BIN}/addmm
	chmod 755 ${BIN}/addmm
	if [ "${OK14}" = "YES" ]; then \
	echo "    aliases:  add_message_module, add_message_modules ..."; \
	rm -f ${BIN}/add_message_module; \
	rm -f ${BIN}/add_message_modules; \
	ln -s ${BIN}/addmm ${BIN}/add_message_module; \
	ln -s ${BIN}/addmm ${BIN}/add_message_modules; \
	fi

	@echo "  disci --> ${BIN}/disci ..."
	cp disci ${BIN}/disci
	chmod 755 ${BIN}/disci
	if [ "${OK14}" = "YES" ]; then \
	echo "    alias:  display_command_information ..."; \
	rm -f ${BIN}/display_command_information; \
	ln -s ${BIN}/disci ${BIN}/display_command_information; \
	fi

	@echo "  genpdt --> ${BIN}/genpdt ..."
	cp genpdt ${BIN}/genpdt
	chmod 755 ${BIN}/genpdt
	if [ "$(OK14)" = "YES" ]; then \
	echo "    alias:  generate_pdt ..."; \
	rm -f ${BIN}/generate_pdt; \
	ln -s ${BIN}/genpdt ${BIN}/generate_pdt; \
	fi

	@echo "  genmp.pl --> ${BIN}/genmp ..."
	cp genmp.pl ${BIN}/genmp
	chmod 755 ${BIN}/genmp
	if [ "$(OK14)" = "YES" ]; then \
	echo "    alias:  generate_man_page ..."; \
	rm -f ${BIN}/generate_man_page; \
	ln -s ${BIN}/genpdt ${BIN}/generate_man_page; \
	fi

	@echo "  gentkp.pl --> ${BIN}/gentkp ..."
	cp gentkp.pl ${BIN}/gentkp
	chmod 755 ${BIN}/gentkp
	if [ "$(OK14)" = "YES" ]; then \
	echo "    alias:  generate_tk_program ..."; \
	rm -f ${BIN}/generate_tk_program; \
	ln -s ${BIN}/gentkp ${BIN}/generate_tk_program; \
	fi
	
	@echo "  moving Tk auxiliary files --> ${TCLAUX}/ ..."
	cp src/FSBox.tcl ${TCLAUX}/FSBox.tcl
	cp src/DisU.tcl ${TCLAUX}/DisU.tcl
	cp src/SOL.xbm ${TCLAUX}/SOL.xbm

	@echo "  moving man pages --> ${MAN}/man1 and ${MAN}/man2 ..."
	cp man/addmm.1 ${MAN}/man1/addmm.1
	if [ "$(OK14)" = "YES" ]; then \
	rm -f ${MAN}/man1/add_message_module.1; \
	rm -f ${MAN}/man1/add_message_modules.1; \
	ln -s ${MAN}/man1/addmm.1 ${MAN}/man1/add_message_module.1; \
	ln -s ${MAN}/man1/addmm.1 ${MAN}/man1/add_message_modules.1; \
	fi
	cp man/disci.1 ${MAN}/man1/disci.1
	if [ "$(OK14)" = "YES" ]; then \
	rm -f ${MAN}/man1/display_command_information.1; \
	ln -s ${MAN}/man1/disci.1 ${MAN}/man1/display_command_information.1; \
	fi
	cp man/genpdt.1 ${MAN}/man1/genpdt.1
	if [ "$(OK14)" = "YES" ]; then \
	rm -f ${MAN}/man1/generate_pdt.1; \
	ln -s ${MAN}/man1/genpdt.1 ${MAN}/man1/generate_pdt.1; \
	fi
	cp man/genmp.1 ${MAN}/man1/genmp.1
	if [ "$(OK14)" = "YES" ]; then \
	rm -f ${MAN}/man1/generate_man_page.1; \
	ln -s ${MAN}/man1/genmp.1 ${MAN}/man1/generate_man_page.1; \
	fi
	cp man/gentkp.1 ${MAN}/man1/gentkp.1
	if [ "$(OK14)" = "YES" ]; then \
	rm -f ${MAN}/man1/generate_tk_program.1; \
	ln -s ${MAN}/man1/gentkp.1 ${MAN}/man1/generate_tk_program.1; \
	fi
	cp man/evap.2 ${MAN}/man2/evap.2
	cp man/evap.c.2 ${MAN}/man2/evap.c.2
	cp man/evap.pl.2 ${MAN}/man2/evap.pl.2
	cp man/evap.tcl.2 ${MAN}/man2/evap.tcl.2
	sed -e "s[/usr/local/lib[${LIB}[g" < man/evap_pac_skel.2 > man/evap_pac.2
	cp man/evap_pac.2 ${MAN}/man2/evap_pac.2
	rm man/evap_pac.2
	if [ "$(OK14)" = "YES" ]; then \
	rm -f ${MAN}/man2/evaluate_parameters.2; \
	ln -s ${MAN}/man2/evap.2 ${MAN}/man2/evaluate_parameters.2; \
	fi
	@echo "Install complete."

clean:
	rm -f *.o addmm disci genpdt sample_c sample_pl sample_tcl sample1 sample1_pl sample1_tcl sample2 sample libevap.a libevapmm.a SOL/proai SOL/libproaimm.a a.out genmp.pl gentkp.pl SOL/QA/q* SOL/QA/s* SOL/QA/t* xxx sama_c sama_pl sama_tcl MANIFEST* Makefile.sample

evap.o:	src/evap.c src/evap.h
	@echo "making evap.o ..."
	${CC} -c ${OPT} -DP_EVAP_MM_PATH=\"${LIB}/libevapmm.a\" src/evap.c
	ar rcv libevap.a evap.o
	-ranlib libevap.a

evap:	evap.o

genpdt:	genpdt.o
	${CC} ${OPT} -o genpdt genpdt.o evap.o

genpdt.o: src/genpdt.c src/evap.h evap.o pdt/genpdt_pdt_out
	@echo "making genpdt ..."
	${CC} -c ${OPT} src/genpdt.c

disci:	disci.o
	${CC} ${OPT} -o disci disci.o evap.o

disci.o: src/disci.c src/evap.h evap.o pdt/disci_pdt_out
	@echo "making disci ..."
	${CC} -c ${OPT} src/disci.c

addmm:	addmm.o
	${CC} ${OPT} -o addmm addmm.o evap.o

addmm.o: src/addmm.c src/evap.h evap.o pdt/addmm_pdt_template
	@echo "making addmm ..."
	@echo "  generating addmm's PDT ..."
	sed -e "s[/usr/local/lib[${LIB}[" < pdt/addmm_pdt_template > pdt/addmm_pdt
	./genpdt <pdt/addmm_pdt >pdt/addmm_pdt_out
	${CC} -c ${OPT} src/addmm.c
	@echo "  generating addmm's MM ..."
	sed -e "s[/usr/local/lib[${LIB}[" < mm/addmm.mm_template > mm/addmm.mm
	@echo "  generating addmm's man page ..."
	sed -e "s[/usr/local/lib[${LIB}[" < man/addmm.1_template > man/addmm.1

evapmm: mm/addmm.mm mm/disci.mm mm/genpdt.mm
	@echo "creating message modules for addmm, disci, genpdt and sample ..."
	./addmm -message_module_library ./libevapmm.a mm/*.mm
	@echo "  (adding evap_pac's embedded PDTs ...)"
	./addmm -mml ./libevapmm.a pdt/bang_pdt pdt/disac_pdt
	@echo "  (adding a shar file of sample evap code ...)"
	./addmm -mml ./libevapmm.a samples_shar*

sample: sample.o
	${CC} ${OPT} -o sample_c sample.o evap.o
	cp src/sample.pl sample_pl
	cp src/sample.tcl sample_tcl
	./addmm -mml ./libevapmm.a mm/sample.mm

sample.o: src/sample.c src/evap.h evap.o pdt/sample_pdt_out
	@echo "making sample, executables = sample_c, sample_pl and sample_tcl ..."
	${CC} -c ${OPT} src/sample.c

sample1: sample1.o
	${CC} ${OPT} -o sample1 sample1.o evap.o
	cp src/sample1.pl sample1_pl
	cp src/sample1.tcl sample1_tcl

sample1.o: src/sample1.c src/evap.h evap.o pdt/sample_pdt_out
	@echo "making sample1 ..."
	${CC} -c ${OPT} src/sample1.c

sample2: sample2.o
	${CC} ${OPT} -o sample2 sample2.o evap.o

sample2.o: src/sample2.c src/evap.h evap.o pdt/sample_pdt_out
	@echo "making sample2 ..."
	${CC} -c ${OPT} src/sample2.c

genmp:
	@echo "making generate_man_page ..."
	sed -e "s[/usr/local/bin/perl[${PERLEXE}[" < src/genmp.pl > genmp.pl
	chmod 755 genmp.pl

gentkp:
	@echo "making generate_tk_program ..."
	sed -e "s[/usr/local/bin/perl[${PERLEXE}[" -e "s[/usr/local/lib/tcl+tk_lucc[${TCLAUX}[" \
		-e s"[/usr/local/bin/wish[${TCLEXE}[" < src/gentkp.pl > gentkp.pl
	chmod 755 gentkp.pl

sama:	
	@echo "making sample_application ..."
	${CC} -o sama_c evap.o src/sama.c
	cp src/sama.pl sama_pl
	cp src/sama.tcl sama_tcl
	chmod 755 sama_c sama_pl sama_tcl

	




#
# Targets that generally only I use... not for public consumption.
#

create_pdts:
# genpdt's PDT I do by hand to bootstrap things ...
# addmm's  PDT is generated on-the-fly by this Makefile ...
	@echo "creating PDTs for disci, sample, sample1, sample2 and sample_application ..."
	@echo "Reminder:  run AFTER make genpdt to get latest executable ..."
	./genpdt < pdt/disci_pdt > pdt/disci_pdt_out
	./genpdt < pdt/sample_pdt > pdt/sample_pdt_out
	./genpdt                 -i pdt/sama_pdt  -o pdt/sama_pdt_out
	./genpdt -q "bang_pkg_"  -i pdt/bang_pdt  -o pdt/bang_pdt_out
	./genpdt -q "disac_pkg_" -i pdt/disac_pdt -o pdt/disac_pdt_out
	./genpdt -q "exi_pkg_"   -i pdt/exi_pdt   -o pdt/exi_pdt_out
	./genpdt -q "samc_pkg_"  -i pdt/samc_pdt  -o pdt/samc_pdt_out

create_man_pages:	
	@echo "creating man pages for addmm, disci, genpdt, genmp and gentkp ..."
	@echo "Reminder:  run AFTER make install to get latest executables ..."
	src/genmp.pl -output_path man -c addmm -c disci -c genpdt -c genmp -c gentkp -author 'Stephen O. Lidie, lusol@Lehigh.EDU' -a '' -a 'Copyright (C) 1990 - 1994 by Stephen O. Lidie and Lehigh University.  All rights reserved.' -sa 'evap(2)' -sa 'evap.c(2)' -sa 'evap.pl(2)' -sa 'evap.tcl(2)' -sa 'evap_pac(2)' -sa 'addmm, add_message_modules(1)' -sa 'disci, display_command_information(1)' -sa 'genmp, generate_man_page(1)' -sa 'genpdt, generate_pdt(1)' -sa 'gentkp, generate_tk_program(1)'
	(cd man; ln -f -s addmm.1 add_message_modules.1)
	(cd man; cp addmm.1 addmm.1_template)
	(cd man; ln -f -s disci.1 display_command_information.1)
	(cd man; ln -f -s genpdt.1 generate_pdt.1)
	(cd man; ln -f -s genmp.1 generate_man_page.1)
	(cd man; ln -f -s gentkp.1 generate_tk_program.1)

qa:	
	clear
	@echo "Doing some simple QA tests now ..."
	ar p ${LIB}/libevapmm.a sample.mm > SOL/QA/sample.mm
	@echo "  Execution tests ....................................................."
	-cp SOL/QA/QA.orig/* SOL/QA/
	genpdt <SOL/QA/qa_pdt.c > SOL/QA/qa_pdt_out
	${CC} -Isrc SOL/QA/qa.c evap.o
	cp a.out xxx
	chmod 700 xxx
	./xxx -mui 123 -v z > SOL/QA/t1.c
	cp SOL/QA/qa.pl xxx
	./xxx -mui 123 -v z > SOL/QA/t1.pl
	cp SOL/QA/qa.tcl xxx
	./xxx -mui 123 -v z > SOL/QA/t1.tcl
	@echo "\n\n\n\n"
	@echo "    Differences in 'scale_factor' precision/formatting are OK!"
	@echo "    C 'output' should be 'stdout', Perl 'output' should be '>-'!"
	-diff SOL/QA/t1.c SOL/QA/t1.pl
	@echo "    <cr> to continue ..."
	@read answer
	@echo "\n\n\n\n"
	@echo "    Differences in 'scale_factor' precision/formatting are OK!"
	@echo "    Tcl 'output' should be 'stdout', Perl 'output' should be '>-'!"
	-diff SOL/QA/t1.tcl SOL/QA/t1.pl
	@echo "    <cr> to continue ..."
	@read answer
	@echo "\n\n\n\n"
	@echo "    Now diff-ing against originals ..."
	-diff SOL/QA/t1.c SOL/QA/QA.orig/t1.c
	@echo "    <cr> to continue ..."
	@read answer
	@echo "\n\n\n\n"
	-diff SOL/QA/t1.pl SOL/QA/QA.orig/t1.pl
	@echo "    <cr> to continue ..."
	@read answer
	@echo "\n\n\n\n"
	-diff SOL/QA/t1.tcl SOL/QA/QA.orig/t1.tcl
	@echo "    <cr> to continue ..."
	@read answer
	@echo "  Help tests ........................................................"
	cp SOL/QA/qa.tcl xxx
	./xxx -usage_help > SOL/QA/t2_usage.tcl
	./xxx -? > SOL/QA/t2_brief.tcl
	./xxx -full_help > SOL/QA/t2_full.tcl
	cp SOL/QA/qa.pl xxx
	./xxx -usage_help > SOL/QA/t2_usage.pl
	./xxx -? > SOL/QA/t2_brief.pl
	./xxx -full_help > SOL/QA/t2_full.pl
	cp a.out xxx
	./xxx -usage_help > SOL/QA/t2_usage.c
	./xxx -? > SOL/QA/t2_brief.c
	./xxx -full_help > SOL/QA/t2_full.c
	@echo "\n\n\n\n"
	@echo "    should be no diffs in usage help ..."
	-diff SOL/QA/t2_usage.c SOL/QA/t2_usage.pl
	@echo "    <cr> to continue ..."
	@read answer
	@echo "\n\n\n\n"
	@echo "    should be no diffs in brief help ..."
	-diff SOL/QA/t2_brief.c SOL/QA/t2_brief.pl
	@echo "    <cr> to continue ..."
	@read answer
	@echo "\n\n\n\n"
	@echo "    should be one diff in full help, the message module path for C ..."
	-diff SOL/QA/t2_full.c SOL/QA/t2_full.pl
	@echo "    <cr> to continue ..."
	@read answer
	@echo "\n\n\n\n"
	@echo "    should be no diffs in usage help ..."
	-diff SOL/QA/t2_usage.tcl SOL/QA/t2_usage.pl
	@echo "    <cr> to continue ..."
	@read answer
	@echo "\n\n\n\n"
	@echo "    should be no diffs in brief help ..."
	-diff SOL/QA/t2_brief.tcl SOL/QA/t2_brief.pl
	@echo "    <cr> to continue ..."
	@read answer
	@echo "\n\n\n\n"
	@echo "   should be no diffs in full help ..."
	-diff SOL/QA/t2_full.tcl SOL/QA/t2_full.pl
	@echo "    <cr> to continue ..."
	@read answer
	@echo "\n\n\n\n"
	@echo "  Now diff-ing against the originals ..."
	-diff SOL/QA/t2_usage.c SOL/QA/QA.orig/t2_usage.c
	-diff SOL/QA/t2_brief.c SOL/QA/QA.orig/t2_brief.c
	-diff SOL/QA/t2_full.c SOL/QA/QA.orig/t2_full.c
	@echo "    <cr> to continue ..."
	@read answer
	@echo "\n\n\n\n"
	-diff SOL/QA/t2_usage.pl SOL/QA/QA.orig/t2_usage.pl
	-diff SOL/QA/t2_brief.pl SOL/QA/QA.orig/t2_brief.pl
	-diff SOL/QA/t2_full.pl SOL/QA/QA.orig/t2_full.pl
	@echo "    <cr> to continue ..."
	@read answer
	@echo "\n\n\n\n"
	-diff SOL/QA/t2_usage.tcl SOL/QA/QA.orig/t2_usage.tcl
	-diff SOL/QA/t2_brief.tcl SOL/QA/QA.orig/t2_brief.tcl
	-diff SOL/QA/t2_full.tcl SOL/QA/QA.orig/t2_full.tcl
	@echo "    <cr> to continue ..."
	@read answer
	clear
	@echo "  Quick test of generate_tk_program ..."
	@echo "  Should just be date/time differences."
	gentkp -c addmm > /tmp/xxx
	-diff /tmp/xxx tk/xaddmm
	@echo "    <cr> to continue ..."
	@read answer
	gentkp -c disci > /tmp/xxx
	-diff /tmp/xxx tk/xdisci
	@echo "    <cr> to continue ..."
	@read answer
	gentkp -c genmp > /tmp/xxx
	-diff /tmp/xxx tk/xgenmp
	@echo "    <cr> to continue ..."
	@read answer
	gentkp -c genpdt > /tmp/xxx
	-diff /tmp/xxx tk/xgenpdt
	@echo "    <cr> to continue ..."
	@read answer
	gentkp -c gentkp > /tmp/xxx
	-diff /tmp/xxx tk/xgentkp
	@echo "    <cr> to continue ..."
	@read answer

MM=mm mm/sample.mm mm/bang.mm mm/disac.mm mm/exi.mm mm/sama.mm mm/samc.mm
PDT=pdt pdt/sample_pdt pdt/bang_pdt pdt/disac_pdt pdt/exi_pdt pdt/sama_pdt pdt/samc_pdt
PDT_OUT=pdt/sample_pdt_out pdt/bang_pdt_out pdt/disac_pdt_out pdt/exi_pdt_out pdt/sama_pdt_out pdt/samc_pdt_out
SRC=src src/sama.c src/sama.pl src/sama.tcl src/sample.c src/sample1.c src/sample2.c src/sample.pl src/sample1.pl src/sample.tcl src/evap.h src/evap.c src/evap.pl src/evap.tcl 
samples_kit:
	rm -f MANIFEST Makefile.smp
	cp src/Makefile.smp Makefile.smp
	makekit -s 199000 -nsamples_shar -oMANIFEST -t"Now:  make -f Makefile.smp" Makefile.smp $(MM) $(PDT) $(PDT_OUT) $(SRC)
	rm -f MANIFEST Makefile.smp

evap_kit:
	/bin/rm -fr ../evap-2.1.shar ../evap-2.1.shar.tar
	(cd ..; rm -f MANIFEST*)
	make clean
	make samples_kit
	(cd ..; find evap-2.1 -name "*" -print | grep -v '.*CVS.*' > /tmp/evap_file_list)
	(cd ..; mkdir evap-2.1.shar; cat /tmp/evap_file_list | makekit -s 200000 -nevap-2.1.shar/evap21.shar -oMANIFEST -t"Read the Makefile for installation instructions.")
	(cd ..; tar -cvf evap-2.1.shar.tar evap-2.1.shar)
	(cd ..; rm MANIFEST)

tar:
	/bin/rm -fr ../evap-2.1.tar ../evap-2.1.tar.Z
#	cvs export -r2.1 -d ../evap-2.1_dist .
	make clean
	make samples_kit
	(cd ..; find evap-2.1 -name "*" -print | grep -v '.*CVS.*' > /tmp/evap_file_list)
	(cd ..; tar -L /tmp/evap_file_list -cvf evap-2.1.tar)
	(cd ..; compress evap-2.1.tar)
