blob: acfdf97653e8c7d0bb9e97730b3b25eb2517b986 [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.
*/
// This file contains support tools for the Gradle build
// with regards to invoke dynamic support (indy)
rootProject.ext.indyCapable = {
boolean capable = true
try {
Class.forName('java.lang.invoke.MethodHandle')
} catch (e) {
capable = false
}
capable && !rootProject.hasProperty('skipIndy')
}
rootProject.ext.useIndy = {
boolean indy = false
// first, check if a system property activates indy support
indy |= System.hasProperty('indy') && Boolean.valueOf(System.getProperty('indy'))
// ultimately, check if the main project has an extension property setting indy to true
// which is the case if the build is started with -Pindy=true or during install/dist tasks
indy |= rootProject.hasProperty('indy') && (Boolean.valueOf(rootProject.indy))
indy && rootProject.indyCapable()
}
rootProject.ext.indyBanner = {
if (project==rootProject && useIndy()) {
logger.lifecycle '''
DM .N$?
$I?7OM.
.7+?II77MZ ,:~~
+I$7O$8? .M..DMMNNMMNZ.
ONDOMI. 7MMMMMMOO$I.
DOM87= ZMNM8NMI77$.
.MNDO?$8$? 8MMNMMMN7II.
MMMO. O$7Z. OI8?MDNNM$$$$7OM
M8 ZZ7$. MMMMMDD7I77I777MMMM.
ZZ$7$ DMM$N$ZNMZDMODNDM. DD
.Z$$I$$ .ZI777777II778 ?D.
8$$7I$I+ .$I7?I7II7D. ?Z
.O$$7I$78 N77O+??I?$. Z
=7$7777$7 . .=7NZ?I$7I+$. O
~:7$$7$7D+$~:=Z:=~++77Z$?IIZ~. N
$Z$7O8D8=Z8I7==I~I:+~OZ887$MOI$O .7
:O$I+~=?:O8?I$=++=:===Z$77ZN++$+~. Z.
:7$78ZZZZZ=ZZ$~?==~+DD$8O$OO$7+?:. $
.=~=+Z7I7?7I$+~=:~+~O~???77?~+??~ O
+=IZ7$7OI$=Z:~:~=8I?I?+$Z8++: N.
=$+8ZO$$==+=~=?=8$IIIIID$ZZ. Z
INDY ENABLED !
'''
}
}
if (useIndy()) {
gradle.taskGraph.whenReady { graph ->
graph.allTasks.findAll { it instanceof org.gradle.process.JavaForkOptions }.unique().each { task ->
logger.debug "Adding indy target to project ${task.project.name} task ${task.name}"
task.systemProperties 'groovy.target.indy': true
}
}
}