Generate filegroup build rule for .hal files.
Remove vts driver/profiler build rule generation.
Bug: 34893894
Test: mmma system/tools/hidl
Change-Id: If4af3afd0c6f9bb39a9a80b387d403fc397a69e3
diff --git a/main.cpp b/main.cpp
index d7e65d2..ba4e7ba 100644
--- a/main.cpp
+++ b/main.cpp
@@ -644,223 +644,6 @@
out << "}\n\n";
}
-static void generateAndroidBpVtsGenSection(
- Formatter &out,
- const FQName &packageFQName,
- const char *hidl_gen,
- const char *vtsc,
- const std::string &vtsc_mode,
- const std::string &vtsc_type,
- Coordinator *coordinator,
- const std::string &genName,
- const char *language,
- const std::vector<FQName> &packageInterfaces,
- const std::set<FQName> &importedPackages,
- const std::function<void(Formatter&, const FQName)> outputFn) {
- out << "genrule {\n";
- out.indent();
- out << "name: \"" << genName << "\",\n"
- << "tools: [\"" << hidl_gen << "\", \"" << vtsc << "\"],\n";
-
- std::string package_dir_path = packageFQName.string().substr(
- 0, packageFQName.string().find("@"));
- replace(package_dir_path.begin(), package_dir_path.end(), '.', '/');
- package_dir_path += "/" + packageFQName.string().substr(
- packageFQName.string().find("@") + 1);
- if (package_dir_path.c_str()[package_dir_path.length() - 1] != '/') {
- package_dir_path += "/";
- }
-
- out << "cmd: \"$(location " << hidl_gen << ") -o $(genDir)"
- << " -L" << language << " ";
-
- generatePackagePathsSection(out, coordinator, packageFQName, importedPackages);
-
- out << packageFQName.string()
- << " && $(location vtsc) -m" << vtsc_mode << " -t" << vtsc_type
- << " -b$(genDir) " << package_dir_path
- << " $(genDir)/" << package_dir_path
- << "\",\n";
-
- out << "srcs: [\n";
- out.indent();
- for (const auto &fqName : packageInterfaces) {
- out << "\"" << fqName.name() << ".hal\",\n";
- }
- out.unindent();
- out << "],\n";
-
- out << "out: [\n";
- out.indent();
- for (const auto &fqName : packageInterfaces) {
- outputFn(out, fqName);
- }
- out.unindent();
- out << "],\n";
-
- out.unindent();
- out << "}\n\n";
-}
-
-static status_t generateAndroidBpForVtsPackage(
- Formatter& out,
- const std::set<FQName>& importedPackages,
- std::vector<FQName>& packageInterfaces,
- const FQName &packageFQName,
- const std::string &libraryName,
- const std::string &vtsCompileMode,
- const char *hidl_gen,
- Coordinator *coordinator) {
- const std::string genSourceName = libraryName + "_genc++";
- const std::string genHeaderName = libraryName + "_genc++_headers";
- const std::string pathPrefix =
- coordinator->convertPackageRootToPath(packageFQName) +
- coordinator->getPackagePath(packageFQName, true /* relative */);
- const char *vtsc = "vtsc";
-
- out << "\n";
-
- // Rule to generate the C++ source files
- generateAndroidBpVtsGenSection(
- out,
- packageFQName,
- hidl_gen,
- vtsc,
- vtsCompileMode,
- "SOURCE",
- coordinator,
- genSourceName,
- "vts",
- packageInterfaces,
- importedPackages,
- [&pathPrefix](Formatter &out, const FQName &fqName) {
- if (fqName.name() == "types") {
- out << "\"" << pathPrefix << "types.vts.cpp\",\n";
- } else {
- out << "\"" << pathPrefix << fqName.name().substr(1) << ".vts.cpp\",\n";
- }
- });
-
- // Rule to generate the C++ header files
- generateAndroidBpVtsGenSection(
- out,
- packageFQName,
- hidl_gen,
- vtsc,
- vtsCompileMode,
- "HEADER",
- coordinator,
- genHeaderName,
- "vts",
- packageInterfaces,
- importedPackages,
- [&pathPrefix](Formatter &out, const FQName &fqName) {
- if (fqName.name() == "types") {
- out << "\"" << pathPrefix << "types.vts.h\",\n";
- } else {
- out << "\"" << pathPrefix << fqName.name().substr(1) << ".vts.h\",\n";
- }
- });
-
- // C++ library definition
- out << "cc_library_shared {\n";
- out.indent();
- out << "name: \"" << libraryName << "\",\n"
- << "generated_sources: [\"" << genSourceName << "\"],\n"
- << "generated_headers: [\"" << genHeaderName << "\"],\n"
- << "export_generated_headers: [\"" << genHeaderName << "\"],\n"
- << "shared_libs: [\n";
-
- out.indent();
- if (vtsCompileMode =="DRIVER") {
- out << "\"libhidlbase\",\n"
- << "\"libhidltransport\",\n"
- << "\"libhwbinder\",\n"
- << "\"liblog\",\n"
- << "\"libutils\",\n"
- << "\"libcutils\",\n"
- << "\"libvts_common\",\n"
- << "\"libvts_datatype\",\n"
- << "\"libvts_measurement\",\n"
- << "\"libvts_multidevice_proto\",\n"
- << "\"libcamera_metadata\",\n"
- << "\"libprotobuf-cpp-full\",\n";
- } else if (vtsCompileMode == "PROFILER") {
- out << "\"libbase\",\n"
- << "\"libhidlbase\",\n"
- << "\"libhidltransport\",\n"
- << "\"libvts_profiling\",\n"
- << "\"libvts_multidevice_proto\",\n"
- << "\"libprotobuf-cpp-full\",\n";
- } else {
- fprintf(stderr,
- "ERROR: Unknow vts compile mode: %s. Aborting.\n",
- vtsCompileMode.c_str());
- return UNKNOWN_ERROR;
- }
- for (const auto &importedPackage : importedPackages) {
- out << "\"" << makeLibraryName(importedPackage) << "\",\n";
- }
- out << "\"" << makeLibraryName(packageFQName) << "\",\n";
- out.unindent();
-
- out << "],\n";
-
- if (vtsCompileMode == "DRIVER") {
- out << "export_shared_lib_headers: [\n";
- out.indent();
- out << "\"libhidlbase\",\n"
- << "\"libhidltransport\",\n"
- << "\"libhwbinder\",\n"
- << "\"libutils\",\n";
- for (const auto &importedPackage : importedPackages) {
- out << "\"" << makeLibraryName(importedPackage) << "\",\n";
- }
- out.unindent();
- out << "],\n";
- }
- out.unindent();
- out << "}\n";
-
- return OK;
-}
-
-static status_t generateAndroidBpForVtsDriverPackage(
- Formatter& out,
- const std::set<FQName>& importedPackages,
- std::vector<FQName>& packageInterfaces,
- const FQName &packageFQName,
- const char *hidl_gen,
- Coordinator *coordinator) {
- const std::string targetLibraryName = makeLibraryName(packageFQName);
- const std::string libraryName = targetLibraryName.substr(
- 0, targetLibraryName.find_last_of("@")) + ".vts.driver" +
- targetLibraryName.substr(targetLibraryName.find_last_of("@"));
- return generateAndroidBpForVtsPackage(out, importedPackages,
- packageInterfaces,
- packageFQName,
- libraryName,
- "DRIVER", hidl_gen,
- coordinator);
-}
-
-static status_t generateAndroidBpForVtsProfilerPackage(
- Formatter& out,
- const std::set<FQName>& importedPackages,
- std::vector<FQName>& packageInterfaces,
- const FQName &packageFQName,
- const char *hidl_gen,
- Coordinator *coordinator) {
- const std::string targetLibraryName = makeLibraryName(packageFQName);
- const std::string libraryName = targetLibraryName + "-vts.profiler";
- return generateAndroidBpForVtsPackage(out, importedPackages,
- packageInterfaces,
- packageFQName,
- libraryName,
- "PROFILER", hidl_gen,
- coordinator);
-}
-
static status_t generateAndroidBpForPackage(
const FQName &packageFQName,
const char *hidl_gen,
@@ -915,6 +698,7 @@
}
const std::string libraryName = makeLibraryName(packageFQName);
+ const std::string halFilegroupName = libraryName + "_hal";
const std::string genSourceName = libraryName + "_genc++";
const std::string genHeaderName = libraryName + "_genc++_headers";
const std::string pathPrefix =
@@ -925,6 +709,20 @@
out << "// This file is autogenerated by hidl-gen. Do not edit manually.\n\n";
+ // Rule to generate .hal filegroup
+ out << "filegroup {\n";
+ out.indent();
+ out << "name: \"" << halFilegroupName << "\",\n";
+ out << "srcs: [\n";
+ out.indent();
+ for (const auto &fqName : packageInterfaces) {
+ out << "\"" << fqName.name() << ".hal\",\n";
+ }
+ out.unindent();
+ out << "],\n";
+ out.unindent();
+ out << "}\n\n";
+
// Rule to generate the C++ source files
generateAndroidBpGenSection(
out,
@@ -1001,34 +799,6 @@
out << "}\n";
- // Skip generate build rule of driver/profiler for test hals.
- if (StringHelper::StartsWith(packageFQName.string(),
- "android.hardware.test")) {
- fprintf(stderr,
- "WARNING: %s does not yet have auto-generated VTS driver & profiler.\n",
- packageFQName.string().c_str());
- return OK;
- }
- // Generate Driver package.
- status_t status = generateAndroidBpForVtsDriverPackage(out,
- importedPackages,
- packageInterfaces,
- packageFQName,
- hidl_gen,
- coordinator);
- if (status != OK) {
- return status;
- }
- // Generate Profiler packages.
- status = generateAndroidBpForVtsProfilerPackage(out,
- importedPackages,
- packageInterfaces,
- packageFQName,
- hidl_gen,
- coordinator);
- if (status != OK) {
- return status;
- }
return OK;
}