Introduce avf_build_flags_cc cc_defaults

These are similar to avf_build_rust_build flags, but for cc_* soong
modules.

In the immediate future this will be used for flag guarding
virtcpu-freq related changes to platform.dts.

This patch also adds avf_build_flags_cc as cc_defaults to all our
existing cc_* soong modules

Test: builds
Bug: 284369518
Change-Id: I19152675802548cd9efba30a40bccdbb14867fe1
diff --git a/Android.bp b/Android.bp
index 696a963..03bea5a 100644
--- a/Android.bp
+++ b/Android.bp
@@ -62,6 +62,27 @@
     },
 }
 
+soong_config_module_type {
+    name: "avf_flag_aware_cc_defaults",
+    module_type: "cc_defaults",
+    config_namespace: "ANDROID",
+    bool_variables: [
+        "release_avf_enable_virt_cpufreq",
+    ],
+    properties: [
+        "cflags",
+    ],
+}
+
+avf_flag_aware_cc_defaults {
+    name: "avf_build_flags_cc",
+    soong_config_variables: {
+        release_avf_enable_virt_cpufreq: {
+            cflags: ["-DAVF_ENABLE_VIRT_CPUFREQ=1"],
+        },
+    },
+}
+
 genrule_defaults {
     name: "dts_to_dtb",
     tools: ["dtc"],
diff --git a/apex/empty-payload-apk/Android.bp b/apex/empty-payload-apk/Android.bp
index e78daec..72ec392 100644
--- a/apex/empty-payload-apk/Android.bp
+++ b/apex/empty-payload-apk/Android.bp
@@ -18,6 +18,7 @@
 
 cc_library {
     name: "MicrodroidEmptyPayloadJniLib",
+    defaults: ["avf_build_flags_cc"],
     srcs: ["empty_binary.cpp"],
     shared_libs: ["libvm_payload#current"],
     installable: true,
diff --git a/authfs/tests/benchmarks/Android.bp b/authfs/tests/benchmarks/Android.bp
index 5ef01cc..5820cb4 100644
--- a/authfs/tests/benchmarks/Android.bp
+++ b/authfs/tests/benchmarks/Android.bp
@@ -29,6 +29,7 @@
 
 cc_binary {
     name: "measure_io",
+    defaults: ["avf_build_flags_cc"],
     srcs: [
         "src/measure_io.cpp",
     ],
diff --git a/compos/compos_key_helper/Android.bp b/compos/compos_key_helper/Android.bp
index 6b4b61e..7d27525 100644
--- a/compos/compos_key_helper/Android.bp
+++ b/compos/compos_key_helper/Android.bp
@@ -5,6 +5,7 @@
 
 cc_defaults {
     name: "compos_key_defaults",
+    defaults: ["avf_build_flags_cc"],
     apex_available: ["com.android.compos"],
 
     shared_libs: [
diff --git a/compos/verify/native/Android.bp b/compos/verify/native/Android.bp
index 70cb2ab..ac2fcfb 100644
--- a/compos/verify/native/Android.bp
+++ b/compos/verify/native/Android.bp
@@ -25,6 +25,7 @@
 
 cc_library_static {
     name: "libcompos_verify_native_cpp",
+    defaults: ["avf_build_flags_cc"],
     srcs: ["verify_native.cpp"],
     static_libs: ["libcompos_key"],
     shared_libs: [
diff --git a/demo_native/Android.bp b/demo_native/Android.bp
index 7b6967e..facb2bb 100644
--- a/demo_native/Android.bp
+++ b/demo_native/Android.bp
@@ -5,6 +5,7 @@
 
 cc_binary {
     name: "vm_demo_native",
+    defaults: ["avf_build_flags_cc"],
     srcs: ["main.cpp"],
     static_libs: [
         "libbase",
diff --git a/javalib/jni/Android.bp b/javalib/jni/Android.bp
index 6e2a129..24dece2 100644
--- a/javalib/jni/Android.bp
+++ b/javalib/jni/Android.bp
@@ -5,6 +5,7 @@
 
 cc_library_shared {
     name: "libvirtualizationservice_jni",
+    defaults: ["avf_build_flags_cc"],
     srcs: [
         "android_system_virtualmachine_VirtualizationService.cpp",
     ],
@@ -20,6 +21,7 @@
 
 cc_library_shared {
     name: "libvirtualmachine_jni",
+    defaults: ["avf_build_flags_cc"],
     srcs: [
         "android_system_virtualmachine_VirtualMachine.cpp",
     ],
diff --git a/launcher/Android.bp b/launcher/Android.bp
index c6873ce..9835fc9 100644
--- a/launcher/Android.bp
+++ b/launcher/Android.bp
@@ -5,6 +5,7 @@
 
 cc_binary {
     name: "microdroid_launcher",
+    defaults: ["avf_build_flags_cc"],
     srcs: ["main.cpp"],
     shared_libs: [
         "libbase",
diff --git a/libs/apkmanifest/Android.bp b/libs/apkmanifest/Android.bp
index e6fcbef..54c4f6c 100644
--- a/libs/apkmanifest/Android.bp
+++ b/libs/apkmanifest/Android.bp
@@ -4,6 +4,7 @@
 
 cc_library_shared {
     name: "libapkmanifest_native",
+    defaults: ["avf_build_flags_cc"],
     srcs: ["native/*.cpp"],
     shared_libs: [
         "libandroidfw",
diff --git a/microdroid/kdump/Android.bp b/microdroid/kdump/Android.bp
index ff73fdb..5d129f4 100644
--- a/microdroid/kdump/Android.bp
+++ b/microdroid/kdump/Android.bp
@@ -5,6 +5,7 @@
 
 cc_binary {
     name: "microdroid_kexec",
+    defaults: ["avf_build_flags_cc"],
     stem: "kexec_load",
     srcs: ["kexec.c"],
     installable: false,
@@ -14,6 +15,7 @@
 
 cc_binary {
     name: "microdroid_crashdump",
+    defaults: ["avf_build_flags_cc"],
     stem: "crashdump",
     srcs: ["crashdump.c"],
     static_executable: true,
diff --git a/microdroid/payload/Android.bp b/microdroid/payload/Android.bp
index 7e11de3..e67a6d5 100644
--- a/microdroid/payload/Android.bp
+++ b/microdroid/payload/Android.bp
@@ -5,6 +5,7 @@
 
 cc_defaults {
     name: "microdroid_metadata_default",
+    defaults: ["avf_build_flags_cc"],
     host_supported: true,
     srcs: [
         "metadata.proto",
diff --git a/pvmfw/Android.bp b/pvmfw/Android.bp
index ee77f14..110d46a 100644
--- a/pvmfw/Android.bp
+++ b/pvmfw/Android.bp
@@ -295,6 +295,7 @@
 // numbers defined in the ARM DT binding headers
 cc_object {
     name: "pvmfw_platform.dts.preprocessed",
+    defaults: ["avf_build_flags_cc"],
     header_libs: ["arm_dt_bindings_headers"],
     host_supported: true,
     srcs: [":pvmfw_platform.dts.renamed"],
diff --git a/tests/benchmark/Android.bp b/tests/benchmark/Android.bp
index 31fe0f6..c31c929 100644
--- a/tests/benchmark/Android.bp
+++ b/tests/benchmark/Android.bp
@@ -34,6 +34,7 @@
 
 cc_library_shared {
     name: "MicrodroidBenchmarkNativeLib",
+    defaults: ["avf_build_flags_cc"],
     srcs: ["src/native/*.cpp"],
     local_include_dirs: ["src/native/include"],
     static_libs: [
diff --git a/tests/benchmark/src/jni/Android.bp b/tests/benchmark/src/jni/Android.bp
index c2e1b7c..06de3e5 100644
--- a/tests/benchmark/src/jni/Android.bp
+++ b/tests/benchmark/src/jni/Android.bp
@@ -5,6 +5,7 @@
 
 cc_library_shared {
     name: "libiovsock_host_jni",
+    defaults: ["avf_build_flags_cc"],
     srcs: ["io_vsock_host_jni.cpp"],
     header_libs: ["jni_headers"],
     shared_libs: ["libbase"],
diff --git a/tests/testapk/Android.bp b/tests/testapk/Android.bp
index 10bbfb4..86172b0 100644
--- a/tests/testapk/Android.bp
+++ b/tests/testapk/Android.bp
@@ -68,6 +68,7 @@
 // (MicrodroidTestApp) can start a payload defined in the another app (MicrodroidVmShareApp).
 cc_defaults {
     name: "MicrodroidTestNativeLibDefaults",
+    defaults: ["avf_build_flags_cc"],
     srcs: ["src/native/testbinary.cpp"],
     stl: "libc++_static",
     header_libs: ["vm_payload_restricted_headers"],
@@ -99,12 +100,14 @@
 
 cc_library_shared {
     name: "MicrodroidTestNativeLibSub",
+    defaults: ["avf_build_flags_cc"],
     srcs: ["src/native/testlib.cpp"],
     stl: "libc++_static",
 }
 
 cc_library_shared {
     name: "MicrodroidIdleNativeLib",
+    defaults: ["avf_build_flags_cc"],
     srcs: ["src/native/idlebinary.cpp"],
     header_libs: ["vm_payload_headers"],
     stl: "libc++_static",
@@ -113,6 +116,7 @@
 // An empty payload missing AVmPayload_main
 cc_library_shared {
     name: "MicrodroidEmptyNativeLib",
+    defaults: ["avf_build_flags_cc"],
     srcs: ["src/native/emptybinary.cpp"],
     stl: "none",
 }
@@ -120,6 +124,7 @@
 // A payload that exits immediately on start
 cc_library_shared {
     name: "MicrodroidExitNativeLib",
+    defaults: ["avf_build_flags_cc"],
     srcs: ["src/native/exitbinary.cpp"],
     header_libs: ["vm_payload_headers"],
     stl: "libc++_static",
@@ -128,6 +133,7 @@
 // A payload which tries to link against libselinux, one of private libraries
 cc_library_shared {
     name: "MicrodroidPrivateLinkingNativeLib",
+    defaults: ["avf_build_flags_cc"],
     srcs: ["src/native/idlebinary.cpp"],
     header_libs: ["vm_payload_headers"],
     // HACK: linking against "libselinux" will embed libselinux.so into the apk
@@ -139,6 +145,7 @@
 // A payload that crashes immediately on start
 cc_library_shared {
     name: "MicrodroidCrashNativeLib",
+    defaults: ["avf_build_flags_cc"],
     srcs: ["src/native/crashbinary.cpp"],
     header_libs: ["vm_payload_headers"],
     stl: "libc++_static",
diff --git a/vm_payload/Android.bp b/vm_payload/Android.bp
index 286612c..cf6a1b2 100644
--- a/vm_payload/Android.bp
+++ b/vm_payload/Android.bp
@@ -63,6 +63,7 @@
 // Shared library for clients to link against.
 cc_library_shared {
     name: "libvm_payload",
+    defaults: ["avf_build_flags_cc"],
     shared_libs: [
         "libbinder_ndk",
         "libbinder_rpc_unstable",
@@ -84,6 +85,7 @@
 // declaration of AVmPayload_main().
 cc_library_headers {
     name: "vm_payload_headers",
+    defaults: ["avf_build_flags_cc"],
     apex_available: ["com.android.compos"],
     export_include_dirs: ["include"],
 }
@@ -91,6 +93,7 @@
 // Restricted headers for use by internal clients & associated tests.
 cc_library_headers {
     name: "vm_payload_restricted_headers",
+    defaults: ["avf_build_flags_cc"],
     header_libs: ["vm_payload_headers"],
     export_header_lib_headers: ["vm_payload_headers"],
     export_include_dirs: ["include-restricted"],
diff --git a/vmbase/Android.bp b/vmbase/Android.bp
index e682773..07e1b4c 100644
--- a/vmbase/Android.bp
+++ b/vmbase/Android.bp
@@ -41,6 +41,7 @@
 // Used by extra cc_library_static linked into the final ELF.
 cc_defaults {
     name: "vmbase_cc_defaults",
+    defaults: ["avf_build_flags_cc"],
     nocrt: true,
     no_libcrt: true,
     system_shared_libs: [],