| /* |
| * 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 |
| } |
| } |
| } |