Merge "Fix generated headers of snapshot"
am: 8fc9eeacc8
Change-Id: I82d0066b4bac7f17c3e1ab8b47251ca8e2bdfc4c
This commit is contained in:
commit
4b3e3b6720
34
cc/cc.go
34
cc/cc.go
|
@ -94,6 +94,7 @@ type Deps struct {
|
|||
|
||||
GeneratedSources []string
|
||||
GeneratedHeaders []string
|
||||
GeneratedDeps []string
|
||||
|
||||
ReexportGeneratedHeaders []string
|
||||
|
||||
|
@ -120,14 +121,16 @@ type PathDeps struct {
|
|||
// Paths to generated source files
|
||||
GeneratedSources android.Paths
|
||||
GeneratedHeaders android.Paths
|
||||
GeneratedDeps android.Paths
|
||||
|
||||
Flags []string
|
||||
IncludeDirs android.Paths
|
||||
SystemIncludeDirs android.Paths
|
||||
ReexportedDirs android.Paths
|
||||
ReexportedSystemDirs android.Paths
|
||||
ReexportedFlags []string
|
||||
ReexportedDeps android.Paths
|
||||
Flags []string
|
||||
IncludeDirs android.Paths
|
||||
SystemIncludeDirs android.Paths
|
||||
ReexportedDirs android.Paths
|
||||
ReexportedSystemDirs android.Paths
|
||||
ReexportedFlags []string
|
||||
ReexportedGeneratedHeaders android.Paths
|
||||
ReexportedDeps android.Paths
|
||||
|
||||
// Paths to crt*.o files
|
||||
CrtBegin, CrtEnd android.OptionalPath
|
||||
|
@ -894,6 +897,13 @@ func (c *Module) ExportedDeps() android.Paths {
|
|||
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 {
|
||||
switch name {
|
||||
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.ReexportedFlags = append(depPaths.ReexportedFlags, exporter.exportedFlags()...)
|
||||
depPaths.ReexportedDeps = append(depPaths.ReexportedDeps, exporter.exportedDeps()...)
|
||||
depPaths.ReexportedGeneratedHeaders = append(depPaths.ReexportedGeneratedHeaders, exporter.exportedGeneratedHeaders()...)
|
||||
}
|
||||
|
||||
ctx.VisitDirectDeps(func(dep android.Module) {
|
||||
|
@ -1928,11 +1939,15 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps {
|
|||
case genHeaderDepTag, genHeaderExportDepTag:
|
||||
if genRule, ok := dep.(genrule.SourceFileGenerator); ok {
|
||||
depPaths.GeneratedHeaders = append(depPaths.GeneratedHeaders,
|
||||
genRule.GeneratedSourceFiles()...)
|
||||
depPaths.GeneratedDeps = append(depPaths.GeneratedDeps,
|
||||
genRule.GeneratedDeps()...)
|
||||
dirs := genRule.GeneratedHeaderDirs()
|
||||
depPaths.IncludeDirs = append(depPaths.IncludeDirs, dirs...)
|
||||
if depTag == genHeaderExportDepTag {
|
||||
depPaths.ReexportedDirs = append(depPaths.ReexportedDirs, dirs...)
|
||||
depPaths.ReexportedGeneratedHeaders = append(depPaths.ReexportedGeneratedHeaders,
|
||||
genRule.GeneratedSourceFiles()...)
|
||||
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.
|
||||
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 i, ok := ccDep.(*Module).linker.(exportedFlagsProducer); ok {
|
||||
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()...)
|
||||
|
||||
if t.ReexportFlags {
|
||||
|
@ -2243,10 +2259,12 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps {
|
|||
depPaths.IncludeDirs = android.FirstUniquePaths(depPaths.IncludeDirs)
|
||||
depPaths.SystemIncludeDirs = android.FirstUniquePaths(depPaths.SystemIncludeDirs)
|
||||
depPaths.GeneratedHeaders = android.FirstUniquePaths(depPaths.GeneratedHeaders)
|
||||
depPaths.GeneratedDeps = android.FirstUniquePaths(depPaths.GeneratedDeps)
|
||||
depPaths.ReexportedDirs = android.FirstUniquePaths(depPaths.ReexportedDirs)
|
||||
depPaths.ReexportedSystemDirs = android.FirstUniquePaths(depPaths.ReexportedSystemDirs)
|
||||
depPaths.ReexportedFlags = android.FirstUniqueStrings(depPaths.ReexportedFlags)
|
||||
depPaths.ReexportedDeps = android.FirstUniquePaths(depPaths.ReexportedDeps)
|
||||
depPaths.ReexportedGeneratedHeaders = android.FirstUniquePaths(depPaths.ReexportedGeneratedHeaders)
|
||||
|
||||
if c.sabi != nil {
|
||||
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 {
|
||||
pathDeps := deps.GeneratedHeaders
|
||||
pathDeps := deps.GeneratedDeps
|
||||
pathDeps = append(pathDeps, ndkPathDeps(ctx)...)
|
||||
|
||||
buildFlags := flagsToBuilderFlags(flags)
|
||||
|
|
|
@ -238,6 +238,7 @@ type flagExporter struct {
|
|||
systemDirs android.Paths
|
||||
flags []string
|
||||
deps android.Paths
|
||||
headers 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...)
|
||||
}
|
||||
|
||||
// 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 {
|
||||
return f.dirs
|
||||
}
|
||||
|
@ -297,11 +304,16 @@ func (f *flagExporter) exportedDeps() android.Paths {
|
|||
return f.deps
|
||||
}
|
||||
|
||||
func (f *flagExporter) exportedGeneratedHeaders() android.Paths {
|
||||
return f.headers
|
||||
}
|
||||
|
||||
type exportedFlagsProducer interface {
|
||||
exportedDirs() android.Paths
|
||||
exportedSystemDirs() android.Paths
|
||||
exportedFlags() []string
|
||||
exportedDeps() android.Paths
|
||||
exportedGeneratedHeaders() android.Paths
|
||||
}
|
||||
|
||||
var _ exportedFlagsProducer = (*flagExporter)(nil)
|
||||
|
@ -967,12 +979,16 @@ func (library *libraryDecorator) link(ctx ModuleContext,
|
|||
library.reexportSystemDirs(deps.ReexportedSystemDirs...)
|
||||
library.reexportFlags(deps.ReexportedFlags...)
|
||||
library.reexportDeps(deps.ReexportedDeps...)
|
||||
library.addExportedGeneratedHeaders(deps.ReexportedGeneratedHeaders...)
|
||||
|
||||
if Bool(library.Properties.Aidl.Export_aidl_headers) {
|
||||
if library.baseCompiler.hasSrcExt(".aidl") {
|
||||
dir := android.PathForModuleGen(ctx, "aidl")
|
||||
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)
|
||||
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.reexportDeps(library.baseCompiler.pathDeps...)
|
||||
library.addExportedGeneratedHeaders(library.baseCompiler.pathDeps...)
|
||||
}
|
||||
|
||||
if library.buildStubs() {
|
||||
|
@ -1448,7 +1468,7 @@ func buildSharedNativeLibSnapshot(sdkModuleContext android.ModuleContext, info *
|
|||
}
|
||||
for _, dir := range includeDirs {
|
||||
if _, gen := dir.(android.WritablePath); gen {
|
||||
// generated headers are copied via exportedDeps. See below.
|
||||
// generated headers are copied via exportedGeneratedHeaders. See below.
|
||||
continue
|
||||
}
|
||||
targetDir := nativeIncludeDir
|
||||
|
@ -1465,7 +1485,7 @@ func buildSharedNativeLibSnapshot(sdkModuleContext android.ModuleContext, info *
|
|||
}
|
||||
}
|
||||
|
||||
genHeaders := lib.exportedDeps
|
||||
genHeaders := lib.exportedGeneratedHeaders
|
||||
for _, file := range genHeaders {
|
||||
targetDir := nativeGeneratedIncludeDir
|
||||
if info.hasArchSpecificFlags {
|
||||
|
@ -1574,7 +1594,7 @@ type archSpecificNativeLibInfo struct {
|
|||
exportedIncludeDirs android.Paths
|
||||
exportedSystemIncludeDirs android.Paths
|
||||
exportedFlags []string
|
||||
exportedDeps android.Paths
|
||||
exportedGeneratedHeaders android.Paths
|
||||
outputFile android.Path
|
||||
}
|
||||
|
||||
|
@ -1608,7 +1628,7 @@ func organizeVariants(member android.SdkMember) *nativeLibInfo {
|
|||
exportedIncludeDirs: ccModule.ExportedIncludeDirs(),
|
||||
exportedSystemIncludeDirs: ccModule.ExportedSystemIncludeDirs(),
|
||||
exportedFlags: ccModule.ExportedFlags(),
|
||||
exportedDeps: ccModule.ExportedDeps(),
|
||||
exportedGeneratedHeaders: ccModule.ExportedGeneratedHeaders(),
|
||||
outputFile: ccModule.OutputFile().Path(),
|
||||
})
|
||||
}
|
||||
|
|
|
@ -90,6 +90,7 @@ func (p *prebuiltLibraryLinker) link(ctx ModuleContext,
|
|||
p.libraryDecorator.reexportSystemDirs(deps.ReexportedSystemDirs...)
|
||||
p.libraryDecorator.reexportFlags(deps.ReexportedFlags...)
|
||||
p.libraryDecorator.reexportDeps(deps.ReexportedDeps...)
|
||||
p.libraryDecorator.addExportedGeneratedHeaders(deps.ReexportedGeneratedHeaders...)
|
||||
|
||||
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
|
||||
// all include directories inside our source tree. On the contrast, we manually
|
||||
// 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()...) {
|
||||
exportedIncludes[dir.String()] = true
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue