# make file for Borland C++ 3.x
# uses Borland proprietary overlay manager
# Modified from the TurboC makefile by Maurice Castro
# The compile and link includes debug flags.  Take them out if you
# do not want them included  (-y -v -M, /m /s /v /l)
#
# the makefile no longer depends on a linker options file.
# this file will be created as needed.				(AL 07/17/92)

# where to place gnuplot.gih helpfile
HELPFILE = gnuplot.gih
# location of Turbo C compiler
TC = c:\borlandc
#TC = c:\tc
# name of C compiler
CC = bcc
#CC = tcc
# location of TLINK.EXE and TCC.EXE or BCC.EXE
BIN = $(TC)\bin\\
#BIN =
# location of BGI files,
# change this line if not in TC directory, i.e. $(TC)\bgi
BGI = $(TC)\bgi
# location of bgiobj.exe tool - convertion of BGI to a linkable OBJ file.
BGIOBJ = $(TC)\bgi\\
#BGIOBJ =
# location of the system libraries
LIB = $(TC)\lib\\

# the memory model to use (l = large code, large data; h = huge)
MODEL = l

# -c means don't link, -f means emulate 8087 if not present
# -m? says which model to use
# -M means produce link map
# -y means include line numbers for debugger
# -v means include debug info
# -w- means ignore warnings and do not report them
# -DREADLINE to use the history/line editing capability. If you want this
#    capability add -DREADLINE to CFLAGS
# -DLITE means no hiddenline removal to conserve memory
CFLAGS = -Ff=256 -c -f -m$(MODEL) -w- -I$(TC)\include -DLITE -DMSDOS -DPC -DREADLINE
TERMFLAGS =

# With Overlay Support
OVLY1 = -Y
OVLY2 = -Yo
OVERLIB = $(LIB)overlay
SLASHO = /o
ODASH = /o-
# Without Overlay Support
#OVLY1 =
#OVLY2 =
#OVERLIB =
#SLASHO =
#ODASH =

OBJ1 =  bitmap.obj command.obj contour.obj eval.obj graphics.obj graph3d.obj
OBJ2 =	help.obj internal.obj misc.obj parse.obj plot.obj readline.obj
OBJ3 =	scanner.obj setshow.obj specfun.obj standard.obj term.obj util.obj
OBJ4 =	version.obj gnubin.obj binary.obj
OBJBGI=	cgaf.obj egavgaf.obj hercf.obj attf.obj

OBJS =	$(OBJ1) $(OBJ2) $(OBJ3) $(OBJ4) $(OBJBGI)

CSOURCE5 = term\aed.trm term\cgi.trm term\dumb.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\iris4d.trm term\kyo.trm term\latex.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\unixplot.trm \
	term\v384.trm term\x11.trm
CSOURCE8 = contour.c specfun.c gnubin.c binary.c

all: gnuplot.exe $(HELPFILE) demo\bf_test.exe

# use linkopt.tc to avoid command-line overflow

gnuplot.exe: $(OBJS) linkopt.tc
# With or without debug information (select one)
#	$(BIN)tlink /m /s /v /l @linkopt.tc
	$(BIN)tlink @linkopt.tc

# create linker options file
# note that when you change the model or switch overlaying,
# you will have to execute 'make clean'

linkopt.tc: makefile.tc
	echo  >linkopt.tc $(LIB)C0$(MODEL) +
	echo >>linkopt.tc $(SLASHO) $(OBJ1) +
	echo >>linkopt.tc $(OBJ2) +
	echo >>linkopt.tc $(OBJ3) +
	echo >>linkopt.tc $(OBJ4) +
	echo >>linkopt.tc $(ODASH) $(OBJBGI) +
	echo >>linkopt.tc ,gnuplot,gnuplot, +
	echo >>linkopt.tc $(OVERLIB) +
	echo >>linkopt.tc $(LIB)emu +
	echo >>linkopt.tc $(LIB)math$(MODEL) +
	echo >>linkopt.tc $(LIB)c$(MODEL) +
	echo >>linkopt.tc $(LIB)graphics
#	echo >>linkopt.tc -----
#	echo >>linkopt.tc this file is generated automatically. don't change it, change the makefile.

# default rules

.c.obj:
	$(BIN)$(CC) $(OVLY2) $(CFLAGS) $<

# The default for files is to be compiled for overlaying if OVLY1 and
# OVLY2 are defined.  plot.c and parse.c are not suitable for overlaying.

bitmap.obj: bitmap.c bitmap.h plot.h

command.obj: command.c plot.h setshow.h help.h
	$(BIN)$(CC) $(OVLY2) $(CFLAGS) -DHELPFILE="$(HELPFILE)" command.c

contour.obj: contour.c plot.h

eval.obj: eval.c plot.h

graphics.obj: graphics.c plot.h setshow.h

graph3d.obj: graphics.c plot.h setshow.h

help.obj: help.c plot.h help.h

internal.obj: internal.c plot.h

misc.obj: misc.c plot.h setshow.h help.h

parse.obj: parse.c plot.h
	$(BIN)$(CC) $(OVLY1) $(CFLAGS) parse.c

plot.obj: plot.c plot.h setshow.h
	$(BIN)$(CC) $(OVLY1) $(CFLAGS) plot.c

readline.obj: readline.c

scanner.obj: scanner.c plot.h

setshow.obj: setshow.c plot.h setshow.h

specfun.obj: specfun.c

standard.obj: standard.c plot.h

# the CSOURCE? dependencies are not up to date (but who cares)
term.obj: term.c term.h plot.h setshow.c bitmap.h $(CSOURCE5) $(CSOURCE6) $(CSOURCE7)
	$(BIN)$(CC) $(OVLY2) $(CFLAGS) $(TERMFLAGS) -Iterm term.c

util.obj: util.c plot.h

version.obj: version.c

# convert gnuplot.doc to gnuplot.gih
$(HELPFILE): doc2gih.exe docs\gnuplot.doc
	doc2gih docs\gnuplot.doc $(HELPFILE)

doc2gih.exe: docs\doc2gih.c
    $(BIN)$(CC) -w- -ml -I$(TC)\include -L$(TC)\lib docs\doc2gih.c

doc2tex.exe: docs\doc2tex.c
    $(BIN)$(CC) -w- -ml -I$(TC)\include -L$(TC)\lib docs\doc2tex.c

demo\bf_test.exe: bf_test.c binary.obj
    $(BIN)$(CC) -edemo\bf_test.exe -w- -m$(MODEL) -I$(TC)\include -L$(TC)\lib bf_test.c binary.obj

# convert Borland Graphics Interface files to object for linking
cgaf.obj: $(BGI)\cga.bgi
	$(BGIOBJ)bgiobj /F $(BGI)\cga

egavgaf.obj: $(BGI)\egavga.bgi
	$(BGIOBJ)bgiobj /F $(BGI)\egavga

hercf.obj: $(BGI)\herc.bgi
	$(BGIOBJ)bgiobj /F $(BGI)\herc

attf.obj: $(BGI)\att.bgi
	$(BGIOBJ)bgiobj /F $(BGI)\att

# clean target - remove all temp files, but leave executable intact
# needed when changing configuration (model or overlaying)

clean:
	del *.obj
	del gnuplot.map
	del linkopt.tc
	del doc2gih.exe

# realclean target - remove all files created by the makefile

realclean: clean
	del gnuplot.exe
	del gnuplot.gih
	del demo\bf_test.exe
	del demo\binary1
	del demo\binary2
	del demo\binary3
