/////////////////////////////
//
// 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(":annotation", "annotations")
includeProject(":appcompat", "v7/appcompat")
includeProject(":asynclayoutinflater", "asynclayoutinflater")
includeProject(":browser", "browser")
includeProject(":car", "car")
includeProject(":cardview", "cardview")
includeProject(":collection", "collection")
includeProject(":collection-ktx", "collection/ktx")
includeProject(":contentpaging", "content")
includeProject(":coordinatorlayout", "coordinatorlayout")
includeProject(":core", "compat")
includeProject(":core-ktx", "core/ktx")
includeProject(":cursoradapter", "cursoradapter")
includeProject(":customview", "customview")
includeProject(":documentfile", "documentfile")
includeProject(":drawerlayout", "drawerlayout")
includeProject(":dynamicanimation", "dynamic-animation")
includeProject(":emoji", "emoji/core")
includeProject(":emoji-bundled", "emoji/bundled")
includeProject(":emoji-appcompat", "emoji/appcompat")
includeProject(":exifinterface", "exifinterface")
includeProject(":fragment", "fragment")
includeProject(":gridlayout", "gridlayout")
includeProject(":heifwriter", "heifwriter")
includeProject(":interpolator", "interpolator")
includeProject(":jetifier-core", "jetifier/jetifier/core")
includeProject(":jetifier-processor", "jetifier/jetifier/processor")
includeProject(":jetifier-gradle-plugin", "jetifier/jetifier/gradle-plugin")
includeProject(":jetifier-standalone", "jetifier/jetifier/standalone")
includeProject(":jetifier-preprocessor", "jetifier/jetifier/preprocessor")
includeProject(":leanback", "leanback")
includeProject(":leanback-preference", "leanback-preference")
includeProject(":loader", "loader")
includeProject(":localbroadcastmanager", "localbroadcastmanager")
includeProject(":media", "media")
includeProject(":media-widget", "media-widget")
includeProject(":mediarouter", "mediarouter")
includeProject(":palette", "palette")
includeProject(":palette-ktx", "palette/ktx")
includeProject(":percentlayout", "percent")
includeProject(":preference", "preference")
includeProject(":print", "print")
includeProject(":recommendation", "recommendation")
includeProject(":recyclerview", "v7/recyclerview")
includeProject(":recyclerview-selection", "recyclerview-selection")
includeProject(":slice-core", "slices/core")
includeProject(":slice-view", "slices/view")
includeProject(":slice-builders", "slices/builders")
includeProject(":slidingpanelayout", "slidingpanelayout")
includeProject(":fragment-ktx", "fragment/ktx")
includeProject(":swiperefreshlayout", "swiperefreshlayout")
includeProject(":textclassifier", "textclassifier")
includeProject(":transition", "transition")
includeProject(":tvprovider", "tv-provider")
includeProject(":vectordrawable", "graphics/drawable/static")
includeProject(":vectordrawable-animated", "graphics/drawable/animated")
includeProject(":viewpager", "viewpager")
includeProject(":viewpager2", "viewpager2")
includeProject(":wear", "wear")
includeProject(":webkit", "webkit")
includeProject(":webkit-codegen", "webkit-codegen")

/////////////////////////////
//
// Legacy
//
/////////////////////////////

includeProject(":legacy-support-core-ui", "legacy/core-ui")
includeProject(":legacy-support-core-utils", "legacy/core-utils")
includeProject(":legacy-support-v4", "legacy/v4")
includeProject(":legacy-support-v13", "legacy/v13")
includeProject(":legacy-preference-v14", "legacy/preference-v14")

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

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

includeProject(":support-animation-demos", new File(samplesRoot, "SupportAnimationDemos"))
includeProject(":support-app-navigation", new File(samplesRoot, "SupportAppNavigation"))
includeProject(":support-car-demos", new File(samplesRoot, "SupportCarDemos"))
includeProject(":support-content-demos", new File(samplesRoot, "SupportContentDemos"))
includeProject(":support-design-demos", new File(samplesRoot, "SupportDesignDemos"))
includeProject(":support-emoji-demos", new File(samplesRoot, "SupportEmojiDemos"))
includeProject(":support-leanback-demos", new File(samplesRoot, "SupportLeanbackDemos"))
//includeProject(":support-leanback-jank", new File(samplesRoot, "SupportLeanbackJank"))
includeProject(":support-media-demos", new File(samplesRoot, "SupportMediaDemos"))
includeProject(":support-percent-demos", new File(samplesRoot, "SupportPercentDemos"))
includeProject(":support-preference-demos", new File(samplesRoot, "SupportPreferenceDemos"))
includeProject(":support-slices-demos", new File(samplesRoot, "SupportSliceDemos"))
includeProject(":support-transition-demos", new File(samplesRoot, "SupportTransitionDemos"))
includeProject(":support-vector-drawable-demos", new File(samplesRoot, "SupportVectorDrawableDemos"))
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-wear-demos", new File(samplesRoot, "SupportWearDemos"))
includeProject(":viewpager2-demos", new File(samplesRoot, "ViewPager2Demos"))

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

includeProject(":internal-testutils", "testutils")
includeProject(":internal-testutils-ktx", "testutils-ktx")

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

includeProject(":support-media-compat-test-client", "media/version-compat-tests/current/client")
includeProject(":support-media-compat-test-client-previous", "media/version-compat-tests/previous/client")
includeProject(":support-media-compat-test-service", "media/version-compat-tests/current/service")
includeProject(":support-media-compat-test-service-previous", "media/version-compat-tests/previous/service")
includeProject(":support-media-compat-test-lib", "media/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"))
includeProject(":webview-support-interfaces", new File(externalRoot, "webview_support_interfaces"))

///// FLATFOOT START

///// FLATFOOT END
