Be explicit about out file formats.

There was no explicit format for output into the source tree directly.

Test: update-makefiles.sh
Change-Id: I471f32e6b294ccf213181da0b8a5986620d4e62b
diff --git a/main.cpp b/main.cpp
index 9d3cedd..62f28e5 100644
--- a/main.cpp
+++ b/main.cpp
@@ -36,6 +36,7 @@
     enum OutputMode {
         NEEDS_DIR,
         NEEDS_FILE,
+        NEEDS_SRC, // for changes inside the source tree itself
         NOT_NEEDED
     } mOutputMode;
 
@@ -454,7 +455,7 @@
         const FQName &packageFQName,
         const char *hidl_gen,
         Coordinator *coordinator,
-        const std::string &) {
+        const std::string &outputPath) {
 
     CHECK(packageFQName.isValid() &&
           !packageFQName.isFullyQualified() &&
@@ -515,7 +516,7 @@
         return OK;
     }
 
-    std::string path = coordinator->getRootPath();
+    std::string path = outputPath;
     path.append(coordinator->getPackagePath(packageFQName, false /* relative */));
     path.append("Android.mk");
 
@@ -696,7 +697,7 @@
         const FQName &packageFQName,
         const char *hidl_gen,
         Coordinator *coordinator,
-        const std::string &) {
+        const std::string &outputPath) {
 
     CHECK(packageFQName.isValid() &&
           !packageFQName.isFullyQualified() &&
@@ -733,7 +734,7 @@
         ast->getImportedPackagesHierarchy(&importedPackagesHierarchy);
     }
 
-    std::string path = coordinator->getRootPath();
+    std::string path = outputPath;
     path.append(coordinator->getPackagePath(packageFQName, false /* relative */));
     path.append("Android.bp");
 
@@ -1229,13 +1230,13 @@
     },
 
     {"makefile",
-     OutputHandler::NOT_NEEDED /* mOutputMode */,
+     OutputHandler::NEEDS_SRC /* mOutputMode */,
      validateForMakefile,
      generateMakefileForPackage,
     },
 
     {"androidbp",
-     OutputHandler::NOT_NEEDED /* mOutputMode */,
+     OutputHandler::NEEDS_SRC /* mOutputMode */,
      validateForMakefile,
      generateAndroidBpForPackage,
     },
@@ -1398,6 +1399,14 @@
             }
             break;
         }
+        case OutputHandler::NEEDS_SRC:
+        {
+            if (outputPath.empty()) {
+                outputPath = rootPath;
+            }
+
+            break;
+        }
 
         default:
             outputPath.clear();  // Unused.