##############################################################################
# pcre parser Makefile
#
#
#
#    Copyright 2006,2007 Randy Smith, smithr@cs.wisc.edu
#
#    This file contains unpublished confidential proprietary
#    work of Randy Smith, Department of Computer Sciences,
#    University of Wisconsin--Madison.  No use of any sort, including
#    execution, modification, copying, storage, distribution, or reverse
#    engineering is permitted without the express written consent of
#    Randy Smith.
#
# $Log: Makefile,v $
# Revision 1.9  2010/09/27 14:48:30  lyangru
# final synchronization
#
# Revision 1.1  2009/06/09 18:51:21  vinodg
# *** empty log message ***
#
# Revision 1.5  2008/09/12 17:47:23  smithr
# Minor changes to maintain compatibility with department OS upgrade
#
# Revision 1.4  2008/04/17 21:26:26  smithr
# Added necessary changes.
#
# Revision 1.3  2008/02/13 20:34:06  smithr
# *** empty log message ***
#
# Revision 1.2  2008/02/13 20:33:10  smithr
# *** empty log message ***
#
# Revision 1.1  2007/08/07 18:00:54  smithr
# initial check in to CVS
#
# Revision 1.3  2006/08/11 14:55:30  smithr
# Added parse_utils, which provides a mechanism for parsing regexes stored
# in a string rather than just stored in a file.
#
# Revision 1.2  2006/08/10 18:35:32  smithr
# Several additions and bug fixes, including:
# (1) user defined char classes implemented.
# (2) escape sequences fully handled
# (3) memory management addressed (destructors free mem as necessary)
# (4) many other miscellaneous bugs, etc.
#
# Revision 1.1  2006/08/10 14:23:01  smithr
# Initial check-in to CVS
#
#
##############################################################################
CFLAGS  = 
DEFINES = 
LIBRARIES =  y pcap

CC      = g++ -g -Wextra -Wall  #-pg
LD      = g++  #-pg



DEFS      = $(patsubst %, -l%, $(DEFINES))
LIBS      = $(patsubst %, -l%, $(LIBRARIES))

.PHONY:		all tags clean

all:		main re2dfa re2dfa_nomin nfa_combination dfa_simulation dfa_combination mdfa_simulation mdfa_dump mdfa_dfa_simulation mdfa_dfa_dump res2nfas

pure:		main main_pure re2dfa_pure re2dfa_nomin_pure

tags:		
		find . -name "*.[ch]*" -print | etags -

pcre_lex.cc:	pcre.l pcre_parse.cc escape_sequences.h
		flex  -o$@ pcre.l

pcre_parse.cc:	pcre.y nodes.h errmsg.h
		bison -v -d -o pcre_parse.cc pcre.y

pcre_lex.o:	pcre_lex.cc
		$(CC) -o $@ -c $<

pcre_parse.o:	pcre_parse.cc
		$(CC) -o $@ -c $<

errmsg.o:	errmsg.cc errmsg.h
		$(CC) -o $@ -c $<

nodes.o:	nodes.cc nodes.h
		$(CC) -o $@ -c $<

escape_sequences.o:	escape_sequences.cc escape_sequences.h
		$(CC) -o $@ -c $<

parse_utils.o:	parse_utils.cc parse_utils.h globals.h nodes.h
		$(CC) -o $@ -c $<

re.o:		re.cc re.h nodes.h nfa.h
		$(CC) -o $@ -c $<

nfa.o:		nfa.cc nfa.h nodes.h
		$(CC) -o $@ -c $<

globals.o:	globals.cc globals.h
		$(CC) -o $@ -c $<

minimize.o:	minimize.cc minimize.h nfa.h
		$(CC) -o $@ -c $<

combine_alg.o:	combine_alg.cc nfa.h globals.h
		$(CC) -o $@ -c $<

dprintf.o:	dprintf.c dprintf.h
		$(CC) -o $@ -c $<

main.o:		main.cc errmsg.h escape_sequences.h pcre_parse.o pcre_lex.o
		$(CC) -o $@ -c $<

nfa_combination.o:	nfa_combination.cc errmsg.h escape_sequences.h pcre_parse.o pcre_lex.o
		$(CC) -o $@ -c $<

dfa_simulation.o:	dfa_simulation.cc errmsg.h escape_sequences.h pcre_parse.o pcre_lex.o
		$(CC) -o $@ -c $<

dfa_combination.o:	dfa_combination.cc errmsg.h escape_sequences.h pcre_parse.o pcre_lex.o
		$(CC) -o $@ -c $<

mdfa_simulation.o:	mdfa_simulation.cc errmsg.h escape_sequences.h 
		$(CC) -o $@ -c $<

mdfa_dump.o:	mdfa_dump.cc 
		$(CC) -o $@ -c $<

mdfa_dfa_simulation.o:	mdfa_dfa_simulation.cc errmsg.h escape_sequences.h 
		$(CC) -o $@ -c $<

