diff options
Diffstat (limited to 'cc')
| -rw-r--r-- | cc/cc.go | 14 | ||||
| -rw-r--r-- | cc/compiler.go | 3 | ||||
| -rw-r--r-- | cc/config/vndk.go | 1 | ||||
| -rw-r--r-- | cc/gen.go | 6 | ||||
| -rw-r--r-- | cc/genrule_test.go | 12 | ||||
| -rw-r--r-- | cc/library.go | 6 | ||||
| -rw-r--r-- | cc/makevars.go | 1 | ||||
| -rw-r--r-- | cc/ndk_library.go | 14 |
8 files changed, 36 insertions, 21 deletions
@@ -88,7 +88,7 @@ func RegisterCCBuildComponents(ctx android.RegistrationContext) { ctx.TopDown("double_loadable", checkDoubleLoadableLibraries).Parallel() }) - android.RegisterSingletonType("kythe_extract_all", kytheExtractAllFactory) + ctx.RegisterSingletonType("kythe_extract_all", kytheExtractAllFactory) } type Deps struct { @@ -369,7 +369,7 @@ type ModuleContextIntf interface { useSdk() bool sdkVersion() string useVndk() bool - isNdk() bool + isNdk(config android.Config) bool isLlndk(config android.Config) bool isLlndkPublic(config android.Config) bool isVndkPrivate(config android.Config) bool @@ -939,8 +939,8 @@ func (c *Module) isCoverageVariant() bool { return c.coverage.Properties.IsCoverageVariant } -func (c *Module) IsNdk() bool { - return inList(c.BaseModuleName(), ndkKnownLibs) +func (c *Module) IsNdk(config android.Config) bool { + return inList(c.BaseModuleName(), *getNDKKnownLibs(config)) } func (c *Module) isLlndk(config android.Config) bool { @@ -1145,8 +1145,8 @@ func (ctx *moduleContextImpl) useVndk() bool { return ctx.mod.UseVndk() } -func (ctx *moduleContextImpl) isNdk() bool { - return ctx.mod.IsNdk() +func (ctx *moduleContextImpl) isNdk(config android.Config) bool { + return ctx.mod.IsNdk(config) } func (ctx *moduleContextImpl) isLlndk(config android.Config) bool { @@ -1766,7 +1766,7 @@ func (c *Module) DepsMutator(actx android.BottomUpMutatorContext) { for _, entry := range list { // strip #version suffix out name, _ := StubsLibNameAndVersion(entry) - if ctx.useSdk() && inList(name, ndkKnownLibs) { + if ctx.useSdk() && inList(name, *getNDKKnownLibs(ctx.Config())) { variantLibs = append(variantLibs, name+ndkLibrarySuffix) } else if ctx.useVndk() { nonvariantLibs = append(nonvariantLibs, rewriteVendorLibs(entry)) diff --git a/cc/compiler.go b/cc/compiler.go index 3c86d208b..04ed80db9 100644 --- a/cc/compiler.go +++ b/cc/compiler.go @@ -687,6 +687,9 @@ type RustBindgenClangProperties struct { // list of shared libraries that provide headers for this binding. Shared_libs []string `android:"arch_variant"` + // List of libraries which export include paths required for this module + Header_libs []string `android:"arch_variant,variant_prepend"` + // list of clang flags required to correctly interpret the headers. Cflags []string `android:"arch_variant"` diff --git a/cc/config/vndk.go b/cc/config/vndk.go index eb3d16fd5..563ce7638 100644 --- a/cc/config/vndk.go +++ b/cc/config/vndk.go @@ -22,6 +22,7 @@ var VndkMustUseVendorVariantList = []string{ "android.hardware.light-ndk_platform", "android.hardware.identity-ndk_platform", "android.hardware.keymint-ndk_platform", + "android.hardware.keymint-unstable-ndk_platform", "android.hardware.nfc@1.2", "android.hardware.power-ndk_platform", "android.hardware.rebootescrow-ndk_platform", @@ -75,7 +75,11 @@ func genYacc(ctx android.ModuleContext, rule *android.RuleBuilder, yaccFile andr cmd := rule.Command() // Fix up #line markers to not use the sbox temporary directory - sedCmd := "sed -i.bak 's#__SBOX_OUT_DIR__#" + outDir.String() + "#'" + // android.SboxPathForOutput(outDir, outDir) returns the sbox placeholder for the out + // directory itself, without any filename appended. + // TODO(ccross): make this cmd.PathForOutput(outDir) instead. + sboxOutDir := android.SboxPathForOutput(outDir, outDir) + sedCmd := "sed -i.bak 's#" + sboxOutDir + "#" + outDir.String() + "#'" rule.Command().Text(sedCmd).Input(outFile) rule.Command().Text(sedCmd).Input(headerFile) diff --git a/cc/genrule_test.go b/cc/genrule_test.go index 0c7952b70..fa0c6f209 100644 --- a/cc/genrule_test.go +++ b/cc/genrule_test.go @@ -66,14 +66,14 @@ func TestArchGenruleCmd(t *testing.T) { gen := ctx.ModuleForTests("gen", "android_arm_armv7-a-neon").Output("out_arm") expected := []string{"foo"} - if !reflect.DeepEqual(expected, gen.Inputs.Strings()) { - t.Errorf(`want arm inputs %v, got %v`, expected, gen.Inputs.Strings()) + if !reflect.DeepEqual(expected, gen.Implicits.Strings()[:len(expected)]) { + t.Errorf(`want arm inputs %v, got %v`, expected, gen.Implicits.Strings()) } gen = ctx.ModuleForTests("gen", "android_arm64_armv8-a").Output("out_arm64") expected = []string{"bar"} - if !reflect.DeepEqual(expected, gen.Inputs.Strings()) { - t.Errorf(`want arm64 inputs %v, got %v`, expected, gen.Inputs.Strings()) + if !reflect.DeepEqual(expected, gen.Implicits.Strings()[:len(expected)]) { + t.Errorf(`want arm64 inputs %v, got %v`, expected, gen.Implicits.Strings()) } } @@ -108,10 +108,10 @@ func TestLibraryGenruleCmd(t *testing.T) { gen := ctx.ModuleForTests("gen", "android_arm_armv7-a-neon").Output("out") expected := []string{"libboth.so", "libshared.so", "libstatic.a"} var got []string - for _, input := range gen.Inputs { + for _, input := range gen.Implicits { got = append(got, input.Base()) } - if !reflect.DeepEqual(expected, got) { + if !reflect.DeepEqual(expected, got[:len(expected)]) { t.Errorf(`want inputs %v, got %v`, expected, got) } } diff --git a/cc/library.go b/cc/library.go index eeddd90d6..2127c08da 100644 --- a/cc/library.go +++ b/cc/library.go @@ -567,7 +567,7 @@ func (library *libraryDecorator) classifySourceAbiDump(ctx ModuleContext) string return "" } // Return NDK if the library is both NDK and LLNDK. - if ctx.isNdk() { + if ctx.isNdk(ctx.Config()) { return "NDK" } if ctx.isLlndkPublic(ctx.Config()) { @@ -1099,7 +1099,7 @@ func (library *libraryDecorator) coverageOutputFilePath() android.OptionalPath { func getRefAbiDumpFile(ctx ModuleContext, vndkVersion, fileName string) android.Path { // The logic must be consistent with classifySourceAbiDump. - isNdk := ctx.isNdk() + isNdk := ctx.isNdk(ctx.Config()) isLlndkOrVndk := ctx.isLlndkPublic(ctx.Config()) || (ctx.useVndk() && ctx.isVndk()) refAbiDumpTextFile := android.PathForVndkRefAbiDump(ctx, vndkVersion, fileName, isNdk, isLlndkOrVndk, false) @@ -1153,7 +1153,7 @@ func (library *libraryDecorator) linkSAbiDumpFiles(ctx ModuleContext, objs Objec library.sAbiDiff = SourceAbiDiff(ctx, library.sAbiOutputFile.Path(), refAbiDumpFile, fileName, exportedHeaderFlags, Bool(library.Properties.Header_abi_checker.Check_all_apis), - ctx.isLlndk(ctx.Config()), ctx.isNdk(), ctx.isVndkExt()) + ctx.isLlndk(ctx.Config()), ctx.isNdk(ctx.Config()), ctx.isVndkExt()) } } } diff --git a/cc/makevars.go b/cc/makevars.go index dcfd6d8ef..bd8aab532 100644 --- a/cc/makevars.go +++ b/cc/makevars.go @@ -171,6 +171,7 @@ func makeVarsProvider(ctx android.MakeVarsContext) { ctx.StrictRaw("SRC_HEADERS", strings.Join(includes, " ")) ctx.StrictRaw("SRC_SYSTEM_HEADERS", strings.Join(systemIncludes, " ")) + ndkKnownLibs := *getNDKKnownLibs(ctx.Config()) sort.Strings(ndkKnownLibs) ctx.Strict("NDK_KNOWN_LIBS", strings.Join(ndkKnownLibs, " ")) diff --git a/cc/ndk_library.go b/cc/ndk_library.go index 9097e7bbc..a5c43fe21 100644 --- a/cc/ndk_library.go +++ b/cc/ndk_library.go @@ -45,8 +45,7 @@ var ( ndkLibrarySuffix = ".ndk" - // Added as a variation dependency via depsMutator. - ndkKnownLibs = []string{} + ndkKnownLibsKey = android.NewOnceKey("ndkKnownLibsKey") // protects ndkKnownLibs writes during parallel BeginMutator. ndkKnownLibsLock sync.Mutex ) @@ -158,6 +157,12 @@ func (this *stubDecorator) initializeProperties(ctx BaseModuleContext) bool { return true } +func getNDKKnownLibs(config android.Config) *[]string { + return config.Once(ndkKnownLibsKey, func() interface{} { + return &[]string{} + }).(*[]string) +} + func (c *stubDecorator) compilerInit(ctx BaseModuleContext) { c.baseCompiler.compilerInit(ctx) @@ -168,12 +173,13 @@ func (c *stubDecorator) compilerInit(ctx BaseModuleContext) { ndkKnownLibsLock.Lock() defer ndkKnownLibsLock.Unlock() - for _, lib := range ndkKnownLibs { + ndkKnownLibs := getNDKKnownLibs(ctx.Config()) + for _, lib := range *ndkKnownLibs { if lib == name { return } } - ndkKnownLibs = append(ndkKnownLibs, name) + *ndkKnownLibs = append(*ndkKnownLibs, name) } func addStubLibraryCompilerFlags(flags Flags) Flags { |