| load("@bazel_skylib//rules:build_test.bzl", "build_test") |
| load("@rules_rust//rust:defs.bzl", "rust_library") |
| load("defs.bzl", "with_exec_cfg", "with_extra_exec_rustc_flags_cfg") |
| |
| package(default_visibility = ["//test:__subpackages__"]) |
| |
| # Checks that extra_exec_rustc_flags are passed in exec configuration. |
| # lib.rs is a sample source file that requires a `--cfg=bazel_exec` flag to build. |
| # These targets set up transitions so that building :lib triggers building |
| # lib.rs in exec configuration with //:extra_exec_rustc_flags=[--cfg=bazel_exec]. |
| # The intermediate targets are tagged "manual" as they are not meant to be built |
| # on their own. |
| |
| rust_library( |
| name = "lib_do_not_build_directly", |
| srcs = ["lib.rs"], |
| edition = "2018", |
| tags = ["manual"], |
| ) |
| |
| with_extra_exec_rustc_flags_cfg( |
| name = "lib_with_exec_flags_do_not_build_directly", |
| srcs = ["lib_do_not_build_directly"], |
| extra_exec_rustc_flag = [], |
| extra_exec_rustc_flags = ["--cfg=bazel_exec"], |
| tags = ["manual"], |
| ) |
| |
| with_extra_exec_rustc_flags_cfg( |
| name = "lib_with_singular_exec_flags_do_not_build_directly", |
| srcs = ["lib_do_not_build_directly"], |
| extra_exec_rustc_flag = ["--cfg=bazel_exec"], |
| extra_exec_rustc_flags = [], |
| tags = ["manual"], |
| ) |
| |
| with_exec_cfg( |
| name = "lib", |
| srcs = ["lib_with_exec_flags_do_not_build_directly"], |
| ) |
| |
| with_exec_cfg( |
| name = "lib_singular", |
| srcs = ["lib_with_singular_exec_flags_do_not_build_directly"], |
| ) |
| |
| # Checks that extra_exec_rustc_flags are not passed in non-exec configurations. |
| # lib_no_exec.rs is a sample source file that fails to build if |
| # `--cfg=bazel_exec` is present. The targets below are built in non-exec configurations, |
| # so they should build just fine with //:extra_exec_rustc_flags=[--cfg=bazel_exec]. |
| rust_library( |
| name = "lib_no_exec", |
| srcs = ["lib_no_exec.rs"], |
| edition = "2018", |
| ) |
| |
| with_extra_exec_rustc_flags_cfg( |
| name = "lib_no_exec_with_extra_build_flags", |
| srcs = ["lib_no_exec"], |
| extra_exec_rustc_flag = [], |
| extra_exec_rustc_flags = ["--cfg=bazel_exec"], |
| ) |
| |
| with_extra_exec_rustc_flags_cfg( |
| name = "lib_no_exec_with_singular_extra_build_flags", |
| srcs = ["lib_no_exec"], |
| extra_exec_rustc_flag = ["--cfg=bazel_exec"], |
| extra_exec_rustc_flags = [], |
| ) |
| |
| build_test( |
| name = "lib_build", |
| targets = [ |
| ":lib", |
| ":lib_singular", |
| ":lib_no_exec", |
| ":lib_no_exec_with_extra_build_flags", |
| ":lib_no_exec_with_singular_extra_build_flags", |
| ], |
| ) |