# 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", ], ) # Linker script utility PW_MUST_PLACE cc_library( name = "must_place", hdrs = ["public/pw_build/must_place.ld.h"], includes = ["public"], )