Heads up... changing the rt/build/*sdk/ directory

David Hill David.Hill at Oracle.com
Mon Feb 17 05:57:43 PST 2014

On 2/15/14, Feb 15, 7:55 PM, Stefan Fuchs wrote:
> Hi,
> hm, is there now a way to crossbuild the apps like Ensemble8?
> Seems to me that the apps are now always build against the default sdk.
> I ask this, because for the dalvik port, we currently use a stripped down version of the sdk, which only contains the classes, we got working.


When performing 'gradle apps', we pass several properties into the the ant based apps/build.xml.
(Actually gradle sucks in the apps/build.xml tree and runs internally, but that is an implementation detail).

         def appsJar = project.task("appsJar${t.capital}") {
             doLast() {
               ant.properties['targetBld'] = "$t.name"
               if (!rootProject.ext[t.upper].compileSwing) {
                 ant.properties['JFX_CORE_ONLY'] = 'true'
               ant.properties['jfxbuild.jfxrt.jar'] = jfxrtJar
               ant.properties['platforms.JDK_1.8.home'] = "${rootProject.ext.JDK_HOME}"

in this case jfxrtJar now evaluates on a 'host' build to:
and on a cross build to:

Note in the above the conditional setting of JFX_CORE_ONLY. This is because we are currently not building Swing & SWT classes in the ARM cross builds, and we use the JFX_CORE_ONLY property to avoid trying to build some of the examples.

Our nightly build does quite a bit (but not all) of the apps tree for both 'host' and cross.

I am looking forward to hooking up most of the rest. I think there are a couple that we will not ever build nightly (I think Kevin said Scenebuilder was one).

> - Stefan
> David Hill wrote:
>> As part of this Jira <https://javafx-jira.kenai.com/browse/RT-35809>, we are trying to make working in rt/apps easier.
>> To do that, we found that the only way to make the IDEs happy is be able to provide a common path to "host build" jfxrt.jar.
>> Currently we have:
>>      rt/build/${hosttype}-sdk  (rt/build/linux-sdk/...)
>> which requires evaluation that Netbeans does not want to do.
>> We do need to support cross builds, so here is what we came up with, explained here in the new improved comment from build.gradle
>>     // The jfxrt task is responsible for creating the jfxrt.jar. A developer may
>>     // have multiple SDK's on their system at any one time, depending on which
>>     // cross compiles they have done. For example, I might have:
>>     //      build/ios-sdk/rt/lib/ext/jfxrt.jar
>>     //      build/armhf-sdk/rt/lib/ext/jfxrt.jar
>>     // and so forth. The default host build will always install into 'sdk'
>>     // allowing for uses where a known sdk path is needed (like IDEs)
>>     //      build/sdk/rt/lib/ext/jfxrt.jar
>>     // This arrangement allows for multiple independent SDKs to
>>     // exist on a developer's system.
>> After you sync, you will probably want to perform a clean build.
>> And then try out the apps, in the new easier to use format.
>> Note: for now, you will still need to specify the JDK for ant/nb, like this:
>>     ant -Dplatforms.JDK_1.8.home=$JAVA_HOME

David Hill <David.Hill at Oracle.com>
Java Embedded Development

"The most likely way for the world to be destroyed, most experts agree, is by accident. That's where we come in; we're computer professionals. We cause accidents."
-- Nathaniel Borenstein (1957 - )

More information about the openjfx-dev mailing list