#                 ****************************************
#                               HydroBase  
#                 ****************************************
#                    Make file for HydroBase Software
#
#                             Ruth Gorski Curry
#                      Woods Hole Oceanographic Institution
#                           Woods Hole, MA  02543
#
#
#-----------------------------------------------------------------------------
#  define these paths before making anything ...
#-----------------------------------------------------------------------------
INCLUDE= .
NETCDFLIB = /usr/local/lib
NETCDFINC = /usr/local/include
BINDIR = /users/leslie/bin
#
#-----------------------------------------------------------------------------

TARGET_ARCH= -sun4
DEBUG= 
#DEBUG=-g   #to turn on debugging
#
# these define the compiler commands, flags and system libraries needed ...
#   appropriate options for some systems have been included ...
#   UNcomment the set of options appropriate to your machine
#
#  The C modules were developed on a Sun and are NOT ansi standard.  Be 
#  sure to specify the compiler option for old (K&R) style C code.
#
#  SunOS 4.1.x ...  (K&R is the form of C that was supported )
#
CC= cc           # invoke your C compiler
CFLAGS=-c -I$(INCLUDE)   # set the compile and include flags 
FC= f77          # invoke your fortran compiler
FFLAGS= -c       # set the compile only flag
LINK = $(CC)     # C handles the linking in SunOS
LIBS=
#LIBS= -lm        # include the Math libraries
#LIBS= /usr/lib/libm.a 
LDFLAGS =        # 
#
#  Solaris 2.x ...
#
#CC= cc           # invoke your C compiler
#CFLAGS=-c -I$(INCLUDE)   # compile and include flags
#FC= f77          # invoke your fortran compiler
#FFLAGS= -c       # set the compile-only flag
#LINK = $(FC)     # Fortran handles the C-fortran interface in linking 
#LIBS= -lV77 -lF77 -lxt -lm    # include the Math libraries
#LDFLAGS =        # 
#
#   HPUX 9.x ...
#
#CC= cc                     # invoke your C compiler
#CFLAGS=-c -I$(INCLUDE) +O3 -DSYSV -Ac    # for System V 
#FC= f77                    # invoke your fortran compiler
#FFLAGS= -c +ppu +U77       # +ppu option adds underscore to fortran functions
#LINK= /bin/ld /lib/crt0.o  # ld has to handle C-Fortran interface
#LDFLAGS = 
#LIBS= -lcl -lisamstub -lm -lc
#
#   SGI Irix 5.2 ...
#
#CC= cc -cckr                # invoke your C compiler
#CFLAGS= -c -I$(INCLUDE) -O  # set compile flag, INCLUDE path, optimize, ...
#FC= f77                     # invoke your fortran compiler
#FFLAGS= -c -O -static       # set compile flag
#LINK= cc                    # linker: cc, f77, or ld usually
##LDFLAGS =                  # any linker flags
#LIBS= -lX11 -lm -lsun -lbsd   # math, c libs, and any C-Fortran interface libs
#
#   OTHER? ...
#
#CC=                        # invoke your C compiler
#CFLAGS=-c -I$(INCLUDE) -O  # set compile-only flag, INCLUDE path, optimize, ...
#FC=                        # invoke your fortran compiler
#FFLAGS= -c                 # set compile-only  flag 
#LINK=                      # linker: cc, f77, or ld usually
#LDFLAGS =                  # any linker flags
#LIBS=                      # math, c libs, and any C-Fortran interface libs
##-------------------------------------------------------------------------------
#       !! STOP EDITING HERE, THE REST IS FIXED !!
#-----------------------------------------------------------------------------
#
CDF_H = $(NETCDFINC)/netcdf.h
CDF_L = -L$(NETCDFLIB) -lnetcdf 
HYDRO_H = $(INCLUDE)/hydrobase.h
HYDRO_CDF_H = $(INCLUDE)/hydro_cdf.h
PROG_SRC =   cdf2asc.c cdfinfo.c extract.c findblanks.c getpos.c grid3d.c gridsurf.c  invertblanks.c ms10sort.c ms5sort.c ms1sort.c ms2_5sort.c preblank.c propcalc.c smoothsurf.c  surfdiff.c timeprop.c xy4gmt.c
PROG_OBJ = ${PROG_SRC:.c=.o}
PROGRAMS = ${PROG_SRC:.c=}
UTILS_C = hydro_utils.c prop_subs.c hydro_cdf.c 
UTILS_F =  phyprops.f eos80d.f
UTILS_OBJ = ${UTIL_C:.c=.o} ${UTILS_F:.f=.o}

#-----------------------------------------------------------------------------
#
hydrobase:	$(PROGRAMS)
#
install:	hydrobase
	chmod 755 $(PROGRAMS)
	mv $(PROGRAMS) $(BINDIR)
	
#
clean:
	rm  -f $(PROG_OBJ) $(UTILS_OBJ) $(PROGRAMS) $(QC_OBJ)
#-----------------------------------------------------------------------------
#
#
#   PROGRAM DEPENDENCIES
#
cdfinfo:	cdfinfo.o hydro_cdf.o prop_subs.o phyprops.o eos80d.o
	$(LINK) $(LDFLAGS) cdfinfo.o hydro_cdf.o prop_subs.o phyprops.o  eos80d.o $(CDF_L) -o cdfinfo $(LIBS)
#
cdf2asc:	cdf2asc.o hydro_utils.o hydro_cdf.o prop_subs.o phyprops.o eos80d.o
	$(LINK) $(LDFLAGS) cdf2asc.o hydro_utils.o hydro_cdf.o prop_subs.o phyprops.o  eos80d.o $(CDF_L) -o cdf2asc $(LIBS)
#
extract:	extract.o hydro_utils.o prop_subs.o phyprops.o eos80d.o
	$(LINK) $(LDFLAGS) extract.o  hydro_utils.o prop_subs.o phyprops.o eos80d.o -o extract $(LIBS)
#
findblanks:		findblanks.o 
	$(LINK) $(LDFLAGS) findblanks.o $(LIBS) -o findblanks 
#
getpos:		getpos.o hydro_utils.o prop_subs.o phyprops.o eos80d.o
	$(LINK) $(LDFLAGS) getpos.o  hydro_utils.o prop_subs.o phyprops.o eos80d.o -o getpos $(LIBS)
#
grid3d:		grid3d.o hydro_cdf.o prop_subs.o hydro_utils.o phyprops.o eos80d.o
	$(LINK) $(LDFLAGS) grid3d.o hydro_cdf.o prop_subs.o phyprops.o eos80d.o hydro_utils.o   $(CDF_L) -o grid3d $(LIBS) 
#
gridsurf: 	gridsurf.o phyprops.o prop_subs.o hydro_cdf.o hydro_utils.o eos80d.o
	$(LINK) $(LDFLAGS)  gridsurf.o phyprops.o prop_subs.o hydro_cdf.o hydro_utils.o eos80d.o   $(CDF_L)  -o gridsurf $(LIBS)
#
invertblanks:		invertblanks.o 
	$(LINK) $(LDFLAGS) invertblanks.o $(LIBS) -o invertblanks 
#
ms10sort:	ms10sort.o hydro_utils.o prop_subs.o phyprops.o eos80d.o
	$(LINK) $(LDFLAGS) ms10sort.o  hydro_utils.o prop_subs.o phyprops.o eos80d.o -o ms10sort $(LIBS)
#
ms5sort:	ms5sort.o hydro_utils.o prop_subs.o phyprops.o eos80d.o
	$(LINK) $(LDFLAGS) ms5sort.o  hydro_utils.o prop_subs.o phyprops.o eos80d.o -o ms5sort $(LIBS)
#
ms2_5sort:	ms2_5sort.o hydro_utils.o prop_subs.o phyprops.o eos80d.o
	$(LINK) $(LDFLAGS) ms2_5sort.o  hydro_utils.o prop_subs.o phyprops.o eos80d.o -o ms2_5sort $(LIBS)
#
ms1sort:	ms1sort.o hydro_utils.o prop_subs.o phyprops.o eos80d.o
	$(LINK) $(LDFLAGS) ms1sort.o  hydro_utils.o prop_subs.o phyprops.o eos80d.o -o ms1sort $(LIBS)
#
preblank:	preblank.o prop_subs.o phyprops.o eos80d.o
	$(LINK) $(LDFLAGS) preblank.o prop_subs.o phyprops.o  eos80d.o $(LIBS) -o preblank 
#
propcalc: 	propcalc.o phyprops.o prop_subs.o hydro_utils.o eos80d.o
	$(LINK) $(LDFLAGS)  propcalc.o phyprops.o prop_subs.o hydro_utils.o eos80d.o   $(CDF_L)  -o propcalc $(LIBS)
#
smoothsurf:	smoothsurf.o prop_subs.o phyprops.o eos80d.o
	$(LINK) $(LDFLAGS) smoothsurf.o prop_subs.o phyprops.o eos80d.o $(LIBS) -o smoothsurf
