# Makefile for Linux using ELF shared libraries # 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 #------------------------------------------------------------------------------- # CC = gcc CPP = /lib/cpp INSTALL = install #------------------------------------------------------------------------------- #====>> 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 prefix = /usr/local/gmt BINDIR = $(prefix)/bin LIBDIR = $(prefix)/lib MANDIR = $(prefix)/man/manl #------------------------------------------------------------------------------- NETCDF = /usr/local NETCDFLIB = $(NETCDF)/lib NETCDFINC = $(NETCDF)/include CC_OPT = -O2 PIC = -fPIC #------------------------------------------------------------------------------- # !! STOP EDITING HERE, THE REST IS FIXED !! #------------------------------------------------------------------------------- CPFLAGS = -DDATE="\"1 August 1995\"" $(SI) CFLAGS = -I$(NETCDFINC) -DLIBDIR=\"$(LIBDIR)\" $(SI) $(CC_OPT) LDFLAGS = -Wl,-rpath,$(BINDIR) CDF = -L$(NETCDFLIB) -lnetcdf 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 = libpsl.so libgmt.so #------------------------------------------------------------------------------- all: $(USER) install: all for i in $(USER); do \ $(INSTALL) $$i $(BINDIR); \ done $(INSTALL) psl.so $(BINDIR) $(INSTALL) gmt.so $(BINDIR) cp fixgmtdefs $(BINDIR) clean: rm -f $(USER) *.o $(LIB) #------------------------------------------------------------------------------- # libraries #------------------------------------------------------------------------------- libs: $(LIB) libpsl.so: pslib.o $(CC) -shared -o $@ pslib.o libgmt.so: $(LIB_O) $(CC) -shared -o $@ $(LIB_O) SHARED_COMPILE = $(CC) $(CFLAGS) $(PIC) -c $*.c pslib.o: pslib.c $(PS_H) ; $(SHARED_COMPILE) gmt_init.o: gmt_init.c $(GMT_H) $(GMT_I) ; $(SHARED_COMPILE) gmt_map.o: gmt_map.c $(GMT_H) $(GMT_I) ; $(SHARED_COMPILE) gmt_plot.o: gmt_plot.c $(GMT_H) $(GMT_I) ; $(SHARED_COMPILE) gmt_support.o: gmt_support.c $(GMT_H) $(GMT_I) ; $(SHARED_COMPILE) gmt_stat.o: gmt_stat.c $(GMT_H) $(GMT_I) ; $(SHARED_COMPILE) gmt_vector.o: gmt_vector.c $(GMT_H) $(GMT_I) ; $(SHARED_COMPILE) gmt_grdio.o: gmt_grdio.c $(GMT_H) $(GMT_I) ; $(SHARED_COMPILE) gmt_customio.o: gmt_customio.c $(GMT_H) $(GMT_I) ; $(SHARED_COMPILE) gmt_cdf.o: gmt_cdf.c $(GMT_H) $(GMT_I) ; $(SHARED_COMPILE) gmt_shore.o: gmt_shore.c $(GMT_H) $(GMT_I) ; $(SHARED_COMPILE) fourt.o: fourt.c $(GMT_H) $(GMT_I) ; $(SHARED_COMPILE) #------------------------------------------------------------------------------- # program dependencies #------------------------------------------------------------------------------- USER_COMPILE = $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $@.c $(LIB) $(CDF) -lm blockmean: blockmean.c $(LIB) $(GMT_H) ; $(USER_COMPILE) blockmedian: blockmedian.c $(LIB) $(GMT_H) ; $(USER_COMPILE) filter1d: filter1d.c $(LIB) $(GMT_H) ; $(USER_COMPILE) fitcircle: fitcircle.c $(LIB) $(GMT_H) ; $(USER_COMPILE) grdfilter: grdfilter.c $(LIB) $(GMT_H) ; $(USER_COMPILE) gmtdefaults: gmtdefaults.c $(LIB) $(GMT_H) ; $(USER_COMPILE) gmtset: gmtset.c $(LIB) $(GMT_H) ; $(USER_COMPILE) grd2cpt: grd2cpt.c $(LIB) $(GMT_H) ; $(USER_COMPILE) grd2xyz: grd2xyz.c $(LIB) $(GMT_H) ; $(USER_COMPILE) grdcontour: grdcontour.c $(LIB) $(GMT_H) ; $(USER_COMPILE) grdcut: grdcut.c $(LIB) $(GMT_H) ; $(USER_COMPILE) grdclip: grdclip.c $(LIB) $(GMT_H) ; $(USER_COMPILE) grdedit: grdedit.c $(LIB) $(GMT_H) ; $(USER_COMPILE) grdfft: grdfft.c $(LIB) $(GMT_H) ; $(USER_COMPILE) grdgradient: grdgradient.c $(LIB) $(GMT_H) ; $(USER_COMPILE) grdhisteq: grdhisteq.c $(LIB) $(GMT_H) ; $(USER_COMPILE) grdimage: grdimage.c $(LIB) $(GMT_H) ; $(USER_COMPILE) grdinfo: grdinfo.c $(LIB) $(GMT_H) ; $(USER_COMPILE) grdlandmask: grdlandmask.c $(LIB) $(GMT_H) ; $(USER_COMPILE) grdmask: grdmask.c $(LIB) $(GMT_H) ; $(USER_COMPILE) grdtrack: grdtrack.c $(LIB) $(GMT_H) ; $(USER_COMPILE) grdreformat: grdreformat.c $(LIB) $(GMT_H) ; $(USER_COMPILE) grdmath: grdmath.c $(LIB) $(GMT_H) ; $(USER_COMPILE) grdpaste: grdpaste.c $(LIB) $(GMT_H) ; $(USER_COMPILE) grdproject: grdproject.c $(LIB) $(GMT_H) ; $(USER_COMPILE) grdsample: grdsample.c $(LIB) $(GMT_H) ; $(USER_COMPILE) grdtrend: grdtrend.c $(LIB) $(GMT_H) ; $(USER_COMPILE) grdvector: grdvector.c $(LIB) $(GMT_H) ; $(USER_COMPILE) grdview: grdview.c $(LIB) $(GMT_H) ; $(USER_COMPILE) makecpt: makecpt.c $(LIB) $(GMT_H) ; $(USER_COMPILE) mapproject: mapproject.c $(LIB) $(GMT_H) ; $(USER_COMPILE) minmax: minmax.c $(LIB) $(GMT_H) ; $(USER_COMPILE) nearneighbor: nearneighbor.c $(LIB) $(GMT_H) ; $(USER_COMPILE) project: project.c $(LIB) $(GMT_H) ; $(USER_COMPILE) psbasemap: psbasemap.c $(LIB) $(GMT_H) ; $(USER_COMPILE) psclip: psclip.c $(LIB) $(GMT_H) ; $(USER_COMPILE) pscoast: pscoast.c $(LIB) $(GMT_H) ; $(USER_COMPILE) pshistogram: pshistogram.c $(LIB) $(GMT_H) ; $(USER_COMPILE) psmask: psmask.c $(LIB) $(GMT_H) ; $(USER_COMPILE) psmegaplot: psmegaplot.c $(LIB) $(GMT_H) ; $(USER_COMPILE) psrose: psrose.c $(LIB) $(GMT_H) ; $(USER_COMPILE) psscale: psscale.c $(LIB) $(GMT_H) ; $(USER_COMPILE) pstext: pstext.c $(LIB) $(GMT_H) ; $(USER_COMPILE) pscontour: pscontour.c $(LIB) $(GMT_H) ; $(USER_COMPILE) pswiggle: pswiggle.c $(LIB) $(GMT_H) ; $(USER_COMPILE) psxy: psxy.c $(LIB) $(GMT_H) ; $(USER_COMPILE) psxyz: psxyz.c $(LIB) $(GMT_H) ; $(USER_COMPILE) sample1d: sample1d.c $(LIB) $(GMT_H) ; $(USER_COMPILE) spectrum1d: spectrum1d.c $(LIB) $(GMT_H) ; $(USER_COMPILE) splitxyz: splitxyz.c $(LIB) $(GMT_H) ; $(USER_COMPILE) surface: surface.c $(LIB) $(GMT_H) ; $(USER_COMPILE) trend1d: trend1d.c $(LIB) $(GMT_H) ; $(USER_COMPILE) trend2d: trend2d.c $(LIB) $(GMT_H) ; $(USER_COMPILE) triangulate: triangulate.c $(LIB) $(GMT_H) ; $(USER_COMPILE) xyz2grd: xyz2grd.c $(LIB) $(GMT_H) ; $(USER_COMPILE) #------------------------------------------------------------------------------- # 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)