diff options
Diffstat (limited to 'make/build-jogl.xml')
-rw-r--r-- | make/build-jogl.xml | 2374 |
1 files changed, 2374 insertions, 0 deletions
diff --git a/make/build-jogl.xml b/make/build-jogl.xml new file mode 100644 index 000000000..e4d1daab2 --- /dev/null +++ b/make/build-jogl.xml @@ -0,0 +1,2374 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + - Ant build for JOGL. This build has been tested with ANT 1.7.0. The + - optional.jar that contains the optional ANT tasks must be in the ANT + - classpath (typically the ant/lib directory). + - + - A clean download of JOGL is required for this build. + - + - This build has no dependence on environment variables; the needed + - ones (e.g. java.home, ANT_HOME) are all set by the Ant wrapper shell + - script, by the virtual machine, or elsewhere. However, on all platforms, + - the C compiler and linker should be in the path. All other paths that + - need to be set are in host.properties. + - + - NOTE: because the GlueGen config files have their own relative paths + - which cannot be overridden by GlueGen, GlueGen MUST be run from + - the "make" directory. This also means that this build-jogl.xml MUST + - be run from the "make" directory. + - + - Public targets: + - all: (default; autodetects OS and chooses C compiler from jogl.properties) + - clean: clean all built + - javadoc: create the standard developer Javadoc (recommended) + - (Note: should build all first - may be dependence in the future) + - javadoc.spec: create the standard developer Javadoc but exclude com.sun.* classes + - javadoc.dev.all: create the internal developer Javadoc. This includes the + - Java and C file generators. Note that it is only supported + - to create the Javadoc for the platform on which you are + - currently running. + - + - Note: on Windows the "win32.c.compiler" property in jogl.properties + - is required to select the appropriate C compiler. See the example + - jogl.properties in this directory for valid values. On Mac OS X + - universal binaries may also be built by setting the "macosxfat" + - property in jogl.properties; again see the example file in this + - directory. + - + - Optional properties: + - -Djogl.cg=1 when combined with the build or javadoc targets will cause + - the experimental binding to NVidia's Cg language to be built. + - + - Thanks to Rob Grzywinski and Artur Biesiadowski for the bulk of the + - ANT build, including the GlueGen and StaticGLInfo tasks, the building of + - the Java generated sources, the first and second phase Java compiles, and + - the building of the jar file. Thanks to Alex Radeski for the bulk of the + - port to the ant-contrib CPPTask framework. Thanks to Athomas Goldberg for + - the original OS detection code. + - + - Some environment defs affecting compilation + + setup.cdcfp - Using the CDC Java runtime library + - no DoubleBuffer + - no LongBuffer + + This will set + -> setup.noAWT + -> setup.nogl2 + -> setup.nogl3 + + - Internal settings, may not be necessary to set them manually, + since all JAR archives are orthogonal. + setup.noes1 + setup.noes2 + setup.nogl2 + setup.nogl3 + setup.noAWT + setup.noutil - no com.sun.opengl.util.* + setup.noX11WindowsMacOsX, which implies: + setup.noX11 + setup.noWindows + setup.noMacOsX + --> +<project name="JOGL" basedir="." default="all"> + + <!-- This is the version of JOGL you are building --> + <property name="base_version" value="1.2.0-rc1"/> + + <!-- Uncomment this property definition to cause a full release build to be done --> + <!-- without needing to specify the RI target on the command line --> + <property name="RImanifestfile" value="joglRIversion" /> + + <!-- Pull in GlueGen cpptasks build file --> + <property name="gluegen.root" value="../../gluegen" /> + <import file="${gluegen.root}/make/gluegen-cpptasks.xml" /> + + <available file="${user.home}/jogl.compiler.xml" property="jogl.compiler.present"/> + <import file="${user.home}/jogl.compiler.xml" optional="true" /> + + <!-- ================================================================== --> + <!-- + - Base initialization and detection of operating system. + --> + <target name="base.init"> + + <condition property="setup.noes"> + <and> + <isset property="setup.noes1"/> + <isset property="setup.noes2"/> + </and> + </condition> + + <condition property="setup.nogl3"> + <isset property="setup.cdcfp"/> + </condition> + <condition property="setup.nogl2"> + <isset property="setup.cdcfp"/> + </condition> + <condition property="setup.noAWT"> + <isset property="setup.cdcfp"/> + </condition> + <condition property="isCDCFP"> + <isset property="setup.cdcfp"/> + </condition> + <condition property="javac.bootclasspath.jar" + value="../../gluegen/make/lib/cdc_fp.jar"> + <isset property="setup.cdcfp"/> + </condition> + <echo message="setup.cdcfp: ${setup.cdcfp}" /> + <echo message="setup.noAWT: ${setup.noAWT}" /> + <echo message="javac.bootclasspath.jar: ${javac.bootclasspath.jar}" /> + <echo message="setup.noes : ${setup.noes}" /> + <echo message="setup.noes1: ${setup.noes1}" /> + <echo message="setup.noes2: ${setup.noes2}" /> + <echo message="setup.nogl2: ${setup.nogl2}" /> + <echo message="setup.nogl3: ${setup.nogl3}" /> + + <condition property="setup.noX11WindowsMacOsX"> + <and> + <isset property="setup.noX11"/> + <isset property="setup.noWindows"/> + <isset property="setup.noMacOsX"/> + </and> + </condition> + + <condition property="setup.noX11"> + <isset property="setup.noX11WindowsMacOsX"/> + </condition> + + <condition property="setup.noWindows"> + <isset property="setup.noX11WindowsMacOsX" /> + </condition> + + <condition property="setup.noMacOsX"> + <isset property="setup.noX11WindowsMacOsX" /> + </condition> + + <echo message="setup.noX11WindowsMacOsX: ${setup.noX11WindowsMacOsX}" /> + <echo message="setup.noX11: ${setup.noX11}" /> + <echo message="setup.noWindows: ${setup.noWindows}" /> + <echo message="setup.noMacOsX: ${setup.noMacOsX}" /> + + <!-- partitioning --> + + <property name="java.part.egl" + value="com/sun/opengl/impl/egl/*"/> + + <property name="java.part.glutess" + value="com/sun/opengl/impl/glu/tessellator/**"/> + + <property name="java.part.glumipmap" + value="com/sun/opengl/impl/glu/mipmap/**"/> + + <property name="java.part.glugl2" + value="com/sun/opengl/impl/glu/gl2/**, com/sun/opengl/impl/glu/nurbs/**, com/sun/opengl/impl/glu/registry/**, javax/media/opengl/glu/gl2/**"/> + <property name="java.part.openmax" + value="com/sun/openmax/**"/> + + <property name="java.part.sdk" + value="javax/media/opengl/sdk/**"/> + + <property name="java.part.gl2es12.x11" + value="com/sun/opengl/impl/gl2es12/**, com/sun/opengl/impl/x11/glx/*"/> + + <property name="java.part.gl2es12.win" + value="com/sun/opengl/impl/gl2es12/**, com/sun/opengl/impl/windows/wgl/*"/> + + <property name="java.part.gl2es12.osx" + value="com/sun/opengl/impl/gl2es12/**, com/sun/opengl/impl/macosx/cgl/*"/> + + <property name="java.part.gl2es12.dbg" + value="javax/media/opengl/TraceGL2ES12.*, javax/media/opengl/DebugGL2ES12.*"/> + + <property name="java.part.gl3" + value="com/sun/opengl/impl/**/gl3/**"/> + + <property name="java.part.gl2.x11" + value="com/sun/opengl/impl/**/gl2/**, ${java.part.gl3}, com/sun/opengl/impl/x11/glx/*"/> + + <property name="java.part.gl2.win" + value="com/sun/opengl/impl/**/gl2/**, ${java.part.gl3}, com/sun/opengl/impl/windows/wgl/*"/> + + <property name="java.part.gl2.osx" + value="com/sun/opengl/impl/**/gl2/**, ${java.part.gl3}, com/sun/opengl/impl/macosx/cgl/*"/> + + <property name="java.part.gl2.dbg" + value="javax/media/opengl/TraceGL2.*, javax/media/opengl/DebugGL2.*, javax/media/opengl/TraceGL3.*, javax/media/opengl/DebugGL3.*,"/> + + <property name="java.part.es1" + value="javax/media/opengl/**/es1/**, com/sun/opengl/**/es1/**"/> + + <property name="java.part.es1.dbg" + value="javax/media/opengl/TraceGLES1.*, javax/media/opengl/DebugGLES1.*"/> + + <property name="java.part.es2" + value="javax/media/opengl/**/es2/**, com/sun/opengl/**/es2/**"/> + + <property name="java.part.es2.dbg" + value="javax/media/opengl/TraceGLES2.*, javax/media/opengl/DebugGLES2.*"/> + + <property name="java.part.awt" + value="javax/media/opengl/awt/**, com/sun/opengl/impl/**/awt/**"/> + + <property name="java.part.util" + value="com/sun/opengl/util/*, com/sun/opengl/util/texture/**, com/sun/opengl/util/packrect/**"/> + + <property name="java.part.util.awt" + value="com/sun/opengl/util/**/awt/**"/> + + <property name="java.part.util.gl2" + value="com/sun/opengl/util/**/gl2/**"/> + + <property name="java.part.util.glsl" + value="com/sun/opengl/util/glsl/*, com/sun/opengl/util/glsl/fixedfunc/*, com/sun/opengl/util/glsl/sdk/*"/> + + <property name="java.part.util.fixedfuncemu" + value="com/sun/opengl/util/glsl/fixedfunc/impl/**"/> + + <property name="java.part.util.fixedfuncemu.shadercode" + value="com/sun/opengl/util/glsl/fixedfunc/impl/shaders/*, com/sun/opengl/util/glsl/fixedfunc/impl/shaders/bin/**"/> + + <!-- condition excludes --> + + <condition property="java.excludes.egl" + value="${java.part.egl}"> + <and> + <isset property="setup.noes1"/> + <isset property="setup.noes2"/> + </and> + </condition> + + <condition property="java.excludes.gl3" + value="${java.part.gl3}"> + <isset property="setup.nogl3"/> + </condition> + + <condition property="java.excludes.gl2" + value="${java.part.gl2es12.x11}, ${java.part.gl2es12.win}, ${java.part.gl2es12.osx}, ${java.part.gl2es12.dbg}, ${java.part.gl2.x11}, ${java.part.gl2.win}, ${java.part.gl2.osx}, ${java.part.gl2.dbg}, ${java.part.util.gl2}, ${java.part.glugl2}"> + <isset property="setup.nogl2"/> + </condition> + + <condition property="java.excludes.es1" + value="${java.part.es1}, ${java.part.es1.dbg}"> + <isset property="setup.noes1"/> + </condition> + + <condition property="java.excludes.es2" + value="${java.part.es2}, ${java.part.es2.dbg}"> + <isset property="setup.noes2"/> + </condition> + + <condition property="java.excludes.awt" + value="${java.part.awt}, ${java.part.util.awt}"> + <isset property="setup.noAWT"/> + </condition> + + <condition property="java.excludes.util" + value="${java.part.util} ${java.part.util.awt} ${java.part.util.gl2}"> + <isset property="setup.noutil"/> + </condition> + + <condition property="java.excludes.x11" + value="${java.part.x11}"> + <isset property="setup.noX11"/> + </condition> + + <condition property="java.excludes.win" + value="${java.part.win}"> + <isset property="setup.noWindows"/> + </condition> + + <condition property="java.excludes.macosx" + value="${java.part.macosx}"> + <isset property="setup.noMacOsX"/> + </condition> + + <condition property="java.excludes.cdcfp" + value="com/sun/opengl/util/AWTAnimatorImpl*, com/sun/opengl/util/TGAWriter*, com/sun/opengl/util/texture/spi/awt/**"> + <isset property="setup.cdcfp"/> + </condition> + + <property name="java.excludes.javadoc.packagenames" + value="com.sun.opengl.impl.gl2.fixme.*,com.sun.javafx.audio.windows.waveout.TestSpatialization"/> + + <property name="java.excludes.fixme" + value="com/sun/opengl/impl/gl2/fixme/** com/sun/javafx/audio/windows/waveout/TestSpatialization.java" /> + + <property name="java.excludes.all" value="${java.excludes.fixme} ${java.excludes.egl}, ${java.excludes.gl2}, ${java.excludes.gl3}, ${java.excludes.es1}, ${java.excludes.es2}, ${java.excludes.awt}, ${java.excludes.glugl2}, ${java.excludes.util}, ${java.excludes.x11}, ${java.excludes.win}, ${java.excludes.macosx}, ${java.excludes.cdcfp}" /> + <echo message="java.excludes.all: ${java.excludes.all}" /> + + + <!-- Set the project root directory to be up one directory. --> + <property name="project.root" value=".." /> + + <!-- Set the configuration and build files to this directory. --> + <property name="make" value="." /> + </target> + + <target name="base.init.sourcelevel.1"> + <property name="jogl.sourcelevel" value="1.4" /> + </target> + + <!--target name="base.init.sourcelevel.2" if="gluegen.nsig"> + <property name="jogl.sourcelevel" value="1.5" /> + </target--> + + <!-- ================================================================== --> + <!-- + - Load user properties which override build defaults. + --> + <target name="load.user.properties" depends="base.init,base.init.sourcelevel.1" unless="user.properties.file"> + <!-- Load the user specified properties file that defines various host + - specific paths. The user will be notified if this is does not + - exist. --> + <property name="user.properties.file" value="${user.home}/jogl.properties" /> + <property file="${user.properties.file}" /> + <echo message="Loaded ${user.properties.file}." /> + <property file="${user.home}/gluegen.properties" /> + <echo message="Loaded ${user.home}/gluegen.properties." /> + <fail message="antlr.jar was not specified in jogl.properties or gluegen.properties. Please see README.txt for instructions" unless="antlr.jar"/> + <echo message="antlr.jar=${antlr.jar}" /> + </target> + + <!-- ================================================================== --> + <!-- + - Declare all paths and user defined variables. + --> + <target name="declare.common" description="Declare properties" depends="load.user.properties"> + <!-- The location and name of the configuration ANT file that will + - validate to ensure that all user-define variables are set. --> + <property name="validate.user.properties" value="${make}/validate-properties.xml" /> + + <!-- NOTE: the value of the debug and optimise attributes will not be overridden if already set externally --> + <property name="javacdebug" value="true" /> + <property name="javacdebuglevel" value="source,lines" /> + <!-- property name="javac.memorymax" value="128m" /--> <!-- I ran out of memory with these .. linux x86_64 6u14 --> + <property name="javac.memorymax" value="512m" /> + + <!-- Names of directories relative to the project root. + Some of these are used in FileMappers later for dependence information + and need exact string matching, which is why they use file.separator + instead of "/". --> + <condition property="rootrel.build" value="build"> + <not> + <isset property="rootrel.build"/> + </not> + </condition> + <property name="rootrel.build.jogl" value="${rootrel.build}/jogl" /> + <property name="rootrel.src.java" value="src/jogl/classes" /> + <property name="rootrel.src.c" value="src/jogl/native" /> + <property name="rootrel.src.c.openmax" value="src/jogl/native/openmax" /> + + <property name="rootrel.src.generated" value="${rootrel.build.jogl}/gensrc" /> + <property name="rootrel.generated.c.jogl" value="${rootrel.src.generated}/native/jogl" /> + <property name="rootrel.generated.c.cg" value="${rootrel.src.generated}/native/jogl_cg" /> + <property name="rootrel.obj" value="${rootrel.build.jogl}/obj" /> + <property name="rootrel.obj.jogl" value="${rootrel.obj}/jogl" /> + <property name="rootrel.obj.cg" value="${rootrel.obj}/jogl_cg" /> + + <!-- GlueGen properties. --> + <!-- NOTE that these require a checked-out GlueGen workspace as a --> + <!-- sibling of the JOGL workspace. --> + <property name="gluegen.make.dir" value="../../gluegen/make" /> + <property name="gluegen.build.xml" value="${gluegen.make.dir}/build.xml" /> + <property name="gluegen.jar" value="../../gluegen/${rootrel.build}/gluegen.jar" /> + <property name="gluegen-rt.jar" value="../../gluegen/${rootrel.build}/gluegen-rt.jar" /> + <property name="nativewindow.all.jar" value="../${rootrel.build}/nativewindow/nativewindow.all.jar" /> + + <!-- The source directories. --> + <property name="src.java" value="${project.root}/${rootrel.src.java}" /> + <property name="src.c" value="${project.root}/${rootrel.src.c}" /> + <property name="build" value="${project.root}/${rootrel.build.jogl}" /> + <property name="tempdir" value="${project.root}/build-temp" /> + + <!-- The generated source directories. --> + <property name="src.generated" value="${build}/gensrc" /> + <property name="src.generated.java" value="${src.generated}/classes" /> + <property name="src.generated.java.cg" value="${src.generated}/classes/com/sun/opengl/cg" /> + <property name="src.generated.c" value="${src.generated}/native/jogl" /> + <property name="src.generated.c.openmax" value="${src.generated}/native/openmax" /> + <property name="src.generated.c.cg" value="${src.generated}/native/jogl_cg" /> + + <!-- The compiler output directories. --> + <property name="classes" value="${build}/classes" /> + <property name="obj" value="${project.root}/${rootrel.obj}" /> + <property name="obj.jogl" value="${project.root}/${rootrel.obj.jogl}" /> + <property name="obj.cg" value="${project.root}/${rootrel.obj.cg}" /> + + <!-- The GL headers from which Java files are generated --> + <property name="config" value="${make}/config/jogl" /> + <property name="stub.includes" value="${make}/stub_includes" /> + <property name="stub.includes.dir" value="stub_includes" /> <!-- NOTE: this MUST be relative for FileSet --> + <property name="stub.includes.opengl" value="${stub.includes}/opengl" /> + <property name="stub.includes.common" value="${stub.includes}/common" /> + <dirset id="stub.includes.fileset.all.gl2" dir="."> + <include name="${stub.includes.dir}/opengl/**" /> + <include name="${stub.includes.dir}/macosx/**" /> + <include name="${stub.includes.dir}/win32/**" /> + <include name="${stub.includes.dir}/x11/**" /> + <include name="${stub.includes.dir}/common/**" /> + <include name="${stub.includes.dir}/jni/**" /> + </dirset> + <fileset id="stub.includes.dependencies.fileset.1" dir="${stub.includes.dir}"> + <include name="opengl/**" /> + <include name="macosx/**" /> + <include name="win32/**" /> + <include name="x11/**" /> + <include name="common/**" /> + <include name="jni/**" /> + </fileset> + <fileset id="stub.includes.dependencies.fileset.2" file="${gluegen.jar}" /> + <fileset id="stub.includes.dependencies.fileset.3" dir="${config}"> + <include name="*.cfg" /> + <include name="gl*.java" /> + <include name="*.c" /> + <exclude name="cg-common.cfg" /> + </fileset> + <dirset id="stub.includes.cg.fileset.all" dir="."> + <include name="${stub.includes.dir}/opengl/**" /> + <include name="${stub.includes.dir}/cg/**" /> + <include name="${stub.includes.dir}/macosx/**" /> + <include name="${stub.includes.dir}/win32/**" /> + <include name="${stub.includes.dir}/x11/**" /> + <include name="${stub.includes.dir}/common/**" /> + </dirset> + <fileset id="stub.includes.cg.dependencies.fileset" dir="."> + <include name="${stub.includes.dir}/cg/**" /> + <include name="${config}/cg-common.cfg" /> + <include name="${config}/cg-common-CustomJavaCode.java" /> + </fileset> + + <!-- Create the classpath that includes GlueGen and + - ANTLR. This requires the user-defined "antlr.jar" + - property. --> + <path id="gluegen.classpath"> + <pathelement location="${gluegen.jar}" /> + <pathelement location="${antlr.jar}" /> + </path> + + <path id="nativewindow_gluegen.classpath"> + <pathelement location="${nativewindow.all.jar}" /> + <pathelement location="${gluegen-rt.jar}" /> + </path> + + <!-- Create the classpath that includes GlueGen and + - the current classes for building the composable pipelines. + --> + <path id="pipeline.classpath"> + <pathelement location="${gluegen.jar}" /> + <pathelement location="${classes}" /> + </path> + + <!-- The resulting jogl.jar. --> + <property name="jogl.core.jar" value="${build}/jogl.core.jar" /> + <property name="jogl.gles1.jar" value="${build}/jogl.gles1.jar" /> + <property name="jogl.gles1.dbg.jar" value="${build}/jogl.gles1.dbg.jar" /> + <property name="jogl.gles2.jar" value="${build}/jogl.gles2.jar" /> + <property name="jogl.gles2.dbg.jar" value="${build}/jogl.gles2.dbg.jar" /> + <property name="jogl.egl.jar" value="${build}/jogl.egl.jar" /> + <property name="jogl.glutess.jar" value="${build}/jogl.glu.tess.jar" /> + <property name="jogl.glumipmap.jar" value="${build}/jogl.glu.mipmap.jar" /> + <property name="jogl.glugl2.jar" value="${build}/jogl.glu.gl2.jar" /> + <property name="jogl.gl2es12.x11.jar" value="${build}/jogl.gl2es12.x11.jar" /> + <property name="jogl.gl2es12.win.jar" value="${build}/jogl.gl2es12.win.jar" /> + <property name="jogl.gl2es12.osx.jar" value="${build}/jogl.gl2es12.osx.jar" /> + <property name="jogl.gl2es12.dbg.jar" value="${build}/jogl.gl2es12.dbg.jar" /> + <property name="jogl.gl2.x11.jar" value="${build}/jogl.gl2.x11.jar" /> + <property name="jogl.gl2.win.jar" value="${build}/jogl.gl2.win.jar" /> + <property name="jogl.gl2.osx.jar" value="${build}/jogl.gl2.osx.jar" /> + <property name="jogl.gl2.dbg.jar" value="${build}/jogl.gl2.dbg.jar" /> + <property name="jogl.awt.jar" value="${build}/jogl.awt.jar" /> + <property name="jogl.util.jar" value="${build}/jogl.util.jar" /> + <property name="jogl.util.gl2.jar" value="${build}/jogl.util.gl2.jar" /> + <property name="jogl.util.awt.jar" value="${build}/jogl.util.awt.jar" /> + <property name="jogl.util.fixedfuncemu.jar" value="${build}/jogl.util.fixedfuncemu.jar" /> + <property name="jogl.sdk.jar" value="${build}/jogl.sdk.jar" /> + <property name="jogl.all.jar" value="${build}/jogl.all.jar" /> + + <!-- The javadoc dirs. --> + <property name="javadoc" value="${project.root}/javadoc_jogl_public" /> + <property name="javadoc.spec" value="${project.root}/javadoc_jogl_spec" /> + <property name="javadoc.dev" value="${project.root}/javadoc_jogl_dev" /> + <property name="javadoc.link" value="http://java.sun.com/j2se/1.4.2/docs/api/" /> + <property name="javadoc.windowtitle" value="JOGL API -- JSR-231 ${base_version} Specification" /> + <property name="javadoc.overview" value="doc/jogl/spec-overview.html" /> + <property name="javadoc.spec.packagenames" value="javax.media.opengl.*" /> + + <property name="javadoc.packagenames" value="${javadoc.spec.packagenames},com.sun.opengl.util.*" /> + + <property name="javadoc.dev.packagenames" value="${javadoc.packagenames},com.sun.opengl.impl.*,com.sun.gluegen,com.sun.gluegen.runtime" /> + <property name="javadoc.bottom" value="Copyright 2005 Sun Microsystems, Inc. All rights reserved. Use is subject to <a href="http://jcp.org/en/jsr/detail?id=231">license terms</a>." /> + </target> + + <target name="declare.gl.gles1" unless="setup.noes1"> + <property name="gles1.headers" value="${stub.includes.dir}/opengl/GLES/*.h" /> <!-- NOTE: this MUST be relative for FileSet --> <!-- CHECK: this may need to be pruned for each platform --> + </target> + + <target name="declare.gl.gles2" unless="setup.noes2"> + <property name="gles2.headers" value="${stub.includes.dir}/opengl/GLES2/*.h" /> <!-- NOTE: this MUST be relative for FileSet --> <!-- CHECK: this may need to be pruned for each platform --> + </target> + + <target name="declare.gl.gles" unless="setup.noes" depends="declare.gl.gles1, declare.gl.gles2"> + <!-- Prepare to build the EGL interface --> + <property name="window.es.cfg" value="${config}/egl.cfg" /> + <property name="window.es.ext.cfg" value="${config}/eglext.cfg" /> + <property name="window.es.system" value="egl"/> + </target> + + <target name="declare.gl.gl2" unless="setup.nogl2"> + <property name="gl2.headers" value="${stub.includes.dir}/opengl/GL/*.h" /> <!-- NOTE: this MUST be relative for FileSet --> <!-- CHECK: this may need to be pruned for each platform --> + </target> + + <!-- Declarations that have to come after both the common setup and the GLES tests --> + <target name="declare.common.2"> + </target> + + <!-- ================================================================== --> + <!-- + - Initialize all parameters required for the build and create any + - required directories. + --> + <target name="init" depends="declare.common, declare.gl.gles, declare.gl.gl2, declare.common.2"> + <!-- Call the external config validator script to make sure the config is ok and consistent --> + <ant antfile="${validate.user.properties}" inheritall="true"/> + + <!-- Create the required output directories. --> + <mkdir dir="${src.generated.java}" /> + <mkdir dir="${src.generated.c}" /> + <mkdir dir="${src.generated.c}/MacOSX" /> + <mkdir dir="${src.generated.c}/Windows" /> + <mkdir dir="${src.generated.c}/X11" /> + <mkdir dir="${src.generated.c.openmax}" /> + <mkdir dir="${classes}" /> + <mkdir dir="${obj}" /> + <mkdir dir="${obj.jogl}" /> + <mkdir dir="${obj.cg}" /> + </target> + + <!-- ================================================================== --> + <!-- GlueGen and BuildStaticGLInfo creation, task setup and Java file generation --> + <!-- + - Build GlueGen + --> + <target name="build.gluegen" depends="init"> + <!-- Run the GlueGen build to ensure that the GlueGen ANT task + - has been built. --> + <!-- FIXME: remove passing down of antlr.jar when gluegen.properties is on all + nightly build machines --> + <ant antfile="${gluegen.build.xml}" dir="${gluegen.make.dir}" target="all" inheritAll="false"> + <propertyset> + <propertyref name="antlr.jar" /> + <!--propertyref name="gluegen.nsig" /--> + <propertyref name="isCDCFP" /> + </propertyset> + </ant> + </target> + + <!-- + - Check to see whether we need to rebuild the generated sources. + --> + <target name="java.generate.check"> + <!-- Blow away all target files if any dependencies are violated + (the uptodate task doesn't allow arbitrary source and target filesets but should) --> + <!-- + <dependset> + <srcfileset refid="stub.includes.dependencies.fileset.1" /> + <srcfileset refid="stub.includes.dependencies.fileset.2" /> + <srcfileset refid="stub.includes.dependencies.fileset.3" /> + <targetfileset dir="${src.generated}"> + <include name="**/*.java" /> + <include name="**/*.c" /> + </targetfileset> + </dependset> + --> + + <!-- Now check for the presence of one well-known file --> + <uptodate property="java.generate.skip.es1" + targetfile="${src.generated.java}/javax/media/opengl/GLES1.java"> + <srcfiles refid="stub.includes.dependencies.fileset.1" /> + <srcfiles refid="stub.includes.dependencies.fileset.2" /> + <srcfiles refid="stub.includes.dependencies.fileset.3" /> + </uptodate> + <uptodate property="java.generate.skip.es2" + targetfile="${src.generated.java}/javax/media/opengl/GLES2.java"> + <srcfiles refid="stub.includes.dependencies.fileset.1" /> + <srcfiles refid="stub.includes.dependencies.fileset.2" /> + <srcfiles refid="stub.includes.dependencies.fileset.3" /> + </uptodate> + <uptodate property="java.generate.skip.gl2" + targetfile="${src.generated.java}/javax/media/opengl/GL2.java"> + <srcfiles refid="stub.includes.dependencies.fileset.1" /> + <srcfiles refid="stub.includes.dependencies.fileset.2" /> + <srcfiles refid="stub.includes.dependencies.fileset.3" /> + </uptodate> + <uptodate property="java.generate.skip.glu" + targetfile="${src.generated.java}/javax/media/opengl/glu/GLU.java"> + <srcfiles refid="stub.includes.dependencies.fileset.1" /> + <srcfiles refid="stub.includes.dependencies.fileset.2" /> + <srcfiles refid="stub.includes.dependencies.fileset.3" /> + </uptodate> + + <condition property="java.generate.skip"> + <and> + <isset property="java.generate.skip.es1"/> + <isset property="java.generate.skip.es2"/> + <!--isset property="java.generate.skip.gl2"/--> + <isset property="java.generate.skip.glu"/> + </and> + </condition> + + <!--property name="java.generate.skip" value="true"/--> + </target> + + <target name="java.generate.cleantemp"> + <delete includeEmptyDirs="true" quiet="true"> + <fileset dir="${tempdir}/gensrc" /> + </delete> + </target> + + <target name="java.generate.copy2temp"> + <copy todir="${tempdir}"> + <fileset dir="../${rootrel.build.jogl}" + includes="gensrc/classes/**" /> + </copy> + </target> + + <target name="java.generate.gl_if"> + <echo message="Generating GL interface" /> + <antcall target="java.generate.copy2temp" inheritRefs="true" /> + <gluegen src="${stub.includes.opengl}/gles2.c" + outputRootDir="../${rootrel.build.jogl}" + config="${config}/gl-if-gl.cfg" + includeRefid="stub.includes.fileset.all.gl2" + emitter="com.sun.gluegen.opengl.GLEmitter"> + <classpath refid="gluegen.classpath" /> + </gluegen> + </target> + + <target name="java.generate.gl2_es1_if"> + <echo message="Generating GL2_ES1 interface" /> + <antcall target="java.generate.copy2temp" inheritRefs="true" /> + <gluegen src="${stub.includes.opengl}/gles1.c" + outputRootDir="../${rootrel.build.jogl}" + config="${config}/gl-if-gl2_es1.cfg" + includeRefid="stub.includes.fileset.all.gl2" + emitter="com.sun.gluegen.opengl.GLEmitter"> + <classpath refid="gluegen.classpath" /> + </gluegen> + </target> + + <target name="java.generate.gl2_es2_if"> + <echo message="Generating GL2_ES2 interface" /> + <antcall target="java.generate.copy2temp" inheritRefs="true" /> + <gluegen src="${stub.includes.opengl}/gles2.c" + outputRootDir="../${rootrel.build.jogl}" + config="${config}/gl-if-gl2_es2.cfg" + includeRefid="stub.includes.fileset.all.gl2" + emitter="com.sun.gluegen.opengl.GLEmitter"> + <classpath refid="gluegen.classpath" /> + </gluegen> + </target> + + <target name="java.generate.gl2"> + <echo message="Generating GL2 interface and implementation" /> + <antcall target="java.generate.copy2temp" inheritRefs="true" /> + <gluegen src="${stub.includes.opengl}/gl2.c" + outputRootDir="../${rootrel.build.jogl}" + config="${config}/gl-gl2.cfg" + includeRefid="stub.includes.fileset.all.gl2" + emitter="com.sun.gluegen.opengl.GLEmitter"> + <classpath refid="gluegen.classpath" /> + </gluegen> + </target> + + <target name="java.generate.gl3"> + <echo message="Generating GL3 interface and implementation" /> + <antcall target="java.generate.copy2temp" inheritRefs="true" /> + <gluegen src="${stub.includes.opengl}/gl3.c" + outputRootDir="../${rootrel.build.jogl}" + config="${config}/gl-gl3.cfg" + includeRefid="stub.includes.fileset.all.gl2" + emitter="com.sun.gluegen.opengl.GLEmitter"> + <classpath refid="gluegen.classpath" /> + </gluegen> + </target> + + <target name="java.generate.gl2es12"> + <echo message="Generating GL2ES12 interface and implementation" /> + <antcall target="java.generate.copy2temp" inheritRefs="true" /> + <gluegen src="${stub.includes.opengl}/gl2.c" + outputRootDir="../${rootrel.build.jogl}" + config="${config}/gl-gl2es12.cfg" + includeRefid="stub.includes.fileset.all.gl2" + emitter="com.sun.gluegen.opengl.GLEmitter"> + <classpath refid="gluegen.classpath" /> + </gluegen> + </target> + + <target name="java.generate.gles1"> + <echo message="Generating GLES1 interface and implementation" /> + <antcall target="java.generate.copy2temp" inheritRefs="true" /> + <gluegen src="${stub.includes.opengl}/gles1.c" + outputRootDir="../${rootrel.build.jogl}" + config="${config}/gl-es1.cfg" + includeRefid="stub.includes.fileset.all.gl2" + emitter="com.sun.gluegen.opengl.GLEmitter"> + <classpath refid="gluegen.classpath" /> + </gluegen> + </target> + + <target name="java.generate.gles2"> + <echo message="Generating GLES2 interface and implementation" /> + <antcall target="java.generate.copy2temp" inheritRefs="true" /> + <gluegen src="${stub.includes.opengl}/gles2.c" + outputRootDir="../${rootrel.build.jogl}" + config="${config}/gl-es2.cfg" + includeRefid="stub.includes.fileset.all.gl2" + emitter="com.sun.gluegen.opengl.GLEmitter"> + <classpath refid="gluegen.classpath" /> + </gluegen> + </target> + + <target name="java.generate.gl.all" depends="java.generate.gl_if, java.generate.gl2_es1_if, java.generate.gl2_es2_if, java.generate.gl2, java.generate.gl3, java.generate.gl2es12, java.generate.gles1, java.generate.gles2"/> + + <!-- target name="java.generate.gl.nsig" if="gluegen.nsig"> + <echo message="Generating GL interface and implementation" /> + <gluegen src="${gl.c}" + config="${gl.cfg.nsig}" + includeRefid="stub.includes.fileset.all.gl2" + emitter="com.sun.gluegen.nativesig.NativeSignatureEmitter"> + <classpath refid="gluegen.classpath" /> + </gluegen> + </target> --> + + <target name="java.generate.glu.base"> + <echo message="Generating GLU class" /> + <antcall target="java.generate.copy2temp" inheritRefs="true" /> + <gluegen src="${stub.includes.opengl}/glu.c" + outputRootDir="../${rootrel.build.jogl}" + config="${config}/glu-base.cfg" + includeRefid="stub.includes.fileset.all.gl2" + emitter="com.sun.gluegen.opengl.GLEmitter"> + <classpath refid="gluegen.classpath" /> + </gluegen> + </target> + + <target name="java.generate.glu.GL2ES1"> + <echo message="Generating GLU class" /> + <antcall target="java.generate.copy2temp" inheritRefs="true" /> + <gluegen src="${stub.includes.opengl}/glu.c" + outputRootDir="../${rootrel.build.jogl}" + config="${config}/glu-gl2es1.cfg" + includeRefid="stub.includes.fileset.all.gl2" + emitter="com.sun.gluegen.opengl.GLEmitter"> + <classpath refid="gluegen.classpath" /> + </gluegen> + </target> + + <target name="java.generate.glu.GL2" unless="setup.nogl2"> + <echo message="Generating GLU class" /> + <antcall target="java.generate.copy2temp" inheritRefs="true" /> + <gluegen src="${stub.includes.opengl}/glu.c" + outputRootDir="../${rootrel.build.jogl}" + config="${config}/glu-gl2.cfg" + includeRefid="stub.includes.fileset.all.gl2" + emitter="com.sun.gluegen.opengl.GLEmitter"> + <classpath refid="gluegen.classpath" /> + </gluegen> + </target> + + <target name="java.generate.platform.glext" unless="setup.nogl2"> + <echo message="Generating platform-specific OpenGL extension class" /> + <antcall target="java.generate.copy2temp" inheritRefs="true" /> + <gluegen src="${glext.platform.header}" + outputRootDir="../${rootrel.build.jogl}" + config="${glext.platform.cfg}" + includeRefid="stub.includes.fileset.all.gl2" + emitter="com.sun.gluegen.opengl.GLEmitter"> + <classpath refid="gluegen.classpath" /> + </gluegen> + </target> + + <target name="java.generate.window.system.es" if="window.es.cfg" unless="setup.noes"> + <echo message="Generating EGL implementation class" /> + <antcall target="java.generate.copy2temp" inheritRefs="true" /> + <dirset id="stub.includes.fileset.platform" dir="." includes="${stub.includes.dir}/${window.es.system}/** ${stub.includes.dir}/common/**" /> + <gluegen src="${stub.includes.dir}/${window.es.system}/window-system.c" + outputRootDir="../${rootrel.build.jogl}" + config="${window.es.cfg}" + includeRefid="stub.includes.fileset.platform" + emitter="com.sun.gluegen.opengl.GLEmitter"> + <classpath refid="gluegen.classpath" /> + </gluegen> + </target> + + <target name="java.generate.window.system.es.ext" if="window.es.ext.cfg" unless="setup.noes"> + <echo message="Generating EGLExt implementation class" /> + <antcall target="java.generate.copy2temp" inheritRefs="true" /> + <dirset id="stub.includes.fileset.platform" dir="." includes="${stub.includes.dir}/${window.es.system}/** ${stub.includes.dir}/common/**" /> + <gluegen src="${stub.includes.dir}/${window.es.system}/window-system-ext.c" + outputRootDir="../${rootrel.build.jogl}" + config="${window.es.ext.cfg}" + includeRefid="stub.includes.fileset.platform" + emitter="com.sun.gluegen.opengl.GLEmitter"> + <classpath refid="gluegen.classpath" /> + </gluegen> + </target> + + <target name="java.generate.window.system.os" if="window.os.cfg" unless="setup.nogl2"> + <echo message="Generating WGL/GLX/CGL/EGL implementation class" /> + <antcall target="java.generate.copy2temp" inheritRefs="true" /> + <gluegen src="${stub.includes.dir}/${window.os.system}/window-system.c" + outputRootDir="../${rootrel.build.jogl}" + config="${window.os.cfg}" + includeRefid="stub.includes.fileset.platform" + emitter="com.sun.gluegen.opengl.GLEmitter"> + <classpath refid="gluegen.classpath" /> + </gluegen> + </target> + + <target name="java.generate.SystemUtil.javame_cdc_fp" if="setup.cdcfp"> + <copy file="../src/jogl/classes/com/sun/opengl/impl/SystemUtil.java.javame_cdc_fp" tofile="../${rootrel.build.jogl}/gensrc/classes/com/sun/opengl/impl/SystemUtil.java" /> + </target> + + <target name="java.generate.SystemUtil.javase" unless="setup.cdcfp"> + <copy file="../src/jogl/classes/com/sun/opengl/impl/SystemUtil.java.javase" tofile="../${rootrel.build.jogl}/gensrc/classes/com/sun/opengl/impl/SystemUtil.java" /> + </target> + + <!-- Generate the SystemUtil class for this particular profile --> + <target name="java.generate.SystemUtil" depends="java.generate.SystemUtil.javase, java.generate.SystemUtil.javame_cdc_fp" /> + + <target name="java.generate.BufferUtil.javame_cdc_fp" if="setup.cdcfp"> + <copy file="../src/jogl/classes/com/sun/opengl/util/BufferUtil.java.javame_cdc_fp" tofile="../${rootrel.build.jogl}/gensrc/classes/com/sun/opengl/util/BufferUtil.java" /> + <copy file="../src/jogl/classes/com/sun/opengl/impl/InternalBufferUtil.java.javame_cdc_fp" tofile="../${rootrel.build.jogl}/gensrc/classes/com/sun/opengl/impl/InternalBufferUtil.java" /> + </target> + + <target name="java.generate.BufferUtil.javase" unless="setup.cdcfp"> + <copy file="../src/jogl/classes/com/sun/opengl/util/BufferUtil.java.javase" tofile="../${rootrel.build.jogl}/gensrc/classes/com/sun/opengl/util/BufferUtil.java" /> + <copy file="../src/jogl/classes/com/sun/opengl/impl/InternalBufferUtil.java.javase" tofile="../${rootrel.build.jogl}/gensrc/classes/com/sun/opengl/impl/InternalBufferUtil.java" /> + </target> + + <!-- Generate the BufferUtil classes for this particular profile --> + <target name="java.generate.BufferUtil" depends="java.generate.BufferUtil.javase, java.generate.BufferUtil.javame_cdc_fp" /> + + <target name="java.generate.TextureIO.javame_cdc_fp" if="setup.cdcfp"> + <copy file="../src/jogl/classes/com/sun/opengl/util/texture/TextureIO.java.javame_cdc_fp" tofile="../${rootrel.build.jogl}/gensrc/classes/com/sun/opengl/util/texture/TextureIO.java" /> + <copy file="../src/jogl/classes/com/sun/opengl/util/texture/spi/DDSImage.java.javame_cdc_fp" tofile="../${rootrel.build.jogl}/gensrc/classes/com/sun/opengl/util/texture/spi/DDSImage.java" /> + <copy file="../src/jogl/classes/com/sun/opengl/util/texture/spi/TGAImage.java.javame_cdc_fp" tofile="../${rootrel.build.jogl}/gensrc/classes/com/sun/opengl/util/texture/spi/TGAImage.java" /> + </target> + + <target name="java.generate.TextureIO.javase" unless="setup.cdcfp"> + <!-- For debugging --> +<!-- + <copy file="../src/jogl/classes/com/sun/opengl/util/texture/TextureIO.java.javame_cdc_fp" tofile="../${rootrel.build.jogl}/gensrc/classes/com/sun/opengl/util/texture/TextureIO.java" /> + <copy file="../src/jogl/classes/com/sun/opengl/util/texture/spi/DDSImage.java.javame_cdc_fp" tofile="../${rootrel.build.jogl}/gensrc/classes/com/sun/opengl/util/texture/spi/DDSImage.java" /> + <copy file="../src/jogl/classes/com/sun/opengl/util/texture/spi/TGAImage.java.javame_cdc_fp" tofile="../${rootrel.build.jogl}/gensrc/classes/com/sun/opengl/util/texture/spi/TGAImage.java" /> +--> + + <copy file="../src/jogl/classes/com/sun/opengl/util/texture/TextureIO.java.javase" tofile="../${rootrel.build.jogl}/gensrc/classes/com/sun/opengl/util/texture/TextureIO.java" /> + <copy file="../src/jogl/classes/com/sun/opengl/util/texture/spi/DDSImage.java.javase" tofile="../${rootrel.build.jogl}/gensrc/classes/com/sun/opengl/util/texture/spi/DDSImage.java" /> + <copy file="../src/jogl/classes/com/sun/opengl/util/texture/spi/TGAImage.java.javase" tofile="../${rootrel.build.jogl}/gensrc/classes/com/sun/opengl/util/texture/spi/TGAImage.java" /> + + </target> + + <!-- Generate the TextureIO classes for this particular profile --> + <target name="java.generate.TextureIO" depends="java.generate.TextureIO.javase, java.generate.TextureIO.javame_cdc_fp" /> + + <target name="java.generate.gl.platforms" > + <dirset id="stub.includes.fileset.platform" dir="." includes="${stub.includes.dir}/${window.os.system}/** ${stub.includes.dir}/${window.es.system}/** ${stub.includes.dir}/common/** ${stub.includes.dir}/opengl/**" /> + + <antcall target="java.generate.window.system.os" inheritRefs="true" /> + <antcall target="java.generate.platform.glext" inheritRefs="true" /> + </target> + + <!-- + - Setup the generating ANT tasks and use it to generate the Java files + - from the C GL headers. This involves setting the taskdef and creating + - the classpath reference id then running the task on each header. + --> + <target name="java.generate" depends="build.gluegen, java.generate.SystemUtil, java.generate.BufferUtil, java.generate.TextureIO, java.generate.check" unless="java.generate.skip"> + + <!-- Add the GlueGen and BuildStaticGLInfo tasks to ANT --> + <taskdef name="gluegen" classname="com.sun.gluegen.ant.GlueGenTask" + classpathref="gluegen.classpath" /> + <taskdef name="staticglgen" classname="com.sun.gluegen.ant.StaticGLGenTask" + classpathref="gluegen.classpath" /> + + <!-- Use the GlueGen and BuildStaticGLInfo tasks to generate the + - Java files --> + + <echo message="Generating GL interface and implementation" /> + <antcall target="java.generate.gl.all" inheritRefs="true" /> + <!--antcall target="java.generate.gl.nsig" inheritRefs="true" /--> + + <antcall target="java.generate.window.system.es" inheritRefs="true" /> + <antcall target="java.generate.window.system.es.ext" inheritRefs="true" /> + + <echo message="Generating platform-specifics: X11" /> + <antcall target="java.generate.gl.platforms" inheritRefs="true"> + <param name="window.os.system" value="x11"/> + <param name="window.os.cfg" value="${config}/glx-x11.cfg" /> + <param name="glext.platform.cfg" value="${config}/glxext.cfg" /> + <param name="glext.platform.header" value="${stub.includes.dir}/x11/glxext.c" /> + </antcall> + + <echo message="Generating platform-specifics: Win32" /> + <antcall target="java.generate.gl.platforms" inheritRefs="true"> + <param name="window.os.system" value="win32"/> + <param name="window.os.cfg" value="${config}/wgl-win32.cfg" /> + <param name="glext.platform.cfg" value="${config}/wglext.cfg" /> + <param name="glext.platform.header" value="${stub.includes.dir}/win32/wglext.c" /> + </antcall> + + <echo message="Generating platform-specifics: MaxOsX" /> + <antcall target="java.generate.gl.platforms" inheritRefs="true"> + <param name="window.os.system" value="macosx"/> + <param name="window.os.cfg" value="${config}/cgl-macosx.cfg" /> + <param name="glext.platform.cfg" value="${config}/cglext.cfg" /> + <param name="glext.platform.header" value="${stub.includes.dir}/macosx/cglext.c" /> + </antcall> + + <!-- Generate GLU class --> + <antcall target="java.generate.glu.base" inheritrefs="true" /> + <antcall target="java.generate.glu.GL2ES1" inheritrefs="true" /> + <antcall target="java.generate.glu.GL2" inheritrefs="true" /> + + <!-- Inform the user that the generators have successfully created + - the necessary Java files --> + <echo message="" /> + <echo message="GlueGen and BuildStaticGLInfo have successfully generated files." /> + + </target> + + <target name="java.generate.cg.check"> + <!-- Blow away all target files if any dependencies are violated + (the uptodate task doesn't allow arbitrary source and target filesets but should) --> + <dependset> + <srcfileset refid="stub.includes.cg.dependencies.fileset" /> + <targetfileset dir="."> + <include name="${src.generated.java.cg}/**/*.java" /> + <include name="${src.generated.c.cg}/**/*.c" /> + </targetfileset> + </dependset> + + <!-- Now check for the presence of one well-known file --> + <uptodate property="java.generate.cg.skip"> + <srcfiles refid="stub.includes.cg.dependencies.fileset" /> + <mapper type="merge" to="${src.generated.java}/com/sun/opengl/cg/CgGL.java" /> + </uptodate> + </target> + + <!-- + - Setup the generating ANT tasks and use it to generate the Java files + - from the C GL headers. This involves setting the taskdef and creating + - the classpath reference id then running the task on each header. + --> + <target name="java.generate.cg" depends="java.generate.cg.check" if="jogl.cg" unless="java.generate.cg.skip"> + <!-- Add the GlueGen and BuildStaticGLInfo tasks to ANT --> + <taskdef name="gluegen" classname="com.sun.gluegen.ant.GlueGenTask" + classpathref="gluegen.classpath" /> + <taskdef name="staticglgen" classname="com.sun.gluegen.ant.StaticGLGenTask" + classpathref="gluegen.classpath" /> + + <!-- Generate CgGL interface class --> + <gluegen src="${stub.includes.opengl}/cg.c" + outputRootDir="../${rootrel.build.jogl}" + config="${config}/cg-common.cfg" + includeRefid="stub.includes.cg.fileset.all" + emitter="com.sun.gluegen.JavaEmitter"> + <classpath refid="gluegen.classpath" /> + </gluegen> + </target> + + <!-- ================================================================== --> + <!-- + - Build and dependency rules for the composable pipeline + --> + <target name="java.generate.composable.pipeline.check.es1" unless="setup.noes1"> + <!-- Blow away the DebugGL*.java and TraceGL*.java sources if GL*.class has changed + (the uptodate element doesn't support arbitrary source and destination files) --> + <dependset> + <srcfilelist dir="${classes}/javax/media/opengl" files="GLES1.class" /> + <targetfileset dir="${src.generated.java}/javax/media/opengl" + includes="DebugGLES1.java,TraceGLES1.java" /> + </dependset> + + <!-- Now choose one of the two to test to see if we have to regenerate --> + <uptodate property="java.generate.composable.pipeline.skip.es1" + srcfile="${classes}/javax/media/opengl/GLES1.class" + targetfile="${src.generated.java}/javax/media/opengl/DebugGLES1.java" /> + + </target> + + <target name="java.generate.composable.pipeline.check.es2" unless="setup.noes2"> + <!-- Blow away the DebugGL*.java and TraceGL*.java sources if GL*.class has changed + (the uptodate element doesn't support arbitrary source and destination files) --> + <dependset> + <srcfilelist dir="${classes}/javax/media/opengl" files="GLES2.class" /> + <targetfileset dir="${src.generated.java}/javax/media/opengl" + includes="DebugGLES2.java,TraceGLES2.java" /> + </dependset> + + <!-- Now choose one of the two to test to see if we have to regenerate --> + <uptodate property="java.generate.composable.pipeline.skip.es2" + srcfile="${classes}/javax/media/opengl/GLES2.class" + targetfile="${src.generated.java}/javax/media/opengl/DebugGLES2.java" /> + + </target> + + <target name="java.generate.composable.pipeline.check.gl2es12" unless="setup.nogl2"> + <!-- Blow away the DebugGL*.java and TraceGL*.java sources if GL*.class has changed + (the uptodate element doesn't support arbitrary source and destination files) --> + <dependset> + <srcfilelist dir="${classes}/javax/media/opengl" files="GL2ES12.class" /> + <targetfileset dir="${src.generated.java}/javax/media/opengl" + includes="DebugGL2ES12.java,TraceGL2ES12.java" /> + </dependset> + + <!-- Now choose one of the two to test to see if we have to regenerate --> + <uptodate property="java.generate.composable.pipeline.skip.gl2es12" + srcfile="${classes}/javax/media/opengl/GL2ES12.class" + targetfile="${src.generated.java}/javax/media/opengl/DebugGL2ES12.java" /> + </target> + + <target name="java.generate.composable.pipeline.check.gl2" unless="setup.nogl2"> + <!-- Blow away the DebugGL*.java and TraceGL*.java sources if GL*.class has changed + (the uptodate element doesn't support arbitrary source and destination files) --> + <dependset> + <srcfilelist dir="${classes}/javax/media/opengl" files="GL2.class" /> + <targetfileset dir="${src.generated.java}/javax/media/opengl" + includes="DebugGL2.java,TraceGL2.java" /> + </dependset> + + <!-- Now choose one of the two to test to see if we have to regenerate --> + <uptodate property="java.generate.composable.pipeline.skip.gl2" + srcfile="${classes}/javax/media/opengl/GL2.class" + targetfile="${src.generated.java}/javax/media/opengl/DebugGL2.java" /> + </target> + + <target name="java.generate.composable.pipeline.check.gl3" unless="setup.nogl3"> + <!-- Blow away the DebugGL*.java and TraceGL*.java sources if GL*.class has changed + (the uptodate element doesn't support arbitrary source and destination files) --> + <dependset> + <srcfilelist dir="${classes}/javax/media/opengl" files="GL3.class" /> + <targetfileset dir="${src.generated.java}/javax/media/opengl" + includes="DebugGL3.java,TraceGL3.java" /> + </dependset> + + <!-- Now choose one of the two to test to see if we have to regenerate --> + <uptodate property="java.generate.composable.pipeline.skip.gl3" + srcfile="${classes}/javax/media/opengl/GL3.class" + targetfile="${src.generated.java}/javax/media/opengl/DebugGL3.java" /> + </target> + + <target name="java.generate.composable.pipeline.es1" depends="java.generate.composable.pipeline.check.es1" unless="java.generate.composable.pipeline.skip.es1"> + <java classname="com.sun.gluegen.opengl.BuildComposablePipeline" fork="yes" failonerror="true"> + <arg value="javax.media.opengl.GLES1" /> + <arg value="${src.generated.java}/javax/media/opengl" /> + <classpath refid="pipeline.classpath" /> + </java> + </target> + + <target name="java.generate.composable.pipeline.es2" depends="java.generate.composable.pipeline.check.es2" unless="java.generate.composable.pipeline.skip.es2"> + <java classname="com.sun.gluegen.opengl.BuildComposablePipeline" fork="yes" failonerror="true"> + <arg value="javax.media.opengl.GLES2" /> + <arg value="${src.generated.java}/javax/media/opengl" /> + <classpath refid="pipeline.classpath" /> + </java> + </target> + + <target name="java.generate.composable.pipeline.gl2es12" depends="java.generate.composable.pipeline.check.gl2es12" unless="java.generate.composable.pipeline.skip.gl2es12"> + <java classname="com.sun.gluegen.opengl.BuildComposablePipeline" fork="yes" failonerror="true"> + <arg value="javax.media.opengl.GL2ES12" /> + <arg value="${src.generated.java}/javax/media/opengl" /> + <classpath refid="pipeline.classpath" /> + </java> + </target> + + <target name="java.generate.composable.pipeline.gl2" depends="java.generate.composable.pipeline.check.gl2" unless="java.generate.composable.pipeline.skip.gl2"> + <java classname="com.sun.gluegen.opengl.BuildComposablePipeline" fork="yes" failonerror="true"> + <arg value="javax.media.opengl.GL2" /> + <arg value="${src.generated.java}/javax/media/opengl" /> + <classpath refid="pipeline.classpath" /> + </java> + </target> + + <target name="java.generate.composable.pipeline.gl3" depends="java.generate.composable.pipeline.check.gl3" unless="java.generate.composable.pipeline.skip.gl3"> + <java classname="com.sun.gluegen.opengl.BuildComposablePipeline" fork="yes" failonerror="true"> + <arg value="javax.media.opengl.GL3" /> + <arg value="${src.generated.java}/javax/media/opengl" /> + <classpath refid="pipeline.classpath" /> + </java> + </target> + + <target name="java.generate.composable.pipeline.check"> + <condition property="java.generate.composable.pipeline.skip.es1"> + <isset property="setup.noes1"/> + </condition> + <condition property="java.generate.composable.pipeline.skip.es2"> + <isset property="setup.noes2"/> + </condition> + <condition property="java.generate.composable.pipeline.skip.gl2"> + <isset property="setup.nogl2"/> + </condition> + <condition property="java.generate.composable.pipeline.skip.gl3"> + <isset property="setup.nogl3"/> + </condition> + </target> + <target name="java.generate.composable.pipeline" depends="java.generate.composable.pipeline.check, java.generate.composable.pipeline.es1, java.generate.composable.pipeline.es2, java.generate.composable.pipeline.gl2, java.generate.composable.pipeline.gl3"> + </target> + + <target name="java.generate.composable.pipeline.custom.check.glfixfunc"> + <!-- Blow away the DebugGL*.java and TraceGL*.java sources if GL*.class has changed + (the uptodate element doesn't support arbitrary source and destination files) --> + <dependset> + <srcfilelist dir="${classes}/com/sun/opengl/util/glsl/fixedfunc" files="FixedFuncHook.class" /> + <srcfilelist dir="${classes}/javax/media/opengl" files="GL2ES1.class" /> + <srcfilelist dir="${classes}/javax/media/opengl" files="GL2ES2.class" /> + <targetfileset dir="${src.generated.java}/com/sun/opengl/util/glsl/fixedfunc/impl" + includes="FixedFuncImpl.java" /> + </dependset> + + <!-- Now choose one of the two to test to see if we have to regenerate --> + <uptodate property="java.generate.composable.pipeline.custom.skip.glfixfunc" + srcfile="${classes}/javax/media/opengl/GL2ES1.class" + targetfile="${src.generated.java}/com/sun/opengl/util/glsl/fixedfunc/impl/FixedFuncImpl.java" /> + </target> + <target name="java.generate.composable.pipeline.custom.glfixfunc" depends="java.generate.composable.pipeline.custom.check.glfixfunc" unless="java.generate.composable.pipeline.custom.skip.glfixfunc"> + <java classname="com.sun.gluegen.opengl.BuildComposablePipeline" fork="yes" failonerror="true"> + <arg value="javax.media.opengl.GL2ES1" /> + <arg value="${src.generated.java}/com/sun/opengl/util/glsl/fixedfunc/impl" /> + <arg value="com.sun.opengl.util.glsl.fixedfunc.impl.FixedFuncImpl" /> + <arg value="com.sun.opengl.util.glsl.fixedfunc.impl.FixedFuncHook" /> + <arg value="javax.media.opengl.GL2ES2" /> + <arg value="prolog_xor_downstream" /> + <classpath refid="pipeline.classpath" /> + </java> + </target> + <target name="java.generate.composable.pipeline.custom" depends="init, build.gluegen, java.generate.composable.pipeline.check, java.generate.composable.pipeline.custom.glfixfunc"> + </target> + + <!-- ================================================================== --> + <!-- + - Compile the original and generated source. The composable pipelines + - will be generated. + --> + <target name="java.compile.firstpass" depends="java.generate,java.generate.cg"> + <antcall target="java.generate.cleantemp" inheritRefs="true" /> + + <!-- Perform the first pass Java compile. --> + <javac destdir="${classes}" + includes="javax/media/opengl/fixedfunc/** javax/media/opengl/GLDrawableFactory.java javax/media/opengl/GLDrawable.java javax/media/opengl/GLContext.java javax/media/opengl/GL.java javax/media/opengl/GL2ES1.java javax/media/opengl/GL2ES2.java javax/media/opengl/GL2.java javax/media/opengl/GLES1.java javax/media/opengl/GLES2.java javax/media/opengl/GL3.java" + fork="yes" + memoryMaximumSize="${javac.memorymax}" + source="1.4" debug="${javacdebug}" debuglevel="${javacdebuglevel}"> + <classpath refid="nativewindow_gluegen.classpath"/> + <src path="${src.java}" /> + <src path="${src.generated.java}" /> + </javac> + </target> + + <target name="java.compile.secondpass.1" if="javac.bootclasspath.jar"> + <!-- Perform the second pass Java compile; everything except portion of fixed function emulation depending on generated code. --> + <javac destdir="${classes}" + excludes="com/sun/opengl/util/glsl/fixedfunc/FixedFuncUtil.java,${java.excludes.all}" + source="${jogl.sourcelevel}" + bootclasspath="${javac.bootclasspath.jar}" + fork="yes" + memoryMaximumSize="${javac.memorymax}" + debug="${javacdebug}" debuglevel="${javacdebuglevel}"> + <classpath refid="nativewindow_gluegen.classpath"/> + <src path="${src.java}" /> + <src path="${src.generated.java}" /> + </javac> + </target> + + <target name="java.compile.secondpass.2" unless="javac.bootclasspath.jar"> + <!-- Perform the second pass Java compile; everything except portion of fixed function emulation depending on generated code. --> + <javac destdir="${classes}" + excludes="com/sun/opengl/util/glsl/fixedfunc/FixedFuncUtil.java,${java.excludes.all}" + source="${jogl.sourcelevel}" + fork="yes" + memoryMaximumSize="${javac.memorymax}" + debug="${javacdebug}" debuglevel="${javacdebuglevel}"> + <classpath refid="nativewindow_gluegen.classpath"/> + <src path="${src.java}" /> + <src path="${src.generated.java}" /> + </javac> + </target> + + <target name="java.compile.secondpass" depends="java.generate.composable.pipeline,java.compile.secondpass.1,java.compile.secondpass.2" /> + + <target name="java.compile.thirdpass.1" if="javac.bootclasspath.jar"> + <!-- Perform the third pass Java compile; everything including fixed function emulation. --> + <javac destdir="${classes}" + excludes="${java.excludes.all}" + source="${jogl.sourcelevel}" + bootclasspath="${javac.bootclasspath.jar}" + fork="yes" + memoryMaximumSize="${javac.memorymax}" + debug="${javacdebug}" debuglevel="${javacdebuglevel}"> + <classpath refid="nativewindow_gluegen.classpath"/> + <src path="${src.java}" /> + <src path="${src.generated.java}" /> + </javac> + </target> + + <target name="java.compile.thirdpass.2" unless="javac.bootclasspath.jar"> + <!-- Perform the third pass Java compile; everything including fixed function emulation. --> + <javac destdir="${classes}" + excludes="${java.excludes.all}" + source="${jogl.sourcelevel}" + fork="yes" + memoryMaximumSize="${javac.memorymax}" + debug="${javacdebug}" debuglevel="${javacdebuglevel}"> + <classpath refid="nativewindow_gluegen.classpath"/> + <src path="${src.java}" /> + <src path="${src.generated.java}" /> + </javac> + </target> + + <target name="java.compile.thirdpass" depends="java.generate.composable.pipeline.custom,java.compile.thirdpass.1,java.compile.thirdpass.2" /> + + <target name="java.compile" depends="java.compile.firstpass,java.compile.secondpass,java.compile.thirdpass" /> + + <!-- ================================================================== --> + <!-- + - Compile the native C code for JOGL (and optionally the Cg binding). + --> + + <target name="c.configure.1" depends="gluegen.cpptasks.detect.os,gluegen.cpptasks.setup.compiler" unless="jogl.compiler.present"> + <!-- compiler configuration --> + <!-- Note that we can use the base setups in the gluegen-cpptasks for most of these --> + + <compiler id="compiler.cfg.freebsd.jogl" extends="compiler.cfg.freebsd"> + <!-- Need to force X11R6 headers on to include path after stub_includes --> + <includepath path="stub_includes/opengl"/> + <includepath path="/usr/X11R6/include" /> + </compiler> + + <!-- linker configuration --> + + <linker id="linker.cfg.linux.jogl.x11" extends="linker.cfg.linux"> + <syslibset dir="/usr/X11R6/lib" libs="X11"/> + <syslibset dir="/usr/X11R6/lib" libs="Xxf86vm" /> + </linker> + + <linker id="linker.cfg.linux.jogl.gl2" extends="linker.cfg.linux.jogl.x11"> + <syslibset dir="/usr/X11R6/lib" libs="GL"/> + <syslibset dir="${x11.cg.lib}" libs="Cg, CgGL" if="c.compiler.use-cglib"/> + </linker> + + <linker id="linker.cfg.linux.amd64.jogl.x11" extends="linker.cfg.linux.amd64"> + <syslibset dir="/usr/X11R6/lib64" libs="X11"/> + <syslibset dir="/usr/X11R6/lib64" libs="Xxf86vm" /> + </linker> + + <linker id="linker.cfg.linux.amd64.jogl.gl2" extends="linker.cfg.linux.amd64.jogl.x11"> + <syslibset dir="/usr/X11R6/lib64" libs="GL"/> + <syslibset dir="${x11.cg.lib}" libs="Cg, CgGL" if="c.compiler.use-cglib"/> + </linker> + + <linker id="linker.cfg.solaris.jogl.x11" extends="linker.cfg.solaris"> + <syslibset libs="X11"/> + </linker> + + <linker id="linker.cfg.solaris.jogl.gl2" extends="linker.cfg.solaris"> + <syslibset libs="GL"/> + <syslibset dir="${x11.cg.lib}" libs="Cg, CgGL" if="c.compiler.use-cglib"/> + </linker> + + <linker id="linker.cfg.solaris.sparcv9.jogl.gl2" extends="linker.cfg.solaris.sparcv9"> + <linkerarg value="-xarch=v9a" /> + <syslibset dir="/usr/openwin/lib/sparcv9" libs="GL"/> + <syslibset dir="/usr/lib/sparcv9" libs="X11"/> + </linker> + + <linker id="linker.cfg.solaris.amd64.jogl.gl2" extends="linker.cfg.solaris.amd64"> + <linkerarg value="-xarch=amd64" /> + <syslibset dir="/usr/lib/amd64" libs="GL"/> + <syslibset dir="/usr/lib/amd64" libs="X11"/> + </linker> + + <linker id="linker.cfg.win32.mingw.jogl" extends="linker.cfg.win32.mingw"> + <linkerarg value="-Wl,--kill-at" /> <!-- remove @ from function names --> + <syslibset libs="opengl32, glu32, gdi32, kernel32"/> + <syslibset dir="${windows.cg.lib}" libs="cg, cgGL" if="c.compiler.use-cglib"/> + </linker> + + <linker id="linker.cfg.win32.msvc.jogl" extends="linker.cfg.win32.msvc"> + <syslibset libs="opengl32, gdi32, user32, kernel32" /> + <syslibset dir="${windows.cg.lib}" libs="cg, cgGL" if="c.compiler.use-cglib"/> + <!-- This is temporary --> + <syslibset libs="winmm" /> + </linker> + + <linker id="linker.cfg.macosx.jogl" extends="linker.cfg.macosx"> + <linkerarg value="-framework" /> + <linkerarg value="Cocoa" /> + <linkerarg value="-framework" /> + <linkerarg value="OpenGL" /> + <linkerarg value="-framework" if="c.compiler.use-cglib" /> + <linkerarg value="Cg" if="c.compiler.use-cglib" /> + </linker> + + <linker id="linker.cfg.hpux.jogl" extends="linker.cfg.hpux"> + <syslibset dir="/opt/graphics/OpenGL/lib" libs="GL, GLU"/> + <syslibset dir="/usr/lib" libs="X11"/> + </linker> + </target> + + <target name="c.configure.win32.vc" if="isVCFamily"> + <echo message="Win32.VC" /> + <property name="compiler.cfg.id" value="compiler.cfg.win32.msvc" /> + <property name="linker.cfg.id.core" value="linker.cfg.win32.msvc" /> + <property name="linker.cfg.id.oswin" value="linker.cfg.win32.msvc.jogl" /> + <property name="linker.cfg.id.gl2" value="linker.cfg.win32.msvc.jogl" /> + </target> + + <target name="c.configure.win32.mingw" if="isMingW"> + <echo message="Win32.MingW" /> + <property name="compiler.cfg.id" value="compiler.cfg.win32.mingw" /> + <property name="linker.cfg.id.core" value="linker.cfg.win32.mingw" /> + <property name="linker.cfg.id.oswin" value="linker.cfg.win32.mingw.jogl" /> + <property name="linker.cfg.id.gl2" value="linker.cfg.win32.mingw.jogl" /> + </target> + + <target name="c.configure.linux.x86" if="isLinuxX86"> + <echo message="Linux.x86" /> + <property name="compiler.cfg.id" value="compiler.cfg.linux" /> + <property name="linker.cfg.id.core" value="linker.cfg.linux" /> + <property name="linker.cfg.id.oswin" value="linker.cfg.linux.jogl.x11" /> + <property name="linker.cfg.id.gl2" value="linker.cfg.linux.jogl.gl2" /> + </target> + + <target name="c.configure.linux.amd64" if="isLinuxAMD64"> + <echo message="Linux.AMD64" /> + <property name="compiler.cfg.id" value="compiler.cfg.linux.amd64" /> + <property name="linker.cfg.id.core" value="linker.cfg.linux.amd64" /> + <property name="linker.cfg.id.oswin" value="linker.cfg.linux.amd64.jogl.x11" /> + <property name="linker.cfg.id.gl2" value="linker.cfg.linux.amd64.jogl.gl2" /> + </target> + + <target name="c.configure.linux.ia64" if="isLinuxIA64"> + <echo message="Linux.IA64" /> + <property name="compiler.cfg.id" value="compiler.cfg.linux" /> + <property name="linker.cfg.id.core" value="linker.cfg.linux" /> + <property name="linker.cfg.id.oswin" value="linker.cfg.linux.jogl.x11" /> + <property name="linker.cfg.id.gl2" value="linker.cfg.linux.jogl.gl2" /> + </target> + + <target name="c.configure.linux" depends="c.configure.linux.x86,c.configure.linux.amd64,c.configure.linux.ia64,c.configure.x11" if="isLinux" /> + + <target name="c.configure.solaris32" depends="c.configure.x11" if="isSolaris32Bit"> + <echo message="Solaris" /> + <property name="compiler.cfg.id" value="compiler.cfg.solaris" /> + <property name="linker.cfg.id.core" value="linker.cfg.solaris" /> + <property name="linker.cfg.id.oswin" value="linker.cfg.solaris.jogl.x11" /> + <property name="linker.cfg.id.gl2" value="linker.cfg.solaris.jogl.gl2" /> + </target> + + + <target name="c.configure.solaris.sparcv9" depends="c.configure.x11" if="isSolarisSparcv9"> + <echo message="SolarisSparcv9" /> + <property name="compiler.cfg.id" value="compiler.cfg.solaris.sparcv9" /> + <property name="linker.cfg.id.core" value="linker.cfg.solaris.sparcv9" /> + <property name="linker.cfg.id.oswin" value="linker.cfg.solaris.sparcv9.jogl.x11" /> + <property name="linker.cfg.id.gl2" value="linker.cfg.solaris.sparcv9.jogl.gl2" /> + </target> + + + <target name="c.configure.solaris.amd64" depends="c.configure.x11" if="isSolarisAMD64"> + <echo message="SolarisAMD64" /> + <property name="compiler.cfg.id" value="compiler.cfg.solaris.amd64" /> + <property name="linker.cfg.id.core" value="linker.cfg.solaris.amd64" /> + <property name="linker.cfg.id.oswin" value="linker.cfg.solaris.amd64.jogl.x11" /> + <property name="linker.cfg.id.gl2" value="linker.cfg.solaris.amd64.jogl.gl2" /> + </target> + + <target name="c.configure.freebsd" depends="c.configure.x11" if="isFreeBSD"> + <echo message="FreeBSD" /> + <property name="compiler.cfg.id" value="compiler.cfg.freebsd.jogl" /> + <property name="linker.cfg.id.core" value="linker.cfg.linux" /> + <property name="linker.cfg.id.oswin" value="linker.cfg.linux.jogl.x11" /> + <property name="linker.cfg.id.gl2" value="linker.cfg.linux.jogl.gl2" /> + </target> + + <target name="c.configure.hpux" depends="c.configure.x11" if="isHPUX"> + <echo message="HP-UX" /> + <property name="compiler.cfg.id" value="compiler.cfg.hpux" /> + <property name="linker.cfg.id.core" value="linker.cfg.hpux" /> + <property name="linker.cfg.id.oswin" value="linker.cfg.hpux.jogl.x11" /> + <property name="linker.cfg.id.gl2" value="linker.cfg.hpux.jogl.gl2" /> + </target> + + <target name="c.configure.win32" depends="c.configure.win32.vc,c.configure.win32.mingw" if="isWindows" /> + + <target name="c.configure.x11" if="isX11" /> + + <target name="c.configure.macosx" if="isOSX"> + <property name="compiler.cfg.id" value="compiler.cfg.macosx" /> + <property name="linker.cfg.id.core" value="linker.cfg.macosx" /> + <property name="linker.cfg.id.oswin" value="linker.cfg.macosx.jogl" /> + <property name="linker.cfg.id.gl2" value="linker.cfg.macosx.jogl" /> + </target> + + <target name="c.configure.2" depends="c.configure.win32,c.configure.linux,c.configure.solaris32,c.configure.solaris.sparcv9,c.configure.solaris.amd64,c.configure.macosx,c.configure.freebsd,c.configure.hpux" /> + + <target name="c.configure" depends="c.configure.1,c.configure.2" /> + + <target name="rename.mingw.dll" if="isMingW"> + <move file="${src}" tofile="${dest}" /> + </target> + + <target name="rename.dylib" if="isOSX"> + <move file="${src}" tofile="${dest}" /> + </target> + + <macrodef name="c.build"> + <attribute name="c.compiler.src.files" /> + <attribute name="compiler.cfg.id" /> + <attribute name="linker.cfg.id" /> + <attribute name="output.lib.name" /> + <attribute name="c.compiler.use-jawt" default="false"/> + <sequential> + <echo message="Output lib name = @{output.lib.name}" /> + + <!-- NOTE: the value of the debug and optimise attributes will not be overridden if already set externally --> + <property name="c.compiler.debug" value="false" /> + <!-- Optimise flags one of { none, size, speed, minimal, full, aggressive, extreme, unsafe } --> + <property name="c.compiler.optimise" value="none" /> + + <condition property="c.compiler.use-debug"><istrue value="${c.compiler.debug}"/></condition> + + <patternset id="c.src.files.jogl.gl2"> + <include name="${rootrel.src.c}/macosx/MacOSXWindowSystemInterface.m" if="isOSX"/> + <include name="${rootrel.src.c}/macosx/ContextUpdater.m" if="isOSX"/> + <include name="${rootrel.src.c}/GLXGetProcAddressARB.c" if="isX11"/> + <!-- FIXME: the Mixer should be moved to another library --> + <!--include name="${rootrel.src.c}/Mixer.cpp" if="isWindows"/--> + <include name="${rootrel.src.c.openmax}/omx_tool.c" if="useOpenMAX"/> + <include name="${rootrel.src.c.openmax}/com_sun_openmax_OMXInstance.c" if="useOpenMAX"/> + + <include name="${rootrel.generated.c.jogl}/gl2/GL2Impl_JNI.c"/> + <include name="${rootrel.generated.c.jogl}/gl3/GL3Impl_JNI.c"/> + <!--include name="${rootrel.generated.c.jogl}/GLU_JNI.c"/ EMPTY --> + <include name="${rootrel.generated.c.jogl}/gl2/GLUgl2_JNI.c"/> + <include name="${rootrel.generated.c.jogl}/X11/GLX*.c" if="isX11"/> + <include name="${rootrel.generated.c.jogl}/MacOSX/CGL*.c" if="isOSX"/> + <include name="${rootrel.generated.c.jogl}/Windows/WGL*.c" if="isWindows"/> + </patternset> + + <patternset id="c.src.files.jogl.gl2es12"> + <include name="${rootrel.src.c}/macosx/MacOSXWindowSystemInterface.m" if="isOSX"/> + <include name="${rootrel.src.c}/macosx/ContextUpdater.m" if="isOSX"/> + <include name="${rootrel.src.c}/GLXGetProcAddressARB.c" if="isX11"/> + <!-- FIXME: the Mixer should be moved to another library --> + <!--include name="${rootrel.src.c}/Mixer.cpp" if="isWindows"/--> + <include name="${rootrel.src.c.openmax}/omx_tool.c" if="useOpenMAX"/> + <include name="${rootrel.src.c.openmax}/com_sun_openmax_OMXInstance.c" if="useOpenMAX"/> + + <include name="${rootrel.generated.c.jogl}/gl2es12/GL2ES12Impl_JNI.c"/> + <!--include name="${rootrel.generated.c.jogl}/GLU_JNI.c"/ EMPTY --> + <!--include name="${rootrel.generated.c.jogl}/gl2es12/GLUgl2es12_JNI.c"/ SKIPPED --> + <include name="${rootrel.generated.c.jogl}/X11/GLX*.c" if="isX11"/> + <include name="${rootrel.generated.c.jogl}/MacOSX/CGL*.c" if="isOSX"/> + <include name="${rootrel.generated.c.jogl}/Windows/WGL*.c" if="isWindows"/> + </patternset> + + <patternset id="c.src.files.jogl.es2"> + <include name="${rootrel.src.c}/GLXGetProcAddressARB.c" if="isX11"/> + <include name="${rootrel.src.c.openmax}/omx_tool.c" if="useOpenMAX"/> + <include name="${rootrel.src.c.openmax}/com_sun_openmax_OMXInstance.c" if="useOpenMAX"/> + + <include name="${rootrel.generated.c.jogl}/egl/EGL_JNI.c"/> + <include name="${rootrel.generated.c.jogl}/egl/EGLExtImpl_JNI.c"/> + <include name="${rootrel.generated.c.jogl}/es2/GLES2Impl_JNI.c"/> + </patternset> + + <patternset id="c.src.files.jogl.es1"> + <include name="${rootrel.src.c}/GLXGetProcAddressARB.c" if="isX11"/> + <include name="${rootrel.src.c.openmax}/omx_tool.c" if="useOpenMAX"/> + <include name="${rootrel.src.c.openmax}/com_sun_openmax_OMXInstance.c" if="useOpenMAX"/> + + <include name="${rootrel.generated.c.jogl}/egl/EGL_JNI.c"/> + <include name="${rootrel.generated.c.jogl}/egl/EGLExtImpl_JNI.c"/> + <include name="${rootrel.generated.c.jogl}/es1/GLES1Impl_JNI.c"/> + <!--include name="${rootrel.generated.c.jogl}/GLU_JNI.c"/ EMPTY --> + <!--include name="${rootrel.generated.c.jogl}/es1/GLUes1_JNI.c" EMPTY /--> + </patternset> + + <patternset id="c.src.files.cg"> + <include name="${rootrel.generated.c.cg}/*.c"/> + </patternset> + + <echo message="Compiling @{output.lib.name}" /> + + <cc outtype="shared" + objdir="${obj.jogl}" + outfile="${obj}/@{output.lib.name}" + optimize="${c.compiler.optimise}" + debug="${c.compiler.debug}" + multithreaded="true" + exceptions="false" + rtti="false"> + + <!-- TODO: versioninfo companyname="java.net" + legalcopyright="Copyright" + productname="JOGL" + productversion="x.y.z" + description="Description" + fileversion="x.y.z" + filecomments="File Comment" /--> + + <fileset dir="${project.root}"><patternset refid="@{c.compiler.src.files}"/></fileset> + + <compiler extends="@{compiler.cfg.id}" > + <sysincludepath path="${java.includes.dir}"/> + <sysincludepath path="${java.includes.dir.platform}"/> + <includepath path="stub_includes/opengl"/> + <includepath path="stub_includes/egl"/> + <includepath path="stub_includes/openmax" if="useOpenMAX"/> + <includepath path="stub_includes/cg" if="c.compiler.use-cglib"/> + + <!-- This is for the generated headers for handwritten C code --> + <includepath path="${src.generated.c}" /> + <includepath path="${src.generated.c}/X11" if="isX11"/> + <includepath path="${src.generated.c}/MacOSX" if="isOSX"/> + <includepath path="${src.generated.c}/Windows" if="isWindows"/> + <includepath path="${src.generated.c.openmax}" if="useOpenMAX"/> + + <!-- This must come last to not override real include paths --> + <!-- includepath path="stub_includes/macosx" if="isOSX" / --> + </compiler> + + <linker extends="@{linker.cfg.id}"> + <syslibset dir="${java.lib.dir.platform}" libs="jawt" if="@{output.lib.name}.useLibJAWT"/> + <syslibset dir="${java.lib.dir.platform}/server" libs="jvm" if="@{output.lib.name}.useLibJVM"/> + </linker> + </cc> + + <!-- FIXME: this is a hack; the cpptask should have an option to change the + suffix or at least understand the override from dylib to jnilib --> + <antcall target="rename.dylib" inheritRefs="true"> + <param name="src" value="${build}/obj/lib@{output.lib.name}.dylib" /> + <param name="dest" value="${build}/obj/lib@{output.lib.name}.jnilib" /> + </antcall> + + <!-- FIXME: this is a hack; the cpptask should have an option to change the + suffix or at least understand the override from dylib to jnilib --> + <antcall target="rename.mingw.dll" inheritRefs="true"> + <param name="src" value="${build}/obj/lib@{output.lib.name}.so" /> + <param name="dest" value="${build}/obj/@{output.lib.name}.dll" /> + </antcall> + </sequential> + </macrodef> + + <target name="c.build.jogl.prepare"> + <!-- Generate the waveout Mixer header --> + <!-- FIXME: this is temporary until we move this to another workspace --> + <javah destdir="../${rootrel.build.jogl}/gensrc/native/jogl" classpath="${jogl.all.jar}" class="com.sun.javafx.audio.windows.waveout.Mixer" /> + <javah destdir="../${rootrel.build.jogl}/gensrc/native/openmax" classpath="${jogl.all.jar}" class="com.sun.openmax.OMXInstance" /> + </target> + + <target name="c.build.jogl.gl2" unless="setup.nogl2"> + <c.build c.compiler.src.files="c.src.files.jogl.gl2" + output.lib.name="jogl_gl2" + compiler.cfg.id="${compiler.cfg.id}" + linker.cfg.id="${linker.cfg.id.gl2}"/> + </target> + + <target name="c.build.jogl.gl2es12" unless="setup.nogl2"> + <c.build c.compiler.src.files="c.src.files.jogl.gl2es12" + output.lib.name="jogl_gl2es12" + compiler.cfg.id="${compiler.cfg.id}" + linker.cfg.id="${linker.cfg.id.gl2}"/> + </target> + + <target name="c.build.jogl.es2" unless="setup.noes1"> + <c.build c.compiler.src.files="c.src.files.jogl.es2" + output.lib.name="jogl_es2" + compiler.cfg.id="${compiler.cfg.id}" + linker.cfg.id="${linker.cfg.id.base}"/> + </target> + + <target name="c.build.jogl.es1" unless="setup.noes2"> + <c.build c.compiler.src.files="c.src.files.jogl.es1" + output.lib.name="jogl_es1" + compiler.cfg.id="${compiler.cfg.id}" + linker.cfg.id="${linker.cfg.id.base}"/> + </target> + + <target name="c.build.jogl.cg" if="jogl.cg"> + <c.build c.compiler.src.files="c.src.files.cg" + output.lib.name="jogl_cg" + compiler.cfg.id="${compiler.cfg.id}" + linker.cfg.id="${linker.cfg.id.gl2}"/> + </target> + + <target name="c.manifest.cg" if="jogl.cg"> + <msvc.manifest objdir="${obj}" dllname="jogl_cg" /> + </target> + + <target name="c.manifest" if="isVC8Family"> + <!-- exec mt, the Microsoft Manifest Tool, to include DLL manifests in order to resolve the location of msvcr80.dll --> + <msvc.manifest objdir="${obj}" dllname="jogl_es1" /> + <msvc.manifest objdir="${obj}" dllname="jogl_es2" /> + <msvc.manifest objdir="${obj}" dllname="jogl_gl2" /> + <msvc.manifest objdir="${obj}" dllname="jogl_gl2es12" /> + <antcall target="c.manifest.cg" inheritRefs="true" /> + </target> + + <target name="c.build.jogl" depends="c.configure,c.build.jogl.prepare,c.build.jogl.gl2es12,c.build.jogl.gl2,c.build.jogl.es2,c.build.jogl.es1,c.build.jogl.cg"> + <antcall target="c.manifest" inheritRefs="true" /> + </target> + + <!-- ================================================================== --> + <!-- + - Build the jogl.jar files. + --> + <target name="jar" depends="java.compile,cond-if-RImanifest,cond-else-RImanifest"/> + + <target name="check-RIcond"> + <condition property="RIcond-is-true"> + <isset property="RImanifestfile"/> + </condition> + </target> + + <target name="cond-if-RImanifest" depends="check-RIcond" if="RIcond-is-true"> + <copy file="joglRIversion" + tofile="tempversion" + overwrite="true"> + <filterset> + <filter token="VERSION" value="${base_version}-pre-${timestamp}"/> + <filter token="BASEVERSION" value="${base_version}"/> + </filterset> + </copy> + + <jar manifest="tempversion" destfile="${jogl.core.jar}"> + <fileset dir="${classes}" + includes="javax/media/opengl/**, com/sun/gluegen/runtime/**, com/sun/opengl/**" + excludes="${java.excludes.fixme} ${java.part.egl}, ${java.part.sdk}, ${java.part.openmax}, ${java.part.gl2es12.x11}, ${java.part.gl2es12.win}, ${java.part.gl2es12.osx}, ${java.part.gl2es12.dbg}, ${java.part.gl2.x11}, ${java.part.gl2.win}, ${java.part.gl2.osx}, ${java.part.gl2.dbg}, ${java.part.es1}, ${java.part.es1.dbg}, ${java.part.es2}, ${java.part.es2.dbg}, ${java.part.awt}, ${java.part.glutess}, ${java.part.glumipmap}, ${java.part.glugl2}, ${java.part.util} ${java.part.util.awt} ${java.part.util.gl2} ${java.part.util.glsl} ${java.part.util.fixedfuncemu}"/> + </jar> + <jar manifest="tempversion" destfile="${jogl.gles1.jar}"> + <fileset dir="${classes}" + includes="${java.part.es1}" + excludes="${java.part.es1.dbg}"/> + </jar> + <jar manifest="tempversion" destfile="${jogl.gles1.dbg.jar}"> + <fileset dir="${classes}" + includes="${java.part.es1.dbg}"/> + </jar> + <jar manifest="tempversion" destfile="${jogl.gles2.jar}"> + <fileset dir="${classes}" + includes="${java.part.es2}, ${java.part.openmax}" + excludes="${java.part.es2.dbg}"/> + </jar> + <jar manifest="tempversion" destfile="${jogl.gles2.dbg.jar}"> + <fileset dir="${classes}" + includes="${java.part.es2.dbg}"/> + </jar> + <jar manifest="tempversion" destfile="${jogl.egl.jar}"> + <fileset dir="${classes}" + includes="${java.part.egl}" + excludes="${java.part.awt}"/> + </jar> + <jar manifest="tempversion" destfile="${jogl.gl2es12.x11.jar}"> + <fileset dir="${classes}" + includes="${java.part.gl2es12.x11}, ${java.part.openmax}" + excludes="${java.part.gl2es12.dbg}, ${java.part.glugl2}"/> + </jar> + <jar manifest="tempversion" destfile="${jogl.gl2es12.win.jar}"> + <fileset dir="${classes}" + includes="${java.part.gl2es12.win}, ${java.part.openmax}" + excludes="${java.part.gl2es12.dbg}, ${java.part.glugl2}"/> + </jar> + <jar manifest="tempversion" destfile="${jogl.gl2es12.osx.jar}"> + <fileset dir="${classes}" + includes="${java.part.gl2es12.osx}, ${java.part.openmax}" + excludes="${java.part.gl2es12.dbg}, ${java.part.glugl2}"/> + </jar> + <jar manifest="tempversion" destfile="${jogl.gl2es12.dbg.jar}"> + <fileset dir="${classes}" + includes="${java.part.gl2es12.dbg}"/> + </jar> + <jar manifest="tempversion" destfile="${jogl.gl2.x11.jar}"> + <fileset dir="${classes}" + includes="${java.part.gl2.x11}, ${java.part.gl3}, ${java.part.openmax}" + excludes="${java.part.gl2.dbg}, ${java.part.glugl2}"/> + </jar> + <jar manifest="tempversion" destfile="${jogl.gl2.win.jar}"> + <fileset dir="${classes}" + includes="${java.part.gl2.win}, $${java.part.gl3}, {java.part.openmax}" + excludes="${java.part.gl2.dbg}, ${java.part.glugl2}"/> + </jar> + <jar manifest="tempversion" destfile="${jogl.gl2.osx.jar}"> + <fileset dir="${classes}" + includes="${java.part.gl2.osx}, $${java.part.gl3}, {java.part.openmax}" + excludes="${java.part.gl2.dbg}, ${java.part.glugl2}"/> + </jar> + <jar manifest="tempversion" destfile="${jogl.gl2.dbg.jar}"> + <fileset dir="${classes}" + includes="${java.part.gl2.dbg}"/> + </jar> + <jar manifest="tempversion" destfile="${jogl.sdk.jar}"> + <fileset dir="${classes}" + includes="${java.part.sdk}"/> + </jar> + <jar manifest="tempversion" destfile="${jogl.glutess.jar}"> + <fileset dir="${classes}" + includes="${java.part.glutess}"/> + </jar> + <jar manifest="tempversion" destfile="${jogl.glumipmap.jar}"> + <fileset dir="${classes}" + includes="${java.part.glumipmap}"/> + </jar> + <jar manifest="tempversion" destfile="${jogl.glugl2.jar}"> + <fileset dir="${classes}" + includes="${java.part.glugl2}"/> + </jar> + <jar manifest="tempversion" destfile="${jogl.awt.jar}"> + <fileset dir="${classes}" + includes="${java.part.awt}" /> + </jar> + <jar manifest="tempversion" destfile="${jogl.util.jar}"> + <fileset dir="${classes}" + includes="${java.part.util}, ${java.part.util.glsl}" + excludes="${java.part.util.awt}, ${java.part.util.gl2}, ${java.part.gl3}, ${java.part.util.fixedfuncemu}"/> + </jar> + <jar manifest="tempversion" destfile="${jogl.util.gl2.jar}"> + <fileset dir="${classes}" + includes="${java.part.util.gl2}" + excludes="com/sun/opengl/**/awt/**"/> + </jar> + <jar manifest="tempversion" destfile="${jogl.util.awt.jar}"> + <fileset dir="${classes}" + includes="${java.part.util.awt}"/> + </jar> + <jar manifest="tempversion" destfile="${jogl.util.fixedfuncemu.jar}"> + <fileset dir="${classes}" + includes="${java.part.util.fixedfuncemu}"/> + <fileset dir="${src.java}" + includes="${java.part.util.fixedfuncemu.shadercode}"/> + </jar> + <jar manifest="tempversion" destfile="${jogl.all.jar}"> + <fileset dir="${classes}"> + <include name="javax/media/opengl/**" /> + <include name="com/sun/gluegen/runtime/**" /> + <include name="com/sun/opengl/**" /> + <include name="${java.part.openmax}" /> + <!-- FIXME: this is temporary until we move these classes to another workspace --> + <include name="com/sun/javafx/**" /> + </fileset> + <fileset dir="${src.java}" + includes="${java.part.util.fixedfunc.shaders}"/> + </jar> + <delete file="tempversion"/> + </target> + + + <target name="cond-else-RImanifest" depends="check-RIcond" unless="RIcond-is-true"> + <tstamp> + <format property="timestamp" pattern="yyyyMMdd-HH:mm:ss"/> + </tstamp> + <copy file="joglversion" + tofile="tempversion" + overwrite="true"> + <filterset> + <filter token="VERSION" value="${base_version}-pre-${timestamp}"/> + <filter token="BASEVERSION" value="${base_version}"/> + </filterset> + </copy> + <jar manifest="tempversion" destfile="${jogl.jar}"> + <fileset dir="${classes}"> + <include name="javax/media/opengl/**" /> + <include name="com/sun/gluegen/runtime/**" /> + <include name="com/sun/opengl/**" /> + <include name="com/sun/javafx/**" /> + </fileset> + </jar> + <delete file="tempversion"/> + </target> + + <!-- ================================================================== --> + <!-- + - Build the Javadocs for the sources. + - NOTE: these are not entirely correct as the javadocs targets depend + - on the platform specific build targets. To circumvent any + - errors, ensure that the source is built first. + --> + <target name="javadoc.nocg" depends="load.user.properties,init" unless="jogl.cg"> + <!-- Build the general public Javadoc --> + <javadoc packagenames="${javadoc.packagenames}" + excludepackagenames="${java.excludes.javadoc.packagenames}" + sourcepath="${src.java};${src.generated.java}" + destdir="${javadoc}" windowtitle="${javadoc.windowtitle}" + overview="${javadoc.overview}" + source="1.4" + linkoffline="${javadoc.link} 142-packages" + bottom="${javadoc.bottom}" > + <classpath refid="nativewindow_gluegen.classpath"/> + <taglet name="net.highteq.nativetaglet.NativeTaglet" path="${gluegen.jar}" /> + </javadoc> + </target> + + <!-- Same as above but with Cg directories added --> + <target name="javadoc.cg" depends="load.user.properties,init" if="jogl.cg"> + <!-- Build the general public Javadoc with CG --> + <javadoc packagenames="${javadoc.packagenames},com.sun.opengl.cg" + excludepackagenames="${java.excludes.javadoc.packagenames}" + sourcepath="${src.java};${src.generated.java}" + destdir="${javadoc}" windowtitle="${javadoc.windowtitle}" + overview="${javadoc.overview}" + source="1.4" + linkoffline="${javadoc.link} 142-packages" + bottom="${javadoc.bottom}" > + <classpath refid="nativewindow_gluegen.classpath"/> + <taglet name="net.highteq.nativetaglet.NativeTaglet" path="${gluegen.jar}" /> + </javadoc> + </target> + + <target name="javadoc" depends="javadoc.nocg,javadoc.cg" /> + + <target name="javadoc.spec.nocg" depends="load.user.properties,init" unless="jogl.cg"> + <!-- Build the specification Javadoc --> + <javadoc packagenames="${javadoc.spec.packagenames}" + excludepackagenames="${java.excludes.javadoc.packagenames}" + sourcepath="${src.java};${src.generated.java}" + destdir="${javadoc.spec}" windowtitle="${javadoc.windowtitle}" + overview="${javadoc.overview}" + source="1.4" + linkoffline="${javadoc.link} 142-packages" + bottom="${javadoc.bottom}" > + <classpath refid="nativewindow_gluegen.classpath"/> + <taglet name="net.highteq.nativetaglet.NativeTaglet" path="${gluegen.jar}" /> + </javadoc> + </target> + + <!-- Same as above since Cg directories are not part of spec --> + <target name="javadoc.spec.cg" depends="load.user.properties,init" if="jogl.cg"> + <!-- Build the specification Javadoc with CG --> + <javadoc packagenames="${javadoc.spec.packagenames}" + excludepackagenames="${java.excludes.javadoc.packagenames}" + sourcepath="${src.java};${src.generated.java}" + destdir="${javadoc.spec}" windowtitle="${javadoc.windowtitle}" + overview="${javadoc.overview}" + source="1.4" + linkoffline="${javadoc.link} 142-packages" + bottom="${javadoc.bottom}" > + <classpath refid="nativewindow_gluegen.classpath"/> + <taglet name="net.highteq.nativetaglet.NativeTaglet" path="${gluegen.jar}" /> + </javadoc> + </target> + + <target name="javadoc.spec" depends="javadoc.spec.nocg,javadoc.spec.cg" /> + + <target name="javadoc.dev.nocg" unless="jogl.cg"> + <!-- Build the internal developer Javadoc --> + <javadoc packagenames="${javadoc.dev.packagenames}" + excludepackagenames="${java.excludes.javadoc.packagenames}" + sourcepath="${src.java};${src.generated.java}" + destdir="${javadoc.dev}" windowtitle="${javadoc.windowtitle}" + overview="${javadoc.overview}" + source="1.4" + linkoffline="${javadoc.link} 142-packages" + bottom="${javadoc.bottom}" > + <classpath refid="nativewindow_gluegen.classpath"/> + <taglet name="net.highteq.nativetaglet.NativeTaglet" path="${gluegen.jar}" /> + </javadoc> + </target> + + <!-- Same as above but with Cg directories added --> + <target name="javadoc.dev.cg" if="jogl.cg"> + <!-- Build the internal developer Javadoc --> + <javadoc packagenames="${javadoc.dev.packagenames},com.sun.opengl.cg" + excludepackagenames="${java.excludes.javadoc.packagenames}" + sourcepath="${src.java};${src.generated.java}" + destdir="${javadoc.dev}" windowtitle="${javadoc.windowtitle}" + overview="${javadoc.overview}" + source="1.4" + linkoffline="${javadoc.link} 142-packages" + bottom="${javadoc.bottom}" > + <classpath refid="nativewindow_gluegen.classpath"/> + <taglet name="net.highteq.nativetaglet.NativeTaglet" path="${gluegen.jar}" /> + </javadoc> + </target> + + <target name="javadoc.dev.all" depends="load.user.properties,init,javadoc.dev.nocg,javadoc.dev.cg" /> + + <target name="all.doc" description="Build JOGL docs" depends="init,javadoc,javadoc.spec,javadoc.dev.all" /> + + <!-- ================================================================== --> + <!-- + - Build the platform-independent distribution out of jars built for + - Windows, Linux and Mac OS X; the Java sources for Jogl can't be + - fully cross-compiled at this time. To run this target, you need to + - specify the property jogl.dist.dir as a System property (i.e., + - "ant -Djogl.dist.dir=../dist dist"); directories named jogl-linux, + - jogl-win, and jogl-macosx need to be inside that directory and each + - of those directories needs to contain both the jogl.jar for that + - platform as well as the native code (libjogl.so, jogl.dll, or + - libjogl.jnilib). Also builds jars containing the native code for + - Windows, Linux, Mac OS X, Solaris/SPARC and Solaris/x86. + --> + <target name="dist.dir.check" unless="jogl.dist.dir"> + <fail> + + ****************************************************************** + ** To build the Jogl distribution out of the platform-specific ** + ** component jars and native code, the property jogl.dist.dir ** + ** needs to be specified on the command line. Please read the ** + ** comments associated with the "dist" target in the build.xml. ** + ****************************************************************** + </fail> + </target> + + <target name="dist.check.windows" if="jogl.dist.dir"> + <condition property="windows.complete"> + <and> + <available file="${jogl.dist.dir}/jogl-win/jogl.jar" /> + <available file="${jogl.dist.dir}/jogl-win/32/jogl.dll" /> + <available file="${jogl.dist.dir}/jogl-win/32/jogl_awt.dll" /> + <available file="${jogl.dist.dir}/jogl-win/32/jogl_cg.dll" /> + <available file="${jogl.dist.dir}/jogl-win/32/gluegen-rt.dll" /> + <available file="${jogl.dist.dir}/jogl-win/32/gluegen-rt-natives-windows-i586.jar" /> + </and> + </condition> + <fail unless="windows.complete"> + ****************************************************************** + ** Files are missing from the Windows build. This will cause ** + ** the distribution to be incomplete. Please check the status ** + ** of the Windows build and try again. ** + ****************************************************************** + </fail> + </target> + + <target name="dist.check.windows-amd64" if="jogl.dist.dir"> + <condition property="windows-amd64.complete"> + <and> + <available file="${jogl.dist.dir}/jogl-win/64/jogl.dll" /> + <available file="${jogl.dist.dir}/jogl-win/64/jogl_awt.dll" /> + <available file="${jogl.dist.dir}/jogl-win/64/jogl_cg.dll" /> + <available file="${jogl.dist.dir}/jogl-win/64/gluegen-rt.dll" /> + <available file="${jogl.dist.dir}/jogl-win/64/gluegen-rt-natives-windows-amd64.jar" /> + </and> + </condition> + <fail unless="windows-amd64.complete"> + ********************************************************************* + ** Files are missing from the Windows/AMD64 build. This will cause ** + ** the distribution to be incomplete. Please check the status ** + ** of the Windows/AMD64 build and try again. ** + ********************************************************************* + </fail> + </target> + + <target name="dist.check.linux" if="jogl.dist.dir"> + <condition property="linux.complete"> + <and> + <available file="${jogl.dist.dir}/jogl-linux/jogl.jar" /> + <available file="${jogl.dist.dir}/jogl-linux/32/libjogl.so" /> + <available file="${jogl.dist.dir}/jogl-linux/32/libjogl_awt.so" /> + <available file="${jogl.dist.dir}/jogl-linux/32/libjogl_cg.so" /> + <available file="${jogl.dist.dir}/jogl-linux/32/libgluegen-rt.so" /> + <available file="${jogl.dist.dir}/jogl-linux/32/gluegen-rt-natives-linux-i586.jar" /> + <!-- Assume we also copy over these generated files in the Linux build --> + <!-- in order to satisfy requests from end users that we provide these --> + <!-- files for easier source browsing in IDEs --> + <available file="${jogl.dist.dir}/jogl-linux/DebugGL2.java" /> + <available file="${jogl.dist.dir}/jogl-linux/TraceGL2.java" /> + <available file="${jogl.dist.dir}/jogl-linux/GL.java" /> + <available file="${jogl.dist.dir}/jogl-linux/GLU.java" /> + </and> + </condition> + <fail unless="linux.complete"> + ****************************************************************** + ** Files are missing from the Linux build. This will cause ** + ** the distribution to be incomplete. Please check the status ** + ** of the Linux build and try again. ** + ****************************************************************** + </fail> + </target> + + <target name="dist.check.linux-amd64" if="jogl.dist.dir"> + <condition property="linux-amd64.complete"> + <and> + <available file="${jogl.dist.dir}/jogl-linux/64/libjogl.so" /> + <available file="${jogl.dist.dir}/jogl-linux/64/libjogl_awt.so" /> + <available file="${jogl.dist.dir}/jogl-linux/64/libjogl_cg.so" /> + <available file="${jogl.dist.dir}/jogl-linux/64/libgluegen-rt.so" /> + <available file="${jogl.dist.dir}/jogl-linux/64/gluegen-rt-natives-linux-amd64.jar" /> + </and> + </condition> + <fail unless="linux-amd64.complete"> + ******************************************************************* + ** Files are missing from the Linux/AMD64 build. This will cause ** + ** the distribution to be incomplete. Please check the status ** + ** of the Linux/AMD64 build and try again. ** + ******************************************************************* + </fail> + </target> + + <target name="dist.check.macosx" if="jogl.dist.dir"> + <condition property="macosx.complete"> + <and> + <available file="${jogl.dist.dir}/jogl-macosx/jogl.jar" /> + <available file="${jogl.dist.dir}/jogl-macosx/ppc/libjogl.jnilib" /> + <available file="${jogl.dist.dir}/jogl-macosx/ppc/libjogl_awt.jnilib" /> + <available file="${jogl.dist.dir}/jogl-macosx/ppc/libjogl_cg.jnilib" /> + <available file="${jogl.dist.dir}/jogl-macosx/ppc/libgluegen-rt.jnilib" /> + <available file="${jogl.dist.dir}/jogl-macosx/ppc/gluegen-rt-natives-macosx-ppc.jar" /> + </and> + </condition> + <fail unless="macosx.complete"> + ****************************************************************** + ** Files are missing from the Mac OS X build. This will cause ** + ** the distribution to be incomplete. Please check the status ** + ** of the Mac OS X build and try again. ** + ****************************************************************** + </fail> + </target> + + + <target name="dist.check.macosxfat" if="jogl.dist.dir"> + <condition property="macosxfat.complete"> + <and> + <available file="${jogl.dist.dir}/jogl-macosx/jogl.jar" /> + <available file="${jogl.dist.dir}/jogl-macosx/fat/libjogl.jnilib" /> + <available file="${jogl.dist.dir}/jogl-macosx/fat/libjogl_awt.jnilib" /> + <available file="${jogl.dist.dir}/jogl-macosx/fat/libjogl_cg.jnilib" /> + <available file="${jogl.dist.dir}/jogl-macosx/fat/libgluegen-rt.jnilib" /> + <available file="${jogl.dist.dir}/jogl-macosx/fat/gluegen-rt-natives-macosx-universal.jar" /> + </and> + </condition> + <fail unless="macosxfat.complete"> + ****************************************************************** + ** Files are missing from the Mac OS X build. This will cause ** + ** the distribution to be incomplete. Please check the status ** + ** of the Mac OS X build and try again. ** + ****************************************************************** + </fail> + </target> + + + + <target name="dist.check.solsparc" if="jogl.dist.dir"> + <condition property="solsparc.complete"> + <and> + <available file="${jogl.dist.dir}/jogl-solsparc/jogl.jar" /> + <available file="${jogl.dist.dir}/jogl-solsparc/32/libjogl.so" /> + <available file="${jogl.dist.dir}/jogl-solsparc/32/libjogl_awt.so" /> + <available file="${jogl.dist.dir}/jogl-solsparc/32/libgluegen-rt.so" /> + <available file="${jogl.dist.dir}/jogl-solsparc/32/gluegen-rt-natives-solaris-sparc.jar" /> + </and> + </condition> + <fail unless="solsparc.complete"> + ****************************************************************** + ** Files are missing from the Solaris/SPARC build. This will ** + ** cause the distribution to be incomplete. Please check the ** + ** status of the Solaris/SPARC build and try again. ** + ****************************************************************** + </fail> + </target> + + <target name="dist.check.solsparcv9" if="jogl.dist.dir"> + <condition property="solsparcv9.complete"> + <and> + <available file="${jogl.dist.dir}/jogl-solsparc/jogl.jar" /> + <available file="${jogl.dist.dir}/jogl-solsparc/64/libjogl.so" /> + <available file="${jogl.dist.dir}/jogl-solsparc/64/libjogl_awt.so" /> + <available file="${jogl.dist.dir}/jogl-solsparc/64/libgluegen-rt.so" /> + <available file="${jogl.dist.dir}/jogl-solsparc/64/gluegen-rt-natives-solaris-sparcv9.jar" /> + </and> + </condition> + <fail unless="solsparcv9.complete"> + ****************************************************************** + ** Files are missing from the Solaris/SPARCv9 build. This will ** + ** cause the distribution to be incomplete. Please check the ** + ** status of the Solaris/SPARCv9 build and try again. ** + ****************************************************************** + </fail> + </target> + + <target name="dist.check.solx86" if="jogl.dist.dir"> + <condition property="solx86.complete"> + <and> + <available file="${jogl.dist.dir}/jogl-solx86/jogl.jar" /> + <available file="${jogl.dist.dir}/jogl-solx86/32/libjogl.so" /> + <available file="${jogl.dist.dir}/jogl-solx86/32/libjogl_awt.so" /> + <available file="${jogl.dist.dir}/jogl-solx86/32/libjogl_cg.so" /> + <available file="${jogl.dist.dir}/jogl-solx86/32/libgluegen-rt.so" /> + <available file="${jogl.dist.dir}/jogl-solx86/32/gluegen-rt-natives-solaris-i586.jar" /> + </and> + </condition> + <fail unless="solx86.complete"> + ****************************************************************** + ** Files are missing from the Solaris/x86 build. This will ** + ** cause the distribution to be incomplete. Please check the ** + ** status of the Solaris/x86 build and try again. ** + ****************************************************************** + </fail> + </target> + + <target name="dist.check.solamd64" if="jogl.dist.dir"> + <condition property="solamd64.complete"> + <and> + <available file="${jogl.dist.dir}/jogl-solx86/64/libjogl.so" /> + <available file="${jogl.dist.dir}/jogl-solx86/64/libjogl_awt.so" /> + <available file="${jogl.dist.dir}/jogl-solx86/64/libgluegen-rt.so" /> + <available file="${jogl.dist.dir}/jogl-solx86/64/gluegen-rt-natives-solaris-amd64.jar" /> + </and> + </condition> + <fail unless="solamd64.complete"> + ****************************************************************** + ** Files are missing from the Solaris/x86/64 (amd64) build. This * + ** will cause the distribution ** + ** to be incomplete. Please check the ** + ** status of the Solaris/x86 (amd64) build and try again. ** + ****************************************************************** + </fail> + </target> + + <!-- Helper task for dist target below --> + <!-- Required parameters: --> + <!-- zip.os.arch = the os/arch combination for this zip file (i.e., "windows-i586") --> + <!-- zip.src.so.dir = the directory containing the .so's / .dll's / .jnilib's for this platform--> + <target name="dist.build.zip"> + <property name="jogl.tmp.version" value="jogl-${tmp.version}-${zip.os.arch}" /> + <!-- Create all needed directories --> + <delete dir="${jogl.dist.dir}/tmp" failonerror="false" /> + <mkdir dir="${jogl.dist.dir}/tmp/${jogl.tmp.version}/lib" /> + <!-- Copy in files --> + <copy todir="${jogl.dist.dir}/tmp/${jogl.tmp.version}/lib"> + <fileset dir="${zip.src.so.dir}" includes="*${zip.so.suffix}" /> + </copy> + <copy file="${jogl.dist.dir}/jogl.jar" todir="${jogl.dist.dir}/tmp/${jogl.tmp.version}/lib" /> + <copy file="${jogl.dist.dir}/gluegen-rt.jar" todir="${jogl.dist.dir}/tmp/${jogl.tmp.version}/lib" /> + <copy file="../CHANGELOG.txt" todir="${jogl.dist.dir}/tmp/${jogl.tmp.version}" /> + <copy file="../COPYRIGHT.txt" todir="${jogl.dist.dir}/tmp/${jogl.tmp.version}" /> + <copy file="../LICENSE.txt" tofile="${jogl.dist.dir}/tmp/${jogl.tmp.version}/LICENSE-JOGL-${tmp.version}.txt" /> + <copy file="README-zip-bundles.txt" + tofile="${jogl.dist.dir}/tmp/${jogl.tmp.version}/README.txt" + overwrite="true"> + <filterset> + <filter token="VERSION" value="${tmp.version}"/> + </filterset> + </copy> + <copy file="../doc/userguide/index.html" tofile="${jogl.dist.dir}/tmp/${jogl.tmp.version}/Userguide.html" /> + <!-- zip it up --> + <zip destfile="${jogl.dist.dir}/${jogl.tmp.version}.zip" + basedir="${jogl.dist.dir}/tmp" + includes="${jogl.tmp.version}/**" /> + </target> + + <target name="setup-version-RI" if="RImanifestfile"> + <property name="tmp.version" value="${base_version}" /> + </target> + + <target name="setup-version-non-RI" unless="RImanifestfile"> + <tstamp> + <format property="timestamp" pattern="yyyyMMdd"/> + </tstamp> + <property name="tmp.version" value="${base_version}-pre-${timestamp}" /> + </target> + + <target name="dist" depends="dist.dir.check,dist.check.windows,dist.check.windows-amd64,dist.check.linux,dist.check.linux-amd64,dist.check.macosx,dist.check.macosxfat,dist.check.solsparc,dist.check.solsparcv9,dist.check.solx86,dist.check.solamd64,setup-version-RI,setup-version-non-RI"> + <delete> + <fileset dir="${jogl.dist.dir}" includes="*.jar" /> + </delete> + <delete> + <fileset dir="${jogl.dist.dir}" includes="*.zip" /> + </delete> + <delete dir="${jogl.dist.dir}/tmp" failonerror="false" /> + <delete dir="${jogl.dist.dir}/META-INF" failonerror="false" /> + <!-- Extract manifest from one of the jars to re-use it in the dist jar --> + <unjar src="${jogl.dist.dir}/jogl-win/jogl.jar" dest="${jogl.dist.dir}" > + <patternset> + <include name="META-INF/MANIFEST.MF" /> + </patternset> + </unjar> + <!-- Build jar files suitable for Java Web Start --> + <jar manifest="${jogl.dist.dir}/META-INF/MANIFEST.MF" destfile="${jogl.dist.dir}/jogl.jar" duplicate="preserve"> + <zipgroupfileset dir="${jogl.dist.dir}" + includes="jogl-win/jogl.jar, jogl-linux/jogl.jar, jogl-macosx/jogl.jar" /> + </jar> + <!-- Apply Pack200 repacking to allow later compression by that mechanism --> + <apply executable="pack200" verbose="true" > + <arg value="--repack" /> + <fileset file="${jogl.dist.dir}/jogl.jar" /> + </apply> + <jar destfile="${jogl.dist.dir}/jogl-natives-windows-i586.jar" + basedir="${jogl.dist.dir}/jogl-win/32" + includes="jogl.dll,jogl_awt.dll,jogl_cg.dll" /> + <jar destfile="${jogl.dist.dir}/jogl-natives-windows-amd64.jar" + basedir="${jogl.dist.dir}/jogl-win/64" + includes="jogl.dll,jogl_awt.dll,jogl_cg.dll" /> + <jar destfile="${jogl.dist.dir}/jogl-natives-linux-i586.jar" + basedir="${jogl.dist.dir}/jogl-linux/32" + includes="libjogl.so,libjogl_awt.so,libjogl_cg.so" /> + <jar destfile="${jogl.dist.dir}/jogl-natives-linux-amd64.jar" + basedir="${jogl.dist.dir}/jogl-linux/64" + includes="libjogl.so,libjogl_awt.so,libjogl_cg.so" /> + <jar destfile="${jogl.dist.dir}/jogl-natives-macosx-ppc.jar" + basedir="${jogl.dist.dir}/jogl-macosx/ppc" + includes="libjogl.jnilib,libjogl_awt.jnilib,libjogl_cg.jnilib" /> + <jar destfile="${jogl.dist.dir}/jogl-natives-macosx-universal.jar" + basedir="${jogl.dist.dir}/jogl-macosx/fat" + includes="libjogl.jnilib,libjogl_awt.jnilib,libjogl_cg.jnilib" /> + <jar destfile="${jogl.dist.dir}/jogl-natives-solaris-sparc.jar" + basedir="${jogl.dist.dir}/jogl-solsparc/32" + includes="libjogl.so,libjogl_awt.so" /> + <jar destfile="${jogl.dist.dir}/jogl-natives-solaris-sparcv9.jar" + basedir="${jogl.dist.dir}/jogl-solsparc/64" + includes="libjogl.so,libjogl_awt.so" /> + <jar destfile="${jogl.dist.dir}/jogl-natives-solaris-i586.jar" + basedir="${jogl.dist.dir}/jogl-solx86/32" + includes="libjogl.so,libjogl_awt.so,libjogl_cg.so" /> + <jar destfile="${jogl.dist.dir}/jogl-natives-solaris-amd64.jar" + basedir="${jogl.dist.dir}/jogl-solx86/64" + includes="libjogl.so,libjogl_awt.so" /> + <!-- Copy gluegen-rt.jar from Linux build (arbitrary; this jar is platform-independent) --> + <copy file="${jogl.dist.dir}/jogl-linux/gluegen-rt.jar" todir="${jogl.dist.dir}" /> + <!-- Copy gluegen-rt native jars out of platform-specific subdirectories --> + <copy todir="${jogl.dist.dir}"> + <fileset dir="${jogl.dist.dir}/jogl-win/32" includes="gluegen-natives-*.jar" /> + </copy> + <copy todir="${jogl.dist.dir}"> + <fileset dir="${jogl.dist.dir}/jogl-win/64" includes="gluegen-natives-*.jar" /> + </copy> + <copy todir="${jogl.dist.dir}"> + <fileset dir="${jogl.dist.dir}/jogl-linux/32" includes="gluegen-natives-*.jar" /> + </copy> + <copy todir="${jogl.dist.dir}"> + <fileset dir="${jogl.dist.dir}/jogl-linux/64" includes="gluegen-natives-*.jar" /> + </copy> + <copy todir="${jogl.dist.dir}"> + <fileset dir="${jogl.dist.dir}/jogl-macosx/ppc" includes="gluegen-natives-*.jar" /> + </copy> + <copy todir="${jogl.dist.dir}"> + <fileset dir="${jogl.dist.dir}/jogl-macosx/fat" includes="gluegen-natives-*.jar" /> + </copy> + <copy todir="${jogl.dist.dir}"> + <fileset dir="${jogl.dist.dir}/jogl-solsparc/32" includes="gluegen-natives-*.jar" /> + </copy> + <copy todir="${jogl.dist.dir}"> + <fileset dir="${jogl.dist.dir}/jogl-solsparc/64" includes="gluegen-natives-*.jar" /> + </copy> + <copy todir="${jogl.dist.dir}"> + <fileset dir="${jogl.dist.dir}/jogl-solx86/32" includes="gluegen-natives-*.jar" /> + </copy> + <copy todir="${jogl.dist.dir}"> + <fileset dir="${jogl.dist.dir}/jogl-solx86/64" includes="gluegen-natives-*.jar" /> + </copy> + + <!-- Build a source archive as well --> + <!-- First copy the generated files out of the Linux build results into the appropriate --> + <!-- directory of this source tree (so that they'll be blown away properly with an --> + <!-- "ant clean") --> + <mkdir dir="../${rootrel.build.jogl}/gensrc/classes/javax/media/opengl/glu" /> + <copy file="${jogl.dist.dir}/jogl-linux/DebugGL2.java" todir="../${rootrel.build.jogl}/gensrc/classes/javax/media/opengl" /> + <copy file="${jogl.dist.dir}/jogl-linux/TraceGL2.java" todir="../${rootrel.build.jogl}/gensrc/classes/javax/media/opengl" /> + <copy file="${jogl.dist.dir}/jogl-linux/GL.java" todir="../${rootrel.build.jogl}/gensrc/classes/javax/media/opengl" /> + <copy file="${jogl.dist.dir}/jogl-linux/GLU.java" todir="../${rootrel.build.jogl}/gensrc/classes/javax/media/opengl/glu" /> + <copy file="${jogl.dist.dir}/jogl-linux/GLUquadric.java" todir="../${rootrel.build.jogl}/gensrc/classes/javax/media/opengl/glu" /> + <zip destfile="${jogl.dist.dir}/jogl-${tmp.version}-src.zip" + basedir="../.." + includes="gluegen/LICENSE.txt,gluegen/doc/**,gluegen/make/**,gluegen/src/**,jogl/*.txt,jogl/${rootrel.build.jogl}/gensrc/classes/javax/media/opengl/**,jogl/doc/**,jogl/make/**,jogl/src/jogl/**" + excludes="**/*.class,**/*~" + /> + <!-- Create zip archives suitable for developers --> + <!-- Unfortunately, we have to replicate the os/arch name combinations from + gluegen-cpptasks.xml. The reason for this is that we can't generate these + zip archives on the platform where the builds run; we have to run the dist + target in order to get the platform-independent jogl.jar. --> + <antcall target="dist.build.zip" inheritAll="true"> + <param name="zip.os.arch" value="linux-i586" /> + <param name="zip.so.suffix" value=".so" /> + <param name="zip.src.so.dir" value="${jogl.dist.dir}/jogl-linux/32" /> + </antcall> + <antcall target="dist.build.zip" inheritAll="true"> + <param name="zip.os.arch" value="linux-amd64" /> + <param name="zip.so.suffix" value=".so" /> + <param name="zip.src.so.dir" value="${jogl.dist.dir}/jogl-linux/64" /> + </antcall> + <antcall target="dist.build.zip" inheritAll="true"> + <param name="zip.os.arch" value="macosx-ppc" /> + <param name="zip.so.suffix" value=".jnilib" /> + <param name="zip.src.so.dir" value="${jogl.dist.dir}/jogl-macosx/ppc" /> + </antcall> + <antcall target="dist.build.zip" inheritAll="true"> + <param name="zip.os.arch" value="macosx-universal" /> + <param name="zip.so.suffix" value=".jnilib" /> + <param name="zip.src.so.dir" value="${jogl.dist.dir}/jogl-macosx/fat" /> + </antcall> + <antcall target="dist.build.zip" inheritAll="true"> + <param name="zip.os.arch" value="solaris-i586" /> + <param name="zip.so.suffix" value=".so" /> + <param name="zip.src.so.dir" value="${jogl.dist.dir}/jogl-solx86/32" /> + </antcall> + <antcall target="dist.build.zip" inheritAll="true"> + <param name="zip.os.arch" value="solaris-amd64" /> + <param name="zip.so.suffix" value=".so" /> + <param name="zip.src.so.dir" value="${jogl.dist.dir}/jogl-solx86/64" /> + </antcall> + <antcall target="dist.build.zip" inheritAll="true"> + <param name="zip.os.arch" value="solaris-sparc" /> + <param name="zip.so.suffix" value=".so" /> + <param name="zip.src.so.dir" value="${jogl.dist.dir}/jogl-solsparc/32" /> + </antcall> + <antcall target="dist.build.zip" inheritAll="true"> + <param name="zip.os.arch" value="solaris-sparcv9" /> + <param name="zip.so.suffix" value=".so" /> + <param name="zip.src.so.dir" value="${jogl.dist.dir}/jogl-solsparc/64" /> + </antcall> + <antcall target="dist.build.zip" inheritAll="true"> + <param name="zip.os.arch" value="windows-i586" /> + <param name="zip.so.suffix" value=".dll" /> + <param name="zip.src.so.dir" value="${jogl.dist.dir}/jogl-win/32" /> + </antcall> + <antcall target="dist.build.zip" inheritAll="true"> + <param name="zip.os.arch" value="windows-amd64" /> + <param name="zip.so.suffix" value=".dll" /> + <param name="zip.src.so.dir" value="${jogl.dist.dir}/jogl-win/64" /> + </antcall> + <!-- Create one last zip archive by hand, this one containing all of the --> + <!-- Java Web Start jar files (for easier redistribution) --> + <zip destfile="${jogl.dist.dir}/jogl-${tmp.version}-webstart.zip" + basedir="${jogl.dist.dir}" + includes="*.jar" /> + <!-- Create a version.txt file indicating which version we just built --> + <echo message="${tmp.version}" file="${jogl.dist.dir}/version.txt" /> + </target> + + <!-- ================================================================== --> + <!-- + - Clean up all that is built. + --> + <target name="clean" description="Remove all build products" depends="declare.common"> + <delete includeEmptyDirs="true" quiet="true"> + <fileset dir="${tempdir}" /> + <fileset dir="${build}" /> + <fileset dir="${javadoc}" /> + <fileset dir="${javadoc.spec}" /> + <fileset dir="${javadoc.dev}" /> + </delete> + </target> + + <!-- ================================================================== --> + <!-- + - Build everything. + --> + <target name="all" description="Build JOGL JAR file(s) and native libraries." depends="load.user.properties,init,jar,c.build.jogl" /> + + <!-- ================================================================== --> + <!-- + - Build everything and use Sun's Implementation tag in the manifest to + - indicate this is the Reference Implementation. + --> + <target name="RI"> + <!-- Set property for using the RI manifest file so jogl.jar is versioned + - properly + --> + <property name="RImanifestfile" value="joglRIversion" /> + <antcall target="all" inheritRefs="true" /> + </target> +</project> |