#
# Makefile for PLPLOT
#
# This makefile builds PLPLOT using the DOS port of GNU CC 386 by DJ Delorie.
# In keeping with the GNU CC package, this makefile is written for use
# with NDMAKE.	See the GNU CC docs for info on obtaining these tools.
#
# Note that there are some indications of Fortran support in is makefile,
# but these are not fully realized at this time.  Perhaps in a later version.
#
# Questions or problems, send (e)mail to:
#	Geoffrey Furnish
#	furnish@fusion.ph.utexas.edu
#	Institute for Fusion Studies
#	Department of Physics
#	The University of Texas at Austin
#	Austin, Texas	78712

PLDIR	= c:\plplot\ 
PLLIBS	= .
PLFONTS	= $(PLDIR)plfonts\ 
PLFNT_DIR=..\lib
PLTMP	= $(PLDIR)tmp\ 
PLLIBDIR = .
FONTFLAG=

CC	= gcc
CFLAGS	= -DGNU386
F77	= 
FFLAGS	= 

DRIVERS	= -DPS -DLJII -DPLMETA -DHP7470 -DIMP -DGNUSVGA

# Rules
.SUFFIXES:
.SUFFIXES: .o .c .for

.c.o:
	$(CC) -c $(CFLAGS) $*.c 
.for.o:
	$(F77) -c $(FFLAGS) $*.for

# Object file macros

OBJ =	\
	base.o \
	convert.o \
	genlin.o \
	move.o \
	pladv.o \
	plaxes.o \
	plbeg.o \
	plbin.o \
	plbox.o \
	plbox3.o \
	plccal.o \
	plcntr.o \
	plcol.o \
	plcont.o \
	plconf.o \
	pldtik.o \
	plend.o \
	plenv.o \
	plerr.o \
	plexit.o \
	plfill.o \
	plfont.o \
	plform.o \
	plgra.o \
	plgrid3.o \
	plgspa.o \
	plhist.o \
	pljoin.o \
	pllab.o \
	pllclp.o \
	plline.o \
	pllsty.o \
	plmesh.o \
	plmtex.o \
	plnxtv.o \
	plot3d.o \
	plpat.o \
	plpsty.o \
	plptex.o \
	plrot.o \
	plsdef.o \
	plside3.o \
	plstar.o \
	plstyl.o \
	plsvpa.o \
	plsym.o \
	plt3zz.o \
	pltick.o \
	plvasp.o \
	plvpas.o \
	plvpor.o \
	plvsta.o \
	plw3d.o \
	plwid.o \
	plwind.o \
	plxybx.o \
	plzbx.o \
	string.o 

OS2_OBJ = \
	dispatch.o \
	pdfutils.o \
	hp7470.o \
	hp7580.o \
	impress.o \
	ljii.o \
	ps.o \
	tek.o \
	gnusvga.o \
	plmeta.o

# Support files for font generators.

FONT_OBJ = \
	font01.o \
	font02.o \
	font03.o \
	font04.o \
	font05.o \
	font06.o \
	font07.o \
	font08.o \
	font09.o \
	font10.o \
	font11.o

# C language stubs for linking Plplot to Fortran.

CSTUB_OBJ = \
	long2str.o \
	sc3d.o \
	scconf.o \
	scstubs.o

# Fortran language stubs for linking Plplot to Fortran.

FSTUB_OBJ = \
	sfstubs.o

# Library dependencies

libs:	libc #libf
libc:	$(PLLIBS)\libplplt.a
libf:	$(PLLIBS)\libplstb.a

$(PLLIBS)\libplplt.a:	$(OBJ) $(OS2_OBJ)
	@echo Ready to build libplplt.a
	@>libplplt.rf $?
	ar rvc libplplt.a @libplplt.rf
	copy libplplt.a ..\lib
	ar rvs ..\lib\libplplt.a

$(PLLIBS)\libplstb.a:	$(CSTUB_OBJ) $(FSTUB_OBJ)
	@echo Ready to build libplstb.a
	@>libplstb.rf $?
	ar rvc libplstb.a @libplstb.rf
	copy libplstb.a ..\lib
	ar rvs ..\lib\libplstb.a

# In case you REALLY mean it!

force: links libs

# First time only, should be executed from $(PLTMP)

links: linkmain linkstubs

linkmain:
	copy ..\src\*.c .
	copy ..\include\*.h .
	copy ..\examples\c\*.c .
	copy ..\examples\f77\*.f .
	copy ..\drivers\*.* .
	copy ..\fonts\*.* .
	copy ..\utils\*.* .
	ren *.f *.for

linkstubs:	
	copy ..\sys\os2\stubf\*.* .
	copy ..\src\stubc\*.* .
	ren *.f *.for

# The metafile renderer.

plrender:
	$(CC) $(CFLAGS) plrender.c getopt.c -o $@ -L../lib -lplplt -lm -lgr -lpc
	aout2exe $@

#----------------------------------------------------------------------#
# Font files.
# Note 6 font files actually created.
# sfont - standard font
# xfont - extended fonts

fonts:	sfont xfont
	copy *.fnt $(PLFNT_DIR)

sfont:	$(PLFNT_DIR)plstnd.fnt
xfont:	$(PLFNT_DIR)plxtnd.fnt

