#
# * Copyright (c) 1992 University College London
# * All rights reserved.
# *
# * Redistribution and use in source and binary forms are permitted
# * provided that the above copyright notice and this paragraph are
# * duplicated in all such forms and that any documentation,
# * advertising materials, and other materials related to such
# * distribution and use acknowledge that the software was developed
# * by the Department of Computer Science, University College London,
# * London, England. Neither the name of the University, nor its
# * registered trademark, UCL, may be used to endorse or promote
# * products derived from this software without specific prior
# * written permission.
# * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
# * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
###########################################################

OBJEXT	=	o
EXE	=	gdmo
CC	=	gcc
CFLAGS	=	-ansi -g -DYYDEBUG
HOME:sh	=	pwd
#CCFLAGS+= 	-DGDMOPWD=\"$(PWD)\/\" -DYYDEBUG
CCFLAGS	+= 	-DGDMOPWD=\"$(HOME)\/\" 
YACC	=	../byacc/byacc
YFLAGS	=	-v
LXFLAGS	=	-v
#LEX	 =	 lex
LEX	=	../flex/flex
#LEXLIB	=	-ll
LEXLIB	=

###########################################################
#
#.SUFFIXES:	 .c .cc	.o
#
#.c.o:;		 $(CC) $(CFLAGS) -c $*.c
#.cc.o:;	 $(CCPLUS) $(CCFLAGS) -g -c $*.cc
#
###########################################################

LIBS	=	$(TOP)/util/util/libutil.a

PARSRC  =       GDMOYacc.cc GDMOLex.cc ExecYacc.cc ExecLex.cc \
		IIMCYacc.cc IIMCLex.cc 

GDMOOBJ =       GDMOPar.$(OBJEXT) IIMCPar.$(OBJEXT)

MAINOBJ =       GDMO.$(OBJEXT) GDMOClas.$(OBJEXT) GDMOPkg.$(OBJEXT) \
                GDMOAttr.$(OBJEXT) GDMOMain.$(OBJEXT)

INTOBJ  =       Symbol.$(OBJEXT) SymExec.$(OBJEXT) ExecPar.$(OBJEXT) \
                Node.$(OBJEXT)

SRC     =       GDMO.cc GDMOAttr.cc GDMOClas.cc GDMOMain.cc GDMOPar.cc \
                GDMOPkg.cc Node.cc Symbol.cc SymExec.cc ExecPar.cc \
                IIMCPar.cc ExecYacc.y ExecLex.l GDMOYacc.y GDMOLex.l \
		IIMCYacc.y IIMCLex.l

HSRC    =       GDMOGen.h GDMO.h GDMOAttr.h GDMOClas.h GDMOPkg.h \
                Node.h Symbol.h SymExec.h IIMC.h

SCRIPTS	=	run-gdmo # gms-gdmo


###########################################################

prog:		$(EXE)

$(EXE):		$(PARSRC) $(GDMOOBJ) $(MAINOBJ)	$(INTOBJ)
		$(PURIFYPLUS) $(CCPLUS) $(GDMOOBJ) $(MAINOBJ) $(INTOBJ) \
		$(LIBS)	$(LEXLIB) -o $@

GDMOPar.$(OBJEXT) :	GDMOYacc.cc GDMOLex.cc GDMOYacc.y GDMOLex.l

GDMOYacc.cc :	GDMOYacc.y
		$(YACC)	$(YFLAGS) GDMOYacc.y GDMO::ParseGDMO
		@mv y.tab.c GDMOYacc.cc

GDMOLex.cc :	GDMOLex.l  GDMOYacc.y
		$(LEX) $(LXFLAGS) GDMOLex.l
		@mv lex.yy.c GDMOLex.cc

ExecPar.$(OBJEXT):	ExecYacc.cc ExecLex.cc ExecYacc.y ExecLex.l

ExecYacc.cc :	ExecYacc.y
		$(YACC)	$(YFLAGS) ExecYacc.y InterPreter::Parse
		@mv y.tab.c ExecYacc.cc

ExecLex.cc :	ExecLex.l ExecYacc.y
		$(LEX) $(LXFLAGS) ExecLex.l
		@mv lex.yy.c ExecLex.cc

IIMCPar.$(OBJEXT) :     IIMCYacc.cc IIMCLex.cc IIMCYacc.y IIMCLex.l

IIMCYacc.cc :   IIMCYacc.y
		$(YACC) $(YFLAGS) IIMCYacc.y IIMC::Parse
		@mv y.tab.c IIMCYacc.cc

IIMCLex.cc :    IIMCLex.l IIMCYacc.y
		$(LEX) $(LXFLAGS) IIMCLex.l
		@mv lex.yy.c IIMCLex.cc

install:	installgdmo

install-gprog:	installgdmo

installgdmo:	$(EXE)
		@echo "cp $(EXE) $(BIN)/$(EXE)"; \
		cp $(EXE) $(BIN)/$(EXE)
		cp $(SCRIPTS) $(BIN)

install-gman:;

install-man:;

clean:
		-rm -f *.$(OBJEXT) $(PARSRC) $(EXE) core y.output y.tab.h

print:
		pr -f $(HSRC) $(SRC) | lpr -Pa4lp

GDMO.(OBJEXT):		GDMOAttr.h GDMOClas.h GDMO.h Symbol.h

GDMOAttr.(OBJEXT):	GDMOAttr.h Symbol.h

GDMOClass.(OBJEXT):	GDMOAttr.h GDMOPkg.h GDMOClas.h	Symbol.h

GDMOMain.(OBJEXT):	GDMOAttr.h GDMOPkg.h GDMOClas.h	GDMO.h Symbol.h

GDMOPackage.(OBJEXT):	GDMOAttr.h GDMOPkg.h Symbol.h

Symbol.(OBJEXT):	Symbol.h

###########################################################



