Split local and global cflags
Native compiler flags are currently applied in approximately: global cflags local cflags local include dirs global include dirs global conlyflags local conlyflags global cppflags local cppflags This means that a flag that is enabled in the global cppflags cannot be disabled in the local cflags, and an Android.bp author must know to disable it in the local cppflags. A better order would be: global cflags global conlyflags global cppflags local cflags local conlyflags local cppflags local include dirs global include dirs We are mixing both the global and local cflags into a single variable, and similar for conlyflags and cppflags, which prevents reordering them. This CL prepares to reorder them by splitting the global and local cflags into separate variables. Bug: 143713277 Test: m native Change-Id: Ic55a8c3516c331dc5f2af9d00e59ceca9d3e6c15
This commit is contained in:
16
cc/stl.go
16
cc/stl.go
@@ -215,12 +215,12 @@ func (stl *stl) flags(ctx ModuleContext, flags Flags) Flags {
|
||||
// these availability attributes are meaningless for us but cause
|
||||
// build breaks when we try to use code that would not be available
|
||||
// in the system's dylib.
|
||||
flags.CppFlags = append(flags.CppFlags,
|
||||
flags.Local.CppFlags = append(flags.Local.CppFlags,
|
||||
"-D_LIBCPP_DISABLE_AVAILABILITY")
|
||||
}
|
||||
|
||||
if !ctx.toolchain().Bionic() {
|
||||
flags.CppFlags = append(flags.CppFlags, "-nostdinc++")
|
||||
flags.Local.CppFlags = append(flags.Local.CppFlags, "-nostdinc++")
|
||||
flags.extraLibFlags = append(flags.extraLibFlags, "-nostdlib++")
|
||||
if ctx.Windows() {
|
||||
if stl.Properties.SelectedStl == "libc++_static" {
|
||||
@@ -231,9 +231,9 @@ func (stl *stl) flags(ctx ModuleContext, flags Flags) Flags {
|
||||
// Use SjLj exceptions for 32-bit. libgcc_eh implements SjLj
|
||||
// exception model for 32-bit.
|
||||
if ctx.Arch().ArchType == android.X86 {
|
||||
flags.CppFlags = append(flags.CppFlags, "-fsjlj-exceptions")
|
||||
flags.Local.CppFlags = append(flags.Local.CppFlags, "-fsjlj-exceptions")
|
||||
}
|
||||
flags.CppFlags = append(flags.CppFlags,
|
||||
flags.Local.CppFlags = append(flags.Local.CppFlags,
|
||||
// Disable visiblity annotations since we're using static
|
||||
// libc++.
|
||||
"-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
|
||||
@@ -243,23 +243,23 @@ func (stl *stl) flags(ctx ModuleContext, flags Flags) Flags {
|
||||
}
|
||||
} else {
|
||||
if ctx.Arch().ArchType == android.Arm {
|
||||
flags.LdFlags = append(flags.LdFlags, "-Wl,--exclude-libs,libunwind_llvm.a")
|
||||
flags.Local.LdFlags = append(flags.Local.LdFlags, "-Wl,--exclude-libs,libunwind_llvm.a")
|
||||
}
|
||||
}
|
||||
case "libstdc++":
|
||||
// Nothing
|
||||
case "ndk_system":
|
||||
ndkSrcRoot := android.PathForSource(ctx, "prebuilts/ndk/current/sources/cxx-stl/system/include")
|
||||
flags.CFlags = append(flags.CFlags, "-isystem "+ndkSrcRoot.String())
|
||||
flags.Local.CFlags = append(flags.Local.CFlags, "-isystem "+ndkSrcRoot.String())
|
||||
case "ndk_libc++_shared", "ndk_libc++_static":
|
||||
if ctx.Arch().ArchType == android.Arm {
|
||||
// Make sure the _Unwind_XXX symbols are not re-exported.
|
||||
flags.LdFlags = append(flags.LdFlags, "-Wl,--exclude-libs,libunwind.a")
|
||||
flags.Local.LdFlags = append(flags.Local.LdFlags, "-Wl,--exclude-libs,libunwind.a")
|
||||
}
|
||||
case "":
|
||||
// None or error.
|
||||
if !ctx.toolchain().Bionic() {
|
||||
flags.CppFlags = append(flags.CppFlags, "-nostdinc++")
|
||||
flags.Local.CppFlags = append(flags.Local.CppFlags, "-nostdinc++")
|
||||
flags.extraLibFlags = append(flags.extraLibFlags, "-nostdlib++")
|
||||
}
|
||||
default:
|
||||
|
Reference in New Issue
Block a user