/////////////////////////////
//
// 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(":animated-vector-drawable", "graphics/drawable/animated")
includeProject(":appcompat-v7", "v7/appcompat")
includeProject(":asynclayoutinflater", "asynclayoutinflater")
includeProject(":car", "car")
includeProject(":cardview-v7", "v7/cardview")
includeProject(":collections", "collections")
includeProject(":coordinatorlayout", "coordinatorlayout")
includeProject(":cursoradapter", "cursoradapter")
includeProject(":customtabs", "customtabs")
includeProject(":customview", "customview")
includeProject(":documentfile", "documentfile")
includeProject(":drawerlayout", "drawerlayout")
includeProject(":exifinterface", "exifinterface")
includeProject(":gridlayout-v7", "v7/gridlayout")
includeProject(":heifwriter", "heifwriter")
includeProject(":interpolator", "interpolator")
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")
includeProject(":leanback-v17", "leanback")
includeProject(":loader", "loader")
includeProject(":localbroadcastmanager", "localbroadcastmanager")
includeProject(":mediarouter-v7", "v7/mediarouter")
includeProject(":palette-v7", "v7/palette")
includeProject(":percent", "percent")
includeProject(":preference-v7", "v7/preference")
includeProject(":preference-v14", "v14/preference")
includeProject(":preference-leanback-v17", "preference-leanback")
includeProject(":print", "print")
includeProject(":recommendation", "recommendation")
includeProject(":recyclerview-v7", "v7/recyclerview")
includeProject(":recyclerview-selection", "recyclerview-selection")
includeProject(":slices-core", "slices/core")
includeProject(":slices-view", "slices/view")
includeProject(":slices-builders", "slices/builders")
includeProject(":slidingpanelayout", "slidingpanelayout")
includeProject(":support-annotations", "annotations")
includeProject(":support-compat", "compat")
includeProject(":support-content", "content")
includeProject(":support-core-ui", "core-ui")
includeProject(":support-core-utils", "core-utils")
includeProject(":support-dynamic-animation", "dynamic-animation")
includeProject(":support-emoji", "emoji/core")
includeProject(":support-emoji-bundled", "emoji/bundled")
includeProject(":support-emoji-appcompat", "emoji/appcompat")
includeProject(":support-fragment", "fragment")
includeProject(":support-media-compat", "media-compat")
includeProject(":support-tv-provider", "tv-provider")
includeProject(":support-vector-drawable", "graphics/drawable/static")
includeProject(":support-v4", "v4")
includeProject(":support-v13", "v13")
includeProject(":swiperefreshlayout", "swiperefreshlayout")
includeProject(":textclassifier", "textclassifier")
includeProject(":transition", "transition")
includeProject(":viewpager", "viewpager")
includeProject(":viewpager2", "viewpager2")
includeProject(":wear", "wear")
includeProject(":webkit", "webkit")
includeProject(":webkit-codegen", "webkit-codegen")

/////////////////////////////
//
// 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-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(":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"))
includeProject(":webview-support-interfaces", new File(externalRoot, "webview_support_interfaces"))

///// FLATFOOT START

///// FLATFOOT END
