blob: f89cfa25b3f8c4159c7ed9922412263385a256d7 [file] [log] [blame]
# Copyright 2019 The Pigweed Authors
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
load(
"//pw_build:pigweed.bzl",
"pw_cc_binary_with_map",
"pw_cc_blob_info",
"pw_cc_blob_library",
"pw_cc_test",
)
package(default_visibility = ["//visibility:public"])
licenses(["notice"])
config_setting(
name = "kythe",
values = {
"define": "kythe_corpus=pigweed.googlesource.com/pigweed/pigweed",
},
)
pw_cc_blob_info(
name = "test_blob_aligned",
alignas = "512",
file_path = "test_blob_0123.bin",
symbol_name = "kFirstBlob0123",
)
pw_cc_blob_info(
name = "test_blob_unaligned",
file_path = "test_blob_0123.bin",
symbol_name = "kSecondBlob0123",
)
pw_cc_blob_library(
name = "test_blob",
blobs = [
":test_blob_aligned",
":test_blob_unaligned",
],
namespace = "test::ns",
out_header = "pw_build/test_blob.h",
)
pw_cc_test(
name = "cc_blob_library_test",
srcs = ["cc_blob_library_test.cc"],
deps = [":test_blob"],
)
pw_cc_binary_with_map(
name = "cc_binary_with_map",
srcs = ["empty_main.cc"],
# Only enable on platforms that support -Map linker flag
target_compatible_with = select({
"@platforms//os:macos": ["@platforms//:incompatible"],
"@platforms//os:windows": ["@platforms//:incompatible"],
"//conditions:default": [],
}),
)
# Bazel produces root-relative file paths without the -ffile-prefix-map option.
pw_cc_test(
name = "file_prefix_map_test",
srcs = [
"file_prefix_map_test.cc",
"pw_build_private/file_prefix_map_test.h",
],
defines = [
"PW_BUILD_EXPECTED_HEADER_PATH=\\\"pw_build/pw_build_private/file_prefix_map_test.h\\\"",
"PW_BUILD_EXPECTED_SOURCE_PATH=\\\"pw_build/file_prefix_map_test.cc\\\"",
],
)
label_flag(
name = "default_module_config",
# The default module config is empty.
build_setting_default = ":empty_cc_library",
)
cc_library(
name = "test_module_config",
defines = [
"PW_THREAD_FREERTOS_CONFIG_JOINING_ENABLED=1",
],
)
pw_cc_test(
name = "module_config_test",
srcs = ["module_config_test.cc"],
# This test requires a special configuration. It's run in CI, and can be
# run manually via,
#
# bazel build \
# --//pw_thread_freertos:config_override=//pw_build:test_module_config \
# --platforms=//pw_build/platforms:testonly_freertos \
# //pw_build:module_config_test
tags = ["manual"],
deps = ["//pw_thread:thread"],
)
# This empty library is used as a placeholder for label flags that need to
# point to a library of some kind, but don't actually need the dependency to
# amount to anything.
cc_library(
name = "empty_cc_library",
)
# A special target used instead of a cc_library as the default condition in
# backend multiplexer select statements to signal that a facade is in an
# unconfigured state. This produces better error messages than e.g. using an
# invalid label.
#
# If you're a user whose build errored out because a library transitively
# depended on this target: the platform you're targeting did not specify which
# backend to use for some facade. Look at the previous step in the dependency
# chain (printed with the error) to figure out which one.
cc_library(
name = "unspecified_backend",
target_compatible_with = ["@platforms//:incompatible"],
)
# Additional libraries that all binaries using Pigweed should be linked against.
#
# This is analogous to GN's pw_build_LINK_DEPS. See
# https://pigweed.dev/build_system.html#docs-build-system-bazel-link-extra-lib
# for more details.
cc_library(
name = "default_link_extra_lib",
deps = [
"//pw_assert:backend_impl",
"//pw_log:backend_impl",
],
)