#                     
#	Makefile for "gplot", "gtex" and "drawcgm" 
#
#	To add device drivers, include the following -D qualifiers on the
#	DRV_FLAGS line below:
#
#		inctty		tty controller (always include this!)
#		incxws		X window system driver
#		incps		postscript driver
#		inctek		tektronix terminal driver
#		incsun		Sun CGI driver
#		incigl		Silicon Graphics Iris GL
#		inccgmc     	clear text CGM driver
#		inccgmb     	binary CGM driver
#		incsv		SunView driver
#		incxl		Xlib driver
#
#	and also include the following files in the DRV_OBJ symbol definition:
#
#		tty.o		tty controller (always include this!)
#		ps.o		postscript driver
#		tek.o		tektronix terminal driver
#		sundriv.o	Sun CGI driver
#		igl.o		Silicon Graphics Iris driver
#		all xws_ .o files	X window system driver
#		cgmc.o      	clear text CGM driver
#		cgmb.o      	binary CGM driver
#		sv.o		SunView driver
#		xl.o		Xlib driver
#
#	You must also uncomment the lines including related libraries below.
#
#	Some machines require the addition of a special module to define
#	'common' routines which they don't have, or to add machine-specific
#	symbols.  Scan the lines below looking for a line marked with your 
#	machine type, and if you find it uncomment the associated 
#	definition to include this file.

DRV_FLAGS = -O -Dinctty -Dincps -Dinctek -Dinccgmc -Dinccgmb 
#
# If you are running X-Windows, then add this option (-Dincxws) to the
# above line. 
#
DRV_OBJ = tty.o ps.o tek.o cgmc.o cgmb.o 
#
# To use the xws driver, add the following to the above line:
# xws_cla.o xws_color.o xws_delim.o xws_marker.o xws_polygon.o \
#  xws_polyline.o xws_setup.o xws_text.o
#
# These lines should not be modified.
DCGM_PATH = drawcgm/
MACHINE_DEFS = $(DCGM_PATH)unix_defs.h
F_LINK = f77
AR = ar -ru
RANLIB =  echo 'fake-ranlib'

# To include the X11, XLib or GPLOTAW driver, uncomment the next line to 
# include the Athena Widget library, the X Toolkit library, and Xlib.
#XLIBS =	-lXaw -lXmu -lXt -lX11 

# To include the Decwindows driver, uncomment the next line.
#DLIBS = -ldwt -lXt -lX11

# To include the Sun driver, uncomment the next line to include
# the Sunwindows, pixrect, and cgi libraries.
#SLIBS = 	-lcgi -lsunwindow -lpixrect

# To include the Sun View driver, uncomment the next line to include 
# the Sunwindows, pixrect and suntool libraries
#SVLIBS = -lsuntool -lsunwindow -lpixrect

# To include the Silicon Graphics IRIS driver, uncomment the next lines
#MACHINE_OBJ = ardent.o
#AR = ar rus
#F_LINK = f77
#ILIBS = -Zg

# To build this software on an Ardent Titan, uncomment the next lines
#MACHINE_OBJ = ardent.o
#AR = ar rus
#F_LINK = fc

# To build this software on an Ultrix Vaxstation, uncomment the next lines
#AR = ar ru
#F_LINK = f77
#RANLIB = ranlib

# To build this software on an Ultrix Decstation, uncomment the next
#lines
#AR = ar ru
#F_LINK = f77 -static
#RANLIB = ranlib

# To build this software on a Cray under Unicos, uncomment the next lines
#MACHINE_DEFS = $(DCGM_PATH)unicos_defs.h /usr/include/fortran.h
#MACHINE_OBJ = ardent.o
#F_LINK = segldr
#AR = bld r
#.f.o: ; cft77 $*.f
#MACHINE_LIBS = $(XLIBS) -lnet     

# To build this software on a Cray, delete the entry $(XLIBS) from the
# next line.
#
LIBS =	$(XLIBS) $(DLIBS) $(SLIBS) $(SVLIBS) $(ILIBS) $(MACHINE_LIBS) -lm

FONTS = hload.o

# To include the xws driver, add the entry drvcla.o to the end of
# the next line.
GPT_OBJ = gplot.o cgm.o ccgm.o utils.o io.o carray.o devices.o \
	$(FONTS) emul.o

GTEX_OBJ = gtex.o cgm.o utils.o io.o carray.o devices.o \
        $(FONTS) pkras.o emul.o cache.o ccgm.o 

DCGM_OBJ = $(DCGM_PATH)drawcgm.o $(DCGM_PATH)cgmgen.o \
	utils.o carray.o io.o $(FONTS) drvcla.o devices.o emul.o

