Make clang debug level configurable

The -g flag is controllable with CLANG_DEFAULT_DEBUG_LEVEL from -g0 to
-g3. The default remains -g

Test: Build with CLANG_DEFAULT_DEBUG_LEVEL=debug_level_1

Change-Id: I83613b8bff82e4381c3353db1d1b51502b1f77ca
diff --git a/BUILD.bazel b/BUILD.bazel
index ac1b3a3..b789127 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -511,3 +511,16 @@
         generated_config_constants.CLANG_DEFAULT_SHORT_VERSION,
     ),
 )
+
+string_flag(
+    name = "clang_default_debug_level",
+    build_setting_default = env.get("CLANG_DEFAULT_DEBUG_LEVEL") or "",
+    values = [
+        "debug_level_g",
+        "debug_level_0",
+        "debug_level_1",
+        "debug_level_2",
+        "debug_level_3",
+        "",
+    ],
+)
diff --git a/cc_toolchain_config.bzl b/cc_toolchain_config.bzl
index 8f4eacd..a74cedd 100644
--- a/cc_toolchain_config.bzl
+++ b/cc_toolchain_config.bzl
@@ -416,6 +416,9 @@
         "_product_variables": attr.label(
             default = "//build/bazel/product_config:product_vars",
         ),
+        "_clang_default_debug_level": attr.label(
+            default = "//prebuilts/clang/host/linux-x86:clang_default_debug_level",
+        ),
     },
     provides = [CcToolchainConfigInfo],
 )
diff --git a/cc_toolchain_features.bzl b/cc_toolchain_features.bzl
index c46f8e0..17b6914 100644
--- a/cc_toolchain_features.bzl
+++ b/cc_toolchain_features.bzl
@@ -225,6 +225,20 @@
     if ctx.attr._allow_unknown_warning_option[BuildSettingInfo].value:
         flags.extend(["-Wno-error=unknown-warning-option"])
 
+    clang_debug_env_value = ctx.attr._clang_default_debug_level[BuildSettingInfo].value
+    if clang_debug_env_value == "":
+        flags.extend(["-g"])
+    elif clang_debug_env_value == "debug_level_g":
+        flags.extend(["-g"])
+    elif clang_debug_env_value == "debug_level_0":
+        flags.extend(["-g0"])
+    elif clang_debug_env_value == "debug_level_1":
+        flags.extend(["-g1"])
+    elif clang_debug_env_value == "debug_level_2":
+        flags.extend(["-g2"])
+    elif clang_debug_env_value == "debug_level_3":
+        flags.extend(["-g3"])
+
     return flags
 
 def _compiler_flag_features(ctx, target_arch, target_os, flags = []):
diff --git a/cc_toolchain_features_env_based_flags_test.bzl b/cc_toolchain_features_env_based_flags_test.bzl
index 4ec3fec..7b82b18 100644
--- a/cc_toolchain_features_env_based_flags_test.bzl
+++ b/cc_toolchain_features_env_based_flags_test.bzl
@@ -145,6 +145,7 @@
         expected_flags = [
             "-ftrivial-auto-var-init=zero",
             "-Wno-unused-command-line-argument",
+            "-g",
         ],
     )