Skip to content

Commit

Permalink
Bug 1363: Java 11: Initial Host/Target Compiler Selection: Java8
Browse files Browse the repository at this point in the history
Current requirements are:
  - Java 1.8 (Level 8.0)
  - Android SDK API level 24 (Version 7.0 Nougat, released August 2016)

Official production builds are performed w/ Java 1.8.
  - Java 1.8 (Level 8.0)
  - Android SDK API level 24 (Version 7.0 Nougat, released August 2016)

  Android 7 API level 24 supports Java 1.8,
  see https://developer.android.com/studio/write/java8-support

  Java 8 is chosen today, June 2019, since OpenJDK 1.8 is well supported
  on desktop, mobile support is given w/ OpenJDK 9 and
  Android also support these language features for almost 3 years.

++++

Current patch does require one to set the target.sourcelevel,
target.targetlevel and target.rt.jar properties or their equivalent
capital case environment variables.

Only allowed value is currently 1.8.
  • Loading branch information
sgothel committed Jun 13, 2019
1 parent 2a8c4d1 commit 5f9c143
Show file tree
Hide file tree
Showing 19 changed files with 53 additions and 554 deletions.
7 changes: 4 additions & 3 deletions make/build.xml
Expand Up @@ -54,7 +54,8 @@

<!-- property name="javadoc.link" value="http://java.sun.com/j2se/1.4.2/docs/api/" /-->
<!-- property name="javadoc.link" value="http://download.oracle.com/javase/1.5.0/docs/api/" /-->
<property name="javadoc.link" value="http://docs.oracle.com/javase/6/docs/api/" />
<!-- property name="javadoc.link" value="http://docs.oracle.com/javase/6/docs/api/" /-->
<property name="javadoc.link" value="https://docs.oracle.com/javase/8/docs/api/" />

<!-- The source and build directories. -->
<property name="project.root" value=".." />
Expand Down Expand Up @@ -782,7 +783,7 @@

<!-- Compile gluegen (compile time).
Uses host.rt.jar, since we require 'com.sun.tools.doclets.Taglet',
Uses target.rt.jar, since we require 'com.sun.tools.doclets.Taglet',
w/o it breaks build on OSX w/ Java6 compiler.
Surprisingly it works on other platforms, which seems to pick classes
outside of the 'bootclasspath'.
Expand All @@ -794,7 +795,7 @@
encoding="UTF-8"
source="${target.sourcelevel}"
target="${target.targetlevel}"
bootclasspath="${host.rt.jar}"
bootclasspath="${target.rt.jar}"
debug="${javacdebug}" debuglevel="${javacdebuglevel}">
<src path="${src.jcpp}" />
<src path="${src.java}" />
Expand Down
10 changes: 1 addition & 9 deletions make/gluegen-cpptasks-base.xml
Expand Up @@ -206,15 +206,7 @@
<!-- NOTE: the values of the macos<arch> attributes will not be overridden if already set externally -->
<property name="macosppc" value="false" />
<property name="macosx64" value="true" />
<!-- No 32bit binaries on OSX since Java7 -->
<condition property="macosx32" value="false" else="true">
<or>
<contains string="${ant.java.version}" substring="1.7" casesensitive="false" />
<contains string="${ant.java.version}" substring="1.8" casesensitive="false" />
<contains string="${ant.java.version}" substring="1.9" casesensitive="false" />
<contains string="${ant.java.version}" substring="2.0" casesensitive="false" />
</or>
</condition>
<property name="macosx32" value="false" /> <!-- we disable 32bit on OSX for good now -->

<!-- Need a way to be able to disable the macosx64 property specification in a build.xml -->
<condition property="use.macosppc">
Expand Down
138 changes: 40 additions & 98 deletions make/jogamp-env.xml
@@ -1,23 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>

