nutri/external/ctre/tests/benchmark-exec/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