Sandbox inputs to aidl rule in cc
Bug: 279960133 Test: go test Test: Remove hdrs prop from IDropBoxManagerService_aidl && run BUILD_BROKEN_DISABLE_BAZEL=true m libservices && Expect an error from aidl Change-Id: Ifdb260d8e2da9a5767f1e212393de4134b210616
This commit is contained in:
@@ -107,8 +107,10 @@ func (lib *AidlLibrary) ConvertWithBp2build(ctx android.TopDownMutatorContext) {
|
||||
type AidlLibraryInfo struct {
|
||||
// The direct aidl files of the module
|
||||
Srcs android.Paths
|
||||
// The include dirs to the direct aidl files and those provided from aidl_library deps
|
||||
// The include dirs to the direct aidl files and those provided from transitive aidl_library deps
|
||||
IncludeDirs android.DepSet
|
||||
// The direct hdrs and hdrs from transitive deps
|
||||
Hdrs android.DepSet
|
||||
}
|
||||
|
||||
// AidlLibraryProvider provides the srcs and the transitive include dirs
|
||||
@@ -116,37 +118,48 @@ var AidlLibraryProvider = blueprint.NewProvider(AidlLibraryInfo{})
|
||||
|
||||
func (lib *AidlLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
includeDirsDepSetBuilder := android.NewDepSetBuilder(android.PREORDER)
|
||||
hdrsDepSetBuilder := android.NewDepSetBuilder(android.PREORDER)
|
||||
|
||||
if len(lib.properties.Srcs) == 0 && len(lib.properties.Hdrs) == 0 {
|
||||
ctx.ModuleErrorf("at least srcs or hdrs prop must be non-empty")
|
||||
}
|
||||
|
||||
srcs := android.PathsForModuleSrc(ctx, lib.properties.Srcs)
|
||||
hdrs := android.PathsForModuleSrc(ctx, lib.properties.Hdrs)
|
||||
|
||||
if lib.properties.Strip_import_prefix != nil {
|
||||
srcs = android.PathsWithModuleSrcSubDir(
|
||||
ctx,
|
||||
srcs,
|
||||
android.String(lib.properties.Strip_import_prefix))
|
||||
android.String(lib.properties.Strip_import_prefix),
|
||||
)
|
||||
|
||||
hdrs = android.PathsWithModuleSrcSubDir(
|
||||
ctx,
|
||||
hdrs,
|
||||
android.String(lib.properties.Strip_import_prefix),
|
||||
)
|
||||
}
|
||||
hdrsDepSetBuilder.Direct(hdrs...)
|
||||
|
||||
includeDir := android.PathForModuleSrc(
|
||||
ctx,
|
||||
proptools.StringDefault(lib.properties.Strip_import_prefix, ""),
|
||||
)
|
||||
|
||||
includeDirsDepSetBuilder.Direct(includeDir)
|
||||
|
||||
for _, dep := range ctx.GetDirectDepsWithTag(aidlLibraryTag) {
|
||||
if ctx.OtherModuleHasProvider(dep, AidlLibraryProvider) {
|
||||
info := ctx.OtherModuleProvider(dep, AidlLibraryProvider).(AidlLibraryInfo)
|
||||
includeDirsDepSetBuilder.Transitive(&info.IncludeDirs)
|
||||
hdrsDepSetBuilder.Transitive(&info.Hdrs)
|
||||
}
|
||||
}
|
||||
|
||||
// TODO(b/279960133) Propagate direct and transitive headers/srcs when aidl action sandboxes inputs
|
||||
ctx.SetProvider(AidlLibraryProvider, AidlLibraryInfo{
|
||||
Srcs: srcs,
|
||||
IncludeDirs: *includeDirsDepSetBuilder.Build(),
|
||||
Hdrs: *hdrsDepSetBuilder.Build(),
|
||||
})
|
||||
}
|
||||
|
||||
|
@@ -37,7 +37,7 @@ func TestAidlLibrary(t *testing.T) {
|
||||
aidl_library {
|
||||
name: "foo",
|
||||
srcs: ["a/b/Foo.aidl"],
|
||||
hdrs: ["Header.aidl"],
|
||||
hdrs: ["a/Header.aidl"],
|
||||
strip_import_prefix: "a",
|
||||
deps: ["bar"],
|
||||
}
|
||||
@@ -61,6 +61,13 @@ func TestAidlLibrary(t *testing.T) {
|
||||
[]string{"package_foo/a/b/Foo.aidl"},
|
||||
actualInfo.Srcs,
|
||||
)
|
||||
|
||||
android.AssertPathsRelativeToTopEquals(
|
||||
t,
|
||||
"aidl hdrs paths",
|
||||
[]string{"package_foo/a/Header.aidl"},
|
||||
actualInfo.Hdrs.ToList(),
|
||||
)
|
||||
}
|
||||
|
||||
func TestAidlLibraryWithoutStripImportPrefix(t *testing.T) {
|
||||
@@ -72,6 +79,7 @@ func TestAidlLibraryWithoutStripImportPrefix(t *testing.T) {
|
||||
aidl_library {
|
||||
name: "bar",
|
||||
srcs: ["x/y/Bar.aidl"],
|
||||
hdrs: ["BarHeader.aidl"],
|
||||
}
|
||||
`),
|
||||
}.AddToFixture(),
|
||||
@@ -80,7 +88,6 @@ func TestAidlLibraryWithoutStripImportPrefix(t *testing.T) {
|
||||
aidl_library {
|
||||
name: "foo",
|
||||
srcs: ["a/b/Foo.aidl"],
|
||||
hdrs: ["Header.aidl"],
|
||||
deps: ["bar"],
|
||||
}
|
||||
`),
|
||||
@@ -103,6 +110,13 @@ func TestAidlLibraryWithoutStripImportPrefix(t *testing.T) {
|
||||
[]string{"package_foo/a/b/Foo.aidl"},
|
||||
actualInfo.Srcs,
|
||||
)
|
||||
|
||||
android.AssertPathsRelativeToTopEquals(
|
||||
t,
|
||||
"aidl hdrs paths",
|
||||
[]string{"package_bar/BarHeader.aidl"},
|
||||
actualInfo.Hdrs.ToList(),
|
||||
)
|
||||
}
|
||||
|
||||
func TestAidlLibraryWithNoSrcsHdrsDeps(t *testing.T) {
|
||||
|
@@ -726,6 +726,14 @@ func (c *config) HostJavaToolPath(ctx PathContext, tool string) Path {
|
||||
return path
|
||||
}
|
||||
|
||||
func (c *config) HostCcSharedLibPath(ctx PathContext, lib string) Path {
|
||||
libDir := "lib"
|
||||
if ctx.Config().BuildArch.Multilib == "lib64" {
|
||||
libDir = "lib64"
|
||||
}
|
||||
return pathForInstall(ctx, ctx.Config().BuildOS, ctx.Config().BuildArch, libDir, false, lib+".so")
|
||||
}
|
||||
|
||||
// PrebuiltOS returns the name of the host OS used in prebuilts directories.
|
||||
func (c *config) PrebuiltOS() string {
|
||||
switch runtime.GOOS {
|
||||
|
@@ -39,7 +39,6 @@ func TestMain(m *testing.M) {
|
||||
|
||||
var prepareForCcTest = android.GroupFixturePreparers(
|
||||
PrepareForTestWithCcIncludeVndk,
|
||||
aidl_library.PrepareForTestWithAidlLibrary,
|
||||
android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
|
||||
variables.DeviceVndkVersion = StringPtr("current")
|
||||
variables.ProductVndkVersion = StringPtr("current")
|
||||
@@ -4420,7 +4419,7 @@ func TestStubsLibReexportsHeaders(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestAidlLibraryWithHeader(t *testing.T) {
|
||||
func TestAidlLibraryWithHeaders(t *testing.T) {
|
||||
t.Parallel()
|
||||
ctx := android.GroupFixturePreparers(
|
||||
prepareForCcTest,
|
||||
@@ -4430,6 +4429,7 @@ func TestAidlLibraryWithHeader(t *testing.T) {
|
||||
aidl_library {
|
||||
name: "bar",
|
||||
srcs: ["x/y/Bar.aidl"],
|
||||
hdrs: ["x/HeaderBar.aidl"],
|
||||
strip_import_prefix: "x",
|
||||
}
|
||||
`)}.AddToFixture(),
|
||||
@@ -4438,6 +4438,7 @@ func TestAidlLibraryWithHeader(t *testing.T) {
|
||||
aidl_library {
|
||||
name: "foo",
|
||||
srcs: ["a/b/Foo.aidl"],
|
||||
hdrs: ["a/HeaderFoo.aidl"],
|
||||
strip_import_prefix: "a",
|
||||
deps: ["bar"],
|
||||
}
|
||||
@@ -4452,7 +4453,20 @@ func TestAidlLibraryWithHeader(t *testing.T) {
|
||||
).RunTest(t).TestContext
|
||||
|
||||
libfoo := ctx.ModuleForTests("libfoo", "android_arm64_armv8-a_static")
|
||||
manifest := android.RuleBuilderSboxProtoForTests(t, libfoo.Output("aidl.sbox.textproto"))
|
||||
|
||||
android.AssertPathsRelativeToTopEquals(
|
||||
t,
|
||||
"aidl headers",
|
||||
[]string{
|
||||
"package_bar/x/HeaderBar.aidl",
|
||||
"package_foo/a/HeaderFoo.aidl",
|
||||
"package_foo/a/b/Foo.aidl",
|
||||
"out/soong/.intermediates/package_foo/libfoo/android_arm64_armv8-a_static/gen/aidl_library.sbox.textproto",
|
||||
},
|
||||
libfoo.Rule("aidl_library").Implicits,
|
||||
)
|
||||
|
||||
manifest := android.RuleBuilderSboxProtoForTests(t, libfoo.Output("aidl_library.sbox.textproto"))
|
||||
aidlCommand := manifest.Commands[0].GetCommand()
|
||||
|
||||
expectedAidlFlags := "-Ipackage_foo/a -Ipackage_bar/x"
|
||||
@@ -4462,14 +4476,14 @@ func TestAidlLibraryWithHeader(t *testing.T) {
|
||||
|
||||
outputs := strings.Join(libfoo.AllOutputs(), " ")
|
||||
|
||||
android.AssertStringDoesContain(t, "aidl-generated header", outputs, "gen/aidl/b/BpFoo.h")
|
||||
android.AssertStringDoesContain(t, "aidl-generated header", outputs, "gen/aidl/b/BnFoo.h")
|
||||
android.AssertStringDoesContain(t, "aidl-generated header", outputs, "gen/aidl/b/Foo.h")
|
||||
android.AssertStringDoesContain(t, "aidl-generated header", outputs, "gen/aidl_library/b/BpFoo.h")
|
||||
android.AssertStringDoesContain(t, "aidl-generated header", outputs, "gen/aidl_library/b/BnFoo.h")
|
||||
android.AssertStringDoesContain(t, "aidl-generated header", outputs, "gen/aidl_library/b/Foo.h")
|
||||
android.AssertStringDoesContain(t, "aidl-generated cpp", outputs, "b/Foo.cpp")
|
||||
// Confirm that the aidl header doesn't get compiled to cpp and h files
|
||||
android.AssertStringDoesNotContain(t, "aidl-generated header", outputs, "gen/aidl/y/BpBar.h")
|
||||
android.AssertStringDoesNotContain(t, "aidl-generated header", outputs, "gen/aidl/y/BnBar.h")
|
||||
android.AssertStringDoesNotContain(t, "aidl-generated header", outputs, "gen/aidl/y/Bar.h")
|
||||
android.AssertStringDoesNotContain(t, "aidl-generated header", outputs, "gen/aidl_library/y/BpBar.h")
|
||||
android.AssertStringDoesNotContain(t, "aidl-generated header", outputs, "gen/aidl_library/y/BnBar.h")
|
||||
android.AssertStringDoesNotContain(t, "aidl-generated header", outputs, "gen/aidl_library/y/Bar.h")
|
||||
android.AssertStringDoesNotContain(t, "aidl-generated cpp", outputs, "y/Bar.cpp")
|
||||
}
|
||||
|
||||
@@ -4548,6 +4562,55 @@ func TestAidlFlagsWithMinSdkVersion(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestInvalidAidlProp(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
testCases := []struct {
|
||||
description string
|
||||
bp string
|
||||
}{
|
||||
{
|
||||
description: "Invalid use of aidl.libs and aidl.include_dirs",
|
||||
bp: `
|
||||
cc_library {
|
||||
name: "foo",
|
||||
aidl: {
|
||||
libs: ["foo_aidl"],
|
||||
include_dirs: ["bar/include"],
|
||||
}
|
||||
}
|
||||
`,
|
||||
},
|
||||
{
|
||||
description: "Invalid use of aidl.libs and aidl.local_include_dirs",
|
||||
bp: `
|
||||
cc_library {
|
||||
name: "foo",
|
||||
aidl: {
|
||||
libs: ["foo_aidl"],
|
||||
local_include_dirs: ["include"],
|
||||
}
|
||||
}
|
||||
`,
|
||||
},
|
||||
}
|
||||
|
||||
for _, testCase := range testCases {
|
||||
t.Run(testCase.description, func(t *testing.T) {
|
||||
bp := `
|
||||
aidl_library {
|
||||
name: "foo_aidl",
|
||||
srcs: ["Foo.aidl"],
|
||||
} ` + testCase.bp
|
||||
android.GroupFixturePreparers(
|
||||
prepareForCcTest,
|
||||
aidl_library.PrepareForTestWithAidlLibrary.
|
||||
ExtendWithErrorHandler(android.FixtureExpectsOneErrorPattern("For aidl headers, please only use aidl.libs prop")),
|
||||
).RunTestWithBp(t, bp)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestMinSdkVersionInClangTriple(t *testing.T) {
|
||||
t.Parallel()
|
||||
ctx := testCc(t, `
|
||||
@@ -4789,23 +4852,24 @@ func TestIncludeDirsExporting(t *testing.T) {
|
||||
checkIncludeDirs(t, ctx, foo,
|
||||
expectedIncludeDirs(`
|
||||
.intermediates/libfoo/android_arm64_armv8-a_shared/gen/aidl
|
||||
.intermediates/libfoo/android_arm64_armv8-a_shared/gen/aidl_library
|
||||
`),
|
||||
expectedSystemIncludeDirs(``),
|
||||
expectedGeneratedHeaders(`
|
||||
.intermediates/libfoo/android_arm64_armv8-a_shared/gen/aidl/b.h
|
||||
.intermediates/libfoo/android_arm64_armv8-a_shared/gen/aidl/Bnb.h
|
||||
.intermediates/libfoo/android_arm64_armv8-a_shared/gen/aidl/Bpb.h
|
||||
.intermediates/libfoo/android_arm64_armv8-a_shared/gen/aidl/y/Bar.h
|
||||
.intermediates/libfoo/android_arm64_armv8-a_shared/gen/aidl/y/BnBar.h
|
||||
.intermediates/libfoo/android_arm64_armv8-a_shared/gen/aidl/y/BpBar.h
|
||||
.intermediates/libfoo/android_arm64_armv8-a_shared/gen/aidl_library/y/Bar.h
|
||||
.intermediates/libfoo/android_arm64_armv8-a_shared/gen/aidl_library/y/BnBar.h
|
||||
.intermediates/libfoo/android_arm64_armv8-a_shared/gen/aidl_library/y/BpBar.h
|
||||
`),
|
||||
expectedOrderOnlyDeps(`
|
||||
.intermediates/libfoo/android_arm64_armv8-a_shared/gen/aidl/b.h
|
||||
.intermediates/libfoo/android_arm64_armv8-a_shared/gen/aidl/Bnb.h
|
||||
.intermediates/libfoo/android_arm64_armv8-a_shared/gen/aidl/Bpb.h
|
||||
.intermediates/libfoo/android_arm64_armv8-a_shared/gen/aidl/y/Bar.h
|
||||
.intermediates/libfoo/android_arm64_armv8-a_shared/gen/aidl/y/BnBar.h
|
||||
.intermediates/libfoo/android_arm64_armv8-a_shared/gen/aidl/y/BpBar.h
|
||||
.intermediates/libfoo/android_arm64_armv8-a_shared/gen/aidl_library/y/Bar.h
|
||||
.intermediates/libfoo/android_arm64_armv8-a_shared/gen/aidl_library/y/BnBar.h
|
||||
.intermediates/libfoo/android_arm64_armv8-a_shared/gen/aidl_library/y/BpBar.h
|
||||
`),
|
||||
)
|
||||
})
|
||||
|
@@ -565,6 +565,11 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags, deps
|
||||
"-I"+android.PathForModuleGen(ctx, "yacc", ctx.ModuleDir()).String())
|
||||
}
|
||||
|
||||
if len(compiler.Properties.Aidl.Libs) > 0 &&
|
||||
(len(compiler.Properties.Aidl.Include_dirs) > 0 || len(compiler.Properties.Aidl.Local_include_dirs) > 0) {
|
||||
ctx.ModuleErrorf("aidl.libs and (aidl.include_dirs or aidl.local_include_dirs) can't be set at the same time. For aidl headers, please only use aidl.libs prop")
|
||||
}
|
||||
|
||||
if compiler.hasAidl(deps) {
|
||||
flags.aidlFlags = append(flags.aidlFlags, compiler.Properties.Aidl.Flags...)
|
||||
if len(compiler.Properties.Aidl.Local_include_dirs) > 0 {
|
||||
@@ -594,8 +599,14 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags, deps
|
||||
}
|
||||
flags.aidlFlags = append(flags.aidlFlags, "--min_sdk_version="+aidlMinSdkVersion)
|
||||
|
||||
flags.Local.CommonFlags = append(flags.Local.CommonFlags,
|
||||
"-I"+android.PathForModuleGen(ctx, "aidl").String())
|
||||
if compiler.hasSrcExt(".aidl") {
|
||||
flags.Local.CommonFlags = append(flags.Local.CommonFlags,
|
||||
"-I"+android.PathForModuleGen(ctx, "aidl").String())
|
||||
}
|
||||
if len(deps.AidlLibraryInfos) > 0 {
|
||||
flags.Local.CommonFlags = append(flags.Local.CommonFlags,
|
||||
"-I"+android.PathForModuleGen(ctx, "aidl_library").String())
|
||||
}
|
||||
}
|
||||
|
||||
if compiler.hasSrcExt(".rscript") || compiler.hasSrcExt(".fs") {
|
||||
|
57
cc/gen.go
57
cc/gen.go
@@ -107,7 +107,14 @@ func genYacc(ctx android.ModuleContext, rule *android.RuleBuilder, yaccFile andr
|
||||
return ret
|
||||
}
|
||||
|
||||
func genAidl(ctx android.ModuleContext, rule *android.RuleBuilder, aidlFile android.Path, aidlFlags string) (cppFile android.OutputPath, headerFiles android.Paths) {
|
||||
func genAidl(
|
||||
ctx android.ModuleContext,
|
||||
rule *android.RuleBuilder,
|
||||
outDirBase string,
|
||||
aidlFile android.Path,
|
||||
aidlHdrs android.Paths,
|
||||
aidlFlags string,
|
||||
) (cppFile android.OutputPath, headerFiles android.Paths) {
|
||||
aidlPackage := strings.TrimSuffix(aidlFile.Rel(), aidlFile.Base())
|
||||
baseName := strings.TrimSuffix(aidlFile.Base(), aidlFile.Ext())
|
||||
shortName := baseName
|
||||
@@ -119,7 +126,7 @@ func genAidl(ctx android.ModuleContext, rule *android.RuleBuilder, aidlFile andr
|
||||
shortName = strings.TrimPrefix(baseName, "I")
|
||||
}
|
||||
|
||||
outDir := android.PathForModuleGen(ctx, "aidl")
|
||||
outDir := android.PathForModuleGen(ctx, outDirBase)
|
||||
cppFile = outDir.Join(ctx, aidlPackage, baseName+".cpp")
|
||||
depFile := outDir.Join(ctx, aidlPackage, baseName+".cpp.d")
|
||||
headerI := outDir.Join(ctx, aidlPackage, baseName+".h")
|
||||
@@ -128,6 +135,8 @@ func genAidl(ctx android.ModuleContext, rule *android.RuleBuilder, aidlFile andr
|
||||
|
||||
cmd := rule.Command()
|
||||
cmd.BuiltTool("aidl-cpp").
|
||||
// libc++ is default stl for aidl-cpp (a cc_binary_host module)
|
||||
ImplicitTool(ctx.Config().HostCcSharedLibPath(ctx, "libc++")).
|
||||
FlagWithDepFile("-d", depFile).
|
||||
Flag("--ninja").
|
||||
Flag(aidlFlags).
|
||||
@@ -140,6 +149,10 @@ func genAidl(ctx android.ModuleContext, rule *android.RuleBuilder, aidlFile andr
|
||||
headerBp,
|
||||
})
|
||||
|
||||
if aidlHdrs != nil {
|
||||
cmd.Implicits(aidlHdrs)
|
||||
}
|
||||
|
||||
return cppFile, android.Paths{
|
||||
headerI,
|
||||
headerBn,
|
||||
@@ -283,14 +296,19 @@ func genSources(
|
||||
ctx android.ModuleContext,
|
||||
aidlLibraryInfos []aidl_library.AidlLibraryInfo,
|
||||
srcFiles android.Paths,
|
||||
buildFlags builderFlags) (android.Paths, android.Paths, generatedSourceInfo) {
|
||||
buildFlags builderFlags,
|
||||
) (android.Paths, android.Paths, generatedSourceInfo) {
|
||||
|
||||
var info generatedSourceInfo
|
||||
|
||||
var deps android.Paths
|
||||
var rsFiles android.Paths
|
||||
|
||||
// aidlRule supports compiling aidl files from srcs prop while aidlLibraryRule supports
|
||||
// compiling aidl files from aidl_library modules specified in aidl.libs prop.
|
||||
// The rules are separated so that they don't wipe out the other's outputDir
|
||||
var aidlRule *android.RuleBuilder
|
||||
var aidlLibraryRule *android.RuleBuilder
|
||||
|
||||
var yaccRule_ *android.RuleBuilder
|
||||
yaccRule := func() *android.RuleBuilder {
|
||||
@@ -331,7 +349,14 @@ func genSources(
|
||||
android.PathForModuleGen(ctx, "aidl.sbox.textproto"))
|
||||
}
|
||||
baseDir := strings.TrimSuffix(srcFile.String(), srcFile.Rel())
|
||||
cppFile, aidlHeaders := genAidl(ctx, aidlRule, srcFile, buildFlags.aidlFlags+" -I"+baseDir)
|
||||
cppFile, aidlHeaders := genAidl(
|
||||
ctx,
|
||||
aidlRule,
|
||||
"aidl",
|
||||
srcFile,
|
||||
nil,
|
||||
buildFlags.aidlFlags+" -I"+baseDir,
|
||||
)
|
||||
srcFiles[i] = cppFile
|
||||
|
||||
info.aidlHeaders = append(info.aidlHeaders, aidlHeaders...)
|
||||
@@ -354,13 +379,21 @@ func genSources(
|
||||
}
|
||||
|
||||
for _, aidlLibraryInfo := range aidlLibraryInfos {
|
||||
if aidlLibraryRule == nil {
|
||||
aidlLibraryRule = android.NewRuleBuilder(pctx, ctx).Sbox(
|
||||
android.PathForModuleGen(ctx, "aidl_library"),
|
||||
android.PathForModuleGen(ctx, "aidl_library.sbox.textproto"),
|
||||
).SandboxInputs()
|
||||
}
|
||||
for _, aidlSrc := range aidlLibraryInfo.Srcs {
|
||||
if aidlRule == nil {
|
||||
// TODO(b/279960133): Sandbox inputs to ensure aidl headers are explicitly specified
|
||||
aidlRule = android.NewRuleBuilder(pctx, ctx).Sbox(android.PathForModuleGen(ctx, "aidl"),
|
||||
android.PathForModuleGen(ctx, "aidl.sbox.textproto"))
|
||||
}
|
||||
cppFile, aidlHeaders := genAidl(ctx, aidlRule, aidlSrc, buildFlags.aidlFlags)
|
||||
cppFile, aidlHeaders := genAidl(
|
||||
ctx,
|
||||
aidlLibraryRule,
|
||||
"aidl_library",
|
||||
aidlSrc,
|
||||
aidlLibraryInfo.Hdrs.ToList(),
|
||||
buildFlags.aidlFlags,
|
||||
)
|
||||
|
||||
srcFiles = append(srcFiles, cppFile)
|
||||
info.aidlHeaders = append(info.aidlHeaders, aidlHeaders...)
|
||||
@@ -375,6 +408,10 @@ func genSources(
|
||||
aidlRule.Build("aidl", "gen aidl")
|
||||
}
|
||||
|
||||
if aidlLibraryRule != nil {
|
||||
aidlLibraryRule.Build("aidl_library", "gen aidl_library")
|
||||
}
|
||||
|
||||
if yaccRule_ != nil {
|
||||
yaccRule_.Build("yacc", "gen yacc")
|
||||
}
|
||||
|
@@ -2118,8 +2118,14 @@ func (library *libraryDecorator) link(ctx ModuleContext,
|
||||
// Optionally export aidl headers.
|
||||
if Bool(library.Properties.Aidl.Export_aidl_headers) {
|
||||
if library.baseCompiler.hasAidl(deps) {
|
||||
dir := android.PathForModuleGen(ctx, "aidl")
|
||||
library.reexportDirs(dir)
|
||||
if library.baseCompiler.hasSrcExt(".aidl") {
|
||||
dir := android.PathForModuleGen(ctx, "aidl")
|
||||
library.reexportDirs(dir)
|
||||
}
|
||||
if len(deps.AidlLibraryInfos) > 0 {
|
||||
dir := android.PathForModuleGen(ctx, "aidl_library")
|
||||
library.reexportDirs(dir)
|
||||
}
|
||||
|
||||
library.reexportDeps(library.baseCompiler.aidlOrderOnlyDeps...)
|
||||
library.addExportedGeneratedHeaders(library.baseCompiler.aidlHeaders...)
|
||||
|
Reference in New Issue
Block a user