blob: 57734001a150f3da610b7b5583d7c62dd24b77d8 [file] [log] [blame]
# Copyright 2022 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_linker_script")
cc_library(
name = "header_test",
hdrs = ["header_test.h"],
includes = ["."],
)
pw_linker_script(
name = "linker_script_test",
defines = [
"PW_BOOT_FLASH_BEGIN=0x08000200",
"PW_BOOT_FLASH_SIZE=1024K",
"PW_BOOT_HEAP_SIZE=112K",
"PW_BOOT_MIN_STACK_SIZE=1K",
"PW_BOOT_RAM_BEGIN=0x20000000",
"PW_BOOT_RAM_SIZE=192K",
"PW_BOOT_VECTOR_TABLE_BEGIN=0x08000000",
"PW_BOOT_VECTOR_TABLE_SIZE=1M",
],
linker_script = "linker_script.ld",
deps = [":header_test"],
)
# Use cc_binary to build the test to avoid duplicating the linker script in the
# command line via implicit deps in pw_cc_binary.
cc_binary(
name = "test_linker_script",
srcs = ["test.cc"],
copts = ["-Wno-unused-variable"],
# Only compatible with platforms that support linker scripts.
target_compatible_with = select({
"@platforms//os:macos": ["@platforms//:incompatible"],
"@platforms//os:windows": ["@platforms//:incompatible"],
"//conditions:default": [],
}),
deps = [":linker_script_test"],
)
# Use cc_library to depend on the linker script, and then use cc_binary to build
# the test, verifying that linker scripts can be included via transitive deps.
cc_library(
name = "lib_linker_script",
deps = [":linker_script_test"],
)
cc_binary(
name = "test_transitive_linker_script",
srcs = ["test.cc"],
copts = ["-Wno-unused-variable"],
# Only compatible with platforms that support linker scripts.
target_compatible_with = select({
"@platforms//os:macos": ["@platforms//:incompatible"],
"@platforms//os:windows": ["@platforms//:incompatible"],
"//conditions:default": [],
}),
deps = [":lib_linker_script"],
)
# Verify that the linker script can also be specified directly.
cc_binary(
name = "test_direct_linker_script",
srcs = ["test.cc"],
additional_linker_inputs = [":linker_script_test"],
copts = ["-Wno-unused-variable"],
linkopts = ["-T $(location :linker_script_test)"],
# Only compatible with platforms that support linker scripts.
target_compatible_with = select({
"@platforms//os:macos": ["@platforms//:incompatible"],
"@platforms//os:windows": ["@platforms//:incompatible"],
"//conditions:default": [],
}),
)