76 lines
1.6 KiB
Makefile
76 lines
1.6 KiB
Makefile
.PHONY: default all run clean header
|
|
|
|
PATTERN := ABCD|DEFGH|EFGHI|A{4,}
|
|
FILE := input.txt
|
|
|
|
PATTERN_HASH := $(shell echo "$(PATTERN)" | /sbin/md5)
|
|
|
|
LIBRARIES := $(sort baseline boost ctre pcre pcre-jit re2 std xpressive srell)
|
|
|
|
default: all
|
|
|
|
CXXFLAGS := -std=c++2a -I../../include -Isrell_include
|
|
LDFLAGS :=
|
|
|
|
ctre_CXXFLAGS :=
|
|
ctre_LDFLAGS :=
|
|
ctre_NAME := CTRE
|
|
|
|
boost_CXXFLAGS :=
|
|
boost_LDFLAGS := -lboost_regex
|
|
boost_NAME := boost::regex
|
|
|
|
pcre_CXXFLAGS :=
|
|
pcre_LDFLAGS := -lpcre2-8
|
|
pcre_NAME := PCRE2
|
|
|
|
pcre-jit_CXXFLAGS :=
|
|
pcre-jit_LDFLAGS := -lpcre2-8
|
|
pcre-jit_NAME := PCRE2 (jit)
|
|
|
|
re2_CXXFLAGS :=
|
|
re2_LDFLAGS := -lre2
|
|
re2_NAME := RE2
|
|
|
|
std_NAME := std::regex
|
|
|
|
xpressive_NAME := boost::xpressive
|
|
|
|
srell_NAME := srell
|
|
|
|
all: $(LIBRARIES)
|
|
|
|
$(PATTERN_HASH).tmp:
|
|
@rm -f *.tmp
|
|
@touch $@
|
|
|
|
pattern.hpp: $(PATTERN_HASH).tmp
|
|
@echo "#define PATTERN \"$(PATTERN)\"" > pattern.hpp
|
|
|
|
$(LIBRARIES:%=%.o): %.o: %.cpp common.hpp $(PATTERN_HASH).tmp pattern.hpp
|
|
$(CXX) -O3 $(CXXFLAGS) ${${@:%.o=%}_CXXFLAGS} -c $< -o $@
|
|
|
|
$(LIBRARIES): %: %.o common.hpp $(PATTERN_HASH).tmp pattern.hpp
|
|
$(CXX) -O3 $(LDFLAGS) ${${@}_LDFLAGS} $< -o $@
|
|
|
|
header.csv:
|
|
echo "library;pattern;duration" > header.csv
|
|
echo "library;pattern;duration" > result.csv
|
|
|
|
$(LIBRARIES:%=%.run): %.run: % header
|
|
./$< $(FILE) benchmark "${${<}_NAME}" 2>/dev/null >>result.csv
|
|
|
|
run: $(LIBRARIES:%=%.run)
|
|
|
|
node:
|
|
node node-v8.js path=${FILE} pattern="${PATTERN}"
|
|
|
|
jsc:
|
|
jsc jsc.js -- path=${FILE} pattern="${PATTERN}"
|
|
|
|
result.csv: header.csv $(LIBRARIES:%=%.run)
|
|
touch result.csv
|
|
|
|
clean:
|
|
rm -f $(LIBRARIES) *.tmp header.csv result.csv
|
|
|