$(PLFNT_DIR)plstnd.fnt: stndfont.o $(FONT_OBJ)
	@>stnd.rf stndfont.o $(FONT_OBJ)
	$(CC) $(CFLAGS) -o stndfont @stnd.rf -L../lib -lplplt -lm 
	aout2exe stndfont
	-stndfont

$(PLFNT_DIR)plxtnd.fnt: xtndfont.o $(FONT_OBJ)
	@>xtnd.rf xtndfont.o $(FONT_OBJ)
	$(CC) $(CFLAGS) -o xtndfont @xtnd.rf -L../lib -lplplt -lm 
	aout2exe xtndfont
	-xtndfont

#----------------------------------------------------------------------#
# Explicit rules
#
# plfont.c may have font flags passed in

plfont.o: plfont.c
	$(CC) -c $(CFLAGS) $*.c

# dispatch.c and all the drivers need to know $(PLDEVICES).  The guts
# of the driver routine are not compiled if its name is not present in
# the device list.  You may want to leave drivers for specific systems
# (Amiga, MS-DOS, OS/2, etc) out of this list.

dispatch.o: dispatch.c
	$(CC) -c $(CFLAGS) $(DRIVERS) $*.c 

hp7470.o:	hp7470.c
	$(CC) -c $(CFLAGS) $(DRIVERS) $*.c 

hp7580.o:	hp7580.c
	$(CC) -c $(CFLAGS) $(DRIVERS) $*.c 

impress.o:	impress.c
	$(CC) -c $(CFLAGS) $(DRIVERS) $*.c 

ljii.o:	ljii.c
	$(CC) -c $(CFLAGS) $(DRIVERS) $*.c 

ps.o:	ps.c
	$(CC) -c $(CFLAGS) $(DRIVERS) $*.c 

tek.o:	tek.c
	$(CC) -c $(CFLAGS) $(DRIVERS) $*.c 

gnusvga.o: gnusvga.c
	$(CC) -c $(CFLAGS) $(DRIVERS) $*.c 

plmeta.o:	plmeta.c
	$(CC) -c $(CFLAGS) $(DRIVERS) $*.c 

#----------------------------------------------------------------------#
# Build all the demos

demos : cdemos

# To verify that PLPLOT works with C++, copy x01c.c to xa.cc and make xa

xa:	xa.cc
	$(CC) $(CFLAGS) -g $*.cc -o $@ -L../lib -lplplt -lm -lgr -lpc
	aout2exe $@

# Example programs, in c.

cdemos:	x01c x02c x03c x04c x05c x06c x07c x08c x09c x10c x11c \
	x12c x13c x14c tutor

x01c:	x01c.c
	$(CC) $(CFLAGS) -g $*.c -o $@ -L../lib -lplplt -lm -lgr -lpc
	aout2exe $@

x02c:	x02c.c
	$(CC) $(CFLAGS) -g $*.c -o $@ -L../lib -lplplt -lm -lgr -lpc
	aout2exe $@

x03c:	x03c.c
	$(CC) $(CFLAGS) -g $*.c -o $@ -L../lib -lplplt -lm -lgr -lpc
	aout2exe $@

x04c:	x04c.c
	$(CC) $(CFLAGS) -g $*.c -o $@ -L../lib -lplplt -lm -lgr -lpc
	aout2exe $@

x05c:	x05c.c
	$(CC) $(CFLAGS) -g $*.c -o $@ -L../lib -lplplt -lm -lgr -lpc
	aout2exe $@

x06c:	x06c.c
	$(CC) $(CFLAGS) -g $*.c -o $@ -L../lib -lplplt -lm -lgr -lpc
	aout2exe $@

x07c:	x07c.c
	$(CC) $(CFLAGS) -g $*.c -o $@ -L../lib -lplplt -lm -lgr -lpc
	aout2exe $@

x08c:	x08c.c
	$(CC) $(CFLAGS) -g $*.c -o $@ -L../lib -lplplt -lm -lgr -lpc
	aout2exe $@

x09c:	x09c.c
	$(CC) $(CFLAGS) -g $*.c -o $@ -L../lib -lplplt -lm -lgr -lpc
	aout2exe $@

x10c:	x10c.c
	$(CC) $(CFLAGS) -g $*.c -o $@ -L../lib -lplplt -lm -lgr -lpc
	aout2exe $@

x11c:	x11c.c
	$(CC) $(CFLAGS) -g $*.c -o $@ -L../lib -lplplt -lm -lgr -lpc
	aout2exe $@

x12c:	x12c.c
	$(CC) $(CFLAGS) -g $*.c -o $@ -L../lib -lplplt -lm -lgr -lpc
	aout2exe $@

x13c:	x13c.c
	$(CC) $(CFLAGS) -g $*.c -o $@ -L../lib -lplplt -lm -lgr -lpc
	aout2exe $@

x14c:	x14c.c
	$(CC) $(CFLAGS) -g $*.c -o $@ -L../lib -lplplt -lm -lgr -lpc
	aout2exe $@

tutor:	tutor.c
	$(CC) $(CFLAGS) -g $*.c -o $@ -L../lib -lplplt -lm -lgr -lpc
	aout2exe $@
