1 apply plugin: 'java'
   2 import org.gradle.internal.os.OperatingSystem
   3 
   4 repositories {
   5     mavenCentral()
   6 }
   7 
   8 def test_jvm = {
   9     if (project.hasProperty('jbsdkhome')) {
  10         file(jbsdkhome + (OperatingSystem.current().isWindows()?"/bin/java.exe" : "/bin/java")).absolutePath
  11     } else {
  12         if (OperatingSystem.current().isMacOsX()) {
  13             file('../../../build/macosx-x86_64-server-release/images/jdk-bundle/jdk-13.jdk/Contents/Home/bin/java').absolutePath
  14         } else if (OperatingSystem.current().isLinux()) {
  15             file('../../../build/linux-x86_64-server-release/images/jdk/bin/java').absolutePath
  16         } else {
  17             file('../../../build/windows-x86_64-server-release/images/j2sdk-image/bin/java.exe').absolutePath
  18         }
  19     }
  20 }
  21 
  22 dependencies {
  23     testCompile('junit:junit:4.12'){
  24         exclude group: 'org.hamcrest'
  25     }
  26     testCompile 'org.hamcrest:hamcrest-library:1.3'
  27     testCompile 'net.java.dev.jna:jna:4.4.0'
  28     testCompile 'com.twelvemonkeys.imageio:imageio-tiff:3.3.2'
  29     testCompile 'org.apache.commons:commons-lang3:3.0'
  30 }
  31 
  32 def jdk_modules = ["java.base", "java.logging", "java.prefs",
  33                "java.se.ee", "java.sql", "java.datatransfer",
  34                "java.management", "java.rmi", "java.security.jgss",
  35                "java.sql.rowset", "java.desktop", "java.management.rmi",
  36                "java.scripting", "java.security.sasl", "java.transaction",
  37                "java.instrument", "java.naming", "java.se",
  38                "java.smartcardio", "java.xml.crypto"]
  39 
  40 def jdk_class_dirs = []
  41 
  42 jdk_modules.collect(jdk_class_dirs) {
  43     new File("../../../src/" + it + "/share/classes")
  44 }
  45 
  46 if (OperatingSystem.current().isMacOsX())
  47     jdk_modules.collect(jdk_class_dirs) {
  48         "../../../src/" + it + "/macosx/classes"
  49     }
  50 else if (OperatingSystem.current().isLinux()) {
  51     jdk_modules.collect(jdk_class_dirs) {
  52         "../../../src/" + it + "/solaris/classes"
  53     }
  54     jdk_modules.collect(jdk_class_dirs) {
  55         "../../../src/" + it + "/unix/classes"
  56     }
  57 } else
  58     jdk_modules.collect(jdk_class_dirs) {
  59         "../../../src/" + it + "/windows/classes"
  60     }
  61 
  62 sourceSets.main.java.srcDirs = jdk_class_dirs
  63 
  64 sourceSets {
  65     test {
  66         java {
  67             srcDir "../../../test/jdk/jbu"
  68         }
  69     }
  70 }
  71 
  72 test.dependsOn.clear()
  73 
  74 test.dependsOn tasks.compileTestJava
  75 
  76 test {
  77     systemProperty "jb.java2d.metal", "true"
  78     systemProperty "testdata", file('../../../test/jdk/jbu/testdata').absolutePath
  79 
  80 //  Generate golden images for DroidFontTest and MixedTextTest
  81 //    systemProperty "gentestdata", ""
  82 
  83 //  Enable Java2D logging (https://confluence.jetbrains.com/display/JRE/Java2D+Rendering+Logging)
  84 //  systemProperty "sun.java2d.trace", "count,notimpl
  85 //  systemProperty "sun.java2d.trace", "log"
  86 
  87     outputs.upToDateWhen { false }
  88     executable = test_jvm()
  89 
  90 //  Enable async/dtrace profiler      
  91     jvmArgs  "-XX:+PreserveFramePointer"
  92 //  Enable native J2D logging (only in debug build)
  93 //  Can be turned on for J2D by adding "#define DEBUG 1" into jdk/src/share/native/sun/java2d/Trace.h
  94 
  95 //    environment 'J2D_TRACE_LEVEL', '4'
  96 }
  97 
  98 def buildDir = project.buildscript.sourceFile.parentFile.parentFile.parentFile.parentFile
  99 
 100 def make_cmd = "make"
 101 if (OperatingSystem.current().isWindows()) {
 102     def cyg_make_cmd = new File("c:/cygwin64/bin/make.exe")
 103     if (cyg_make_cmd.exists()) make_cmd = cyg_make_cmd.absolutePath
 104 }
 105 def test_run = false
 106 task make_images << {
 107     if (!test_run) {
 108         def pb = new ProcessBuilder().command(make_cmd.toString(), "-C", buildDir.absolutePath, "images")
 109         def proc = pb.redirectErrorStream(true).start()
 110         proc.inputStream.eachLine { println it }
 111         assert proc.waitFor() == 0
 112     }
 113 }
 114 
 115 task make_clean << {
 116     def pb = new ProcessBuilder().command(make_cmd.toString(), "-C", buildDir.absolutePath, "clean")
 117     def proc = pb.redirectErrorStream(true).start()
 118     proc.inputStream.eachLine {println it}
 119     assert proc.waitFor() == 0
 120 }
 121 
 122 task run_test << {
 123     test_run = true
 124 }
 125 
 126 tasks.cleanTest.dependsOn tasks.run_test
 127 classes.dependsOn.clear()
 128 classes.dependsOn tasks.make_images
 129 tasks.cleanClasses.dependsOn tasks.make_clean