diff --git a/libraries/build.gradle b/libraries/build.gradle index 400de2f981c..5f1a0013af2 100644 --- a/libraries/build.gradle +++ b/libraries/build.gradle @@ -1,7 +1,7 @@ buildscript { - ext.kotlin_version = project.properties["deployVersion"] ?: "1.1-SNAPSHOT" + ext.kotlin_version = findProperty("deployVersion") ?: "1.1-SNAPSHOT" ext.kotlin_language_version = "1.1" - ext.kotlin_gradle_plugin_version = "1.1.2" + ext.kotlin_gradle_plugin_version = findProperty("kotlinGradlePluginVersion") ?: "1.1.2" repositories { mavenCentral() @@ -11,12 +11,16 @@ buildscript { } } -ext.JDK_16 = jdkPath("1.6") -ext.JDK_17 = jdkPath("1.7") -ext.JDK_18 = jdkPath("1.8") -ext.distDir = project.file("${rootDir}/../dist") -ext.distLibDir = project.file("${rootDir}/../dist/kotlinc/lib") -ext.bootstrapCompilerFile = project.file("$distDir/kotlin-compiler-for-maven.jar") +apply from: 'commonConfiguration.gradle' + +ext { + JDK_16 = jdkPath("1.6") + JDK_17 = jdkPath("1.7") + JDK_18 = jdkPath("1.8") + distDir = file("${rootDir}/../dist") + distLibDir = file("${rootDir}/../dist/kotlinc/lib") + bootstrapCompilerFile = file("$distDir/kotlin-compiler-for-maven.jar") +} allprojects { group = 'org.jetbrains.kotlin' @@ -54,180 +58,7 @@ task clean { } } -String jdkPath(String version) { - String varName = "JDK_${version.replace('.', '')}" - String path = System.getenv(varName) - if (path == null) throw new GradleException("Please set environment variable $varName to point to JDK $version installation") - return path -} - -static def configureJvmProject(Project project) { - project.configure(project) { - task sourcesJar(type: Jar, dependsOn: classes) { - classifier = 'sources' - from sourceSets.main.kotlin - } - - tasks.withType(JavaCompile) { - sourceCompatibility = 1.6 - targetCompatibility = 1.6 - options.fork = true - options.forkOptions.executable = "${JDK_16}/bin/javac" - } - - tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile) { - kotlinOptions.jdkHome = JDK_16 - } - - test { - executable = "$JDK_16/bin/java" - } - } -} - -static def manifestAttributes(Manifest manifest, Project project, String component = null) { - project.configure(manifest) { - attributes \ - 'Implementation-Vendor': 'JetBrains', - 'Implementation-Title': project.archivesBaseName, - 'Implementation-Version': project.version, - 'Build-Jdk': System.getProperty('java.version') - - if (component != null) { - attributes \ - 'Kotlin-Runtime-Component': component, - 'Kotlin-Version': project.kotlin_language_version - } - } -} - - -task preparePublication { - def properties = project.properties - - Map repositoryProviders = ['sonatype-nexus-staging' : 'sonatype', 'sonatype-nexus-snapshots' : 'sonatype'] - project.ext.isRelease = !project.version.toString().contains('-SNAPSHOT') - - String repo = properties['deploy-repo'] - String repoProvider = repositoryProviders.get(repo, repo) - project.ext.isSonatypePublish = repoProvider == 'sonatype' - project.ext.isSonatypeRelease = isSonatypePublish && isRelease - - project.ext['signing.keyId'] = project.properties['kotlin.key.name'] - project.ext['signing.password'] = project.properties['kotlin.key.passphrase'] - - String sonatypeSnapshotsUrl = (isSonatypePublish && !isRelease) ? "https://oss.sonatype.org/content/repositories/snapshots/" : null - - ext.repoUrl = properties["deployRepoUrl"] ?: sonatypeSnapshotsUrl ?: properties["deploy-url"] ?: "file://${rootProject.buildDir}/repo" - ext.username = properties["deployRepoUsername"] ?: properties["kotlin.${repoProvider}.user"] - ext.password = properties["deployRepoPassword"] ?: properties["kotlin.${repoProvider}.password"] - - doLast { - println("Deployment respository url: $repoUrl") - } -} - if (isSonatypeRelease) { println 'Applying configuration for sonatype release' apply from: 'prepareSonatypeStaging.gradle' -} - -static def configurePublishing(Project project) { - project.configure(project) { - apply plugin: 'maven' - apply plugin: 'signing' - - - signing { - required { (project.properties["signingRequired"] ?: project.isSonatypeRelease) } - sign configurations.archives - } - - signArchives { - enabled signing.required - } - - task dist(type: Copy, dependsOn: assemble) { - rename "-${java.util.regex.Pattern.quote(version)}", '' - into distLibDir - } - - uploadArchives { - def prepareTask = rootProject.preparePublication - dependsOn prepareTask - - doFirst { - repositories.mavenDeployer.repository.url = prepareTask.repoUrl - } - - repositories { - mavenDeployer { - beforeDeployment { MavenDeployment deployment -> - if (signing.required) - signing.signPom(deployment) - } - - repository(url: prepareTask.repoUrl) { - authentication(userName: prepareTask.username, password: prepareTask.password) - } - pom.project { - name "${project.group}:${project.name}" - packaging 'jar' - // optionally artifactId can be defined here - description project.description - url 'https://kotlinlang.org/' - licenses { - license { - name 'The Apache License, Version 2.0' - url 'http://www.apache.org/licenses/LICENSE-2.0.txt' - } - } - scm { - url 'https://github.com/JetBrains/kotlin' - connection 'scm:git:https://github.com/JetBrains/kotlin.git' - developerConnection 'scm:git:https://github.com/JetBrains/kotlin.git' - } - developers { - developer { - name 'Kotlin Team' - organization = 'JetBrains' - organizationUrl 'https://www.jetbrains.com' - } - } - } - } - } - } - - task publish(dependsOn: uploadArchives) - } - -} - -def createPreprocessorTask(Project project, def name, def sourceDir, def targetDir, def profile = "JS") { - return project.tasks.create("preprocessSources$name", JavaExec) { - inputs.dir(sourceDir) - outputs.dir(targetDir) - classpath = project.files(bootstrapCompilerFile) - main = "org.jetbrains.kotlin.preprocessor.PreprocessorCLI" - args = [sourceDir, targetDir, profile] - } -} - -static def createScriptTask(Project project, def name, Closure configureClosure = null) { - JavaExec task = project.tasks.create(name, JavaExec) - return project.configure(task) { - classpath = project.configurations.scriptCompile - main = "org.jetbrains.kotlin.cli.jvm.K2JVMCompiler" - args = [ - "-script", - "-version", - "-no-stdlib", - "-cp", project.configurations.scriptRuntime.asPath] - - if (configureClosure != null) { - configureClosure.delegate = it - configureClosure.call() - } - } -} +} \ No newline at end of file diff --git a/libraries/commonConfiguration.gradle b/libraries/commonConfiguration.gradle new file mode 100644 index 00000000000..8640e32edcb --- /dev/null +++ b/libraries/commonConfiguration.gradle @@ -0,0 +1,171 @@ +ext.jdkPath = { String version -> + String varName = "JDK_${version.replace('.', '')}" + String path = System.getenv(varName) + if (path == null) throw new GradleException("Please set environment variable $varName to point to JDK $version installation") + return path +} + +ext.configureJvmProject = { Project project -> + project.configure(project) { + task sourcesJar(type: Jar, dependsOn: classes) { + classifier = 'sources' + from sourceSets.main.kotlin + } + + tasks.withType(JavaCompile) { + sourceCompatibility = 1.6 + targetCompatibility = 1.6 + options.fork = true + options.forkOptions.executable = "${JDK_16}/bin/javac" + } + + tasks.withType(project.compileKotlin.class) { + kotlinOptions.jdkHome = JDK_16 + } + + test { + executable = "$JDK_16/bin/java" + } + } +} + +ext.manifestAttributes = { Manifest manifest, Project project, String component = null -> + project.configure(manifest) { + attributes \ + 'Implementation-Vendor': 'JetBrains', + 'Implementation-Title': project.archivesBaseName, + 'Implementation-Version': project.version, + 'Build-Jdk': System.getProperty('java.version') + + if (component != null) { + attributes \ + 'Kotlin-Runtime-Component': component, + 'Kotlin-Version': project.kotlin_language_version + } + } +} + +task preparePublication { + def properties = project.properties + + Map repositoryProviders = ['sonatype-nexus-staging' : 'sonatype', 'sonatype-nexus-snapshots' : 'sonatype'] + project.ext.isRelease = !project.version.toString().contains('-SNAPSHOT') + + String repo = properties['deploy-repo'] + String repoProvider = repositoryProviders.get(repo, repo) + project.ext.isSonatypePublish = repoProvider == 'sonatype' + project.ext.isSonatypeRelease = isSonatypePublish && isRelease + + project.ext['signing.keyId'] = project.properties['kotlin.key.name'] + project.ext['signing.password'] = project.properties['kotlin.key.passphrase'] + + String sonatypeSnapshotsUrl = (isSonatypePublish && !isRelease) ? "https://oss.sonatype.org/content/repositories/snapshots/" : null + + ext.repoUrl = properties["deployRepoUrl"] ?: sonatypeSnapshotsUrl ?: properties["deploy-url"] ?: "file://${rootProject.buildDir}/repo" + ext.username = properties["deployRepoUsername"] ?: properties["kotlin.${repoProvider}.user"] + ext.password = properties["deployRepoPassword"] ?: properties["kotlin.${repoProvider}.password"] + + doLast { + println("Deployment respository url: $repoUrl") + } +} + +ext.configurePublishing = { Project project -> + project.configure(project) { + apply plugin: 'maven' + apply plugin: 'signing' + + + signing { + required { (project.properties["signingRequired"] ?: project.isSonatypeRelease) } + sign configurations.archives + } + + signArchives { + enabled signing.required + } + + task dist(type: Copy, dependsOn: assemble) { + rename "-${java.util.regex.Pattern.quote(version)}", '' + into distLibDir + } + + uploadArchives { + def prepareTask = rootProject.preparePublication + dependsOn prepareTask + + doFirst { + repositories.mavenDeployer.repository.url = prepareTask.repoUrl + } + + repositories { + mavenDeployer { + beforeDeployment { MavenDeployment deployment -> + if (signing.required) + signing.signPom(deployment) + } + + repository(url: prepareTask.repoUrl) { + authentication(userName: prepareTask.username, password: prepareTask.password) + } + pom.project { + name "${project.group}:${project.name}" + packaging 'jar' + // optionally artifactId can be defined here + description project.description + url 'https://kotlinlang.org/' + licenses { + license { + name 'The Apache License, Version 2.0' + url 'http://www.apache.org/licenses/LICENSE-2.0.txt' + } + } + scm { + url 'https://github.com/JetBrains/kotlin' + connection 'scm:git:https://github.com/JetBrains/kotlin.git' + developerConnection 'scm:git:https://github.com/JetBrains/kotlin.git' + } + developers { + developer { + name 'Kotlin Team' + organization = 'JetBrains' + organizationUrl 'https://www.jetbrains.com' + } + } + } + } + } + } + + task publish(dependsOn: uploadArchives) + } + +} + +ext.createPreprocessorTask = { Project project, def name, def sourceDir, def targetDir, def profile = "JS" -> + return project.tasks.create("preprocessSources$name", JavaExec) { + inputs.dir(sourceDir) + outputs.dir(targetDir) + classpath = project.files(bootstrapCompilerFile) + main = "org.jetbrains.kotlin.preprocessor.PreprocessorCLI" + args = [sourceDir, targetDir, profile] + } +} + +ext.createScriptTask = { Project project, def name, Closure configureClosure = null -> + JavaExec task = project.tasks.create(name, JavaExec) + return project.configure(task) { + classpath = project.configurations.scriptCompile + main = "org.jetbrains.kotlin.cli.jvm.K2JVMCompiler" + args = [ + "-script", + "-version", + "-no-stdlib", + "-cp", project.configurations.scriptRuntime.asPath] + + if (configureClosure != null) { + configureClosure.delegate = it + configureClosure.call() + } + } +} diff --git a/libraries/examples/kotlin-gradle-subplugin-example/build.gradle b/libraries/examples/kotlin-gradle-subplugin-example/build.gradle new file mode 100644 index 00000000000..d2efa97b19c --- /dev/null +++ b/libraries/examples/kotlin-gradle-subplugin-example/build.gradle @@ -0,0 +1,20 @@ +apply plugin: 'kotlin' + +repositories { + mavenLocal() + jcenter() + maven { url 'http://repository.jetbrains.com/utils/' } +} + +dependencies { + compile project(':kotlin-gradle-plugin-api') + // Use this dependency instead when building apart from the other modules: + // compile "org.jetbrains.kotlin:kotlin-gradle-plugin-api:$kotlin_version" + + compile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version" + + compileOnly "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + compileOnly "org.jetbrains.kotlin:kotlin-compiler-embeddable:$kotlin_version" + + compileOnly "org.jetbrains.kotlin:gradle-api:1.6" +} \ No newline at end of file diff --git a/libraries/gradle/wrapper/gradle-wrapper.jar b/libraries/gradle/wrapper/gradle-wrapper.jar index d6e2637affb..0e77f2b43a5 100644 Binary files a/libraries/gradle/wrapper/gradle-wrapper.jar and b/libraries/gradle/wrapper/gradle-wrapper.jar differ diff --git a/libraries/gradle/wrapper/gradle-wrapper.properties b/libraries/gradle/wrapper/gradle-wrapper.properties index 28e0b340b5d..8364dbbca1c 100644 --- a/libraries/gradle/wrapper/gradle-wrapper.properties +++ b/libraries/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Fri Mar 24 05:31:35 MSK 2017 +#Fri Apr 28 16:02:26 MSK 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.4.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-bin.zip diff --git a/libraries/gradlew b/libraries/gradlew index 4ef3a871f2e..4453ccea33d 100755 --- a/libraries/gradlew +++ b/libraries/gradlew @@ -155,13 +155,14 @@ if $cygwin ; then fi # Escape application args -for s in "${@}" ; do - s=\"$s\" - APP_ARGS=$APP_ARGS" "$s -done +save ( ) { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") # Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- "$DEFAULT_JVM_OPTS" "$JAVA_OPTS" "$GRADLE_OPTS" "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then diff --git a/libraries/pom.xml b/libraries/pom.xml index 9be7ebadbd1..0fb67e6feda 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -91,16 +91,12 @@ tools/idl2k tools/kotlin-annotation-processing tools/kotlin-annotation-processing-maven - tools/kotlin-allopen tools/kotlin-maven-allopen - tools/kotlin-noarg tools/kotlin-maven-noarg tools/kotlin-sam-with-receiver-compiler-plugin tools/kotlin-source-sections-compiler-plugin tools/kotlin-script-util - tools/kotlin-gradle-plugin - tools/kotlin-gradle-plugin-api tools/kotlin-android-extensions tools/kotlin-maven-plugin-test @@ -108,13 +104,17 @@ examples/kotlin-java-example examples/js-example examples/kotlin-js-library-example - examples/kotlin-gradle-subplugin-example examples/browser-example examples/browser-example-with-library examples/kotlin-jsr223-local-example examples/kotlin-jsr223-daemon-local-eval-example - tools/kotlin-gradle-plugin-integration-tests + + + + + + diff --git a/libraries/tools/gradle-tools/build.gradle b/libraries/tools/gradle-tools/build.gradle new file mode 100644 index 00000000000..c56250234d0 --- /dev/null +++ b/libraries/tools/gradle-tools/build.gradle @@ -0,0 +1,50 @@ +buildscript { + ext.kotlin_version = findProperty("deployVersion") ?: "1.1-SNAPSHOT" + ext.kotlin_language_version = "1.1" + ext.kotlin_gradle_plugin_version = findProperty("kotlinGradlePluginVersion") ?: "1.1.1" + + repositories { + mavenCentral() + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlin_gradle_plugin_version}" + } +} + +ext.kotlin_root = findProperty("kotlinRoot") ?: "${rootProject.projectDir}/../../.." + +apply from: "${kotlin_root}/libraries/commonConfiguration.gradle" + +ext { + JDK_16 = jdkPath("1.6") + JDK_17 = jdkPath("1.7") + JDK_18 = jdkPath("1.8") + distDir = file("${kotlin_root}/dist") + distLibDir = file("${kotlin_root}/dist/kotlinc/lib") + bootstrapCompilerFile = file("$distDir/kotlin-compiler-for-maven.jar") +} + +allprojects { + group = 'org.jetbrains.kotlin' + version = "$kotlin_version" +} + +subprojects { + repositories { + mavenCentral() + } + + tasks.withType(org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile) { + compilerJarFile = bootstrapCompilerFile + } + + task javadocJar(type: Jar) { + classifier = 'javadoc' + } +} + +task clean { + doLast { + delete "${buildDir}/repo" + } +} \ No newline at end of file diff --git a/libraries/tools/gradle-tools/gradle/wrapper/gradle-wrapper.jar b/libraries/tools/gradle-tools/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000000..0e77f2b43a5 Binary files /dev/null and b/libraries/tools/gradle-tools/gradle/wrapper/gradle-wrapper.jar differ diff --git a/libraries/tools/gradle-tools/gradle/wrapper/gradle-wrapper.properties b/libraries/tools/gradle-tools/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000000..8364dbbca1c --- /dev/null +++ b/libraries/tools/gradle-tools/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Fri Apr 28 16:02:26 MSK 2017 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-bin.zip diff --git a/libraries/tools/gradle-tools/gradlew b/libraries/tools/gradle-tools/gradlew new file mode 100644 index 00000000000..4453ccea33d --- /dev/null +++ b/libraries/tools/gradle-tools/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save ( ) { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/libraries/tools/gradle-tools/gradlew.bat b/libraries/tools/gradle-tools/gradlew.bat new file mode 100644 index 00000000000..f9553162f12 --- /dev/null +++ b/libraries/tools/gradle-tools/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/libraries/tools/gradle-tools/settings.gradle b/libraries/tools/gradle-tools/settings.gradle new file mode 100644 index 00000000000..293ec66918b --- /dev/null +++ b/libraries/tools/gradle-tools/settings.gradle @@ -0,0 +1,13 @@ +include ':kotlin-gradle-plugin-api', + ':kotlin-gradle-plugin', + ':kotlin-gradle-plugin-integration-tests', + ':kotlin-allopen', + ':kotlin-noarg', + ':kotlin-gradle-subplugin-example' + +project(':kotlin-gradle-plugin-api').projectDir = file("../kotlin-gradle-plugin-api") +project(':kotlin-gradle-plugin').projectDir = file("../kotlin-gradle-plugin") +project(':kotlin-gradle-plugin-integration-tests').projectDir = file("../kotlin-gradle-plugin-integration-tests") +project(':kotlin-allopen').projectDir = file("../kotlin-allopen") +project(':kotlin-noarg').projectDir = file("../kotlin-noarg") +project(':kotlin-gradle-subplugin-example').projectDir = file("../../examples/kotlin-gradle-subplugin-example") \ No newline at end of file diff --git a/libraries/tools/kotlin-allopen/build.gradle b/libraries/tools/kotlin-allopen/build.gradle new file mode 100644 index 00000000000..127601d4819 --- /dev/null +++ b/libraries/tools/kotlin-allopen/build.gradle @@ -0,0 +1,36 @@ +apply plugin: 'kotlin' + +configureJvmProject(project) +configurePublishing(project) + +repositories { + mavenLocal() + jcenter() + maven { url 'http://repository.jetbrains.com/utils' } +} + +dependencies { + compile project(':kotlin-gradle-plugin-api') + + compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + compileOnly "org.jetbrains.kotlin:kotlin-compiler-embeddable:$kotlin_version" + + compileOnly 'org.jetbrains.kotlin:gradle-api:1.6' +} + +def originalSrc = "$kotlin_root/plugins/allopen/allopen-cli/src" +def targetSrc = file("$buildDir/allopen-target-src") + +task preprocessSources(type: Copy) { + from originalSrc + into targetSrc + filter { it.replaceAll('(? + if (!desc.parent) { // will match the outermost suite + def output = "Results: ${result.resultType} (${result.testCount} tests, ${result.successfulTestCount} successes, ${result.failedTestCount} failures, ${result.skippedTestCount} skipped)" + def startItem = '| ', endItem = ' |' + def repeatLength = startItem.length() + output.length() + endItem.length() + println('\n' + ('-' * repeatLength) + '\n' + startItem + output + endItem + '\n' + ('-' * repeatLength)) + } + } + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/build.gradle b/libraries/tools/kotlin-gradle-plugin/build.gradle new file mode 100644 index 00000000000..405c5fabf39 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/build.gradle @@ -0,0 +1,65 @@ +apply plugin: 'java' +apply plugin: 'kotlin' +apply plugin: 'groovy' +apply plugin: 'org.jetbrains.dokka' + +buildscript { + repositories { + jcenter() + } + dependencies { + classpath 'org.jetbrains.dokka:dokka-gradle-plugin:0.9.13' + } +} + +configureJvmProject(project) +configurePublishing(project) + +repositories { + jcenter() + mavenLocal() + maven { url 'http://repository.jetbrains.com/utils/' } +} + +dependencies { + compile project(':kotlin-gradle-plugin-api') + + compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + compile "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version" + compile "org.jetbrains.kotlin:kotlin-compiler-embeddable:$kotlin_version" + compile "org.jetbrains.kotlin:kotlin-compiler-runner:$kotlin_version" + compile "org.jetbrains.kotlin:kotlin-annotation-processing:$kotlin_version" + + compile 'commons-io:commons-io:2.4' + compile 'commons-lang:commons-lang:2.4' + + compileOnly 'com.android.tools.build:gradle:2.0.0' + compileOnly 'org.codehaus.groovy:groovy-all:2.3.9' + compileOnly 'org.jetbrains.kotlin:gradle-api:2.2' + + testCompile "org.jetbrains.kotlin:kotlin-build-common-test:$kotlin_version" + testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version" +} + +compileKotlin.dependsOn compileGroovy +compileGroovy.dependsOn.remove("compileJava") + +def groovyClassesDir = file("${buildDir}/mainGroovyClasses") +compileGroovy.destinationDir = groovyClassesDir +sourceSets.main.compileClasspath += files(groovyClassesDir) +compileGroovy.classpath = sourceSets.main.compileClasspath - files(groovyClassesDir) + +processResources { + expand(project.properties) +} + +jar { + from compileGroovy.destinationDir +} + +test.executable = "${JDK_18}/bin/java" + +dokka { + outputFormat = 'markdown' + includes = ["${projectDir}/Module.md"] +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/android/AndroidGradleWrapper.groovy b/libraries/tools/kotlin-gradle-plugin/src/main/groovy/org/jetbrains/kotlin/gradle/plugin/android/AndroidGradleWrapper.groovy similarity index 100% rename from libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/android/AndroidGradleWrapper.groovy rename to libraries/tools/kotlin-gradle-plugin/src/main/groovy/org/jetbrains/kotlin/gradle/plugin/android/AndroidGradleWrapper.groovy diff --git a/libraries/tools/kotlin-noarg/build.gradle b/libraries/tools/kotlin-noarg/build.gradle new file mode 100644 index 00000000000..ab02992ffcf --- /dev/null +++ b/libraries/tools/kotlin-noarg/build.gradle @@ -0,0 +1,42 @@ +apply plugin: 'kotlin' + +configureJvmProject(project) +configurePublishing(project) + +compileJava { + sourceCompatibility = 1.8 + targetCompatibility = 1.8 + options.fork = false +} + +repositories { + mavenLocal() + jcenter() + maven { url 'http://repository.jetbrains.com/utils' } +} + +dependencies { + compile project(':kotlin-gradle-plugin-api') + + compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + compileOnly "org.jetbrains.kotlin:kotlin-compiler-embeddable:$kotlin_version" + + compileOnly 'org.jetbrains.kotlin:gradle-api:1.6' +} + +def originalSrc = "$kotlin_root/plugins/noarg/noarg-cli/src" +def targetSrc = file("$buildDir/noarg-target-src") + +task preprocessSources(type: Copy) { + from originalSrc + into targetSrc + filter { it.replaceAll('(?