1 /*
   2  * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 ext.IOS = [:]
  27 
  28 if (BUILD_CLOSED) {
  29     fetchExternalTools('IOS',
  30       ["ios-libs-08.tgz"],
  31       rootProject.CROSS_TOOLS_DIR, rootProject.IS_IMPORT_CROSS_TOOLS)
  32 }
  33 
  34 // TODO Check for presence of iOS tools
  35 IOS.canBuild = IS_MAC
  36 if (!IOS.canBuild) return;
  37 
  38 IOS.compileSwing = false;
  39 IOS.compileSWT = false;
  40 IOS.compileFXPackager = false;
  41 
  42 defineProperty("USE_LIPO", "false")
  43 IOS.useLipo = Boolean.parseBoolean(USE_LIPO)
  44 
  45 defineProperty("GENERATE_SYMBOLS", "false")
  46 IOS.generateSymbols = Boolean.parseBoolean(GENERATE_SYMBOLS)
  47 
  48 defineProperty("BUILD_IOS_TOOLS", "true")
  49 ext.IS_BUILD_IOS_TOOLS = Boolean.parseBoolean(BUILD_IOS_TOOLS)
  50 
  51 IOS.generateSymbolsExcludes = [
  52     "libprism_sw.a",
  53     "libdecora_sse_armv7.a"
  54 ]
  55 
  56 defineProperty("IOS_VERSION", "7.0")
  57 
  58 // Lambda for naming the generated libs
  59 IOS.library = { name -> return "lib${name}.a" as String }
  60 
  61 IOS.libDest = "lib"
  62 
  63 IOS.jfxrtJarExcludes = [
  64     "**/*.hlsl",
  65     "com/sun/glass/ui/win",
  66     "com/sun/prism/d3d",
  67     "com/sun/prism/es2/gl/win",
  68     "com/sun/prism/null3d",
  69     "com/sun/scenario/effect/impl/hw/d3d",
  70 
  71     "com/sun/glass/events/mac",
  72     "com/sun/glass/ui/mac",
  73     "com/sun/prism/es2/gl/mac",
  74     "com/sun/glass/ui/android",
  75     "com/sun/glass/ui/gtk",
  76 
  77     "com/sun/glass/ui/lens",
  78     "com/sun/prism/es2/gl/eglfb",
  79     "com/sun/prism/es2/gl/eglx11",
  80     "com/sun/prism/es2/gl/x11",
  81 
  82     "com/sun/glass/ui/swt", // SWT glass
  83 
  84     "javafx/embed/swing", // Swing Interop
  85 
  86     "javafx/embed/swt", // SWT Interop
  87 ]
  88 
  89 def archArm = "armv7"
  90 def archArm64 = "arm64"
  91 def archX86 = "i386"
  92 def archX86_64 = "x86_64"
  93 def iPhoneOS = "iPhoneOS"
  94 def iPhoneSim = "iPhoneSimulator"
  95 
  96 String sdkPath(String platform) {
  97     return "/Applications/Xcode.app/Contents/Developer/Platforms/${platform}.platform/Developer/SDKs/${platform}${IOS_VERSION}.sdk";
  98 }
  99 
 100 def linkFlags = [
 101     "-static",
 102     "-framework", "Foundation",
 103     "-framework", "CoreGraphics",
 104     "-framework", "CoreText",
 105     "-framework", "UIKit",
 106     "-framework", "QuartzCore",
 107     "-framework", "OpenGLES"].flatten()
 108 
 109 def ccFlags = [
 110     "-miphoneos-version-min=6.0", "-fmessage-length=0", "-std=c99", "-fno-common",
 111     "-Wall", "-fno-strict-aliasing", "-fwrapv", "-fpascal-strings", "-fobjc-abi-version=2", "-fobjc-legacy-dispatch",
 112     "-I$JDK_HOME/include", "-I$JDK_HOME/include/darwin", "-c",
 113     IS_DEBUG_NATIVE ? ["-O0", "-DDEBUG", "-g"] : ["-O3", "-DNDEBUG"]].flatten()
 114 
 115 def compiler = "clang"
 116 def linker = "libtool"
 117 
 118 IOS.javafxPlatformProperties ="""javafx.platform=ios
 119 ios.javax.xml.stream.XMLInputFactory=com.sun.xml.stream.ZephyrParserFactory
 120 ios.javax.xml.stream.XMLOutputFactory=com.sun.xml.stream.ZephyrWriterFactory
 121 ios.javax.xml.stream.XMLEventFactory=com.sun.xml.stream.events.ZephyrEventFactory
 122 ios.jfxmedia.platforms=IOSPlatform
 123 ios.glass.platform=ios
 124 ios.prism.allowhidpi=true
 125 ios.prism.mintexturesize=16
 126 ios.prism.verbose=true
 127 ios.prism.static.libraries=true
 128 ios.prism.useNativeIIO=false"""
 129 
 130 IOS.glass = [:]
 131 IOS.glass.variants = ["arm", "arm64", "x86", "x86_64"];
 132 IOS.glass.javahInclude = [
 133     "com/sun/glass/events/**",
 134     "com/sun/glass/ui/*",
 135     "com/sun/glass/ui/ios/*"]
 136 IOS.glass.lib = "glass"
 137 
 138 IOS.glass.arm = [:]
 139 IOS.glass.arm.nativeSource = file("modules/graphics/src/main/native-glass/ios")
 140 IOS.glass.arm.compiler = compiler
 141 IOS.glass.arm.ccFlags = ["-x", "objective-c", ccFlags, "-arch", archArm, "-isysroot", sdkPath(iPhoneOS)].flatten()
 142 IOS.glass.arm.linker = linker
 143 IOS.glass.arm.linkFlags = ["-arch_only", archArm, "-syslibroot", sdkPath(iPhoneOS), linkFlags, "-L${sdkPath(iPhoneOS)}/usr/lib"].flatten()
 144 IOS.glass.arm.lib = "glass_${archArm}"
 145 
 146 IOS.glass.arm64 = [:]
 147 IOS.glass.arm64.nativeSource = file("modules/graphics/src/main/native-glass/ios")
 148 IOS.glass.arm64.compiler = compiler
 149 IOS.glass.arm64.ccFlags = ["-x", "objective-c", ccFlags, "-arch", archArm64, "-isysroot", sdkPath(iPhoneOS)].flatten()
 150 IOS.glass.arm64.linker = linker
 151 IOS.glass.arm64.linkFlags = ["-arch_only", archArm64, "-syslibroot", sdkPath(iPhoneOS), linkFlags, "-L${sdkPath(iPhoneOS)}/usr/lib"].flatten()
 152 IOS.glass.arm64.lib = "glass_${archArm64}"
 153 
 154 IOS.glass.x86 = [:]
 155 IOS.glass.x86.nativeSource = file("modules/graphics/src/main/native-glass/ios")
 156 IOS.glass.x86.compiler = compiler
 157 IOS.glass.x86.ccFlags = ["-x", "objective-c", ccFlags, "-arch", archX86, "-isysroot", sdkPath(iPhoneSim)].flatten()
 158 IOS.glass.x86.linker = linker
 159 IOS.glass.x86.linkFlags = ["-arch_only", archX86, "-syslibroot", sdkPath(iPhoneSim), linkFlags, "-L${sdkPath(iPhoneSim)}/usr/lib"].flatten()
 160 IOS.glass.x86.lib = "glass_${archX86}"
 161 
 162 IOS.glass.x86_64 = [:]
 163 IOS.glass.x86_64.nativeSource = file("modules/graphics/src/main/native-glass/ios")
 164 IOS.glass.x86_64.compiler = compiler
 165 IOS.glass.x86_64.ccFlags = ["-x", "objective-c", ccFlags, "-arch", archX86_64, "-isysroot", sdkPath(iPhoneSim)].flatten()
 166 IOS.glass.x86_64.linker = linker
 167 IOS.glass.x86_64.linkFlags = ["-arch_only", archX86_64, "-syslibroot", sdkPath(iPhoneSim), linkFlags, "-L${sdkPath(iPhoneSim)}/usr/lib"].flatten()
 168 IOS.glass.x86_64.lib = "glass_${archX86_64}"
 169 
 170 IOS.extensions = [:]
 171 IOS.extensions.variants = ["arm", "arm64", "x86", "x86_64"];
 172 IOS.extensions.javahSource = files("modules/extensions/build/classes/ios")
 173 IOS.extensions.javahClasspath = files("modules/extensions/build/classes/ios/")
 174 IOS.extensions.javahInclude = ["com/sun/javafx/ext/device/ios/**/*"]
 175 IOS.extensions.lib = "extensions_ios"
 176 
 177 IOS.extensions.arm = [:]
 178 IOS.extensions.arm.nativeSource = file("modules/extensions/src/ios/native-device/ios")
 179 IOS.extensions.arm.compiler = compiler
 180 IOS.extensions.arm.ccFlags = ["-x", "objective-c", ccFlags, "-arch", archArm, "-isysroot", sdkPath(iPhoneOS)].flatten()
 181 IOS.extensions.arm.linker = linker
 182 IOS.extensions.arm.linkFlags = ["-arch_only", archArm, "-syslibroot", sdkPath(iPhoneOS), linkFlags, "-L${sdkPath(iPhoneOS)}/usr/lib"].flatten()
 183 IOS.extensions.arm.lib = "extensions_ios_${archArm}"
 184 
 185 IOS.extensions.arm64 = [:]
 186 IOS.extensions.arm64.nativeSource = file("modules/extensions/src/ios/native-device/ios")
 187 IOS.extensions.arm64.compiler = compiler
 188 IOS.extensions.arm64.ccFlags = ["-x", "objective-c", ccFlags, "-arch", archArm64, "-isysroot", sdkPath(iPhoneOS)].flatten()
 189 IOS.extensions.arm64.linker = linker
 190 IOS.extensions.arm64.linkFlags = ["-arch_only", archArm64, "-syslibroot", sdkPath(iPhoneOS), linkFlags, "-L${sdkPath(iPhoneOS)}/usr/lib"].flatten()
 191 IOS.extensions.arm64.lib = "extensions_ios_${archArm64}"
 192 
 193 IOS.extensions.x86 = [:]
 194 IOS.extensions.x86.nativeSource = file("modules/extensions/src/ios/native-device/ios")
 195 IOS.extensions.x86.compiler = compiler
 196 IOS.extensions.x86.ccFlags = ["-x", "objective-c", ccFlags, "-arch", archX86, "-isysroot", sdkPath(iPhoneSim)].flatten()
 197 IOS.extensions.x86.linker = linker
 198 IOS.extensions.x86.linkFlags = ["-arch_only", archX86, "-syslibroot", sdkPath(iPhoneSim), linkFlags, "-L${sdkPath(iPhoneSim)}/usr/lib"].flatten()
 199 IOS.extensions.x86.lib = "extensions_ios_${archX86}"
 200 
 201 IOS.extensions.x86_64 = [:]
 202 IOS.extensions.x86_64.nativeSource = file("modules/extensions/src/ios/native-device/ios")
 203 IOS.extensions.x86_64.compiler = compiler
 204 IOS.extensions.x86_64.ccFlags = ["-x", "objective-c", ccFlags, "-arch", archX86_64, "-isysroot", sdkPath(iPhoneSim)].flatten()
 205 IOS.extensions.x86_64.linker = linker
 206 IOS.extensions.x86_64.linkFlags = ["-arch_only", archX86_64, "-syslibroot", sdkPath(iPhoneSim), linkFlags, "-L${sdkPath(iPhoneSim)}/usr/lib"].flatten()
 207 IOS.extensions.x86_64.lib = "extensions_ios_${archX86_64}"
 208 
 209 IOS.decora = [:]
 210 IOS.decora.variants = ["arm", "arm64"];
 211 IOS.decora.lib = "decora_sse"
 212 
 213 IOS.decora.arm = [:]
 214 IOS.decora.arm.compiler = compiler
 215 IOS.decora.arm.ccFlags = [ccFlags, "-arch", archArm, "-isysroot", sdkPath(iPhoneOS), "-ffast-math"].flatten()
 216 IOS.decora.arm.linker = linker
 217 IOS.decora.arm.linkFlags = ["-arch_only", archArm, "-syslibroot", sdkPath(iPhoneOS), linkFlags].flatten()
 218 IOS.decora.arm.lib = "decora_sse_${archArm}"
 219 
 220 IOS.decora.arm64 = [:]
 221 IOS.decora.arm64.compiler = compiler
 222 IOS.decora.arm64.ccFlags = [ccFlags, "-arch", archArm64, "-isysroot", sdkPath(iPhoneOS), "-ffast-math"].flatten()
 223 IOS.decora.arm64.linker = linker
 224 IOS.decora.arm64.linkFlags = ["-arch_only", archArm64, "-syslibroot", sdkPath(iPhoneOS), linkFlags].flatten()
 225 IOS.decora.arm64.lib = "decora_sse_${archArm64}"
 226 
 227 IOS.prism = [:]
 228 IOS.prism.lib = "prism_common"
 229 IOS.prism.javahInclude = ["com/sun/prism/impl/**/*", "com/sun/prism/PresentableState*"]
 230 IOS.prism.variants = ["arm", "arm64", "x86", "x86_64"];
 231 
 232 IOS.prism.arm = [:]
 233 IOS.prism.arm.nativeSource = file("modules/graphics/src/main/native-prism")
 234 IOS.prism.arm.compiler = compiler
 235 IOS.prism.arm.ccFlags = [ccFlags, "-arch", archArm, "-isysroot", sdkPath(iPhoneOS), "-DINLINE=inline"].flatten()
 236 IOS.prism.arm.linker = linker
 237 IOS.prism.arm.linkFlags = ["-arch_only", archArm, "-syslibroot", sdkPath(iPhoneOS), linkFlags].flatten()
 238 IOS.prism.arm.lib = "prism_common_${archArm}"
 239 
 240 IOS.prism.arm64 = [:]
 241 IOS.prism.arm64.nativeSource = file("modules/graphics/src/main/native-prism")
 242 IOS.prism.arm64.compiler = compiler
 243 IOS.prism.arm64.ccFlags = [ccFlags, "-arch", archArm64, "-isysroot", sdkPath(iPhoneOS), "-DINLINE=inline"].flatten()
 244 IOS.prism.arm64.linker = linker
 245 IOS.prism.arm64.linkFlags = ["-arch_only", archArm64, "-syslibroot", sdkPath(iPhoneOS), linkFlags].flatten()
 246 IOS.prism.arm64.lib = "prism_common_${archArm64}"
 247 
 248 IOS.prism.x86 = [:]
 249 IOS.prism.x86.nativeSource = file("modules/graphics/src/main/native-prism")
 250 IOS.prism.x86.compiler = compiler
 251 IOS.prism.x86.ccFlags = [ccFlags, "-arch", archX86, "-isysroot", sdkPath(iPhoneSim), "-DINLINE=inline"].flatten()
 252 IOS.prism.x86.linker = linker
 253 IOS.prism.x86.linkFlags = ["-arch_only", archX86, "-syslibroot", sdkPath(iPhoneSim), linkFlags].flatten()
 254 IOS.prism.x86.lib = "prism_common_${archX86}"
 255 
 256 IOS.prism.x86_64 = [:]
 257 IOS.prism.x86_64.nativeSource = file("modules/graphics/src/main/native-prism")
 258 IOS.prism.x86_64.compiler = compiler
 259 IOS.prism.x86_64.ccFlags = [ccFlags, "-arch", archX86_64, "-isysroot", sdkPath(iPhoneSim), "-DINLINE=inline"].flatten()
 260 IOS.prism.x86_64.linker = linker
 261 IOS.prism.x86_64.linkFlags = ["-arch_only", archX86_64, "-syslibroot", sdkPath(iPhoneSim), linkFlags].flatten()
 262 IOS.prism.x86_64.lib = "prism_common_${archX86_64}"
 263 
 264 IOS.prismSW = [:]
 265 IOS.prismSW.lib = "prism_sw"
 266 IOS.prismSW.javahInclude = ["com/sun/pisces/**/*"]
 267 IOS.prismSW.variants = ["arm", "arm64", "x86", "x86_64"];
 268 
 269 IOS.prismSW.arm = [:]
 270 IOS.prismSW.arm.nativeSource = file("modules/graphics/src/main/native-prism-sw")
 271 IOS.prismSW.arm.compiler = compiler
 272 IOS.prismSW.arm.ccFlags = [IOS.prism.arm.ccFlags].flatten()
 273 IOS.prismSW.arm.linker = linker
 274 IOS.prismSW.arm.linkFlags = [IOS.prism.arm.linkFlags].flatten()
 275 IOS.prismSW.arm.lib = "prism_sw_${archArm}"
 276 
 277 IOS.prismSW.arm64 = [:]
 278 IOS.prismSW.arm64.nativeSource = file("modules/graphics/src/main/native-prism-sw")
 279 IOS.prismSW.arm64.compiler = compiler
 280 IOS.prismSW.arm64.ccFlags = [IOS.prism.arm64.ccFlags].flatten()
 281 IOS.prismSW.arm64.linker = linker
 282 IOS.prismSW.arm64.linkFlags = [IOS.prism.arm64.linkFlags].flatten()
 283 IOS.prismSW.arm64.lib = "prism_sw_${archArm64}"
 284 
 285 IOS.prismSW.x86 = [:]
 286 IOS.prismSW.x86.nativeSource = file("modules/graphics/src/main/native-prism-sw")
 287 IOS.prismSW.x86.compiler = compiler
 288 IOS.prismSW.x86.ccFlags = [IOS.prism.x86.ccFlags].flatten()
 289 IOS.prismSW.x86.linker = linker
 290 IOS.prismSW.x86.linkFlags = [IOS.prism.x86.linkFlags].flatten()
 291 IOS.prismSW.x86.lib = "prism_sw_${archX86}"
 292 
 293 IOS.prismSW.x86_64 = [:]
 294 IOS.prismSW.x86_64.nativeSource = file("modules/graphics/src/main/native-prism-sw")
 295 IOS.prismSW.x86_64.compiler = compiler
 296 IOS.prismSW.x86_64.ccFlags = [IOS.prism.x86_64.ccFlags].flatten()
 297 IOS.prismSW.x86_64.linker = linker
 298 IOS.prismSW.x86_64.linkFlags = [IOS.prism.x86_64.linkFlags].flatten()
 299 IOS.prismSW.x86_64.lib = "prism_sw_${archX86_64}"
 300 
 301 IOS.iio = [:]
 302 IOS.iio.lib = "javafx_iio"
 303 IOS.iio.javahInclude = ["com/sun/javafx/iio/**/*"]
 304 IOS.iio.variants = ["arm", "arm64", "x86", "x86_64"];
 305 
 306 IOS.iio.arm = [:]
 307 IOS.iio.arm.nativeSource = [
 308     file("modules/graphics/src/main/native-iio"),
 309     file("modules/graphics/src/main/native-iio/ios"),
 310     file("modules/graphics/src/main/native-iio/libjpeg7")]
 311 IOS.iio.arm.compiler = compiler
 312 IOS.iio.arm.ccFlags = ["-x", "objective-c", ccFlags, "-arch", archArm, "-isysroot", sdkPath(iPhoneOS), "-ffast-math"].flatten()
 313 IOS.iio.arm.linker = linker
 314 IOS.iio.arm.linkFlags = ["-arch_only", archArm, "-syslibroot", sdkPath(iPhoneOS), linkFlags].flatten()
 315 IOS.iio.arm.lib = "javafx_iio_${archArm}"
 316 
 317 IOS.iio.arm64 = [:]
 318 IOS.iio.arm64.nativeSource = [IOS.iio.arm.nativeSource].flatten()
 319 IOS.iio.arm64.compiler = compiler
 320 IOS.iio.arm64.ccFlags = ["-x", "objective-c", ccFlags, "-arch", archArm64, "-isysroot", sdkPath(iPhoneOS), "-ffast-math"].flatten()
 321 IOS.iio.arm64.linker = linker
 322 IOS.iio.arm64.linkFlags = ["-arch_only", archArm64, "-syslibroot", sdkPath(iPhoneOS), linkFlags].flatten()
 323 IOS.iio.arm64.lib = "javafx_iio_${archArm64}"
 324 
 325 IOS.iio.x86 = [:]
 326 IOS.iio.x86.nativeSource = [IOS.iio.arm.nativeSource].flatten()
 327 IOS.iio.x86.compiler = compiler
 328 IOS.iio.x86.ccFlags = ["-x", "objective-c", ccFlags, "-arch", archX86, "-isysroot", sdkPath(iPhoneSim), "-ffast-math"].flatten()
 329 IOS.iio.x86.linker = linker
 330 IOS.iio.x86.linkFlags = ["-arch_only", archX86, "-syslibroot", sdkPath(iPhoneSim), linkFlags].flatten()
 331 IOS.iio.x86.lib = "javafx_iio_${archX86}"
 332 
 333 IOS.iio.x86_64 = [:]
 334 IOS.iio.x86_64.nativeSource = [IOS.iio.arm.nativeSource].flatten()
 335 IOS.iio.x86_64.compiler = compiler
 336 IOS.iio.x86_64.ccFlags = ["-x", "objective-c", ccFlags, "-arch", archX86_64, "-isysroot", sdkPath(iPhoneSim), "-ffast-math"].flatten()
 337 IOS.iio.x86_64.linker = linker
 338 IOS.iio.x86_64.linkFlags = ["-arch_only", archX86_64, "-syslibroot", sdkPath(iPhoneSim), linkFlags].flatten()
 339 IOS.iio.x86_64.lib = "javafx_iio_${archX86_64}"
 340 
 341 IOS.prismES2 = [:]
 342 IOS.prismES2.lib = "prism_es2"
 343 IOS.prismES2.javahInclude = ["com/sun/prism/es2/**/*"]
 344 IOS.prismES2.variants = ["arm", "arm64", "x86", "x86_64"];
 345 
 346 IOS.prismES2.arm = [:]
 347 IOS.prismES2.arm.nativeSource = [
 348     file("modules/graphics/src/main/native-prism-es2"),
 349     file("modules/graphics/src/main/native-prism-es2/GL"),
 350     file("modules/graphics/src/main/native-prism-es2/ios")
 351 ]
 352 IOS.prismES2.arm.compiler = compiler
 353 IOS.prismES2.arm.ccFlags = ["-x", "objective-c", ccFlags, "-arch", archArm, "-isysroot", sdkPath(iPhoneOS)].flatten()
 354 IOS.prismES2.arm.linker = linker
 355 IOS.prismES2.arm.linkFlags = ["-arch_only", archArm, "-syslibroot", sdkPath(iPhoneOS), linkFlags].flatten()
 356 IOS.prismES2.arm.lib = "prism_es2_${archArm}"
 357 
 358 IOS.prismES2.arm64 = [:]
 359 IOS.prismES2.arm64.nativeSource = [IOS.prismES2.arm.nativeSource].flatten()
 360 IOS.prismES2.arm64.compiler = compiler
 361 IOS.prismES2.arm64.ccFlags = ["-x", "objective-c", ccFlags, "-arch", archArm64, "-isysroot", sdkPath(iPhoneOS)].flatten()
 362 IOS.prismES2.arm64.linker = linker
 363 IOS.prismES2.arm64.linkFlags = ["-arch_only", archArm64, "-syslibroot", sdkPath(iPhoneOS), linkFlags].flatten()
 364 IOS.prismES2.arm64.lib = "prism_es2_${archArm64}"
 365 
 366 IOS.prismES2.x86 = [:]
 367 IOS.prismES2.x86.nativeSource = [IOS.prismES2.arm.nativeSource].flatten()
 368 IOS.prismES2.x86.compiler = compiler
 369 IOS.prismES2.x86.ccFlags = ["-x", "objective-c", ccFlags, "-arch", archX86, "-isysroot", sdkPath(iPhoneSim)].flatten()
 370 IOS.prismES2.x86.linker = linker
 371 IOS.prismES2.x86.linkFlags = ["-arch_only", archX86, "-syslibroot", sdkPath(iPhoneSim), linkFlags].flatten()
 372 IOS.prismES2.x86.lib = "prism_es2_${archX86}"
 373 
 374 IOS.prismES2.x86_64 = [:]
 375 IOS.prismES2.x86_64.nativeSource = [IOS.prismES2.arm.nativeSource].flatten()
 376 IOS.prismES2.x86_64.compiler = compiler
 377 IOS.prismES2.x86_64.ccFlags = ["-x", "objective-c", ccFlags, "-arch", archX86_64, "-isysroot", sdkPath(iPhoneSim)].flatten()
 378 IOS.prismES2.x86_64.linker = linker
 379 IOS.prismES2.x86_64.linkFlags = ["-arch_only", archX86_64, "-syslibroot", sdkPath(iPhoneSim), linkFlags].flatten()
 380 IOS.prismES2.x86_64.lib = "prism_es2_${archX86_64}"
 381 
 382 def closedDir = file("$projectDir/../rt-closed")
 383 IOS.font = [:]
 384 IOS.font.lib = "javafx_font"
 385 IOS.font.javahInclude = [
 386         "com/sun/javafx/font/**/*",
 387         "com/sun/javafx/text/**/*"]
 388 IOS.font.variants = ["arm", "arm64", "x86", "x86_64"];
 389 
 390 IOS.font.arm = [:]
 391 IOS.font.arm.nativeSource = [file("modules/graphics/src/main/native-font")]
 392 IOS.font.arm.compiler = compiler
 393 IOS.font.arm.ccFlags = ["-DJFXFONT_PLUS", ccFlags, "-arch", archArm, "-isysroot", sdkPath(iPhoneOS)].flatten()
 394 IOS.font.arm.linker = linker
 395 IOS.font.arm.linkFlags = ["-arch_only", archArm, "-syslibroot", sdkPath(iPhoneOS), linkFlags].flatten()
 396 IOS.font.arm.lib = "javafx_font_${archArm}"
 397 
 398 IOS.font.arm64 = [:]
 399 IOS.font.arm64.nativeSource = [IOS.font.arm.nativeSource].flatten()
 400 IOS.font.arm64.compiler = compiler
 401 IOS.font.arm64.ccFlags = ["-DJFXFONT_PLUS", ccFlags, "-arch", archArm64, "-isysroot", sdkPath(iPhoneOS)].flatten()
 402 IOS.font.arm64.linker = linker
 403 IOS.font.arm64.linkFlags = ["-arch_only", archArm64, "-syslibroot", sdkPath(iPhoneOS), linkFlags].flatten()
 404 IOS.font.arm64.lib = "javafx_font_${archArm64}"
 405 
 406 IOS.font.x86 = [:]
 407 IOS.font.x86.nativeSource = [IOS.font.arm.nativeSource].flatten()
 408 IOS.font.x86.compiler = compiler
 409 IOS.font.x86.ccFlags = ["-DJFXFONT_PLUS", ccFlags, "-arch", archX86, "-isysroot", sdkPath(iPhoneSim)].flatten()
 410 IOS.font.x86.linker = linker
 411 IOS.font.x86.linkFlags = ["-arch_only", archX86, "-syslibroot", sdkPath(iPhoneSim), linkFlags].flatten()
 412 IOS.font.x86.lib = "javafx_font_${archX86}"
 413 
 414 IOS.font.x86_64 = [:]
 415 IOS.font.x86_64.nativeSource = [IOS.font.arm.nativeSource].flatten()
 416 IOS.font.x86_64.compiler = compiler
 417 IOS.font.x86_64.ccFlags = ["-DJFXFONT_PLUS", ccFlags, "-arch", archX86_64, "-isysroot", sdkPath(iPhoneSim)].flatten()
 418 IOS.font.x86_64.linker = linker
 419 IOS.font.x86_64.linkFlags = ["-arch_only", archX86_64, "-syslibroot", sdkPath(iPhoneSim), linkFlags].flatten()
 420 IOS.font.x86_64.lib = "javafx_font_${archX86_64}"
 421 
 422 IOS.fontT2K = [:]
 423 IOS.fontT2K.lib = "javafx_font_t2k"
 424 IOS.fontT2K.javahInclude = ["com/sun/javafx/font/t2k/**/*"]
 425 IOS.fontT2K.variants = ["arm", "arm64", "x86", "x86_64"];
 426 
 427 IOS.fontT2K.arm = [:]
 428 IOS.fontT2K.arm.nativeSource = [
 429         file("$closedDir/javafx-font-t2k-native/src"),
 430         file("$closedDir/javafx-font-t2k-native/src/layout")]
 431 IOS.fontT2K.arm.compiler = compiler
 432 IOS.fontT2K.arm.ccFlags = ["-DJFXFONT_PLUS", "-DLE_STANDALONE", ccFlags, "-arch", archArm, "-isysroot", sdkPath(iPhoneOS)].flatten()
 433 IOS.fontT2K.arm.linker = linker
 434 IOS.fontT2K.arm.linkFlags = ["-arch_only", archArm, "-syslibroot", sdkPath(iPhoneOS), linkFlags].flatten()
 435 IOS.fontT2K.arm.lib = "javafx_font_t2k_${archArm}"
 436 
 437 IOS.fontT2K.arm64 = [:]
 438 IOS.fontT2K.arm64.nativeSource = [IOS.fontT2K.arm.nativeSource].flatten()
 439 IOS.fontT2K.arm64.compiler = compiler
 440 IOS.fontT2K.arm64.ccFlags = ["-DJFXFONT_PLUS", "-DLE_STANDALONE", ccFlags, "-arch", archArm64, "-isysroot", sdkPath(iPhoneOS)].flatten()
 441 IOS.fontT2K.arm64.linker = linker
 442 IOS.fontT2K.arm64.linkFlags = ["-arch_only", archArm64, "-syslibroot", sdkPath(iPhoneOS), linkFlags].flatten()
 443 IOS.fontT2K.arm64.lib = "javafx_font_t2k_${archArm64}"
 444 
 445 IOS.fontT2K.x86 = [:]
 446 IOS.fontT2K.x86.nativeSource = [IOS.fontT2K.arm.nativeSource].flatten()
 447 IOS.fontT2K.x86.compiler = compiler
 448 IOS.fontT2K.x86.ccFlags = ["-DJFXFONT_PLUS", "-DLE_STANDALONE", ccFlags, "-arch", archX86, "-isysroot", sdkPath(iPhoneSim)].flatten()
 449 IOS.fontT2K.x86.linker = linker
 450 IOS.fontT2K.x86.linkFlags = ["-arch_only", archX86, "-syslibroot", sdkPath(iPhoneSim), linkFlags].flatten()
 451 IOS.fontT2K.x86.lib = "javafx_font_t2k_${archX86}"
 452 
 453 IOS.fontT2K.x86_64 = [:]
 454 IOS.fontT2K.x86_64.nativeSource = [IOS.fontT2K.arm.nativeSource].flatten()
 455 IOS.fontT2K.x86_64.compiler = compiler
 456 IOS.fontT2K.x86_64.ccFlags = ["-DJFXFONT_PLUS", "-DLE_STANDALONE", ccFlags, "-arch", archX86_64, "-isysroot", sdkPath(iPhoneSim)].flatten()
 457 IOS.fontT2K.x86_64.linker = linker
 458 IOS.fontT2K.x86_64.linkFlags = ["-arch_only", archX86_64, "-syslibroot", sdkPath(iPhoneSim), linkFlags].flatten()
 459 IOS.fontT2K.x86_64.lib = "javafx_font_t2k_${archX86_64}"
 460 
 461 IOS.webview = [:]
 462 IOS.webview.lib = "javafx_ios_webnode"
 463 IOS.webview.javahInclude = ["javafx/scene/web/*"]
 464 IOS.webview.variants = ["arm", "arm64", "x86", "x86_64"];
 465 
 466 IOS.webview.arm = [:]
 467 IOS.webview.arm.nativeSource = file("modules/web/src/ios/native")
 468 IOS.webview.arm.compiler = compiler
 469 IOS.webview.arm.ccFlags = [ccFlags, "-arch", archArm, "-isysroot", sdkPath(iPhoneOS)].flatten()
 470 IOS.webview.arm.linker = linker
 471 IOS.webview.arm.linkFlags = ["-arch_only", archArm, "-syslibroot", sdkPath(iPhoneOS), linkFlags].flatten()
 472 IOS.webview.arm.lib = "javafx_ios_webnode_${archArm}"
 473 
 474 IOS.webview.arm64 = [:]
 475 IOS.webview.arm64.nativeSource = file("modules/web/src/ios/native")
 476 IOS.webview.arm64.compiler = compiler
 477 IOS.webview.arm64.ccFlags = [ccFlags, "-arch", archArm64, "-isysroot", sdkPath(iPhoneOS)].flatten()
 478 IOS.webview.arm64.linker = linker
 479 IOS.webview.arm64.linkFlags = ["-arch_only", archArm64, "-syslibroot", sdkPath(iPhoneOS), linkFlags].flatten()
 480 IOS.webview.arm64.lib = "javafx_ios_webnode_${archArm64}"
 481 
 482 IOS.webview.x86 = [:]
 483 IOS.webview.x86.nativeSource = [IOS.webview.arm.nativeSource].flatten()
 484 IOS.webview.x86.compiler = compiler
 485 IOS.webview.x86.ccFlags = [ccFlags, "-arch", archX86, "-isysroot", sdkPath(iPhoneSim)].flatten()
 486 IOS.webview.x86.linker = linker
 487 IOS.webview.x86.linkFlags = ["-arch_only", archX86, "-syslibroot", sdkPath(iPhoneSim), linkFlags].flatten()
 488 IOS.webview.x86.lib = "javafx_ios_webnode_${archX86}"
 489 
 490 IOS.webview.x86_64 = [:]
 491 IOS.webview.x86_64.nativeSource = [IOS.webview.arm.nativeSource].flatten()
 492 IOS.webview.x86_64.compiler = compiler
 493 IOS.webview.x86_64.ccFlags = [ccFlags, "-arch", archX86_64, "-isysroot", sdkPath(iPhoneSim)].flatten()
 494 IOS.webview.x86_64.linker = linker
 495 IOS.webview.x86_64.linkFlags = ["-arch_only", archX86_64, "-syslibroot", sdkPath(iPhoneSim), linkFlags].flatten()
 496 IOS.webview.x86_64.lib = "javafx_ios_webnode_${archX86_64}"
 497 
 498 project(":web") {
 499     apply plugin: 'java'
 500 
 501     compileJava {
 502         sourceSets.main.java.srcDirs = ['src/ios/java'];
 503     }
 504 
 505     sourceSets {
 506         main {
 507             java {
 508                 srcDirs= ['src/ios/java']
 509             }
 510         }
 511     }
 512     dependencies {
 513          compile files("../graphics/build/classes/ios");
 514      }
 515 
 516     afterEvaluate {
 517         sourceSets.main.java.srcDirs = ['src/ios/java'];
 518         def compileWebJavaIos = task("compileWebJavaIos",
 519             type: JavaCompile, group: "Build") {
 520 
 521             dependsOn(project(":graphics").classes, project(":base").classes)
 522             description = "Task compiles web component for iOS."
 523             classpath = files(
 524                 project(":controls").sourceSets.main.output.classesDir,
 525                 project(":graphics").sourceSets.main.output.classesDir,
 526                 project(":base").sourceSets.main.output.classesDir
 527             )
 528             destinationDir = file("modules/web/build/classes/ios")
 529             sourceSets.main.output.classesDir = destinationDir
 530             dependencyCacheDir = file("modules/web/build/dependency-cache")
 531             source file("modules/web/src/ios/java")
 532             doLast {
 533                 copy {
 534                     from "modules/web/src/ios/resources"
 535                     into "modules/web/build/resources/ios"
 536                 }
 537             }
 538         }
 539 
 540         def jarWebJavaIos = task("jarWebJavaIos",
 541             type: Jar, group: "Build") {
 542             description = "Creates web.jar for iOS."
 543             dependsOn(compileWebJavaIos)
 544             archiveName = "web.jar"
 545             includeEmptyDirs = false
 546             destinationDir = project.file("build/libs/ios")
 547             from("build/classes/ios")
 548         }
 549 
 550         addNative(project, "webview")
 551         javahIosWebview.dependsOn(compileWebJavaIos)
 552         javahIosWebview.classpath += files(project(":base").sourceSets.main.output.classesDir,
 553                              project(":graphics").sourceSets.main.output.classesDir,
 554                              project(":controls").sourceSets.main.output.classesDir)
 555 
 556         jfxrtIos {
 557             from ("modules/web/build/classes/ios", "modules/web/build/resources/main");
 558             exclude("com/sun/webkit", "com/sun/javafx/webkit");
 559         }
 560 
 561         sdkIos  {
 562             dependsOn(jarWebJavaIos)
 563             doLast {
 564                 def props = project.ext["IOS"]
 565                 copy {
 566                     if (props.useLipo) {
 567                         from ("modules/web/build/libs/webview/ios/${props.library(props.webview.lib)}")
 568                     } else {
 569                         from ("modules/web/build/libs/webview/ios")
 570                     }
 571                     into ("build/ios-sdk/rt/${props.libDest}")
 572                 }
 573             }
 574         }
 575     }
 576 }
 577 
 578 IOS.media = [:]
 579 IOS.media.lib = "jfxmedia"
 580 IOS.media.javahSource = files("modules/media/build/classes/main")
 581 IOS.media.javahClasspath = files("modules/media/build/classes/main")
 582 IOS.media.javahInclude = ["com/sun/media/jfxmediaimpl/*"]
 583 IOS.media.variants = ["arm", "arm64", "x86", "x86_64"];
 584 
 585 IOS.media.arm = [:]
 586 IOS.media.arm.nativeSource = [
 587     file("modules/media/src/main/native/jfxmedia/platform/ios"),
 588     file("modules/media/src/main/native/jfxmedia/platform/ios/jni")
 589 ]
 590 IOS.media.arm.compiler = compiler
 591 IOS.media.arm.ccFlags = ["-x", "objective-c", ccFlags, "-arch", archArm, "-isysroot", sdkPath(iPhoneOS)].flatten()
 592 IOS.media.arm.linker = linker
 593 IOS.media.arm.linkFlags = ["-arch_only", archArm, "-syslibroot", sdkPath(iPhoneOS), linkFlags].flatten()
 594 IOS.media.arm.lib = "jfxmedia_${archArm}"
 595 
 596 IOS.media.arm64 = [:]
 597 IOS.media.arm64.nativeSource = [IOS.media.arm.nativeSource].flatten()
 598 IOS.media.arm64.compiler = compiler
 599 IOS.media.arm64.ccFlags = ["-x", "objective-c", ccFlags, "-arch", archArm64, "-isysroot", sdkPath(iPhoneOS)].flatten()
 600 IOS.media.arm64.linker = linker
 601 IOS.media.arm64.linkFlags = ["-arch_only", archArm64, "-syslibroot", sdkPath(iPhoneOS), linkFlags].flatten()
 602 IOS.media.arm64.lib = "jfxmedia_${archArm64}"
 603 
 604 IOS.media.x86 = [:]
 605 IOS.media.x86.nativeSource = [IOS.media.arm.nativeSource].flatten()
 606 IOS.media.x86.compiler = compiler
 607 IOS.media.x86.ccFlags = ["-x", "objective-c", ccFlags, "-arch", archX86, "-isysroot", sdkPath(iPhoneSim)].flatten()
 608 IOS.media.x86.linker = linker
 609 IOS.media.x86.linkFlags = ["-arch_only", archX86, "-syslibroot", sdkPath(iPhoneSim), linkFlags].flatten()
 610 IOS.media.x86.lib = "jfxmedia_${archX86}"
 611 
 612 IOS.media.x86_64 = [:]
 613 IOS.media.x86_64.nativeSource = [IOS.media.arm.nativeSource].flatten()
 614 IOS.media.x86_64.compiler = compiler
 615 IOS.media.x86_64.ccFlags = ["-x", "objective-c", ccFlags, "-arch", archX86_64, "-isysroot", sdkPath(iPhoneSim)].flatten()
 616 IOS.media.x86_64.linker = linker
 617 IOS.media.x86_64.linkFlags = ["-arch_only", archX86_64, "-syslibroot", sdkPath(iPhoneSim), linkFlags].flatten()
 618 IOS.media.x86_64.lib = "jfxmedia_${archX86_64}"
 619 
 620 project(":media") {
 621     afterEvaluate {
 622         addNative(project, "media")
 623 
 624         sdkIos  {
 625             doLast {
 626                 def props = project.ext["IOS"]
 627                 copy {
 628                     if (props.useLipo) {
 629                         from ("modules/media/build/libs/media/ios/${props.library(props.media.lib)}")
 630                     } else {
 631                         from ("modules/media/build/libs/media/ios")
 632                     }
 633                     into ("build/ios-sdk/rt/${props.libDest}")
 634                 }
 635             }
 636         }
 637     }
 638 }
 639 
 640 project(":extensions") {
 641     apply plugin: 'java'
 642 
 643     compileJava {
 644         destinationDir = file("build/classes/ios")
 645         source file("src/ios/java")
 646     }
 647 
 648     jar {
 649         from("build/classes/ios")
 650     }
 651 
 652     afterEvaluate {
 653 
 654         addNative(project, "extensions")
 655         javahIosExtensions.classpath += files(project(":base").sourceSets.main.output.classesDir,
 656                              project(":graphics").sourceSets.main.output.classesDir)
 657 
 658         sdkIos  {
 659             doLast {
 660                 def props = project.ext["IOS"]
 661                 copy {
 662                     if (props.useLipo) {
 663                         from ("modules/extensions/build/libs/extensions/ios/${props.library(props.extensions.lib)}")
 664                     } else {
 665                         from ("modules/extensions/build/libs/extensions/ios")
 666                     }
 667                     into ("build/ios-sdk/rt/${props.libDest}")
 668                 }
 669             }
 670         }
 671     }
 672 }