Merge "Fix generated headers of snapshot" am: 8fc9eeacc8
am: 4b3e3b6720
Change-Id: Ib0f3a5ac5f7a530dd9401f5223db996d9bb87619
This commit is contained in:
34
cc/cc.go
34
cc/cc.go
@@ -94,6 +94,7 @@ type Deps struct {
|
|||||||
|
|
||||||
GeneratedSources []string
|
GeneratedSources []string
|
||||||
GeneratedHeaders []string
|
GeneratedHeaders []string
|
||||||
|
GeneratedDeps []string
|
||||||
|
|
||||||
ReexportGeneratedHeaders []string
|
ReexportGeneratedHeaders []string
|
||||||
|
|
||||||
@@ -120,14 +121,16 @@ type PathDeps struct {
|
|||||||
// Paths to generated source files
|
// Paths to generated source files
|
||||||
GeneratedSources android.Paths
|
GeneratedSources android.Paths
|
||||||
GeneratedHeaders android.Paths
|
GeneratedHeaders android.Paths
|
||||||
|
GeneratedDeps android.Paths
|
||||||
|
|
||||||
Flags []string
|
Flags []string
|
||||||
IncludeDirs android.Paths
|
IncludeDirs android.Paths
|
||||||
SystemIncludeDirs android.Paths
|
SystemIncludeDirs android.Paths
|
||||||
ReexportedDirs android.Paths
|
ReexportedDirs android.Paths
|
||||||
ReexportedSystemDirs android.Paths
|
ReexportedSystemDirs android.Paths
|
||||||
ReexportedFlags []string
|
ReexportedFlags []string
|
||||||
ReexportedDeps android.Paths
|
ReexportedGeneratedHeaders android.Paths
|
||||||
|
ReexportedDeps android.Paths
|
||||||
|
|
||||||
// Paths to crt*.o files
|
// Paths to crt*.o files
|
||||||
CrtBegin, CrtEnd android.OptionalPath
|
CrtBegin, CrtEnd android.OptionalPath
|
||||||
@@ -894,6 +897,13 @@ func (c *Module) ExportedDeps() android.Paths {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *Module) ExportedGeneratedHeaders() android.Paths {
|
||||||
|
if flagsProducer, ok := c.linker.(exportedFlagsProducer); ok {
|
||||||
|
return flagsProducer.exportedGeneratedHeaders()
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func isBionic(name string) bool {
|
func isBionic(name string) bool {
|
||||||
switch name {
|
switch name {
|
||||||
case "libc", "libm", "libdl", "libdl_android", "linker":
|
case "libc", "libm", "libdl", "libdl_android", "linker":
|
||||||
@@ -1905,6 +1915,7 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps {
|
|||||||
depPaths.ReexportedSystemDirs = append(depPaths.ReexportedSystemDirs, exporter.exportedSystemDirs()...)
|
depPaths.ReexportedSystemDirs = append(depPaths.ReexportedSystemDirs, exporter.exportedSystemDirs()...)
|
||||||
depPaths.ReexportedFlags = append(depPaths.ReexportedFlags, exporter.exportedFlags()...)
|
depPaths.ReexportedFlags = append(depPaths.ReexportedFlags, exporter.exportedFlags()...)
|
||||||
depPaths.ReexportedDeps = append(depPaths.ReexportedDeps, exporter.exportedDeps()...)
|
depPaths.ReexportedDeps = append(depPaths.ReexportedDeps, exporter.exportedDeps()...)
|
||||||
|
depPaths.ReexportedGeneratedHeaders = append(depPaths.ReexportedGeneratedHeaders, exporter.exportedGeneratedHeaders()...)
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.VisitDirectDeps(func(dep android.Module) {
|
ctx.VisitDirectDeps(func(dep android.Module) {
|
||||||
@@ -1928,11 +1939,15 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps {
|
|||||||
case genHeaderDepTag, genHeaderExportDepTag:
|
case genHeaderDepTag, genHeaderExportDepTag:
|
||||||
if genRule, ok := dep.(genrule.SourceFileGenerator); ok {
|
if genRule, ok := dep.(genrule.SourceFileGenerator); ok {
|
||||||
depPaths.GeneratedHeaders = append(depPaths.GeneratedHeaders,
|
depPaths.GeneratedHeaders = append(depPaths.GeneratedHeaders,
|
||||||
|
genRule.GeneratedSourceFiles()...)
|
||||||
|
depPaths.GeneratedDeps = append(depPaths.GeneratedDeps,
|
||||||
genRule.GeneratedDeps()...)
|
genRule.GeneratedDeps()...)
|
||||||
dirs := genRule.GeneratedHeaderDirs()
|
dirs := genRule.GeneratedHeaderDirs()
|
||||||
depPaths.IncludeDirs = append(depPaths.IncludeDirs, dirs...)
|
depPaths.IncludeDirs = append(depPaths.IncludeDirs, dirs...)
|
||||||
if depTag == genHeaderExportDepTag {
|
if depTag == genHeaderExportDepTag {
|
||||||
depPaths.ReexportedDirs = append(depPaths.ReexportedDirs, dirs...)
|
depPaths.ReexportedDirs = append(depPaths.ReexportedDirs, dirs...)
|
||||||
|
depPaths.ReexportedGeneratedHeaders = append(depPaths.ReexportedGeneratedHeaders,
|
||||||
|
genRule.GeneratedSourceFiles()...)
|
||||||
depPaths.ReexportedDeps = append(depPaths.ReexportedDeps, genRule.GeneratedDeps()...)
|
depPaths.ReexportedDeps = append(depPaths.ReexportedDeps, genRule.GeneratedDeps()...)
|
||||||
// Add these re-exported flags to help header-abi-dumper to infer the abi exported by a library.
|
// Add these re-exported flags to help header-abi-dumper to infer the abi exported by a library.
|
||||||
c.sabi.Properties.ReexportedIncludes = append(c.sabi.Properties.ReexportedIncludes, dirs.Strings()...)
|
c.sabi.Properties.ReexportedIncludes = append(c.sabi.Properties.ReexportedIncludes, dirs.Strings()...)
|
||||||
@@ -2045,7 +2060,8 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps {
|
|||||||
if _, ok := ccDep.(*Module); ok {
|
if _, ok := ccDep.(*Module); ok {
|
||||||
if i, ok := ccDep.(*Module).linker.(exportedFlagsProducer); ok {
|
if i, ok := ccDep.(*Module).linker.(exportedFlagsProducer); ok {
|
||||||
depPaths.SystemIncludeDirs = append(depPaths.SystemIncludeDirs, i.exportedSystemDirs()...)
|
depPaths.SystemIncludeDirs = append(depPaths.SystemIncludeDirs, i.exportedSystemDirs()...)
|
||||||
depPaths.GeneratedHeaders = append(depPaths.GeneratedHeaders, i.exportedDeps()...)
|
depPaths.GeneratedHeaders = append(depPaths.GeneratedHeaders, i.exportedGeneratedHeaders()...)
|
||||||
|
depPaths.GeneratedDeps = append(depPaths.GeneratedDeps, i.exportedDeps()...)
|
||||||
depPaths.Flags = append(depPaths.Flags, i.exportedFlags()...)
|
depPaths.Flags = append(depPaths.Flags, i.exportedFlags()...)
|
||||||
|
|
||||||
if t.ReexportFlags {
|
if t.ReexportFlags {
|
||||||
@@ -2243,10 +2259,12 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps {
|
|||||||
depPaths.IncludeDirs = android.FirstUniquePaths(depPaths.IncludeDirs)
|
depPaths.IncludeDirs = android.FirstUniquePaths(depPaths.IncludeDirs)
|
||||||
depPaths.SystemIncludeDirs = android.FirstUniquePaths(depPaths.SystemIncludeDirs)
|
depPaths.SystemIncludeDirs = android.FirstUniquePaths(depPaths.SystemIncludeDirs)
|
||||||
depPaths.GeneratedHeaders = android.FirstUniquePaths(depPaths.GeneratedHeaders)
|
depPaths.GeneratedHeaders = android.FirstUniquePaths(depPaths.GeneratedHeaders)
|
||||||
|
depPaths.GeneratedDeps = android.FirstUniquePaths(depPaths.GeneratedDeps)
|
||||||
depPaths.ReexportedDirs = android.FirstUniquePaths(depPaths.ReexportedDirs)
|
depPaths.ReexportedDirs = android.FirstUniquePaths(depPaths.ReexportedDirs)
|
||||||
depPaths.ReexportedSystemDirs = android.FirstUniquePaths(depPaths.ReexportedSystemDirs)
|
depPaths.ReexportedSystemDirs = android.FirstUniquePaths(depPaths.ReexportedSystemDirs)
|
||||||
depPaths.ReexportedFlags = android.FirstUniqueStrings(depPaths.ReexportedFlags)
|
depPaths.ReexportedFlags = android.FirstUniqueStrings(depPaths.ReexportedFlags)
|
||||||
depPaths.ReexportedDeps = android.FirstUniquePaths(depPaths.ReexportedDeps)
|
depPaths.ReexportedDeps = android.FirstUniquePaths(depPaths.ReexportedDeps)
|
||||||
|
depPaths.ReexportedGeneratedHeaders = android.FirstUniquePaths(depPaths.ReexportedGeneratedHeaders)
|
||||||
|
|
||||||
if c.sabi != nil {
|
if c.sabi != nil {
|
||||||
c.sabi.Properties.ReexportedIncludes = android.FirstUniqueStrings(c.sabi.Properties.ReexportedIncludes)
|
c.sabi.Properties.ReexportedIncludes = android.FirstUniqueStrings(c.sabi.Properties.ReexportedIncludes)
|
||||||
|
@@ -560,7 +560,7 @@ func ndkPathDeps(ctx ModuleContext) android.Paths {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (compiler *baseCompiler) compile(ctx ModuleContext, flags Flags, deps PathDeps) Objects {
|
func (compiler *baseCompiler) compile(ctx ModuleContext, flags Flags, deps PathDeps) Objects {
|
||||||
pathDeps := deps.GeneratedHeaders
|
pathDeps := deps.GeneratedDeps
|
||||||
pathDeps = append(pathDeps, ndkPathDeps(ctx)...)
|
pathDeps = append(pathDeps, ndkPathDeps(ctx)...)
|
||||||
|
|
||||||
buildFlags := flagsToBuilderFlags(flags)
|
buildFlags := flagsToBuilderFlags(flags)
|
||||||
|
@@ -238,6 +238,7 @@ type flagExporter struct {
|
|||||||
systemDirs android.Paths
|
systemDirs android.Paths
|
||||||
flags []string
|
flags []string
|
||||||
deps android.Paths
|
deps android.Paths
|
||||||
|
headers android.Paths
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *flagExporter) exportedIncludes(ctx ModuleContext) android.Paths {
|
func (f *flagExporter) exportedIncludes(ctx ModuleContext) android.Paths {
|
||||||
@@ -281,6 +282,12 @@ func (f *flagExporter) reexportDeps(deps ...android.Path) {
|
|||||||
f.deps = append(f.deps, deps...)
|
f.deps = append(f.deps, deps...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// addExportedGeneratedHeaders does nothing but collects generated header files.
|
||||||
|
// This can be differ to exportedDeps which may contain phony files to minimize ninja.
|
||||||
|
func (f *flagExporter) addExportedGeneratedHeaders(headers ...android.Path) {
|
||||||
|
f.headers = append(f.headers, headers...)
|
||||||
|
}
|
||||||
|
|
||||||
func (f *flagExporter) exportedDirs() android.Paths {
|
func (f *flagExporter) exportedDirs() android.Paths {
|
||||||
return f.dirs
|
return f.dirs
|
||||||
}
|
}
|
||||||
@@ -297,11 +304,16 @@ func (f *flagExporter) exportedDeps() android.Paths {
|
|||||||
return f.deps
|
return f.deps
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *flagExporter) exportedGeneratedHeaders() android.Paths {
|
||||||
|
return f.headers
|
||||||
|
}
|
||||||
|
|
||||||
type exportedFlagsProducer interface {
|
type exportedFlagsProducer interface {
|
||||||
exportedDirs() android.Paths
|
exportedDirs() android.Paths
|
||||||
exportedSystemDirs() android.Paths
|
exportedSystemDirs() android.Paths
|
||||||
exportedFlags() []string
|
exportedFlags() []string
|
||||||
exportedDeps() android.Paths
|
exportedDeps() android.Paths
|
||||||
|
exportedGeneratedHeaders() android.Paths
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ exportedFlagsProducer = (*flagExporter)(nil)
|
var _ exportedFlagsProducer = (*flagExporter)(nil)
|
||||||
@@ -967,12 +979,16 @@ func (library *libraryDecorator) link(ctx ModuleContext,
|
|||||||
library.reexportSystemDirs(deps.ReexportedSystemDirs...)
|
library.reexportSystemDirs(deps.ReexportedSystemDirs...)
|
||||||
library.reexportFlags(deps.ReexportedFlags...)
|
library.reexportFlags(deps.ReexportedFlags...)
|
||||||
library.reexportDeps(deps.ReexportedDeps...)
|
library.reexportDeps(deps.ReexportedDeps...)
|
||||||
|
library.addExportedGeneratedHeaders(deps.ReexportedGeneratedHeaders...)
|
||||||
|
|
||||||
if Bool(library.Properties.Aidl.Export_aidl_headers) {
|
if Bool(library.Properties.Aidl.Export_aidl_headers) {
|
||||||
if library.baseCompiler.hasSrcExt(".aidl") {
|
if library.baseCompiler.hasSrcExt(".aidl") {
|
||||||
dir := android.PathForModuleGen(ctx, "aidl")
|
dir := android.PathForModuleGen(ctx, "aidl")
|
||||||
library.reexportDirs(dir)
|
library.reexportDirs(dir)
|
||||||
library.reexportDeps(library.baseCompiler.pathDeps...) // TODO: restrict to aidl deps
|
|
||||||
|
// TODO: restrict to aidl deps
|
||||||
|
library.reexportDeps(library.baseCompiler.pathDeps...)
|
||||||
|
library.addExportedGeneratedHeaders(library.baseCompiler.pathDeps...)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -984,7 +1000,10 @@ func (library *libraryDecorator) link(ctx ModuleContext,
|
|||||||
}
|
}
|
||||||
includes = append(includes, flags.proto.Dir)
|
includes = append(includes, flags.proto.Dir)
|
||||||
library.reexportDirs(includes...)
|
library.reexportDirs(includes...)
|
||||||
library.reexportDeps(library.baseCompiler.pathDeps...) // TODO: restrict to proto deps
|
|
||||||
|
// TODO: restrict to proto deps
|
||||||
|
library.reexportDeps(library.baseCompiler.pathDeps...)
|
||||||
|
library.addExportedGeneratedHeaders(library.baseCompiler.pathDeps...)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1002,6 +1021,7 @@ func (library *libraryDecorator) link(ctx ModuleContext,
|
|||||||
|
|
||||||
library.reexportDirs(dir)
|
library.reexportDirs(dir)
|
||||||
library.reexportDeps(library.baseCompiler.pathDeps...)
|
library.reexportDeps(library.baseCompiler.pathDeps...)
|
||||||
|
library.addExportedGeneratedHeaders(library.baseCompiler.pathDeps...)
|
||||||
}
|
}
|
||||||
|
|
||||||
if library.buildStubs() {
|
if library.buildStubs() {
|
||||||
@@ -1448,7 +1468,7 @@ func buildSharedNativeLibSnapshot(sdkModuleContext android.ModuleContext, info *
|
|||||||
}
|
}
|
||||||
for _, dir := range includeDirs {
|
for _, dir := range includeDirs {
|
||||||
if _, gen := dir.(android.WritablePath); gen {
|
if _, gen := dir.(android.WritablePath); gen {
|
||||||
// generated headers are copied via exportedDeps. See below.
|
// generated headers are copied via exportedGeneratedHeaders. See below.
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
targetDir := nativeIncludeDir
|
targetDir := nativeIncludeDir
|
||||||
@@ -1465,7 +1485,7 @@ func buildSharedNativeLibSnapshot(sdkModuleContext android.ModuleContext, info *
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
genHeaders := lib.exportedDeps
|
genHeaders := lib.exportedGeneratedHeaders
|
||||||
for _, file := range genHeaders {
|
for _, file := range genHeaders {
|
||||||
targetDir := nativeGeneratedIncludeDir
|
targetDir := nativeGeneratedIncludeDir
|
||||||
if info.hasArchSpecificFlags {
|
if info.hasArchSpecificFlags {
|
||||||
@@ -1574,7 +1594,7 @@ type archSpecificNativeLibInfo struct {
|
|||||||
exportedIncludeDirs android.Paths
|
exportedIncludeDirs android.Paths
|
||||||
exportedSystemIncludeDirs android.Paths
|
exportedSystemIncludeDirs android.Paths
|
||||||
exportedFlags []string
|
exportedFlags []string
|
||||||
exportedDeps android.Paths
|
exportedGeneratedHeaders android.Paths
|
||||||
outputFile android.Path
|
outputFile android.Path
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1608,7 +1628,7 @@ func organizeVariants(member android.SdkMember) *nativeLibInfo {
|
|||||||
exportedIncludeDirs: ccModule.ExportedIncludeDirs(),
|
exportedIncludeDirs: ccModule.ExportedIncludeDirs(),
|
||||||
exportedSystemIncludeDirs: ccModule.ExportedSystemIncludeDirs(),
|
exportedSystemIncludeDirs: ccModule.ExportedSystemIncludeDirs(),
|
||||||
exportedFlags: ccModule.ExportedFlags(),
|
exportedFlags: ccModule.ExportedFlags(),
|
||||||
exportedDeps: ccModule.ExportedDeps(),
|
exportedGeneratedHeaders: ccModule.ExportedGeneratedHeaders(),
|
||||||
outputFile: ccModule.OutputFile().Path(),
|
outputFile: ccModule.OutputFile().Path(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@@ -90,6 +90,7 @@ func (p *prebuiltLibraryLinker) link(ctx ModuleContext,
|
|||||||
p.libraryDecorator.reexportSystemDirs(deps.ReexportedSystemDirs...)
|
p.libraryDecorator.reexportSystemDirs(deps.ReexportedSystemDirs...)
|
||||||
p.libraryDecorator.reexportFlags(deps.ReexportedFlags...)
|
p.libraryDecorator.reexportFlags(deps.ReexportedFlags...)
|
||||||
p.libraryDecorator.reexportDeps(deps.ReexportedDeps...)
|
p.libraryDecorator.reexportDeps(deps.ReexportedDeps...)
|
||||||
|
p.libraryDecorator.addExportedGeneratedHeaders(deps.ReexportedGeneratedHeaders...)
|
||||||
|
|
||||||
builderFlags := flagsToBuilderFlags(flags)
|
builderFlags := flagsToBuilderFlags(flags)
|
||||||
|
|
||||||
|
@@ -704,7 +704,7 @@ func (c *vndkSnapshotSingleton) GenerateBuildActions(ctx android.SingletonContex
|
|||||||
// We glob headers from include directories inside source tree. So we first gather
|
// We glob headers from include directories inside source tree. So we first gather
|
||||||
// all include directories inside our source tree. On the contrast, we manually
|
// all include directories inside our source tree. On the contrast, we manually
|
||||||
// collect generated headers from dependencies as they can't globbed.
|
// collect generated headers from dependencies as they can't globbed.
|
||||||
generatedHeaders = append(generatedHeaders, l.exportedDeps()...)
|
generatedHeaders = append(generatedHeaders, l.exportedGeneratedHeaders()...)
|
||||||
for _, dir := range append(l.exportedDirs(), l.exportedSystemDirs()...) {
|
for _, dir := range append(l.exportedDirs(), l.exportedSystemDirs()...) {
|
||||||
exportedIncludes[dir.String()] = true
|
exportedIncludes[dir.String()] = true
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user