diff options
author | Sven Gothel <[email protected]> | 2014-05-11 03:03:36 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2014-05-11 03:03:36 +0200 |
commit | 1e53a38eb06aa8ff50660fdf7bd8570b27f27c56 (patch) | |
tree | f061dfb77af5b4c1f27da78b4dbd1881b400abc3 /make | |
parent | 598da96b3d2ffc3e0915f73749cbafa5fa5cea90 (diff) |
Bug 923: Remove dependency of CStruct annotation processor _generation_ and generated_class_user due to Java8 issues.
Java8's annotation processor as embedded within javac does not allow
referencing not-yet existing generated classes in a class source code
which will produce these generated classes via the annotation process.
Example:
+++
import com.jogamp.gluegen.structgen.CStruct;
public class Lala {
@CStruct(name="RenderingConfig", header="TestStruct01.h")
public RenderingConfig config;
}
+++
Above example illustrates that the type 'RenderingConfig'
does not exist at time of processing the annotation.
The type will be created via the annotation process itself.
Even though we pass '-proc:only', i.e. skip java compilation,
Java8's annotation processing via javac fails in such case.
We see this as a bug within javac's annotation processing itself!
+++
This workaround splits the annotation process and using the class as
generated by the former.
To allow this to work, CStruct receives a new field 'jname'
allowing to enforce the java-name of the structure
using a dummy field type like boolean.
@CStruct(name="RenderingConfig", jname="RenderingConfig", header="TestStruct01.h")
public boolean dummy;
Further more CStruct can be annotated on the package, i.e. 'package-info.java',
avoiding the dependency problem altogether.
To support multiple header files and types,
'CStructs' has been introduced using an array of 'CStruct'.
@CStructs({@CStruct(name="RenderingConfig", header="TestStruct01.h"), @CStruct(name="Pixel", header="TestStruct02.h")})
package com.jogamp.gluegen.test.junit.structgen;
Tests:
- Build w/ Java7 and Java8
- Validated 'major version 50' (Java 6) class files (OK)
Diffstat (limited to 'make')
-rw-r--r-- | make/build-test.xml | 21 | ||||
-rwxr-xr-x | make/scripts/check-java-major-version.sh | 7 | ||||
-rwxr-xr-x | make/scripts/make.gluegen.all.linux-x86_64.sh | 2 | ||||
-rwxr-xr-x | make/scripts/runtest.sh | 3 | ||||
-rw-r--r-- | make/scripts/setenv-build-jogl-x86_64.sh | 16 |
5 files changed, 39 insertions, 10 deletions
diff --git a/make/build-test.xml b/make/build-test.xml index bccc534..2bf2e37 100644 --- a/make/build-test.xml +++ b/make/build-test.xml @@ -114,7 +114,23 @@ <echo message=" test.base.dir ${test.base.dir}"/> <echo message=" build_t.gen ${build_t.gen}"/> - <!-- Annotation Processor Only - First --> + <!-- Javac of Annotation Processor dependencies - First --> + <javac destdir="${build_t.java}" + fork="yes" + includeAntRuntime="false" + memoryMaximumSize="${javac.memorymax}" + encoding="UTF-8" + source="${target.sourcelevel}" + target="${target.targetlevel}" + bootclasspath="${target.rt.jar}" + debug="${javacdebug}" debuglevel="${javacdebuglevel}"> + <classpath refid="junit.compile.classpath"/> + <compilerarg value="-proc:none"/> + <src path="${test.base.dir}/com/jogamp/junit/util"/> + </javac> + + <!-- Annotation Processor - Second --> + <mkdir dir="${build_t.gen}/classes/com/jogamp/gluegen/test/junit/structgen"/> <javac destdir="${build_t.java}" fork="yes" includeAntRuntime="false" @@ -129,9 +145,10 @@ <compilerarg value="-J-Djogamp.gluegen.structgen.debug"/> <compilerarg value="-J-Djogamp.gluegen.structgen.output=${build_t.gen}/classes"/> <src path="${test.base.dir}/com/jogamp/gluegen/test/junit/structgen"/> + <src path="${build_t.gen}/classes/com/jogamp/gluegen/test/junit/structgen" /> </javac> - <!-- Javac Only - Second --> + <!-- Javac All - Third --> <javac destdir="${build_t.java}" fork="yes" includeAntRuntime="false" diff --git a/make/scripts/check-java-major-version.sh b/make/scripts/check-java-major-version.sh index 6b1711c..49c0445 100755 --- a/make/scripts/check-java-major-version.sh +++ b/make/scripts/check-java-major-version.sh @@ -10,9 +10,10 @@ function dump_version() { function dump_versions() { cd $1 #dump_version jogamp.common.Debug - for i in `find . -name '*.class'` ; do - dump_version `echo $i | sed -e 's/\//./g' -e 's/\.class//g'` - done + javap -v `find . -name '*.class'` | grep -e '^Classfile' -e 'major version' + #for i in `find . -name '*.class'` ; do + # dump_version `echo $i | sed -e 's/\//./g' -e 's/\.class//g'` + #done cd $TDIR } diff --git a/make/scripts/make.gluegen.all.linux-x86_64.sh b/make/scripts/make.gluegen.all.linux-x86_64.sh index 8c62cd0..60e35d6 100755 --- a/make/scripts/make.gluegen.all.linux-x86_64.sh +++ b/make/scripts/make.gluegen.all.linux-x86_64.sh @@ -27,7 +27,7 @@ export TARGET_RT_JAR=/opt-share/jre1.6.0_30/lib/rt.jar #export JOGAMP_JAR_CODEBASE="Codebase: *.jogamp.org" export JOGAMP_JAR_CODEBASE="Codebase: *.goethel.localnet" -# BUILD_ARCHIVE=true \ +BUILD_ARCHIVE=true \ ant \ -Drootrel.build=build-x86_64 \ $* 2>&1 | tee make.gluegen.all.linux-x86_64.log diff --git a/make/scripts/runtest.sh b/make/scripts/runtest.sh index 947755f..f518668 100755 --- a/make/scripts/runtest.sh +++ b/make/scripts/runtest.sh @@ -119,7 +119,8 @@ function onetest() { #onetest com.jogamp.common.os.TestElfReader01 2>&1 | tee -a $LOG #onetest com.jogamp.gluegen.PCPPTest 2>&1 | tee -a $LOG #onetest com.jogamp.gluegen.test.junit.generation.Test1p1JavaEmitter 2>&1 | tee -a $LOG -onetest com.jogamp.gluegen.test.junit.generation.Test1p2ProcAddressEmitter 2>&1 | tee -a $LOG +#onetest com.jogamp.gluegen.test.junit.generation.Test1p2ProcAddressEmitter 2>&1 | tee -a $LOG #onetest com.jogamp.gluegen.test.junit.generation.Test1p2LoadJNIAndImplLib 2>&1 | tee -a $LOG #onetest com.jogamp.gluegen.test.junit.structgen.TestStructGen01 2>&1 | tee -a $LOG +onetest com.jogamp.gluegen.test.junit.structgen.TestStructGen02 2>&1 | tee -a $LOG diff --git a/make/scripts/setenv-build-jogl-x86_64.sh b/make/scripts/setenv-build-jogl-x86_64.sh index c0746e9..8994365 100644 --- a/make/scripts/setenv-build-jogl-x86_64.sh +++ b/make/scripts/setenv-build-jogl-x86_64.sh @@ -26,15 +26,25 @@ if [ -z "$ANT_PATH" ] ; then exit fi -if [ -e /opt-linux-x86_64/jre7 -a -e /opt-linux-x86_64/j2se7 ] ; then - J2RE_HOME=/opt-linux-x86_64/jre7 - JAVA_HOME=/opt-linux-x86_64/j2se7 +if [ -e /opt-linux-x86_64/jre8 -a -e /opt-linux-x86_64/j2se8 ] ; then + J2RE_HOME=/opt-linux-x86_64/jre8 + JAVA_HOME=/opt-linux-x86_64/j2se8 PATH=$J2RE_HOME/bin:$JAVA_HOME/bin:$PATH export J2RE_HOME JAVA_HOME FOUND_JAVA=1 fi if [ -z "$FOUND_JAVA" ] ; then + if [ -e /opt-linux-x86_64/jre7 -a -e /opt-linux-x86_64/j2se7 ] ; then + J2RE_HOME=/opt-linux-x86_64/jre7 + JAVA_HOME=/opt-linux-x86_64/j2se7 + PATH=$J2RE_HOME/bin:$JAVA_HOME/bin:$PATH + export J2RE_HOME JAVA_HOME + FOUND_JAVA=1 + fi +fi + +if [ -z "$FOUND_JAVA" ] ; then if [ -e /opt-linux-x86_64/jre6 -a -e /opt-linux-x86_64/j2se6 ] ; then J2RE_HOME=/opt-linux-x86_64/jre6 JAVA_HOME=/opt-linux-x86_64/j2se6 |