From c2a1d70eafdb96a1824ea1d7b756e32c55f7a9b0 Mon Sep 17 00:00:00 2001 From: Jooyung Han Date: Tue, 18 Aug 2020 15:37:17 +0900 Subject: [PATCH] apex: pass "apex name" as literal to apex variants When a cc module sets UseApexNameMacro(mutated property), it is built with __ANDROID_APEX_NAME__ for its apex variants. For now the new prop is used by aidl_interface-generated modules only. Note that we already have __ANDROID_APEX___ macro. The new macro can be used when we need to pass the name as data while the old one is useful when we want conditional compilation. Bug: 165017590 Test: m com.android.aidltest check build.ninja if -D__ANDROID_APEX_NAME__ is defined for apex varaints Change-Id: Ia81ba8f833d23254e58c9777daf184d7861f07a7 --- cc/compiler.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/cc/compiler.go b/cc/compiler.go index e06243b50..0d3df27a4 100644 --- a/cc/compiler.go +++ b/cc/compiler.go @@ -189,8 +189,14 @@ type BaseCompilerProperties struct { // Build and link with OpenMP Openmp *bool `android:"arch_variant"` + // Deprecated. // Adds __ANDROID_APEX___ macro defined for apex variants in addition to __ANDROID_APEX__ Use_apex_name_macro *bool + + // Adds two macros for apex variants in addition to __ANDROID_APEX__ + // * __ANDROID_APEX_COM_ANDROID_FOO__ + // * __ANDROID_APEX_NAME__="com.android.foo" + UseApexNameMacro bool `blueprint:"mutated"` } func NewBaseCompiler() *baseCompiler { @@ -254,6 +260,10 @@ func (compiler *baseCompiler) compilerDeps(ctx DepsContext, deps Deps) Deps { return deps } +func (compiler *baseCompiler) useApexNameMacro() bool { + return Bool(compiler.Properties.Use_apex_name_macro) || compiler.Properties.UseApexNameMacro +} + // Return true if the module is in the WarningAllowedProjects. func warningsAreAllowed(subdir string) bool { subdir += "/" @@ -337,8 +347,9 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags, deps if ctx.apexVariationName() != "" { flags.Global.CommonFlags = append(flags.Global.CommonFlags, "-D__ANDROID_APEX__") - if Bool(compiler.Properties.Use_apex_name_macro) { + if compiler.useApexNameMacro() { flags.Global.CommonFlags = append(flags.Global.CommonFlags, "-D__ANDROID_APEX_"+makeDefineString(ctx.apexVariationName())+"__") + flags.Global.CommonFlags = append(flags.Global.CommonFlags, "-D__ANDROID_APEX_NAME__='\""+ctx.apexVariationName()+"\"'") } if ctx.Device() { flags.Global.CommonFlags = append(flags.Global.CommonFlags, "-D__ANDROID_SDK_VERSION__="+strconv.Itoa(ctx.apexSdkVersion())) @@ -557,7 +568,7 @@ func (compiler *baseCompiler) hasSrcExt(ext string) bool { } func (compiler *baseCompiler) uniqueApexVariations() bool { - return Bool(compiler.Properties.Use_apex_name_macro) + return compiler.useApexNameMacro() } // makeDefineString transforms a name of an APEX module into a value to be used as value for C define