blob: 9542979c3d5a65fea0d3bcf3e1f92ff00d917930 [file] [log] [blame]
# Copyright 2021 The Fuchsia Authors. All Rights Reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.
import("//build/components/fuchsia_unittest_package.gni")
config("re2_config") {
include_dirs = [ "src" ]
}
config("re2_skipped_warnings") {
visibility = [ ":*" ]
cflags = [
"-Wno-conversion",
"-Wno-extra-semi",
"-Wno-missing-field-initializers",
"-Wno-tautological-unsigned-enum-zero-compare",
"-Wno-tautological-unsigned-zero-compare",
"-Wno-unused",
"-Wno-unused-parameter",
]
}
# Tests depend on this target instead of ":re2" because the .so exports a
# limited set of symbols and tests need access to the full symbol list.
source_set("re2_source") {
visibility = [ ":*" ]
sources = [
"src/re2/bitmap256.h",
"src/re2/bitstate.cc",
"src/re2/compile.cc",
"src/re2/dfa.cc",
"src/re2/filtered_re2.cc",
"src/re2/filtered_re2.h",
"src/re2/mimics_pcre.cc",
"src/re2/nfa.cc",
"src/re2/onepass.cc",
"src/re2/parse.cc",
"src/re2/perl_groups.cc",
"src/re2/prefilter.cc",
"src/re2/prefilter.h",
"src/re2/prefilter_tree.cc",
"src/re2/prefilter_tree.h",
"src/re2/prog.cc",
"src/re2/prog.h",
"src/re2/re2.cc",
"src/re2/re2.h",
"src/re2/regexp.cc",
"src/re2/regexp.h",
"src/re2/set.cc",
"src/re2/set.h",
"src/re2/simplify.cc",
"src/re2/sparse_array.h",
"src/re2/sparse_set.h",
"src/re2/stringpiece.cc",
"src/re2/stringpiece.h",
"src/re2/tostring.cc",
"src/re2/unicode_casefold.cc",
"src/re2/unicode_casefold.h",
"src/re2/unicode_groups.cc",
"src/re2/unicode_groups.h",
"src/re2/walker-inl.h",
"src/util/flags.h",
"src/util/logging.h",
"src/util/mutex.h",
"src/util/rune.cc",
"src/util/strutil.cc",
"src/util/utf.h",
"src/util/util.h",
]
public = [ "src/re2/re2.h" ]
public_configs = [ ":re2_config" ]
configs += [ ":re2_skipped_warnings" ]
# Ensure the symbols are not hidden else the .so won't have any exported
# symbols. When we build the .so (below) we supply a linker script which
# limits the set of public symbols.
configs -= [ "//build/config:symbol_visibility_hidden" ]
}
# Building as a shared library to reduce space usage in production images.
# See space analysis in fxrev.dev/532721.
target(default_library_type, "re2") {
deps = [ ":re2_source" ]
public = [ "src/re2/re2.h" ]
public_configs = [ ":re2_config" ]
configs += [ ":re2_skipped_warnings" ]
configs -= [ "//build/config:symbol_visibility_hidden" ]
if (default_library_type == "shared_library") {
if (is_mac) {
version_script = "src/libre2.symbols.darwin"
} else {
version_script = "src/libre2.symbols"
}
inputs = [ version_script ]
if (is_mac) {
ldflags = [ "-Wl,-exported_symbols_list=" +
rebase_path(version_script, root_build_dir) ]
} else {
ldflags = [ "-Wl,--version-script=" +
rebase_path(version_script, root_build_dir) ]
}
}
}
source_set("testing") {
testonly = true
visibility = [ ":*" ]
sources = [
"src/re2/testing/backtrack.cc",
"src/re2/testing/dump.cc",
"src/re2/testing/exhaustive_tester.cc",
"src/re2/testing/exhaustive_tester.h",
"src/re2/testing/null_walker.cc",
"src/re2/testing/regexp_generator.cc",
"src/re2/testing/regexp_generator.h",
"src/re2/testing/string_generator.cc",
"src/re2/testing/string_generator.h",
"src/re2/testing/tester.cc",
"src/re2/testing/tester.h",
"src/util/benchmark.h",
"src/util/pcre.cc",
"src/util/pcre.h",
"src/util/test.h",
]
public_deps = [ ":re2_source" ]
configs += [ ":re2_skipped_warnings" ]
}
executable("re2_fast_tests_bin") {
testonly = true
sources = [
"src/re2/testing/charclass_test.cc",
"src/re2/testing/compile_test.cc",
"src/re2/testing/filtered_re2_test.cc",
"src/re2/testing/mimics_pcre_test.cc",
"src/re2/testing/parse_test.cc",
"src/re2/testing/possible_match_test.cc",
"src/re2/testing/re2_arg_test.cc",
"src/re2/testing/re2_test.cc",
"src/re2/testing/regexp_test.cc",
"src/re2/testing/required_prefix_test.cc",
"src/re2/testing/search_test.cc",
"src/re2/testing/set_test.cc",
"src/re2/testing/simplify_test.cc",
"src/re2/testing/string_generator_test.cc",
"src/util/test.cc",
]
deps = [ ":testing" ]
configs += [ ":re2_skipped_warnings" ]
}
executable("re2_slow_tests_bin") {
testonly = true
sources = [
"src/re2/testing/dfa_test.cc",
"src/re2/testing/exhaustive1_test.cc",
"src/re2/testing/exhaustive2_test.cc",
"src/re2/testing/exhaustive3_test.cc",
"src/re2/testing/exhaustive_test.cc",
"src/re2/testing/random_test.cc",
"src/util/test.cc",
]
deps = [ ":testing" ]
configs += [ ":re2_skipped_warnings" ]
}
executable("re2_benchmarks") {
testonly = true
sources = [
"src/re2/testing/regexp_benchmark.cc",
"src/util/benchmark.cc",
]
deps = [ ":re2_source" ]
public_deps = [ ":testing" ]
configs += [ ":re2_skipped_warnings" ]
}
fuchsia_unittest_package("re2_fast_tests") {
deps = [
":re2_fast_tests_bin",
"//src/sys/testing/elftest",
]
}
fuchsia_unittest_package("re2_slow_tests") {
deps = [
":re2_slow_tests_bin",
"//src/sys/testing/elftest",
]
}
group("tests") {
testonly = true
deps = [
":re2_fast_tests",
# Ensure these build, but don't run them by default: benchmarks don't have
# a pass/fail status and the slow tests take hours to run.
":re2_benchmarks",
":re2_slow_tests_bin",
]
}