| # Copyright (c) 2026 The WebRTC project authors. All Rights Reserved. |
| # |
| # Use of this source code is governed by a BSD-style license |
| # that can be found in the LICENSE file in the root of the source |
| # tree. An additional intellectual property rights grant can be found |
| # in the file PATENTS. All contributing project authors may |
| # be found in the AUTHORS file in the root of the source tree. |
| |
| import("//build/config/rust.gni") |
| import("//build/rust/rust_macro.gni") |
| import("//build/rust/rust_static_library.gni") |
| import("//build/rust/rust_unit_test.gni") |
| import("../../webrtc.gni") |
| |
| # These provide the base import macros for webrtc, and thus use the templates |
| # from //build and not webrtc's macros. |
| if (enable_rust) { |
| rust_macro("webrtc_import_macro") { |
| crate_name = "import" |
| crate_root = "import.rs" |
| sources = [ |
| "import.rs", |
| "path_utils.rs", |
| ] |
| deps = [ |
| "//third_party/rust/proc_macro2/v1:lib", |
| "//third_party/rust/quote/v1:lib", |
| "//third_party/rust/syn/v2:lib", |
| ] |
| |
| # Don't depend on ourselves. |
| no_chromium_prelude = true |
| } |
| |
| rust_static_library("webrtc_import") { |
| crate_name = "webrtc" |
| crate_root = "lib.rs" |
| sources = [ "lib.rs" ] |
| |
| deps = [ ":webrtc_import_macro" ] |
| |
| # Don't depend on ourselves. |
| no_chromium_prelude = true |
| } |
| |
| if (rtc_include_tests) { |
| # Dummy library crate utilized by the standalone macro verification test. |
| rust_static_library("webrtc_import_test_lib") { |
| testonly = true |
| crate_root = "webrtc_import_test_lib.rs" |
| sources = [ "webrtc_import_test_lib.rs" ] |
| } |
| |
| # Native target-platform unit tests for the core path transformation string logic. |
| # |
| # NOTE: Because `import.rs` is a proc-macro crate that relies on the host compiler's |
| # built-in `proc_macro` package, it cannot be native target-tested directly without causing |
| # cross-compilation errors or breaking the main `rust_unit_tests_group` script generator. |
| # By splitting the string arithmetic out into `path_utils.rs` (which has no proc_macro deps), |
| # we can target-compile and run these core rules natively in the automated runner suite. |
| rtc_rust_unittest("webrtc_import_utils_unittests") { |
| crate_root = "path_utils.rs" |
| sources = [ "path_utils.rs" ] |
| } |
| |
| # Integration test validating the macro expansion behavior in Standalone mode. |
| # Confirms that absolute first-party paths are preserved correctly when `WEBRTC_GN_PREFIX = //`. |
| rtc_rust_unittest("webrtc_import_test") { |
| testonly = true |
| crate_root = "webrtc_import_test.rs" |
| sources = [ "webrtc_import_test.rs" ] |
| deps = [ |
| ":webrtc_import", |
| ":webrtc_import_test_lib", |
| ] |
| rustenv = [ "WEBRTC_GN_PREFIX=//" ] |
| } |
| |
| rtc_rust_test_suite("tests") { |
| testonly = true |
| deps = [ |
| ":webrtc_import_test", |
| ":webrtc_import_utils_unittests", |
| "test_subdir:webrtc_import_prefix_test", |
| ] |
| } |
| } |
| } |