< prev index next >
./build.gradle
Print this page
rev 10149 : 8201553: Update FX build to use gradle 4.8
Reviewed-by:
@@ -767,34 +767,27 @@
logger.warn("NUM_COMPILE_THREADS was specified as '$NUM_COMPILE_THREADS' which is less than the minimum value of 1. " +
"Building with a value of 1 instead.")
NUM_COMPILE_THREADS = 1
}
-// Check that Gradle 1.8 is in use.
-if (gradle.gradleVersion != "1.8") {
+// Check for Gradle 4.8, error if < 4.8.
+if (gradle.gradleVersion != "4.8") {
def ver = gradle.gradleVersion.split("[\\.]");
def gradleMajor = Integer.parseInt(ver[0]);
- def gradleMinor = Integer.parseInt(ver[1]);
+ def gradleMinor = Integer.parseInt(ver[1].split("[^0-9]")[0]);
def err = "";
- if (gradleMajor == 1) {
- if (gradleMinor < 8) {
- err = "Gradle version too old: ${gradle.gradleVersion}; must be at least 1.8"
- }
-
- // Blacklisted versions of gradle
- if (gradleMinor == 11) {
- err = "JavaFX fails to build with Gradle ${gradle.gradleVersion}; supported version is 1.8"
- }
+ if (gradleMajor < 4 || (gradleMajor == 4 && gradleMinor < 8)) {
+ err = "Gradle version too old: ${gradle.gradleVersion}; must be at least 4.8"
}
if (IS_GRADLE_VERSION_CHECK && err != "") {
fail(err);
}
logger.warn("*****************************************************************");
logger.warn("Unsupported gradle version $gradle.gradleVersion in use.");
- logger.warn("Only version 1.8 is supported. Use this version at your own risk");
+ logger.warn("Only version 4.8 is supported. Use this version at your own risk");
if ( err != "") logger.warn(err);
logger.warn("*****************************************************************");
}
/******************************************************************************
@@ -804,10 +797,11 @@
* Log some of the settings we've determined. We could log more here, it *
* doesn't really hurt. *
* *
*****************************************************************************/
+logger.quiet("gradle.gradleVersion: $gradle.gradleVersion")
logger.quiet("OS_NAME: $OS_NAME")
logger.quiet("OS_ARCH: $OS_ARCH")
logger.quiet("JAVA_HOME: $JAVA_HOME")
logger.quiet("JDK_HOME: $JDK_HOME")
logger.quiet("java.runtime.version: ${javaRuntimeVersion}")
@@ -905,16 +899,16 @@
}
def javahTask = project.task("javah${t.capital}${capitalName}", type: JavaHeaderTask, dependsOn: project.classes, group: "Build") {
description = "Generates JNI Headers for ${name} for ${t.name}"
if (properties.javahSource == null) {
- source(project.sourceSets.main.output.classesDir)
+ source(project.sourceSets.main.java.outputDir)
} else {
source(properties.javahSource)
}
if (properties.javahClasspath == null) {
- classpath = project.files(project.sourceSets.main.output.classesDir)
+ classpath = project.files(project.sourceSets.main.java.outputDir)
classpath += project.sourceSets.main.compileClasspath
} else {
classpath = project.files(properties.javahClasspath)
}
output = headerDir
@@ -976,11 +970,11 @@
void addJSL(Project project, String name, String pkg, Closure compile) {
def lowerName = name.toLowerCase()
def compileCompilers = project.task("compile${name}Compilers", type: JavaCompile, dependsOn: project.compileJava) {
description = "Compile the $name JSL Compilers"
- classpath = project.files(project.sourceSets.main.output.classesDir) +
+ classpath = project.files(project.sourceSets.main.java.outputDir) +
rootProject.BUILD_SRC +
project.configurations.antlr3
source = [project.file("src/main/jsl-$lowerName")]
destinationDir = project.file("$project.buildDir/classes/jsl-compilers/$lowerName")
}
@@ -996,11 +990,11 @@
}
}
project.task("compile${name}JavaShaders", type: JavaCompile, dependsOn: generateShaders) {
description = "Compile the Java $name JSL shaders"
- classpath = project.files(project.sourceSets.main.output.classesDir) + rootProject.BUILD_SRC
+ classpath = project.files(project.sourceSets.main.java.outputDir) + rootProject.BUILD_SRC
source = [project.file("$project.buildDir/generated-src/jsl-$lowerName")]
destinationDir = project.file("$project.buildDir/classes/jsl-$lowerName")
}
def compileHLSLShaders = project.task("compile${name}HLSLShaders", dependsOn: generateShaders, type: CompileHLSLTask) {
@@ -1459,24 +1453,24 @@
javaexec {
executable = JAVA
workingDir = "modules/graphics"
main = settings.generator
classpath = configurations.compile + configurations.antlr3
- classpath += files("$buildDir/classes/main")
+ classpath += files("$buildDir/classes/java/main")
classpath += files("$buildDir/classes/jsl-compilers/decora")
args = ["-i", sourceDir, "-o", destinationDir, "-t", "-pkg", "com/sun/scenario/effect", "$settings.outputs", "$settings.fileName"]
jvmArgs "-Djava.ext.dirs="
}
}
}
task generateDecoraNativeHeaders(type: JavaHeaderTask, dependsOn: compileDecoraJavaShaders) {
description = "Generates JNI Headers for Decora SSE Natives"
source file("$buildDir/classes/jsl-decora")
- source file("$buildDir/classes/main")
+ source file("$buildDir/classes/java/main")
include("com/sun/scenario/effect/impl/sw/sse/*");
- classpath = files("$buildDir/classes/main", "$buildDir/classes/jsl-decora")
+ classpath = files("$buildDir/classes/java/main", "$buildDir/classes/jsl-decora")
output = file("$buildDir/generated-src/headers/jsl-decora")
}
task nativeDecora(dependsOn: compileDecoraHLSLShaders, group: "Build") {
description = "Generates JNI headers, compiles, and builds native dynamic library for Decora"
@@ -1567,11 +1561,11 @@
project.cleanNativeAllTask.dependsOn cleanNativeDecora
assemble.dependsOn nativeDecora
processResources.dependsOn processDecoraShaders, processPrismShaders
test {
- def cssDir = file("$buildDir/classes/main/javafx")
+ def cssDir = file("$buildDir/classes/java/main/javafx")
jvmArgs "-Djava.ext.dirs=", "-Djavafx.toolkit=com.sun.javafx.pgstub.StubToolkit",
"-DCSS_META_DATA_TEST_DIR=$cssDir"
enableAssertions = true
testLogging.exceptionFormat = "full"
scanForTestClasses = false
@@ -1582,11 +1576,12 @@
}
// To enable the IDEs to all be happy (no red squiggles) we need to have the libraries
// available in some known location. Maybe in the future the Gradle plugins to each
// of the IDEs will be good enough that we won't need this hack anymore.
- classes << {
+ classes {
+ doLast {
// Copy all of the download libraries to the libs directory for the sake of the IDEs
File libsDir = rootProject.file("build/libs");
// In some IDEs (Eclipse for example), touching these libraries cauese a full build
// within the IDE. When gradle is used outside of the IDE, for example to build the
@@ -1617,10 +1612,11 @@
includeEmptyDirs = false
rename ".*swt.*jar", "swt-debug\\.jar"
}
}
}
+ }
}
project(":controls") {
dependencies {
compile BUILD_SRC, project(":base"), project(":graphics")
@@ -1628,19 +1624,20 @@
testCompile project(":graphics").sourceSets.test.output
testCompile project(":base").sourceSets.test.output
}
test {
- def cssDir = file("$buildDir/classes/main/javafx")
+ def cssDir = file("$buildDir/classes/java/main/javafx")
jvmArgs "-Djavafx.toolkit=com.sun.javafx.pgstub.StubToolkit",
"-DCSS_META_DATA_TEST_DIR=$cssDir"
}
// TODO Css2Bin really should be moved out and put into buildSrc if it can be
// TODO could change script to dynamically locate all .css files and create bss for them, probably better
// TODO also not sure there is any benefit to having css files in the jfxrt.jar at all
- processResources << {
+ processResources {
+ doLast {
["$buildDir/resources/main/com/sun/javafx/scene/control/skin/caspian/caspian.css",
"$buildDir/resources/main/com/sun/javafx/scene/control/skin/caspian/caspian-no-transparency.css",
"$buildDir/resources/main/com/sun/javafx/scene/control/skin/caspian/embedded-qvga.css",
"$buildDir/resources/main/com/sun/javafx/scene/control/skin/caspian/embedded.css",
"$buildDir/resources/main/com/sun/javafx/scene/control/skin/caspian/fxvk.css",
@@ -1649,19 +1646,20 @@
"$buildDir/resources/main/com/sun/javafx/scene/control/skin/modena/modena-no-transparency.css",
"$buildDir/resources/main/com/sun/javafx/scene/control/skin/modena/touch.css"].each { css ->
javaexec {
executable = JAVA
workingDir = "modules/controls"
- classpath files("$buildDir/classes/main",
+ classpath files("$buildDir/classes/java/main",
project(":graphics").sourceSets.main.output,
project(":base").sourceSets.main.output)
main = "com.sun.javafx.css.parser.Css2Bin"
args css
jvmArgs "-Djava.ext.dirs="
}
}
}
+ }
}
project(":extensions") {
dependencies {
compile BUILD_SRC, project(":base"), project(":graphics")
@@ -1836,11 +1834,11 @@
doLast {
copy {
from "$buildDir/native/WinLauncher/WinLauncher.exe"
from "$MSVCR"
from "$MSVCP"
- into "$buildDir/classes/main/com/oracle/tools/packager/windows"
+ into "$buildDir/classes/java/main/com/oracle/tools/packager/windows"
}
}
}
task compileWinLibrary(type: CCTask, group: "Build") {
description = "Compiles native sources for the application co-bundle launcher library";
@@ -1857,11 +1855,11 @@
lib = file("$buildDir/native/WinLauncher/packager.dll")
linker = WIN.launcherlibrary.linker
doLast {
copy {
from "$buildDir/native/WinLauncher/packager.dll"
- into "$buildDir/classes/main/com/oracle/tools/packager/windows"
+ into "$buildDir/classes/java/main/com/oracle/tools/packager/windows"
}
}
}
task buildWinLauncherSvc(type: CCTask, group: "Build") {
description = "Compiles native sources for the application co-bundle launcher";
@@ -1873,11 +1871,11 @@
exe = true;
linkerOptions.addAll(WIN.launcher.linkFlags);
doLast {
copy {
from "$buildDir/native/WinLauncherSvc/WinLauncherSvc.exe"
- into "$buildDir/classes/main/com/oracle/tools/packager/windows"
+ into "$buildDir/classes/java/main/com/oracle/tools/packager/windows"
}
}
}
task buildIconSwap(type: CCTask, group: "Build") {
description = "Compiles native sources for the application co-bundle launcher"
@@ -1889,11 +1887,11 @@
exe = true
linkerOptions.addAll(WIN.iconLauncher.linkFlags)
doLast {
copy {
from "$buildDir/native/IconSwap/IconSwap.exe"
- into "$buildDir/classes/main/com/oracle/tools/packager/windows"
+ into "$buildDir/classes/java/main/com/oracle/tools/packager/windows"
}
}
}
task compileLauncher(dependsOn: [buildWinLauncher, linkWinLibrary, buildWinLauncherSvc, buildIconSwap])
jar.dependsOn compileLauncher;
@@ -1902,11 +1900,11 @@
description = "Compiles native sources for the application co-bundle launcher"
matches = ".*\\.m"
source file("src/main/native/launcher/mac")
params.addAll(MAC.launcher.ccFlags)
compiler = MAC.launcher.compiler
- output(file("$buildDir/classes/main/com/oracle/tools/packager/mac"))
+ output(file("$buildDir/classes/java/main/com/oracle/tools/packager/mac"))
eachOutputFile = { f ->
return new File(f.getParent(), "JavaAppLauncher")
}
}
task compileMacLibrary(type: CCTask, group: "Build") {
@@ -1920,11 +1918,11 @@
task linkMacLibrary(type: LinkTask, group: "Build", dependsOn: compileMacLibrary) {
description = "Links native sources for the application co-bundle launcher library"
objectDir = file("$buildDir/native/maclauncher/obj")
linkParams.addAll(MAC.launcherlibrary.linkFlags)
linker = MAC.launcherlibrary.linker
- lib = file("$buildDir/classes/main/com/oracle/tools/packager/mac/libpackager.dylib")
+ lib = file("$buildDir/classes/java/main/com/oracle/tools/packager/mac/libpackager.dylib")
}
task compileLauncher(dependsOn: [buildMacLauncher, linkMacLibrary])
jar.dependsOn compileLauncher;
} else if (IS_LINUX && COMPILE_FXPACKAGER) {
task compileLinuxLauncher(type: CCTask, group: "Build") {
@@ -1938,11 +1936,11 @@
task linkLinuxLauncher(type: LinkTask, dependsOn: compileLinuxLauncher, group: "Build") {
description = "Links native dynamic library for the application co-bundle launcher"
objectDir = file("$buildDir/native/linuxlauncher/launcherobj")
linkParams.addAll(LINUX.launcher.linkFlags)
linker = LINUX.launcher.linker
- lib = file("$buildDir/classes/main/com/oracle/tools/packager/linux/JavaAppLauncher")
+ lib = file("$buildDir/classes/java/main/com/oracle/tools/packager/linux/JavaAppLauncher")
}
task compileLinuxLibrary(type: CCTask, group: "Build") {
description = "Compiles native sources for the application co-bundle launcher library"
matches = ".*\\.cpp"
source file("src/main/native/library/common")
@@ -1953,11 +1951,11 @@
task linkLinuxLibrary(type: LinkTask, dependsOn: compileLinuxLibrary, group: "Build") {
description = "Links native dynamic library for the application co-bundle launcher library"
objectDir = file("$buildDir/native/linuxlauncher/obj")
linkParams.addAll(LINUX.launcherlibrary.linkFlags)
linker = LINUX.launcherlibrary.linker
- lib = file("$buildDir/classes/main/com/oracle/tools/packager/linux/libpackager.so")
+ lib = file("$buildDir/classes/java/main/com/oracle/tools/packager/linux/libpackager.so")
}
task compileLauncher(dependsOn: [linkLinuxLauncher, linkLinuxLibrary])
jar.dependsOn compileLauncher;
}
@@ -2043,21 +2041,22 @@
task packagerJar(type: Jar) {
group = "Basic"
description = "Creates the packager.jar"
archiveName = "packager.jar";
includeEmptyDirs = false
- from("$buildDir/classes/main");
+ from("$buildDir/classes/java/main");
from("$buildDir/resources/main");
include('jdk/packager/**')
dependsOn(buildJavaPackager);
}
jar.dependsOn buildJavaPackager
jar.dependsOn packagerJar
- classes << {
+ classes {
+ doLast {
// Copy all of the download libraries to libs directory for the sake of the IDEs
File libsDir = rootProject.file("build/libs");
File antLib = new File(libsDir, "ant-1.8.2.jar")
libsDir.mkdirs();
for (File f : configurations.compile.files) {
@@ -2067,10 +2066,11 @@
include "**/ant-1.8.2.jar"
includeEmptyDirs = false
}
}
}
+ }
task packagerFakeJar(type: Jar) {
dependsOn compileTestJava
from compileTestJava.destinationDir
include "hello/**"
@@ -2380,11 +2380,12 @@
}
buildNative.dependsOn buildAVPlugin
}
if (t.name == "win") {
- def buildResources = task("buildResources") << {
+ def buildResources = task("buildResources") {
+ doLast {
def rcOutputDir = "${nativeOutputDir}/${buildType}"
mkdir rcOutputDir
exec {
environment(WINDOWS_NATIVE_COMPILE_ENVIRONMENT)
commandLine (WIN.media.rcCompiler)
@@ -2411,10 +2412,11 @@
commandLine (WIN.media.rcCompiler)
args(WIN.media.jfxmediaRcFlags)
args("/Fo${rcOutputDir}/${WIN.media.jfxmediaRcFile}", WIN.media.rcSource)
}
}
+ }
def buildGlib = task("build${t.capital}Glib", dependsOn: [buildResources]) {
enabled = IS_COMPILE_MEDIA
doLast {
exec {
@@ -2509,12 +2511,12 @@
sourceSets.main.java.srcDirs += "src/main/native/Source/WebCore/bindings/java/dom3/java"
task generateHeaders(dependsOn: compileJava) {
doLast {
- def classpath = files("$buildDir/classes/main",
- project(":graphics").sourceSets.main.output.classesDir)
+ def classpath = files("$buildDir/classes/java/main",
+ project(":graphics").sourceSets.main.java.outputDir)
def dest = file("$buildDir/generated-src/headers");
mkdir dest;
exec {
commandLine("$JAVAH", "-J-Djava.ext.dirs=", "-d", "$dest",
"-classpath", "${classpath.asPath}");
@@ -2565,11 +2567,12 @@
def webkitConfig = IS_DEBUG_NATIVE ? "Debug" : "Release"
File nativeBuildDir = new File("${webkitOutputDir}")
nativeBuildDir.mkdirs()
- def compileNativeTask = task("compileNative${t.capital}", dependsOn: generateHeaders) << {
+ def compileNativeTask = task("compileNative${t.capital}", dependsOn: generateHeaders) {
+ doLast {
println "Building Webkit configuration /$webkitConfig/ into $webkitOutputDir"
exec {
workingDir("$webkitOutputDir")
commandLine("perl", "$projectDir/src/main/native/Tools/Scripts/set-webkit-configuration", "--$webkitConfig")
@@ -2648,10 +2651,11 @@
copy {
from "$webkitOutputDir/$webkitConfig/$dllDir/${library('DumpRenderTreeJava')}"
into "$buildDir/test/${t.name}"
}
}
+ }
compileNative.dependsOn compileNativeTask
if (IS_WINDOWS && t.name == "win") {
def rcTask = project.task("rc${t.capital}", type: CompileResourceTask) {
@@ -2674,11 +2678,11 @@
def drtClasses = "com/sun/javafx/webkit/drt/**"
jar.exclude(drtClasses)
task drtJar(type: Jar, dependsOn: compileJava) {
archiveName = "drt.jar"
destinationDir = file("$buildDir/test")
- from "$buildDir/classes/main"
+ from "$buildDir/classes/java/main"
include drtClasses
}
if (IS_COMPILE_WEBKIT) {
jar.dependsOn compileNative, drtJar
}
@@ -2926,29 +2930,29 @@
def jfxrtTask = task("jfxrt$t.capital", type: Jar) {
group = "Basic"
description = "Creates the jfxrt.jar for the $t.name target"
archiveName = "build/${sdkDirName}/rt/lib/ext/jfxrt.jar";
includeEmptyDirs = false
- from("modules/base/build/classes/main",
+ from("modules/base/build/classes/java/main",
"modules/base/build/resources/main",
- "modules/builders/build/classes/main",
- "modules/graphics/build/classes/main",
+ "modules/builders/build/classes/java/main",
+ "modules/graphics/build/classes/java/main",
"modules/graphics/build/resources/main",
- "modules/controls/build/classes/main",
+ "modules/controls/build/classes/java/main",
"modules/controls/build/resources/main",
- "modules/fxml/build/classes/main",
+ "modules/fxml/build/classes/java/main",
"modules/fxml/build/resources/main",
"modules/graphics/build/classes/jsl-decora",
"modules/graphics/build/resources/jsl-decora",
"modules/graphics/build/classes/jsl-prism",
"modules/graphics/build/resources/jsl-prism",
- "modules/media/build/classes/main",
+ "modules/media/build/classes/java/main",
"modules/media/build/resources/main")
- if (COMPILE_SWING) from ("modules/swing/build/classes/main", "modules/swing/build/resources/main")
+ if (COMPILE_SWING) from ("modules/swing/build/classes/java/main", "modules/swing/build/resources/main")
if (!IS_MAC) {
- exclude ("modules/media/build/classes/main/com/sun/media/jfxmediaimpl/platform/osx/**",
+ exclude ("modules/media/build/classes/java/main/com/sun/media/jfxmediaimpl/platform/osx/**",
"com/sun/prism/es2/MacGL*",
"com/sun/glass/events/mac",
"com/sun/glass/ui/mac",
"com/sun/prism/es2/gl/mac"
)
@@ -2987,11 +2991,11 @@
if (!targetProperties.includeNull3d) {
// "com/sun/prism/null3d", // TODO This is used in dev builds but not the final sdk
exclude ("com/sun/prism/null3d")
}
if (t.name != 'ios') {
- exclude ("modules/media/build/classes/main/com/sun/media/jfxmediaimpl/platform/ios/**",
+ exclude ("modules/media/build/classes/java/main/com/sun/media/jfxmediaimpl/platform/ios/**",
"com/sun/glass/ui/ios",
"com/sun/prism/es2/IOS*"
)
}
if (t.name != 'android' && t.name != 'dalvik') {
@@ -3006,11 +3010,11 @@
} else if (t.name == 'ios') {
from ("modules/web/build/classes/ios",
"modules/web/build/resources/ios",
"modules/extensions/build/classes/ios")
} else {
- from ("modules/web/build/classes/main", "modules/web/build/resources/main")
+ from ("modules/web/build/classes/java/main", "modules/web/build/resources/main")
}
exclude("**/javafx/embed/swt/**")
if (!targetProperties.includeSWT) {
@@ -3047,12 +3051,12 @@
enabled = COMPILE_SWT
group = "Basic"
description = "Creates the jfxswt.jar for the $t.name target"
archiveName = "build/${sdkDirName}/rt/lib/jfxswt.jar";
includeEmptyDirs = false
- from("modules/swt/build/classes/main");
- from("modules/builders/build/classes/main");
+ from("modules/swt/build/classes/java/main");
+ from("modules/builders/build/classes/java/main");
include("**/javafx/embed/swt/**")
exclude("**/*.java"); // Builder java files are in build/classes and should be excluded
dependsOn(subprojects.collect { project -> project.getTasksByName("assemble", true)});
}
@@ -3069,11 +3073,11 @@
def jmxTask = task ("jmx${t.capital}", type: Jar) {
group = "Basic"
description = "Creates the javafx-mx.jar"
archiveName = "build/${sdkDirName}/lib/javafx-mx.jar";
includeEmptyDirs = false
- from "modules/jmx/build/classes/main"
+ from "modules/jmx/build/classes/java/main"
from "modules/jmx/build/resources/main"
dependsOn project(":jmx").assemble
}
// The 'sdk' task will build the rest of the SDK, and depends on the 'jfxrtTask' task. After
@@ -3246,18 +3250,18 @@
* The applications to be built will be under ./apps, but also must
* be listed in the applications listed in the setting variable: JFXApplications
*/
ext.JFXRT_CP =
files(
- project(":base").sourceSets.main.output.classesDir,
- project(":graphics").sourceSets.main.output.classesDir,
- project(":controls").sourceSets.main.output.classesDir,
- project(":fxml").sourceSets.main.output.classesDir,
- project(":swing").sourceSets.main.output.classesDir, //NOTE - used by 3Dviewer
- project(":builders").sourceSets.main.output.classesDir,
- "modules/media/build/classes/main",
- "modules/web/build/classes/main",
+ project(":base").sourceSets.main.java.outputDir,
+ project(":graphics").sourceSets.main.java.outputDir,
+ project(":controls").sourceSets.main.java.outputDir,
+ project(":fxml").sourceSets.main.java.outputDir,
+ project(":swing").sourceSets.main.java.outputDir, //NOTE - used by 3Dviewer
+ project(":builders").sourceSets.main.java.outputDir,
+ "modules/media/build/classes/java/main",
+ "modules/web/build/classes/java/main",
)
project(":apps") {
// The apps build is Ant based, and gradle lets us "import" ant build.xml
// into our configuration.
< prev index next >