#	 
surfdiff:		surfdiff.o 
	$(LINK) $(LDFLAGS) surfdiff.o $(LIBS) -o surfdiff 
#
timeprop: 	timeprop.o phyprops.o prop_subs.o hydro_utils.o eos80d.o
	$(LINK) $(LDFLAGS)  timeprop.o phyprops.o prop_subs.o  hydro_utils.o eos80d.o  $(CDF_L) $(LIBS)  -o timeprop
#
xy4gmt:		xy4gmt.o phyprops.o prop_subs.o hydro_utils.o eos80d.o
	$(LINK) $(LDFLAGS)  xy4gmt.o phyprops.o prop_subs.o  hydro_utils.o eos80d.o   $(CDF_L)  -o xy4gmt $(LIBS)
#
#
#
#
#   OBJECT DEPENDENCIES
#
cdfinfo.o:       cdfinfo.c $(HYDRO_CDF_H)
	$(CC) $(CFLAGS) $(DEBUG) cdfinfo.c
#
cdf2asc.o:       cdf2asc.c $(HYDRO_CDF_H) $(HYDRO_H)
	$(CC) $(CFLAGS) $(DEBUG) cdf2asc.c
#
eos80d.o:	eos80d.f
	$(FC) $(FFLAGS) eos80d.f
#
extract.o:	extract.c $(HYDRO_H)
	$(CC)  $(CFLAGS) $(DEBUG) extract.c
#
findblanks.o:	findblanks.c 
	$(CC)  $(CFLAGS) $(DEBUG) findblanks.c
#
findsta.o:	findsta.c $(HYDRO_H)
	$(CC)  $(CFLAGS) $(DEBUG) findsta.c
#
getpos.o:	getpos.c $(HYDRO_H)
	$(CC)  $(CFLAGS) $(DEBUG) getpos.c
#
grid3d.o:	grid3d.c  $(HYDRO_H)
	$(CC) $(CFLAGS) $(DEBUG) grid3d.c
#
gridsurf.o:	gridsurf.c   $(HYDRO_H) $(HYDRO_CDF_H)
	$(CC) $(CFLAGS) $(DEBUG) gridsurf.c
#
hydro_cdf.o:	hydro_cdf.c  $(HYDRO_H) $(HYDRO_CDF_H) $(CDF_H)
	$(CC) $(CFLAGS)  -I$(NETCDFINC) $(DEBUG) hydro_cdf.c
#
hydro_utils.o:	hydro_utils.c $(HYDRO_H)
	$(CC) $(CFLAGS) $(DEBUG) hydro_utils.c
#
invertblanks.o:	invertblanks.c 
	$(CC)  $(CFLAGS) $(DEBUG) invertblanks.c
#
ms10sort.o:	ms10sort.c $(HYDRO_H)
	$(CC)  $(CFLAGS) $(DEBUG) ms10sort.c
#
ms5sort.o:	ms5sort.c $(HYDRO_H)
	$(CC)  $(CFLAGS) $(DEBUG) ms5sort.c
#
ms2_5sort.o:	ms2_5sort.c $(HYDRO_H)
	$(CC)  $(CFLAGS) $(DEBUG) ms2_5sort.c
#
ms1sort.o:	ms1sort.c $(HYDRO_H)
	$(CC)  $(CFLAGS) $(DEBUG) ms1sort.c
#
phyprops.o:	phyprops.f
	$(FC) $(FFLAGS) phyprops.f
#
preblank.o:	preblank.c  $(HYDRO_H)
	$(CC) $(CFLAGS) $(DEBUG) preblank.c
#
propcalc.o:	propcalc.c $(HYDRO_H)
	$(CC)  $(CFLAGS) $(DEBUG) propcalc.c
#
prop_subs.o:	prop_subs.c $(HYDRO_H)
	$(CC) $(CFLAGS) $(DEBUG) prop_subs.c
#
smoothsurf.o:	smoothsurf.c  $(HYDRO_H)
	$(CC) $(CFLAGS) $(DEBUG) smoothsurf.c
#
surfdiff.o:	surfdiff.c 
	$(CC)  $(CFLAGS) $(DEBUG) surfdiff.c
#
timeprop.o:	timeprop.c   $(HYDRO_H)
	$(CC) $(CFLAGS) $(DEBUG) timeprop.c
#
xy4gmt.o:	xy4gmt.c   $(HYDRO_H)
	$(CC) $(CFLAGS) $(DEBUG) xy4gmt.c
