diff options
Diffstat (limited to 'cc')
| -rw-r--r-- | cc/cc.go | 34 | ||||
| -rw-r--r-- | cc/compiler.go | 2 | ||||
| -rw-r--r-- | cc/config/clang.go | 15 | ||||
| -rw-r--r-- | cc/config/global.go | 4 | ||||
| -rw-r--r-- | cc/library.go | 42 | ||||
| -rw-r--r-- | cc/ndk_library.go | 1 | ||||
| -rw-r--r-- | cc/prebuilt.go | 1 | ||||
| -rw-r--r-- | cc/rs.go | 2 | ||||
| -rw-r--r-- | cc/vndk.go | 2 |
9 files changed, 63 insertions, 40 deletions
@@ -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) diff --git a/cc/compiler.go b/cc/compiler.go index 2bc6ae26e..1ced451fa 100644 --- a/cc/compiler.go +++ b/cc/compiler.go @@ -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) diff --git a/cc/config/clang.go b/cc/config/clang.go index 8618d0955..eddc34104 100644 --- a/cc/config/clang.go +++ b/cc/config/clang.go @@ -132,10 +132,6 @@ func init() { // Disable -Winconsistent-missing-override until we can clean up the existing // codebase for it. "-Wno-inconsistent-missing-override", - - // Warnings from clang-10 - // Nested and array designated initialization is nice to have. - "-Wno-c99-designator", }, " ")) pctx.StaticVariable("ClangExtraCppflags", strings.Join([]string{ @@ -165,10 +161,6 @@ func init() { // new warnings are fixed. "-Wno-tautological-constant-compare", "-Wno-tautological-type-limit-compare", - // http://b/145210666 - "-Wno-reorder-init-list", - // http://b/145211066 - "-Wno-implicit-int-float-conversion", }, " ")) // Extra cflags for external third-party projects to disable warnings that @@ -184,13 +176,6 @@ func init() { // Bug: http://b/29823425 Disable -Wnull-dereference until the // new instances detected by this warning are fixed. "-Wno-null-dereference", - - // http://b/145211477 - "-Wno-pointer-compare", - // http://b/145211022 - "-Wno-xor-used-as-pow", - // http://b/145211022 - "-Wno-final-dtor-non-final-class", }, " ")) } diff --git a/cc/config/global.go b/cc/config/global.go index bae5555f9..0a09fa4e7 100644 --- a/cc/config/global.go +++ b/cc/config/global.go @@ -126,8 +126,8 @@ var ( // prebuilts/clang default settings. ClangDefaultBase = "prebuilts/clang/host" - ClangDefaultVersion = "clang-r370808" - ClangDefaultShortVersion = "10.0.1" + ClangDefaultVersion = "clang-r365631b" + ClangDefaultShortVersion = "9.0.7" // Directories with warnings from Android.bp files. WarningAllowedProjects = []string{ diff --git a/cc/library.go b/cc/library.go index 60b00b193..4b8e05205 100644 --- a/cc/library.go +++ b/cc/library.go @@ -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() { @@ -1435,10 +1455,10 @@ func (mt *librarySdkMemberType) IsInstance(module android.Module) bool { // copy exported header files and stub *.so files func (mt *librarySdkMemberType) BuildSnapshot(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder, member android.SdkMember) { info := organizeVariants(member) - buildSharedNativeLibSnapshot(sdkModuleContext, info, builder) + buildSharedNativeLibSnapshot(sdkModuleContext, info, builder, member) } -func buildSharedNativeLibSnapshot(sdkModuleContext android.ModuleContext, info *nativeLibInfo, builder android.SnapshotBuilder) { +func buildSharedNativeLibSnapshot(sdkModuleContext android.ModuleContext, info *nativeLibInfo, builder android.SnapshotBuilder, member android.SdkMember) { // a function for emitting include dirs printExportedDirCopyCommandsForNativeLibs := func(lib archSpecificNativeLibInfo) { includeDirs := lib.exportedIncludeDirs @@ -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 { @@ -1489,10 +1509,10 @@ func buildSharedNativeLibSnapshot(sdkModuleContext android.ModuleContext, info * } } - info.generatePrebuiltLibrary(sdkModuleContext, builder) + info.generatePrebuiltLibrary(sdkModuleContext, builder, member) } -func (info *nativeLibInfo) generatePrebuiltLibrary(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder) { +func (info *nativeLibInfo) generatePrebuiltLibrary(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder, member android.SdkMember) { // a function for emitting include dirs addExportedDirsForNativeLibs := func(lib archSpecificNativeLibInfo, properties android.BpPropertySet, systemInclude bool) { @@ -1509,7 +1529,7 @@ func (info *nativeLibInfo) generatePrebuiltLibrary(sdkModuleContext android.Modu properties.AddProperty(propertyName, includeDirs) } - pbm := builder.AddPrebuiltModule(info.name, "cc_prebuilt_library_shared") + pbm := builder.AddPrebuiltModule(member, "cc_prebuilt_library_shared") if !info.hasArchSpecificFlags { addExportedDirsForNativeLibs(info.archVariants[0], pbm, false /*systemInclude*/) @@ -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(), }) } diff --git a/cc/ndk_library.go b/cc/ndk_library.go index da94d331c..c47cbf077 100644 --- a/cc/ndk_library.go +++ b/cc/ndk_library.go @@ -261,7 +261,6 @@ func addStubLibraryCompilerFlags(flags Flags) Flags { // We're knowingly doing some otherwise unsightly things with builtin // functions here. We're just generating stub libraries, so ignore it. "-Wno-incompatible-library-redeclaration", - "-Wno-incomplete-setjmp-declaration", "-Wno-builtin-requires-header", "-Wno-invalid-noreturn", "-Wall", diff --git a/cc/prebuilt.go b/cc/prebuilt.go index 4e6cdd755..32676d6f5 100644 --- a/cc/prebuilt.go +++ b/cc/prebuilt.go @@ -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) @@ -29,7 +29,7 @@ func init() { // Use RenderScript prebuilts for unbundled builds but not PDK builds return filepath.Join("prebuilts/sdk/tools", runtime.GOOS, "bin/llvm-rs-cc") } else { - return pctx.HostBinToolPath(ctx, "llvm-rs-cc").String() + return ctx.Config().HostToolPath(ctx, "llvm-rs-cc").String() } }) } diff --git a/cc/vndk.go b/cc/vndk.go index f25861af9..5aeb2e635 100644 --- a/cc/vndk.go +++ b/cc/vndk.go @@ -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 } |