rust: Add export_include_dirs property to rust_ffi
The cc property include_dirs is neverallowed in certain paths since it has been deprecated. The property in rust_ffi modules with the same name functionally works the same way as the CC property export_include_dirs. To reduce confusion, and avoid triggering the neverallow rule, deprecate include_dirs and create an export_include_dirs property which does the same thing. This brings rust module properties into better alignment with cc module property as well, reducing confusion. Bug: 330736943 Test: New Soong test Change-Id: Ib2020a22e6747ac690c46dbff84e38744f93ed15
This commit is contained in:
parent
181a27986c
commit
f033ca61a2
3 changed files with 27 additions and 3 deletions
|
@ -54,9 +54,13 @@ type LibraryCompilerProperties struct {
|
||||||
Shared VariantLibraryProperties `android:"arch_variant"`
|
Shared VariantLibraryProperties `android:"arch_variant"`
|
||||||
Static VariantLibraryProperties `android:"arch_variant"`
|
Static VariantLibraryProperties `android:"arch_variant"`
|
||||||
|
|
||||||
// path to include directories to pass to cc_* modules, only relevant for static/shared variants.
|
// TODO: Remove this when all instances of Include_dirs have been removed from rust_ffi modules.
|
||||||
|
// path to include directories to pass to cc_* modules, only relevant for static/shared variants (deprecated, use export_include_dirs instead).
|
||||||
Include_dirs []string `android:"path,arch_variant"`
|
Include_dirs []string `android:"path,arch_variant"`
|
||||||
|
|
||||||
|
// path to include directories to export to cc_* modules, only relevant for static/shared variants.
|
||||||
|
Export_include_dirs []string `android:"path,arch_variant"`
|
||||||
|
|
||||||
// Whether this library is part of the Rust toolchain sysroot.
|
// Whether this library is part of the Rust toolchain sysroot.
|
||||||
Sysroot *bool
|
Sysroot *bool
|
||||||
}
|
}
|
||||||
|
@ -465,6 +469,7 @@ func (library *libraryDecorator) compilerFlags(ctx ModuleContext, flags Flags) F
|
||||||
flags.RustFlags = append(flags.RustFlags, "-C metadata="+ctx.ModuleName())
|
flags.RustFlags = append(flags.RustFlags, "-C metadata="+ctx.ModuleName())
|
||||||
if library.shared() || library.static() {
|
if library.shared() || library.static() {
|
||||||
library.includeDirs = append(library.includeDirs, android.PathsForModuleSrc(ctx, library.Properties.Include_dirs)...)
|
library.includeDirs = append(library.includeDirs, android.PathsForModuleSrc(ctx, library.Properties.Include_dirs)...)
|
||||||
|
library.includeDirs = append(library.includeDirs, android.PathsForModuleSrc(ctx, library.Properties.Export_include_dirs)...)
|
||||||
}
|
}
|
||||||
if library.shared() {
|
if library.shared() {
|
||||||
if ctx.Darwin() {
|
if ctx.Darwin() {
|
||||||
|
|
|
@ -403,3 +403,22 @@ func TestLibstdLinkage(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestRustFFIExportedIncludes(t *testing.T) {
|
||||||
|
ctx := testRust(t, `
|
||||||
|
rust_ffi {
|
||||||
|
name: "libbar",
|
||||||
|
srcs: ["foo.rs"],
|
||||||
|
crate_name: "bar",
|
||||||
|
export_include_dirs: ["rust_includes"],
|
||||||
|
host_supported: true,
|
||||||
|
}
|
||||||
|
cc_library_static {
|
||||||
|
name: "libfoo",
|
||||||
|
srcs: ["foo.cpp"],
|
||||||
|
shared_libs: ["libbar"],
|
||||||
|
host_supported: true,
|
||||||
|
}`)
|
||||||
|
libfooStatic := ctx.ModuleForTests("libfoo", "linux_glibc_x86_64_static").Rule("cc")
|
||||||
|
android.AssertStringDoesContain(t, "cFlags for lib module", libfooStatic.Args["cFlags"], " -Irust_includes ")
|
||||||
|
}
|
||||||
|
|
|
@ -32,7 +32,7 @@ func TestVendorSnapshotCapture(t *testing.T) {
|
||||||
crate_name: "ffivendor_available",
|
crate_name: "ffivendor_available",
|
||||||
srcs: ["lib.rs"],
|
srcs: ["lib.rs"],
|
||||||
vendor_available: true,
|
vendor_available: true,
|
||||||
include_dirs: ["rust_headers/"],
|
export_include_dirs: ["rust_headers/"],
|
||||||
}
|
}
|
||||||
|
|
||||||
rust_ffi {
|
rust_ffi {
|
||||||
|
@ -40,7 +40,7 @@ func TestVendorSnapshotCapture(t *testing.T) {
|
||||||
crate_name: "ffivendor",
|
crate_name: "ffivendor",
|
||||||
srcs: ["lib.rs"],
|
srcs: ["lib.rs"],
|
||||||
vendor: true,
|
vendor: true,
|
||||||
include_dirs: ["rust_headers/"],
|
export_include_dirs: ["rust_headers/"],
|
||||||
}
|
}
|
||||||
|
|
||||||
rust_library {
|
rust_library {
|
||||||
|
|
Loading…
Reference in a new issue