#
# $Id: makefile.vms,v 1.14 2011/10/03 16:20:32 sfeam Exp $
#
# GNUPLOT Makefile for VMS
#
# use with the MAKE that was posted by Tony Ivanov (tony@gvgpvd.GVG.TEK.COM)
# in comp.os.vms on 5 December 1988
#
# Modified 23 June 1999 to work with MMK; it should also work with MMS.
# John.Hasstedt@sunysb.edu.
#
# You can define a macro on the command line to specify the compiler, either
# VAXC or GNUC; if you do not specify either, it uses DECC.  If you are
# compiling on Alpha, you should also define __ALPHA__ (MMK does this for you,
# for MMS, use MMS/DESCRIP=MAKEFILE.VMS/MACRO=__ALPHA__).

########### COMPILE OPTIONS ###########

.IFDEF VAXC
CC=CC
WHICHRTL=VAXCRTL
CRTL_SHARE=,sys$$disk:[]linkopt.vms/opt
PREFIXALL=
CRTL_SHARE=
EXTRADEFS=
EXTRAOBJ=
EXTRALIB=
.ELSE
.IFDEF GNUC
CC=GCC
WHICHRTL=VAXCRTL
CRTL_SHARE=,sys$$disk:[]linkopt.vms/opt
PREFIXALL=
CRTL_SHARE=
EXTRADEFS=
EXTRAOBJ=
EXTRALIB=,gnu_cc:[000000]gcclib/lib
.ELSE  # DECC
CC=CC
WHICHRTL=DECCRTL
PREFIXALL=/prefix=all
CRTL_SHARE=
.IFDEF __ALPHA__
EXTRADEFS=,HAVE_SLEEP,HAVE_GETCWD,HAVE_LGAMMA,HAVE_UNISTD_H
.ELSE
EXTRADEFS=,HAVE_SLEEP,HAVE_GETCWD,HAVE_UNISTD_H
EXTRAOBJ=
EXTRALIB=
.ENDIF
.ENDIF

#maybe ABJ and AXE if that's your local convention for alpha
#(that's how I build vax and axp programs in same directory)
O=OBJ
X=EXE

# NOOP  NO Optimiser
# take out X11 if you dont want windows support
# pipes compiles with popen emulation (from VMS perl-5 port)
CFLAGS = /define=(NO_GIH,X11,PIPES$(EXTRADEFS),$(WHICHRTL)) $(PREFIXALL)
TERMFLAGS = /include=[-.term]


############## okay, that's enough fiddling ###############

OBJS1 = alloc.$(O),binary.$(O),bitmap.$(O),command.$(O),contour.$(O),datafile.$(O),dynarray.$(O),eval.$(O),
OBJS2 = fit.$(O),graphics.$(O),graph3d.$(O),help.$(O),hidden3d.$(O),internal.$(O),interpol.$(O), stats.$(O),
OBJS3 = matrix.$(O),misc.$(O),parse.$(O),plot.$(O),plot2d.$(O),plot3d.$(O),scanner.$(O),set.$(O),history.$(O),
OBJS4 = show.$(O),specfun.$(O),standard.$(O),stdfn.$(O),term.$(O),time.$(O),util.$(O),util3d.$(O),version.$(O),vms.$(O),variable.$(O),save.$(O),tables.$(O),unset.$(O)
OBJS = $(OBJS1)$(OBJS2)$(OBJS3)$(OBJS4)$(EXTRAOBJ)

CSOURCE1 = command.c set.c show.c variable.c
CSOURCE2 = help.c graphics.c graph3d.c internal.c
CSOURCE3 = misc.c eval.c parse.c plot.c plot2d.c plot3d.c scanner.c standard.c stdfn.c
CSOURCE4 = bitmap.c term.c time.c util.c version.c interpol.c fit.c matrix.c stats.c
CSOURCE5 = [-.term]aed.trm [-.term]cgi.trm [-.term]dumb.trm [-.term]dxf.trm [-.term]dxy.trm \
	[-.term]eepic.trm [-.term]epson.trm [-.term]fig.trm [-.term]hp26.trm \
	[-.term]hp2648.trm [-.term]hpgl.trm [-.term]hpljii.trm
CSOURCE6 = [-.term]impcodes.h [-.term]imagen.trm [-.term]object.h \
	[-.term]kyo.trm [-.term]latex.trm [-.term]pbm.trm  \
	[-.term]pc.trm
CSOURCE7 = [-.term]post.trm [-.term]qms.trm [-.term]regis.trm [-.term]sun.trm \
	[-.term]t410x.trm [-.term]tek.trm [-.term]unixpc.trm \
	[-.term]v384.trm [-.term]x11.trm gplt_x11.c
CSOURCE8 = contour.c specfun.c interpol.c vms.c dynarray.c

all :   gnuplot.$(X) gnuplot_x11.$(X) gnuplot.hlp gnuplot.hlb \
	[-.demo]binary1. [-.demo]binary2. [-.demo]binary3.
	@       ! a no-op to suppress a MMS warning

gnuplot.$(X) : $(OBJS) $(EXTRAOBJ)
	link /exe=gnuplot.$(X) vms.$(O),gnuplot.opt/opt$(EXTRAOBJ)$(EXTRALIB)$(CRTL_SHARE)

gnuplot_x11.$(X) : gplt_x11.$(O) stdfn.$(O)
	link /exe=gnuplot_x11.$(X) gplt_x11.$(O),stdfn.$(O),x11.opt/option$(CRTL_SHARE)

gplt_x11.o : gplt_x11.c
	$(CC) $(CFLAGS) $(X11FLAGS)

[-.demo]binary1. [-.demo]binary2. [-.demo]binary3. : bf_test.$(X)
	set default [-.demo]
	run [-.src]bf_test.$(X)
	set default [-.src]

bf_test.$(X) : bf_test.$(O) binary.$(O) alloc.$(O)
	link /exe=bf_test.exe bf_test.$(O),binary.$(O),alloc.$(O)

gnuplot.hlb : gnuplot.hlp
	library/create/help gnuplot.hlb gnuplot.hlp

.IFDEF OLD_HLP
gnuplot.hlp : doc2hlp.$(X) [-.docs]gnuplot.doc
	define/user sys$input [-.docs]gnuplot.doc
	define/user sys$output []gnuplot.hlp
	run doc2hlp

doc2hlp.$(X) : [-.docs]doc2hlp.c [-.docs]termdoc.c
	$(CC) /include=([-.docs],[],[-.term]) [-.docs]doc2hlp.c,[-.docs]termdoc.c
	link /exe=doc2hlp.$(X) doc2hlp,termdoc$(CRTL_SHARE)
.ELSE
gnuplot.hlp : [-.docs]gnuplot.rnh
	RUNOFF $< /OUTPUT=$@

[-.docs]gnuplot.rnh : [-.docs]doc2rnh.$(X) [-.docs]gnuplot.doc
	MCR $< [-.docs]gnuplot.doc $@

[-.docs]doc2rnh.$(X) : [-.docs]doc2rnh.$(O) [-.docs]termdoc.$(O)
	link /exe=$@  $+ $(CRTL_SHARE)

[-.docs]doc2rnh.$(O) [-.docs]termdoc.$(O) : [-.docs]termdoc.c ![-.docs]allterm.h
	$(CC) /OBJ=$@ $(CFLAGS) /INCLUDE=([],[-.TERM]) $*.c
.ENDIF

term.$(O) : term.h term.c $(CSOURCE5) $(CSOURCE6) $(CSOURCE7)
	$(CC) $(CFLAGS) $(TERMFLAGS) term.c /object=term.$(O)

$(OBJS) : plot.h

command.$(O) help.$(O) misc.$(O) : help.h

command.$(O) graphics.$(O) graph3d.$(O) misc.$(O) plot.$(O) set.$(O) show.$(O) term.O interpol.$(O) : setshow.h

command.$(O) fit.$(O) matrix.$(O) : fit.h

fit.$(O) matrix.$(O) : matrix.h

bitmap.$(O) term.$(O) : bitmap.h

clean :
	purge/log
	delete/log *.$(O);*
	delete/log [-.demo]binary1.;*,binary2.;*,binary3.;*
