aboutsummaryrefslogtreecommitdiffstats
path: root/make/build-newt.xml
diff options
context:
space:
mode:
Diffstat (limited to 'make/build-newt.xml')
-rw-r--r--make/build-newt.xml745
1 files changed, 745 insertions, 0 deletions
diff --git a/make/build-newt.xml b/make/build-newt.xml
new file mode 100644
index 000000000..d062f9276
--- /dev/null
+++ b/make/build-newt.xml
@@ -0,0 +1,745 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ - Ant build for NEWT. 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 NEWT 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 newt.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.jogamp.* 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 newt.properties
+ - is required to select the appropriate C compiler. See the example
+ - newt.properties in this directory for valid values. On Mac OS X
+ - universal binaries may also be built by setting the "macosxfat"
+ - property in newt.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
+
+ - Internal settings, may not be necessary to set them manually,
+ since all JAR archives are orthogonal.
+ setup.noAWT
+ setup.noOpenGL
+
+ - setup.nodesktop is set iff:
+ !isWindows && !isOSX && !isX11
+
+ -->
+<project name="NEWT" basedir="." default="all">
+
+ <import file="build-common.xml"/>
+
+ <!-- needed for outofdate task -->
+ <taskdef resource="net/sf/antcontrib/antlib.xml">
+ <classpath> <pathelement location="${ant-contrib.jar}"/> </classpath>
+ </taskdef>
+
+ <!-- ================================================================== -->
+ <!--
+ - Base initialization and detection of operating system.
+ -->
+ <target name="base.init" depends="common.init">
+
+ <condition property="setup.nonatives">
+ <and>
+ <isfalse value="${isWindows}" />
+ <isfalse value="${isOSX}" />
+ <isfalse value="${isX11}" />
+ <isfalse value="${useKD}" />
+ <isfalse value="${useIntelGDL}" />
+ <isfalse value="${useBroadcomEGL}" />
+ </and>
+ </condition>
+
+ <echo message="setup.noOpenGL: ${setup.noOpenGL}" />
+ <echo message="isWindows: ${isWindows}" />
+ <echo message="isOSX: ${isOSX}" />
+ <echo message="isX11: ${isX11}" />
+ <echo message="useKD: ${useKD}" />
+ <echo message="useIntelGDL: ${useIntelGDL}" />
+ <echo message="useBroadcomEGL: ${useBroadcomEGL}" />
+ <echo message="setup.nonatives: ${setup.nonatives}" />
+
+ <!-- partitioning -->
+
+ <property name="java.part.core"
+ value="com/jogamp/newt/* com/jogamp/newt/event/* com/jogamp/newt/util/* jogamp/newt/* jogamp/newt/event/*"/>
+
+ <property name="java.part.awt"
+ value="com/jogamp/newt/awt/* com/jogamp/newt/event/awt/* jogamp/newt/awt/**"/>
+
+ <property name="java.part.x11"
+ value="jogamp/newt/x11/*"/>
+
+ <property name="java.part.windows"
+ value="jogamp/newt/windows/*"/>
+
+ <property name="java.part.macosx"
+ value="jogamp/newt/macosx/*"/>
+
+ <property name="java.part.opengl"
+ value="com/jogamp/newt/opengl/* jogamp/newt/opengl/kd/*"/>
+
+ <property name="java.part.broadcomegl"
+ value="jogamp/newt/opengl/broadcom/egl/*"/>
+
+ <property name="java.part.intelgdl"
+ value="jogamp/newt/intel/gdl/*"/>
+
+ <!-- condition excludes -->
+
+ <condition property="java.excludes.awt"
+ value="${java.part.awt}">
+ <isset property="setup.noAWT"/>
+ </condition>
+
+ <condition property="java.excludes.opengl"
+ value="${java.part.opengl} ${java.part.broadcomegl}">
+ <isset property="setup.noOpenGL"/>
+ </condition>
+
+ <condition property="java.excludes.desktop"
+ value="${java.part.x11} ${java.part.windows}, ${java.part.macosx}, ${java.part.awt}">
+ <isset property="setup.nodesktop"/>
+ </condition>
+
+ <property name="java.excludes.all" value="${java.excludes.awt}, ${java.excludes.opengl} ${java.excludes.desktop}" />
+ <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="rootrel.src" value="src/newt" />
+ <property name="rootrel.src.java" value="${rootrel.src}/classes" />
+ <property name="rootrel.src.c" value="${rootrel.src}/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.newt}/gensrc" />
+ <property name="src.generated.c" value="${src.generated}/native/newt" />
+
+ <!-- The compiler output directories. -->
+ <property name="classes" value="${build.newt}/classes" />
+
+ <!-- The javadoc dirs. -->
+ <property name="javadoc" value="${project.root}/javadoc_newt_public" />
+ <property name="javadoc.spec" value="${project.root}/javadoc_newt_spec" />
+ <property name="javadoc.dev" value="${project.root}/javadoc_newt_dev" />
+ <property name="javadoc.windowtitle" value="NEWT API -- ${newt_base_version} Specification" />
+ <property name="javadoc.overview" value="spec-overview.html" />
+ <property name="javadoc.spec.packagenames" value="com.jogamp.newt, com.jogamp.newt.event.*, com.jogamp.newt.opengl" />
+
+ <property name="javadoc.packagenames" value="${javadoc.spec.packagenames}" />
+
+ <property name="javadoc.dev.packagenames" value="${javadoc.packagenames},com.jogamp.newt.*" />
+ <property name="javadoc.bottom" value="Copyright 2005 Sun Microsystems, Inc. All rights reserved. Use is subject to &lt;a href=&quot;http://jcp.org/en/jsr/detail?id=231&quot;&gt;license terms&lt;/a&gt;." />
+ </target>
+
+ <!-- ================================================================== -->
+ <!--
+ - Initialize all parameters required for the build and create any
+ - required directories.
+ -->
+ <target name="init" depends="declare.common">
+ <mkdir dir="${src.generated.c}" />
+ <mkdir dir="${src.generated.c}/X11" />
+ <mkdir dir="${src.generated.c}/MacOSX" />
+ <mkdir dir="${src.generated.c}/Windows" />
+ <mkdir dir="${src.generated.c}/KD" />
+ <mkdir dir="${src.generated.c}/IntelGDL" />
+ <mkdir dir="${src.generated.c}/BroadcomEGL" />
+ <mkdir dir="${classes}" />
+ <mkdir dir="${obj.newt}" />
+ </target>
+
+ <!-- ================================================================== -->
+ <!--
+ - Compile the original and generated source.
+ -->
+ <target name="java.compile.javase">
+ <!-- Perform the second pass Java compile; everything. -->
+ <javac destdir="${classes}"
+ excludes="${java.excludes.all}"
+ source="${target.sourcelevel}"
+ fork="yes"
+ includeAntRuntime="false"
+ memoryMaximumSize="${javac.memorymax}"
+ debug="${javacdebug}" debuglevel="${javacdebuglevel}">
+ <src path="${src.java}" />
+ <classpath refid="nativewindow_gluegen_jogl.classpath"/>
+ </javac>
+ </target>
+
+ <target name="java.compile" depends="java.compile.javase" />
+
+ <!-- ================================================================== -->
+ <!--
+ - 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.newt" extends="compiler.cfg.freebsd">
+ <includepath path="/usr/local/include" />
+ </compiler>
+
+ <!-- linker configuration -->
+
+ <linker id="linker.cfg.freebsd.newt.x11" extends="linker.cfg.freebsd">
+ <syslibset dir="/usr/local/lib" libs="X11"/>
+ <syslibset libs="Xrandr"/>
+ <syslibset dir="/usr/local/lib" libs="Xxf86vm" />
+ </linker>
+
+ <linker id="linker.cfg.freebsd.amd64.newt.x11" extends="linker.cfg.freebsd.amd64">
+ <syslibset dir="/usr/local/lib" libs="X11"/>
+ <syslibset libs="Xrandr"/>
+ <syslibset dir="/usr/local/lib" libs="Xxf86vm" />
+ </linker>
+
+ <linker id="linker.cfg.linux.newt.broadcom_egl" extends="linker.cfg.linux">
+ <syslibset libs="EGL"/>
+ <syslibset libs="GLES_CM"/>
+ </linker>
+
+ <linker id="linker.cfg.linux.newt.x11" extends="linker.cfg.linux">
+ <syslibset libs="X11"/>
+ <syslibset libs="Xrandr"/>
+ <syslibset libs="Xxf86vm" />
+ </linker>
+
+ <linker id="linker.cfg.linux.amd64.newt.x11" extends="linker.cfg.linux.amd64">
+ <syslibset libs="X11"/>
+ <syslibset libs="Xrandr"/>
+ <syslibset libs="Xxf86vm" />
+ </linker>
+
+ <linker id="linker.cfg.solaris.newt.x11" extends="linker.cfg.solaris">
+ <syslibset libs="X11"/>
+ </linker>
+
+ <linker id="linker.cfg.solaris.sparcv9.newt.x11" extends="linker.cfg.solaris.sparcv9">
+ <syslibset dir="/usr/lib/sparcv9" libs="X11"/>
+ </linker>
+
+ <linker id="linker.cfg.solaris.amd64.newt.x11" extends="linker.cfg.solaris.amd64">
+ <syslibset dir="/usr/lib/amd64" libs="X11"/>
+ </linker>
+
+ <linker id="linker.cfg.win32.mingw.newt" extends="linker.cfg.win32.mingw">
+ <linkerarg value="-Wl,--kill-at" /> <!-- remove @ from function names -->
+ <syslibset libs="gdi32, kernel32"/>
+ </linker>
+
+ <linker id="linker.cfg.win64.mingw.newt" extends="linker.cfg.win64.mingw">
+ <linkerarg value="-Wl,--kill-at" /> <!-- remove @ from function names -->
+ <syslibset libs="gdi32, kernel32"/>
+ </linker>
+
+ <linker id="linker.cfg.win32.msvc.newt" extends="linker.cfg.win32.msvc">
+ <syslibset libs="gdi32, user32, kernel32" />
+ </linker>
+
+ <linker id="linker.cfg.macosx.newt" extends="linker.cfg.macosx">
+ <linkerarg value="-framework" />
+ <linkerarg value="Cocoa" />
+ </linker>
+
+ <linker id="linker.cfg.hpux.newt" 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.core" value="linker.cfg.win32.msvc" />
+ <property name="linker.cfg.id.oswin" value="linker.cfg.win32.msvc.newt" />
+ </target>
+
+ <target name="c.configure.win32.mingw" if="isMingW32">
+ <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.newt" />
+ </target>
+
+ <target name="c.configure.win64.mingw" if="isMingW64">
+ <echo message="Win64.MingW" />
+ <property name="compiler.cfg.id" value="compiler.cfg.win64.mingw" />
+ <property name="linker.cfg.id.core" value="linker.cfg.win64.mingw" />
+ <property name="linker.cfg.id.oswin" value="linker.cfg.win64.mingw.newt" />
+ </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" />
+ <condition property="linker.cfg.id.oswin" value="linker.cfg.linux.newt.x11"
+ else="linker.cfg.linux">
+ <isset property="isX11" />
+ </condition>
+ <echo message="linker.cfg.id.oswin ${linker.cfg.id.oswin}" />
+ </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" />
+ <condition property="linker.cfg.id.oswin" value="linker.cfg.linux.amd64.newt.x11"
+ else="linker.cfg.linux.amd64">
+ <isset property="isX11" />
+ </condition>
+ <echo message="linker.cfg.id.oswin ${linker.cfg.id.oswin}" />
+ </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.newt.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.core" value="linker.cfg.solaris" />
+ <property name="linker.cfg.id.oswin" value="linker.cfg.solaris.newt.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.core" value="linker.cfg.solaris.sparcv9" />
+ <property name="linker.cfg.id.oswin" value="linker.cfg.solaris.sparcv9.newt.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.core" value="linker.cfg.solaris.amd64" />
+ <property name="linker.cfg.id.oswin" value="linker.cfg.solaris.amd64.newt.x11" />
+ </target>
+
+ <target name="c.configure.freebsd.x86" if="isFreeBSDX86">
+ <echo message="FreeBSD.x86" />
+ <property name="compiler.cfg.id" value="compiler.cfg.freebsd.newt" />
+ <property name="linker.cfg.id.core" value="linker.cfg.freebsd" />
+ <condition property="linker.cfg.id.oswin" value="linker.cfg.freebsd.newt.x11"
+ else="linker.cfg.freebsd">
+ <isset property="isX11" />
+ </condition>
+ <echo message="linker.cfg.id.oswin ${linker.cfg.id.oswin}" />
+ </target>
+
+ <target name="c.configure.freebsd.amd64" if="isFreeBSDAMD64">
+ <echo message="FreeBSD.AMD64" />
+ <property name="compiler.cfg.id" value="compiler.cfg.freebsd.newt" />
+ <property name="linker.cfg.id.core" value="linker.cfg.freebsd.amd64" />
+ <condition property="linker.cfg.id.oswin" value="linker.cfg.freebsd.amd64.newt.x11"
+ else="linker.cfg.freebsd.amd64">
+ <isset property="isX11" />
+ </condition>
+ <echo message="linker.cfg.id.oswin ${linker.cfg.id.oswin}" />
+ </target>
+
+ <target name="c.configure.freebsd" depends="c.configure.freebsd.x86,c.configure.freebsd.amd64,c.configure.x11" if="isFreeBSD"/>
+
+ <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.newt.x11" />
+ </target>
+
+ <target name="c.configure.win32" depends="c.configure.win32.vc,c.configure.win32.mingw,c.configure.win64.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.newt" />
+ </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.newt">
+ <include name="${rootrel.src.c}/NewtCommon.c" />
+ <include name="${rootrel.src.c}/WindowsWindow.c" if="isWindows"/>
+ <include name="${rootrel.src.c}/*.m" if="isOSX"/>
+ <include name="${rootrel.src.c}/X11Window.c" if="isX11"/>
+ <include name="${rootrel.src.c}/KDWindow.c" if="useKD"/>
+ <include name="${rootrel.src.c}/IntelGDL.c" if="useIntelGDL"/>
+ <include name="${rootrel.src.c}/BroadcomEGL.c" if="useBroadcomEGL"/>
+ </patternset>
+
+ <echo message="Compiling @{output.lib.name}" />
+
+ <!-- have to wrap cc task with outofdate, because otherwise cc links a new library
+ even when no files have been compiled -->
+ <outofdate>
+ <sourcefiles>
+ <fileset dir="${project.root}"><patternset refid="@{c.compiler.src.files}"/></fileset>
+ </sourcefiles>
+ <targetfiles>
+ <fileset dir="${obj.newt}" includes="lib@{output.lib.name}.so"/>
+ <fileset dir="${obj.newt}" includes="@{output.lib.name}.dll"/>
+ <fileset dir="${obj.newt}" includes="lib@{output.lib.name}.jnilib"/>
+ </targetfiles>
+ <sequential>
+ <cc outtype="shared"
+ objdir="${obj.newt}"
+ outfile="${obj.newt}/@{output.lib.name}"
+ optimize="${c.compiler.optimise}"
+ debug="${c.compiler.debug}"
+ multithreaded="true"
+ exceptions="false"
+ rtti="false">
+
+ <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/khr"/>
+ <includepath path="stub_includes/egl"/>
+ <!-- This is for finding Xrandr.h on Solaris. -->
+ <includepath path="/usr/X11/include" />
+ <!-- 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}/KD" if="useKD" />
+ <includepath path="${src.generated.c}/IntelGDL" if="useIntelGDL" />
+ <includepath path="stub_includes/embedded/IntelGDL" if="useIntelGDL" />
+ <includepath path="${src.generated.c}/BroadcomEGL" if="useBroadcomEGL" />
+
+ <!-- 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.platform}" libs="jawt" if="@{output.lib.name}.useLibJAWT"/>
+ <syslibset dir="${java.lib.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="${obj.newt}/lib@{output.lib.name}.dylib" />
+ <param name="dest" value="${obj.newt}/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="${obj.newt}/lib@{output.lib.name}.so" />
+ <param name="dest" value="${obj.newt}/@{output.lib.name}.dll" />
+ </antcall>
+
+ <!-- this stripping may be called more than once on the same library dir,
+ but that should cause no harm, and doing it here inside outofdate
+ prevents the JARs from always being rebuilt even if no source code changes -->
+ <antcall target="gluegen.cpptasks.striplibs" inheritRefs="true">
+ <param name="libdir" value="${obj.newt}"/>
+ </antcall>
+
+ </sequential>
+ </outofdate>
+ </sequential>
+ </macrodef>
+
+ <target name="c.build.newt.prepare.KD" if="useKD">
+ <javah destdir="${src.generated.c}/KD" classpath="${classes}" class="jogamp.newt.opengl.kd.KDWindow" />
+ </target>
+
+ <target name="c.build.newt.prepare.IntelGDL" if="useIntelGDL">
+ <javah destdir="${src.generated.c}/IntelGDL" classpath="${classes}" class="jogamp.newt.intel.gdl.Display" />
+ <javah destdir="${src.generated.c}/IntelGDL" classpath="${classes}" class="jogamp.newt.intel.gdl.Screen" />
+ <javah destdir="${src.generated.c}/IntelGDL" classpath="${classes}" class="jogamp.newt.intel.gdl.Window" />
+ </target>
+
+ <target name="c.build.newt.prepare.BroadcomEGL" if="useBroadcomEGL">
+ <javah destdir="${src.generated.c}/BroadcomEGL" classpath="${classes}" class="jogamp.newt.opengl.broadcom.egl.Window" />
+ </target>
+
+ <target name="c.build.newt.prepare.desktop" unless="setup.nodesktop">
+ <javah destdir="${src.generated.c}/Windows" classpath="${classes}" class="jogamp.newt.windows.WindowsWindow" />
+ <javah destdir="${src.generated.c}/Windows" classpath="${classes}" class="jogamp.newt.windows.WindowsScreen" />
+ <javah destdir="${src.generated.c}/Windows" classpath="${classes}" class="jogamp.newt.windows.WindowsDisplay" />
+ <javah destdir="${src.generated.c}/MacOSX" classpath="${classes}" class="jogamp.newt.macosx.MacWindow" />
+ <javah destdir="${src.generated.c}/MacOSX" classpath="${classes}" class="jogamp.newt.macosx.MacScreen" />
+ <javah destdir="${src.generated.c}/MacOSX" classpath="${classes}" class="jogamp.newt.macosx.MacDisplay" />
+ <javah destdir="${src.generated.c}/X11" classpath="${classes}" class="jogamp.newt.x11.X11Window" />
+ <javah destdir="${src.generated.c}/X11" classpath="${classes}" class="jogamp.newt.x11.X11Screen" />
+ <javah destdir="${src.generated.c}/X11" classpath="${classes}" class="jogamp.newt.x11.X11Display" />
+ </target>
+
+ <target name="c.build.newt.prepare" depends="c.build.newt.prepare.KD,c.build.newt.prepare.IntelGDL,c.build.newt.prepare.BroadcomEGL,c.build.newt.prepare.desktop" />
+
+ <target name="c.build.newt.windowlib" unless="setup.nonatives">
+ <c.build c.compiler.src.files="c.src.files.newt"
+ output.lib.name="newt"
+ compiler.cfg.id="${compiler.cfg.id}"
+ linker.cfg.id="${linker.cfg.id.oswin}"/>
+ </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.newt}" dllname="newt" />
+ </target>
+
+ <target name="c.build.newt.natives" depends="c.build.newt.windowlib" unless="setup.nonatives">
+ </target>
+
+ <target name="c.build.newt" depends="c.configure,c.build.newt.prepare,c.build.newt.natives">
+ <antcall target="c.manifest" inheritRefs="true" />
+ </target>
+
+ <!-- ================================================================== -->
+ <!--
+ - Build the newt.jar files.
+ -->
+ <target name="build-jars" depends="gluegen.cpptasks.detect.os,build-jars-javase" />
+
+ <target name="setup-manifestfile">
+ <property name="manifestfile" value="newtversion"/>
+ <copy file="${manifestfile}"
+ tofile="tempversion"
+ overwrite="true">
+ <filterset>
+ <filter token="VERSION" value="${newt.version}"/>
+ <filter token="SCM_BRANCH" value="${jogl.build.branch}"/>
+ <filter token="SCM_COMMIT" value="${jogl.build.commit}"/>
+ <filter token="BASEVERSION" value="${newt_base_version}"/>
+ </filterset>
+ </copy>
+ </target>
+
+ <target name="build-jars-awt" depends="setup-manifestfile" unless="setup.noAWT">
+ <jar manifest="tempversion" destfile="${newt.awt.jar}" filesonly="true">
+ <fileset dir="${classes}"
+ includes="${java.part.awt}"/>
+ </jar>
+ </target>
+
+ <target name="build-jars-opengl" depends="setup-manifestfile" unless="setup.noOpenGL">
+ <jar manifest="tempversion" destfile="${newt.ogl.jar}" filesonly="true">
+ <fileset dir="${classes}"
+ includes="${java.part.opengl}"/>
+ </jar>
+ <jar manifest="tempversion" destfile="${newt.hw.broadcomegl.jar}" filesonly="true">
+ <fileset dir="${classes}"
+ includes="${java.part.broadcomegl}"/>
+ </jar>
+ </target>
+
+ <target name="build-jars-driver" depends="setup-manifestfile">
+ <jar manifest="tempversion" destfile="${newt.hw.intelgdl.jar}" filesonly="true">
+ <fileset dir="${classes}"
+ includes="${java.part.intelgdl}"/>
+ </jar>
+ </target>
+
+ <target name="build-jars-desktop" depends="setup-manifestfile" unless="setup.nodesktop">
+ <jar manifest="tempversion" destfile="${newt.os.x11.jar}" filesonly="true">
+ <fileset dir="${classes}"
+ includes="${java.part.x11}"/>
+ </jar>
+ <jar manifest="tempversion" destfile="${newt.os.win.jar}" filesonly="true">
+ <fileset dir="${classes}"
+ includes="${java.part.windows}"/>
+ </jar>
+ <jar manifest="tempversion" destfile="${newt.os.osx.jar}" filesonly="true">
+ <fileset dir="${classes}"
+ includes="${java.part.macosx}"/>
+ </jar>
+ </target>
+
+ <target name="build-jars-all-awt" depends="setup-manifestfile" unless="setup.noAWT">
+ <jar manifest="tempversion" destfile="${newt.all.jar}" filesonly="true">
+ <fileset dir="${classes}">
+ <include name="com/jogamp/newt/**" />
+ <include name="jogamp/newt/**" />
+ </fileset>
+ </jar>
+ <jar manifest="tempversion" destfile="${newt.event.jar}" filesonly="true">
+ <fileset dir="${classes}">
+ <include name="com/jogamp/newt/Display*" />
+ <include name="com/jogamp/newt/Screen*" />
+ <include name="com/jogamp/newt/Window*" />
+ <include name="com/jogamp/newt/ScreenMode*" />
+ <include name="com/jogamp/newt/event/**" />
+ <include name="jogamp/newt/Debug*" />
+ </fileset>
+ </jar>
+ </target>
+
+ <target name="build-jars-all-noawt" depends="setup-manifestfile">
+ <jar manifest="tempversion" destfile="${newt.all-noawt.jar}" filesonly="true">
+ <fileset dir="${classes}"
+ excludes="${java.part.awt}">
+ <include name="com/jogamp/newt/**" />
+ <include name="jogamp/newt/**" />
+ </fileset>
+ </jar>
+ </target>
+
+ <target name="build-jars-javase" depends="setup-manifestfile,build-jars-awt,build-jars-opengl,build-jars-all-noawt,build-jars-all-awt,build-jars-desktop,build-jars-driver">
+ <jar manifest="tempversion" destfile="${newt.core.jar}" filesonly="true">
+ <fileset dir="${classes}"
+ includes="${java.part.core}"/>
+ </jar>
+ <jar manifest="tempversion" destfile="${build.newt}/newt-natives-${os.and.arch}.jar" filesonly="true">
+ <fileset dir="${obj.newt}">
+ <include name="*.${native.library.suffix}" />
+ </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" depends="init">
+ <!-- Build the general 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="${target.sourcelevel}"
+ linkoffline="${javadoc.link} 142-packages"
+ bottom="${javadoc.bottom}" >
+ <classpath refid="nativewindow_gluegen_jogl.classpath"/>
+ </javadoc>
+ </target>
+
+ <target name="javadoc.spec" depends="init">
+ <!-- Build the general 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="${target.sourcelevel}"
+ linkoffline="${javadoc.link} 142-packages"
+ bottom="${javadoc.bottom}" >
+ <classpath refid="nativewindow_gluegen_jogl.classpath"/>
+ </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}"
+ destdir="${javadoc.dev}" windowtitle="${javadoc.windowtitle}"
+ overview="${javadoc.overview}"
+ source="${target.sourcelevel}"
+ linkoffline="${javadoc.link} 142-packages"
+ bottom="${javadoc.bottom}" >
+ <classpath refid="nativewindow_gluegen_jogl.classpath"/>
+ </javadoc>
+ </target>
+
+ <target name="all.doc" description="Build NEWT 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.newt}" />
+ <fileset dir="${javadoc}" />
+ <fileset dir="${javadoc.spec}" />
+ <fileset dir="${javadoc.dev}" />
+ </delete>
+ </target>
+
+ <!-- ================================================================== -->
+ <!--
+ - Build everything.
+ -->
+ <target name="all" description="Build NEWT JAR file(s) and native libraries." depends="init,java.compile,c.build.newt,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="${newt.version}" file="${build.newt}/version.txt" />
+ </target>
+
+</project>