64 def compiler = file("$compilerHome/bin/${compilerPrefix}gcc").getAbsolutePath()
65 def linker = file("$compilerHome/bin/${compilerPrefix}g++").getAbsolutePath()
66
67 // Declare whether this particular target file applies to the current system
68 ARMV6HF.canBuild = (IS_LINUX || IS_MAC) && compilerHome.exists() && sdk.exists()
69 if (!ARMV6HF.canBuild) {
70 if (!compilerHome.exists()) println "ERROR: Missing compiler $compilerHome"
71 if (!sdk.exists()) println "ERROR: Missing sdk $sdk"
72 fail("armv6hf missing required tools")
73 }
74
75 // Lambda for naming the generated libs
76 ARMV6HF.library = { name -> return "lib${name}.so" as String }
77
78 ARMV6HF.compileSwing = false;
79 ARMV6HF.compileSWT = false;
80 ARMV6HF.compileFXPackager = false;
81 ARMV6HF.compileWebnodeNative = false;
82 ARMV6HF.compileMediaNative = false;
83
84 ARMV6HF.includeLens = false
85 ARMV6HF.includeMonocle = true
86 ARMV6HF.includeNull3d = true
87 ARMV6HF.includeEGL = true
88 ARMV6HF.includeSwing = false
89 ARMV6HF.includeSWT = false
90 ARMV6HF.includeGTK = true
91
92 ARMV6HF.javafxPlatformDefault="monocle"
93
94 // Libraries end up in the sdk/lib/arm directory for arm builds
95 ARMV6HF.arch = "arm"
96 ARMV6HF.libDest = "lib"
97
98 def commonFlags = [
99 "-fno-strict-aliasing", "-fPIC", "-fno-omit-frame-pointer", // optimization flags
100 "-Wextra", "-Wall", "-Wno-unused", "-Wno-parentheses", "-Werror=implicit-function-declaration"] // warning flags
101 // Specify the compilation parameters and link parameters
102 def ccFlags = [
103 commonFlags, "-I$JDK_HOME/include", "-I$JDK_HOME/include/$jniPlatform", "-c",
104 IS_DEBUG_NATIVE ? ["-ggdb", "-DVERBOSE"] : ["-O2", "-DNDEBUG"]].flatten()
111 "-marm", "-mfloat-abi=hard", "-mfpu=vfp",
112 "-I$sdk/usr/include",
113 "-I$sdk/opt/vc/include",
114 "-I$sdk/opt/vc/include/interface/vcos/pthreads",
115 "-I$sdk/opt/vc/include/interface/vmcs_host/linux",
116 "-DOMAP3", "-DUSE_DISPMAN"].flatten();
117
118 //See if we should build for imx6
119 def imxHeader=file("$sdk/usr/include/linux/mxcfb.h")
120 if (imxHeader.exists()) {
121 extraCFlags = [extraCFlags,"-DIMX6_PLATFORM"].flatten();
122 }
123
124 def extraLFlags = [
125 linkFlags,
126 "-L$sdk/lib/arm-linux-gnueabihf",
127 "-L$sdk/usr/lib",
128 "-L$sdk/usr/lib/arm-linux-gnueabihf",
129 "-L$sdk/opt/vc/lib"].flatten()
130
131 def lensLFlags = [extraLFlags, "-lpthread", "-ludev", "-ldl", "-lm"].flatten()
132 def monocleCFlags = [
133 extraCFlags,
134 "-Werror",
135 "-I", file("${project("graphics").projectDir}/src/main/native-glass/monocle/")].flatten();
136 def monocleLFlags = [extraLFlags, "-ldl", "-lm"].flatten()
137
138 def fontCFlags = [extraCFlags].flatten()
139 def fontLFlags = [extraLFlags, "-ldl"].flatten()
140
141 def iioCFlags = [extraCFlags,
142 "-Wno-main" // suppress warnings about using main as a variable, 3rd party code
143 ].flatten()
144 def iioLFlags = [extraLFlags].flatten()
145
146 def es2EglfbCFlags = [extraCFlags, "-DIS_EGLFB", "-DLINUX"].flatten()
147 def es2EglfbLFlags = [extraLFlags].flatten()
148 def es2MonocleCFlags = [extraCFlags, "-DIS_EGLFB", "-DLINUX"].flatten()
149 def es2MonocleLFlags = [extraLFlags].flatten()
150
151 def es2X11CFlags = [extraCFlags, "-DUSE_XSHM", "-DDEBUG", "-DIS_EGLX11", "-DLINUX"].flatten()
173 gtkLFlags.addAll(gtkLFlags_pkgconfig.split(" "))
174
175 def monoclePlatformAdditions = """
176 monocle.glass.platform=Monocle
177 monocle.prism.order=es2,sw
178 monocle.prism.eglfb=true
179 monocle.prism.lcdtext=false
180 monocle.prism.maxvram=128m
181 monocle.prism.targetvram=112m
182 monocle.use.egl=true
183 monocle.use.gles2=true
184 monocle.embedded=monocle
185 monocle.com.sun.javafx.isEmbedded=true
186 monocle.doNativeComposite=true
187 monocle.com.sun.javafx.scene.control.skin.FXVK.cache=true
188 monocle.prism.glDepthSize=0
189 monocle.com.sun.javafx.gestures.zoom=true
190 monocle.com.sun.javafx.gestures.rotate=true
191 monocle.com.sun.javafx.gestures.scroll=true"""
192
193 def lensPlatformAdditions = """
194 directfb.com.sun.javafx.scene.control.skin.ListViewSkin.pannable=true
195 directfb.com.sun.javafx.scene.control.skin.TreeViewSkin.pannable=true
196 directfb.com.sun.javafx.scene.control.skin.TableViewSkin.pannable=true
197 directfb.glass.platform=Lens
198 directfb.glass.lens=dfb
199 directfb.prism.order=sw
200 directfb.com.sun.javafx.isEmbedded=true
201 directfb.com.sun.javafx.scene.control.skin.FXVK.cache=true
202 directfb.com.sun.javafx.gestures.zoom=true
203 directfb.com.sun.javafx.gestures.rotate=true
204 directfb.com.sun.javafx.gestures.scroll=true
205 eglfb.com.sun.javafx.scene.control.skin.ListViewSkin.pannable=true
206 eglfb.com.sun.javafx.scene.control.skin.TreeViewSkin.pannable=true
207 eglfb.com.sun.javafx.scene.control.skin.TableViewSkin.pannable=true
208 eglfb.glass.platform=Lens
209 eglfb.glass.lens=eglfb
210 eglfb.prism.order=es2
211 eglfb.prism.eglfb=true
212 eglfb.prism.lcdtext=false
213 eglfb.prism.maxvram=128m
214 eglfb.prism.targetvram=112m
215 eglfb.use.egl=true
216 eglfb.use.gles2=true
217 eglfb.embedded=eglfb
218 eglfb.com.sun.javafx.isEmbedded=true
219 eglfb.doNativeComposite=true
220 eglfb.com.sun.javafx.scene.control.skin.FXVK.cache=true
221 eglfb.prism.glDepthSize=0
222 eglfb.com.sun.javafx.gestures.zoom=true
223 eglfb.com.sun.javafx.gestures.rotate=true
224 eglfb.com.sun.javafx.gestures.scroll=true
225 fb.com.sun.javafx.scene.control.skin.ListViewSkin.pannable=true
226 fb.com.sun.javafx.scene.control.skin.TreeViewSkin.pannable=true
227 fb.com.sun.javafx.scene.control.skin.TableViewSkin.pannable=true
228 fb.glass.platform=Lens
229 fb.glass.lens=fb
230 fb.prism.order=sw
231 fb.com.sun.javafx.isEmbedded=true
232 fb.glass.restrictWindowToScreen=true
233 fb.com.sun.javafx.scene.control.skin.FXVK.cache=true
234 fb.com.sun.javafx.gestures.zoom=true
235 fb.com.sun.javafx.gestures.rotate=true
236 fb.com.sun.javafx.gestures.scroll=true
237 eglx11.com.sun.javafx.scene.control.skin.ListViewSkin.pannable=true
238 eglx11.com.sun.javafx.scene.control.skin.TreeViewSkin.pannable=true
239 eglx11.com.sun.javafx.scene.control.skin.TableViewSkin.pannable=true
240 eglx11.glass.platform=Lens
241 eglx11.glass.lens=eglx11
242 eglx11.prism.order=es2
243 eglx11.prism.eglx11=true
244 eglx11.prism.lcdtext=false
245 eglx11.prism.maxvram=128m
246 eglx11.prism.targetvram=112m
247 eglx11.use.egl=true
248 eglx11.use.gles2=true
249 eglx11.embedded=eglx11
250 eglx11.com.sun.javafx.isEmbedded=true
251 eglx11.com.sun.javafx.scene.control.skin.FXVK.cache=true
252 eglx11.prism.glDepthSize=0
253 eglx11.com.sun.javafx.gestures.zoom=true
254 eglx11.com.sun.javafx.gestures.rotate=true
255 eglx11.com.sun.javafx.gestures.scroll=true"""
256
257 def gtkPlatformAdditions = """
258 gtk.com.sun.javafx.scene.control.skin.ListViewSkin.pannable=true
259 gtk.com.sun.javafx.scene.control.skin.TreeViewSkin.pannable=true
260 gtk.com.sun.javafx.scene.control.skin.TableViewSkin.pannable=true
261 gtk.glass.platform=gtk
262 gtk.prism.order=sw
263 gtk.com.sun.javafx.isEmbedded=true
264 gtk.com.sun.javafx.scene.control.skin.FXVK.cache=true
265 gtk.com.sun.javafx.gestures.zoom=true
266 gtk.com.sun.javafx.gestures.rotate=true
267 gtk.com.sun.javafx.gestures.scroll=true"""
268
269 def pangoCCFlags = [extraCFlags, "-D_ENABLE_PANGO"];
270 def pangoLinkFlags = [extraLFlags];
271
272 def pangoCFlags_pkgconfig = "-pthread -I${sdk}/usr/include/pango-1.0 -I${sdk}/usr/include/freetype2 -I${sdk}/usr/include -I${sdk}/usr/include/glib-2.0 -I${sdk}/usr/lib/arm-linux-gnueabihf/glib-2.0/include"
273
274 def pangoLFlags_pkgconfig = "-L${sdk}/usr/lib/arm-linux-gnueabihf -lpangoft2-1.0 -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lglib-2.0"
275
276 pangoCCFlags.addAll(pangoCFlags_pkgconfig.split(" "))
277 pangoLinkFlags.addAll(pangoLFlags_pkgconfig.split(" "))
278
279 def freetypeCCFlags = [ext.IS_COMPILE_PANGO ? "-D_ENABLE_PANGO" :
280 ext.IS_COMPILE_HARFBUZZ ? "-D_ENABLE_HARFBUZZ" : ""]
281 def freetypeLinkFlags = []
282
283 def freetypeCFlags_pkgconfig = "-I${sdk}/usr/include/freetype2 -I${sdk}/usr/include"
284 def freetypeLFlags_pkgconfig = "-L${sdk}/usr/lib/arm-linux-gnueabihf -lfreetype"
285
286 freetypeCCFlags.addAll(freetypeCFlags_pkgconfig.split(" "))
287 freetypeLinkFlags.addAll(freetypeLFlags_pkgconfig.split(" "))
288
289 ARMV6HF.javafxPlatformProperties = "javafx.platform=${ARMV6HF.javafxPlatformDefault}"
290
291 ARMV6HF.glass = [:]
292 ARMV6HF.glass.javahInclude = [
293 "com/sun/glass/events/**",
294 "com/sun/glass/ui/*"]
295 ARMV6HF.glass.variants = [ ]
296 if (ARMV6HF.includeLens) {
297 ARMV6HF.glass.variants.addAll("eglfb", "directfb", "fb", "lensport" );
298 ARMV6HF.glass.javahInclude.addAll("com/sun/glass/ui/lens/*");
299 ARMV6HF.javafxPlatformProperties = ARMV6HF.javafxPlatformProperties + lensPlatformAdditions
300 }
301 if (ARMV6HF.includeMonocle) {
302 ARMV6HF.glass.variants.addAll("monocle", "monocle_x11");
303 ARMV6HF.glass.javahInclude.addAll(
304 "com/sun/glass/ui/monocle/*",
305 "com/sun/glass/ui/monocle/dispman/*",
306 "com/sun/glass/ui/monocle/mx6/*",
307 "com/sun/glass/ui/monocle/linux/*",
308 "com/sun/glass/ui/monocle/util/*",
309 "com/sun/glass/ui/monocle/x11/*");
310 ARMV6HF.javafxPlatformProperties = ARMV6HF.javafxPlatformProperties + monoclePlatformAdditions
311 }
312 if (ARMV6HF.includeGTK) {
313 ARMV6HF.glass.variants.addAll("gtk");
314 ARMV6HF.glass.javahInclude.addAll("com/sun/glass/ui/gtk/*");
315 ARMV6HF.javafxPlatformProperties = ARMV6HF.javafxPlatformProperties + gtkPlatformAdditions
316 }
317
318 ARMV6HF.glass.lib = "glass"
319
320 ARMV6HF.glass.lensport = [:]
321 ARMV6HF.glass.lensport.nativeSource = [
322 file("${project("graphics").projectDir}/src/main/native-glass/lens/lensport") ]
323 ARMV6HF.glass.lensport.compiler = compiler
324 ARMV6HF.glass.lensport.ccFlags = ["-ffast-math", extraCFlags, "-DLINUX", "-DISEGLFB",
325 "-DLENSPORT", "-I", file("${project("graphics").projectDir}/src/main/native-glass/lens/") ].flatten()
326 ARMV6HF.glass.lensport.linker = linker
327 ARMV6HF.glass.lensport.linkFlags = [lensLFlags].flatten()
328 ARMV6HF.glass.lensport.lib = "lens_porting"
329
330 ARMV6HF.glass.monocle = [:]
331 ARMV6HF.glass.monocle.nativeSource = [
332 file("${project("graphics").projectDir}/src/main/native-glass/monocle"),
333 file("${project("graphics").projectDir}/src/main/native-glass/monocle/dispman"),
334 file("${project("graphics").projectDir}/src/main/native-glass/monocle/mx6"),
335 file("${project("graphics").projectDir}/src/main/native-glass/monocle/linux"),
336 file("${project("graphics").projectDir}/src/main/native-glass/monocle/util") ]
337 ARMV6HF.glass.monocle.compiler = compiler
338 ARMV6HF.glass.monocle.ccFlags = monocleCFlags
339 ARMV6HF.glass.monocle.linker = linker
340 ARMV6HF.glass.monocle.linkFlags = monocleLFlags
341 ARMV6HF.glass.monocle.lib = "glass_monocle"
342
343 ARMV6HF.glass.monocle_x11 = [:]
344 ARMV6HF.glass.monocle_x11.nativeSource = [
345 file("${project("graphics").projectDir}/src/main/native-glass/monocle/util"),
346 file("${project("graphics").projectDir}/src/main/native-glass/monocle/x11") ]
347 ARMV6HF.glass.monocle_x11.compiler = compiler
348 ARMV6HF.glass.monocle_x11.ccFlags = monocleCFlags
349 ARMV6HF.glass.monocle_x11.linker = linker
350 ARMV6HF.glass.monocle_x11.linkFlags = [ monocleLFlags, "-lX11" ].flatten()
351 ARMV6HF.glass.monocle_x11.lib = "glass_monocle_x11"
352
353 ARMV6HF.glass.eglfb = [:]
354 // TODO when building headless, use lens/cursor/nullcursor/
355 // otherwise we use lens/cursor/fbCursor/ and lens/input/udev
356
357 // TODO when USE_RFB is specified use lens/rfb
358
359 // TODO use /eglfb/x11ContainerScreen when using eglfb and EGL_X11_FB_CONTAINER
360 // TODO use /headless/headlessScreen when using headless
361 ARMV6HF.glass.eglfb.nativeSource = [
362 file("${project("graphics").projectDir}/src/main/native-glass/lens"),
363 file("${project("graphics").projectDir}/src/main/native-glass/lens/wm"),
364 file("${project("graphics").projectDir}/src/main/native-glass/lens/cursor/fbCursor"),
365 file("${project("graphics").projectDir}/src/main/native-glass/lens/input/udev"),
366 file("${project("graphics").projectDir}/src/main/native-glass/lens/wm/screen/fbdevScreen.c") ]
367 ARMV6HF.glass.eglfb.compiler = compiler
368 ARMV6HF.glass.eglfb.ccFlags = ["-ffast-math", extraCFlags, "-DLINUX", "-DISEGLFB"].flatten()
369 ARMV6HF.glass.eglfb.linker = linker
370 ARMV6HF.glass.eglfb.linkFlags = [lensLFlags].flatten()
371 ARMV6HF.glass.eglfb.lib = "glass_lens_eglfb"
372
373 ARMV6HF.glass.directfb = [:]
374 ARMV6HF.glass.directfb.nativeSource = [
375 file("${project("graphics").projectDir}/src/main/native-glass/lens"),
376 file("${project("graphics").projectDir}/src/main/native-glass/lens/wm"),
377 file("${project("graphics").projectDir}/src/main/native-glass/lens/cursor/fbCursor"),
378 file("${project("graphics").projectDir}/src/main/native-glass/lens/input/udev"),
379 file("${project("graphics").projectDir}/src/main/native-glass/lens/wm/screen/dfbScreen.c") ]
380 ARMV6HF.glass.directfb.compiler = compiler
381 ARMV6HF.glass.directfb.ccFlags = ["-ffast-math", extraCFlags, "-I$sdk/usr/include/directfb", "-DLINUX"].flatten()
382 ARMV6HF.glass.directfb.linker = linker
383 ARMV6HF.glass.directfb.linkFlags = [lensLFlags].flatten()
384 ARMV6HF.glass.directfb.lib = "glass_lens_dfb"
385
386 ARMV6HF.glass.fb = [:]
387 ARMV6HF.glass.fb.nativeSource = [
388 file("${project("graphics").projectDir}/src/main/native-glass/lens"),
389 file("${project("graphics").projectDir}/src/main/native-glass/lens/wm"),
390 file("${project("graphics").projectDir}/src/main/native-glass/lens/cursor/fbCursor"),
391 file("${project("graphics").projectDir}/src/main/native-glass/lens/input/udev"),
392 file("${project("graphics").projectDir}/src/main/native-glass/lens/wm/screen/fbdevScreen.c") ]
393 ARMV6HF.glass.fb.compiler = compiler
394 ARMV6HF.glass.fb.ccFlags = ["-ffast-math", extraCFlags, "-DLINUX"].flatten()
395 ARMV6HF.glass.fb.linker = linker
396 ARMV6HF.glass.fb.linkFlags = [lensLFlags].flatten()
397 ARMV6HF.glass.fb.lib = "glass_lens_fb"
398
399 ARMV6HF.glass.eglx11 = [:]
400 ARMV6HF.glass.eglx11.nativeSource = [
401 file("${project("graphics").projectDir}/src/main/native-glass/lens"),
402 file("${project("graphics").projectDir}/src/main/native-glass/lens/wm"),
403 file("${project("graphics").projectDir}/src/main/native-glass/lens/cursor/fbCursor"),
404 file("${project("graphics").projectDir}/src/main/native-glass/lens/input/udev"),
405 file("${project("graphics").projectDir}/src/main/native-glass/lens/wm/screen/x11ContainerScreen.c")]
406 //file("${project("graphics").projectDir}/src/main/native-glass/lens/wm/screen")]
407 ARMV6HF.glass.eglx11.compiler = compiler
408 ARMV6HF.glass.eglx11.ccFlags = ["-ffast-math", extraCFlags, "-DLINUX"].flatten()
409 ARMV6HF.glass.eglx11.linker = linker
410 ARMV6HF.glass.eglx11.linkFlags = [lensLFlags].flatten()
411 ARMV6HF.glass.eglx11.lib = "glass_lens_eglx11"
412
413 ARMV6HF.glass.gtk = [:]
414 ARMV6HF.glass.gtk.nativeSource = file("${project("graphics").projectDir}/src/main/native-glass/gtk")
415 ARMV6HF.glass.gtk.compiler = compiler
416 ARMV6HF.glass.gtk.ccFlags = ["-ffast-math", gtkCFlags, "-DLINUX"].flatten()
417 ARMV6HF.glass.gtk.linker = linker
418 ARMV6HF.glass.gtk.linkFlags = [gtkLFlags, "-lstdc++"].flatten()
419 ARMV6HF.glass.gtk.lib = "glass"
420
421 ARMV6HF.decora = [:]
422 ARMV6HF.decora.compiler = compiler
423 ARMV6HF.decora.ccFlags = extraCFlags
424 ARMV6HF.decora.linker = linker
425 ARMV6HF.decora.linkFlags = extraLFlags
426 ARMV6HF.decora.lib = "decora_sse"
427
428 ARMV6HF.prism = [:]
429 ARMV6HF.prism.javahInclude = ["com/sun/prism/impl/**/*", "com/sun/prism/PresentableState*"]
430 ARMV6HF.prism.nativeSource = file("${project("graphics").projectDir}/src/main/native-prism")
431 ARMV6HF.prism.compiler = compiler
432 ARMV6HF.prism.ccFlags = [extraCFlags].flatten()
433 ARMV6HF.prism.linker = linker
434 ARMV6HF.prism.linkFlags = [extraLFlags].flatten()
435 ARMV6HF.prism.lib = "prism_common"
436
438 ARMV6HF.prismSW.javahInclude = ["com/sun/pisces/**/*"]
439 ARMV6HF.prismSW.nativeSource = file("${project("graphics").projectDir}/src/main/native-prism-sw")
440 ARMV6HF.prismSW.compiler = compiler
441 ARMV6HF.prismSW.ccFlags = [extraCFlags].flatten()
442 ARMV6HF.prismSW.linker = linker
443 ARMV6HF.prismSW.linkFlags = [extraLFlags].flatten()
444 ARMV6HF.prismSW.lib = "prism_sw"
445
446 ARMV6HF.iio = [:]
447 ARMV6HF.iio.javahInclude = ["com/sun/javafx/iio/**/*"]
448 ARMV6HF.iio.nativeSource = [
449 file("${project("graphics").projectDir}/src/main/native-iio"),
450 file("${project("graphics").projectDir}/src/main/native-iio/libjpeg7")]
451 ARMV6HF.iio.compiler = compiler
452 ARMV6HF.iio.ccFlags = iioCFlags
453 ARMV6HF.iio.linker = linker
454 ARMV6HF.iio.linkFlags = iioLFlags
455 ARMV6HF.iio.lib = "javafx_iio"
456
457 ARMV6HF.prismES2 = [:]
458 ARMV6HF.prismES2.variants = ["eglfb", "monocle"]
459 ARMV6HF.prismES2.javahInclude = ["com/sun/prism/es2/**/*"]
460
461 ARMV6HF.prismES2.eglfb = [:]
462 ARMV6HF.prismES2.eglfb.nativeSource = [
463 file("${project("graphics").projectDir}/src/main/native-prism-es2"),
464 file("${project("graphics").projectDir}/src/main/native-prism-es2/GL"),
465 file("${project("graphics").projectDir}/src/main/native-prism-es2/eglWrapper"),
466 file("${project("graphics").projectDir}/src/main/native-prism-es2/eglfb")
467 ]
468 ARMV6HF.prismES2.eglfb.compiler = compiler
469 ARMV6HF.prismES2.eglfb.ccFlags = [ es2EglfbCFlags, "-I", ARMV6HF.glass.lensport.nativeSource ].flatten()
470 ARMV6HF.prismES2.eglfb.linker = linker
471 ARMV6HF.prismES2.eglfb.linkFlags = [ es2EglfbLFlags, "-dl" ] .flatten()
472 ARMV6HF.prismES2.eglfb.lib = "prism_es2_eglfb"
473
474 ARMV6HF.prismES2.monocle= [:]
475 ARMV6HF.prismES2.monocle.nativeSource = [
476 file("${project("graphics").projectDir}/src/main/native-prism-es2"),
477 file("${project("graphics").projectDir}/src/main/native-prism-es2/GL"),
478 file("${project("graphics").projectDir}/src/main/native-prism-es2/monocle")
479 ]
480 ARMV6HF.prismES2.monocle.compiler = compiler
481 ARMV6HF.prismES2.monocle.ccFlags = [ es2EglfbCFlags, "-I", ARMV6HF.glass.lensport.nativeSource ].flatten()
482 ARMV6HF.prismES2.monocle.linker = linker
483 ARMV6HF.prismES2.monocle.linkFlags =[ es2EglfbLFlags, "-ldl" ].flatten()
484 ARMV6HF.prismES2.monocle.lib = "prism_es2_monocle"
485
486 ARMV6HF.prismES2.eglx11 = [:]
487 ARMV6HF.prismES2.eglx11.nativeSource = [
488 file("${project("graphics").projectDir}/src/main/native-prism-es2"),
489 file("${project("graphics").projectDir}/src/main/native-prism-es2/GL"),
490 file("${project("graphics").projectDir}/src/main/native-prism-es2/eglx11")
491 ]
492 ARMV6HF.prismES2.eglx11.compiler = compiler
493 ARMV6HF.prismES2.eglx11.ccFlags = es2X11CFlags
494 ARMV6HF.prismES2.eglx11.linker = linker
495 ARMV6HF.prismES2.eglx11.linkFlags = es2X11LFlags
496 ARMV6HF.prismES2.eglx11.lib = "prism_es2_eglx11"
497
498 def closedDir = file("$projectDir/../rt-closed")
499 ARMV6HF.font = [:]
500 ARMV6HF.font.javahInclude = [
501 "com/sun/javafx/font/**/*",
502 "com/sun/javafx/text/**/*"]
503 ARMV6HF.font.nativeSource = [file("${project("graphics").projectDir}/src/main/native-font")]
504 ARMV6HF.font.compiler = compiler
505 ARMV6HF.font.ccFlags = fontCFlags
506 ARMV6HF.font.linker = linker
507 ARMV6HF.font.linkFlags = fontLFlags
508 ARMV6HF.font.lib = "javafx_font"
509
510 ARMV6HF.fontT2K = [:]
511 ARMV6HF.fontT2K.javahInclude = ["com/sun/javafx/font/t2k/**/*"]
512 ARMV6HF.fontT2K.nativeSource = [
513 file("$closedDir/javafx-font-t2k-native/src"),
514 file("$closedDir/javafx-font-t2k-native/src/layout")]
515 ARMV6HF.fontT2K.compiler = compiler
516 ARMV6HF.fontT2K.ccFlags = [fontCFlags, "-DLE_STANDALONE"].flatten()
517 ARMV6HF.fontT2K.linker = linker
545 ARMV6HF.webkit.strip = file("$compilerHome/bin/${compilerPrefix}strip").getAbsolutePath()
546 ARMV6HF.webkit.ccFlags = extraCFlags.join(' ')
547 ARMV6HF.webkit.linkFlags = extraLFlags.join(' ')
548
549 ARMV6HF.disableMedia = true
550 ARMV6HF.media = [:]
551 ARMV6HF.media.compiler = compiler
552 ARMV6HF.media.linker = linker
553 ARMV6HF.media.extra_cflags = mediaCFlags.join(' ')
554 ARMV6HF.media.extra_ldflags = mediaLFlags.join(' ')
555
556 ARMV6HF.deploy = [:]
557 ARMV6HF.deploy.publicLibraryFilter = [
558 "fxavcodecplugin-52.so",
559 "fxavcodecplugin-53.so",
560 "fxplugins.so",
561 "libjfxwebkit.so",
562 "libgstplugins-lite.so",
563 "libgstreamer-lite.so",
564 "libprism_es2_eglx11.so",
565 "libglass_lens_fb.so"
566 ]
567 ARMV6HF.deploy.compressBigJar=true
|
64 def compiler = file("$compilerHome/bin/${compilerPrefix}gcc").getAbsolutePath()
65 def linker = file("$compilerHome/bin/${compilerPrefix}g++").getAbsolutePath()
66
67 // Declare whether this particular target file applies to the current system
68 ARMV6HF.canBuild = (IS_LINUX || IS_MAC) && compilerHome.exists() && sdk.exists()
69 if (!ARMV6HF.canBuild) {
70 if (!compilerHome.exists()) println "ERROR: Missing compiler $compilerHome"
71 if (!sdk.exists()) println "ERROR: Missing sdk $sdk"
72 fail("armv6hf missing required tools")
73 }
74
75 // Lambda for naming the generated libs
76 ARMV6HF.library = { name -> return "lib${name}.so" as String }
77
78 ARMV6HF.compileSwing = false;
79 ARMV6HF.compileSWT = false;
80 ARMV6HF.compileFXPackager = false;
81 ARMV6HF.compileWebnodeNative = false;
82 ARMV6HF.compileMediaNative = false;
83
84 ARMV6HF.includeMonocle = true
85 ARMV6HF.includeNull3d = true
86 ARMV6HF.includeEGL = true
87 ARMV6HF.includeSwing = false
88 ARMV6HF.includeSWT = false
89 ARMV6HF.includeGTK = true
90
91 ARMV6HF.javafxPlatformDefault="monocle"
92
93 // Libraries end up in the sdk/lib/arm directory for arm builds
94 ARMV6HF.arch = "arm"
95 ARMV6HF.libDest = "lib"
96
97 def commonFlags = [
98 "-fno-strict-aliasing", "-fPIC", "-fno-omit-frame-pointer", // optimization flags
99 "-Wextra", "-Wall", "-Wno-unused", "-Wno-parentheses", "-Werror=implicit-function-declaration"] // warning flags
100 // Specify the compilation parameters and link parameters
101 def ccFlags = [
102 commonFlags, "-I$JDK_HOME/include", "-I$JDK_HOME/include/$jniPlatform", "-c",
103 IS_DEBUG_NATIVE ? ["-ggdb", "-DVERBOSE"] : ["-O2", "-DNDEBUG"]].flatten()
110 "-marm", "-mfloat-abi=hard", "-mfpu=vfp",
111 "-I$sdk/usr/include",
112 "-I$sdk/opt/vc/include",
113 "-I$sdk/opt/vc/include/interface/vcos/pthreads",
114 "-I$sdk/opt/vc/include/interface/vmcs_host/linux",
115 "-DOMAP3", "-DUSE_DISPMAN"].flatten();
116
117 //See if we should build for imx6
118 def imxHeader=file("$sdk/usr/include/linux/mxcfb.h")
119 if (imxHeader.exists()) {
120 extraCFlags = [extraCFlags,"-DIMX6_PLATFORM"].flatten();
121 }
122
123 def extraLFlags = [
124 linkFlags,
125 "-L$sdk/lib/arm-linux-gnueabihf",
126 "-L$sdk/usr/lib",
127 "-L$sdk/usr/lib/arm-linux-gnueabihf",
128 "-L$sdk/opt/vc/lib"].flatten()
129
130 def monocleCFlags = [
131 extraCFlags,
132 "-Werror",
133 "-I", file("${project("graphics").projectDir}/src/main/native-glass/monocle/")].flatten();
134 def monocleLFlags = [extraLFlags, "-ldl", "-lm"].flatten()
135
136 def fontCFlags = [extraCFlags].flatten()
137 def fontLFlags = [extraLFlags, "-ldl"].flatten()
138
139 def iioCFlags = [extraCFlags,
140 "-Wno-main" // suppress warnings about using main as a variable, 3rd party code
141 ].flatten()
142 def iioLFlags = [extraLFlags].flatten()
143
144 def es2EglfbCFlags = [extraCFlags, "-DIS_EGLFB", "-DLINUX"].flatten()
145 def es2EglfbLFlags = [extraLFlags].flatten()
146 def es2MonocleCFlags = [extraCFlags, "-DIS_EGLFB", "-DLINUX"].flatten()
147 def es2MonocleLFlags = [extraLFlags].flatten()
148
149 def es2X11CFlags = [extraCFlags, "-DUSE_XSHM", "-DDEBUG", "-DIS_EGLX11", "-DLINUX"].flatten()
171 gtkLFlags.addAll(gtkLFlags_pkgconfig.split(" "))
172
173 def monoclePlatformAdditions = """
174 monocle.glass.platform=Monocle
175 monocle.prism.order=es2,sw
176 monocle.prism.eglfb=true
177 monocle.prism.lcdtext=false
178 monocle.prism.maxvram=128m
179 monocle.prism.targetvram=112m
180 monocle.use.egl=true
181 monocle.use.gles2=true
182 monocle.embedded=monocle
183 monocle.com.sun.javafx.isEmbedded=true
184 monocle.doNativeComposite=true
185 monocle.com.sun.javafx.scene.control.skin.FXVK.cache=true
186 monocle.prism.glDepthSize=0
187 monocle.com.sun.javafx.gestures.zoom=true
188 monocle.com.sun.javafx.gestures.rotate=true
189 monocle.com.sun.javafx.gestures.scroll=true"""
190
191 def gtkPlatformAdditions = """
192 gtk.com.sun.javafx.scene.control.skin.ListViewSkin.pannable=true
193 gtk.com.sun.javafx.scene.control.skin.TreeViewSkin.pannable=true
194 gtk.com.sun.javafx.scene.control.skin.TableViewSkin.pannable=true
195 gtk.glass.platform=gtk
196 gtk.prism.order=sw
197 gtk.com.sun.javafx.isEmbedded=true
198 gtk.com.sun.javafx.scene.control.skin.FXVK.cache=true
199 gtk.com.sun.javafx.gestures.zoom=true
200 gtk.com.sun.javafx.gestures.rotate=true
201 gtk.com.sun.javafx.gestures.scroll=true"""
202
203 def pangoCCFlags = [extraCFlags, "-D_ENABLE_PANGO"];
204 def pangoLinkFlags = [extraLFlags];
205
206 def pangoCFlags_pkgconfig = "-pthread -I${sdk}/usr/include/pango-1.0 -I${sdk}/usr/include/freetype2 -I${sdk}/usr/include -I${sdk}/usr/include/glib-2.0 -I${sdk}/usr/lib/arm-linux-gnueabihf/glib-2.0/include"
207
208 def pangoLFlags_pkgconfig = "-L${sdk}/usr/lib/arm-linux-gnueabihf -lpangoft2-1.0 -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lglib-2.0"
209
210 pangoCCFlags.addAll(pangoCFlags_pkgconfig.split(" "))
211 pangoLinkFlags.addAll(pangoLFlags_pkgconfig.split(" "))
212
213 def freetypeCCFlags = [ext.IS_COMPILE_PANGO ? "-D_ENABLE_PANGO" :
214 ext.IS_COMPILE_HARFBUZZ ? "-D_ENABLE_HARFBUZZ" : ""]
215 def freetypeLinkFlags = []
216
217 def freetypeCFlags_pkgconfig = "-I${sdk}/usr/include/freetype2 -I${sdk}/usr/include"
218 def freetypeLFlags_pkgconfig = "-L${sdk}/usr/lib/arm-linux-gnueabihf -lfreetype"
219
220 freetypeCCFlags.addAll(freetypeCFlags_pkgconfig.split(" "))
221 freetypeLinkFlags.addAll(freetypeLFlags_pkgconfig.split(" "))
222
223 ARMV6HF.javafxPlatformProperties = "javafx.platform=${ARMV6HF.javafxPlatformDefault}"
224
225 ARMV6HF.glass = [:]
226 ARMV6HF.glass.javahInclude = [
227 "com/sun/glass/events/**",
228 "com/sun/glass/ui/*"]
229 ARMV6HF.glass.variants = [ ]
230 if (ARMV6HF.includeMonocle) {
231 ARMV6HF.glass.variants.addAll("monocle", "monocle_x11");
232 ARMV6HF.glass.javahInclude.addAll(
233 "com/sun/glass/ui/monocle/*",
234 "com/sun/glass/ui/monocle/dispman/*",
235 "com/sun/glass/ui/monocle/mx6/*",
236 "com/sun/glass/ui/monocle/linux/*",
237 "com/sun/glass/ui/monocle/util/*",
238 "com/sun/glass/ui/monocle/x11/*");
239 ARMV6HF.javafxPlatformProperties = ARMV6HF.javafxPlatformProperties + monoclePlatformAdditions
240 }
241 if (ARMV6HF.includeGTK) {
242 ARMV6HF.glass.variants.addAll("gtk");
243 ARMV6HF.glass.javahInclude.addAll("com/sun/glass/ui/gtk/*");
244 ARMV6HF.javafxPlatformProperties = ARMV6HF.javafxPlatformProperties + gtkPlatformAdditions
245 }
246
247 ARMV6HF.glass.lib = "glass"
248
249 ARMV6HF.glass.monocle = [:]
250 ARMV6HF.glass.monocle.nativeSource = [
251 file("${project("graphics").projectDir}/src/main/native-glass/monocle"),
252 file("${project("graphics").projectDir}/src/main/native-glass/monocle/dispman"),
253 file("${project("graphics").projectDir}/src/main/native-glass/monocle/mx6"),
254 file("${project("graphics").projectDir}/src/main/native-glass/monocle/linux"),
255 file("${project("graphics").projectDir}/src/main/native-glass/monocle/util") ]
256 ARMV6HF.glass.monocle.compiler = compiler
257 ARMV6HF.glass.monocle.ccFlags = monocleCFlags
258 ARMV6HF.glass.monocle.linker = linker
259 ARMV6HF.glass.monocle.linkFlags = monocleLFlags
260 ARMV6HF.glass.monocle.lib = "glass_monocle"
261
262 ARMV6HF.glass.monocle_x11 = [:]
263 ARMV6HF.glass.monocle_x11.nativeSource = [
264 file("${project("graphics").projectDir}/src/main/native-glass/monocle/util"),
265 file("${project("graphics").projectDir}/src/main/native-glass/monocle/x11") ]
266 ARMV6HF.glass.monocle_x11.compiler = compiler
267 ARMV6HF.glass.monocle_x11.ccFlags = monocleCFlags
268 ARMV6HF.glass.monocle_x11.linker = linker
269 ARMV6HF.glass.monocle_x11.linkFlags = [ monocleLFlags, "-lX11" ].flatten()
270 ARMV6HF.glass.monocle_x11.lib = "glass_monocle_x11"
271
272 FileTree ft_gtk = fileTree("${project(":graphics").projectDir}/src/main/native-glass/gtk/") {
273 exclude("**/launcher.c")
274 }
275 File gen_headers = new File("${project(":graphics").buildDir}/gensrc/headers/javafx.graphics")
276
277 ARMV6HF.glass.gtk = [:]
278 ARMV6HF.glass.gtk.nativeSource = ft_gtk.getFiles()
279 ARMV6HF.glass.gtk.compiler = compiler
280 ARMV6HF.glass.gtk.ccFlags = ["-ffast-math", gtkCFlags, "-DLINUX", "-I${gen_headers}"].flatten()
281 ARMV6HF.glass.gtk.linker = linker
282 ARMV6HF.glass.gtk.linkFlags = [gtkLFlags, "-lstdc++"].flatten()
283 ARMV6HF.glass.gtk.lib = "glass"
284
285 ARMV6HF.decora = [:]
286 ARMV6HF.decora.compiler = compiler
287 ARMV6HF.decora.ccFlags = extraCFlags
288 ARMV6HF.decora.linker = linker
289 ARMV6HF.decora.linkFlags = extraLFlags
290 ARMV6HF.decora.lib = "decora_sse"
291
292 ARMV6HF.prism = [:]
293 ARMV6HF.prism.javahInclude = ["com/sun/prism/impl/**/*", "com/sun/prism/PresentableState*"]
294 ARMV6HF.prism.nativeSource = file("${project("graphics").projectDir}/src/main/native-prism")
295 ARMV6HF.prism.compiler = compiler
296 ARMV6HF.prism.ccFlags = [extraCFlags].flatten()
297 ARMV6HF.prism.linker = linker
298 ARMV6HF.prism.linkFlags = [extraLFlags].flatten()
299 ARMV6HF.prism.lib = "prism_common"
300
302 ARMV6HF.prismSW.javahInclude = ["com/sun/pisces/**/*"]
303 ARMV6HF.prismSW.nativeSource = file("${project("graphics").projectDir}/src/main/native-prism-sw")
304 ARMV6HF.prismSW.compiler = compiler
305 ARMV6HF.prismSW.ccFlags = [extraCFlags].flatten()
306 ARMV6HF.prismSW.linker = linker
307 ARMV6HF.prismSW.linkFlags = [extraLFlags].flatten()
308 ARMV6HF.prismSW.lib = "prism_sw"
309
310 ARMV6HF.iio = [:]
311 ARMV6HF.iio.javahInclude = ["com/sun/javafx/iio/**/*"]
312 ARMV6HF.iio.nativeSource = [
313 file("${project("graphics").projectDir}/src/main/native-iio"),
314 file("${project("graphics").projectDir}/src/main/native-iio/libjpeg7")]
315 ARMV6HF.iio.compiler = compiler
316 ARMV6HF.iio.ccFlags = iioCFlags
317 ARMV6HF.iio.linker = linker
318 ARMV6HF.iio.linkFlags = iioLFlags
319 ARMV6HF.iio.lib = "javafx_iio"
320
321 ARMV6HF.prismES2 = [:]
322 ARMV6HF.prismES2.variants = ["monocle"]
323 ARMV6HF.prismES2.javahInclude = ["com/sun/prism/es2/**/*"]
324
325 ARMV6HF.prismES2.monocle= [:]
326 ARMV6HF.prismES2.monocle.nativeSource = [
327 file("${project("graphics").projectDir}/src/main/native-prism-es2"),
328 file("${project("graphics").projectDir}/src/main/native-prism-es2/GL"),
329 file("${project("graphics").projectDir}/src/main/native-prism-es2/monocle")
330 ]
331 ARMV6HF.prismES2.monocle.compiler = compiler
332 ARMV6HF.prismES2.monocle.ccFlags = [ es2EglfbCFlags, "-I", "-I${gen_headers}" ].flatten()
333 ARMV6HF.prismES2.monocle.linker = linker
334 ARMV6HF.prismES2.monocle.linkFlags =[ es2EglfbLFlags, "-ldl" ].flatten()
335 ARMV6HF.prismES2.monocle.lib = "prism_es2_monocle"
336
337 def closedDir = file("$projectDir/../rt-closed")
338 ARMV6HF.font = [:]
339 ARMV6HF.font.javahInclude = [
340 "com/sun/javafx/font/**/*",
341 "com/sun/javafx/text/**/*"]
342 ARMV6HF.font.nativeSource = [file("${project("graphics").projectDir}/src/main/native-font")]
343 ARMV6HF.font.compiler = compiler
344 ARMV6HF.font.ccFlags = fontCFlags
345 ARMV6HF.font.linker = linker
346 ARMV6HF.font.linkFlags = fontLFlags
347 ARMV6HF.font.lib = "javafx_font"
348
349 ARMV6HF.fontT2K = [:]
350 ARMV6HF.fontT2K.javahInclude = ["com/sun/javafx/font/t2k/**/*"]
351 ARMV6HF.fontT2K.nativeSource = [
352 file("$closedDir/javafx-font-t2k-native/src"),
353 file("$closedDir/javafx-font-t2k-native/src/layout")]
354 ARMV6HF.fontT2K.compiler = compiler
355 ARMV6HF.fontT2K.ccFlags = [fontCFlags, "-DLE_STANDALONE"].flatten()
356 ARMV6HF.fontT2K.linker = linker
384 ARMV6HF.webkit.strip = file("$compilerHome/bin/${compilerPrefix}strip").getAbsolutePath()
385 ARMV6HF.webkit.ccFlags = extraCFlags.join(' ')
386 ARMV6HF.webkit.linkFlags = extraLFlags.join(' ')
387
388 ARMV6HF.disableMedia = true
389 ARMV6HF.media = [:]
390 ARMV6HF.media.compiler = compiler
391 ARMV6HF.media.linker = linker
392 ARMV6HF.media.extra_cflags = mediaCFlags.join(' ')
393 ARMV6HF.media.extra_ldflags = mediaLFlags.join(' ')
394
395 ARMV6HF.deploy = [:]
396 ARMV6HF.deploy.publicLibraryFilter = [
397 "fxavcodecplugin-52.so",
398 "fxavcodecplugin-53.so",
399 "fxplugins.so",
400 "libjfxwebkit.so",
401 "libgstplugins-lite.so",
402 "libgstreamer-lite.so",
403 "libprism_es2_eglx11.so",
404 ]
405 ARMV6HF.deploy.compressBigJar=true
|