buildSrc/build.gradle no longer recursively setting out dir for subprojects

to be more compatible with project isolation

Bug: 191913559
Test: Treehugger runs busytown/*.sh
Test: Run `./gradlew :help -Dorg.gradle.unsafe.isolated-projects=true --clean` and see that some warnings about buildSrc are gone

Change-Id: Ifc3450673fd255a9717f59f0124295b7bc2dd41b
diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle
index d61cf22..9353024 100644
--- a/buildSrc/build.gradle
+++ b/buildSrc/build.gradle
@@ -17,7 +17,7 @@
 }
 
 apply from: "out.gradle"
-init.chooseOutDir()
+init.chooseBuildSrcBuildDir()
 
 ext.supportRootFolder = project.projectDir.getParentFile()
 apply from: "repos.gradle"
diff --git a/buildSrc/jetpad-integration/build.gradle b/buildSrc/jetpad-integration/build.gradle
index fc0c5cc..6941452c 100644
--- a/buildSrc/jetpad-integration/build.gradle
+++ b/buildSrc/jetpad-integration/build.gradle
@@ -4,3 +4,6 @@
     sourceCompatibility = JavaVersion.VERSION_11
     targetCompatibility = JavaVersion.VERSION_11
 }
+
+apply from: "../out.gradle"
+init.chooseBuildSrcBuildDir()
diff --git a/buildSrc/out.gradle b/buildSrc/out.gradle
index 0ca9069..e0f12c2 100644
--- a/buildSrc/out.gradle
+++ b/buildSrc/out.gradle
@@ -39,17 +39,23 @@
     return new Tuple(outDir, buildSrcOut)
 }
 
-def chooseOutDir(subdir = "") {
+// Ideally this function would just be chooseBuildDir, but Gradle doesn't include the text ":buildSrc" in the project path
+def chooseBuildSrcBuildDir(subdir = "") {
     def (outDir, buildSrcOut) = getOutDir(subdir)
     project.ext.buildSrcOut = buildSrcOut
     project.ext.outDir = outDir
-    buildDir = new File(outDir, "$project.name/build")
-                .getCanonicalFile()
+    def pathAsFilepath = project.path.replace(":", "").replaceAll(":", "/")
+    project.layout.buildDirectory.set(new File(buildSrcOut, "$pathAsFilepath/build").getCanonicalFile())
+}
+
+def chooseOutDir(subdir = "") {
+    chooseBuildSrcBuildDir()
     subprojects {
         // Change buildDir first so that all plugins pick up the new value.
-        project.buildDir = new File("$project.parent.buildDir/../$project.name/build")
+        project.layout.buildDirectory.set(new File("$project.parent.buildDir/../$project.name/build"))
     }
 }
 
 ext.init.getOutDir = this.&getOutDir
 ext.init.chooseOutDir = this.&chooseOutDir
+ext.init.chooseBuildSrcBuildDir = this.&chooseBuildSrcBuildDir
diff --git a/buildSrc/shared-dependencies.gradle b/buildSrc/shared-dependencies.gradle
index 96189f6..403bb79 100644
--- a/buildSrc/shared-dependencies.gradle
+++ b/buildSrc/shared-dependencies.gradle
@@ -1,6 +1,8 @@
 // This file applies dependencies common to projects in buildSrc
 
 apply from: "${buildscript.sourceFile.parent}/kotlin-dsl-dependency.gradle"
+// copy findGradleKotlinDsl to a local variable: https://github.com/gradle/gradle/issues/26057
+def findGradleKotlinDsl = project.findGradleKotlinDsl
 dependencies {
 
     // Gradle APIs
diff --git a/buildSrc/shared.gradle b/buildSrc/shared.gradle
index 060ae08..f907dd2 100644
--- a/buildSrc/shared.gradle
+++ b/buildSrc/shared.gradle
@@ -17,6 +17,8 @@
 dependencies {
     implementation(project(":jetpad-integration"))
 }
+apply from: "../out.gradle"
+init.chooseBuildSrcBuildDir()
 
 apply from: "../shared-dependencies.gradle"