From a7802a2ab90a68ecbba962149a335f975fce24e7 Mon Sep 17 00:00:00 2001 From: Sven Gothel <sgothel@jausoft.com> Date: Fri, 14 Jun 2013 04:40:39 +0200 Subject: GlueGen (Compile Time): Add 'CStruct' Annotation Processor (APT) to 'gluegen' C Structs on-the-fly (2-pass actually). Convenient annotation processing (APT) hooked to 'javac' (1.6) via gluegen.jar META-INF service provider 'javax.annotation.processing.Processor' -> 'com.jogamp.gluegen.structgen.CStructAnnotationProcessor'. Am implicit APT / JAVAC would be possible, however - to have a proper process the unit test utilizes an explicit 2 pass run: <!-- Annotation Processor Only - First --> <javac destdir="${build_t.java}"> <classpath refid="junit.compile.classpath"/> <compilerarg value="-proc:only"/> <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"/> </javac> <!-- Javac Only - Second --> <javac destdir="${build_t.java}"> <classpath refid="junit.compile.classpath"/> <compilerarg value="-proc:none"/> <src path="${test.base.dir}"/> <src path="${build_t.gen}" /> </javac> Original code from Michael Bien's 'superglue' git://github.com/mbien/superglue.git, finally merged to GlueGen (as once intended). Note: The APT javac pass requires to use 'gluegen.jar' instead of 'gluegen-rt.jar' ! The 2-pass process also alows using the runtime gluegen-rt.jar and hence ensures clean namespace check at compilation. --- make/build-test.xml | 19 +++++++++++++++++++ make/build.xml | 3 +++ make/scripts/runtest.sh | 3 ++- 3 files changed, 24 insertions(+), 1 deletion(-) (limited to 'make') diff --git a/make/build-test.xml b/make/build-test.xml index 3c7da12..31dc773 100644 --- a/make/build-test.xml +++ b/make/build-test.xml @@ -114,6 +114,7 @@ <echo message=" test.base.dir ${test.base.dir}"/> <echo message=" build_t.gen ${build_t.gen}"/> + <!-- Annotation Processor Only - First --> <javac destdir="${build_t.java}" fork="yes" includeAntRuntime="false" @@ -124,6 +125,24 @@ bootclasspath="${target.rt.jar}" debug="${javacdebug}" debuglevel="${javacdebuglevel}"> <classpath refid="junit.compile.classpath"/> + <compilerarg value="-proc:only"/> + <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"/> + </javac> + + <!-- Javac Only - Second --> + <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}"/> <src path="${build_t.gen}" /> </javac> diff --git a/make/build.xml b/make/build.xml index d8fd553..90151c6 100644 --- a/make/build.xml +++ b/make/build.xml @@ -802,6 +802,9 @@ <!-- Build gluegen.jar. --> <jar destfile="${build}/gluegen.jar" manifest="${build}/Manifest.temp"> + <service type="javax.annotation.processing.Processor"> + <provider classname="com.jogamp.gluegen.structgen.CStructAnnotationProcessor"/> + </service> <fileset dir="${classes}"> <include name="**/*.class" /> <exclude name="${jogamp-android-launcher.classes}" /> diff --git a/make/scripts/runtest.sh b/make/scripts/runtest.sh index 165f64d..65b3573 100755 --- a/make/scripts/runtest.sh +++ b/make/scripts/runtest.sh @@ -96,6 +96,7 @@ function onetest() { #onetest com.jogamp.common.os.TestElfReader01 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.structgen.TestStructGen01 2>&1 | tee -a $LOG #onetest com.jogamp.common.util.TestPlatform01 2>&1 | tee -a $LOG #onetest com.jogamp.common.util.TestRunnableTask01 2>&1 | tee -a $LOG #onetest com.jogamp.common.util.TestIOUtil01 2>&1 | tee -a $LOG @@ -105,4 +106,4 @@ function onetest() { #onetest com.jogamp.common.net.AssetURLConnectionUnregisteredTest 2>&1 | tee -a $LOG #onetest com.jogamp.common.net.AssetURLConnectionRegisteredTest 2>&1 | tee -a $LOG #onetest com.jogamp.common.net.URLCompositionTest 2>&1 | tee -a $LOG -onetest com.jogamp.junit.sec.TestSecIOUtil01 2>&1 | tee -a $LOG +#onetest com.jogamp.junit.sec.TestSecIOUtil01 2>&1 | tee -a $LOG -- cgit v1.2.3