aboutsummaryrefslogtreecommitdiffstats
path: root/make
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2014-05-11 03:03:36 +0200
committerSven Gothel <[email protected]>2014-05-11 03:03:36 +0200
commit1e53a38eb06aa8ff50660fdf7bd8570b27f27c56 (patch)
treef061dfb77af5b4c1f27da78b4dbd1881b400abc3 /make
parent598da96b3d2ffc3e0915f73749cbafa5fa5cea90 (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.xml21
-rwxr-xr-xmake/scripts/check-java-major-version.sh7
-rwxr-xr-xmake/scripts/make.gluegen.all.linux-x86_64.sh2
-rwxr-xr-xmake/scripts/runtest.sh3
-rw-r--r--make/scripts/setenv-build-jogl-x86_64.sh16
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