diff --git a/cc/stl.go b/cc/stl.go index 8eee6124d..9dc8107e5 100644 --- a/cc/stl.go +++ b/cc/stl.go @@ -17,6 +17,7 @@ package cc import ( "android/soong/android" "fmt" + "strconv" ) func getNdkStlFamily(m *Module) string { @@ -110,6 +111,26 @@ func (stl *stl) begin(ctx BaseModuleContext) { }() } +func needsLibAndroidSupport(ctx BaseModuleContext) bool { + versionStr, err := normalizeNdkApiLevel(ctx, ctx.sdkVersion(), ctx.Arch()) + if err != nil { + ctx.PropertyErrorf("sdk_version", err.Error()) + } + + if versionStr == "current" { + return false + } + + version, err := strconv.Atoi(versionStr) + if err != nil { + panic(fmt.Sprintf( + "invalid API level returned from normalizeNdkApiLevel: %q", + versionStr)) + } + + return version < 21 +} + func (stl *stl) deps(ctx BaseModuleContext, deps Deps) Deps { switch stl.Properties.SelectedStl { case "libstdc++": @@ -141,7 +162,9 @@ func (stl *stl) deps(ctx BaseModuleContext, deps Deps) Deps { } else { deps.StaticLibs = append(deps.StaticLibs, stl.Properties.SelectedStl, "ndk_libc++abi") } - deps.StaticLibs = append(deps.StaticLibs, "ndk_libandroid_support") + if needsLibAndroidSupport(ctx) { + deps.StaticLibs = append(deps.StaticLibs, "ndk_libandroid_support") + } if ctx.Arch().ArchType == android.Arm { deps.StaticLibs = append(deps.StaticLibs, "ndk_libunwind") }