Add c++-headers and c++-sources

This way, hidl-gen won't generate headers+sources multiple times.

Test: hidl implementations still link
Test: updated various interface roots
Bug: 38174080
Change-Id: Ibc036df4bda7e4f41eb92865fe3e47376a6a3fbd
diff --git a/main.cpp b/main.cpp
index 329096d..0118ece 100644
--- a/main.cpp
+++ b/main.cpp
@@ -88,6 +88,12 @@
     if (lang == "c++") {
         return ast->generateCpp(outputDir);
     }
+    if (lang == "c++-headers") {
+        return ast->generateCppHeaders(outputDir);
+    }
+    if (lang == "c++-sources") {
+        return ast->generateCppSources(outputDir);
+    }
     if (lang == "c++-impl") {
         return ast->generateCppImpl(outputDir);
     }
@@ -750,7 +756,7 @@
             coordinator,
             halFilegroupName,
             genSourceName,
-            "c++",
+            "c++-sources",
             packageInterfaces,
             importedPackagesHierarchy,
             [&pathPrefix](Formatter &out, const FQName &fqName) {
@@ -769,7 +775,7 @@
             coordinator,
             halFilegroupName,
             genHeaderName,
-            "c++",
+            "c++-headers",
             packageInterfaces,
             importedPackagesHierarchy,
             [&pathPrefix](Formatter &out, const FQName &fqName) {
@@ -1167,6 +1173,18 @@
         }
     },
 
+    {"c++-headers",
+     OutputHandler::NEEDS_DIR /* mOutputMode */,
+     validateForSource,
+     generationFunctionForFileOrPackage("c++-headers")
+    },
+
+    {"c++-sources",
+     OutputHandler::NEEDS_DIR /* mOutputMode */,
+     validateForSource,
+     generationFunctionForFileOrPackage("c++-sources")
+    },
+
     {"export-header",
      OutputHandler::NEEDS_FILE /* mOutputMode */,
      validateForExportHeader,