#!/bin/sh # # Procedure to create PGPLOT makefile # #----------------------------------------------------------------------- if test $# -lt 1; then echo "Usage: makemake pgplot_dist operating_system configuration" echo " pgplot_dist = The top level directory of the PGPLOT distribution." echo " (ie. The directory in which makemake was found!)." echo " operating_system = Operating system name (omit this to get a list)." echo " configuration = Optional if there is only one for the specified OS." echo " (Otherwise you will be presented with a list)" exit 1 fi SRC=$1 # Check for the required PGPLOT sub-directories. for dir in drivers examples fonts src sys ; do if test ! -d $SRC/$dir; then echo "Failed to find required PGPLOT directory $SRC/$dir" echo "The first argument must name the PGPLOT root directory." exit 1 fi done # The second argument is the name of the target operating system. if test $# -ge 2 -a -d $SRC/sys_$2; then OS=$2 SYSDIR=$SRC/sys_$OS else echo 'The second argument must be one of the following operating systems:' cd $SRC echo " `echo sys_* | sed 's/sys_//g'`" exit 1 fi if test -r $SYSDIR/aaaread.me; then echo 'For additional information, read file' $SYSDIR/aaaread.me fi # The third argument is optional if there is only a single configuration # but must be specified otherwise. if test $# -ge 3 -a -f "$SYSDIR/$3.conf"; then CONFIG="$SYSDIR/$3.conf" elif test $# -lt 3 -a -f ./local.conf; then CONFIG="./local.conf" elif test $# -lt 3 -a -f "`ls $SYSDIR/*.conf`"; then CONFIG="`ls $SYSDIR/*.conf`" else cd $SRC/sys_$OS config_files=`echo *.conf` if test "$config_files" = '*.conf'; then echo "No configuration files found for $OS" else echo "The third argument for $OS must be one of the following configuration types:" for file in $config_files; do echo `echo $file | sed 's/\.conf//'` - `head -1 $file | sed 's/#//'` done fi exit 1 fi # By default the PGPLOT library is initially placed in the current # The demos should be explicitly linked against this library. PGPLOT_LIB="-L\`pwd\` -lpgplot" CPGPLOT_LIB="-L\`pwd\` -lcpgplot -lpgplot" # List the default make targets. DEFAULT_TARGETS="lib grfont.dat prog pgplot.doc" # Get the configuration variables. echo "Reading configuration file: $CONFIG" . $CONFIG # List the files that will need to be installed by the person who # is running this script. INSTALL_LIST="libpgplot.a $SHARED_LIB grfont.dat rgb.txt" #----------------------------------------------------------------------- # PGPLOT source directories. #----------------------------------------------------------------------- SRCDIR=$SRC/src OBSDIR=$SRC/obssrc DEMDIR=$SRC/examples FNTDIR=$SRC/fonts DRVDIR=$SRC/drivers PGDDIR=$SRC/pgdispd GENDIR=$SRC/sys #----------------------------------------------------------------------- # Device drivers #----------------------------------------------------------------------- ARDRIV="ardriv.o" BCDRIV="bcdriv.o" CADRIV="cadriv.o" CCDRIV="ccdriv.o" CGDRIV="cgdriv.o" CWDRIV="cwdriv.o" EPDRIV="epdriv.o" EXDRIV="exdriv.o" GCDRIV="gcdriv.o" GIDRIV="gidriv.o" GLDRIV="gldriv.o" GODRIV="godriv.o" GRDRIV="grdriv.o" GVDRIV="gvdriv.o" HGDRIV="hgdriv.o" HIDRIV="hidriv.o" HJDRIV="hjdriv.o" HPDRIV="hpdriv.o" IKDRIV="ikdriv.o" IMDRIV="imdriv.o" IRDRIV="irdriv.o" LADRIV="ladriv.o" LHDRIV="lhdriv.o" LIDRIV="lidriv.o" LJDRIV="ljdriv.o" LNDRIV="lndriv.o" LSDRIV="lsdriv.o" LVDRIV="lvdriv.o" LXDRIV="lxdriv.o" MFDRIV="mfdriv.o" NEDRIV="nedriv.o nexsup.o" NUDRIV="nudriv.o" PGDRIV="pgdriv.o" PKDRIV="pkdriv.o" PNDRIV="pndriv.o" PPDRIV="ppdriv.o" PSDRIV="psdriv.o" PXDRIV="pxdriv.o" PZDRIV="pzdriv.o" QMDRIV="qmdriv.o" SVDRIV="svdriv.o svblock.o" TFDRIV="tfdriv.o" TODRIV="todriv.o" TTDRIV="ttdriv.o" TXDRIV="txdriv.o" VADRIV="vadriv.o" VBDRIV="vbdriv.o" VEDRIV="vedriv.o" VIDRIV="vidriv.o" VTDRIV="vtdriv.o" WDDRIV="wddriv.o" WSDRIV="wsdriv.o" X2DRIV="x2driv.o figdisp_comm.o" XEDRIV="xedriv.o" XWDRIV="xwdriv.o" ZEDRIV="zedriv.o" XMDRIV="xmdriv.o pgxwin.o" XADRIV="xadriv.o pgxwin.o" TKDRIV="tkdriv.o pgxwin.o" RVDRIV="rvdriv.o pgxwin.o" # We need a drivers.list file in the current directory, from which to # determine the drivers to be compiled. if test -f drivers.list; then echo 'Selecting uncommented drivers from ./drivers.list' else cp $SRC/drivers.list . echo 'Please specify required drivers by un-commenting them in ./drivers.list.' echo "Then re-run $0" exit 1 fi # Get a list of driver names. DRIV_LIST=`awk '/^[^!]/{printf("$%s\n", $1)}' drivers.list | sort | uniq` echo "Found drivers `echo $DRIV_LIST | sed 's/\\\$//g'`" # Convert the list of drivers to the list of dependent object files. # This involves expanding the $xxDRIV driver-dependency variables, # and removing duplicate object files. DRIV_LIST=`eval echo $DRIV_LIST | awk '{for(i=1;i<=NF;i++) print $i}' | sort | uniq | awk '{printf("%s ", $0)} END{printf("\n")}'` # Add server targets to the default target list if their respective # drivers have been selected. if (echo $DRIV_LIST | grep -s x2driv 2>&1 1>/dev/null); then DEFAULT_TARGETS="$DEFAULT_TARGETS pgdisp" INSTALL_LIST="$INSTALL_LIST pgdisp" fi if (echo $DRIV_LIST | grep -s xwdriv 2>&1 1>/dev/null); then DEFAULT_TARGETS="$DEFAULT_TARGETS pgxwin_server" INSTALL_LIST="$INSTALL_LIST pgxwin_server" fi if (echo $DRIV_LIST | grep -s xmdriv 2>&1 1>/dev/null); then DEFAULT_TARGETS="$DEFAULT_TARGETS libXmPgplot.a pgmdemo" INSTALL_LIST="$INSTALL_LIST libXmPgplot.a XmPgplot.h" fi if (echo $DRIV_LIST | grep -s xadriv 2>&1 1>/dev/null); then DEFAULT_TARGETS="$DEFAULT_TARGETS libXaPgplot.a pgawdemo" INSTALL_LIST="$INSTALL_LIST libXaPgplot.a XaPgplot.h" fi if (echo $DRIV_LIST | grep -s tkdriv 2>&1 1>/dev/null); then DEFAULT_TARGETS="$DEFAULT_TARGETS libtkpgplot.a pgtkdemo pgtkdemo.tcl" INSTALL_LIST="$INSTALL_LIST libtkpgplot.a tkpgplot.h" fi if (echo $DRIV_LIST | grep -s rvdriv 2>&1 1>/dev/null); then DEFAULT_TARGETS="$DEFAULT_TARGETS librvpgplot.a rvpgplot.h" INSTALL_LIST="$INSTALL_LIST librvpgplot.a rvpgplot.h" fi # PNDRIV requires extra libraries and include files if (echo $DRIV_LIST | grep -s pndriv 2>&1 1>/dev/null); then PGPLOT_LIB="$PGPLOT_LIB -lpng -lz" CPGPLOT_LIB="$CPGPLOT_LIB -lpng -lz" fi # Create a new grexec.f that calls the above drivers. awk -f $SRC/grexec.awk drivers.list > grexec.f # Some FORTRAN compilers expect their include files to appear in the # directory containing the source code. Others expect them to be in the # directory in which you actually do the compilation. To allow both cases # copy the include files into the current directory. cp $SRCDIR/*.inc . #----------------------------------------------------------------------- # Routine lists: # PG_ROUTINES: basic PGPLOT routines (Fortran-77). # PG_NON_STANDARD: non-Fortran-77 aliases for basic routines. # GR_ROUTINES: support routines, not called directly by applications # (Fortran-77). # SYSTEM_ROUTINES: potentially non-portable routines, usually # operating-system dependent. # OBSOLETE_ROUTINES: obsolete routines used by some programs. # DEMOS: demonstration programs #----------------------------------------------------------------------- PG_ROUTINES="\ pg_set_dash_freq.o\ pgarro.o\ pgask.o \ pgaxis.o\ pgaxlg.o\ pgband.o\ pgbbuf.o\ pgbeg.o \ pgbin.o \ pgbox.o \ pgbox1.o\ pgcirc.o\ pgcl.o \ pgclos.o\ pgcn01.o\ pgcnsc.o\ pgconb.o\ pgconf.o\ pgconl.o\ pgcons.o\ pgcont.o\ pgconx.o\ pgcp.o \ pgctab.o\ pgcurs.o\ pgdraw.o\ pgebuf.o\ pgend.o \ pgenv.o \ pgeras.o\ pgerr1.o\ pgerrb.o\ pgerrx.o\ pgerry.o\ pgetxt.o\ pgfunt.o\ pgfunx.o\ pgfuny.o\ pggray.o\ pghi2d.o\ pghis1.o\ pghist.o\ pghtch.o\ pgiden.o\ pgimag.o\ pginit.o\ pglab.o \ pglcur.o\ pgldev.o\ pglen.o \ pgline.o\ pgmove.o\ pgmtxt.o\ pgncur.o\ pgnoto.o\ pgnpl.o \ pgnumb.o\ pgolin.o\ pgopen.o\ pgpage.o\ pgpanl.o\ pgpap.o \ pgpixl.o\ pgpnts.o\ pgpoly.o\ pgpt.o \ pgpt1.o \ pgptxt.o\ pgqah.o \ pgqcf.o \ pgqch.o \ pgqci.o \ pgqcir.o\ pgqclp.o\ pgqcol.o\ pgqcr.o \ pgqcs.o \ pgqdt.o \ pgqfs.o \ pgqhs.o \ pgqid.o \ pgqinf.o\ pgqitf.o\ pgqls.o \ pgqlw.o \ pgqndt.o\ pgqpos.o\ pgqtbg.o\ pgqtxt.o\ pgqvp.o \ pgqvsz.o\ pgqwin.o\ pgrect.o\ pgrnd.o \ pgrnge.o\ pgsah.o \ pgsave.o\ pgscf.o \ pgsch.o \ pgsci.o \ pgscir.o\ pgsclp.o\ pgscr.o \ pgscrl.o\ pgscrn.o\ pgsfs.o \ pgshls.o\ pgshs.o \ pgsitf.o\ pgslct.o\ pgsls.o \ pgslw.o \ pgstbg.o\ pgsubp.o\ pgsvp.o \ pgswin.o\ pgtbox.o\ pgtext.o\ pgtick.o\ pgtikl.o\ pgupdt.o\ pgvect.o\ pgvsiz.o\ pgvstd.o\ pgvw.o \ pgwedg.o\ pgwnad.o\ " PG_NON_STANDARD="\ pgadvance.o\ pgbegin.o \ pgcurse.o \ pglabel.o \ pgmtext.o \ pgncurse.o \ pgpaper.o \ pgpoint.o \ pgptext.o \ pgvport.o \ pgvsize.o \ pgvstand.o \ pgwindow.o \ " GR_ROUTINES="\ pgplot_mod.o\ grarea.o\ grbpic.o\ grchsz.o\ grclip.o\ grclos.o\ grclpl.o\ grctoi.o\ grcurs.o\ grdot0.o\ grdot1.o\ grdtyp.o\ gresc.o \ grepic.o\ gretxt.o\ grfa.o \ grfao.o \ grgfil.o\ grgray.o\ grimg0.o\ grimg1.o\ grimg2.o\ grimg3.o\ grinit.o\ gritoc.o\ grlen.o \ grlin0.o\ grlin1.o\ grlin2.o\ grlin3.o\ grlina.o\ grmcur.o\ grmker.o\ grmova.o\ grmsg.o\ gropen.o\ grpage.o\ grpars.o\ grpixl.o\ grpocl.o\ grprom.o\ grpxpo.o\ grpxps.o\ grpxpx.o\ grpxre.o\ grqcap.o\ grqci.o \ grqcol.o\ grqcr.o \ grqdev.o\ grqdt.o \ grqfnt.o\ grqls.o \ grqlw.o \ grqpos.o\ grqtxt.o\ grqtyp.o\ grquit.o\ grrec0.o\ grrect.o\ grsci.o \ grscr.o \ grscrl.o\ grsetc.o\ grsets.o\ grsfnt.o\ grsize.o\ grskpb.o\ grslct.o\ grsls.o \ grslw.o \ grsyds.o\ grsymk.o\ grsyxd.o\ grterm.o\ grtext.o\ grtoup.o\ grtrim.o\ grtrn0.o\ grtxy0.o\ grvct0.o\ grwarn.o\ grxhls.o\ grxrgb.o\ " SYSTEM_ROUTINES="\ grdate.o\ grfileio.o\ grflun.o\ grgcom.o\ grgenv.o\ grgetc.o\ grglun.o\ grgmem.o\ grgmsg.o\ grlgtr.o\ groptx.o\ grsy00.o\ grtermio.o\ grtrml.o\ grtter.o\ gruser.o\ " OBSOLETE_ROUTINES="\ grchar.o\ grchr0.o\ grdat2.o\ grgtc0.o\ grinqfont.o\ grinqli.o\ grinqpen.o\ grlinr.o\ grmark.o\ grmovr.o\ grsetfont.o\ grsetli.o\ grsetpen.o\ grtran.o\ grvect.o\ pgsetc.o\ pgsize.o\ " OPTIONAL_ROUTINES="\ iand.o\ " PGDISP_ROUTINES="\ cleanup.o\ pgdisp.o\ figcurs.o\ getdata.o\ getvisuals.o\ handlexevent.o\ proccom.o\ resdb.o\ exposelgwin.o\ getcolors.o\ initlgluts.o\ initlgwin.o\ initlock.o\ initwmattr.o\ mainloop.o\ resizelgwin.o\ returnbuf.o\ waitevent.o\ updatelgtitle.o\ " DEMOS="\ pgdemo1\ pgdemo2\ pgdemo3\ pgdemo4\ pgdemo5\ pgdemo6\ pgdemo7\ pgdemo8\ pgdemo9\ pgdemo10\ pgdemo11\ pgdemo12\ pgdemo13\ pgdemo14\ pgdemo15\ pgdemo16\ pgdemo17\ " # # If any optional system routines are found, add them to the # list of required system routines. # for file in `(echo $OPTIONAL_ROUTINES | sed 's/\.o//g')`; do if test -f $SYSDIR/${file}.c -o -f $SYSDIR/${file}.f; then SYSTEM_ROUTINES="$SYSTEM_ROUTINES ${file}.o" fi done # # System specific C wrapper routines for the standard drivers are # named ..wrap.c in the appropriate system directory, where .. is the # two letter ..driv.c prefix of a given driver. # for file in `(echo $DRIV_LIST | sed 's/\.o//g')`; do if test -f $DRVDIR/${file}.c; then wrapper="`(echo $file | sed 's/driv$/wrap/')`" if test -f $SYSDIR/${wrapper}.c -o -f $SYSDIR/${wrapper}.m ; then SYSTEM_ROUTINES="$SYSTEM_ROUTINES ${wrapper}.o" fi fi done # Don't override any existing (possibly modified version of rgb.txt). if test ! -f rgb.txt; then echo 'Copying color database.' cp $SRC/rgb.txt . fi echo "Creating make file: makefile" cat > makefile << EOD # Makefile for PGPLOT. # $0 $* # This file is automatically generated. Do not edit. # # This generates the PGPLOT binary files (libraries and demos) in the # current default directory (which need not be the source directory). #----------------------------------------------------------------------- SHELL=/bin/sh # PGPLOT subdirectories SRC=$SRC SRCDIR=$SRCDIR OBSDIR=$OBSDIR DEMDIR=$DEMDIR FNTDIR=$FNTDIR DRVDIR=$DRVDIR SYSDIR=$SYSDIR PGDDIR=$PGDDIR GENDIR=$GENDIR XMDIR=$DRVDIR/xmotif XADIR=$DRVDIR/xathena TKDIR=$DRVDIR/xtk # # Fortran compiler and compilation flags # FCOMPL=$FCOMPL FFLAGC=$FFLAGC FFLAGD=$FFLAGD # # C compiler and compilation flags # XINCL=$XINCL MOTIF_INCL=$MOTIF_INCL ATHENA_INCL=$ATHENA_INCL TK_INCL=$TK_INCL RV_INCL=$RV_INCL CCOMPL=$CCOMPL CFLAGC=$CFLAGC -I. CFLAGD=$CFLAGD MCOMPL=$MCOMPL MFLAGC=$MFLAGC # # Pgbind flags. # PGBIND_FLAGS=$PGBIND_FLAGS # # Loader library-flags # LIBS=$LIBS MOTIF_LIBS=$MOTIF_LIBS ATHENA_LIBS=$ATHENA_LIBS TK_LIBS=$TK_LIBS NON_FORTRAN_MAIN_LINK=$NON_FORTRAN_MAIN_LINK # # Loader command for PGPLOT library # PGPLOT_LIB=$PGPLOT_LIB CPGPLOT_LIB=$CPGPLOT_LIB # # Shared library creation. # SHARED_LIB=$SHARED_LIB SHARED_LD=$SHARED_LD # # The libraries that the shared PGPLOT library depends upon. # This is for systems that allow one to specify what libraries # undefined symbols of a shared library reside in. Such systems # (eg. Solaris 2.x) use this information at run time so that users of # the library don't have to list a slew of other implementation-specific # libraries when they link their executables. # SHARED_LIB_LIBS=$SHARED_LIB_LIBS # # Ranlib command if required # RANLIB=$RANLIB # # Routine lists. # PG_ROUTINES=$PG_ROUTINES PG_NON_STANDARD=$PG_NON_STANDARD GR_ROUTINES=$GR_ROUTINES SYSTEM_ROUTINES=$SYSTEM_ROUTINES OBSOLETE_ROUTINES=$OBSOLETE_ROUTINES DRIVERS=$DRIV_LIST PGDISP_ROUTINES=$PGDISP_ROUTINES DEMOS=$DEMOS # #----------------------------------------------------------------------- # Target "all" makes everything (except the library of obsolete routines) #----------------------------------------------------------------------- all: $DEFAULT_TARGETS @echo ' ';echo '*** Finished compilation of PGPLOT ***';echo ' ' @echo 'Note that if you plan to install PGPLOT in a different' @echo 'directory than the current one, the following files will be' @echo 'needed.' @echo ' ' EOD for file in $INSTALL_LIST; do echo " @echo ' $file'" done >> makefile cat >> makefile << EOD @echo ' ' @echo 'Also note that subsequent usage of PGPLOT programs requires that' @echo 'the full path of the chosen installation directory be named in' @echo 'an environment variable named PGPLOT_DIR.' @echo ' ' #----------------------------------------------------------------------- # Rules for compiling the .o files #----------------------------------------------------------------------- EOD echo 'Determining object file dependencies.' # List source code file dependencies explicitly. for file in `(echo $PG_ROUTINES | sed 's/\.o//g')`; do echo "${file}.o: \$(SRCDIR)/${file}.f" echo " \$(FCOMPL) -c \$(FFLAGC) \$(SRCDIR)/${file}.f" done >> makefile for file in `(echo $PG_NON_STANDARD | sed 's/\.o//g')`; do echo "${file}.o: \$(SRCDIR)/${file}.f" echo " \$(FCOMPL) -c \$(FFLAGC) \$(SRCDIR)/${file}.f" done >> makefile for file in `(echo $GR_ROUTINES | sed 's/\.o//g')`; do echo "${file}.o: \$(SRCDIR)/${file}.f" echo " \$(FCOMPL) -c \$(FFLAGC) \$(SRCDIR)/${file}.f" done >> makefile for file in `(echo $SYSTEM_ROUTINES | sed 's/\.o//g')`; do if test -f $SYSDIR/${file}.f; then echo "${file}.o: \$(SYSDIR)/${file}.f" echo " \$(FCOMPL) -c \$(FFLAGC) \$(SYSDIR)/${file}.f" elif test -f $SYSDIR/${file}.c; then echo "${file}.o: \$(SYSDIR)/${file}.c" echo " \$(CCOMPL) -c \$(CFLAGC) \$(SYSDIR)/${file}.c" elif test -f $SYSDIR/${file}.m; then echo "${file}.o: \$(SYSDIR)/${file}.m" echo " \$(MCOMPL) -c \$(MFLAGC) \$(SYSDIR)/${file}.m" elif test -f $GENDIR/${file}.f; then echo "${file}.o: \$(GENDIR)/${file}.f" echo " \$(FCOMPL) -c \$(FFLAGC) \$(GENDIR)/${file}.f" elif test -f $GENDIR/${file}.c; then echo "${file}.o: \$(GENDIR)/${file}.c" echo " \$(CCOMPL) -c \$(CFLAGC) \$(GENDIR)/${file}.c" else echo "Warning: Unable to find source code for ${file}.o in either $SYSDIR or $GENDIR" 1>&2 fi done >> makefile for file in `(echo $OBSOLETE_ROUTINES | sed 's/\.o//g')`; do echo "${file}.o: \$(OBSDIR)/${file}.f" echo " \$(FCOMPL) -c \$(FFLAGC) \$(OBSDIR)/${file}.f" done >> makefile # Emit pgdisp rules. for file in `(echo $PGDISP_ROUTINES | sed 's/\.o//g')`; do echo "${file}.o: \$(PGDDIR)/${file}.c" echo " \$(CCOMPL) -c \$(CFLAGC) \$(XINCL) -DPGDISP \$(PGDDIR)/${file}.c" done >> makefile # Emit driver dependencies. for file in `(echo $DRIV_LIST | sed 's/\.o//g')`; do if test -f $SYSDIR/${file}.f; then echo "${file}.o: \$(SYSDIR)/${file}.f" echo " \$(FCOMPL) -c \$(FFLAGC) \$(SYSDIR)/${file}.f" elif test -f $SYSDIR/${file}.c; then echo "${file}.o: \$(SYSDIR)/${file}.c" echo " \$(CCOMPL) -c \$(CFLAGC) \$(XINCL) \$(SYSDIR)/${file}.c" elif test -f $SYSDIR/${file}.m; then echo "${file}.o: \$(SYSDIR)/${file}.m" echo " \$(MCOMPL) -c \$(MFLAGC) \$(XINCL) \$(SYSDIR)/${file}.m" elif test -f $DRVDIR/${file}.f; then echo "${file}.o: \$(DRVDIR)/${file}.f" echo " \$(FCOMPL) -c \$(FFLAGC) \$(DRVDIR)/${file}.f" elif test -f $DRVDIR/${file}.c; then echo "${file}.o: \$(DRVDIR)/${file}.c" echo " \$(CCOMPL) -c \$(CFLAGC) \$(XINCL) \$(DRVDIR)/${file}.c" elif test -f $DRVDIR/${file}.m; then echo "${file}.o: \$(DRVDIR)/${file}.m" echo " \$(MCOMPL) -c \$(MFLAGC) \$(XINCL) \$(DRVDIR)/${file}.m" else echo "Unable to find source code for ${file}.o in $SYSDIR or $DRVDIR/" 1>&2 exit 1 fi done >> makefile cat >> makefile << \EOD #----------------------------------------------------------------------- # The device-driver dispatch routine is generated automatically by # reading the "drivers.list" file. #----------------------------------------------------------------------- DISPATCH_ROUTINE=grexec.o grexec.o: grexec.f $(FCOMPL) -c $(FFLAGC) grexec.f #----------------------------------------------------------------------- # Target "lib" is used to built the PGPLOT subroutine library. # libpgplot.a is the primary PGPLOT object library. # "shared" is an optional target for operating systems that allow shared # libraries. #----------------------------------------------------------------------- lib : libpgplot.a $(SHARED_LIB) libpgplot.a : $(PG_ROUTINES) $(PG_NON_STANDARD) $(GR_ROUTINES) \ $(DISPATCH_ROUTINE) $(DRIVERS) $(SYSTEM_ROUTINES) ar ru libpgplot.a \ `ls $(PG_ROUTINES) \ $(PG_NON_STANDARD) $(GR_ROUTINES) $(DISPATCH_ROUTINE) \ $(DRIVERS) $(SYSTEM_ROUTINES) | sort | uniq` $(RANLIB) libpgplot.a EOD # Emit the shared library dependency if requested. if test -n "$SHARED_LIB" -a -n "$SHARED_LD"; then cat >> makefile << \EOD $(SHARED_LIB): $(PG_ROUTINES) $(PG_NON_STANDARD) \ $(GR_ROUTINES) $(DISPATCH_ROUTINE) $(DRIVERS) $(SYSTEM_ROUTINES) $(SHARED_LD) `ls $(PG_ROUTINES) \ $(PG_NON_STANDARD) $(GR_ROUTINES) $(DISPATCH_ROUTINE) \ $(DRIVERS) $(SYSTEM_ROUTINES) | sort | uniq` $(SHARED_LIB_LIBS) EOD fi cat >> makefile << \EOD #----------------------------------------------------------------------- # libpgobs.a contains obsolete routines used by some programs #----------------------------------------------------------------------- libpgobs.a : $(OBSOLETE_ROUTINES) ar ru libpgobs.a $(OBSOLETE_ROUTINES) $(RANLIB) libpgobs.a #----------------------------------------------------------------------- # Target "prog" is used to make the demo programs. They can also be made # individually. #----------------------------------------------------------------------- prog: $(DEMOS) EOD # If the default pgplot library is shareable then the demos do not # need to be recompiled. If there is no shareable library then they # do, so add an extra dependency. if test ! \( -n "$SHARED_LIB" -a -n "$SHARED_LD" \); then EXTRA_DEPENDENCY="libpgplot.a" fi for file in $DEMOS; do echo "${file}: \$(DEMDIR)/${file}.f $EXTRA_DEPENDENCY" echo " \$(FCOMPL) \$(FFLAGD) -o ${file} \$(DEMDIR)/${file}.f \$(PGPLOT_LIB) \$(LIBS)" done >> makefile cat >> makefile << \EOD #----------------------------------------------------------------------- # Target "grfont.dat" is the binary font file. # This is created from grfont.txt with the "pgpack" program. # (a) compile the `pgpack' program; then # (b) run `pgpack' to convert the ASCII version of the font file # (grfont.txt) into the binary version (grfont.dat). When executed, # `pgpack' should report: # Characters defined: 996 # Array cells used: 26732 #----------------------------------------------------------------------- EOD ( if test -f $SYSDIR/pgpack.f; then echo "grfont.dat: \$(FNTDIR)/grfont.txt \$(SYSDIR)/pgpack.f" echo " \$(FCOMPL) \$(FFLAGC) -o pgpack \$(SYSDIR)/pgpack.f" elif test -f $SYSDIR/pgpack.c; then echo "grfont.dat: \$(FNTDIR)/grfont.txt \$(SYSDIR)/pgpack.c" echo " \$(CCOMPL) \$(CFLAGC) -o pgpack \$(SYSDIR)/pgpack.c" elif test -f $SYSDIR/pgpack.m; then echo "grfont.dat: \$(FNTDIR)/grfont.txt \$(SYSDIR)/pgpack.m" echo " \$(MCOMPL) \$(MFLAGC) -o pgpack \$(SYSDIR)/pgpack.m" else echo "grfont.dat: \$(FNTDIR)/grfont.txt \$(FNTDIR)/pgpack.f" echo " \$(FCOMPL) \$(FFLAGC) -o pgpack \$(FNTDIR)/pgpack.f" fi echo " rm -f grfont.dat" echo " ./pgpack <\$(FNTDIR)/grfont.txt" echo " rm -f pgpack" ) >> makefile cat >> makefile << \EOD #----------------------------------------------------------------------- # Documentation files #----------------------------------------------------------------------- EOD PG_SOURCE=`echo " $PG_ROUTINES $PG_NON_STANDARD" | sed -e 's|\.o|\.f|g' -e 's| pg| $(SRCDIR)/pg|g'` ( echo "PG_SOURCE=$PG_SOURCE" echo "pgplot.doc: \$(PG_SOURCE)" echo " $SRC/makedoc \$(PG_SOURCE) > pgplot.doc" echo "pgplot.html: \$(PG_SOURCE)" echo " $SRC/makehtml \$(PG_SOURCE) > pgplot.html" echo "pgplot.hlp: \$(PG_SOURCE)" echo " $SRC/makehelp \$(PG_SOURCE) > pgplot.hlp" echo "pgplot-routines.tex: \$(PG_SOURCE)" echo " $SRC/maketex \$(PG_SOURCE) > pgplot-routines.tex" ) >> makefile cat >> makefile << \EOD #----------------------------------------------------------------------- # Target "pgxwin_server" is the server program for the XW driver #----------------------------------------------------------------------- pgxwin_server: $(DRVDIR)/pgxwin_server.c $(CCOMPL) $(CFLAGC) $(XINCL) -o pgxwin_server $(DRVDIR)/pgxwin_server.c $(LIBS) #----------------------------------------------------------------------- # Target "pgdisp" is the pgdisp server program for /XDISP driver #----------------------------------------------------------------------- pgdisp: $(PGDISP_ROUTINES) $(CCOMPL) $(CFLAGC) -o pgdisp $(PGDISP_ROUTINES) $(LIBS) #----------------------------------------------------------------------- # Target "libxmpgplot.a" contains the Motif widget driver. #----------------------------------------------------------------------- libXmPgplot.a: XmPgplot.o ar ru libXmPgplot.a XmPgplot.o $(RANLIB) libXmPgplot.a XmPgplot.h: $(XMDIR)/XmPgplot.h cp $(XMDIR)/XmPgplot.h XmPgplot.h XmPgplot.o: $(DRVDIR)/pgxwin.h XmPgplot.h $(XMDIR)/XmPgplotP.h $(XMDIR)/XmPgplot.c $(CCOMPL) -c $(CFLAGC) -I$(DRVDIR) -I$(XMDIR) $(MOTIF_INCL) $(XMDIR)/XmPgplot.c #----------------------------------------------------------------------- # Target "libxapgplot.a" contains the Motif widget driver. #----------------------------------------------------------------------- libXaPgplot.a: XaPgplot.o ar ru libXaPgplot.a XaPgplot.o $(RANLIB) libXaPgplot.a XaPgplot.h: $(XADIR)/XaPgplot.h cp $(XADIR)/XaPgplot.h XaPgplot.h XaPgplot.o: $(DRVDIR)/pgxwin.h XaPgplot.h $(XADIR)/XaPgplotP.h $(XADIR)/XaPgplot.c $(CCOMPL) -c $(CFLAGC) -I$(DRVDIR) -I$(XADIR) $(MOTIF_INCL) $(XADIR)/XaPgplot.c #----------------------------------------------------------------------- # Target "libtkpgplot.a" contains the Tk widget driver. #----------------------------------------------------------------------- libtkpgplot.a: tkpgplot.o ar ru libtkpgplot.a tkpgplot.o $(RANLIB) libtkpgplot.a tkpgplot.h: $(TKDIR)/tkpgplot.h cp $(TKDIR)/tkpgplot.h tkpgplot.h tkpgplot.o: $(DRVDIR)/pgxwin.h tkpgplot.h $(TKDIR)/tkpgplot.c $(CCOMPL) -c $(CFLAGC) -I$(DRVDIR) -I$(TKDIR) $(TK_INCL) $(TKDIR)/tkpgplot.c #----------------------------------------------------------------------- # Target "librvpgplot.a" contains the Rivet-Tk widget driver. #----------------------------------------------------------------------- librvpgplot.a: rvpgplot.o ar ru librvpgplot.a rvpgplot.o $(RANLIB) librvpgplot.a rvpgplot.h: $(TKDIR)/rvpgplot.h cp $(TKDIR)/rvpgplot.h rvpgplot.h rvpgplot.o: $(DRVDIR)/pgxwin.h rvpgplot.h $(TKDIR)/tkpgplot.c $(CCOMPL) -o $@ -c -DUSE_RIVET $(CFLAGC) -I$(DRVDIR) -I$(TKDIR) $(RV_INCL) $(TKDIR)/tkpgplot.c #----------------------------------------------------------------------- # Target "install" is required for Figaro. #----------------------------------------------------------------------- install: #----------------------------------------------------------------------- # Target "clean" is used to remove all the intermediate files. #----------------------------------------------------------------------- clean : -@rm -f $(PG_ROUTINES) $(PG_NON_STANDARD) $(GR_ROUTINES)\ $(DISPATCH_ROUTINE) $(DRIVERS) $(SYSTEM_ROUTINES)\ $(OBSOLETE_ROUTINES) $(PGDISP_ROUTINES) pgmdemo.o\ XmPgplot.o pgbind tkpgplot.o pgtkdemo.o rvpgplot.o\ pgbind.o pgdemo*.o pgawdemo.o *.mod #----------------------------------------------------------------------- # Include file dependencies #----------------------------------------------------------------------- EOD ( cd $SRCDIR echo "# The following routines reference pgplot.inc" echo echo `grep -l pgplot.inc *.f | sed "s/\.f/\.o/g"` : "\$(SRCDIR)/pgplot.inc" echo echo "# The following routines reference grpckg1.inc" echo echo `grep -l grpckg1.inc *.f | sed "s/\.f/\.o/g"` : "\$(SRCDIR)/grpckg1.inc" echo ) >> makefile cat >> makefile << \EOD # Miscellaneous include files required by drivers griv00.o : $(DRVDIR)/gadef.h $(DRVDIR)/gmdef.h $(DRVDIR)/gphdef.h grivas.o : $(DRVDIR)/gadef.h grtv00.o : $(DRVDIR)/imdef.h pgxwin.o : $(DRVDIR)/pgxwin.h pndriv.o : ./png.h ./pngconf.h ./zlib.h ./zconf.h x2driv.o figdisp_comm.o: $(DRVDIR)/commands.h cpg: libcpgplot.a cpgplot.h cpgdemo @echo ' ' @echo '*** Finished compilation of the C PGPLOT wrapper library ***' @echo ' ' @echo 'Note that if you plan to install the library in a different' @echo 'directory than the current one, both libcpgplot.a and cpgplot.h' @echo 'will be needed.' @echo ' ' pgbind: $(SRC)/cpg/pgbind.c $(CCOMPL) $(CFLAGC) $(SRC)/cpg/pgbind.c -o pgbind libcpgplot.a cpgplot.h: $(PG_SOURCE) pgbind ./pgbind $(PGBIND_FLAGS) -h -w $(PG_SOURCE) $(CCOMPL) -c $(CFLAGC) cpg*.c rm -f cpg*.c ar ru libcpgplot.a cpg*.o $(RANLIB) libcpgplot.a rm -f cpg*.o cpgdemo: cpgplot.h $(SRC)/cpg/cpgdemo.c libcpgplot.a $(CCOMPL) $(CFLAGD) -c -I. $(SRC)/cpg/cpgdemo.c $(FCOMPL) -o cpgdemo cpgdemo.o $(CPGPLOT_LIB) $(LIBS) $(NON_FORTRAN_MAIN_LINK) rm -f cpgdemo.o pgmdemo: pgmdemo.o libXmPgplot.a $(FCOMPL) -o pgmdemo pgmdemo.o -L`pwd` -lXmPgplot $(CPGPLOT_LIB) $(MOTIF_LIBS) pgmdemo.o: $(XMDIR)/pgmdemo.c XmPgplot.h libcpgplot.a cpgplot.h $(CCOMPL) $(CFLAGD) -c -I`pwd` $(MOTIF_INCL) $(XMDIR)/pgmdemo.c pgawdemo: pgawdemo.o libXaPgplot.a $(FCOMPL) -o pgawdemo pgawdemo.o -L`pwd` -lXaPgplot $(CPGPLOT_LIB) $(ATHENA_LIBS) pgawdemo.o: $(XADIR)/pgawdemo.c XaPgplot.h libcpgplot.a cpgplot.h $(CCOMPL) $(CFLAGD) -c -I`pwd` $(ATHENA_INCL) $(XADIR)/pgawdemo.c pgtkdemo: pgtkdemo.o libtkpgplot.a $(FCOMPL) -o pgtkdemo pgtkdemo.o -L`pwd` -ltkpgplot $(CPGPLOT_LIB) $(TK_LIBS) pgtkdemo.tcl: $(TKDIR)/pgtkdemo.tcl cp $(TKDIR)/pgtkdemo.tcl pgtkdemo.tcl chmod a+x pgtkdemo.tcl pgtkdemo.o: $(TKDIR)/pgtkdemo.c tkpgplot.h libcpgplot.a cpgplot.h $(CCOMPL) $(CFLAGD) -c -I`pwd` $(TK_INCL) $(TKDIR)/pgtkdemo.c ppdriv.o: pgplot_mod.o gidriv.o: pgplot_mod.o wddriv.o: pgplot_mod.o EOD