Merge "Do not hardcode default/experimental c{pp}std" am: ace70d857e
am: 72627266b9
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/2106991 Change-Id: Idc6f6c058d2d1b1e5cd930adb9be52a8a33397b5 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -444,32 +444,33 @@ func parseSrcs(ctx android.BazelConversionPathContext, props *BaseCompilerProper
|
||||
return bazel.AppendBazelLabelLists(allSrcsLabelList, generatedSrcsLabelList), anySrcs
|
||||
}
|
||||
|
||||
func bp2buildResolveCppStdValue(c_std *string, cpp_std *string, gnu_extensions *bool) (*string, *string) {
|
||||
var cStdVal, cppStdVal string
|
||||
func bp2buildStdVal(std *string, prefix string, useGnu bool) *string {
|
||||
defaultVal := prefix + "_std_default"
|
||||
// If c{,pp}std properties are not specified, don't generate them in the BUILD file.
|
||||
// Defaults are handled by the toolchain definition.
|
||||
// However, if gnu_extensions is false, then the default gnu-to-c version must be specified.
|
||||
if cpp_std != nil {
|
||||
cppStdVal = parseCppStd(cpp_std)
|
||||
} else if gnu_extensions != nil && !*gnu_extensions {
|
||||
cppStdVal = "c++17"
|
||||
}
|
||||
if c_std != nil {
|
||||
cStdVal = parseCStd(c_std)
|
||||
} else if gnu_extensions != nil && !*gnu_extensions {
|
||||
cStdVal = "c99"
|
||||
stdVal := proptools.StringDefault(std, defaultVal)
|
||||
if stdVal == "experimental" || stdVal == defaultVal {
|
||||
if stdVal == "experimental" {
|
||||
stdVal = prefix + "_std_experimental"
|
||||
}
|
||||
if !useGnu {
|
||||
stdVal += "_no_gnu"
|
||||
}
|
||||
} else if !useGnu {
|
||||
stdVal = gnuToCReplacer.Replace(stdVal)
|
||||
}
|
||||
|
||||
cStdVal, cppStdVal = maybeReplaceGnuToC(gnu_extensions, cStdVal, cppStdVal)
|
||||
var c_std_prop, cpp_std_prop *string
|
||||
if cStdVal != "" {
|
||||
c_std_prop = &cStdVal
|
||||
}
|
||||
if cppStdVal != "" {
|
||||
cpp_std_prop = &cppStdVal
|
||||
if stdVal == defaultVal {
|
||||
return nil
|
||||
}
|
||||
return &stdVal
|
||||
}
|
||||
|
||||
return c_std_prop, cpp_std_prop
|
||||
func bp2buildResolveCppStdValue(c_std *string, cpp_std *string, gnu_extensions *bool) (*string, *string) {
|
||||
useGnu := useGnuExtensions(gnu_extensions)
|
||||
|
||||
return bp2buildStdVal(c_std, "c", useGnu), bp2buildStdVal(cpp_std, "cpp", useGnu)
|
||||
}
|
||||
|
||||
// packageFromLabel extracts package from a fully-qualified or relative Label and whether the label
|
||||
|
@@ -295,8 +295,12 @@ func addToModuleList(ctx ModuleContext, key android.OnceKey, module string) {
|
||||
getNamedMapForConfig(ctx.Config(), key).Store(module, true)
|
||||
}
|
||||
|
||||
func useGnuExtensions(gnuExtensions *bool) bool {
|
||||
return proptools.BoolDefault(gnuExtensions, true)
|
||||
}
|
||||
|
||||
func maybeReplaceGnuToC(gnuExtensions *bool, cStd string, cppStd string) (string, string) {
|
||||
if gnuExtensions != nil && *gnuExtensions == false {
|
||||
if !useGnuExtensions(gnuExtensions) {
|
||||
cStd = gnuToCReplacer.Replace(cStd)
|
||||
cppStd = gnuToCReplacer.Replace(cppStd)
|
||||
}
|
||||
|
@@ -370,6 +370,11 @@ func init() {
|
||||
exportedVars.ExportStringListStaticVariable("CommonGlobalCppflags", commonGlobalCppflags)
|
||||
exportedVars.ExportStringListStaticVariable("ExternalCflags", extraExternalCflags)
|
||||
|
||||
exportedVars.ExportString("CStdVersion", CStdVersion)
|
||||
exportedVars.ExportString("CppStdVersion", CppStdVersion)
|
||||
exportedVars.ExportString("ExperimentalCStdVersion", ExperimentalCStdVersion)
|
||||
exportedVars.ExportString("ExperimentalCppStdVersion", ExperimentalCppStdVersion)
|
||||
|
||||
// Everything in these lists is a crime against abstraction and dependency tracking.
|
||||
// Do not add anything to this list.
|
||||
commonGlobalIncludes := []string{
|
||||
|
Reference in New Issue
Block a user