gplot: $(GPT_OBJ) $(DRV_OBJ) $(MACHINE_OBJ)
	cc  -o $@ $(GPT_OBJ) $(DRV_OBJ) $(MACHINE_OBJ) $(LIBS)

gtex: $(GTEX_OBJ) ps.o tek.o qms.o cgmb.o cgmc.o tty.o
	cc -o $@ $(GTEX_OBJ) ps.o tek.o qms.o cgmb.o cgmc.o tty.o -lm 

gplottool: gplot_suntool.o wint.o ccgm.o cgm.o utils.o io.o carray.o \
	hload.o emul.o sv.o
	cc -o $@ gplot_suntool.o wint.o cgm.o utils.o io.o carray.o ccgm.o \
	hload.o emul.o sv.o $(LIBS)

gplotdw: gplotdw.o wint.o cgm.o utils.o io.o carray.o ccgm.o emul.o \
	hload.o xl.o
	cc -o $@ gplotdw.o wint.o cgm.o utils.o io.o carray.o ccgm.o emul.o \
	hload.o xl.o $(LIBS) 

gplotaw: gplotaw.o wint.o cgm.o ccgm.o utils.o io.o carray.o \
	hload.o emul.o xl.o $(MACHINE_OBJ)
	cc -o $@ gplotaw.o wint.o cgm.o ccgm.o utils.o io.o carray.o \
	hload.o emul.o xl.o $(MACHINE_OBJ) $(LIBS) 
 
drawcgm: $(DCGM_PATH)drawcgm.a

tests: $(DCGM_PATH)drawcgm_test $(DCGM_PATH)drawcgm_tst2 \
	$(DCGM_PATH)cgmgen_test 

