2016-02-07 21:58:58 +00:00
|
|
|
SET(re2_headers
|
|
|
|
./re2/tostring.cc
|
|
|
|
./re2/dfa.cc
|
|
|
|
./re2/prefilter.cc
|
|
|
|
./re2/compile.cc
|
|
|
|
./re2/regexp.cc
|
|
|
|
./re2/onepass.cc
|
|
|
|
./re2/prefilter_tree.cc
|
|
|
|
./re2/set.cc
|
|
|
|
./re2/filtered_re2.cc
|
|
|
|
./re2/perl_groups.cc
|
|
|
|
./re2/parse.cc
|
|
|
|
./re2/nfa.cc
|
|
|
|
./re2/bitstate.cc
|
|
|
|
./re2/simplify.cc
|
|
|
|
./re2/unicode_groups.cc
|
|
|
|
./re2/mimics_pcre.cc
|
|
|
|
./re2/re2.cc
|
|
|
|
./re2/prog.cc
|
|
|
|
./re2/unicode_casefold.cc
|
|
|
|
./util/test.cc
|
|
|
|
./util/strutil.cc
|
|
|
|
./util/stringpiece.cc
|
|
|
|
./util/hash.cc
|
|
|
|
./util/arena.cc
|
|
|
|
./util/benchmark.cc
|
|
|
|
./util/valgrind.cc
|
|
|
|
./util/pcre.cc
|
|
|
|
./util/stringprintf.cc
|
|
|
|
./util/rune.cc
|
|
|
|
./util/random.cc
|
|
|
|
./util/thread.cc
|
|
|
|
)
|
|
|
|
|
|
|
|
# Смысл в том, чтобы собрать две версии библиотеки - потокобезопасную (re2) и непотокобезопасную (re2_st).
|
|
|
|
# Библиотека re2, при выполнении регекспа, изменяет некоторое состояние - создаёт временные DFA.
|
|
|
|
# Для того, чтобы один объект-регексп можно было использовать одновременно из разных потоков, она использует RWLock.
|
|
|
|
# При этом, даже если использовать в разных потоках разные объекты re2 (созданные из одинакового регекспа),
|
|
|
|
# то, не смотря на отсутствие блокировок, RWLock "вхолостую" всё-равно очень существенно тормозит.
|
|
|
|
# Решение: собрать непотокобезопасную версию библиотеки и использовать разные объекты re2 в разных потоках.
|
|
|
|
|
|
|
|
add_definitions( -DNDEBUG )
|
|
|
|
|
|
|
|
add_library (re2 ${re2_headers})
|
|
|
|
add_library (re2_st ${re2_headers})
|
|
|
|
|
|
|
|
set_target_properties(re2_st PROPERTIES COMPILE_DEFINITIONS "NO_THREADS;re2=re2_st")
|
|
|
|
|
|
|
|
ADD_CUSTOM_COMMAND(
|
|
|
|
TARGET re2_st
|
|
|
|
POST_BUILD
|
2016-02-08 21:34:49 +00:00
|
|
|
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/create_st_headers.sh ARGS ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}
|
2016-02-07 21:58:58 +00:00
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
|
|
|
COMMENT "Creating headers for re2_st library.")
|