<?xml version="1.0" encoding="UTF-8"?> <!-- - Ant build for the NativeWindow package. 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 the NativeWindow sources 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.xml MUST - be run from the "make" directory. - - Public targets: - all: (default; autodetects OS and chooses C compiler from gluegen.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: 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 gluegen.properties - is required to select the appropriate C compiler. See the example - gluegen.properties in the gluegen workspace for valid values. On Mac OS X - universal binaries may also be built by setting the "macosxfat" - property in gluegen.properties; again see the example file in this - directory. - - 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.nodesktop is set iff: !isWindows && !isOSX && !isX11 - Internal settings, may not be necessary to set them manually, since all JAR archives are orthogonal. setup.noAWT --> <project name="NativeWindow" basedir="." default="all"> <import file="build-common.xml"/> <!-- ================================================================== --> <!-- - Base initialization and detection of operating system. --> <target name="base.init" depends="common.init"> <condition property="setup.noNativeAWT"> <or> <isset property="setup.noAWT"/> <isset property="setup.nodesktop"/> </or> </condition> <echo message="setup.noNativeAWT: ${setup.noNativeAWT}" /> <!-- partitioning --> <property name="java.part.core" value="javax/media/nativewindow/*, javax/media/nativewindow/egl/*, javax/media/nativewindow/macosx/*, javax/media/nativewindow/windows/*, com/jogamp/nativewindow/impl/*, com/jogamp/nativewindow/impl/jvm/*"/> <property name="java.part.awt" value="javax/media/nativewindow/awt/*, com/jogamp/nativewindow/impl/jawt/**, com/jogamp/nativewindow/impl/**/awt/**"/> <property name="java.part.x11" value="com/jogamp/nativewindow/impl/x11/** javax/media/nativewindow/x11/*" /> <!-- condition excludes --> <condition property="java.excludes.awt" value="${java.part.awt}"> <isset property="setup.noAWT"/> </condition> <property name="java.excludes.all" value="${java.excludes.awt}" /> <echo message="java.excludes.all: ${java.excludes.all}" /> </target> <!-- ================================================================== --> <!-- - Declare all paths and user defined variables. --> <target name="declare.common" description="Declare properties" depends="base.init"> <property name="config.nativewindow" value="${config}/nativewindow" /> <property name="rootrel.src" value="src/nativewindow" /> <property name="rootrel.src.java" value="${rootrel.src}/classes" /> <property name="rootrel.src.c" value="${rootrel.src}/native" /> <property name="rootrel.src.generated" value="${rootrel.build}/nativewindow/gensrc" /> <property name="rootrel.generated.c" value="${rootrel.src.generated}/native" /> <!-- The source directories. --> <property name="src.java" value="${project.root}/${rootrel.src.java}" /> <property name="src.c" value="${project.root}/${rootrel.src.c}" /> <!-- The generated source directories. --> <property name="src.generated" value="${build.nativewindow}/gensrc" /> <property name="src.generated.java" value="${src.generated}/classes" /> <property name="src.generated.java-cdc" value="${src.generated}/classes-cdc" /> <property name="src.generated.c" value="${src.generated}/native" /> <!-- The compiler output directories. --> <property name="classes" value="${build.nativewindow}/classes" /> <property name="classes-cdc" value="${build.nativewindow}/classes-cdc" /> <!-- The headers from which Java files are generated --> <dirset id="stub.includes.fileset.all" dir="."> <include name="${stub.includes}/macosx/**" /> <include name="${stub.includes}/win32/**" /> <include name="${stub.includes}/x11/**" /> <include name="${stub.includes}/common/**" /> <include name="${stub.includes}/jni/**" /> </dirset> <fileset id="stub.includes.dependencies.fileset.1" dir="${stub.includes}"> <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.nativewindow}"> <include name="*.cfg" /> <include name="*.java" /> <include name="*.c" /> </fileset> <!-- The javadoc dirs. --> <property name="javadoc" value="${project.root}/javadoc_nativewindow_public" /> <property name="javadoc.spec" value="${project.root}/javadoc_nativewindow_spec" /> <property name="javadoc.dev" value="${project.root}/javadoc_nativewindow_dev" /> <property name="javadoc.link" value="http://java.sun.com/j2se/1.4.2/docs/api/" /> <property name="javadoc.windowtitle" value="Native Windowing Interface (NativeWindow) API -- ${nativewindow_base_version} Specification" /> <property name="javadoc.overview" value="../src/nativewindow/classes/javax/media/nativewindow/package.html" /> <property name="javadoc.spec.packagenames" value="javax.media.nativewindow.*" /> <property name="javadoc.packagenames" value="${javadoc.spec.packagenames}" /> <property name="javadoc.dev.packagenames" value="${javadoc.packagenames},com.jogamp.nativewindow.impl.*,com.sun.gluegen,com.jogamp.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> <!-- ================================================================== --> <!-- - Initialize all parameters required for the build and create any - required directories. --> <target name="init" depends="declare.common"> <!-- Create the required output directories. --> <mkdir dir="${src.generated.java}" /> <mkdir dir="${src.generated.java-cdc}" /> <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="${classes}" /> <mkdir dir="${classes-cdc}" /> <mkdir dir="${obj.nativewindow}" /> </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.x11windowlib" targetfile="${src.generated.java}/com/jogamp/nativewindow/impl/x11/X11Lib.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.jawt" targetfile="${src.generated.java}/com/jogamp/nativewindow/impl/jawt/JAWT.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.x11windowlib"/> <isset property="java.generate.skip.jawt"/> </and> </condition> <!--property name="java.generate.skip" value="true"/--> </target> <target name="java.generate.windowlib" if="windowlib.os.cfg"> <echo message="Generating Windowing Lib implementation class" /> <gluegen src="${stub.includes}/${window.os.system}/window-lib.c" outputRootDir="${build.nativewindow}" config="${windowlib.os.cfg}" includeRefid="stub.includes.fileset.platform" emitter="com.sun.gluegen.JavaEmitter"> <classpath refid="gluegen.classpath" /> </gluegen> <copy todir="${src.generated.java-cdc}"> <fileset dir="${src.generated.java}" includes="com/jogamp/nativewindow/impl/x11/**" /> </copy> </target> <target name="java.generate.jawt" unless="setup.noAWT"> <!-- NOTE: the "literalInclude" in this GlueGen call is simply to - get around the fact that neither FileSet nor DirSet can - handle different drives in an effective manner. --> <echo message="Generating JAWT interface class" /> <echo message="java.home.dir=${java.home.dir}" /> <gluegen src="${jawt.platform.header}" outputRootDir="${build.nativewindow}" config="${jawt.cfg}" literalInclude="${stub.includes}/jni" includeRefid="stub.includes.fileset.platform" emitter="com.sun.gluegen.JavaEmitter"> <classpath refid="gluegen.classpath" /> </gluegen> <copy todir="${src.generated.java-cdc}"> <fileset dir="${src.generated.java}" includes="com/jogamp/nativewindow/impl/jawt/**" /> </copy> </target> <target name="java.generate.platforms" > <echo message="Generating platform-specifics: os: ${window.os.system}, cfgs: ${windowlib.os.cfg}, ${jawt.cfg}" /> <dirset id="stub.includes.fileset.platform" dir="." includes="${stub.includes}/${window.os.system}/** ${stub.includes}/common/**" /> <antcall target="java.generate.windowlib" inheritRefs="true" /> <antcall target="java.generate.jawt" 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="common.gluegen.build, 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 platform-specifics: X11" /> <antcall target="java.generate.platforms" inheritRefs="true"> <param name="window.os.system" value="x11"/> <param name="windowlib.os.cfg" value="${config.nativewindow}/x11-lib.cfg" /> <param name="jawt.cfg" value="${config.nativewindow}/jawt-x11.cfg" /> <param name="jawt.platform.header" value="${stub.includes}/jni/x11/jawt_md.h" /> </antcall> <echo message="Generating platform-specifics: Win32" /> <antcall target="java.generate.platforms" inheritRefs="true"> <param name="window.os.system" value="win32"/> <param name="jawt.cfg" value="${config.nativewindow}/jawt-win32.cfg" /> <param name="jawt.platform.header" value="${stub.includes}/jni/win32/jawt_md.h" /> </antcall> <echo message="Generating platform-specifics: MaxOsX" /> <antcall target="java.generate.platforms" inheritRefs="true"> <param name="window.os.system" value="macosx"/> <param name="jawt.cfg" value="${config.nativewindow}/jawt-macosx.cfg" /> <param name="jawt.platform.header" value="${stub.includes}/jni/macosx/jawt_md.h" /> </antcall> <!-- 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> <!-- ================================================================== --> <!-- - Compile the original and generated source. The composable pipelines - will be generated. --> <target name="java.compile.javacdc" depends="java.generate" unless="setup.noCDC"> <!-- Perform the first pass Java compile; everything --> <javac destdir="${classes-cdc}" excludes="${java.part.awt} ${java.excludes.all}" source="${target.sourcelevel}" classpath="${gluegen-rt-cdc.jar}" bootclasspath="${javac.bootclasspath-cdc.jar}" fork="yes" includeAntRuntime="false" memoryMaximumSize="${javac.memorymax}" debug="${javacdebug}" debuglevel="${javacdebuglevel}"> <src path="${src.java}" /> <src path="${src.generated.java-cdc}" /> </javac> </target> <target name="java.compile.javase" depends="java.generate"> <!-- Perform the second pass Java compile; everything. --> <javac destdir="${classes}" excludes="${java.excludes.all}" source="${target.sourcelevel}" classpath="${gluegen-rt.jar}" fork="yes" includeAntRuntime="false" memoryMaximumSize="${javac.memorymax}" debug="${javacdebug}" debuglevel="${javacdebuglevel}"> <src path="${src.java}" /> <src path="${src.generated.java}" /> </javac> </target> <target name="java.compile" depends="java.compile.javase,java.compile.javacdc" /> <!-- ================================================================== --> <!-- - 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"> <!-- compiler configuration --> <!-- Note that we can use the base setups in the gluegen-cpptasks for most of these --> <compiler id="compiler.cfg.freebsd.nativewindow" extends="compiler.cfg.freebsd"> <!-- Need to force X11R6 headers on to include path after stub_includes --> <includepath path="/usr/X11R6/include" /> </compiler> <!-- linker configuration --> <linker id="linker.cfg.linux.nativewindow.x11" extends="linker.cfg.linux"> <syslibset dir="/usr/lib" libs="X11"/> <syslibset dir="/usr/lib" libs="Xxf86vm" /> </linker> <linker id="linker.cfg.linux.amd64.nativewindow.x11" extends="linker.cfg.linux.amd64"> <syslibset dir="/usr/lib64" libs="X11"/> <syslibset dir="/usr/lib64" libs="Xxf86vm" /> </linker> <linker id="linker.cfg.solaris.nativewindow.x11" extends="linker.cfg.solaris"> <syslibset libs="X11"/> </linker> <linker id="linker.cfg.solaris.sparcv9.nativewindow.x11" extends="linker.cfg.solaris.sparcv9"> <syslibset dir="/usr/lib/sparcv9" libs="X11"/> </linker> <linker id="linker.cfg.solaris.amd64.nativewindow.x11" extends="linker.cfg.solaris.amd64"> <syslibset dir="/usr/lib/amd64" libs="X11"/> </linker> <linker id="linker.cfg.win32.mingw.nativewindow" extends="linker.cfg.win32.mingw"> <linkerarg value="-Wl,--kill-at" /> <!-- remove @ from function names --> <syslibset libs="gdi32, kernel32"/> </linker> <linker id="linker.cfg.win32.msvc.nativewindow" extends="linker.cfg.win32.msvc"> <syslibset libs="gdi32, user32, kernel32" /> </linker> <linker id="linker.cfg.macosx.nativewindow" extends="linker.cfg.macosx"> <linkerarg value="-framework" /> <linkerarg value="Cocoa" /> </linker> <linker id="linker.cfg.hpux.nativewindow" extends="linker.cfg.hpux"> <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.oswin" value="linker.cfg.win32.msvc.nativewindow" /> </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.oswin" value="linker.cfg.win32.mingw.nativewindow" /> </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.oswin" value="linker.cfg.linux.nativewindow.x11" /> </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.oswin" value="linker.cfg.linux.amd64.nativewindow.x11" /> </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.oswin" value="linker.cfg.linux.nativewindow.x11" /> </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.oswin" value="linker.cfg.solaris.nativewindow.x11" /> </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.oswin" value="linker.cfg.solaris.sparcv9.nativewindow.x11" /> </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.oswin" value="linker.cfg.solaris.amd64.nativewindow.x11" /> </target> <target name="c.configure.freebsd" depends="c.configure.x11" if="isFreeBSD"> <echo message="FreeBSD" /> <property name="compiler.cfg.id" value="compiler.cfg.freebsd.nativewindow" /> <property name="linker.cfg.id.oswin" value="linker.cfg.linux.nativewindow.x11" /> </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.oswin" value="linker.cfg.hpux.nativewindow.x11" /> </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.oswin" value="linker.cfg.macosx.nativewindow" /> </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}" /> <copy file="${dest}" tofile="${dest-cdc}" /> </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> <!-- since properties are immutable, we need one for each target --> <condition property="@{output.lib.name}.useLibJAWT"> <istrue value="@{c.compiler.use-jawt}" /> </condition> <echo message="c.compiler.use-jawt @{c.compiler.use-jawt}"/> <echo message="@{output.lib.name}.useLibJAWT ${@{output.lib.name}.useLibJAWT}"/> <condition property="@{output.lib.name}.useLibJVM"> <and> <isset property="isHPUX"/> <isset property="@{output.lib.name}.useLibJAWT"/> </and> </condition> <patternset id="c.src.files.awt"> <include name="${rootrel.src.c}/JAWT*.c"/> <include name="${rootrel.generated.c}/X11/JAWT*.c" if="isX11"/> <include name="${rootrel.generated.c}/MacOSX/JAWT*.c" if="isOSX"/> <include name="${rootrel.generated.c}/Windows/JAWT*.c" if="isWindows"/> </patternset> <patternset id="c.src.files.x11"> <include name="${rootrel.generated.c}/X11/X11*.c" if="isX11"/> <include name="${rootrel.src.c}/x11/Xmisc.c" if="isX11"/> <include name="${rootrel.src.c}/x11/XineramaHelper.c" if="isX11"/> <!-- Xinerama supporting functions for Linux only (for now) --> <!-- Also supported on Solaris, but works differently --> <include name="${rootrel.src.c}/x11/Xinerama.c" if="isLinux"/> </patternset> <echo message="Compiling @{output.lib.name}" /> <cc outtype="shared" objdir="${obj.nativewindow}" outfile="${obj.nativewindow}/@{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}"/> <!-- 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"/> <!-- 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.nativewindow}/obj/lib@{output.lib.name}.dylib" /> <param name="dest" value="${build.nativewindow}/obj/lib@{output.lib.name}.jnilib" /> <param name="dest-cdc" value="${build.nativewindow}/obj/lib@{output.lib.name}.so" /> </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.nativewindow}/obj/lib@{output.lib.name}.so" /> <param name="dest" value="${build.nativewindow}/obj/@{output.lib.name}.dll" /> </antcall> </sequential> </macrodef> <target name="c.fixup.jawt.version.macosx" if="isOSX" unless="setup.noNativeAWT"> <!-- Edit the link to the JAWT version in the resulting jnilib file; this isn't strictly needed but seems to allow the universal binaries to work on 10.3 machines as well, which is desirable for some end users --> <apply executable="install_name_tool"> <arg value="-change" /> <arg value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries/libjawt.dylib" /> <arg value="/System/Library/Frameworks/JavaVM.framework/Libraries/libjawt.dylib" /> <srcfile /> <fileset dir="${obj.nativewindow}" includes="libnativewindow_awt.jnilib" /> </apply> </target> <target name="c.build.nativewindow.awt" unless="setup.noNativeAWT"> <c.build c.compiler.src.files="c.src.files.awt" c.compiler.use-jawt="true" output.lib.name="nativewindow_awt" compiler.cfg.id="${compiler.cfg.id}" linker.cfg.id="${linker.cfg.id.oswin}"/> </target> <target name="c.build.nativewindow.windowlib.x11" if="isX11"> <javah destdir="${src.generated.c}/X11" classpath="${classes}" class="com.jogamp.nativewindow.impl.x11.X11Lib" /> <c.build c.compiler.src.files="c.src.files.x11" output.lib.name="nativewindow_x11" compiler.cfg.id="${compiler.cfg.id}" linker.cfg.id="${linker.cfg.id.oswin}"/> </target> <target name="c.build.nativewindow.windowlib" depends="c.build.nativewindow.windowlib.x11"/> <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.nativewindow}" dllname="nativewindow_awt" /> </target> <target name="c.build.nativewindow" depends="c.configure,c.build.nativewindow.windowlib,c.build.nativewindow.awt"> <antcall target="gluegen.cpptasks.striplibs" inheritRefs="true"> <param name="libdir" value="${obj.nativewindow}"/> </antcall> <antcall target="c.fixup.jawt.version.macosx" inheritrefs="true" /> <antcall target="c.manifest" inheritRefs="true" /> </target> <!-- ================================================================== --> <!-- - Build the nativewindow.jar files. --> <target name="build-jars" depends="gluegen.cpptasks.detect.os,build-jars-javase,build-jars-cdc" /> <target name="setup-manifestfile"> <condition property="manifestfile" value="nativewindowRIversion"> <isset property="nativewindow.ri" /> </condition> <condition property="manifestfile" value="nativewindowversion"> <not> <isset property="nativewindow.ri" /> </not> </condition> <tstamp> <format property="timestamp" pattern="yyyyMMdd-HH:mm:ss"/> </tstamp> <copy file="${manifestfile}" tofile="tempversion" overwrite="true"> <filterset> <filter token="VERSION" value="${nativewindow_base_version}-pre-${timestamp}"/> <filter token="BASEVERSION" value="${nativewindow_base_version}"/> </filterset> </copy> </target> <target name="setup-manifestfile-cdc"> <condition property="manifestfile" value="nativewindowRIversion-cdc"> <isset property="nativewindow.ri" /> </condition> <condition property="manifestfile" value="nativewindowversion-cdc"> <not> <isset property="nativewindow.ri" /> </not> </condition> <tstamp> <format property="timestamp" pattern="yyyyMMdd-HH:mm:ss"/> </tstamp> <copy file="${manifestfile}" tofile="tempversion-cdc" overwrite="true"> <filterset> <filter token="VERSION" value="${nativewindow_base_version}-pre-${timestamp}"/> <filter token="BASEVERSION" value="${nativewindow_base_version}"/> </filterset> </copy> </target> <target name="build-jars-awt" depends="setup-manifestfile" unless="setup.noAWT"> <jar manifest="tempversion" destfile="${nativewindow.awt.jar}" filesonly="true"> <fileset dir="${classes}" includes="${java.part.awt}" excludes="${java.excludes.awt}"/> </jar> </target> <target name="build-jars-x11" depends="setup-manifestfile"> <jar manifest="tempversion" destfile="${nativewindow.os.x11.jar}" filesonly="true"> <fileset dir="${classes}" includes="${java.part.x11}" /> </jar> </target> <target name="build-jars-x11-cdc" depends="setup-manifestfile-cdc"> <jar manifest="tempversion-cdc" destfile="${nativewindow.os.x11.cdc.jar}" filesonly="true"> <fileset dir="${classes-cdc}" includes="${java.part.x11}" /> </jar> </target> <target name="build-jars-all" depends="setup-manifestfile" unless="setup.noAWT"> <jar manifest="tempversion" destfile="${nativewindow.all.jar}" filesonly="true"> <fileset dir="${classes}" includes="javax/media/nativewindow/** com/jogamp/nativewindow/**" /> </jar> </target> <target name="build-jars-all-noawt" depends="setup-manifestfile"> <jar manifest="tempversion" destfile="${nativewindow.all-noawt.jar}" filesonly="true"> <fileset dir="${classes}" includes="javax/media/nativewindow/**, com/jogamp/nativewindow/**" excludes="${java.part.awt}"/> </jar> </target> <target name="build-jars-all-cdc" depends="setup-manifestfile-cdc"> <jar manifest="tempversion-cdc" destfile="${nativewindow.all.cdc.jar}" filesonly="true"> <fileset dir="${classes-cdc}" includes="javax/media/nativewindow/** com/jogamp/nativewindow/**" /> </jar> </target> <target name="build-jars-javase" depends="setup-manifestfile,build-jars-awt,build-jars-x11,build-jars-all,build-jars-all-noawt"> <jar manifest="tempversion" destfile="${nativewindow.core.jar}" filesonly="true"> <fileset dir="${classes}" includes="${java.part.core}" excludes="${java.part.awt} ${java.part.x11}"/> </jar> <jar manifest="tempversion" destfile="${build.nativewindow}/nativewindow-natives-${os.and.arch}.jar" filesonly="true"> <fileset dir="${obj.nativewindow}"> <include name="*.${native.library.suffix}" /> </fileset> </jar> <delete file="tempversion"/> </target> <target name="build-jars-cdc" depends="setup-manifestfile-cdc,build-jars-x11-cdc,build-jars-all-cdc"> <jar manifest="tempversion-cdc" destfile="${nativewindow.core.cdc.jar}" filesonly="true"> <fileset dir="${classes-cdc}" includes="${java.part.core}" excludes="${java.part.awt} ${java.part.x11}"/> </jar> <jar manifest="tempversion-cdc" destfile="${build.nativewindow}/nativewindow-natives-${os.and.arch}-cdc.jar" filesonly="true"> <fileset dir="${obj.nativewindow}"> <include name="*_jvm.${native.library.suffix-cdc}" /> <include name="*_x11.${native.library.suffix-cdc}" /> </fileset> </jar> <delete file="tempversion-cdc"/> </target> <!-- ================================================================== --> <!-- - Build the Javadocs for the sources. - NOTE: these are not entirely correct as the javadoc targets depend - on the platform specific build targets. To circumvent any - errors, ensure that the source is built first. --> <target name="javadoc" depends="init"> <!-- Build the general public Javadoc --> <javadoc packagenames="${javadoc.packagenames}" excludepackagenames="${java.excludes.javadoc.packagenames}" sourcepath="${src.java};${src.generated.java}" classpath="${gluegen-rt-cdc.jar}" destdir="${javadoc}" windowtitle="${javadoc.windowtitle}" overview="${javadoc.overview}" source="1.4" linkoffline="${javadoc.link} 142-packages" bottom="${javadoc.bottom}" > </javadoc> </target> <target name="javadoc.spec" depends="init"> <!-- Build the specification Javadoc --> <javadoc packagenames="${javadoc.spec.packagenames}" excludepackagenames="${java.excludes.javadoc.packagenames}" sourcepath="${src.java};${src.generated.java}" classpath="${gluegen-rt-cdc.jar}" destdir="${javadoc.spec}" windowtitle="${javadoc.windowtitle}" overview="${javadoc.overview}" source="1.4" linkoffline="${javadoc.link} 142-packages" bottom="${javadoc.bottom}" > </javadoc> </target> <target name="javadoc.dev" depends="init"> <!-- Build the internal developer Javadoc --> <javadoc packagenames="${javadoc.dev.packagenames}" excludepackagenames="${java.excludes.javadoc.packagenames}" sourcepath="${src.java};${src.generated.java}" classpath="${gluegen-rt-cdc.jar}" destdir="${javadoc.dev}" windowtitle="${javadoc.windowtitle}" overview="${javadoc.overview}" source="1.4" linkoffline="${javadoc.link} 142-packages" bottom="${javadoc.bottom}" > </javadoc> </target> <target name="all.doc" description="Build NativeWindow docs" depends="init,javadoc,javadoc.spec,javadoc.dev" /> <!-- ================================================================== --> <!-- - Clean up all that is built. --> <target name="clean" description="Remove all build products" depends="declare.common"> <delete includeEmptyDirs="true" quiet="true"> <fileset dir="${build.nativewindow}" /> <fileset dir="${javadoc}" /> <fileset dir="${javadoc.spec}" /> <fileset dir="${javadoc.dev}" /> </delete> </target> <!-- ================================================================== --> <!-- - Build everything. --> <target name="all" description="Build NativeWindow JAR file(s) and native libraries." depends="init,java.compile,c.build.nativewindow,build-jars,generate.version.txt" /> <target name="generate.version.txt" depends="init"> <!-- Create a version.txt file indicating which version we just built --> <echo message="${nativewindow.version}" file="${build.nativewindow}/version.txt" /> </target> <!-- ================================================================== --> <!-- - 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 nativewindow.jar is versioned - properly --> <property name="nativewindow.ri" value="true" /> <antcall target="all" inheritRefs="true" /> </target> </project>