#
# File:		makefile.unx
# Author:	Julian Smart
# Created:	1993
# Updated:	
# Copyright:	(c) 1993, AIAI, University of Edinburgh
#
# "%W% %G%"
#
# Makefile for libprologio.a

WXDIR = ../../..

# All common UNIX compiler flags and options are now in
# this central makefile.
include $(WXDIR)/src/make.env

DOCUTILSDIR = $(WXDIR)/utils/tex2rtf/src

PROLOGDIR = $(WXDIR)/utils/prologio
PROLOGINC = $(PROLOGDIR)/src
PROLOGLIB = $(PROLOGDIR)/lib/libproio$(GUISUFFIX).a

OBJECTS = $(OBJDIR)/read.$(OBJSUFF) $(OBJDIR)/prorpc.$(OBJSUFF) $(OBJDIR)/y_tab.$(OBJSUFF)

TESTOBJECTS = $(OBJDIR)/test.$(OBJSUFF)
TESTPROGRAM = $(PROLOGDIR)/src/test$(GUISUFFIX)

EXTRAFLAGS=-L$(WXDIR)/contrib/xmgauge
EXTRALIBS=-lgauge_motif

# Remove -DLEX_SCANNER if using FLEX instead of LEX
CPPFLAGS = -DLEX_SCANNER $(XINCLUDE) $(INC) -I$(PROLOGINC) $(GUI) $(DEBUGFLAGS) -DDEBUG=$(DEBUG) $(WARN) $(OPTIONS) $(HARDY_OPTIONS) $(OPT)
CFLAGS = -DLEX_SCANNER
LDFLAGS =  $(XLIB) -L$(WXDIR)/lib -L$(PROLOGDIR)/lib $(EXTRAFLAGS)
LDLIBS = -lproio_ol -lwx_ol -lxview -lolgx -lX11 -lm -lg++

XVIEWLDLIBS = -lproio_ol -lwx_ol -lxview -lolgx -lX11 -lm $(COMPLIBS)
MOTIFLDLIBS = -lproio_motif -lwx_motif $(EXTRALIBS) -lXm -lXt -lX11 -lm $(COMPLIBS)
HPLDLIBS = -lproio_hp -lwx_hp -lXm -lXt -lX11 -lm $(HPCOMPLIBS)
# Default
LDLIBS=$(XVIEWLDLIBS)

all:	$(OBJDIR) $(PROLOGLIB)

demo:	$(TESTPROGRAM)

$(PROLOGLIB): $(OBJECTS)
	rm -f $@
	ar $(AROPTIONS) $@ $(OBJECTS)
	$(RANLIB) $@

.SUFFIXES:

$(OBJECTS):	$(PROLOGINC)/read.h $(PROLOGINC)/expr.h $(PROLOGINC)/prorpc.h

motif:
	$(MAKE) -f makefile.unx GUISUFFIX=_motif GUI=-Dwx_motif OPT='$(OPT)' GUISUFFIX=_motif LDLIBS='$(MOTIFLDLIBS)' XVIEW_LINK=

xview:
	$(MAKE) -f makefile.unx GUI=-Dwx_xview OPT='$(OPT)' GUISUFFIX=_ol

hp:
	$(MAKE) -f makefile.unx GUI=-Dwx_motif GUISUFFIX=_hp CC=CC DEBUG='' OPT='' WARN='-w' \
           XINCLUDE='$(HPXINCLUDE)' XLIB='$(HPXLIB)' XVIEW_LINK='' CCLEX='cc' \
           LDLIBS='$(HPLDLIBS)'

demo_hp:
	$(MAKE) -f makefile.unx all demo GUI=-Dwx_motif GUISUFFIX=_hp CC=CC DEBUG='' WARN='' \
           XINCLUDE='$(HPXINCLUDE)' XLIB='$(HPXLIB)' XVIEW_LINK='' CCLEX='cc' \
           LDLIBS='$(HPLDLIBS)'

demo_motif:
	cd $(WXDIR)/src/x; $(MAKE) -f makefile.unx motif OPT='$(OPT)'
	$(MAKE) -f makefile.unx all demo GUI=-Dwx_motif GUISUFFIX=_motif OPT='$(OPT)' LDLIBS='$(MOTIFLDLIBS)' XVIEW_LINK=

