Switch to Starlark for C++ rules.

Change-Id: I3c8e52973506f5dcc96f98460f7d0b3e1263f381
Reviewed-on: https://code-review.googlesource.com/c/re2/+/44211
Reviewed-by: Paul Wankadia <junyer@google.com>
diff --git a/BUILD b/BUILD
index 30ce320..f3191b9 100644
--- a/BUILD
+++ b/BUILD
@@ -23,6 +23,8 @@
     values = {"cpu": "x64_windows_msvc"},
 )
 
+load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test")
+
 cc_library(
     name = "re2",
     srcs = [
@@ -122,106 +124,144 @@
     deps = [":testing"],
 )
 
-load(":re2_test.bzl", "re2_test")
-
-re2_test(
-    "charclass_test",
+cc_test(
+    name = "charclass_test",
     size = "small",
+    srcs = ["re2/testing/charclass_test.cc"],
+    deps = [":test"],
 )
 
-re2_test(
-    "compile_test",
+cc_test(
+    name = "compile_test",
     size = "small",
+    srcs = ["re2/testing/compile_test.cc"],
+    deps = [":test"],
 )
 
-re2_test(
-    "filtered_re2_test",
+cc_test(
+    name = "filtered_re2_test",
     size = "small",
+    srcs = ["re2/testing/filtered_re2_test.cc"],
+    deps = [":test"],
 )
 
-re2_test(
-    "mimics_pcre_test",
+cc_test(
+    name = "mimics_pcre_test",
     size = "small",
+    srcs = ["re2/testing/mimics_pcre_test.cc"],
+    deps = [":test"],
 )
 
-re2_test(
-    "parse_test",
+cc_test(
+    name = "parse_test",
     size = "small",
+    srcs = ["re2/testing/parse_test.cc"],
+    deps = [":test"],
 )
 
-re2_test(
-    "possible_match_test",
+cc_test(
+    name = "possible_match_test",
     size = "small",
+    srcs = ["re2/testing/possible_match_test.cc"],
+    deps = [":test"],
 )
 
-re2_test(
-    "re2_arg_test",
+cc_test(
+    name = "re2_arg_test",
     size = "small",
+    srcs = ["re2/testing/re2_arg_test.cc"],
+    deps = [":test"],
 )
 
-re2_test(
-    "re2_test",
+cc_test(
+    name = "re2_test",
     size = "small",
+    srcs = ["re2/testing/re2_test.cc"],
+    deps = [":test"],
 )
 
-re2_test(
-    "regexp_test",
+cc_test(
+    name = "regexp_test",
     size = "small",
+    srcs = ["re2/testing/regexp_test.cc"],
+    deps = [":test"],
 )
 
-re2_test(
-    "required_prefix_test",
+cc_test(
+    name = "required_prefix_test",
     size = "small",
+    srcs = ["re2/testing/required_prefix_test.cc"],
+    deps = [":test"],
 )
 
-re2_test(
-    "search_test",
+cc_test(
+    name = "search_test",
     size = "small",
+    srcs = ["re2/testing/search_test.cc"],
+    deps = [":test"],
 )
 
-re2_test(
-    "set_test",
+cc_test(
+    name = "set_test",
     size = "small",
+    srcs = ["re2/testing/set_test.cc"],
+    deps = [":test"],
 )
 
-re2_test(
-    "simplify_test",
+cc_test(
+    name = "simplify_test",
     size = "small",
+    srcs = ["re2/testing/simplify_test.cc"],
+    deps = [":test"],
 )
 
-re2_test(
-    "string_generator_test",
+cc_test(
+    name = "string_generator_test",
     size = "small",
+    srcs = ["re2/testing/string_generator_test.cc"],
+    deps = [":test"],
 )
 
-re2_test(
-    "dfa_test",
+cc_test(
+    name = "dfa_test",
     size = "large",
+    srcs = ["re2/testing/dfa_test.cc"],
+    deps = [":test"],
 )
 
-re2_test(
-    "exhaustive1_test",
+cc_test(
+    name = "exhaustive1_test",
     size = "large",
+    srcs = ["re2/testing/exhaustive1_test.cc"],
+    deps = [":test"],
 )
 
-re2_test(
-    "exhaustive2_test",
+cc_test(
+    name = "exhaustive2_test",
     size = "large",
+    srcs = ["re2/testing/exhaustive2_test.cc"],
+    deps = [":test"],
 )
 
-re2_test(
-    "exhaustive3_test",
+cc_test(
+    name = "exhaustive3_test",
     size = "large",
+    srcs = ["re2/testing/exhaustive3_test.cc"],
+    deps = [":test"],
 )
 
-re2_test(
-    "exhaustive_test",
+cc_test(
+    name = "exhaustive_test",
     size = "large",
+    srcs = ["re2/testing/exhaustive_test.cc"],
+    deps = [":test"],
 )
 
-re2_test(
-    "random_test",
+cc_test(
+    name = "random_test",
     size = "large",
+    srcs = ["re2/testing/random_test.cc"],
+    deps = [":test"],
 )
 
 cc_library(
diff --git a/WORKSPACE b/WORKSPACE
index de481fe..484abfe 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -3,4 +3,13 @@
 # license that can be found in the LICENSE file.
 
 # Bazel (http://bazel.io/) WORKSPACE file for RE2.
+
 workspace(name = "com_googlesource_code_re2")
+
+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+
+http_archive(
+    name = "rules_cc",
+    strip_prefix = "rules_cc-master",
+    urls = ["https://github.com/bazelbuild/rules_cc/archive/master.zip"],
+)
diff --git a/re2_test.bzl b/re2_test.bzl
deleted file mode 100644
index c0eb654..0000000
--- a/re2_test.bzl
+++ /dev/null
@@ -1,12 +0,0 @@
-# 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.
-
-# Defines a Bazel macro that instantiates a native cc_test rule for an RE2 test.
-def re2_test(name, deps=[], size="medium"):
-  native.cc_test(
-      name=name,
-      srcs=["re2/testing/%s.cc" % (name)],
-      deps=[":test"] + deps,
-      size=size,
-  )