# $Id: makefile 3987 2008-09-16 23:24:22Z abehm $

# Copyright (C) 2007 by The Regents of the University of California

# Date: 10/13/2007
# Author: Chen Li <chenli (at) ics.uci.edu>
#         Alexander Behm <abehm (at) ics.uci.edu>


include ../makefile.inc

# FOR THE LOOPTIMER
LDFLAGS = -lrt

all: libfiltertree.a example perftest unittest
#all: example

gramlist.h:		util/array.h
			touch $@

gramlistsimple.h:	gramlist.h
			touch $@
gramlistsimple.o:	gramlistsimple.h


filtertreenode.h:	gramlistsimple.h \
			util/array.h \
			common/gramgen.h
			touch $@
filtertreenode.o:	filtertreenode.h


filtertypes.h:		common/simmetric.h
			touch $@
filtertypes.o:		filtertypes.h \
			util/misc.h


ftindexerabs.h:		filtertreenode.h \
			filtertypes.h \
			statsutil.h \
			gramlistsimple.h \
			stringcontainer.h \
			common/gramgen.h \
			util/looptimer.h
			touch $@
ftindexerabs.o:		ftindexerabs.h


ftindexermemabs.h:	ftindexerabs.h \
			gramlistsimple.h
			touch $@
ftindexermemabs.o:	ftindexermemabs.h


ftindexersimple.h:	ftindexermemabs.h
			touch $@		
ftindexersimple.o:	ftindexersimple.h


ftsearcherabs.h:	statsutil.h \
			filtertypes.h \
			filtertreenode.h \
			common/query.h
			touch $@
ftsearcherabs.o:	ftsearcherabs.h


ftsearchermem.h:	ftsearcherabs.h \
			ftindexersimple.h \
			common/query.h \
			listmerger/divideskipmerger.h
			touch $@
ftsearchermem.o:	ftsearchermem.h


statsutil.h: 	util/array.h
		touch $@
statsutil.o: 	statsutil.h


statsgen.h: 	statsutil.h \
		ftsearchermem.h \
		ftindexersimple.h \
		common/simmetric.h \
		common/gramgen.h \
		util/looptimer.h
		touch $@
statsgen.o: 	statsgen.h util/input.h util/misc.h


stringcontainer.h:	util/looptimer.h
			touch $@
stringcontainer.o:	stringcontainer.h


libfiltertree.a: 	libfiltertree.a( \
			gramlistsimple.o \
			filtertreenode.o \
			filtertypes.o \
			ftindexerabs.o \
			ftindexermemabs.o \
			ftindexersimple.o \
			ftsearcherabs.o \
			ftsearchermem.o \
			stringcontainer.o \
			statsutil.o)		

perftest.o: 	ftindexersimple.h \
		ftsearchermem.h \
		statsgen.h

perftest: 	statsgen.o \
		libfiltertree.a \
		$(APPSTRINGROOT)/listmerger/liblistmerger.a \
		$(APPSTRINGROOT)/common/libcommon.a \
	  	$(APPSTRINGROOT)/util/libutil.a

example.o: 	ftsearchermem.h \
		common/query.h \
		common/simmetric.h \
		listmerger/divideskipmerger.h \
		listmerger/scancountmerger.h

example: 	libfiltertree.a \
		$(APPSTRINGROOT)/common/libcommon.a \
	  	$(APPSTRINGROOT)/listmerger/liblistmerger.a \
		$(APPSTRINGROOT)/util/libutil.a \
		example.o

unittest.o: 	ftsearchermem.h \
		common/query.h \
		common/simmetric.h \
		listmerger/divideskipmerger.h \
		listmerger/scancountmerger.h

unittest: 	libfiltertree.a \
		$(APPSTRINGROOT)/common/libcommon.a \
	  	$(APPSTRINGROOT)/listmerger/liblistmerger.a \
		$(APPSTRINGROOT)/util/libutil.a \
		unittest.o


.PHONY: $(APPSTRINGROOT)/common/libcommon.a
$(APPSTRINGROOT)/common/libcommon.a: 
	$(MAKE) -C $(APPSTRINGROOT)/common libcommon.a

.PHONY: $(APPSTRINGROOT)/util/libutil.a
$(APPSTRINGROOT)/util/libutil.a: 
	$(MAKE) -C $(APPSTRINGROOT)/util libutil.a

.PHONY:	$(APPSTRINGROOT)/listmerger/liblistmerger.a
$(APPSTRINGROOT)/listmerger/liblistmerger.a: 
	$(MAKE) -C $(APPSTRINGROOT)/listmerger liblistmerger.a

.PHONY:	clean
clean:
	-rm perftest unittest example perftest_search_stats.txt *.o *.a *~ *.ix *.rm *.tmp
	-$(MAKE) -C $(APPSTRINGROOT)/util clean
	-$(MAKE) -C $(APPSTRINGROOT)/listmerger clean
	-$(MAKE) -C $(APPSTRINGROOT)/common clean

