Simplify bazel build.
Use variables instead of functions, and add wrappers for builtins.
Change-Id: If6e75efe35ce2fe754f2ed7421497bc1f5d47507
diff --git a/pw_build/pigweed.bzl b/pw_build/pigweed.bzl
index 4599c9b..d9a8be4 100644
--- a/pw_build/pigweed.bzl
+++ b/pw_build/pigweed.bzl
@@ -12,76 +12,63 @@
# License for the specific language governing permissions and limitations under
# the License.
-def reduced_size_copts():
- """Standard compiler flags to reduce output binary size."""
+# Standard compiler flags to reduce output binary size.
+REDUCED_SIZE_COPTS = [
+ "-fno-common",
+ "-fno-exceptions",
+ "-ffunction-sections",
+ "-fdata-sections",
+ "-fno-rtti",
+]
- return [
- "-fno-common",
- "-fno-exceptions",
- "-ffunction-sections",
- "-fdata-sections",
- "-fno-rtti",
- ]
+STRICT_WARNINGS_COPTS = [
+ "-Wall",
+ "-Wextra",
+ # Make all warnings errors, except for the exemptions below.
+ "-Werror",
+ "-Wno-error=cpp", # preprocessor #warning statement
+ "-Wno-error=deprecated-declarations", # [[deprecated]] attribute
+]
-def strict_warnings_copts():
- return [
- "-Wall",
- "-Wextra",
+CPP17_COPTS = [
+ "-std=c++17",
+ # Allow uses of the register keyword, which may appear in C headers.
+ "-Wno-register",
+]
- # Make all warnings errors, except for the exemptions below.
- "-Werror",
- "-Wno-error=cpp", # preprocessor #warning statement
- "-Wno-error=deprecated-declarations", # [[deprecated]] attribute
- ]
+INCLUDES_COPTS = [
+ "-Ipw_preprocessor/public",
+ "-Ipw_span/public",
+ "-Ipw_status/public",
+ "-Ipw_string/public",
+ "-Ipw_unit_test/public",
+]
-def cpp17_copts():
- return [
- "-std=c++17",
+PW_DEFAULT_COPTS = (
+ REDUCED_SIZE_COPTS +
+ STRICT_WARNINGS_COPTS +
+ CPP17_COPTS +
+ INCLUDES_COPTS
+)
- # Allow uses of the register keyword, which may appear in C headers.
- "-Wno-register",
- ]
+PW_DEFAULT_LINKOPTS = []
-def includes_copts():
- return [
- "-Ipw_preprocessor/public",
- "-Ipw_span/public",
- "-Ipw_status/public",
- "-Ipw_string/public",
- "-Ipw_unit_test/public",
- ]
+def _add_defaults(kwargs):
+ kwargs.setdefault("copts", [])
+ kwargs["copts"].extend(PW_DEFAULT_COPTS)
+ kwargs.setdefault("linkopts", [])
+ kwargs["linkopts"].extend(PW_DEFAULT_LINKOPTS)
-def pw_default_copts():
- return (
- reduced_size_copts() +
- strict_warnings_copts() +
- cpp17_copts() +
- includes_copts()
- )
+def pw_cc_binary(**kwargs):
+ _add_defaults(kwargs)
+ native.cc_binary(**kwargs)
-def pw_default_linkopts():
- return []
+def pw_cc_library(**kwargs):
+ _add_defaults(kwargs)
+ native.cc_library(**kwargs)
-def pw_test(
- name,
- srcs,
- deps = None,
- **kwargs):
- """Create a Pigweed test.
-
- Args:
- name: name of target to create
- srcs: test source files
- deps: dependencies of target
- """
-
- if not deps:
- deps = []
- deps.append("//pw_unit_test:main")
-
- native.cc_test(
- name = name,
- srcs = srcs,
- deps = deps,
- **kwargs
- )
+def pw_cc_test(**kwargs):
+ _add_defaults(kwargs)
+ kwargs.setdefault("deps", [])
+ kwargs["deps"].append("//pw_unit_test:main")
+ native.cc_test(**kwargs)
diff --git a/pw_preprocessor/BUILD b/pw_preprocessor/BUILD
index abdf61e..206521d 100644
--- a/pw_preprocessor/BUILD
+++ b/pw_preprocessor/BUILD
@@ -18,16 +18,13 @@
load(
"//pw_build:pigweed.bzl",
- "pw_default_copts",
- "pw_default_linkopts",
- "pw_test",
+ "pw_cc_library",
+ "pw_cc_test",
)
-cc_library(
+pw_cc_library(
name = "pw_preprocessor",
hdrs = glob(["public/pw_preprocessor/*.h"]),
- copts = pw_default_copts(),
- linkopts = pw_default_linkopts(),
)
TESTS = [
@@ -38,11 +35,9 @@
]
[
- pw_test(
+ pw_cc_test(
name = t,
srcs = [t + ".cc"],
- copts = pw_default_copts(),
- linkopts = pw_default_linkopts(),
deps = ["//pw_preprocessor"],
)
for t in TESTS
diff --git a/pw_span/BUILD b/pw_span/BUILD
index 666d1a1..ea21100 100644
--- a/pw_span/BUILD
+++ b/pw_span/BUILD
@@ -18,23 +18,18 @@
load(
"//pw_build:pigweed.bzl",
- "pw_default_copts",
- "pw_default_linkopts",
- "pw_test",
+ "pw_cc_library",
+ "pw_cc_test",
)
-cc_library(
+pw_cc_library(
name = "pw_span",
srcs = [],
hdrs = ["public/pw_span/span.h"],
- copts = pw_default_copts(),
- linkopts = pw_default_linkopts(),
)
-pw_test(
+pw_cc_test(
name = "span_test",
srcs = ["span_test.cc"],
- copts = pw_default_copts(),
- linkopts = pw_default_linkopts(),
deps = ["//pw_span"],
)
diff --git a/pw_status/BUILD b/pw_status/BUILD
index 717dede..e381e07 100644
--- a/pw_status/BUILD
+++ b/pw_status/BUILD
@@ -18,34 +18,27 @@
load(
"//pw_build:pigweed.bzl",
- "pw_default_copts",
- "pw_default_linkopts",
- "pw_test",
+ "pw_cc_library",
+ "pw_cc_test",
)
-cc_library(
+pw_cc_library(
name = "pw_status",
srcs = ["status.cc"],
hdrs = [
"public/pw_status/status.h",
"public/pw_status/status_with_size.h",
],
- copts = pw_default_copts(),
- linkopts = pw_default_linkopts(),
)
-pw_test(
+pw_cc_test(
name = "status_test",
srcs = ["status_test.cc"],
- copts = pw_default_copts(),
- linkopts = pw_default_linkopts(),
deps = ["//pw_status"],
)
-pw_test(
+pw_cc_test(
name = "status_with_size_test",
srcs = ["status_with_size_test.cc"],
- copts = pw_default_copts(),
- linkopts = pw_default_linkopts(),
deps = ["//pw_status"],
)
diff --git a/pw_string/BUILD b/pw_string/BUILD
index e5edc2a..9b9f29b 100644
--- a/pw_string/BUILD
+++ b/pw_string/BUILD
@@ -18,12 +18,11 @@
load(
"//pw_build:pigweed.bzl",
- "pw_default_copts",
- "pw_default_linkopts",
- "pw_test",
+ "pw_cc_library",
+ "pw_cc_test",
)
-cc_library(
+pw_cc_library(
name = "pw_string",
srcs = [
"format.cc",
@@ -34,8 +33,6 @@
"public/pw_string/to_string.h",
"public/pw_string/type_to_string.h",
],
- copts = pw_default_copts(),
- linkopts = pw_default_linkopts(),
deps = [
"//pw_preprocessor",
"//pw_span",
@@ -43,26 +40,20 @@
],
)
-pw_test(
+pw_cc_test(
name = "format_test",
srcs = ["format_test.cc"],
- copts = pw_default_copts(),
- linkopts = pw_default_linkopts(),
deps = ["//pw_string"],
)
-pw_test(
+pw_cc_test(
name = "type_to_string_test",
srcs = ["type_to_string_test.cc"],
- copts = pw_default_copts(),
- linkopts = pw_default_linkopts(),
deps = ["//pw_string"],
)
-pw_test(
+pw_cc_test(
name = "to_string_test",
srcs = ["to_string_test.cc"],
- copts = pw_default_copts(),
- linkopts = pw_default_linkopts(),
deps = ["//pw_string"],
)
diff --git a/pw_unit_test/BUILD b/pw_unit_test/BUILD
index 4f75733..31cb44d 100644
--- a/pw_unit_test/BUILD
+++ b/pw_unit_test/BUILD
@@ -18,24 +18,21 @@
load(
"//pw_build:pigweed.bzl",
- "pw_default_copts",
- "pw_default_linkopts",
- "pw_test",
+ "pw_cc_library",
+ "pw_cc_test",
)
-cc_library(
+pw_cc_library(
name = "simple_printing_event_handler",
srcs = [
"public/pw_unit_test/event_handler.h",
"public/pw_unit_test/simple_printing_event_handler.h",
"simple_printing_event_handler.cc",
],
- copts = pw_default_copts(),
- linkopts = pw_default_linkopts(),
deps = ["//pw_preprocessor"],
)
-cc_library(
+pw_cc_library(
name = "main",
srcs = [
"framework.cc",
@@ -46,8 +43,6 @@
"public/pw_unit_test/event_handler.h",
"public/pw_unit_test/framework.h",
],
- copts = pw_default_copts(),
- linkopts = pw_default_linkopts(),
deps = [
":simple_printing_event_handler",
"//pw_preprocessor",
@@ -55,9 +50,7 @@
],
)
-pw_test(
+pw_cc_test(
name = "framework_test",
srcs = ["framework_test.cc"],
- copts = pw_default_copts(),
- linkopts = pw_default_linkopts(),
)