/*
 * Copyright 2016-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
 */

pluginManagement {
    plugins {
        id "net.ltgt.apt" version "0.21"
        id "me.champeau.gradle.jmh" version "0.5.0-rc-2"
    }
}

rootProject.name = 'kotlinx.coroutines'
enableFeaturePreview('GRADLE_METADATA')

def module(String path) {
    int i = path.lastIndexOf('/')
    def name = path.substring(i + 1)
    include(name)
    project(":$name").projectDir = file(path)
}
def prop = System.getProperty("build_snapshot_train")
ext.build_snapshot_train = prop != null && prop != ""
// ---------------------------

include('benchmarks')

include "kotlinx-coroutines-core"

module('kotlinx-coroutines-test')
module('kotlinx-coroutines-debug')
module('stdlib-stubs')
module('kotlinx-coroutines-bom')


module('integration/kotlinx-coroutines-guava')
module('integration/kotlinx-coroutines-jdk8')
module('integration/kotlinx-coroutines-slf4j')
module('integration/kotlinx-coroutines-play-services')

module('reactive/kotlinx-coroutines-reactive')
module('reactive/kotlinx-coroutines-reactor')
module('reactive/kotlinx-coroutines-jdk9')
module('reactive/kotlinx-coroutines-rx2')
module('reactive/kotlinx-coroutines-rx3')
module('ui/kotlinx-coroutines-android')
module('ui/kotlinx-coroutines-android/android-unit-tests')
module('ui/kotlinx-coroutines-javafx')
module('ui/kotlinx-coroutines-swing')

module('js/js-stub')
if (!build_snapshot_train) {
    module('js/example-frontend-js')
    include('site')
}

module('integration-testing')
