#
# $Id: makefile.msc%v 3.50 1993/07/09 05:50:28 woo Exp $
#
# Make file for use with Microsoft C  Version 5.10
# and Microsoft Program Maintenance Utility  Version 4.07
# 

# where to place gnuplot.gih helpfile
HELPFILE = gnuplot.gih

# /c  means don't link
# /AL means large memory model (large code, large data)
# /DPC means define symbol PC
# /DLITE means no hiddenline removal
# /Gt means no 64k segment problem
CFLAGS = /c /AL /DPC /DREADLINE /DLITE /Gt /D__MSC__ #/Zi #/Od

# see other terminal defines in term.h
TERMFLAGS = 

# /NOE means NO EXTernal Dictionary
# /EX  means pack EXE file
# /ST:10000 means stack size 10000 bytes
LINKFLAGS = /NOE /EX /ST:10000 /ONERROR:NOEXE #/codeview 

OBJS = 	bitmap.obj command.obj contour.obj eval.obj graphics.obj graph3d.obj \
	help.obj internal.obj misc.obj parse.obj plot.obj readline.obj \
	scanner.obj setshow.obj standard.obj term.obj util.obj version.obj \
	pcgraph.obj hrcgraph.obj corgraph.obj specfun.obj gnubin.obj \
	binary.obj

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\iris4d.trm 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\unixplot.trm \
	term\v384.trm term\x11.trm
CSOURCE8 = contour.c gnubin.c binary.c

# default rules
.c.obj:
	cl $(CFLAGS) $*.c

.asm.obj:
	masm $*;

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

linkopt.msc: makefile.msc
      echo pcgraph+hrcgraph+corgraph+bitmap+ >linkopt.msc
      echo term+graphics+graph3d+contour+ >>linkopt.msc
      echo plot+setshow+command+help+internal+ >>linkopt.msc
      echo misc+specfun+gnubin+binary+readline+ >>linkopt.msc
      echo parse+eval+scanner+standard+util+version >>linkopt.msc
      echo gnuplot >>linkopt.msc
      echo nul; >>linkopt.msc

pcgraph.obj: pcgraph.asm header.mac lineproc.mac

corgraph.obj: corgraph.asm header.mac lineproc.mac

hrcgraph.obj: hrcgraph.asm header.mac lineproc.mac

binary.obj: binary.c 

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

command.obj: command.c plot.h setshow.h help.h
	cl $(CFLAGS) /DHELPFILE=\"$(HELPFILE)\" command.c

contour.obj: contour.c plot.h

eval.obj: eval.c plot.h

gnubin.obj: gnubin.c

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

parse.obj: parse.c plot.h

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

readline.obj: readline.c

scanner.obj: scanner.c plot.h

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

standard.obj: standard.c plot.h

specfun.obj: specfun.c plot.h

term.obj: term.c term.h plot.h setshow.h bitmap.h $(CSOURCE5) $(CSOURCE6) $(CSOURCE7)
	cl $(CFLAGS) $(TERMFLAGS) /Iterm term.c

util.obj: util.c plot.h

version.obj: version.c

# convert gnuplot.doc to gnuplot.gih
doc2gih.exe: docs\doc2gih.c
	cl docs\doc2gih.c

$(HELPFILE): doc2gih.exe docs\gnuplot.doc
	doc2gih docs\gnuplot.doc $(HELPFILE)

# Object files in link command line are ordered to avoid far jumps.
# use linkopt.msc to avoid command-line overflow

gnuplot.exe: $(OBJS) linkopt.msc
 link $(LINKFLAGS) @linkopt.msc

#make binary demo files
demo\bf_test.exe: bf_test.c dbinary.obj
      cl /AL /DPC /D__MSC__ /F 5000 /Gt /W1 /Fedemo\bf_test.exe bf_test.c dbinary.obj
      cd demo
      bf_test
      cd ..

dbinary.obj: binary.c
      cl /c /AL /DPC /D__MSC__ /F 5000 /Gt /W1 /Fodbinary.obj binary.c

# clean up temporary files
clean:
      del *.obj
      del gnuplot.map
      del demo\bf_test.exe
      del linkopt.msc
      
veryclean: clean
      del gnuplot.exe
      del $(HELPFILE)
      del demo\binary1
      del demo\binary2
      del demo\binary3