<!-- Current minimum requirements are:
- Java 1.6 (Level 6.0)
- Android SDK API Level 9 (Version 2.3 Gingerbread)
<!-- Current requirements are:
- Java 1.8 (Level 8.0)
- Android SDK API level 24 (Version 7.0 Nougat, released August 2016)
Official production builds are performed w/ Java 1.6.
- Java 1.6 (Level 6.0)
- Android SDK API Level 9 (Version 2.3 Gingerbread)
Official production builds are performed w/ Java 1.8.
- Java 1.8 (Level 8.0)
- Android SDK API level 24 (Version 7.0 Nougat, released August 2016)
Android supports Java language level 6.0.
Nevertheless, it cannot be guaranteed whether the Android API
supports all classes and methods of Java 1.6.
It is required for JogAmp developers to validate Android compatibility
by an Android crosscompilation build.
Current GlueGen code utilizes some minor Java 1.6 features
which could be replaced, however it's not desired at this point
since we have no mode hard Java 1.5 constraints.
Android 7 API level 24 supports Java 1.8,
see https://developer.android.com/studio/write/java8-support
Java 8 is chosen today, June 2019, since OpenJDK 1.8 is well supported
on desktop, mobile support is given w/ OpenJDK 9 and
Android also support these language features for almost 3 years.
For crosscompilation the following shall be set:
- TARGET_PLATFORM_SYSROOT Crosscompiler and system specified 'sysroot' (as in gcc \-\-print-sysroot)
- TARGET_PLATFORM_USRROOT Additional optional user headers and libraries for target
Expand All @@ -36,12 +33,12 @@
<property name="jvmJava.exe" value="${java.home}/bin/java" /> <!-- the java jvm executable for unit tests -->
<echo message="jvmJava.exe ${jvmJava.exe}"/>

<condition property="jvmJava7.exe" value="${env.JAVA7_EXE}">
<condition property="jvmJava8.exe" value="${env.JAVA8_EXE}">
<not>
<equals arg1="${env.JAVA7_EXE}" arg2="$${env.JAVA7_EXE}" casesensitive="true" />
<equals arg1="${env.JAVA8_EXE}" arg2="$${env.JAVA8_EXE}" casesensitive="true" />
</not>
</condition>
<echo message="jvmJava7.exe ${jvmJava7.exe}"/> <!-- optional extra Java7 JVM for unit tests -->
<echo message="jvmJava8.exe ${jvmJava8.exe}"/> <!-- optional extra Java8 JVM for unit tests -->

<fail message="Please build using Ant 1.8.0 or higher.">
<condition>
Expand All @@ -51,16 +48,23 @@
</condition>
</fail>

<fail message="Unsupported Java version: ${ant.java.version}. Make sure that the version of the Java compiler is 1.6 (6.0) or greater.">
<fail message="Unsupported Java version: ${ant.java.version}. Make sure that the version of the Java compiler is 1.8 (8.0) or greater.">
<condition>
<not>
<or>
<equals arg1="${ant.java.version}" arg2="1.6"/>
<equals arg1="${ant.java.version}" arg2="1.7"/>
<equals arg1="${ant.java.version}" arg2="1.8"/>
<equals arg1="${ant.java.version}" arg2="1.9"/>
<equals arg1="${ant.java.version}" arg2="2.0"/>
<equals arg1="${ant.java.version}" arg2="2.1"/>
<equals arg1="${ant.java.version}" arg2="1.10"/>
<equals arg1="${ant.java.version}" arg2="1.11"/>
<equals arg1="${ant.java.version}" arg2="1.12"/>
<equals arg1="${ant.java.version}" arg2="1.13"/>
<equals arg1="${ant.java.version}" arg2="1.14"/>
<equals arg1="${ant.java.version}" arg2="9"/>
<equals arg1="${ant.java.version}" arg2="10"/>
<equals arg1="${ant.java.version}" arg2="11"/>
<equals arg1="${ant.java.version}" arg2="12"/>
<equals arg1="${ant.java.version}" arg2="13"/>
<equals arg1="${ant.java.version}" arg2="14"/>
</or>
</not>
</condition>
Expand All @@ -78,9 +82,12 @@
<condition property="javadoc.xarg1" value="-Xdoclint:none" else="-J-Ddummy=val">
<or>
<equals arg1="${ant.java.version}" arg2="1.8"/>
<equals arg1="${ant.java.version}" arg2="1.9"/>
<equals arg1="${ant.java.version}" arg2="2.0"/>
<equals arg1="${ant.java.version}" arg2="2.1"/>
<equals arg1="${ant.java.version}" arg2="9"/>
<equals arg1="${ant.java.version}" arg2="10"/>
<equals arg1="${ant.java.version}" arg2="11"/>
<equals arg1="${ant.java.version}" arg2="12"/>
<equals arg1="${ant.java.version}" arg2="13"/>
<equals arg1="${ant.java.version}" arg2="14"/>
</or>
</condition>
<echo message="javadoc.xarg1 ${javadoc.xarg1}"/>
Expand All @@ -95,15 +102,15 @@

