# Copyright 2009 The RE2 Authors.  All Rights Reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.

# Bazel (http://bazel.io/) BUILD file for RE2.

licenses(["notice"])

exports_files(["LICENSE"])

config_setting(
    name = "darwin",
    values = {"cpu": "darwin"},
)

config_setting(
    name = "windows",
    values = {"cpu": "x64_windows"},
)

config_setting(
    name = "windows_msvc",
    values = {"cpu": "x64_windows_msvc"},
)

load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test")

cc_library(
    name = "re2",
    srcs = [
        "re2/bitmap256.h",
        "re2/bitstate.cc",
        "re2/compile.cc",
        "re2/dfa.cc",
        "re2/filtered_re2.cc",
        "re2/mimics_pcre.cc",
        "re2/nfa.cc",
        "re2/onepass.cc",
        "re2/parse.cc",
        "re2/perl_groups.cc",
        "re2/pod_array.h",
        "re2/prefilter.cc",
        "re2/prefilter.h",
        "re2/prefilter_tree.cc",
        "re2/prefilter_tree.h",
        "re2/prog.cc",
        "re2/prog.h",
        "re2/re2.cc",
        "re2/regexp.cc",
        "re2/regexp.h",
        "re2/set.cc",
        "re2/simplify.cc",
        "re2/sparse_array.h",
        "re2/sparse_set.h",
        "re2/tostring.cc",
        "re2/unicode_casefold.cc",
        "re2/unicode_casefold.h",
        "re2/unicode_groups.cc",
        "re2/unicode_groups.h",
        "re2/walker-inl.h",
        "util/logging.h",
        "util/rune.cc",
        "util/strutil.cc",
        "util/strutil.h",
        "util/utf.h",
    ],
    hdrs = [
        "re2/filtered_re2.h",
        "re2/re2.h",
        "re2/set.h",
    ],
    copts = select({
        ":windows": [],
        ":windows_msvc": [],
        "//conditions:default": ["-pthread"],
    }),
    linkopts = select({
        # Darwin doesn't need `-pthread' when linking and it appears that
        # older versions of Clang will warn about the unused command line
        # argument, so just don't pass it.
        ":darwin": [],
        ":windows": [],
        ":windows_msvc": [],
        "//conditions:default": ["-pthread"],
    }),
    visibility = ["//visibility:public"],
    deps = [
        "@com_google_absl//absl/base",
        "@com_google_absl//absl/base:core_headers",
        "@com_google_absl//absl/container:fixed_array",
        "@com_google_absl//absl/container:flat_hash_map",
        "@com_google_absl//absl/container:flat_hash_set",
        "@com_google_absl//absl/container:inlined_vector",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/strings:str_format",
        "@com_google_absl//absl/synchronization",
        "@com_google_absl//absl/types:span",
    ],
)

cc_library(
    name = "testing",
    testonly = 1,
    srcs = [
        "re2/testing/backtrack.cc",
        "re2/testing/dump.cc",
        "re2/testing/exhaustive_tester.cc",
        "re2/testing/null_walker.cc",
        "re2/testing/regexp_generator.cc",
        "re2/testing/string_generator.cc",
        "re2/testing/tester.cc",
        "util/pcre.cc",
    ],
    hdrs = [
        "re2/testing/exhaustive_tester.h",
        "re2/testing/regexp_generator.h",
        "re2/testing/string_generator.h",
        "re2/testing/tester.h",
        "util/malloc_counter.h",
        "util/pcre.h",
    ],
    deps = [
        ":re2",
        "@com_google_absl//absl/flags:flag",
        "@com_google_googletest//:gtest",
    ],
)

cc_library(
    name = "test",
    testonly = 1,
    srcs = [],
    deps = [
        ":testing",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "charclass_test",
    size = "small",
    srcs = ["re2/testing/charclass_test.cc"],
    deps = [":test"],
)

cc_test(
    name = "compile_test",
    size = "small",
    srcs = ["re2/testing/compile_test.cc"],
    deps = [":test"],
)

cc_test(
    name = "filtered_re2_test",
    size = "small",
    srcs = ["re2/testing/filtered_re2_test.cc"],
    deps = [":test"],
)

cc_test(
    name = "mimics_pcre_test",
    size = "small",
    srcs = ["re2/testing/mimics_pcre_test.cc"],
    deps = [":test"],
)

cc_test(
    name = "parse_test",
    size = "small",
    srcs = ["re2/testing/parse_test.cc"],
    deps = [":test"],
)

cc_test(
    name = "possible_match_test",
    size = "small",
    srcs = ["re2/testing/possible_match_test.cc"],
    deps = [":test"],
)

cc_test(
    name = "re2_arg_test",
    size = "small",
    srcs = ["re2/testing/re2_arg_test.cc"],
    deps = [":test"],
)

cc_test(
    name = "re2_test",
    size = "small",
    srcs = ["re2/testing/re2_test.cc"],
    deps = [":test"],
)

cc_test(
    name = "regexp_test",
    size = "small",
    srcs = ["re2/testing/regexp_test.cc"],
    deps = [":test"],
)

cc_test(
    name = "required_prefix_test",
    size = "small",
    srcs = ["re2/testing/required_prefix_test.cc"],
    deps = [":test"],
)

cc_test(
    name = "search_test",
    size = "small",
    srcs = ["re2/testing/search_test.cc"],
    deps = [":test"],
)

cc_test(
    name = "set_test",
    size = "small",
    srcs = ["re2/testing/set_test.cc"],
    deps = [":test"],
)

cc_test(
    name = "simplify_test",
    size = "small",
    srcs = ["re2/testing/simplify_test.cc"],
    deps = [":test"],
)

cc_test(
    name = "string_generator_test",
    size = "small",
    srcs = ["re2/testing/string_generator_test.cc"],
    deps = [":test"],
)

cc_test(
    name = "dfa_test",
    size = "large",
    srcs = ["re2/testing/dfa_test.cc"],
    deps = [":test"],
)

cc_test(
    name = "exhaustive1_test",
    size = "large",
    srcs = ["re2/testing/exhaustive1_test.cc"],
    deps = [":test"],
)

cc_test(
    name = "exhaustive2_test",
    size = "large",
    srcs = ["re2/testing/exhaustive2_test.cc"],
    deps = [":test"],
)

cc_test(
    name = "exhaustive3_test",
    size = "large",
    srcs = ["re2/testing/exhaustive3_test.cc"],
    deps = [":test"],
)

cc_test(
    name = "exhaustive_test",
    size = "large",
    srcs = ["re2/testing/exhaustive_test.cc"],
    deps = [":test"],
)

cc_test(
    name = "random_test",
    size = "large",
    srcs = ["re2/testing/random_test.cc"],
    deps = [":test"],
)

cc_library(
    name = "benchmark",
    testonly = 1,
    srcs = [],
    deps = [
        ":testing",
        "@com_github_google_benchmark//:benchmark_main",
    ],
)

cc_binary(
    name = "regexp_benchmark",
    testonly = 1,
    srcs = ["re2/testing/regexp_benchmark.cc"],
    deps = [":benchmark"],
)
