/////////////////////////////
//
// Buildscript utils
//
/////////////////////////////


// Calling includeProject(name, filePath) is shorthand for:
//
//   include(name)
//   project(name).projectDir = new File(filePath)
//
// Note that <name> directly controls the Gradle project name, and also indirectly sets:
//   the project name in the IDE
//   the Maven artifactId
//
def includeProject(name, filePath) {
  settings.include(name)

  def file
  if (filePath instanceof String) {
    file = new File(filePath)
  } else {
    file = filePath
  }
  project(name).projectDir = file
}




/////////////////////////////
//
// Libraries
//
/////////////////////////////

includeProject(":support-annotations", "annotations")
includeProject(":support-compat", "compat")
includeProject(":support-media-compat", "media-compat")
includeProject(":support-core-ui", "core-ui")
includeProject(":support-fragment", "fragment")
includeProject(":support-core-utils", "core-utils")
includeProject(":support-v4", "v4")
includeProject(":appcompat-v7", "v7/appcompat")
includeProject(":gridlayout-v7", "v7/gridlayout")
includeProject(":mediarouter-v7", "v7/mediarouter")
includeProject(":palette-v7", "v7/palette")
includeProject(":recyclerview-v7", "v7/recyclerview")
includeProject(":recyclerview-selection", "recyclerview-selection")
includeProject(":cardview-v7", "v7/cardview")
includeProject(":preference-v7", "v7/preference")
includeProject(":preference-v14", "v14/preference")
includeProject(":preference-leanback-v17", "preference-leanback")
includeProject(":support-v13", "v13")
includeProject(":leanback-v17", "leanback")
includeProject(":percent", "percent")
includeProject(":customtabs", "customtabs")
includeProject(":recommendation", "recommendation")
includeProject(":support-vector-drawable", "graphics/drawable/static")
includeProject(":animated-vector-drawable", "graphics/drawable/animated")
includeProject(":transition", "transition")
includeProject(":support-dynamic-animation", "dynamic-animation")
includeProject(":viewpager2", "viewpager2")
includeProject(":exifinterface", "exifinterface")
includeProject(":wear", "wear")
includeProject(":support-tv-provider", "tv-provider")
includeProject(":support-emoji", "emoji/core")
includeProject(":support-emoji-bundled", "emoji/bundled")
includeProject(":support-emoji-appcompat", "emoji/appcompat")
includeProject(":support-content", "content")
includeProject(":car", "car")
includeProject(":webkit", "webkit")
includeProject(":slices-core", "slices/core")
includeProject(":slices-view", "slices/view")
includeProject(":slices-builders", "slices/builders")
includeProject(":textclassifier", "textclassifier")
includeProject(":webkit-codegen", "webkit-codegen")
includeProject(":jetifier-core", "jetifier/jetifier/core")
includeProject(":jetifier-gradle-plugin", "jetifier/jetifier/gradle-plugin")
includeProject(":jetifier-standalone", "jetifier/jetifier/standalone")
includeProject(":jetifier-preprocessor", "jetifier/jetifier/preprocessor")

/////////////////////////////
//
// Samples
//
/////////////////////////////

File samplesRoot = new File(rootDir, "samples")

includeProject(":support-content-demos", new File(samplesRoot, "SupportContentDemos"))
includeProject(":support-design-demos", new File(samplesRoot, "SupportDesignDemos"))
includeProject(":support-leanback-demos", new File(samplesRoot, "SupportLeanbackDemos"))
includeProject(":support-leanback-jank", new File(samplesRoot, "SupportLeanbackJank"))
includeProject(":support-percent-demos", new File(samplesRoot, "SupportPercentDemos"))
includeProject(":support-preference-demos", new File(samplesRoot, "SupportPreferenceDemos"))
includeProject(":support-transition-demos", new File(samplesRoot, "SupportTransitionDemos"))
includeProject(":support-v4-demos", new File(samplesRoot, "Support4Demos"))
includeProject(":support-v7-demos", new File(samplesRoot, "Support7Demos"))
includeProject(":support-v13-demos", new File(samplesRoot, "Support13Demos"))
includeProject(":support-vector-drawable-demos", new File(samplesRoot, "SupportVectorDrawableDemos"))
includeProject(":support-animation-demos", new File(samplesRoot, "SupportAnimationDemos"))
includeProject(":viewpager2-demos", new File(samplesRoot, "ViewPager2Demos"))
includeProject(":support-wear-demos", new File(samplesRoot, "SupportWearDemos"))
includeProject(":support-app-navigation", new File(samplesRoot, "SupportAppNavigation"))
includeProject(":support-emoji-demos", new File(samplesRoot, "SupportEmojiDemos"))
includeProject(":support-car-demos", new File(samplesRoot, "SupportCarDemos"))
includeProject(":support-slices-demos", new File(samplesRoot, "SupportSliceDemos"))

/////////////////////////////
//
// Testing libraries
//
/////////////////////////////

includeProject(":support-testutils", "testutils")

/////////////////////////////
//
// Applications and libraries for tests
//
/////////////////////////////

includeProject(":support-media-compat-test-client", "media-compat/version-compat-tests/current/client")
includeProject(":support-media-compat-test-client-previous", "media-compat/version-compat-tests/previous/client")
includeProject(":support-media-compat-test-service", "media-compat/version-compat-tests/current/service")
includeProject(":support-media-compat-test-service-previous", "media-compat/version-compat-tests/previous/service")
includeProject(":support-media-compat-test-lib", "media-compat/version-compat-tests/lib")

/////////////////////////////
//
// External
//
/////////////////////////////

apply(from: "include-composite-deps.gradle")
File externalRoot = new File(rootDir, "../../external")

includeProject(":noto-emoji-compat", new File(externalRoot, "noto-fonts/emoji-compat"))

///// FLATFOOT START

///// FLATFOOT END