<property name="jogamp.version.major" value="2"/>
<property name="jogamp.version.minor" value="4"/>
<property name="jogamp.version.submi" value="0"/>
<property name="jogamp.version.submi" value="1"/>
<property name="jogamp.version.devel" value="-rc-${version.timestamp}"/> <!-- Devel RC Tag -->
<!-- property name="jogamp.version.devel" value=""/ --> <!-- Release tag -->
<property name="jogamp.version.base" value="${jogamp.version.major}.${jogamp.version.minor}"/>
<property name="jogamp.version" value="${jogamp.version.base}.${jogamp.version.submi}${jogamp.version.devel}" />
<echo message="jogamp.version ${jogamp.version}"/>

<!-- This is the Android version: xxyyzzz, xx=API yy screen-from-to zzz app-version-->
<property name="jogamp.version.int" value="0914019"/>
<property name="jogamp.version.int" value="2414020"/>
<echo message="jogamp.version.int ${jogamp.version.int}"/>

<!-- only set 'junit.is.disabled' if set in environment as 'true' to disable JUNIT tests -->
Expand Down Expand Up @@ -136,7 +143,7 @@
</not>
</condition>

<condition property="android.version" value="${env.ANDROID_VERSION}" else="9">
<condition property="android.version" value="${env.ANDROID_VERSION}" else="24">
<not>
<equals arg1="${env.ANDROID_VERSION}" arg2="$${env.ANDROID_VERSION}" casesensitive="true" />
</not>
Expand All @@ -160,105 +167,40 @@
</not>
</condition>

<fail message="You need to specify all properties 'target.sourcelevel', 'target.targetlevel' and 'target.rt.jar' or none at all.">
<condition>
<and>
<or>
<isset property="target.sourcelevel"/>
<isset property="target.targetlevel"/>
<isset property="target.rt.jar"/>
</or>
<not>
<and>
<isset property="target.sourcelevel"/>
<isset property="target.targetlevel"/>
<isset property="target.rt.jar"/>
</and>
</not>
</and>
</condition>
</fail>

<condition property="target.user.set" value="true">
<and>
<isset property="target.sourcelevel"/>
<isset property="target.targetlevel"/>
<isset property="target.rt.jar"/>
</and>
</condition>

<property name="target.sourcelevel" value="${ant.java.version}" /> <!-- default fallback values -->
<property name="target.targetlevel" value="${ant.java.version}" /> <!-- default fallback values -->
<!-- Default value for std Java (incl. Java7 on OS X) -->
<condition property="target.rt.jar"
value="${java.home}/lib/rt.jar">
<available file="${java.home}/lib/rt.jar"/>
</condition>
<!-- Default fallback value for Java6 OS X -->
<condition property="target.rt.jar"
value="${java.home}/../Classes/classes.jar">
<available file="${java.home}/../Classes/classes.jar"/>
</condition>
<!-- Default fallback value on std Java -->
<echo message="target.user.set ${target.user.set}"/>
<echo message="target.sourcelevel ${target.sourcelevel}"/>
<echo message="target.targetlevel ${target.targetlevel}"/>
<echo message="target.rt.jar ${target.rt.jar}"/>
<fail message="No target.rt.jar specified not found.">
<condition>
<not>
<isset property="target.rt.jar"/>
</not>
</condition>
</fail>