demo_ol:
	cd $(WXDIR)/src/x; $(MAKE) -f makefile.unx xview OPT='$(OPT)'
	$(MAKE) -f makefile.unx all demo GUI=-Dwx_xview OPT='$(OPT)'

$(OBJDIR)/read.$(OBJSUFF):		read.$(SRCSUFF)
	$(CC) -c $(CPPFLAGS) -o $@ read.$(SRCSUFF)

$(OBJDIR)/prorpc.$(OBJSUFF):	prorpc.$(SRCSUFF)
	$(CC) -c $(CPPFLAGS) -o $@ prorpc.$(SRCSUFF)

$(OBJDIR)/y_tab.$(OBJSUFF):	y_tab.c lex_yy.c
	$(CCLEX) -c $(CPPFLAGS) -o $@ y_tab.c

# Replace lex with flex if you run into compilation
# problems with lex_yy.c. See also note about LEX_SCANNER
# above.
lex_yy.c:	lexer.l
	lex lexer.l
	sed -e "s/BUFSIZ/5000/g" < lex.yy.c | \
	sed -e "s/yyoutput(c)/void yyoutput(c)/g" | \
        sed -e "s/YYLMAX 200/YYLMAX 5000/g" > lex_yy.c
	/bin/rm -f lex.yy.c

# Replace yacc with bison if you run into compilation
# problems with y_tab.c.
y_tab.c:	parser.y
	yacc parser.y
	mv y.tab.c y_tab.c

$(OBJDIR)/test.$(OBJSUFF):		test.$(SRCSUFF) read.$(SRCSUFF) read.h
	$(CC) -c $(CPPFLAGS) -o $@ test.$(SRCSUFF)

$(TESTPROGRAM): $(OBJDIR)/test.$(OBJSUFF) $(WXLIB) $(PROLOGLIB)
	$(CC) $(LDFLAGS) -o test$(GUISUFFIX) $(OBJDIR)/test.$(OBJSUFF) $(XVIEW_LINK) $(LDLIBS)

docs:	ps xlp
ps:	$(PROLOGDIR)/docs/manual.ps
xlp:	$(PROLOGDIR)/docs/prologio.xlp
html:	$(PROLOGDIR)/docs/prologio_contents.html

$(PROLOGDIR)/docs/prologio.xlp:	$(PROLOGDIR)/docs/classes.tex $(PROLOGDIR)/docs/manual.tex
	cd ../docs; tex2rtf manual.tex tmp.xlp -twice -xlp
	sed -e "s/WXHELPCONTENTS/PROLOGIO Manual/g" < $(PROLOGDIR)/docs/tmp.xlp > $(PROLOGDIR)/docs/prologio.xlp
	/bin/rm -f $(PROLOGDIR)/docs/tmp.xlp

$(PROLOGDIR)/docs/prologio_contents.html:	$(PROLOGDIR)/docs/manual.tex $(PROLOGDIR)/docs/classes.tex
	cd ../docs; tex2rtf manual.tex prologio.html -twice -html
	/bin/cp ../docs/*.html /user/11/jacs/html/prologio
	/bin/rm -f ../docs/*.html

$(PROLOGDIR)/docs/manual.dvi:	$(PROLOGDIR)/docs/manual.tex $(PROLOGDIR)/docs/classes.tex $(PROLOGDIR)/docs/tutorial.tex
	cd $(PROLOGDIR)/docs; latex manual; latex manual; makeindex manual; latex manual

$(PROLOGDIR)/docs/manual.ps:	$(PROLOGDIR)/docs/manual.dvi
	cd $(PROLOGDIR)/docs; dvips -f -r < manual.dvi > manual.ps

cleaneach:
	rm -f $(OBJECTS) $(TESTOBJECTS) lex_yy.c y_tab.c test$(GUISUFFIX) $(PROLOGLIB) core

clean_motif:
	$(MAKE) -f makefile.unx GUISUFFIX=_motif cleaneach 

clean_hp:
	$(MAKE) -f makefile.unx GUISUFFIX=_hp cleaneach 

clean_ol:
	$(MAKE) -f makefile.unx GUISUFFIX=_ol cleaneach 

$(OBJDIR):
	mkdir $(OBJDIR)
