/*
 * Imakefile for grok.
 * A surprising number of systems have neither xmkmf nor imake, for example
 * all HP/UX and AIX (IBM RS6000) systems I have seen. For these systems, use
 * make -f Makefile.alt
 */

/*
 * GBIN is where the main executable goes, everything else (help file) is in
 * GLIB. The documentation (Manual.ps) is not installed, that's up to you.
 */

GBIN = /usr/local/bin
GLIB = /usr/local/lib

CDEBUGFLAGS = -O2


/*
 * Do not change anyhting below.
 */

#ifdef sgi
LIB  =	-lSgm -lXm $(XTOOLLIB) $(XLIB) $(SYSLIBS) $(XMEXTRA_LIBS) -lm
#else
LIB  =	-lXm $(XTOOLLIB) $(XLIB) $(SYSLIBS) $(XMEXTRA_LIBS) -lm
#endif

SRC  =	canvdraw.c cardwin.c chart.c chartdrw.c convert.c dbase.c\
	dbfile.c editwin.c eval.c evalfunc.c formfile.c formop.c formwin.c\
	help.c main.c mainwin.c popup.c prefwin.c print.c printwin.c query.c\
	sectwin.c querywin.c sumwin.c util.c template.c templmk.c templwin.c

INC  =	config.h form.h grok.h proto.h patchlevel.h resource.h\
	bm_icon.h bm_left.h bm_right.h

DOC  =	doc/files.tex doc/formedit.tex doc/grammar.tex doc/intro.tex\
	doc/macro.tex doc/main.tex doc/export.tex

DEMO =	grokdir/countries.db grokdir/countries.gf \
	grokdir/phone.db grokdir/phone.gf \
	grokdir/phonelog.db grokdir/phonelog.gf \
	grokdir/todo.db grokdir/todo.gf \
	grokdir/diary.db grokdir/diary.gf \
	grokdir/passwd.gf \
	grokdir/procdemo grokdir/procdemo.gf \
	grokdir/weather.db grokdir/weather.gf \
	grokdir/checkbook.db grokdir/checkbook.gf\
	grokdir/www_pages.db grokdir/www_pages.gf \
	grokdir/biblio.db grokdir/biblio.gf grokdir/biblio.mktex.pl \
	grokdir/systems.gf\
	grokdir/workplan.gf

EXTRA_DEFINES = -DPATH=\"$(GBIN):$(GLIB)\" -DLIB=\"$(GLIB)\"
AllTarget(grok)
NormalProgramTarget(grok,y.tab.o $(SRC:.c=.o),,,$(LIB))
InstallProgram(grok,$(GBIN))
InstallProgram(grok.hlp,$(GLIB))
InstallMultiple(Manual.ps grok.hlp,$(GLIB))
InstallMultiple($(DEMO),$(GLIB)/grokdir)
InstallNonExec(grok.xpm,$(LIBDIR)/pixmaps)


$(SRC:.c=.o): config.h grok.h proto.h form.h
popup.o: patchlevel.h
main.o:	resource.h
util.o:	bm_icon.h
evalfunc.o eval.o: y.tab.h
eval.o: y.tab.c

y.tab.c: parser.y
	$(YACC) -d parser.y


#---------------------------------------------------------------
LIST0 =	README HISTORY grok.hlp Imakefile Makefile.alt $(SRC) parser.y $(INC)
LIST1 =	$(LIST0) $(DOC) grok.1 grok.1cat $(DEMO) Manual.ps Grok.icon Grok.fti grok.xpm

tar: Manual.ps
	-rm -f grok.tar*
	tar cvf grok.tar $(LIST1)
	gzip grok.tar

srctar:
	@echo making source-only tar file
	-rm grok.tar*
	tar cvf grok.tar $(LIST0)
	gzip grok.tar
#	shar -n grok -a -M -o grok.tar.gz.shar -L 60 grok.tar.gz


#---------------------------------------------------------------
Manual.ps: doc/main.dvi
	dvips -f doc/main.dvi >Manual.ps
	-rm -f doc/jobname.cont doc/main.cont doc/main.log


doc/main.dvi: $(DOC)
	cd doc; tex main.tex; tex main.tex
	-rm -f doc/jobname.cont doc/main.cont doc/main.log

clean::
	-rm -f y.tab.h y.tab.c lex.yy.c grok y.output *.shar*
	-rm -f doc/?*dvi doc/?*tmp doc/?*log doc/?*aux doc/?*cont
