#=======================================================================
# Makefile for files in /u/sy/beebe/src/benchmarks/java/f/
#
# [25-Jun-1998]
#=======================================================================
# Program definitions

PROGRAM		= CHANGE-THIS-VALUE
PROGLIB		= CHANGE-THIS-VALUE
VERSION		= 1.0

#=======================================================================
# Installation locations

prefix		= /usr/local
bindir		= $(prefix)/bin
catdir		= $(prefix)/man/cat$(manext)
libdir		= $(libtop)/$(PROGRAM)-$(VERSION)
libtop		= $(prefix)/$(PROGLIB)/
mandir		= $(prefix)/man/man$(manext)
manext		= 1
shrlibdir	= $(libtop)/$(PROGRAM)-$(VERSION)
shrlibtop	= $(prefix)/share/$(PROGLIB)/

#=======================================================================
# Macro definitions

AVERAGE		= $(AWK) 'BEGIN {min = 1.e38; max = -min} \
			/times for array with leading dimension of 201/ { \
			getline ; \
			Record_Count++ ; \
			gsub(/E/,"e",$$4) ; \
			mflops = 0 + $$4 ; \
			min = ((mflops < min) ? mflops : min); \
			max = ((mflops > max) ? mflops : max); \
			sum += mflops} \
			END {printf("Average Mflops/s: %.3f in %d trials: range = %.3f .. %.3f\n", \
			sum/Record_Count, Record_Count, min, max)}'

AWK		= awk

CHMOD		= chmod
CP		= /bin/cp -p
CP		= rcp -p

LIBFILES	= /dev/null

LN		= ln

LS		= ls

MKDIR		= mkdir -p

RM		= /bin/rm -f

SHELL		= /bin/sh

SHRLIBFILES	= /dev/null

#=======================================================================
# Compiler flags and source files

FFLAGS		= $(FOPT)
FOPT		= -g
FOPT		=
FOBJS		= $(FSRCS:.f=.o)
FSRCS		= linpackd.f

#=======================================================================
# Suffixes and extra rule

#=======================================================================
# Targets:

all:	linpack

linpack:	linpack-g linpack-O linpack-O5

linpack-g:
	@if test -d RESULTS ; then true ; else mkdir RESULTS ; fi
	@echo Fortran with debugging compilation...
	@$(CP) linpackd.f secondf.f /tmp ; \
	TOPDIR=$$PWD ; \
	cd /tmp ; \
	$(FC) -g $(FFLAGS) linpackd.f secondf.f -o linpackd >/dev/null 2>&1; \
	for f in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; \
	do \
		./linpackd ; \
	done | \
	tee $$TOPDIR/RESULTS/$@.debug.`hostname` | \
	$(AVERAGE)
	@-$(RM) /tmp/linpackd /tmp/linpackd.f /tmp/linpackd.o /tmp/secondf.f /tmp/secondf.o 

linpack-O:
	@if test -d RESULTS ; then true ; else mkdir RESULTS ; fi
	@echo Fortran with optimizing compilation...
	@$(CP) linpackd.f secondf.f /tmp ; \
	TOPDIR=$$PWD ; \
	cd /tmp ; \
	$(FC) -O $(FFLAGS) linpackd.f secondf.f -o linpackd >/dev/null 2>&1 ; \
	for f in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; \
	do \
		./linpackd ; \
	done | \
	tee $$TOPDIR/RESULTS/$@.opt.`hostname` | \
	$(AVERAGE)
	@-$(RM) /tmp/linpackd /tmp/linpackd.f /tmp/linpackd.o /tmp/secondf.f /tmp/secondf.o 

linpack-O5:
	@if test -d RESULTS ; then true ; else mkdir RESULTS ; fi
	@echo Fortran with super optimizing compilation...
	@$(CP) linpackd.f secondf.f /tmp ; \
	TOPDIR=$$PWD ; \
	cd /tmp ; \
	$(FC) -O5 -dalign -libmil -cg92 $(FFLAGS) linpackd.f secondf.f -o linpackd >/dev/null 2>&1 ; \
	for f in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; \
	do \
		./linpackd ; \
	done | \
	tee $$TOPDIR/RESULTS/$@.topopt.`hostname` | \
	$(AVERAGE)
	@-$(RM) /tmp/linpackd /tmp/linpackd.f /tmp/linpackd.o /tmp/secondf.f /tmp/secondf.o 

clean:
	-$(RM) *.i
	-$(RM) *.o
	-$(RM) *~
	-$(RM) \#*
	-$(RM) a.out
	-$(RM) core

clobber:	distclean

distclean:	mostlyclean
	-$(RM) $(PROGRAM)
install:	install-exe install-lib install-shrlib install-man install-show

install-exe:	uninstall-exe
	$(CP) $(PROGRAM) $(bindir)/$(PROGRAM)
	$(LN) $(bindir)/$(PROGRAM) $(bindir)/$(PROGRAM)-$(VERSION)
	$(CHMOD) 775 $(bindir)/$(PROGRAM) $(bindir)/$(PROGRAM)-$(VERSION)

install-lib:	uninstall-lib
##	$(MKDIR) $(libtop)
##	@if test -d $(libtop) ; then true ; else echo Cannot create $(libtop) ; exit 1 ; fi
##	$(MKDIR) $(libdir)
##	@if test -d $(libdir) ; then true ; else echo Cannot create $(libdir) ; exit 1 ; fi
##	$(CP) $(LIBFILES) $(libdir)/
##	$(CHMOD) -R 664 $(libdir)/

install-man:	uninstall-man
	$(CP) $(PROGRAM).man $(mandir)/$(PROGRAM).$(manext)
	$(CHMOD) 775 $(mandir)/$(PROGRAM).$(manext)

install-show:
	@echo ''
	@echo Installed files...
	@$(LS) -l $(bindir)/$(PROGRAM) $(bindir)/$(PROGRAM)-$(VERSION) \
		$(mandir)/$(PROGRAM).$(manext)
	@if test -d $(libdir) ; then $(LS) -lR $(libdir) ; fi
	@echo ''

install-shrlib:	uninstall-shrlib
##	$(MKDIR) $(shrlibtop)
##	@if test -d $(shrlibtop) ; then true ; else echo Cannot create $(shrlibtop) ; exit 1 ; fi
##	$(MKDIR) $(shrlibdir)
##	@if test -d $(shrlibdir) ; then true ; else echo Cannot create $(shrlibdir) ; exit 1 ; fi
##	$(CP) $(SHRLIBFILES) $(shrlibdir)/
##	$(CHMOD) -R 664 $(shrlibdir)/

maintainer-clean:	distclean
	@echo "This command is intended for maintainers to use;"
	@echo "it deletes files that may require special tools to rebuild."
mostlyclean:	clean
uninstall:	uninstall-exe uninstall-lib install-shrlib uninstall-man

uninstall-exe:
	-$(RM) $(bindir)/$(PROGRAM)
	-$(RM) $(bindir)/$(PROGRAM)-$(VERSION)

uninstall-lib:
##	-$(RM) -r $(libdir)

uninstall-man:
	-$(RM) $(mandir)/$(PROGRAM).$(manext)
	-$(RM) $(catdir)/$(PROGRAM).$(manext)

uninstall-shrlib:
##	-$(RM) -r $(shrlibdir)

#=======================================================================
# File dependencies

#=======================================================================
