#-----------------	The GMT-system:	@(#)makefile	1.57  11 Aug 1995	--------------------
#
#		Makefile for GMT Version 3.0
#
#	Follow the instructions in this makefile to customize your setup.
#	To compile/link them, try "make all", then "make install".
#	When done, clean out directory with "make clean".
#	For man pages, try "make man", then "make man_install"
#
#	Authors:	Paul Wessel, SOEST, U. of Hawaii
#			Walter H. F. Smith, N/OES12, NOAA
#
#	Date:		1-JUN-1995
#-------------------------------------------------------------------------------
#	Default setup
#-------------------------------------------------------------------------------
#
AR	= ar
CC	= cc
CPP	= /usr/ccs/lib/cpp
INSTALL = install -s
RANLIB	= ranlib
#-------------------------------------------------------------------------------
#====>>	I.  Set NETCDF, BINDIR, LIBDIR, and MANDIR before making anything!
#           Uncomment SI if you want SI units as defaults
#-------------------------------------------------------------------------------
#	NETCDF  -> Where to find netcdf sub-directories lib and include
#	BINDIR  -> Where to install executable code
#	LIBDIR  -> Where GMT support data files are installed.  THis path
#		   must be hard, i.e., starting from root /
#	MANDIR  -> Where GMT manual pages are installed
#-------------------------------------------------------------------------------
#SI	= -DSI
NETCDF		= /usr/local
BINDIR		= /usr/local/gmt/bin
LIBDIR		= /usr/local/gmt/lib
#MANDIR		= /usr/local/gmt/man/manl
MANDIR      = /usr1/ahc/graphics/gmt/man
#-------------------------------------------------------------------------------
NETCDFLIB	= $(NETCDF)/lib
NETCDFINC	= $(NETCDF)/include
#-------------------------------------------------------------------------------
#====>>	II. You may need to modify these macros
#-------------------------------------------------------------------------------
#
# UNcomment INSTALL on machines that DONT use standard BSD install
#INSTALL	= cp

# UNcomment RANLIB on machines that DONT have ranlib.
#RANLIB	= touch

# UNcomment XDR if the xdr library must be included separately
# (Your xdr library may be called something else than -lsun)
#XDR	= -lsun

# UNcomment CC_OPT and set if you need machine-specific compiler switches
# (The current setting is _required_ for Dec Alphas)
# CC_OPT	= -ieee_with_inexact -Olimit 1500

#-------------------------------------------------------------------------------
#	!! STOP EDITING HERE, THE REST IS FIXED !!
#-------------------------------------------------------------------------------
SHELL=/bin/sh
PLACE	  = .
MAKE_OPTS = RANLIB=$(RANLIB) INSTALL=$(INSTALL) XDR=$(XDR)
CPFLAGS	  = -DDATE="\"1 August 1995\"" $(SI)
CFLAGS    = -O -I$(NETCDFINC) -DLIBDIR=\"$(LIBDIR)\"   $(SI) $(CC_OPT)
CDF	  = -L$(NETCDFLIB) -lnetcdf $(XDR)

PS	= -lpsl
GMT	= -lgmt

LIB_C	= gmt_init.c \
	  gmt_map.c \
	  gmt_plot.c \
	  gmt_support.c \
	  gmt_stat.c \
	  gmt_vector.c \
	  gmt_grdio.c \
	  gmt_customio.c \
	  gmt_cdf.c \
	  gmt_shore.c \
	  fourt.c

GMT_H	= gmt.h \
	  gmt_shore.h \
	  gmt_project.h \
	  gmt_grd.h \
	  gmt_funcnames.h \
	  gmt_colors.h \
	  gmt_grdio.h \
	  gmt_customio.h \
	  gmt_bcr.h \
	  pslib.h

GMT_I	= gmt_init.h \
	  gmt_defaults.h \
	  PS_font_names.h \
	  PS_font_heights.h

PS_H	= pslib.h \
	  pslib_inc.h \
	  PS_font_names.h \
	  PS_font_heights.h

