Make genrule export_include_dirs more consistent
Previously, genrule export_include_dirs always added ModuleDir to
exported include dirs when export_include_dirs is set but not when
export_include_dirs is not set. Now when export_include_dirs is set, we
also export the directory without the additional ModuleDir subdir.
Test: genrule go tests
Test: set export_include_dirs and test
Change-Id: I46e860b2c20c1a96bddd14367d7fa737d901994d
diff --git a/genrule/genrule_test.go b/genrule/genrule_test.go
index 7c17db1..387a0f9 100644
--- a/genrule/genrule_test.go
+++ b/genrule/genrule_test.go
@@ -811,6 +811,49 @@
result.ModuleForTests("gen_all", "").Module().(*useSource).srcs)
}
+func TestGenruleInterface(t *testing.T) {
+ result := android.GroupFixturePreparers(
+ prepareForGenRuleTest,
+ android.FixtureMergeMockFs(android.MockFS{
+ "package-dir/Android.bp": []byte(`
+ genrule {
+ name: "module-name",
+ cmd: "mkdir -p $(genDir) && cat $(in) >> $(genDir)/$(out)",
+ srcs: [
+ "src/foo.proto",
+ ],
+ out: ["proto.h", "bar/proto.h"],
+ export_include_dirs: [".", "bar"],
+ }
+ `),
+ }),
+ ).RunTest(t)
+
+ exportedIncludeDirs := []string{
+ "out/soong/.intermediates/package-dir/module-name/gen/package-dir",
+ "out/soong/.intermediates/package-dir/module-name/gen",
+ "out/soong/.intermediates/package-dir/module-name/gen/package-dir/bar",
+ "out/soong/.intermediates/package-dir/module-name/gen/bar",
+ }
+ gen := result.Module("module-name", "").(*Module)
+
+ android.AssertPathsRelativeToTopEquals(
+ t,
+ "include path",
+ exportedIncludeDirs,
+ gen.GeneratedHeaderDirs(),
+ )
+ android.AssertPathsRelativeToTopEquals(
+ t,
+ "files",
+ []string{
+ "out/soong/.intermediates/package-dir/module-name/gen/proto.h",
+ "out/soong/.intermediates/package-dir/module-name/gen/bar/proto.h",
+ },
+ gen.GeneratedSourceFiles(),
+ )
+}
+
func TestGenSrcsWithNonRootAndroidBpOutputFiles(t *testing.T) {
result := android.GroupFixturePreparers(
prepareForGenRuleTest,