apex: __ANDROID_APEX__ defined with no value
__ANDROID_APEX__ was defined with the name of apex module. -D__ANDROID_APEX__=com.android.foo But in this way, conditional compilation is not easy since comparing macro's string value is not supported in C/C++. (There's no usages of this value in source tree.) In most cases, modules can check if __ANDROID_APEX__ is defined to see if they are compiled for apex. For modules which should behave differently according to which apex they are included, they can check __ANDROID_APEX_<NAME>__. Bug: 142582178 Test: m (soong tests run) && boot device && TH Change-Id: I0f5e3e9463ccd96cbba333a8bdd648470c5c912d
This commit is contained in:
parent
520367cbd3
commit
6b8459be4f
|
@ -1212,24 +1212,21 @@ func TestMacro(t *testing.T) {
|
||||||
}
|
}
|
||||||
`)
|
`)
|
||||||
|
|
||||||
// non-APEX variant does not have __ANDROID__APEX__ defined
|
// non-APEX variant does not have __ANDROID_APEX(_NAME)__ defined
|
||||||
mylibCFlags := ctx.ModuleForTests("mylib", "android_arm64_armv8-a_core_static").Rule("cc").Args["cFlags"]
|
mylibCFlags := ctx.ModuleForTests("mylib", "android_arm64_armv8-a_core_static").Rule("cc").Args["cFlags"]
|
||||||
ensureNotContains(t, mylibCFlags, "-D__ANDROID_APEX__=myapex")
|
ensureNotContains(t, mylibCFlags, "-D__ANDROID_APEX__")
|
||||||
ensureNotContains(t, mylibCFlags, "-D__ANDROID_APEX__=otherapex")
|
|
||||||
ensureNotContains(t, mylibCFlags, "-D__ANDROID_APEX_MYAPEX__")
|
ensureNotContains(t, mylibCFlags, "-D__ANDROID_APEX_MYAPEX__")
|
||||||
ensureNotContains(t, mylibCFlags, "-D__ANDROID_APEX_OTHERAPEX__")
|
ensureNotContains(t, mylibCFlags, "-D__ANDROID_APEX_OTHERAPEX__")
|
||||||
|
|
||||||
// APEX variant has __ANDROID_APEX__=<apexname> defined
|
// APEX variant has __ANDROID_APEX(_NAME)__ defined
|
||||||
mylibCFlags = ctx.ModuleForTests("mylib", "android_arm64_armv8-a_core_static_myapex").Rule("cc").Args["cFlags"]
|
mylibCFlags = ctx.ModuleForTests("mylib", "android_arm64_armv8-a_core_static_myapex").Rule("cc").Args["cFlags"]
|
||||||
ensureContains(t, mylibCFlags, "-D__ANDROID_APEX__=myapex")
|
ensureContains(t, mylibCFlags, "-D__ANDROID_APEX__")
|
||||||
ensureNotContains(t, mylibCFlags, "-D__ANDROID_APEX__=otherapex")
|
|
||||||
ensureContains(t, mylibCFlags, "-D__ANDROID_APEX_MYAPEX__")
|
ensureContains(t, mylibCFlags, "-D__ANDROID_APEX_MYAPEX__")
|
||||||
ensureNotContains(t, mylibCFlags, "-D__ANDROID_APEX_OTHERAPEX__")
|
ensureNotContains(t, mylibCFlags, "-D__ANDROID_APEX_OTHERAPEX__")
|
||||||
|
|
||||||
// APEX variant has __ANDROID_APEX__=<apexname> defined
|
// APEX variant has __ANDROID_APEX(_NAME)__ defined
|
||||||
mylibCFlags = ctx.ModuleForTests("mylib", "android_arm64_armv8-a_core_static_otherapex").Rule("cc").Args["cFlags"]
|
mylibCFlags = ctx.ModuleForTests("mylib", "android_arm64_armv8-a_core_static_otherapex").Rule("cc").Args["cFlags"]
|
||||||
ensureNotContains(t, mylibCFlags, "-D__ANDROID_APEX__=myapex")
|
ensureContains(t, mylibCFlags, "-D__ANDROID_APEX__")
|
||||||
ensureContains(t, mylibCFlags, "-D__ANDROID_APEX__=otherapex")
|
|
||||||
ensureNotContains(t, mylibCFlags, "-D__ANDROID_APEX_MYAPEX__")
|
ensureNotContains(t, mylibCFlags, "-D__ANDROID_APEX_MYAPEX__")
|
||||||
ensureContains(t, mylibCFlags, "-D__ANDROID_APEX_OTHERAPEX__")
|
ensureContains(t, mylibCFlags, "-D__ANDROID_APEX_OTHERAPEX__")
|
||||||
}
|
}
|
||||||
|
|
|
@ -320,8 +320,7 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags, deps
|
||||||
}
|
}
|
||||||
|
|
||||||
if ctx.apexName() != "" {
|
if ctx.apexName() != "" {
|
||||||
// TODO(b/142582178): remove the value for __ANDROID_APEX__
|
flags.GlobalFlags = append(flags.GlobalFlags, "-D__ANDROID_APEX__")
|
||||||
flags.GlobalFlags = append(flags.GlobalFlags, "-D__ANDROID_APEX__="+ctx.apexName())
|
|
||||||
flags.GlobalFlags = append(flags.GlobalFlags, "-D__ANDROID_APEX_"+makeDefineString(ctx.apexName())+"__")
|
flags.GlobalFlags = append(flags.GlobalFlags, "-D__ANDROID_APEX_"+makeDefineString(ctx.apexName())+"__")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue