#------------------------------------------------------------------------------
#
#  NSSDC/CDF						CDF library makefile.
#
#  Version 1.5b, 3-Apr-97, Hughes STX.
#
#  Modification history:
#
#   V1.0  15-Dec-93, J Love	Original version.
#   V1.0a 23-Feb-94, J Love	Added `CC='.
#   V1.0b  6-Apr-94, J Love	Finished `CC='.
#   V1.1  14-Nov-94, J Love	CDF V2.5.
#   V1.2  30-Dec-94, J Love	Corrected dependencies.
#   V1.2a 19-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.4a  4-May-95, J Love	Added `cdfmem.c'.
#   V1.5  13-Jun-96, J Love	CDF V2.6.
#   V1.5a 21-Feb-97, J Love	Removed RICE.
#   V1.5b  3-Apr-97, J Love	Removed mysterious `-M' option.
#
#------------------------------------------------------------------------------
#
# 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

SHARED=
PIC=
CCx=
LDx=
COPTIONS=
SYSLIBS=
SHAREDEXT=
LDOPTIONS=
AROPTIONS=
RANLIB=

INCLUDEcdf=../include

CC=$(CCx)
LD=$(LDx)
AR=ar
RANLIBcmd=ranlib
MACos=Darwin

CFLAGS=$(COPTIONS) $(PIC) -I$(INCLUDEcdf)
LDFLAGS=$(LDOPTIONS)
ARFLAGS=$(AROPTIONS)

OBJs= \
cdflib.o cdfcre.o cdfope.o cdfclo.o cdfdel.o cdfsel.o cdfcon.o \
cdfget.o cdfmisc2.o cdfread.o cdfwrite.o cdfhyper.o epochuf.o dirutils.o \
cdfput1.o cdfput2.o cdfcsi.o cdffsi.o cdffii.o cdftext.o cdfed.o \
cdfstr.o cdfvalid.o cdfmem.o vstream.o epochu.o cdfmisc3.o cdfhuff.o \
cdfrle.o cdfmisc1.o cdfalloc.o cdfgzip.o cdfalloc64.o cdfdel64.o cdfmisc2_64.o \
cdfread64.o cdfclo64.o cdfget64.o cdfmisc3_64.o cdfsel64.o cdfcon64.o \
cdfput1_64.o cdfwrite64.o cdfcre64.o cdfmisc1_64.o cdfput2_64.o vstream64.o \
cdfhyper64.o cdfrle64.o cdfhuff64.o cdfgzip64.o cdffsi2.o cdffsi3.o cdfcks.o \
cdfmd5.o cdfsav.o

CDFh= $(INCLUDEcdf)/cdf.h
CDFREVh= $(INCLUDEcdf)/cdfrev.h
CONFIGh= $(INCLUDEcdf)/cdfconfig.h
CDFDISTh= $(INCLUDEcdf)/cdfdist.h $(CDFh) $(CONFIGh)
CDFLIBh= $(INCLUDEcdf)/cdflib.h $(INCLUDEcdf)/cdflib64.h $(CDFDISTh)
CDFMD5h = $(CDFLIBh) $(INCLUDEcdf)/cdfmd5.h

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

all: libcdf.a shared.$(SHARED)

libcdf.a: $(OBJs)
	@if [ -f $@ ] ; then rm $@ ; else $(NULL) ; fi
	@echo $(AR) $(ARFLAGS) $@ $(OBJs)
	      $(AR) $(ARFLAGS) $@ $(OBJs)
	@make ranlib.$(RANLIB)

ranlib.yes:
	@echo $(RANLIBcmd) libcdf.a
	$(RANLIBcmd) libcdf.a
#	@cp .ranlib .ranlib.yes

shared.yes: libcdf.$(SHAREDEXT)

libcdf.so \
libcdf.dylib \
libcdf.sl: $(OBJs)
	@if [ -f $@ ] ; then rm $@ ; else $(NULL) ; fi
	if [ $(MACos) =  `uname` ] ; then \
	  echo $(LD) $(LDFLAGS) -o $@ $(OBJs) $(SYSLIBS); \
	       $(LD) $(LDFLAGS) -o $@ $(OBJs) $(SYSLIBS); \
	else \
	  echo $(LD) $(LDFLAGS) -o $@ $(OBJs) $(SYSLIBS); \
	       $(LD) $(LDFLAGS) -o $@ $(OBJs) $(SYSLIBS); \
	fi

libcdf.o: $(OBJs)
	@echo $(CC) $(LDFLAGS) -o $@ $(OBJs) $(SYSLIBS)
	      $(CC) $(LDFLAGS) -o $@ $(OBJs) $(SYSLIBS)

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

