From c87a059c88b45bbfde08ea5302bcf6779958e9a3 Mon Sep 17 00:00:00 2001 From: Jooyung Han Date: Mon, 2 Mar 2020 17:44:33 +0900 Subject: [PATCH] Make __ANDROID_APEX___ macro optional This is rarely used feature but cost alot for the local build and build inra. Bug: 150506627 Test: m Change-Id: Iec3ada4a97c7b228f2818563fa0e81b407f2715a --- apex/apex_test.go | 42 +++++++++++++++++++++++++++++++++--------- cc/compiler.go | 10 +++++++--- 2 files changed, 40 insertions(+), 12 deletions(-) diff --git a/apex/apex_test.go b/apex/apex_test.go index 6d9ad2686..095c8a9a7 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -1389,13 +1389,13 @@ func TestMacro(t *testing.T) { apex { name: "myapex", key: "myapex.key", - native_shared_libs: ["mylib"], + native_shared_libs: ["mylib", "mylib2"], } apex { name: "otherapex", key: "myapex.key", - native_shared_libs: ["mylib"], + native_shared_libs: ["mylib", "mylib2"], } apex_key { @@ -1409,29 +1409,53 @@ func TestMacro(t *testing.T) { srcs: ["mylib.cpp"], system_shared_libs: [], stl: "none", - // TODO: remove //apex_available:platform apex_available: [ - "//apex_available:platform", "myapex", "otherapex", ], } + cc_library { + name: "mylib2", + srcs: ["mylib.cpp"], + system_shared_libs: [], + stl: "none", + apex_available: [ + "myapex", + "otherapex", + ], + use_apex_name_macro: true, + } `) - // non-APEX variant does not have __ANDROID_APEX(_NAME)__ defined + // non-APEX variant does not have __ANDROID_APEX__ defined mylibCFlags := ctx.ModuleForTests("mylib", "android_arm64_armv8-a_static").Rule("cc").Args["cFlags"] ensureNotContains(t, mylibCFlags, "-D__ANDROID_APEX__") + + // APEX variant has __ANDROID_APEX__ defined + mylibCFlags = ctx.ModuleForTests("mylib", "android_arm64_armv8-a_static_myapex").Rule("cc").Args["cFlags"] + ensureContains(t, mylibCFlags, "-D__ANDROID_APEX__") ensureNotContains(t, mylibCFlags, "-D__ANDROID_APEX_MYAPEX__") + + // APEX variant has __ANDROID_APEX__ defined + mylibCFlags = ctx.ModuleForTests("mylib", "android_arm64_armv8-a_static_otherapex").Rule("cc").Args["cFlags"] + ensureContains(t, mylibCFlags, "-D__ANDROID_APEX__") ensureNotContains(t, mylibCFlags, "-D__ANDROID_APEX_OTHERAPEX__") - // APEX variant has __ANDROID_APEX(_NAME)__ defined - mylibCFlags = ctx.ModuleForTests("mylib", "android_arm64_armv8-a_static_myapex").Rule("cc").Args["cFlags"] + // When cc_library sets use_apex_name_macro: true + // apex variants define additional macro to distinguish which apex variant it is built for + + // non-APEX variant does not have __ANDROID_APEX__ defined + mylibCFlags = ctx.ModuleForTests("mylib2", "android_arm64_armv8-a_static").Rule("cc").Args["cFlags"] + ensureNotContains(t, mylibCFlags, "-D__ANDROID_APEX__") + + // APEX variant has __ANDROID_APEX__ defined + mylibCFlags = ctx.ModuleForTests("mylib2", "android_arm64_armv8-a_static_myapex").Rule("cc").Args["cFlags"] ensureContains(t, mylibCFlags, "-D__ANDROID_APEX__") ensureContains(t, mylibCFlags, "-D__ANDROID_APEX_MYAPEX__") ensureNotContains(t, mylibCFlags, "-D__ANDROID_APEX_OTHERAPEX__") - // APEX variant has __ANDROID_APEX(_NAME)__ defined - mylibCFlags = ctx.ModuleForTests("mylib", "android_arm64_armv8-a_static_otherapex").Rule("cc").Args["cFlags"] + // APEX variant has __ANDROID_APEX__ defined + mylibCFlags = ctx.ModuleForTests("mylib2", "android_arm64_armv8-a_static_otherapex").Rule("cc").Args["cFlags"] ensureContains(t, mylibCFlags, "-D__ANDROID_APEX__") ensureNotContains(t, mylibCFlags, "-D__ANDROID_APEX_MYAPEX__") ensureContains(t, mylibCFlags, "-D__ANDROID_APEX_OTHERAPEX__") diff --git a/cc/compiler.go b/cc/compiler.go index c1a8d96d8..3a87b6980 100644 --- a/cc/compiler.go +++ b/cc/compiler.go @@ -176,6 +176,9 @@ type BaseCompilerProperties struct { // Build and link with OpenMP Openmp *bool `android:"arch_variant"` + + // Adds __ANDROID_APEX___ macro defined for apex variants in addition to __ANDROID_APEX__ + Use_apex_name_macro *bool } func NewBaseCompiler() *baseCompiler { @@ -321,9 +324,10 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags, deps } if ctx.apexName() != "" { - flags.Global.CommonFlags = append(flags.Global.CommonFlags, - "-D__ANDROID_APEX__", - "-D__ANDROID_APEX_"+makeDefineString(ctx.apexName())+"__") + flags.Global.CommonFlags = append(flags.Global.CommonFlags, "-D__ANDROID_APEX__") + if Bool(compiler.Properties.Use_apex_name_macro) { + flags.Global.CommonFlags = append(flags.Global.CommonFlags, "-D__ANDROID_APEX_"+makeDefineString(ctx.apexName())+"__") + } } instructionSet := String(compiler.Properties.Instruction_set)