changeset 6932:9fb43da24248

RT-35541 adding buildSrc/dalvik.gradle Contributed-by: Johan Vos
author ddhill
date Thu, 01 May 2014 13:24:06 -0400
parents 9e934742a081
children ae3e1b4c7dec
files buildSrc/dalvik.gradle
diffstat 1 files changed, 635 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildSrc/dalvik.gradle	Thu May 01 13:24:06 2014 -0400
@@ -0,0 +1,635 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+
+/**
+ * Gets the most recent android platform installed, relative to the given path.
+ * The path will either be ANDROID_SDK or ANDROID_NDK
+ * TODO Shouldn't we instead just ask people to point to the one they want to use?
+ *
+ * @param path The path to the Android SDK or NDK
+ * @return The name of the most recent platform
+ */
+String getLatestPlatform(String path) {
+    def max = 0
+    println("$path")
+    file(cygpath("$path/platforms")).eachFile() {file->
+        def pname = file.getName() - "android-"
+        def ptf = pname?.isInteger() ? pname.toInteger() : 0
+        if (max < ptf) {
+            max = ptf
+        }
+    }
+    if (max == 0) {
+        return null;
+    }
+    return "android-" + max
+}
+
+int compareVersions(String s1, String s2) {
+    def v1t = s1.tokenize(".")
+    def v2t = s2.tokenize(".")
+    for(int i = 0; i < v1t.size(); i++) {
+        if (i == v2t.size()) {
+            return 1
+        }
+        int n1 = v1t[i].isInteger() ? v1t[i].toInteger() : 0
+        int n2 = v2t[i].isInteger() ? v2t[i].toInteger() : 0
+        if (n1 == n2) {
+            continue
+        } else if (n1 > n2) {
+            return 1;
+        } else {
+            return -1
+        }        
+    }    
+    return (v2t.size() > v1t.size()) ? -1 : 0
+}
+
+String getLatestToolchain(String ndk, String tch) {
+    def max = "0.0"
+    def matchFile = null
+    file(cygpath("$ndk/toolchains")).eachFile() {file->        
+        def filename = file.getName()
+        if (filename.startsWith(tch)) {
+            def p = filename - "$tch-"
+            if (compareVersions(p, max) > 0) {
+                max = p
+                matchFile = file
+            }
+        }
+    }
+    return matchFile.getAbsolutePath()
+}
+
+boolean assertDir(File dir) {
+    return dir != null && dir.exists() && dir.isDirectory() && dir.canRead();
+}
+
+boolean assertDir(String dir) {
+    return assertDir(file(dir))
+}
+
+def closedDir = file("$projectDir/../rt-closed")
+
+def toolchainArchs = ["arm-linux-androideabi", "mipsel-linux-android", "x86"]
+def armArchs = ["armeabi", "armeabiv-7a"]
+
+ext.DALVIK = [:]
+DALVIK.compileSwing = false;
+DALVIK.compileSWT = false;
+DALVIK.compileFXPackager = false;
+DALVIK.compileDesignTime = false;
+DALVIK.glassPlatform = "android"
+DALVIK.armArch = armArchs[0]
+DALVIK.libDest = "lib/${DALVIK.armArch}"
+DALVIK.jfxdvklib = "jfxdvk.jar"
+DALVIK.library = { name -> return "lib${name}.so" as String }
+
+def sdk = project.hasProperty("ANDROID_SDK") ? "${ANDROID_SDK}" : null;
+def ndk = project.hasProperty("ANDROID_NDK") ? "${ANDROID_NDK}" : null;
+DALVIK.canBuild = sdk != null && ndk != null
+if (!DALVIK.canBuild) {
+    logger.error("Can't build Android. Path to SDK or NDK was not set or is invalid!")
+    return;
+}
+
+DALVIK.canBuild = assertDir(sdk) && assertDir(ndk)
+if (!DALVIK.canBuild) {
+    if (!assertDir(sdk)) {
+        logger.error("Path to ANDROID_SDK is invalid! [$sdk]")
+    }
+    if (!assertDir(ndk)) {
+        logger.error("Path to ANDROID_NDK is invalid! [$ndk]")
+    }
+    return
+}
+
+def sdk_target = project.hasProperty("ANDROID_SDK_TARGET") ?  "${ANDROID_SDK_TARGET}" : getLatestPlatform(sdk);
+if (!assertDir(file("$sdk/platforms/$sdk_target"))) {            
+    sdk_target = getLatestPlatform(sdk); 
+    logger.warn("Redefine ANDROID_SDK_TARGET to: [$sdk_target]")
+}
+
+def ndk_target = project.hasProperty("ANDROID_NDK_TARGET") ? "${ANDROID_NDK_TARGET}" : getLatestPlatform(ndk);
+if (!assertDir(file("$ndk/platforms/$ndk_target"))) {            
+    ndk_target = getLatestPlatform(ndk);
+    logger.warn("Redefine ANDROID_NDK_TARGET to: [$ndk_target]")
+}
+
+DALVIK.canBuild = sdk_target != null && ndk_target != null
+if (!DALVIK.canBuild) {
+    logger.error("Can't determine sdk or ndk target platform!")
+    return
+}
+
+def toolchainHome = project.hasProperty("ANDROID_CROSS_TOOLS_VER") ? 
+    "$ndk/toolchains/${ANDROID_CROSS_TOOLS_VER}" : getLatestToolchain(ndk, toolchainArchs[0])
+if (!assertDir(toolchainHome)) {
+    toolchainHome = getLatestToolchain(ndk, toolchainArchs[0])
+    logger.warn("Redefine toolchain to [$toolchainHome]")
+}
+
+// Look for the the Android SDK & NDK to use, as well as the compiler stuff
+def compilerHome = null
+file("$toolchainHome/prebuilt").eachDir() {subdir ->
+    compilerHome = subdir.getAbsolutePath()
+    return
+}
+
+DALVIK.canBuild = compilerHome != null
+if (!DALVIK.canBuild) {
+    logger.error("Failed to access toolchain [$toolchainHome/prebuilt/$toolsPlatform]!")
+    return
+}
+
+def freetypeDir = project.hasProperty("FREETYPE_DIR") ? "${FREETYPE_DIR}" : null
+if (!assertDir(freetypeDir)) {
+    logger.warn("FREETYPE_DIR $freetypeDir doesn't exists! Build continues without native text support.")
+    freetypeDir = null
+}
+def compileNativeText = freetypeDir != null
+
+def compiler = file("$compilerHome/bin/${toolchainArchs[0]}-gcc").getAbsolutePath()
+def linker = file("$compilerHome/bin/${toolchainArchs[0]}-g++").getAbsolutePath()
+
+// Log the settings we're building with
+logger.quiet("ANDROID_SDK: $sdk")
+logger.quiet("ANDROID_SDK_TARGET: $sdk_target")
+logger.quiet("ANDROID_NDK: $ndk")
+logger.quiet("ANDROID_NDK_TARGET: $ndk_target")
+logger.quiet("FREETYPE_DIR: $freetypeDir")
+logger.quiet("Compile native text: $compileNativeText") 
+logger.quiet("Android Compiler: $compiler")
+logger.quiet("Android Linker: $linker")
+
+//exclude from build
+project(":swing") {
+    apply plugin: 'java'
+
+    compileJava {
+        enabled = false
+    }
+}
+
+project(":fxml") {
+    apply plugin: 'java'
+
+    compileJava {
+        enabled = true
+    }
+}
+
+project(":jmx") {
+    apply plugin: 'java'
+
+    compileJava {
+        enabled = false
+    }
+}
+
+project(":base") {
+
+    afterEvaluate {
+        compileJava {
+            options.compilerArgs << "-Xbootclasspath/p:../compat/build/libs/compat.jar"
+            options.bootClasspath = "$sdk/platforms/$sdk_target/android.jar"
+            dependsOn project(":compat").jarCompatLib
+        }
+        
+        jfxrtDalvik {
+            eachFile {
+                if (it.name.endsWith('.class')) {
+                    RandomAccessFile raf = new RandomAccessFile(it.file.path, "rw");
+                    raf.seek(7);
+                    raf.writeByte(0x32); //make it jdk6
+                    raf.close();
+                }
+            }
+        }        
+    }
+}
+
+
+project(":graphics") {
+
+    task compileDalvikLibs(type: JavaCompile, group: "Build") {
+        description = "Task compiles dalvik vm based libraries."
+        options.bootClasspath = "$sdk/platforms/$sdk_target/android.jar"
+        classpath = files("build/classes/dalvik", "build/classes/main")
+        destinationDir = file("build/classes/dalvik")
+        dependencyCacheDir = file("build/dependency-cache")
+        source fileTree(dir: 'src/dalvik/java').matching { include 'javafxports/**' }
+    }
+
+    task jarDalvikLibs(type: Jar, group: "Build", dependsOn: compileDalvikLibs) {
+        description = "Creates jfxdvk.jar with all dalvik based classes."
+        archiveName = "jfxdvk.jar"
+        includeEmptyDirs = false
+        from("build/classes/dalvik")
+        include("javafxports/**/*")
+        dependsOn(compileDalvikLibs)
+    }
+    
+    jarDalvikLibs {
+        eachFile {
+                if (it.name.endsWith('.class')) {
+                    RandomAccessFile raf = new RandomAccessFile(it.file.path, "rw");
+                    raf.seek(7);
+                    raf.writeByte(0x32); //make it jdk6
+                    raf.close();
+                }
+            }
+    }
+     
+    afterEvaluate {
+        compileJava {
+            options.compilerArgs << "-Xbootclasspath/p:../compat/build/libs/compat.jar"
+        }
+
+
+        addNative(project, "activity", ["dalvik"])
+        if (compileNativeText) {
+            addNative(project, "fontNativeFreetype", ["dalvik"])
+        }
+        tasks["javahDalvikGlass"].dependsOn(compileDalvikLibs)
+        tasks["javahDalvikActivity"].dependsOn(compileDalvikLibs)
+        tasks["native"].dependsOn("nativeActivity")
+        if (compileNativeText) {
+            tasks["native"].dependsOn("nativeFontNativeFreetype")
+        }
+        tasks["javahDalvikPrismSW"].enabled = false
+        tasks["ccDalvikPrismSW"].enabled = false;
+        tasks["linkDalvikPrismSW"].enabled = false;
+        
+        sdkDalvik  {
+            dependsOn(jarDalvikLibs)
+            doLast {
+                def props = project.ext["DALVIK"]
+                copy {
+                    from(
+                         "modules/graphics/build/libs/activity/dalvik/${props.library(props.activity.lib)}"
+                    )                    
+                    into ("build/dalvik-sdk/dalvik/${props.libDest}")
+                }
+                copy {
+                    from ("modules/graphics/build/libs/${props.jfxdvklib}")
+                    into ("build/dalvik-sdk/dalvik/lib")
+                }
+                copy {
+                    from ("modules/compat/build/libs/compat.jar")
+                    into ("build/dalvik-sdk/rt/lib/ext")
+                }
+                if (compileNativeText) {
+                    copy {
+                        from ("modules/graphics/build/libs/fontNativeFreetype/dalvik")
+                        into ("build/dalvik-sdk/rt/$DALVIK.libDest")
+                    }
+                }
+            }
+        }
+    }
+}
+
+project(":controls") {
+    afterEvaluate {
+        compileJava {
+            options.compilerArgs << '-Xbootclasspath/p:../compat/build/libs/compat.jar'
+        }
+		sourceSets.main.java {
+            exclude 'javafx/scene/control/Date*.java'
+            exclude 'com/sun/javafx/scene/control/skin/Date*.java'
+            exclude 'com/sun/javafx/scene/control/behavior/Date*.java'
+        }
+        task compileControlsJavaDalvik(type: JavaCompile, group: "Build", dependsOn: [":graphics:compileJava", ":controls:compileJava"]) {
+            description = "Task compiles controls for Android"
+            classpath = files("modules/base/build/classes/main",
+                "modules/graphics/build/classes/main",
+                "modules/controls/build/classes/main"
+            )
+            destinationDir = file("modules/controls/build/classes/dalvik")
+            dependencyCacheDir = file("modules/controls/build/dependency-cache")
+            source file("modules/controls/src/android/java")
+        }
+
+       task processControlsResourcesDalvik() {
+           copy {
+               from ("modules/controls/src/android/resources")
+               into ("modules/controls/build/resources/dalvik")
+           }
+        }
+
+        jfxrtDalvik {
+            from ("modules/controls/build/classes/dalvik",
+                  "modules/controls/build/resources/dalvik")
+            dependsOn(compileControlsJavaDalvik, processControlsResourcesDalvik)
+        }
+
+    }
+}        
+
+allprojects {
+    afterEvaluate {
+        sdkDalvik {
+            doLast {
+                ant.jar(update: "true", destfile: "build/dalvik-sdk/rt/lib/ext/jfxrt.jar", 
+                    basedir: "build/dalvik-sdk/rt/lib", includes: "*.properties")
+            }
+        }
+    }
+}
+
+
+DALVIK.jfxrtJarExcludes = [
+    "**/*.hlsl",
+    "com/sun/glass/ui/win",
+    "com/sun/glass/ui/accessible/win",    
+    "com/sun/prism/j2d",
+    "com/sun/prism/sw",
+    "com/sun/prism/d3d",
+    "com/sun/prism/es2/gl/win",
+    "com/sun/prism/null3d",
+    "com/sun/scenario/effect/impl/hw/d3d",
+    "com/sun/glass/events/mac",
+    "com/sun/glass/ui/mac",
+    "com/sun/glass/ui/accessible/mac",
+    "com/sun/prism/es2/gl/mac",
+    "com/sun/glass/ui/gtk",
+    "com/sun/glass/ui/ios",
+    "com/sun/prism/es2/gl/eglx11",
+    "com/sun/prism/es2/gl/x11",
+    "com/sun/glass/ui/swt", // SWT glass
+    "javafx/embed/swing", // Swing Interop
+    "javafx/embed/swt", // SWT Interop
+    "com/oracle/dalvik",
+    "javafx/scene/media", //exclude all media for now
+    "com/sun/media",
+    "com/sun/javafx/media",
+    "com/sun/javafx/font/directwrite", //exclude non freetype font support
+    "com/sun/javafx/font/coretext",
+    "com/sun/javafx/font/freetype/Pango*",
+    "com/sun/javafx/font/freetype/OSPango*",
+    "com/sun/webkit",   //exclude all WebView for now
+    "com/sun/javafx/webkit",
+    "com/sun/javafx/scene/web",
+    "javafx/scene/web",
+    "com/sun/javafx/sg/prism/NGWeb*",
+    "javafx/print", //exclude printing
+    "com/sun/javafx/print",
+    "com/sun/javafx/tk/Print*"
+]
+
+def text = (compileNativeText) ? "native" : "t2k"
+
+DALVIK.javafxPlatformProperties = """
+javafx.platform=android
+android.glass.platform=Lens
+android.glass.lens=eglfb
+android.log.lens=FINEST
+android.prism.glDepthSize=16
+android.prism.lcdtext=false
+android.prism.debugfonts=true
+android.prism.text=$text
+android.embedded=eglfb
+android.prism.allowhidpi=false
+android.prism.maxTextureSize=2048
+android.prism.dirtyopts=true
+android.prism.vsync=false
+android.use.egl=true
+android.com.sun.javafx.isEmbedded=true
+"""
+def sysroot = "$ndk/platforms/$ndk_target/arch-arm"
+
+def ccFlags = ["--sysroot=$sysroot","-std=c99", "-DANDROID", "-c", "-nostdlib", 
+               "-DANDROID_NDK", "-DDALVIK_VM"]
+
+def ccOptFlags = ["-fpic", "-ffunction-sections", "-funwind-tables","-fstack-protector",
+                  "-Os", "-O2", "-fno-strict-aliasing", "-finline-limit=64", "-fomit-frame-pointer"]
+def ccWarnFlags = ["-Wa,--noexecstack", "-Wno-psabi"]
+def ccArchFlags = ["-mthumb", "-msoft-float", "-D__ARM_ARCH_5__", "-D__ARM_ARCH_5T__", "-D__ARM_ARCH_5E__",
+                   "-D__ARM_ARCH_5TE__", "-march=armv5te" , "-mtune=xscale"]
+def ccDebugFlags = [IS_DEBUG_NATIVE ? "-DDEBUG" : "-DNDEBUG"]
+def ccDefaultIncludeFlags = ["-I$ndk/platforms/$ndk_target/arch-arm/usr/include"]
+
+def linkFlags = ["--sysroot=$sysroot",
+                 "-Wl,--no-undefined", "-Wl,-z,noexecstack", "-lc", "-lm", "-shared",
+                 "-L$ndk/platforms/$ndk_target/arch-arm/usr/lib"]
+
+DALVIK.activity = [:]
+DALVIK.activity.javahSource = files("modules/graphics/build/classes/dalvik")
+DALVIK.activity.javahClasspath = files("modules/graphics/build/classes/dalvik", "$sdk/platforms/$sdk_target/android.jar")
+DALVIK.activity.javahInclude = ["javafxports/android/**"]
+DALVIK.activity.nativeSource = file("modules/graphics/src/dalvik/native")
+DALVIK.activity.compiler = compiler
+DALVIK.activity.linker = linker
+DALVIK.activity.lib = "activity"
+DALVIK.activity.ccFlags = [ccFlags, ccWarnFlags, ccArchFlags, ccOptFlags,
+    ccDebugFlags, ccDefaultIncludeFlags].flatten()
+DALVIK.activity.linkFlags = [linkFlags, "-landroid", "-llog"].flatten()
+
+DALVIK.webview = [:]
+DALVIK.webview.javahSource = files("modules/web/build/classes/dalvik")
+DALVIK.webview.javahClasspath = files("modules/web/build/classes/dalvik")
+DALVIK.webview.javahInclude = [
+    "com/sun/webkit/NativeWebView.class"
+]
+DALVIK.webview.nativeSource = [
+    file("modules/web/src/android/native/native_webview.c")
+]
+DALVIK.webview.compiler = compiler
+DALVIK.webview.linker = linker
+DALVIK.webview.lib = "webview"
+DALVIK.webview.ccFlags = [ccFlags, ccWarnFlags, ccArchFlags, ccOptFlags,
+    ccDebugFlags, ccDefaultIncludeFlags].flatten()
+DALVIK.webview.linkFlags = [linkFlags, "-ldl", "-llog"].flatten()
+
+DALVIK.dvkwebview = [:]
+DALVIK.dvkwebview.javahSource = files("modules/web/build/classes/dalvik")
+DALVIK.dvkwebview.javahClasspath = files("modules/web/build/classes/dalvik")
+DALVIK.dvkwebview.javahInclude = [
+    "com/sun/webkit/NativeWebView.class"
+]
+DALVIK.dvkwebview.nativeSource = [
+    file("modules/web/src/android/native/android_webview.c")
+]
+DALVIK.dvkwebview.compiler = compiler
+DALVIK.dvkwebview.linker = linker
+DALVIK.dvkwebview.lib = "android_webview"
+DALVIK.dvkwebview.ccFlags = [ccFlags, ccWarnFlags, ccArchFlags, ccOptFlags,
+    ccDebugFlags, ccDefaultIncludeFlags].flatten()
+DALVIK.dvkwebview.linkFlags = [linkFlags, "-ldl", "-llog"].flatten()
+
+DALVIK.glass = [:]
+DALVIK.glass.variants = ["eglfb", "lensport"]
+DALVIK.glass.javahSource = files("modules/graphics/build/classes/dalvik",
+ "modules/graphics/build/classes/main")
+DALVIK.glass.javahClasspath = files("modules/graphics/build/classes/main",
+ "modules/graphics/build/classes/dalvik",
+ "$sdk/platforms/$sdk_target/android.jar")
+DALVIK.glass.javahInclude = [
+    "javafxports/android/**",
+    "com/sun/glass/events/**",
+    "com/sun/glass/ui/*",
+    "com/sun/glass/ui/android/*",
+    "com/sun/glass/ui/lens/*"]
+
+DALVIK.glass.lensport = [:]
+DALVIK.glass.lensport.nativeSource = [
+    file("modules/graphics/src/main/native-glass/lens/lensport/initPlatform.c"),
+    file("modules/graphics/src/main/native-glass/lens/lensport/wrapped_functions.c")    
+]
+DALVIK.glass.lensport.compiler = compiler
+DALVIK.glass.lensport.linker = linker
+DALVIK.glass.lensport.lib = "lens_porting"
+DALVIK.glass.lensport.ccFlags = [ccFlags, ccWarnFlags, ccArchFlags, ccOptFlags,
+    ccDebugFlags, ccDefaultIncludeFlags, "-DISEGLFB", "-DLENSPORT",
+    "-I", file("modules/graphics/src/main/native-glass/lens")].flatten()
+DALVIK.glass.lensport.linkFlags = [linkFlags, "-ldl", "-llog"].flatten()
+
+DALVIK.glass.eglfb = [:]
+DALVIK.glass.eglfb.nativeSource = [
+    file("modules/graphics/src/main/native-glass/lens"),
+    file("modules/graphics/src/main/native-glass/lens/wm"),
+    file("modules/graphics/src/main/native-glass/lens/cursor/nullCursor"),
+    file("modules/graphics/src/main/native-glass/lens/input/dalvik")
+]
+DALVIK.glass.eglfb.compiler = compiler
+DALVIK.glass.eglfb.linker = linker
+DALVIK.glass.eglfb.lib = "glass_lens_eglfb"
+DALVIK.glass.eglfb.ccFlags = [ccFlags, ccWarnFlags, ccArchFlags, ccOptFlags,
+    ccDebugFlags, ccDefaultIncludeFlags].flatten()
+DALVIK.glass.eglfb.linkFlags = [linkFlags, "-ldl", "-landroid", "-llog"].flatten()
+
+DALVIK.prism = [:]
+DALVIK.prism.javahInclude = ["com/sun/prism/impl/**/*", "com/sun/prism/PresentableState*"]
+DALVIK.prism.nativeSource = file("modules/graphics/src/main/native-prism")
+DALVIK.prism.compiler = compiler
+DALVIK.prism.ccFlags = [ccFlags, ccWarnFlags, ccArchFlags, ccOptFlags,
+    ccDebugFlags, ccDefaultIncludeFlags].flatten()
+DALVIK.prism.linker = linker
+DALVIK.prism.linkFlags = [linkFlags].flatten()
+DALVIK.prism.lib = "prism_common"
+
+DALVIK.prismSW = [:]
+DALVIK.prismSW.javahInclude = ["com/sun/pisces/**/*"]
+DALVIK.prismSW.nativeSource = file("modules/graphics/src/main/native-prism-sw")
+DALVIK.prismSW.compiler = compiler
+DALVIK.prismSW.ccFlags = [ccFlags, ccWarnFlags, ccArchFlags, ccOptFlags,
+    ccDebugFlags, ccDefaultIncludeFlags].flatten()
+DALVIK.prismSW.linker = linker
+DALVIK.prismSW.linkFlags = [linkFlags].flatten()
+DALVIK.prismSW.lib = "prism_sw"
+
+DALVIK.decora = [:]
+DALVIK.decora.compiler = compiler
+DALVIK.decora.ccFlags = [ccFlags, ccWarnFlags, ccArchFlags, ccOptFlags,
+    ccDebugFlags, ccDefaultIncludeFlags].flatten()
+DALVIK.decora.linker = linker
+DALVIK.decora.linkFlags = [linkFlags].flatten()
+DALVIK.decora.lib = "decora_sse"
+
+DALVIK.iio = [:]
+DALVIK.iio.javahInclude = ["com/sun/javafx/iio/**/*"]
+DALVIK.iio.nativeSource = [
+    file("modules/graphics/src/main/native-iio"),
+    file("modules/graphics/src/main/native-iio/libjpeg7")]
+DALVIK.iio.compiler = compiler
+DALVIK.iio.ccFlags = [ccFlags, ccWarnFlags, ccArchFlags, ccOptFlags,
+    ccDebugFlags, ccDefaultIncludeFlags].flatten()
+DALVIK.iio.linker = linker
+DALVIK.iio.linkFlags = [linkFlags].flatten()
+DALVIK.iio.lib = "javafx_iio"
+
+DALVIK.prismES2 = [:]
+DALVIK.prismES2.variants = ["eglfb"]
+DALVIK.prismES2.javahInclude = ["com/sun/prism/es2/**/*"]
+
+DALVIK.prismES2.eglfb = [:]
+DALVIK.prismES2.eglfb.nativeSource = [
+    file("modules/graphics/src/main/native-prism-es2"),
+    file("modules/graphics/src/main/native-prism-es2/GL"),
+    file("modules/graphics/src/main/native-prism-es2/eglfb")]
+DALVIK.prismES2.eglfb.compiler = compiler
+DALVIK.prismES2.eglfb.ccFlags = [ccFlags, ccWarnFlags, ccArchFlags, ccOptFlags,
+    ccDebugFlags, ccDefaultIncludeFlags, "-DIS_EGLFB"].flatten()
+DALVIK.prismES2.eglfb.linker = linker
+DALVIK.prismES2.eglfb.linkFlags = [linkFlags, "-ldl", "-llog", "-lGLESv2", "-lEGL"].flatten()
+DALVIK.prismES2.eglfb.lib = "prism_es2_eglfb"
+
+DALVIK.font = [:]
+DALVIK.font.javahInclude = [
+        "com/sun/javafx/font/**/*",
+        "com/sun/javafx/text/**/*"]
+DALVIK.font.nativeSource = [file("$closedDir/javafx-font-native/src")]
+DALVIK.font.compiler = compiler
+DALVIK.font.ccFlags = [ccFlags, ccWarnFlags, ccArchFlags, ccOptFlags,
+    ccDebugFlags, ccDefaultIncludeFlags].flatten()
+DALVIK.font.linker = linker
+DALVIK.font.linkFlags = [linkFlags].flatten()
+DALVIK.font.lib = "javafx_font"
+
+if (BUILD_CLOSED) {
+    DALVIK.fontT2K = [:]
+    DALVIK.fontT2K.javahInclude = ["com/sun/javafx/font/t2k/**/*"]
+    DALVIK.fontT2K.nativeSource = [
+        file("$closedDir/javafx-font-t2k-native/src"),
+        file("$closedDir/javafx-font-t2k-native/src/layout"),
+        file("$closedDir/javafx-font-t2k-native/src/layoutfx")]
+    DALVIK.fontT2K.compiler = compiler
+    DALVIK.fontT2K.ccFlags = [ccFlags, "-fno-exceptions", "-fno-rtti", ccWarnFlags,
+        ccArchFlags, ccOptFlags, ccDebugFlags, ccDefaultIncludeFlags].flatten()
+    DALVIK.fontT2K.linker = linker
+    DALVIK.fontT2K.linkFlags = [linkFlags, "-lstdc++"].flatten()
+    DALVIK.fontT2K.lib = "javafx_font_t2k"
+} 
+
+if (compileNativeText) {
+    DALVIK.fontNativeFreetype = [:]
+    DALVIK.fontNativeFreetype.javahInclude = [
+        "com/sun/javafx/font/freetype/OSFreetype.class"
+    ]
+    DALVIK.fontNativeFreetype.nativeSource = [
+        file("modules/graphics/src/main/native-font/freetype.c")
+    ]
+    DALVIK.fontNativeFreetype.compiler = compiler
+    DALVIK.fontNativeFreetype.linker = linker
+    DALVIK.fontNativeFreetype.lib = "javafx_font_freetype"
+
+    ccFlags += ["-D_ENABLE_HARFBUZZ"]
+
+    DALVIK.fontNativeFreetype.ccFlags = 
+        [ccFlags, ccWarnFlags, ccArchFlags, ccOptFlags,
+        ccDebugFlags, ccDefaultIncludeFlags,
+        "-I$freetypeDir/include", "-I$freetypeDir/include/freetype2"].flatten()  
+        
+    DALVIK.fontNativeFreetype.linkFlags = 
+        [linkFlags, "-llog", 
+         "-L$freetypeDir/lib", "$freetypeDir/lib/libfreetype.a"].flatten()
+}
+
+DALVIK.media = [:]
+DALVIK.media.compiler = compiler
+DALVIK.media.linker = linker
+DALVIK.media.lib = file("$compilerHome/bin/${toolchainArchs[0]}-ar").getAbsolutePath()