cdflib.o:	cdflib.c $(CDFLIBh)
cdfcre.o:	cdfcre.c $(CDFLIBh) $(CDFREVh)
cdfope.o:	cdfope.c $(CDFLIBh) $(CDFREVh)
cdfdel.o:	cdfdel.c $(CDFLIBh)
cdfclo.o:	cdfclo.c $(CDFLIBh)
cdfget.o:	cdfget.c $(CDFLIBh) $(CDFREVh)
cdfput1.o:	cdfput1.c $(CDFLIBh)
cdfput2.o:	cdfput2.c $(CDFLIBh)
cdfsel.o:	cdfsel.c $(CDFLIBh)
cdfcon.o:	cdfcon.c $(CDFLIBh)
cdfwrite.o:	cdfwrite.c $(CDFLIBh)
cdfread.o:	cdfread.c $(CDFLIBh)
cdfmisc1.o:	cdfmisc1.c $(CDFLIBh) $(CDFREVh)
cdfmisc2.o:	cdfmisc2.c $(CDFLIBh)
cdfmisc3.o:	cdfmisc3.c $(CDFLIBh)
cdfalloc.o:	cdfalloc.c $(CDFLIBh) $(CDFREVh)
cdftext.o:	cdftext.c $(CDFLIBh)
cdfcsi.o:	cdfcsi.c $(CDFLIBh)
cdffsi.o: 	cdffsi.c $(CDFLIBh)
cdffsi2.o:	cdffsi2.c $(CDFLIBh)
cdffsi3.o:	cdffsi3.c $(CDFLIBh)
cdffii.o: 	cdffii.c $(CDFLIBh)
cdfstr.o:	cdfstr.c $(CDFLIBh)
cdfed.o:  	cdfed.c $(CDFLIBh)
cdfvalid.o:  	cdfvalid.c $(CDFLIBh)
cdfhyper.o:	cdfhyper.c $(CDFLIBh)
cdfhyper64.o:	cdfhyper64.c $(CDFLIBh)
cdfmem.o:	cdfmem.c $(CDFLIBh)
cdfhuff.o:	cdfhuff.c $(CDFLIBh)
cdfrle.o:	cdfrle.c $(CDFLIBh)
cdfgzip.o:	cdfgzip.c $(CDFLIBh)
epochu.o:	epochu.c $(CDFLIBh)
epochuf.o:	epochuf.c $(CDFLIBh)
dirutils.o:	dirutils.c $(CDFLIBh)
vstream.o:	vstream.c $(CDFLIBh)
cdfalloc64.o:	cdfalloc64.c $(CDFLIBh) $(CDFREVh)
cdfclo64.o:	cdfclo64.c $(CDFLIBh)
cdfcon64.o:	cdfcon64.c $(CDFLIBh)
cdfcre64.o:	cdfcre64.c $(CDFLIBh) $(CDFREVh)
cdfdel64.o:	cdfdel64.c $(CDFLIBh)
cdfget64.o:	cdfget64.c $(CDFLIBh) $(CDFREVh)
cdfput1_64.o:	cdfput1_64.c $(CDFLIBh)
cdfput2_64.o:	cdfput2_64.c $(CDFLIBh)
cdfmisc1_64.o:	cdfmisc1_64.c $(CDFLIBh) $(CDFREVh)
cdfmisc2_64.o:	cdfmisc2_64.c $(CDFLIBh)
cdfmisc3_64.o:	cdfmisc3_64.c $(CDFLIBh)
cdfread64.o:	cdfread64.c $(CDFLIBh)
cdfsel64.o:	cdfsel64.c $(CDFLIBh)
cdfwrite64.o:	cdfwrite64.c $(CDFLIBh)
vstream64.o:	vstream64.c $(CDFLIBh)
cdfhuff64.o:	cdfhuff64.c $(CDFLIBh)
cdfrle64.o:	cdfrle64.c $(CDFLIBh)
cdfgzip64.o:	cdfgzip64.c $(CDFLIBh)
cdfcks.o:	cdfcks.c $(CDFLIBh) $(CDFMD5h)
cdfmd5.o:	cdfmd5.c $(CDFLIBh) $(CDFMD5h)
cdfsav.o:	cdfsav.c $(CDFLIBh)

ranlib.no:
shared.no:

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

clean:
	@-rm -f *.o
	@-rm -f core
	@-rm -f libcdf.a
	@-rm -f libcdf.so
	@-rm -f libcdf.sl
	@-rm -f libcdf.dylib

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