blob: 397a3fc34b2621f4e857f38ca200f3abb72dde38 [file] [log] [blame]
/*
* Copyright (c) 2013, 2015, 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
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"]
ANDROID = [:]
ANDROID.compileSwing = false;
ANDROID.compileSWT = false;
ANDROID.compileFXPackager = false;
ANDROID.glassPlatform = "android"
ANDROID.armArch = armArchs[0]
ANDROID.libDest = "lib/${ANDROID.armArch}"
ANDROID.jfxdvklib = "jfxdvk.jar"
ANDROID.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;
ANDROID.canBuild = sdk != null && ndk != null
if (!ANDROID.canBuild) {
fail("Can't build Android. Path to SDK or NDK was not set or is invalid!")
}
ANDROID.canBuild = assertDir(sdk) && assertDir(ndk)
if (!ANDROID.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]")
}
fail("Cannot build, missing android tools")
}
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]")
}
ANDROID.canBuild = sdk_target != null && ndk_target != null
if (!ANDROID.canBuild) {
fail("Can't determine sdk or ndk target platform!")
}
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
}
ANDROID.canBuild = compilerHome != null
if (!ANDROID.canBuild) {
fail("Failed to access toolchain [$toolchainHome/prebuilt/$toolsPlatform]!")
}
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")
project(":graphics") {
task compileDalvikLibs(type: JavaCompile, group: "Build") {
description = "Task compiles dalvik vm based libraries."
sourceCompatibility = JavaVersion.VERSION_1_6
targetCompatibility = JavaVersion.VERSION_1_6
options.bootClasspath = "$sdk/platforms/$sdk_target/android.jar"
classpath = files("build/classes/android")
destinationDir = file("build/classes/android")
dependencyCacheDir = file("build/dependency-cache")
source fileTree(dir: 'src/android/java').matching { include 'com/oracle/dalvik/**' }
}
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/android")
include("com/oracle/dalvik/**/*")
dependsOn(compileDalvikLibs)
}
afterEvaluate {
addNative(project, "surface", ["android"])
addNative(project, "vmlauncher", ["android"])
if (compileNativeText) {
addNative(project, "fontNativeFreetype", ["android"])
}
tasks["javahAndroidVmlauncher"].dependsOn(compileDalvikLibs)
tasks["native"].dependsOn("nativeSurface", "nativeVmlauncher")
if (compileNativeText) {
tasks["native"].dependsOn("nativeFontNativeFreetype")
}
sdkAndroid {
dependsOn(jarDalvikLibs)
doLast {
def props = project.ext["ANDROID"]
copy {
from(
"modules/graphics/build/libs/vmlauncher/android/${props.library(props.vmlauncher.lib)}",
"modules/graphics/build/libs/surface/android/${props.library(props.surface.lib)}"
)
into ("build/android-sdk/dalvik/${props.libDest}")
}
copy {
from ("modules/graphics/build/libs/${props.jfxdvklib}")
into ("build/android-sdk/dalvik/lib")
}
if (compileNativeText) {
copy {
from ("modules/graphics/build/libs/fontNativeFreetype/android")
into ("build/android-sdk/rt/$ANDROID.libDest")
}
}
}
}
}
}
project(":controls") {
afterEvaluate {
task compileControlsJavaAndroid(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/android")
dependencyCacheDir = file("modules/controls/build/dependency-cache")
source file("modules/controls/src/android/java")
}
task processControlsResourcesAndroid() {
copy {
from ("modules/controls/src/android/resources")
into ("modules/controls/build/resources/android")
}
}
sdkAndroid {
dependsOn(compileControlsJavaAndroid, processControlsResourcesAndroid)
}
}
}
project(":web") {
apply plugin: 'java'
compileJava {
enabled = false
}
afterEvaluate {
if (!BUILD_CLOSED) {
logger.warn("OpenJFX build. Skipping webkit build on Android.")
return
}
def compileWebJavaAndroid = task("compileWebJavaAndroid",
type: JavaCompile, group: "Build") {
dependsOn(project(":graphics").classes, project(":base").classes)
description = "Task compiles web component for Android."
classpath = files(
project(":controls").sourceSets.main.output.classesDir,
project(":graphics").sourceSets.main.output.classesDir,
project(":base").sourceSets.main.output.classesDir
)
destinationDir = file("modules/web/build/classes/android")
dependencyCacheDir = file("modules/web/build/dependency-cache")
source file("modules/web/src/android/java")
}
def jarWebJavaAndroid = task("jarWebJavaAndroid",
type: Jar, group: "Build") {
description = "Creates web.jar for Android."
dependsOn(compileWebJavaAndroid)
archiveName = "web.jar"
includeEmptyDirs = false
destinationDir = project.file("build/libs/android")
from("build/classes/android")
}
addNative(project, "webview", ["android"])
addNative(project, "dvkwebview", ["android"])
javahAndroidWebview.dependsOn(compileWebJavaAndroid)
javahAndroidDvkwebview.dependsOn(compileWebJavaAndroid)
jfxrtAndroid {
from "modules/web/build/classes/android"
}
sdkAndroid {
dependsOn(jarWebJavaAndroid)
doLast {
def props = project.ext["ANDROID"]
copy {
from(
"modules/web/build/libs/dvkwebview/android/${props.library(props.dvkwebview.lib)}"
)
into ("build/android-sdk/dalvik/${props.libDest}")
}
copy {
from ("modules/web/build/libs/webview/android/${props.library(props.webview.lib)}")
into ("build/android-sdk/rt/${props.libDest}")
}
}
}
}
}
ANDROID.jfxrtJarExcludes = [
"**/*.hlsl",
"com/sun/glass/ui/win",
"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/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"
]
def text = (compileNativeText) ? "native" : "t2k"
ANDROID.javafxPlatformProperties = """
javafx.platform=android
android.glass.platform=Lens
android.glass.lens=eglfb
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.log.lens=FINE
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"]
if (project.hasProperty("DALVIK_VM")) {
ccFlags += ["-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"]
ANDROID.vmlauncher = [:]
ANDROID.vmlauncher.classpath = files("$sdk/platforms/$sdk_target/android.jar",
"modules/graphics/build/classes/android")
ANDROID.vmlauncher.javahSource = files("modules/graphics/build/classes/android")
ANDROID.vmlauncher.javahClasspath = files("modules/graphics/build/classes/android",
"$sdk/platforms/$sdk_target/android.jar")
ANDROID.vmlauncher.javahInclude = [
"com/oracle/dalvik/*"
]
ANDROID.vmlauncher.nativeSource = [
file("modules/graphics/src/android/native/VMLauncher.c"),
file("modules/graphics/src/android/native/NativePipeReader.c"),
file("modules/graphics/src/android/native/DalvikProxySelector.c")
]
ANDROID.vmlauncher.compiler = compiler
ANDROID.vmlauncher.linker = linker
ANDROID.vmlauncher.lib = "vmlauncher"
ANDROID.vmlauncher.ccFlags = [ccFlags, ccWarnFlags, ccArchFlags, ccOptFlags,
ccDebugFlags, ccDefaultIncludeFlags].flatten()
ANDROID.vmlauncher.linkFlags = [linkFlags, "-llog"].flatten()
ANDROID.surface = [:]
ANDROID.surface.javahInclude = [
"com/sun/glass/events/*",
"com/sun/glass/ui/android/*"
]
ANDROID.surface.nativeSource = [
file("modules/graphics/src/main/native-glass/lens/android")
]
ANDROID.surface.compiler = compiler
ANDROID.surface.linker = linker
ANDROID.surface.lib = "glass_lens_android"
ANDROID.surface.ccFlags = [ccFlags, ccWarnFlags, ccArchFlags, ccOptFlags,
ccDebugFlags, ccDefaultIncludeFlags, "-Isrc/main/native-glass/lens"].flatten()
ANDROID.surface.linkFlags = [linkFlags, "-ldl", "-landroid", "-llog"].flatten()
ANDROID.webview = [:]
ANDROID.webview.javahSource = files("modules/web/build/classes/android")
ANDROID.webview.javahClasspath = files("modules/web/build/classes/android")
ANDROID.webview.javahInclude = [
"com/sun/webkit/NativeWebView.class"
]
ANDROID.webview.nativeSource = [
file("modules/web/src/android/native/native_webview.c")
]
ANDROID.webview.compiler = compiler
ANDROID.webview.linker = linker
ANDROID.webview.lib = "webview"
ANDROID.webview.ccFlags = [ccFlags, ccWarnFlags, ccArchFlags, ccOptFlags,
ccDebugFlags, ccDefaultIncludeFlags].flatten()
ANDROID.webview.linkFlags = [linkFlags, "-ldl", "-llog"].flatten()
ANDROID.dvkwebview = [:]
ANDROID.dvkwebview.javahSource = files("modules/web/build/classes/android")
ANDROID.dvkwebview.javahClasspath = files("modules/web/build/classes/android")
ANDROID.dvkwebview.javahInclude = [
"com/sun/webkit/NativeWebView.class"
]
ANDROID.dvkwebview.nativeSource = [
file("modules/web/src/android/native/android_webview.c")
]
ANDROID.dvkwebview.compiler = compiler
ANDROID.dvkwebview.linker = linker
ANDROID.dvkwebview.lib = "android_webview"
ANDROID.dvkwebview.ccFlags = [ccFlags, ccWarnFlags, ccArchFlags, ccOptFlags,
ccDebugFlags, ccDefaultIncludeFlags].flatten()
ANDROID.dvkwebview.linkFlags = [linkFlags, "-ldl", "-llog"].flatten()
ANDROID.glass = [:]
ANDROID.glass.variants = ["eglfb", "lensport"]
ANDROID.glass.javahInclude = [
"com/sun/glass/events/**",
"com/sun/glass/ui/*",
"com/sun/glass/ui/android/*",
"com/sun/glass/ui/lens/*"]
ANDROID.glass.lensport = [:]
ANDROID.glass.lensport.nativeSource = [
file("modules/graphics/src/main/native-glass/lens/lensport"),
file("modules/graphics/src/main/native-glass/lens/lensport/initPlatform.c"),
file("modules/graphics/src/main/native-glass/lens/lensport/wrapped_functions.c")
]
ANDROID.glass.lensport.compiler = compiler
ANDROID.glass.lensport.linker = linker
ANDROID.glass.lensport.lib = "lens_porting"
ANDROID.glass.lensport.ccFlags = [ccFlags, ccWarnFlags, ccArchFlags, ccOptFlags,
ccDebugFlags, ccDefaultIncludeFlags, "-DISEGLFB", "-DLENSPORT",
"-I", file("modules/graphics/src/main/native-glass/lens")].flatten()
ANDROID.glass.lensport.linkFlags = [linkFlags, "-ldl", "-llog"].flatten()
ANDROID.glass.eglfb = [:]
ANDROID.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/android"),
file("modules/graphics/src/main/native-glass/lens/wm/screen/androidScreen.c")
]
ANDROID.glass.eglfb.compiler = compiler
ANDROID.glass.eglfb.linker = linker
ANDROID.glass.eglfb.lib = "glass_lens_eglfb"
ANDROID.glass.eglfb.ccFlags = [ccFlags, ccWarnFlags, ccArchFlags, ccOptFlags,
ccDebugFlags, ccDefaultIncludeFlags].flatten()
ANDROID.glass.eglfb.linkFlags = [linkFlags, "-ldl", "-landroid", "-llog"].flatten()
ANDROID.prism = [:]
ANDROID.prism.javahInclude = ["com/sun/prism/impl/**/*", "com/sun/prism/PresentableState*"]
ANDROID.prism.nativeSource = file("modules/graphics/src/main/native-prism")
ANDROID.prism.compiler = compiler
ANDROID.prism.ccFlags = [ccFlags, ccWarnFlags, ccArchFlags, ccOptFlags,
ccDebugFlags, ccDefaultIncludeFlags].flatten()
ANDROID.prism.linker = linker
ANDROID.prism.linkFlags = [linkFlags].flatten()
ANDROID.prism.lib = "prism_common"
ANDROID.prismSW = [:]
ANDROID.prismSW.javahInclude = ["com/sun/pisces/**/*"]
ANDROID.prismSW.nativeSource = file("modules/graphics/src/main/native-prism-sw")
ANDROID.prismSW.compiler = compiler
ANDROID.prismSW.ccFlags = [ccFlags, ccWarnFlags, ccArchFlags, ccOptFlags,
ccDebugFlags, ccDefaultIncludeFlags].flatten()
ANDROID.prismSW.linker = linker
ANDROID.prismSW.linkFlags = [linkFlags].flatten()
ANDROID.prismSW.lib = "prism_sw"
ANDROID.decora = [:]
ANDROID.decora.compiler = compiler
ANDROID.decora.ccFlags = [ccFlags, ccWarnFlags, ccArchFlags, ccOptFlags,
ccDebugFlags, ccDefaultIncludeFlags].flatten()
ANDROID.decora.linker = linker
ANDROID.decora.linkFlags = [linkFlags].flatten()
ANDROID.decora.lib = "decora_sse"
ANDROID.iio = [:]
ANDROID.iio.javahInclude = ["com/sun/javafx/iio/**/*"]
ANDROID.iio.nativeSource = [
file("modules/graphics/src/main/native-iio"),
file("modules/graphics/src/main/native-iio/libjpeg7")]
ANDROID.iio.compiler = compiler
ANDROID.iio.ccFlags = [ccFlags, ccWarnFlags, ccArchFlags, ccOptFlags,
ccDebugFlags, ccDefaultIncludeFlags].flatten()
ANDROID.iio.linker = linker
ANDROID.iio.linkFlags = [linkFlags].flatten()
ANDROID.iio.lib = "javafx_iio"
ANDROID.prismES2 = [:]
ANDROID.prismES2.variants = ["eglfb"]
ANDROID.prismES2.javahInclude = ["com/sun/prism/es2/**/*"]
ANDROID.prismES2.eglfb = [:]
ANDROID.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")]
ANDROID.prismES2.eglfb.compiler = compiler
ANDROID.prismES2.eglfb.ccFlags = [ccFlags, ccWarnFlags, ccArchFlags, ccOptFlags,
ccDebugFlags, ccDefaultIncludeFlags, "-DIS_EGLFB"].flatten()
ANDROID.prismES2.eglfb.linker = linker
ANDROID.prismES2.eglfb.linkFlags = [linkFlags, "-ldl", "-llog", "-lGLESv2", "-lEGL"].flatten()
ANDROID.prismES2.eglfb.lib = "prism_es2_eglfb"
ANDROID.font = [:]
ANDROID.font.javahInclude = [
"com/sun/javafx/font/**/*",
"com/sun/javafx/text/**/*"]
ANDROID.font.nativeSource = [file("$closedDir/javafx-font-native/src")]
ANDROID.font.compiler = compiler
ANDROID.font.ccFlags = [ccFlags, ccWarnFlags, ccArchFlags, ccOptFlags,
ccDebugFlags, ccDefaultIncludeFlags].flatten()
ANDROID.font.linker = linker
ANDROID.font.linkFlags = [linkFlags].flatten()
ANDROID.font.lib = "javafx_font"
if (BUILD_CLOSED) {
ANDROID.fontT2K = [:]
ANDROID.fontT2K.javahInclude = ["com/sun/javafx/font/t2k/**/*"]
ANDROID.fontT2K.nativeSource = [
file("$closedDir/javafx-font-t2k-native/src"),
file("$closedDir/javafx-font-t2k-native/src/layout")]
ANDROID.fontT2K.compiler = compiler
ANDROID.fontT2K.ccFlags = [ccFlags, "-DLE_STANDALONE", "-fno-exceptions", "-fno-rtti", ccWarnFlags,
ccArchFlags, ccOptFlags, ccDebugFlags, ccDefaultIncludeFlags].flatten()
ANDROID.fontT2K.linker = linker
ANDROID.fontT2K.linkFlags = [linkFlags, "-lstdc++"].flatten()
ANDROID.fontT2K.lib = "javafx_font_t2k"
}
if (compileNativeText) {
ANDROID.fontNativeFreetype = [:]
ANDROID.fontNativeFreetype.javahInclude = [
"com/sun/javafx/font/freetype/OSFreetype.class"
]
ANDROID.fontNativeFreetype.nativeSource = [
file("modules/graphics/src/main/native-font/freetype.c")
]
ANDROID.fontNativeFreetype.compiler = compiler
ANDROID.fontNativeFreetype.linker = linker
ANDROID.fontNativeFreetype.lib = "javafx_font_freetype"
ccFlags += ["-D_ENABLE_HARFBUZZ"]
ANDROID.fontNativeFreetype.ccFlags =
[ccFlags, ccWarnFlags, ccArchFlags, ccOptFlags,
ccDebugFlags, ccDefaultIncludeFlags,
"-I$freetypeDir/include", "-I$freetypeDir/include/freetype2"].flatten()
ANDROID.fontNativeFreetype.linkFlags =
[linkFlags, "-llog",
"-L$freetypeDir/lib", "$freetypeDir/lib/libfreetype.a"].flatten()
}
ANDROID.media = [:]
ANDROID.media.compiler = compiler
ANDROID.media.linker = linker
ANDROID.media.lib = file("$compilerHome/bin/${toolchainArchs[0]}-ar").getAbsolutePath()