<property name="host.sourcelevel" value="${ant.java.version}" /> <!-- default values for compile time components -->
<property name="host.targetlevel" value="${ant.java.version}" /> <!-- default values for compile time components -->
<!-- Default value for std Java (incl. Java7 on OS X) -->
<condition property="host.rt.jar"
value="${java.home}/lib/rt.jar">
<available file="${java.home}/lib/rt.jar"/>
</condition>
<!-- Default fallback value for Java6 OS X -->
<condition property="host.rt.jar"
value="${java.home}/../Classes/classes.jar">
<available file="${java.home}/../Classes/classes.jar"/>
</condition>
<echo message="host.sourcelevel ${host.sourcelevel}"/>
<echo message="host.targetlevel ${host.targetlevel}"/>
<echo message="host.rt.jar ${host.rt.jar}"/>
<fail message="No host.rt.jar specified not found.">
<fail message="You need to specify all properties 'target.sourcelevel', 'target.targetlevel' and 'target.rt.jar'.">
<condition>
<not>
<isset property="host.rt.jar"/>
<istrue value="${target.user.set}"/>
</not>
</condition>
</fail>

<fail message="Unsupported Target Java version (sourcelevel): ${target.sourcelevel}. Make sure that the version of the Java compiler is 1.6 (6.0) or greater.">
<fail message="Unsupported Target Java sourcelevel: ${target.sourcelevel}. Make sure that the sourcelevel is set to 1.8 (8.0).">
<condition>
<not>
<or>
<contains string="${target.sourcelevel}" substring="1.6" casesensitive="false" />
<contains string="${target.sourcelevel}" substring="1.7" casesensitive="false" />
<contains string="${target.sourcelevel}" substring="1.8" casesensitive="false" />
<contains string="${target.sourcelevel}" substring="1.9" casesensitive="false" />
<contains string="${target.sourcelevel}" substring="2.0" casesensitive="false" />
<contains string="${target.sourcelevel}" substring="2.1" casesensitive="false" />
</or>
</not>
</condition>
</fail>
<fail message="Unsupported Target Java version (targetlevel): ${target.targetlevel}. Make sure that the version of the Java compiler is 1.6 (6.0) or greater.">
<fail message="Unsupported Target Java targetlevel: ${target.targetlevel}. Make sure that the targetlevel is set to 1.8 (8.0).">
<condition>
<not>
<or>
<contains string="${target.targetlevel}" substring="1.6" casesensitive="false" />
<contains string="${target.targetlevel}" substring="1.7" casesensitive="false" />
<contains string="${target.targetlevel}" substring="1.8" casesensitive="false" />
<contains string="${target.targetlevel}" substring="1.9" casesensitive="false" />
<contains string="${target.targetlevel}" substring="2.0" casesensitive="false" />
<contains string="${target.targetlevel}" substring="2.1" casesensitive="false" />
</or>
</not>
</condition>
Expand Down
8 changes: 0 additions & 8 deletions make/lib/android-sdk/15/android-java-src.txt

This file was deleted.

Binary file removed make/lib/android-sdk/15/android-java-src.zip
Binary file not shown.
Binary file removed make/lib/android-sdk/15/android.jar
Binary file not shown.
10 changes: 0 additions & 10 deletions make/lib/android-sdk/21/LICENSE.txt

This file was deleted.

0 comments on commit 5f9c143

Please sign in to comment.