mdfa_dfa_dump.o:	mdfa_dfa_dump.cc 
		$(CC) -o $@ -c $<

re2dfa.o:	re2dfa.cc errmsg.h escape_sequences.h pcre_parse.o pcre_lex.o
		$(CC) -o $@ -c $<

re2dfa_nomin.o:	re2dfa_nomin.cc errmsg.h escape_sequences.h pcre_parse.o \
		pcre_lex.o
		$(CC) -o $@ -c $<

res2nfas.o:	res2nfas.cc 
		$(CC) -o $@ -c $<

main:		main.o pcre_parse.o pcre_lex.o errmsg.o nodes.o re.o \
		escape_sequences.o parse_utils.o nfa.o globals.o minimize.o \
		dprintf.o combine_alg.o
		$(CC) -o $@  $^ $(LIBS)

nfa_combination:	nfa_combination.o pcre_parse.o pcre_lex.o errmsg.o nodes.o re.o \
		escape_sequences.o parse_utils.o nfa.o globals.o minimize.o \
		dprintf.o combine_alg.o
		$(CC) -o $@  $^ $(LIBS)

dfa_simulation:	dfa_simulation.o pcre_parse.o pcre_lex.o errmsg.o nodes.o re.o \
		escape_sequences.o parse_utils.o nfa.o globals.o minimize.o \
		dprintf.o combine_alg.o
		$(CC) -o $@  $^ $(LIBS)

dfa_combination: dfa_combination.o pcre_parse.o pcre_lex.o errmsg.o nodes.o re.o escape_sequences.o parse_utils.o nfa.o globals.o minimize.o dprintf.o combine_alg.o 
		$(CC) -o $@  $^ $(LIBS)

mdfa_simulation: mdfa_simulation.o pcre_parse.o pcre_lex.o errmsg.o nodes.o re.o escape_sequences.o parse_utils.o nfa.o globals.o minimize.o dprintf.o combine_alg.o 
		$(CC) -o $@  $^ $(LIBS)

mdfa_dump:	mdfa_dump.o pcre_parse.o pcre_lex.o errmsg.o nodes.o escape_sequences.o parse_utils.o re.o globals.o minimize.o  nfa.o dprintf.o combine_alg.o

mdfa_dfa_simulation: mdfa_dfa_simulation.o pcre_parse.o pcre_lex.o errmsg.o nodes.o re.o escape_sequences.o parse_utils.o nfa.o globals.o minimize.o dprintf.o combine_alg.o 
		$(CC) -o $@  $^ $(LIBS)

mdfa_dfa_dump:	mdfa_dfa_dump.o pcre_parse.o pcre_lex.o errmsg.o nodes.o escape_sequences.o parse_utils.o re.o globals.o minimize.o  nfa.o dprintf.o combine_alg.o

res2nfas:	res2nfas.o re.o nfa.o parse_utils.o pcre_parse.o nodes.o pcre_lex.o errmsg.o escape_sequences.o globals.o 
		$(CC) -o $@ $^ $(LIBS)

main_pure:	main.o pcre_parse.o pcre_lex.o errmsg.o nodes.o re.o \
		escape_sequences.o parse_utils.o nfa.o globals.o minimize.o \
		dprintf.o
		purify -chain-length=12 $(CC) -o $@  $^ $(LIBS)

re2dfa:		re2dfa.o pcre_parse.o pcre_lex.o errmsg.o nodes.o re.o \
		escape_sequences.o parse_utils.o nfa.o globals.o minimize.o \
		dprintf.o combine_alg.o
		$(CC) -o $@  $^ $(LIBS)

re2dfa_pure:	re2dfa.o pcre_parse.o pcre_lex.o errmsg.o nodes.o re.o \
		escape_sequences.o parse_utils.o nfa.o globals.o minimize.o \
		dprintf.o combine_alg.o
		purify -chain-length=12 $(CC) -o $@  $^ $(LIBS)

re2dfa_nomin:	re2dfa_nomin.o pcre_parse.o pcre_lex.o errmsg.o \
		nodes.o re.o \
		escape_sequences.o parse_utils.o nfa.o globals.o minimize.o \
		dprintf.o combine_alg.o
		$(CC) -o $@  $^ $(LIBS)

re2dfa_nomin_pure:	re2dfa_nomin.o pcre_parse.o pcre_lex.o errmsg.o \
		nodes.o re.o \
		escape_sequences.o parse_utils.o nfa.o globals.o minimize.o \
		dprintf.o combine_alg.o
		purify -chain-length=12 $(CC) -o $@  $^ $(LIBS)

clean:
		@rm -f *.o combiner main mcomb re2dfa re2dfa_nomin nfa_combination dfa_simulation dfa_combination mdfa_simulation mdfa_dump res2nfas
		@rm -f combiner_pure main_pure mcomb_pure
		@rm -f pcre_parse.* pcre_lex.*
