######################################################################### 
#									# 
#   File: scorpion/src/idlc/frontend/Makefile 
#				 					# 
#   Copyright (C) 1991 Karen Shannon
#									# 
#   The Scorpion System is free software in the public domain; you can  # 
#   redistribute it and/or modify it as you wish. We ask that you 	# 
#   retain credits referencing the University of Arizona and that you	# 
#   identify any changes you make.					# 
#									# 
#   Report problems to scorpion-project@cs.arizona.edu			# 
#   Direct all inquiries to:	The Scorpion Project			# 
#				Department of Computer Science		# 
#				Gould-Simpson Building			# 
#				University of Arizona			# 
#				Tucson, AZ 85721			# 
#				U.S.A.					# 
#									# 
#   Revision Log:							# 
#	$Log:$ 
#									# 
#   Edit Log:								# 
#									# 
######################################################################### 

# IMPORTED VARIABLES
SHELL=/bin/sh
INCDIR=/usr/local/scorpion/include
LIBDIR=/usr/local/scorpion/lib
BINDIR=/usr/local/scorpion/bin
SPECSDIR=../../specs

CC=cc
IDLC=$(BINDIR)/idlc
PC=pc
CFLAGS=-I$(INCDIR)
IDLCFLAGS=-v
PFLAGS=
CP=cp
MV=mv
RM=rm -f
LEX=lex
MAKE=make
YACC=yacc -d

LINT=/usr/bin/lint
LINTINC=-I$(INCDIR)
LINTFLAGS=-abx

UTILITYVARS='CC=$(CC)' 'IDLC=$(IDLC)' 'PC=$(PC)' 'CFLAGS=$(CFLAGS)' \
	      'IDLCFLAGS=$(IDLCFLAGS)' 'PFLAGS=$(PFLAGS)' 'CP=$(CP)' \
	      'MV=$(MV)' 'RM=$(RM)' 'LEX=$(LEX)' 'MAKE=$(MAKE)' \
	      'YACC=$(YACC)'
CI=ci
CO=co

INSTALL=

# LOCAL VARIABLES
LINTLIB=$(LIBDIR)/lintlib/llib-lliball.ln $(LIBDIR)/lintlib/llib-lliberr.ln
CANDIR=$(SPECSDIR)/Candle
UNCCANDIR=../specs
LIB=$(LIBDIR)/libidl.a $(LIBDIR)/liberr.a
IDLCFLAGSLOC=-I$(CANDIR) -I$(SPECSDIR) -I$(UNCCANDIR) -nc -h -k
OBJ=lex_idltokens.o error.o main.o preparse.o file.o yacc_parse.o privates.o Frontend.o

SRC=idltokens.l parse.y error.c main.c preparse.c file.c Frontend.idl \
	File.h error.h macros.h

LINTSRC=lex_idltokens.c error.c main.c preparse.c file.c yacc_parse.c \
	privates.c Frontend.c 

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

IDLparse:	$(OBJ) 
	$(CC) -o IDLparse $(CFLAGS) $(OBJ) $(LIB)

System	: IDLparse

Install :
	$(RM) $(LIBDEST)/IDLparse
	$(INSTALL) IDLparse $(LIBDEST)

yacc_parse.h yacc_parse.c:parse.y
	$(YACC) parse.y
	$(MV) y.tab.c yacc_parse.c
	$(MV) y.tab.h yacc_parse.h

lex_idltokens.c:idltokens.l
	$(LEX) idltokens.l
	$(MV) lex.yy.c lex_idltokens.c

Frontend.h:  Frontend.idl $(CANDIR)/CandleSyntax.idl
	$(IDLC) $(IDLCFLAGS) $(IDLCFLAGSLOC) Frontend.idl

.c.o:
	$(CC) -c $(CFLAGS) $*.c

Frontend.o : Frontend.c Frontend.h 
	if (test "$(MACHINE)" = "sun") then \
		$(CC) -c $(NO_CFLAGS) $*.c; \
	else \
		$(CC) -c $(CFLAGS) $*.c; \
	fi

error.o : error.c error.h 
file.o : file.c 
lex_idltokens.o : lex_idltokens.c Frontend.h macros.h error.h yacc_parse.h 
main.o : main.c Frontend.h macros.h error.h 
preparse.o : preparse.c Frontend.h error.h 
privates.o : privates.c Frontend.h 
yacc_parse.o : yacc_parse.c Frontend.h macros.h error.h 

Clean:
	$(RM)  *.o *.list core a.out *.Cdl yacc.debug

# Not sure that the files can be regenerated.
Ci:
	$(CI) $(SRC) Frontend.c Frontend.h yacc_parse.h yacc_parse.c

Co:
	$(CO) $(SRC) Frontend.c Frontend.h yacc_parse.h yacc_parse.c

Copy:
	mkdir $(COPYDIR)/Frontend
	$(CP) $(SRC) yacc_parse.c Frontend.c Frontend.h README $(COPYDIR)/Frontend


DelSrc:
	$(RM) *.c *.h *.idl *.l *.y


Lint:
	$(LINT) $(LINTFLAGS) $(LINTINC) $(LINTLIB) $(LINTSRC)
