#
#	  Copyright 1997-2000 by the Purdue Research Foundation for CERIAS (the
#	  Center for Education and Research in Information Assurance and
#	  Security).  All rights reserved.  This work may be used for
#	  non-profit educational and research purposes only.  Any copies made
#	  of this file or portions of its contents must include this copyright
#	  statement.  For information on reuse, licensing, or copying, contact
#	  <cerias-info@cerias.purdue.edu>.
#
#	  This software is experimental in nature and is provided without any
#	  express or implied warranties, including, without limitation, the
#	  implied warranties of merchantability and fitness for any particular
#	  purpose.
#
#         $Id: Makefile,v 1.6 2000/02/08 21:34:01 flack Exp $
#
#  Makefile for BSM parser
#  Chapman Flack, flack@cs.purdue.edu
#
#  BSMTokenStream.c depends on a number of compiler features such as
#  #pragma pack and #pragma align.  It has been tested with Sun C 4.0
#  and with gcc 2.7.2.2.
#
#  If your ANTLR installation has individual class files in the antlr
#  subdirectory, leave ANTLR_CLASSES = $(ANTLR_HOME).  If you have an
#  antlrclasses.jar, set ANTLR_CLASSES = $(ANTLR_HOME)/antlrclasses.jar
#

CC = /usr/local/opt/SUNWspro/bin/cc

JAVA_HOME = /usr/java1.2

ANTLR_HOME = /usr/ceriaslocal/antlr-2.7.0

ANTLR_CLASSES = $(ANTLR_HOME)

SCANNER_OPTIONS = -DEXPAND_IN_ADDR -DEXPAND_IP_TOS -DEXPAND_IP_PROTO

JAVA_BIN = $(JAVA_HOME)/bin

JAVA = $(JAVA_BIN)/java -Djava.compiler

JAVAC = $(JAVA_BIN)/javac -g

JAVA_INC = $(JAVA_HOME)/include

JAVA_INC_FLAGS = -I $(JAVA_INC) -I $(JAVA_INC)/solaris

PERCENT = percent_rule

TRACE = verbose_trace

ANTL = $(JAVA) -cp $(PERCENT):$(ANTLR_CLASSES) antlr.Tool

DEBUG =

CFLAGS = $(DEBUG) $(JAVA_INC_FLAGS) $(SCANNER_OPTIONS)

LDFLAGS = $(DEBUG) -lbsm -lsocket -lnsl

P = edu/purdue/cerias/projects/BSMParser/

.SUFFIXES : .class .java .g

.java.class :
	$(JAVAC) -classpath .:$(ANTLR_CLASSES)  $<

test : BSMParser.jar libBSMTokenStream.so libBSMTokenStream_g.so
	LD_LIBRARY_PATH=.  $(JAVA)  -jar BSMParser.jar  sample.trail

extensions :
	(cd $(PERCENT); $(MAKE) JAVA_HOME=$(JAVA_HOME) ANTLR_HOME=$(ANTLR_HOME) ANTLR_CLASSES=$(ANTLR_CLASSES))
	(cd $(TRACE); $(MAKE) JAVA_HOME=$(JAVA_HOME) ANTLR_HOME=$(ANTLR_HOME) ANTLR_CLASSES=$(ANTLR_CLASSES))

BSMParser.jar : $(P)BSMParser.class $(P)BSMTokenStream.class \
        $(P)BSMToken.class $(P)BSMParserTokenTypes.class \
	$(P)BSMScannerException.class
	chmod u+x ./mkjar
	./mkjar $(JAVA_BIN) $(ANTLR_HOME) $@

$(P)BSMParser.java $(P)BSMParserTokenTypes.java $(P)BSMParserTokenTypes.txt : \
        $(P)BSM.g
	$(ANTL)  -trace  -o $(P)  $(P)BSM.g

libBSMTokenStream.so : BSMTokenStream.o eventcache.o
	$(CC) -G -o $@ BSMTokenStream.o eventcache.o $(LDFLAGS)

libBSMTokenStream_g.so : libBSMTokenStream.so
	rm  -f  $@
	ln  -f  $?  $@

BSMTokenStream.o : BSMTokenStream.h eventcache.h

eventcache.o : eventcache.h

BSMTokenStream.h : $(P)BSMTokenStream.class
	$(JAVA_BIN)/javah  -classpath  .:$(ANTLR_CLASSES)  -jni  -o $@ \
	edu.purdue.cerias.projects.BSMParser.BSMTokenStream

$(P)BSMTokenStream.class : \
$(P)BSMParserTokenTypes.class $(P)BSMScannerException.class $(P)BSMToken.class

$(P)BSMParser.class : $(P)BSMParserTokenTypes.class $(P)BSMTokenStream.class
