TARGET= regexParser test/ccMerge CFLAGS= -Wall -O -g -I$(CERIUM)/include/TaskManager -I. SEQCFLAGS= -Wall -O -g -I$(CERIUM)/include/TaskManager -I. CC= clang++ CbC= /usr/local/Cellar/cbc/llvm3.8/bin/clang CERIUM= ../../Cerium AR= libCeriumGrep.a SRCS_TMP = $(wildcard *.cc) SRCS_EXCLUDE = sequentialSearch.cc state.cc parallelSearch.cc taskInit.cc searchTask.cc main.cc stateCbC.cc sequentialSearchCbC.cc SRCS = $(filter-out $(SRCS_EXCLUDE),$(SRCS_TMP)) OBJS = $(SRCS:.cc=.o) # REGEX = '[A-Z][A-Za-z0-9_]*' # REGEX = '(a|b)*a(a|b)(a|b)' REGEX = '(mil|hav)[A-Za-z]' SUBST = -subset TESTFILE = test/c.txt WC = | wc # WC = .cc.o: $(CC) $(CFLAGS) -c $< -o $@ all: $(TARGET) regexParser: $(OBJS) main.o $(AR) $(CC) $(CFLAGS) -o $@ $(AR) main.o test/searchBit: test/searchBit.cc $(CC) $(CFLAGS) $< bitVector.cc -o $@ test/ccMerge: test/ccMerge.o subsetConstruction.o regexParser.o node.o error.o bitVector.o $(CC) $(CFLAGS) $< subsetConstruction.o regexParser.o node.o error.o bitVector.o CharClass.o -o $@ parallelSearch: $(AR) cd cerium ; $(MAKE) -f Makefile.macosx CERIUM=../$(CERIUM) $(AR): $(OBJS) ar crus $@ $(OBJS) gcov: make CFLAGS="-Wall -O0 -g -coverage" make test1 make merge_test gcov *.gcda test/c.txt : test/c.txt.gz gunzip < $< > $@ clean: rm -f $(TARGET) $(OBJS) $(AR) rm -rf *~ \#* *.gcda *.gcno *.gcov state.cc sequentialSearch *.dSYM *.o stateCbC.cc sequentialCbC cd test; rm -rf *.o *~ \#* *.gcda *.gcno *.gcov *.dSYM cd cerium; make clean touch state.cc stateCbC.cc .SUFFIXES: .cc .o tSearch: regexParser $(TESTFILE) ./regexParser $(SUBSET) -regex $(REGEX) -ts -file $(TESTFILE) $(WC) testParallel : parallelSearch $(TESTFILE) ./cerium/ceriumGrep $(SUBSET) -regex $(REGEX) -file $(TESTFILE) $(WC) test2: regexParser $(TESTFILE) ./regexParser $(SUBSET) -regex $(REGEX) -file $(TESTFILE) $(WC) grepWalk: regexParser $(TESTFILE) ./regexParser $(SUBSET) -regex $(REGEX) -file $(TESTFILE) $(WC) sequentialSearch: sequentialSearch.cc regexParser $(AR) $(TESTFILE) ./regexParser -seq -subset -regex $(REGEX) $(CC) $(SEQCFLAGS) -c sequentialSearch.cc $(CC) $(SEQDFLAGS) sequentialSearch.o $(AR) -o $@ - ./$@ -file $(TESTFILE) $(WC) sequentialLoop: sequentialSearch.cc regexParser $(AR) $(TESTFILE) ./regexParser -loop -subset -regex $(REGEX) $(CC) $(SEQCFLAGS) -c sequentialSearch.cc $(CC) $(SEQDFLAGS) sequentialSearch.o $(AR) -o $@ - ./$@ -file $(TESTFILE) $(WC) sequentialCbC: sequentialSearchCbC.cc regexParser $(AR) $(TESTFILE) ./regexParserCbC -cbc -subset -regex $(REGEX) $(CbC) $(SEQCFLAGS) -O1 -c sequentialSearchCbC.cc $(CbC) $(SEQDFLAGS) sequentialSearchCbC.o $(AR) -o $@ - ./$@ -file $(TESTFILE) $(WC) test1: regexParser ./regexParser -regex 'a' ./regexParser -regex 'ab' ./regexParser -regex 'a*b' ./regexParser -regex 'ab*' ./regexParser -regex '(ab)*' ./regexParser -regex '(ab)*c' ./regexParser -regex '(ab)c' ./regexParser -regex '(a|b)c' ./regexParser -regex 'a(bc)*d' ./regexParser -regex 'abc*d' ./regexParser -regex '(ab)c*d' ./regexParser -regex 'a(b)c' ./regexParser -regex '(a|b|c)d' ./regexParser -regex '(a|b|c)*d' ./regexParser -regex '[a]' ./regexParser -regex '[ab]' ./regexParser -regex '[a-z]' ./regexParser -regex '[a-zA-Z]' ./regexParser -regex '[a-zA-Z]*' ./regexParser -regex 'a[a-zA-Z]*' ./regexParser -regex 'a([a-z])' ./regexParser -regex 'a|[a-z]' ./regexParser -regex 'a|[a-z]*' ./regexParser -regex 'a*|[a-z]' ./regexParser -regex '[d-ga-c]' ./regexParser -regex '[d-ga-d]' ./regexParser -regex '[d-ga-e]' ./regexParser -regex '[d-ga-f]' ./regexParser -regex '[d-ga-h]' ./regexParser -regex '[d-gd-e]' ./regexParser -regex '[d-gd-f]' ./regexParser -regex '[d-gd-h]' ./regexParser -regex '[d-ge-f]' ./regexParser -regex '[d-ge-g]' ./regexParser -regex '[d-ge-i]' ./regexParser -regex '[d-gg-i]' ./regexParser -regex '[d-gh-i]' ./regexParser -regex '[d-ga-cx-z]' ./regexParser -regex '[d-ga-de-d]' ./regexParser -regex '[d-ga-db-e]' ./regexParser -regex '[d-gh-ja-e]' ./regexParser -regex 'abcd' ./regexParser -regex '([a-c]x|[d-f]y)' merge_test: test/ccMerge ./test/ccMerge -regex '[f-i]' -regex 'e' ./test/ccMerge -regex '[f-i]' -regex 'f' ./test/ccMerge -regex '[f-i]' -regex 'g' ./test/ccMerge -regex '[f-i]' -regex 'i' ./test/ccMerge -regex '[f-i]' -regex 'j' ./test/ccMerge -regex 'e' -regex '[f-i]' ./test/ccMerge -regex 'f' -regex '[f-i]' ./test/ccMerge -regex 'g' -regex '[f-i]' ./test/ccMerge -regex 'i' -regex '[f-i]' ./test/ccMerge -regex 'j' -regex '[f-i]' ./test/ccMerge -regex '[f-i]' -regex '[d-e]' ./test/ccMerge -regex '[f-i]' -regex '[d-f]' ./test/ccMerge -regex '[f-i]' -regex '[d-g]' ./test/ccMerge -regex '[f-i]' -regex '[d-i]' ./test/ccMerge -regex '[f-i]' -regex '[d-k]' ./test/ccMerge -regex '[f-i]' -regex '[f-g]' ./test/ccMerge -regex '[f-i]' -regex '[f-i]' ./test/ccMerge -regex '[f-i]' -regex '[f-k]' ./test/ccMerge -regex '[f-i]' -regex '[g-h]' ./test/ccMerge -regex '[f-i]' -regex '[g-i]' ./test/ccMerge -regex '[f-i]' -regex '[g-k]' ./test/ccMerge -regex '[f-i]' -regex '[i-k]' ./test/ccMerge -regex '[f-i]' -regex '[j-k]' ./test/ccMerge -regex '[c-ef-i]' -regex '[d-e]' ./test/ccMerge -regex '[c-ef-i]' -regex '[d-f]' ./test/ccMerge -regex '[c-ef-i]' -regex '[d-g]' ./test/ccMerge -regex '[c-ef-i]' -regex '[d-i]' ./test/ccMerge -regex '[c-ef-ij-m]' -regex '[d-k]' ./test/ccMerge -regex '[f-ij-m]' -regex '[f-k]' ./test/ccMerge -regex '[f-ij-m]' -regex '[g-k]' ./test/ccMerge -regex '[f-ij-m]' -regex '[i-k]' ./test/ccMerge -regex '[f-ij-m]' -regex '[j-k]'