USER_C	= blockmean.c blockmedian.c filter1d.c fitcircle.c \
	  grdfilter.c gmtdefaults.c gmtset.c grd2cpt.c grd2xyz.c grdcontour.c grdcut.c grdclip.c grdedit.c \
	  grdfft.c grdgradient.c grdhisteq.c grdimage.c grdinfo.c grdlandmask.c grdmask.c grdtrack.c grdreformat.c \
	  grdmath.c grdpaste.c grdproject.c grdsample.c grdtrend.c grdvector.c grdview.c makecpt.c \
	  mapproject.c minmax.c nearneighbor.c project.c psbasemap.c psclip.c pscoast.c pshistogram.c \
	  psmask.c psmegaplot.c psrose.c psscale.c pstext.c pscontour.c pswiggle.c psxy.c psxyz.c \
	  sample1d.c spectrum1d.c splitxyz.c surface.c trend1d.c trend2d.c triangulate.c xyz2grd.c

#-------------------------------------------------------------------------------
#	object file dependencies
#-------------------------------------------------------------------------------

LIB_O	= ${LIB_C:.c=.o}

USER_O	= ${USER_C:.c=.o}

USER	= ${USER_C:.c=}

$(LIB_O):	$(GMT_H) $(GMT_I)

$(USER_O):	$(GMT_H)

#-------------------------------------------------------------------------------

LIB	= libpsl.a libgmt.a

#-------------------------------------------------------------------------------

all:		libs $(USER)

install:	all
		for i in $(USER); do \
			$(INSTALL) $$i $(BINDIR); \
		done
		cp fixgmtdefs $(BINDIR)

clean:
		rm -f $(USER) *.o

#-------------------------------------------------------------------------------
#	libraries
#-------------------------------------------------------------------------------

libs:		$(LIB)

libpsl.a:	pslib.o
		$(AR) cvr libpsl.a $?
		$(RANLIB) libpsl.a

pslib.o:	pslib.c $(PS_H)
		$(CC) $(CFLAGS) -c pslib.c

libgmt.a:	$(LIB_O)
		$(AR) cvr $@ $?
		$(RANLIB) $@

#-------------------------------------------------------------------------------
#	program dependencies
#-------------------------------------------------------------------------------

$(USER):	$(LIB) $$@.o
		$(CC) $(CFLAGS) $@.o -L. -lpsl -lgmt $(CDF) -lm -o $(PLACE)/$@

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

#-------------------------------------------------------------------------------
#	Man page management
#-------------------------------------------------------------------------------
#

MAN =  blockmean.man \
	blockmedian.man \
	filter1d.man \
	fitcircle.man \
	gmt.man \
	gmtdefaults.man \
	gmtset.man \
	grd2cpt.man \
	grd2xyz.man \
	grdfilter.man \
	grdclip.man \
	grdcontour.man \
	grdcut.man \
	grdedit.man \
	grdfft.man \
	grdgradient.man \
	grdhisteq.man \
	grdimage.man \
	grdinfo.man \
	grdlandmask.man \
	grdmask.man \
	grdmath.man \
	grdpaste.man \
	grdproject.man \
	grdreformat.man \
	grdsample.man \
	grdtrack.man \
	grdtrend.man \
	grdvector.man \
	grdview.man \
	makecpt.man \
	mapproject.man \
	minmax.man \
	nearneighbor.man \
	project.man \
	psbasemap.man \
	psclip.man \
	pscoast.man \
	pscontour.man \
	pshistogram.man \
	psmask.man \
	psmegaplot.man \
	psrose.man \
	psscale.man \
	pstext.man \
	pswiggle.man \
	psxy.man \
	psxyz.man \
	sample1d.man \
	spectrum1d.man \
	splitxyz.man \
	surface.man \
	trend1d.man \
	trend2d.man \
	triangulate.man \
	xyz2grd.man \
	pslib.man

M_INC = explain_-B.txt \
	explain_-b.txt \
	explain_-H.txt \
	explain_-J.txt \
	explain_-j.txt \
	explain_-Jz.txt \
	explain_-K.txt \
	explain_-O.txt \
	explain_-P.txt \
	explain_-R.txt \
	explain_-r.txt \
	explain_-U.txt \
	explain_-V.txt \
	explain_-XY.txt \
	explain_-c.txt \
	explain_-t.txt \
	refs.i

MANL	= ${MAN:.man=}

man:	$(MAN)

man_install:
		for i in $(MANL); do \
			cp $$i.man $(MANDIR)/$$i.l; \
		done

man_clean:
		rm -f *.man

.SUFFIXES: .txt .man

.txt.man:
	$(CPP) $(CPFLAGS) $< | grep -v '^#' | awk '{ if (NF) print $0}' > $(@F:.txt=.man)
