#------------------------------------------------------------------------------
#
#  NSSDC/CDF						CDF tests makefile.
#
#  Version 1.5, 20-Feb-96, Hughes STX.
#
#  Modification history:
#
#   V1.0  26-Jan-94, J Love	Original version.
#   V1.0a 23-Feb-94, J Love	Added `CC='.
#   V1.0b  6-Apr-94, J Love	Finished `CC='.
#   V1.1  19-Dec-94, J Love	CDF V2.5.
#   V1.2   5-Jan-95, J Love	Updated dependencies, etc.
#   V1.2a 20-Jan-95, J Love	IRIX 6.x.
#   V1.3  16-Mar-95, J Love	Multi-compiler support, etc.
#   V1.4   3-Apr-95, J Love	POSIX.
#   V1.5  20-Feb-96, J Love	CDF V2.6.
#
#------------------------------------------------------------------------------
#
# Notes:
#
# `make' on DECstations complains (prints an error message) if an if-then-else
# construct evaluates to FALSE but there is no `false' part.  To prevent this,
# the `NULL' command is executed as the `false' part.
#
#------------------------------------------------------------------------------

.SILENT:

SHELL=/bin/sh
NULL=true

FORTRAN=
FCx=
CCx=
SHARED=
FOPTIONS=
FOPTIONSld=
COPTIONS=
COPTIONSld=
SYSLIBS=
SHAREDEXT=

INCLUDEcdf=../include

CC=$(CCx)
CFLAGS=$(COPTIONS) -I$(INCLUDEcdf)
CFLAGSld=$(COPTIONSld)

FC=$(FCx)
FFLAGS=$(FOPTIONS)
FFLAGSld=$(FOPTIONSld)

LIBCDFa=../lib/libcdf.a
LIBCDFshare=../lib/libcdf.$(SHAREDEXT)

LIBsARCHIVE=$(LIBCDFa) $(SYSLIBS)
LIBsSHARE=$(LIBCDFshare) $(SYSLIBS)

CDFh=$(INCLUDEcdf)/cdf.h
CDFinc=$(INCLUDEcdf)/cdf.inc

BINsC=qst2c qst2ic y2k
BINsF=qst2f qst2if
BINsCshare=qst2cS qst2icS
BINsFshare=qst2fS qst2ifS

#------------------------------------------------------------------------------
# Compile/link.
#------------------------------------------------------------------------------

all: c.yes cS.$(SHARED) f.$(FORTRAN) fS.$(FORTRAN).$(SHARED)

c.yes: $(BINsC)

cS.yes: $(BINsCshare)
cS.no:

f.yes: $(BINsF)
f.no:

fS.yes.yes: $(BINsFshare)
fS.yes.no:
fS.no.yes:
fS.no.no:

qst2c:	qst2c.o $(LIBCDFa)
	@echo $(CC) $(CFLAGSld) -o $@ qst2c.o $(LIBsARCHIVE)
	      $(CC) $(CFLAGSld) -o $@ qst2c.o $(LIBsARCHIVE)

qst2ic:	qst2ic.o $(LIBCDFa)
	@echo $(CC) $(CFLAGSld) -o $@ qst2ic.o $(LIBsARCHIVE)
	      $(CC) $(CFLAGSld) -o $@ qst2ic.o $(LIBsARCHIVE)

qst2cS: qst2c.o $(LIBCDFshare)
	@echo $(CC) $(CFLAGSld) -o $@ qst2c.o $(LIBsSHARE)
	      $(CC) $(CFLAGSld) -o $@ qst2c.o $(LIBsSHARE)

qst2icS: qst2ic.o $(LIBCDFshare)
	@echo $(CC) $(CFLAGSld) -o $@ qst2ic.o $(LIBsSHARE)
	      $(CC) $(CFLAGSld) -o $@ qst2ic.o $(LIBsSHARE)

