diff options
author | Dan Willemsen <dwillemsen@google.com> | 2016-09-28 17:34:58 -0700 |
---|---|---|
committer | Dan Willemsen <dwillemsen@google.com> | 2016-09-28 18:31:04 -0700 |
commit | b3454ab24de620f367d6b8b77f0de2ce978b2d5f (patch) | |
tree | 9dd36ec1b3285c6131f83f0bae999a45c8965f3b /cc/cc.go | |
parent | 9c8681f4f98cf6174bd5ab04a57d8078d591534a (diff) | |
download | build_soong-b3454ab24de620f367d6b8b77f0de2ce978b2d5f.tar.gz build_soong-b3454ab24de620f367d6b8b77f0de2ce978b2d5f.tar.bz2 build_soong-b3454ab24de620f367d6b8b77f0de2ce978b2d5f.zip |
Add export_generated_headers
Similar to export_shared_library_headers, this will export headers
imported from a gensrcs or genrule.
Bug: 31742855
Test: Add export_generated_headers, ensure it's in out/soong/Android-*.mk
Change-Id: Ieadefd007ece8b249f011a258a9c5b27f5d3f594
Diffstat (limited to 'cc/cc.go')
-rw-r--r-- | cc/cc.go | 57 |
1 files changed, 38 insertions, 19 deletions
@@ -64,6 +64,8 @@ type Deps struct { GeneratedSources []string GeneratedHeaders []string + ReexportGeneratedHeaders []string + CrtBegin, CrtEnd string } @@ -193,21 +195,22 @@ type dependencyTag struct { } var ( - sharedDepTag = dependencyTag{name: "shared", library: true} - sharedExportDepTag = dependencyTag{name: "shared", library: true, reexportFlags: true} - lateSharedDepTag = dependencyTag{name: "late shared", library: true} - staticDepTag = dependencyTag{name: "static", library: true} - staticExportDepTag = dependencyTag{name: "static", library: true, reexportFlags: true} - lateStaticDepTag = dependencyTag{name: "late static", library: true} - wholeStaticDepTag = dependencyTag{name: "whole static", library: true, reexportFlags: true} - genSourceDepTag = dependencyTag{name: "gen source"} - genHeaderDepTag = dependencyTag{name: "gen header"} - objDepTag = dependencyTag{name: "obj"} - crtBeginDepTag = dependencyTag{name: "crtbegin"} - crtEndDepTag = dependencyTag{name: "crtend"} - reuseObjTag = dependencyTag{name: "reuse objects"} - ndkStubDepTag = dependencyTag{name: "ndk stub", library: true} - ndkLateStubDepTag = dependencyTag{name: "ndk late stub", library: true} + sharedDepTag = dependencyTag{name: "shared", library: true} + sharedExportDepTag = dependencyTag{name: "shared", library: true, reexportFlags: true} + lateSharedDepTag = dependencyTag{name: "late shared", library: true} + staticDepTag = dependencyTag{name: "static", library: true} + staticExportDepTag = dependencyTag{name: "static", library: true, reexportFlags: true} + lateStaticDepTag = dependencyTag{name: "late static", library: true} + wholeStaticDepTag = dependencyTag{name: "whole static", library: true, reexportFlags: true} + genSourceDepTag = dependencyTag{name: "gen source"} + genHeaderDepTag = dependencyTag{name: "gen header"} + genHeaderExportDepTag = dependencyTag{name: "gen header", reexportFlags: true} + objDepTag = dependencyTag{name: "obj"} + crtBeginDepTag = dependencyTag{name: "crtbegin"} + crtEndDepTag = dependencyTag{name: "crtend"} + reuseObjTag = dependencyTag{name: "reuse objects"} + ndkStubDepTag = dependencyTag{name: "ndk stub", library: true} + ndkLateStubDepTag = dependencyTag{name: "ndk late stub", library: true} ) // Module contains the properties and members used by all C/C++ module types, and implements @@ -503,6 +506,12 @@ func (c *Module) deps(ctx BaseModuleContext) Deps { } } + for _, gen := range deps.ReexportGeneratedHeaders { + if !inList(gen, deps.GeneratedHeaders) { + ctx.PropertyErrorf("export_generated_headers", "Generated header module not in generated_headers: '%s'", gen) + } + } + return deps } @@ -594,7 +603,14 @@ func (c *Module) depsMutator(actx android.BottomUpMutatorContext) { deps.LateSharedLibs...) actx.AddDependency(c, genSourceDepTag, deps.GeneratedSources...) - actx.AddDependency(c, genHeaderDepTag, deps.GeneratedHeaders...) + + for _, gen := range deps.GeneratedHeaders { + depTag := genHeaderDepTag + if inList(gen, deps.ReexportGeneratedHeaders) { + depTag = genHeaderExportDepTag + } + actx.AddDependency(c, depTag, gen) + } actx.AddDependency(c, objDepTag, deps.ObjFiles...) @@ -736,12 +752,15 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps { } else { ctx.ModuleErrorf("module %q is not a gensrcs or genrule", name) } - case genHeaderDepTag: + case genHeaderDepTag, genHeaderExportDepTag: if genRule, ok := m.(genrule.SourceFileGenerator); ok { depPaths.GeneratedHeaders = append(depPaths.GeneratedHeaders, genRule.GeneratedSourceFiles()...) - depPaths.Flags = append(depPaths.Flags, - includeDirsToFlags(android.Paths{genRule.GeneratedHeaderDir()})) + flags := includeDirsToFlags(android.Paths{genRule.GeneratedHeaderDir()}) + depPaths.Flags = append(depPaths.Flags, flags) + if tag == genHeaderExportDepTag { + depPaths.ReexportedFlags = append(depPaths.ReexportedFlags, flags) + } } else { ctx.ModuleErrorf("module %q is not a genrule", name) } |