tar:
	tar -cvf gplot.tar *.c *.h Makefile README.GPLOT \
          README.DRAWCGM cc.opt *.doc *.com testicon testcursor \
          descrip.mms gplot.hlp gplot.man gplot.txt gpt_commands.cld \
          hfonts.bin *.tex *.cgm drawcgm/*.c drawcgm/COLORS.DAT \
          drawcgm/Makefile drawcgm/*.h drawcgm/*.f drawcgm/*.doc

clean: 
	rm *.o ; rm drawcgm/*.o

$(DCGM_PATH)drawcgm_test: $(DCGM_PATH)drawcgm_test.o $(DCGM_PATH)drawcgm.a
	$(F_LINK) -o $@ $(DCGM_PATH)drawcgm_test.o $(DCGM_PATH)drawcgm.a \
		$(LIBS)

$(DCGM_PATH)drawcgm_tst2: $(DCGM_PATH)drawcgm_tst2.o $(DCGM_PATH)drawcgm.a
	$(F_LINK) -o $@ $(DCGM_PATH)drawcgm_tst2.o $(DCGM_PATH)drawcgm.a \
		$(LIBS)

$(DCGM_PATH)cgmgen_test: $(DCGM_PATH)cgmgen_test.o $(DCGM_PATH)cgmgen_test2.o \
		$(DCGM_PATH)drawcgm.a
	$(F_LINK) -o $@ $(DCGM_PATH)cgmgen_test.o $(DCGM_PATH)cgmgen_test2.o \
		$(DCGM_PATH)drawcgm.a $(LIBS)

# drawcgm library
$(DCGM_PATH)drawcgm.a: $(DCGM_OBJ) $(DRV_OBJ) $(MACHINE_OBJ)
	$(AR) $@ $(DCGM_OBJ) $(DRV_OBJ) $(MACHINE_OBJ)
	$(RANLIB) $@

# controlling GPLOT program
gplot.o: gplot.c defs.h
	cc -c -g gplot.c

# controlling GPLOT program for the SUNview driver
gplot_suntool.o: gplot_suntool.c defs.h
	cc -c -g gplot_suntool.c

# controlling GPLOTAW program for Athena Widgets
gplotaw.o: gplotaw.c
# To make gplotaw compile on the Cray, uncomment the next line 
#	cc -c -DR3_INTRINSICS gplotaw.c

# window interface module
wint.o: wint.c defs.h
	cc -c -g wint.c

# controlling GTEX program
gtex.o: gtex.c defs.h
	cc -c -g -Dincps -Dincqms gtex.c

# all of the cgm specific stuff
cgm.o: cgm.c defs.h
	cc -c -g cgm.c

# all of the clear text cgm specific stuff
ccgm.o: ccgm.c defs.h ccdefs.h
	cc -c -g ccgm.c 

# utility functions
utils.o: utils.c defs.h
	cc -c -g -Dinchershey utils.c
# if we wanted PK fonts also, it would be
#       cc -c -g -Dinchershey -Dincpkras utils.c

# I/O routines
io.o: io.c defs.h
	cc -c -g io.c

# devices interface
devices.o: devices.c defs.h
	cc -c $(DRV_FLAGS) devices.c

# Cell Array libraries
carray.o: carray.c defs.h
	cc -c -g carray.c

drvcla.o: drvcla.c defs.h
	cc -c -g drvcla.c

# Emulation package
emul.o: emul.c defs.h
	cc -c -g emul.c

# Hershey font support
hload.o: hload.c hload.h defs.h
	cc -c -g hload.c

# decoding for the PK format files
# if fonts are available we must say here where they are
# in this case they are pk format fonts (only type supported) in
# /usr/staff/andrews/pk/mag/*.pk where mag is the integer magnification
# (1000 implies 10 point fonts at 300 pt/in), e.g.,
# /usr/staff/andrews/pk/1000/cmr10.pk
pkras.o: pkras.c defs.h
	cc -c -DUNIXFONTS=\"/usr/staff/andrews/pk\" pkras.c

#TTY controller
tty.o: tty.c defs.h
	cc -c -g tty.c

# Postscript device
ps.o: ps.c defs.h
	cc -c -g ps.c

# Tektronix devices
tek.o: tek.c defs.h
	cc -c -g tek.c

# Clear text CGM driver
cgmc.o: cgmc.c defs.h
	cc -c -g cgmc.c

# Binary CGM driver
cgmb.o: cgmb.c defs.h
	cc -c -g cgmb.c

# Sun CGI driver
sundriv.o: sundriv.c	defs.h
	cc -c -g sundriv.c

# Silicon Graphics GI driver
igl.o:	igl.c defs.h
	cc -c -g igl.c

# the sunview driver
sv.o:	sv.c defs.h
	cc -c -g sv.c

# the Xlib driver
xl.o:	xl.c defs.h
	cc -c -g xl.c

#-------------- X Window System driver --------------------------

#xws_setup.o:	/usr/include/stdio.h \
#		/usr/include/strings.h \
#		/usr/include/X11/Intrinsic.h \
#		/usr/include/X11/StringDefs.h \
#		/usr/include/X11/Viewport.h \
#		/usr/include/X11/Xutil.h \
#		/usr/include/X11/cursorfont.h \
#		defs.h xws_defs.h

#xws_delim.o:    /usr/include/stdio.h \
#		/usr/include/strings.h \
#		/usr/include/X11/Intrinsic.h \
#		/usr/include/X11/Xutil.h \
#		defs.h xws_defs.h

#xws_color.o:	/usr/include/stdio.h \
#		/usr/include/math.h \
#		/usr/include/X11/Intrinsic.h \
#		/usr/include/X11/Xutil.h \
#		/usr/include/X11/Xatom.h \
#		defs.h xws_defs.h xws_color.h

#xws_polyline.o:/usr/include/X11/Intrinsic.h \
#		defs.h xws_defs.h

#xws_polygon.o:	/usr/include/stdio.h \
#		/usr/include/X11/Intrinsic.h \
#		defs.h xws_defs.h xws_fill.h

#xws_marker.o:	/usr/include/X11/Intrinsic.h \
#		defs.h xws_defs.h

#xws_text.o:	/usr/include/strings.h \
#		/usr/include/X11/Intrinsic.h \
#		/usr/include/X11/Xatom.h \
#		defs.h xws_defs.h

#xws_cla.o:      /usr/include/stdio.h \
#		/usr/include/math.h \
#		/usr/include/X11/Intrinsic.h \
#		defs.h xws_defs.h xws_color.h
#-----------------------------------------------------------------------------
# DrawCGM and CGMGen, and test routines
$(DCGM_PATH)cgmgen.o:	/usr/include/stdio.h \
		/usr/include/string.h \
		$(DCGM_PATH)defs.h $(MACHINE_DEFS)
	cd $(DCGM_PATH) ; make cgmgen.o

$(DCGM_PATH)drawcgm.o:
	cd $(DCGM_PATH) ; make drawcgm.o

$(DCGM_PATH)drawcgm_test.o:
	cd $(DCGM_PATH) ; make drawcgm_test.o

$(DCGM_PATH)drawcgm_tst2.o:
	cd $(DCGM_PATH) ; make drawcgm_tst2.o

$(DCGM_PATH)cgmgen_test.o:
	cd $(DCGM_PATH) ; make cgmgen_test.o

$(DCGM_PATH)cgmgen_test2.o: \
		/usr/include/stdio.h /usr/include/string.h \
		$(DCGM_PATH)defs.h $(MACHINE_DEFS)
	cd $(DCGM_PATH) ; make cgmgen_test2.o

#-----------------------------------------------------------------------------
# Machine-specific modules

ardent.o:	/usr/include/math.h
