blob: f538b42bb7ea6ae85adfa555d80c8e91bb7961f9 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/*
* The groovy project uses Gradle for building, and Gradle itself
* depends on a specific Groovy configuration to build Groovy projects.
*
* In this build, we first build a "bootstrap compiler", which provides
* a minimal Groovy runtime.
*
* But because Groovy also repackages some internal libraries, we use
* internally different jars for compiling Groovy with the bootstrapped
* Groovy than what is published externally.
*/
def internalPublication = Attribute.of("org.apache.groovy.internal", Boolean)
def makeInternal = { Configuration cnf ->
cnf.attributes {
it.attribute(internalPublication, true)
}
}
configurations {
pluginManager.withPlugin('java-library') {
makeInternal(apiElements)
}
makeInternal(runtimeElements)
makeInternal(compileClasspath)
makeInternal(runtimeClasspath)
makeInternal(testCompileClasspath)
makeInternal(testRuntimeClasspath)
pluginManager.withPlugin('java-test-fixtures') {
makeInternal(testFixturesCompileClasspath)
makeInternal(testFixturesRuntimeClasspath)
}
groovyCompilerClasspath {
canBeConsumed = false
canBeResolved = true
attributes {
attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category, Category.LIBRARY))
attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements, LibraryElements.JAR))
attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling, Bundling.EXTERNAL))
attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage, Usage.JAVA_RUNTIME))
attribute(internalPublication, true)
}
}
}
dependencies {
if (project != rootProject) {
groovyCompilerClasspath project(":")
}
}
tasks.withType(AbstractCompile).configureEach {
options.encoding = 'UTF-8'
// options.compilerArgs << '-Xlint:unchecked'
// options.compilerArgs << '-Xlint:deprecation'
// options.compilerArgs << '-Xlint:-options'
}
tasks.withType(GroovyCompile).configureEach {
groovyOptions.forkOptions.jvmArgs += ["-Dgroovy.antlr4.cache.threshold=100", "-Dgroovy.target.bytecode=${sharedConfiguration.groovyTargetBytecodeVersion.get()}" as String]
groovyOptions.fork(memoryMaximumSize: sharedConfiguration.groovycMaxMemory.get())
groovyClasspath = configurations.groovyCompilerClasspath
options.incremental = true
}