qst2f:	qst2f.o $(LIBCDFa)
	@echo $(FC) $(FFLAGSld) -o $@ qst2f.o $(LIBsARCHIVE)
	      $(FC) $(FFLAGSld) -o $@ qst2f.o $(LIBsARCHIVE)

qst2if:	qst2if.o $(LIBCDFa)
	@echo $(FC) $(FFLAGSld) -o $@ qst2if.o $(LIBsARCHIVE)
	      $(FC) $(FFLAGSld) -o $@ qst2if.o $(LIBsARCHIVE)

qst2fS:	qst2f.o $(LIBCDFshare)
	@echo $(FC) $(FFLAGSld) -o $@ qst2f.o $(LIBsSHARE)
	      $(FC) $(FFLAGSld) -o $@ qst2f.o $(LIBsSHARE)

qst2ifS: qst2if.o $(LIBCDFshare)
	@echo $(FC) $(FFLAGSld) -o $@ qst2if.o $(LIBsSHARE)
	      $(FC) $(FFLAGSld) -o $@ qst2if.o $(LIBsSHARE)

y2k:	y2k.o $(LIBCDFa)
	@echo $(CC) $(CFLAGSld) -o $@ y2k.o $(LIBsARCHIVE)
	      $(CC) $(CFLAGSld) -o $@ y2k.o $(LIBsARCHIVE)

.c.o:
	@echo $(CC) $(CFLAGS) -c $<
	      $(CC) $(CFLAGS) -c $<

.f.o:
	@cp $(CDFinc) CDF.INC
	@echo $(FC) $(FFLAGS) -c $<
	      $(FC) $(FFLAGS) -c $<
	@rm CDF.INC

qst2c.o: qst2c.c $(CDFh)
qst2ic.o: qst2ic.c $(CDFh)
qst2f.o: qst2f.f $(CDFinc)
qst2if.o: qst2if.f $(CDFinc)
y2k.o: y2k.c $(CDFh)

#------------------------------------------------------------------------------
# Tests.
#     Each executable name is preceeded by `./' in case the current directory
# is not in the path.
#------------------------------------------------------------------------------

test:
	@if [ -f TEST.cdf ] ; then \rm TEST.* ; else $(NULL) ; fi
	@echo "Testing CDF library..."
	@./qst2c
	@./qst2ic
	@if [ -f qst2f ] ; then ./qst2f ; else $(NULL) ; fi
	@if [ -f qst2if ] ; then ./qst2if ; else $(NULL) ; fi
	@if [ -f qst2cS ] ; then echo "Testing shareable CDF library..." ; \
			    else $(NULL) ; \
	 fi
	@if [ -f qst2cS ] ; then make test.qst2cS ; else $(NULL) ; fi
	@if [ -f qst2icS ] ; then make test.qst2icS ; else $(NULL) ; fi
	@if [ -f qst2fS ] ; then make test.qst2fS ; else $(NULL) ; fi
	@if [ -f qst2ifS ] ; then make test.qst2ifS ; else $(NULL) ; fi
	@if [ -f y2k ] ; then ./y2k ; else $(NULL) ; fi

test.qst2cS:
	@env LD_LIBRARY_PATH=`pwd`/../lib ./qst2cS

test.qst2icS:
	@env LD_LIBRARY_PATH=`pwd`/../lib ./qst2icS

test.qst2fS:
	@env LD_LIBRARY_PATH=`pwd`/../lib ./qst2fS

test.qst2ifS:
	@env LD_LIBRARY_PATH=`pwd`/../lib ./qst2ifS

#------------------------------------------------------------------------------
# Clean/purge.
#------------------------------------------------------------------------------

clean:
	@-rm -f *.o
	@-rm -f qst2c
	@-rm -f qst2ic
	@-rm -f qst2f
	@-rm -f qst2if
	@-rm -f qst2cS
	@-rm -f qst2icS
	@-rm -f qst2fS
	@-rm -f qst2ifS
	@-rm -f y2k
	@-rm -f *.trace
	@-rm -f core

purge:
	@-rm -f *~
	@-rm -f *#
