summaryrefslogtreecommitdiffstats
path: root/make
diff options
context:
space:
mode:
Diffstat (limited to 'make')
-rwxr-xr-xmake/Manifest2
-rwxr-xr-xmake/Manifest-rt3
-rwxr-xr-xmake/build.xml530
-rwxr-xr-xmake/dynlink-macosx.cfg25
-rwxr-xr-xmake/dynlink-unix-CustomJavaCode.java18
-rwxr-xr-xmake/dynlink-unix.cfg22
-rwxr-xr-xmake/dynlink-windows-CustomJavaCode.java11
-rwxr-xr-xmake/dynlink-windows.cfg30
-rwxr-xr-xmake/gluegen-cpptasks.xml755
-rw-r--r--make/gluegen.compiler.xml22
-rwxr-xr-xmake/gluegen.properties31
-rwxr-xr-xmake/lib/JOGLDocLinksGeneratorAndLibs.jarbin0 -> 566650 bytes
-rwxr-xr-xmake/lib/cdc_fp.jarbin0 -> 1494529 bytes
-rw-r--r--make/lib/cpptasks-patch.tar.gzbin0 -> 7743 bytes
-rwxr-xr-xmake/lib/cpptasks-version.txt4
-rwxr-xr-xmake/lib/cpptasks.jarbin0 -> 345356 bytes
-rwxr-xr-xmake/stub_includes/macosx/dynamic-linker.h46
-rwxr-xr-xmake/stub_includes/unix/dynamic-linker.h47
-rwxr-xr-xmake/stub_includes/windows/dynamic-linker.h32
-rwxr-xr-xmake/validate-properties.xml51
20 files changed, 1629 insertions, 0 deletions
diff --git a/make/Manifest b/make/Manifest
new file mode 100755
index 0000000..1677feb
--- /dev/null
+++ b/make/Manifest
@@ -0,0 +1,2 @@
+Main-Class: com.sun.gluegen.GlueGen
+Class-Path: antlr.jar
diff --git a/make/Manifest-rt b/make/Manifest-rt
new file mode 100755
index 0000000..da817d3
--- /dev/null
+++ b/make/Manifest-rt
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Implementation-Title: GlueGen Run-Time
+Implementation-Version: @BASEVERSION@
diff --git a/make/build.xml b/make/build.xml
new file mode 100755
index 0000000..2dadefc
--- /dev/null
+++ b/make/build.xml
@@ -0,0 +1,530 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ - Ant build for GlueGen and corresponding ANT tasks. Also builds
+ - JOGL-specific BuildStaticGLInfo and its corresponding ANT task.
+ -
+ - This build has been tested with ANT 1.6.2 and ANTLR 2.7.4.
+ -
+ - Public targets:
+ - all: clean and build GlueGen and GlueGen Ant task
+ - clean: clean all built
+ -->
+<project name="GlueGen" basedir="." default="all">
+
+ <!-- This is the version of GleuGen you are building -->
+ <property name="gluegen_base_version" value="1.0b07"/>
+
+ <!-- On jpackage.org-compatible systems, antlr.jar can be found in /usr/share/java -->
+ <available property="antlr.jar" file="/usr/share/java/antlr.jar"
+ value="/usr/share/java/antlr.jar"/>
+
+ <target name="load.user.properties" 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}/gluegen.properties" />
+ <property file="${user.properties.file}" />
+ <echo message="Loaded ${user.properties.file}." />
+ <fail message="antlr.jar was not specified in gluegen.properties. Please see README.txt for instructions" unless="antlr.jar"/>
+ <echo message="antlr.jar=${antlr.jar}" />
+ </target>
+
+ <condition property="rootrel.build" value="build">
+ <not>
+ <isset property="rootrel.build"/>
+ </not>
+ </condition>
+
+ <target name="setup-excludes-1" if="gluegen.nsig">
+ <property name="gluegen.excludes" value="" />
+ </target>
+
+ <target name="setup-excludes-2" unless="gluegen.nsig">
+ <property name="gluegen.excludes" value="com/sun/gluegen/runtime/BufferFactoryInternal.java,com/sun/gluegen/nativesig/**" />
+ </target>
+
+ <target name="init.javame.cdc.fp" if="isCDCFP">
+ <property name="javac.bootclasspath.jar" value="lib/cdc_fp.jar" />
+ </target>
+
+ <target name="setup.javase" unless="isCDCFP">
+ <copy file="../src/java/com/sun/gluegen/runtime/BufferFactory.java.javase" tofile="../${rootrel.build}/gensrc/java/com/sun/gluegen/runtime/BufferFactory.java" />
+ <copy file="../src/java/com/sun/gluegen/runtime/StructAccessor.java.javase" tofile="../${rootrel.build}/gensrc/java/com/sun/gluegen/runtime/StructAccessor.java" />
+ </target>
+
+ <target name="setup.javame.cdc.fp" if="isCDCFP">
+ <copy file="../src/java/com/sun/gluegen/runtime/BufferFactory.java.javame_cdc_fp" tofile="../${rootrel.build}/gensrc/java/com/sun/gluegen/runtime/BufferFactory.java" />
+ <copy file="../src/java/com/sun/gluegen/runtime/StructAccessor.java.javame_cdc_fp" tofile="../${rootrel.build}/gensrc/java/com/sun/gluegen/runtime/StructAccessor.java" />
+ </target>
+
+ <target name="init" depends="load.user.properties,setup-excludes-1,setup-excludes-2,init.javame.cdc.fp">
+ <!-- Declare all paths and user defined variables. -->
+
+ <!-- The source directories. -->
+ <property name="src.java" value="../src/java" />
+ <property name="build" value="../${rootrel.build}" />
+
+ <!-- The generated source directories. -->
+ <property name="src.generated" value="../${rootrel.build}/gensrc" />
+ <property name="src.generated.java" value="../${rootrel.build}/gensrc/java" />
+
+ <!-- The compiler output directories. -->
+ <property name="classes" value="${build}/classes" />
+
+ <!-- Call the external config validator script to make sure the config is ok and consistent -->
+ <ant antfile="validate-properties.xml" inheritall="true"/>
+
+ <!-- Create the required output directories. -->
+ <mkdir dir="${src.generated.java}" />
+ <mkdir dir="${classes}" />
+
+ <!-- Set up compilation for either Java SE or Java ME / CDC / FP. -->
+ <antcall target="setup.javase" inheritRefs="true" />
+ <antcall target="setup.javame.cdc.fp" inheritRefs="true" />
+
+ <!-- Create the classpath for ANTLR. This requires the user-defined
+ - "antlr.jar" property. -->
+ <path id="antlr.classpath">
+ <pathelement location="${antlr.jar}" />
+ </path>
+
+ <!-- The location of the GlueGen source and the C grammar files. -->
+ <property name="gluegen" value="${src.java}/com/sun/gluegen" />
+ <property name="c.grammar" value="${gluegen}/cgram" />
+ <property name="j.grammar" value="${gluegen}/jgram" />
+
+ <!-- The resulting location of the generated Java files from the
+ - C grammar via ANTLR. -->
+ <property name="gluegen.build" value="${src.generated.java}/com/sun/gluegen" />
+ <property name="generated.java.from.c.grammar" value="${gluegen.build}/cgram" />
+ <property name="generated.java.from.j.grammar" value="${gluegen.build}/jgram" />
+ </target>
+
+ <!--
+ - Using ANTLR generate the specified Java files.
+ -
+ - @param target the grammar file to process
+ - @param output.dir the directory to write the generated files to. If
+ - the directory does not exist, it will be created.
+ -->
+ <target name="generate.grammar">
+ <!-- Generate the Java files -->
+ <antlr target="${output.dir}/${target}" outputdirectory="${output.dir}">
+ <classpath refid="antlr.classpath" />
+ </antlr>
+ </target>
+
+ <!--
+ - Using ANTLR generate the specified Java files with an overridden
+ - grammar file.
+ -
+ - @param target the grammar file to process
+ - @param glib the overridding grammar file
+ - @param output.dir the directory to write the generated files to. If
+ - the directory does not exist, it will be created.
+ -->
+ <target name="generate.c.grammar.glib">
+ <!-- Generate the Java files -->
+ <antlr target="${output.dir}/${target}" glib="${output.dir}/${glib}" outputdirectory="${output.dir}">
+ <classpath refid="antlr.classpath" />
+ </antlr>
+ </target>
+
+ <!-- Use GlueGen to generate the source code for the NativeLibrary
+ implementation. Note that to make the build process simpler (in
+ particular, the nightly builds) we do not do this every time we
+ run the build, but instead check in the generated sources to
+ the source tree. -->
+
+ <property name="gluegen.root" value="../" />
+ <import file="gluegen-cpptasks.xml" />
+ <target name="generate.nativelibrary.sources" depends="init" >
+ <!-- Define the appropriate include paths -->
+ <dirset id="stub.includes.fileset.windows" dir=".">
+ <include name="stub_includes/windows/**" />
+ </dirset>
+ <dirset id="stub.includes.fileset.unix" dir=".">
+ <include name="stub_includes/unix/**" />
+ </dirset>
+ <dirset id="stub.includes.fileset.macosx" dir=".">
+ <include name="stub_includes/macosx/**" />
+ </dirset>
+ <!-- Define the classpath we should use -->
+ <path id="gluegen.classpath" >
+ <pathelement location="${classes}" />
+ <pathelement location="${antlr.jar}" />
+ </path>
+ <!-- Define the GlueGen task we just built -->
+ <taskdef name="gluegen" classname="com.sun.gluegen.ant.GlueGenTask"
+ classpathref="gluegen.classpath" />
+
+ <!-- Execute it against all of the OSs' header files -->
+ <gluegen src="stub_includes/windows/dynamic-linker.h"
+ config="dynlink-windows.cfg"
+ includeRefId="stub.includes.fileset.windows"
+ emitter="com.sun.gluegen.JavaEmitter">
+ <classpath refid="gluegen.classpath" />
+ </gluegen>
+ <gluegen src="stub_includes/unix/dynamic-linker.h"
+ config="dynlink-unix.cfg"
+ includeRefId="stub.includes.fileset.unix"
+ emitter="com.sun.gluegen.JavaEmitter">
+ <classpath refid="gluegen.classpath" />
+ </gluegen>
+ <gluegen src="stub_includes/macosx/dynamic-linker.h"
+ config="dynlink-macosx.cfg"
+ includeRefId="stub.includes.fileset.macosx"
+ emitter="com.sun.gluegen.JavaEmitter">
+ <classpath refid="gluegen.classpath" />
+ </gluegen>
+ </target>
+
+ <!-- ================================================================== -->
+ <!--
+ - Set up java.home.dir appropriately on all platforms.
+ -->
+ <target name="setup.java.home.dir.nonmacosx" depends="load.user.properties" unless="isOSX">
+ <!-- java home dir is up one directory as java.home points to '<java-install-dir>/jre' -->
+ <property name="java.home.dir" value="${java.home}/.." />
+ </target>
+ <target name="setup.java.home.dir.macosx" depends="load.user.properties" if="isOSX">
+ <property name="java.home.dir" value="/System/Library/Frameworks/JavaVM.framework/Home" />
+ </target>
+ <target name="setup.java.home.dir" depends="setup.java.home.dir.nonmacosx,setup.java.home.dir.macosx" >
+ <property name="java.includes.dir" value="${java.home.dir}/include" />
+ </target>
+
+ <!-- ================================================================== -->
+ <!--
+ - Compile the native C code for GlueGen's dynamic linker interface.
+ -->
+
+ <target name="declare.win32.vc6" if="isVC6">
+ <echo message="Win32.VC6" />
+ <property name="compiler.cfg.id" value="compiler.cfg.win32.msvc" />
+ <property name="linker.cfg.id" value="linker.cfg.win32.msvc" />
+ </target>
+
+ <target name="declare.win32.vc7" if="isVC7">
+ <echo message="Win32.VC7" />
+ <property name="compiler.cfg.id" value="compiler.cfg.win32.msvc" />
+ <property name="linker.cfg.id" value="linker.cfg.win32.msvc" />
+ </target>
+
+ <target name="declare.win32.vc8" if="isVC8">
+ <echo message="Win32.VC8" />
+ <property name="compiler.cfg.id" value="compiler.cfg.win32.msvc" />
+ <property name="linker.cfg.id" value="linker.cfg.win32.msvc" />
+ </target>
+
+ <target name="declare.win32.vc8_x64" if="isVC8_X64">
+ <echo message="Win32.VC8_X64" />
+ <property name="compiler.cfg.id" value="compiler.cfg.win32.msvc" />
+ <property name="linker.cfg.id" value="linker.cfg.win32.msvc" />
+ </target>
+
+ <target name="declare.win32.vc9" if="isVC9">
+ <echo message="Win32.VC9" />
+ <property name="compiler.cfg.id" value="compiler.cfg.win32.msvc" />
+ <property name="linker.cfg.id" value="linker.cfg.win32.msvc" />
+ </target>
+
+ <target name="declare.win32.mingw" if="isMingW">
+ <echo message="Win32.MingW" />
+ <property name="compiler.cfg.id" value="compiler.cfg.win32.mingw" />
+ <property name="linker.cfg.id" value="linker.cfg.win32.mingw" />
+ </target>
+
+ <target name="declare.win32" depends="declare.win32.vc6,declare.win32.vc7,declare.win32.vc8,declare.win32.vc8_x64,declare.win32.vc9,declare.win32.mingw" if="isWindows" >
+ <property name="c.src.dir" value="windows" />
+ <property name="java.includes.dir.platform" value="${java.includes.dir}/win32" />
+ </target>
+
+ <target name="declare.linux.x86" if="isLinuxX86">
+ <echo message="Linux.x86" />
+ <property name="compiler.cfg.id" value="compiler.cfg.linux" />
+ <property name="linker.cfg.id" value="linker.cfg.linux" />
+ </target>
+
+ <target name="declare.linux.amd64" if="isLinuxAMD64">
+ <echo message="Linux.AMD64" />
+ <property name="compiler.cfg.id" value="compiler.cfg.linux.amd64" />
+ <property name="linker.cfg.id" value="linker.cfg.linux.amd64" />
+ </target>
+
+ <target name="declare.linux.ia64" if="isLinuxIA64">
+ <echo message="Linux.IA64" />
+ <property name="compiler.cfg.id" value="compiler.cfg.linux" />
+ <property name="linker.cfg.id" value="linker.cfg.linux" />
+ </target>
+
+ <target name="declare.linux" depends="declare.linux.x86,declare.linux.amd64,declare.linux.ia64" if="isLinux" >
+ <property name="c.src.dir" value="unix" />
+ <property name="java.includes.dir.platform" value="${java.includes.dir}/linux" />
+ </target>
+
+ <target name="declare.solaris32" if="isSolaris32Bit">
+ <echo message="Solaris" />
+ <property name="compiler.cfg.id" value="compiler.cfg.solaris" />
+ <property name="linker.cfg.id" value="linker.cfg.solaris" />
+ </target>
+
+ <target name="declare.solarisSparcv9" if="isSolarisSparcv9">
+ <echo message="SolarisSparcv9" />
+ <property name="compiler.cfg.id" value="compiler.cfg.solaris.sparcv9" />
+ <property name="linker.cfg.id" value="linker.cfg.solaris.sparcv9" />
+ </target>
+
+ <target name="declare.solarisAMD64" if="isSolarisAMD64">
+ <echo message="SolarisAMD64" />
+ <property name="compiler.cfg.id" value="compiler.cfg.solaris.amd64" />
+ <property name="linker.cfg.id" value="linker.cfg.solaris.amd64" />
+ </target>
+
+ <target name="declare.solaris" depends="declare.solaris32,declare.solarisSparcv9,declare.solarisAMD64" if="isSolaris" >
+ <property name="c.src.dir" value="unix" />
+ <property name="java.includes.dir.platform" value="${java.includes.dir}/solaris" />
+ </target>
+
+ <target name="declare.macosx" if="isOSX">
+ <echo message="MacOSX" />
+ <property name="compiler.cfg.id" value="compiler.cfg.macosx" />
+ <property name="linker.cfg.id" value="linker.cfg.macosx" />
+ <property name="c.src.dir" value="macosx" />
+ <property name="java.includes.dir.platform" value="/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Headers" />
+ </target>
+
+ <target name="declare.freebsd" if="isFreeBSD">
+ <echo message="FreeBSD" />
+ <property name="compiler.cfg.id" value="compiler.cfg.freebsd" />
+ <property name="linker.cfg.id" value="linker.cfg.linux" />
+ <property name="c.src.dir" value="unix" />
+ <property name="java.includes.dir.freebsd" value="${java.includes.dir}/freebsd" />
+ </target>
+
+ <target name="declare.hpux" if="isHPUX">
+ <echo message="HP-UX" />
+ <property name="compiler.cfg.id" value="compiler.cfg.hpux" />
+ <property name="linker.cfg.id" value="linker.cfg.hpux" />
+ <property name="c.src.dir" value="unix" />
+ <property name="java.includes.dir.hpux" value="${java.includes.dir}/hp-ux" />
+ </target>
+
+ <target name="c.configure" depends="gluegen.cpptasks.detect.os,gluegen.cpptasks.detect.compiler,setup.java.home.dir,declare.win32,declare.linux,declare.solaris,declare.macosx,declare.freebsd,declare.hpux,gluegen.cpptasks.configure.compiler" unless="build.javaonly" >
+ <!-- Common properties -->
+ <property name="java.includes.dir" value="${java.home.dir}/include" /> <!-- NOTE: this MUST be relative for FileSet -->
+
+ <property name="c.compiler.src.files" value="src/native/${c.src.dir}/*.c" />
+
+ <property name="output.lib.name" value="gluegen-rt" />
+ </target>
+
+ <target name="c.rename.lib.mingw" if="isMingW">
+ <!-- FIXME: this is a hack; the cpptask should have an option to change the
+ suffix or at least understand the override from .so to .dll -->
+ <move file="../${rootrel.build}/obj/libgluegen-rt.so" tofile="../${rootrel.build}/obj/gluegen-rt.dll" />
+ </target>
+
+ <target name="c.rename.lib.macosx" if="isOSX">
+ <!-- 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 -->
+ <move file="../${rootrel.build}/obj/libgluegen-rt.dylib" tofile="../${rootrel.build}/obj/libgluegen-rt.jnilib" />
+ </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="../${rootrel.build}/obj" dllname="gluegen-rt" />
+ </target>
+
+ <target name="c.build" depends="c.configure" unless="build.javaonly" >
+ <fail message="Requires '${c.compiler.src.files}'" unless="c.compiler.src.files"/>
+ <fail message="Requires '${compiler.cfg.id}'" unless="compiler.cfg.id"/>
+ <fail message="Requires '${linker.cfg.id}'" unless="linker.cfg.id"/>
+ <fail message="Requires '${output.lib.name}'" unless="output.lib.name"/>
+
+ <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>
+
+ <mkdir dir="../${rootrel.build}/obj" />
+
+ <echo message="Compiling ${c.compiler.src.files}" />
+ <echo message="user.dir=${user.dir}" />
+
+ <cc outtype="shared"
+ objdir="../${rootrel.build}/obj"
+ outfile="../${rootrel.build}/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="GlueGen"
+ productversion="x.y.z"
+ description="Description"
+ fileversion="x.y.z"
+ filecomments="File Comment" /-->
+
+ <fileset dir="..">
+ <patternset>
+ <include name="${c.compiler.src.files}" />
+ </patternset>
+ </fileset>
+
+ <compiler extends="${compiler.cfg.id}" >
+ <sysincludepath path="${java.includes.dir}"/>
+ <sysincludepath path="${java.includes.dir.platform}"/>
+ </compiler>
+
+ <linker extends="${linker.cfg.id}" />
+ </cc>
+
+ <antcall target="c.rename.lib.mingw" inheritRefs="true" />
+ <antcall target="c.rename.lib.macosx" inheritRefs="true" />
+ <antcall target="c.manifest" inheritRefs="true" />
+ <!-- Create Java Web Start jar file from built file -->
+ <jar destfile="../${rootrel.build}/gluegen-rt-natives-${os.and.arch}.jar">
+ <fileset dir="../${rootrel.build}/obj">
+ <include name="*gluegen-rt.${native.library.suffix}" />
+ </fileset>
+ </jar>
+ </target>
+
+ <target name="build.nativelibrary" unless="build.javaonly" >
+ <antcall target="c.build" inheritRefs="true" />
+ </target>
+
+
+ <target name="gluegen.rebuild.gluegen-rt" if="isCDCFP">
+ <!-- Re-build just the gluegen-rt.jar classes using the Java ME
+ boot classes, if they're in use. -->
+ <delete dir="../${rootrel.build}/classes/com/sun/gluegen/runtime" />
+ <javac destdir="${classes}"
+ source="1.4"
+ debug="true"
+ debuglevel="source,lines"
+ excludes="${gluegen.excludes}"
+ bootclasspath="${javac.bootclasspath.jar}">
+ <src path="${src.java}" />
+ <src path="${src.generated.java}" />
+ <classpath refid="antlr.classpath" />
+ </javac>
+ </target>
+
+ <!-- ================================================================== -->
+ <!--
+ - Build GlueGen.
+ -->
+ <target name="gluegen.build" depends="init">
+ <!-- Because ANTLR looks for importVocab files in the current
+ working directory, it likes to have all of its files,
+ including supergrammars, in one place, so copy all of the
+ grammars to the output directory up front so we don't put
+ temporary files into the source tree -->
+ <mkdir dir="${generated.java.from.c.grammar}" />
+ <copy todir="${generated.java.from.c.grammar}">
+ <fileset dir="${c.grammar}">
+ <include name="*.g" />
+ </fileset>
+ </copy>
+ <mkdir dir="${generated.java.from.j.grammar}" />
+ <copy todir="${generated.java.from.j.grammar}">
+ <fileset dir="${j.grammar}">
+ <include name="*.g" />
+ </fileset>
+ </copy>
+
+ <!-- Generate the Java files from the C grammar using ANTLR. -->
+ <antcall target="generate.grammar">
+ <param name="output.dir" value="${generated.java.from.c.grammar}" />
+ <param name="target" value="StdCParser.g" />
+ </antcall>
+ <antcall target="generate.c.grammar.glib">
+ <param name="output.dir" value="${generated.java.from.c.grammar}" />
+ <param name="target" value="GnuCParser.g" />
+ <param name="glib" value="StdCParser.g" />
+ </antcall>
+ <antcall target="generate.grammar">
+ <param name="output.dir" value="${generated.java.from.c.grammar}" />
+ <param name="target" value="GnuCTreeParser.g" />
+ </antcall>
+ <antcall target="generate.c.grammar.glib">
+ <param name="output.dir" value="${generated.java.from.c.grammar}" />
+ <param name="target" value="GnuCEmitter.g" />
+ <param name="glib" value="GnuCTreeParser.g" />
+ </antcall>
+ <antcall target="generate.c.grammar.glib">
+ <param name="output.dir" value="${generated.java.from.c.grammar}" />
+ <param name="target" value="HeaderParser.g" />
+ <param name="glib" value="GnuCTreeParser.g" />
+ </antcall>
+ <antcall target="generate.grammar">
+ <param name="output.dir" value="${generated.java.from.j.grammar}" />
+ <param name="target" value="JavaParser.g" />
+ </antcall>
+
+ <!-- Build GlueGen using the generated Java files along with the
+ - original source. -->
+ <javac destdir="${classes}"
+ source="1.4"
+ debug="true"
+ debuglevel="source,lines"
+ excludes="${gluegen.excludes}">
+ <src path="${src.java}" />
+ <src path="${src.generated.java}" />
+ <classpath refid="antlr.classpath" />
+ </javac>
+
+ <!-- Re-build just the gluegen-rt.jar classes using the Java ME
+ boot classes, if they're in use. -->
+ <antcall target="gluegen.rebuild.gluegen-rt" inheritRefs="true" />
+
+ <!-- Build the (native code) NativeLibrary support for
+ gluegen-rt.jar using the just-built GlueGen. -->
+ <antcall target="build.nativelibrary" inheritRefs="true" />
+
+ <!-- Build gluegen.jar. -->
+ <jar destfile="${build}/gluegen.jar" manifest="Manifest">
+ <fileset dir="${classes}">
+ <include name="**/*.class" />
+ </fileset>
+ </jar>
+
+ <!-- Build gluegen-rt.jar. -->
+ <copy file="Manifest-rt"
+ tofile="${build}/Manifest-rt.temp"
+ overwrite="true">
+ <filterset>
+ <filter token="BASEVERSION" value="${gluegen_base_version}"/>
+ </filterset>
+ </copy>
+ <jar destfile="${build}/gluegen-rt.jar" manifest="${build}/Manifest-rt.temp">
+ <fileset dir="${classes}">
+ <include name="com/sun/gluegen/runtime/*.class" />
+ <include name="com/sun/gluegen/runtime/opengl/*.class" />
+ </fileset>
+ </jar>
+
+ <!-- Copy antlr.jar into build directory for convenience so
+ gluegen.jar can be run via "java -jar". antlr.jar is
+ referenced via a Class-Path entry in the Manifest of
+ gluegen.jar. -->
+ <copy file="${antlr.jar}" todir="${build}" />
+ </target>
+
+ <target name="all" depends="gluegen.build" />
+
+ <target name="clean">
+ <delete includeEmptyDirs="true" quiet="true">
+ <fileset dir="../${rootrel.build}" />
+ </delete>
+ </target>
+</project>
diff --git a/make/dynlink-macosx.cfg b/make/dynlink-macosx.cfg
new file mode 100755
index 0000000..8ba4c51
--- /dev/null
+++ b/make/dynlink-macosx.cfg
@@ -0,0 +1,25 @@
+Style AllStatic
+JavaClass MacOSXDynamicLinkerImpl
+Package com.sun.gluegen.runtime
+Implements MacOSXDynamicLinkerImpl DynamicLinker
+JavaOutputDir ../src/java
+NativeOutputDir ../src/native/macosx
+HierarchicalNativeOutput false
+
+# Note that we can use the same CustomJavaCode as the unix
+# implementation, but some of the constants (e.g. RTLD_GLOBAL) resolve
+# to different values
+IncludeAs CustomJavaCode MacOSXDynamicLinkerImpl dynlink-unix-CustomJavaCode.java
+CustomCCode #include <dlfcn.h>
+CustomCCode #include </usr/include/machine/types.h>
+
+ArgumentIsString dlopen 0
+ArgumentIsString dlsym 1
+ReturnsString dlerror
+Opaque long void*
+
+# Hide the platform-specific functions
+AccessControl dlopen PRIVATE
+AccessControl dlsym PRIVATE
+AccessControl dlclose PRIVATE
+AccessControl dlerror PRIVATE
diff --git a/make/dynlink-unix-CustomJavaCode.java b/make/dynlink-unix-CustomJavaCode.java
new file mode 100755
index 0000000..5d10edf
--- /dev/null
+++ b/make/dynlink-unix-CustomJavaCode.java
@@ -0,0 +1,18 @@
+public long openLibrary(String pathname) {
+ // Note we use RTLD_GLOBAL visibility to allow this functionality to
+ // be used to pre-resolve dependent libraries of JNI code without
+ // requiring that all references to symbols in those libraries be
+ // looked up dynamically via the ProcAddressTable mechanism; in
+ // other words, one can actually link against the library instead of
+ // having to dlsym all entry points. System.loadLibrary() uses
+ // RTLD_LOCAL visibility so can't be used for this purpose.
+ return dlopen(pathname, RTLD_LAZY | RTLD_GLOBAL);
+}
+
+public long lookupSymbol(long libraryHandle, String symbolName) {
+ return dlsym(libraryHandle, symbolName);
+}
+
+public void closeLibrary(long libraryHandle) {
+ dlclose(libraryHandle);
+}
diff --git a/make/dynlink-unix.cfg b/make/dynlink-unix.cfg
new file mode 100755
index 0000000..d762c8f
--- /dev/null
+++ b/make/dynlink-unix.cfg
@@ -0,0 +1,22 @@
+Style AllStatic
+JavaClass UnixDynamicLinkerImpl
+Package com.sun.gluegen.runtime
+Implements UnixDynamicLinkerImpl DynamicLinker
+JavaOutputDir ../src/java
+NativeOutputDir ../src/native/unix
+HierarchicalNativeOutput false
+
+IncludeAs CustomJavaCode UnixDynamicLinkerImpl dynlink-unix-CustomJavaCode.java
+CustomCCode #include <dlfcn.h>
+CustomCCode #include <inttypes.h>
+
+ArgumentIsString dlopen 0
+ArgumentIsString dlsym 1
+ReturnsString dlerror
+Opaque long void*
+
+# Hide the platform-specific functions
+AccessControl dlopen PRIVATE
+AccessControl dlsym PRIVATE
+AccessControl dlclose PRIVATE
+AccessControl dlerror PRIVATE
diff --git a/make/dynlink-windows-CustomJavaCode.java b/make/dynlink-windows-CustomJavaCode.java
new file mode 100755
index 0000000..4101f4c
--- /dev/null
+++ b/make/dynlink-windows-CustomJavaCode.java
@@ -0,0 +1,11 @@
+public long openLibrary(String libraryName) {
+ return LoadLibraryW(libraryName);
+}
+
+public long lookupSymbol(long libraryHandle, String symbolName) {
+ return GetProcAddressA(libraryHandle, symbolName);
+}
+
+public void closeLibrary(long libraryHandle) {
+ FreeLibrary(libraryHandle);
+}
diff --git a/make/dynlink-windows.cfg b/make/dynlink-windows.cfg
new file mode 100755
index 0000000..fe69e1c
--- /dev/null
+++ b/make/dynlink-windows.cfg
@@ -0,0 +1,30 @@
+Style AllStatic
+JavaClass WindowsDynamicLinkerImpl
+Package com.sun.gluegen.runtime
+Implements WindowsDynamicLinkerImpl DynamicLinker
+JavaOutputDir ../src/java
+NativeOutputDir ../src/native/windows
+HierarchicalNativeOutput false
+
+IncludeAs CustomJavaCode WindowsDynamicLinkerImpl dynlink-windows-CustomJavaCode.java
+CustomCCode #include <windows.h>
+CustomCCode /* This typedef is apparently needed for compilers before VC8,
+CustomCCode and for the embedded ARM compilers we're using */
+CustomCCode #if (_MSC_VER < 1400) || defined(UNDER_CE)
+CustomCCode typedef int intptr_t;
+CustomCCode #endif
+CustomCCode /* GetProcAddress doesn't exist in A/W variants under desktop Windows */
+CustomCCode #ifndef UNDER_CE
+CustomCCode #define GetProcAddressA GetProcAddress
+CustomCCode #endif
+
+ArgumentIsString LoadLibraryW 0
+ArgumentIsString GetProcAddressA 1
+Opaque long HANDLE
+Opaque long PROC
+
+# Hide the platform-specific functions
+AccessControl GetLastError PRIVATE
+AccessControl LoadLibraryW PRIVATE
+AccessControl GetProcAddressA PRIVATE
+AccessControl FreeLibrary PRIVATE
diff --git a/make/gluegen-cpptasks.xml b/make/gluegen-cpptasks.xml
new file mode 100755
index 0000000..b64abfc
--- /dev/null
+++ b/make/gluegen-cpptasks.xml
@@ -0,0 +1,755 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ - Ant project file which sets up cpptasks to compile native code
+ - generated by GlueGen for multiple supported platforms. This Ant
+ - project file is not intended to be executed standalone, but imported
+ - by other projects which use GlueGen to generate native code and
+ - need to compile that native code.
+ -
+ - Before importing this file, the property "gluegen.root" must be
+ - defined; this is the relative path from the current working
+ - directory (e.g., from which the parent project's build.xml is being
+ - executed) to the top of the checked-out GlueGen workspace.
+ -
+ - This Ant project file depends on the following properties being set
+ - externally:
+ -
+ - win32.c.compiler (required to be set on Windows):
+ - one of "vc6", "vc7", "vc8", or "mingw".
+ - c.compiler.debug:
+ - set to "true" if debug version of the compiled
+ - C code is desired.
+ - macosx64:
+ - set to "true" if 64-bit universal / fat binaries are desired
+ - on Mac OS X. Requires support for cross-compilation from the
+ - underlying C compiler.
+ -
+ - The gluegen.cpptasks.detect.os target sets the following
+ - properties appropriately. They are only set to "true" if the OS/CPU
+ - configuration is exactly as specified.
+ -
+ - isFreeBSD
+ - isHPUX
+ - isIA64
+ - isLinux
+ - isLinuxAMD64
+ - isLinuxIA64
+ - isLinuxX86
+ - isOSX
+ - isOSXPPC
+ - isOSXUniversal (if macosxfat=true)
+ - isSolaris
+ - isSolaris32Bit
+ - isSolarisAMD64
+ - isSolarisSparc
+ - isSolarisSparcv9
+ - isSolarisX86
+ - isUnix
+ - isWindows
+ - isWindowsX86
+ - isWindowsAMD64
+ - isX11
+ -
+ - It also sets the following properties which are useful for
+ - building native library jar files for Java Web Start and
+ - understanding on what OS and architecture things are being built.
+ -
+ - os.and.arch (i.e., "windows-i586")
+ - native.library.suffix (i.e.., "so", "dll")
+ -
+ - The gluegen.cpptasks.setup.compiler target is the preferred target
+ - to depend upon in your build.xml. It depends on gluegen.cpptasks.detect.compiler
+ - and gluegen.cpptasks.configure.compiler, below, and also sets up the following
+ - compiler and linker IDs for the host platform:
+ -
+ - compiler.cfg.id.base
+ - linker.cfg.id.base
+ -
+ - and the following properties:
+ -
+ - java.home.dir : path to the JDK home directory
+ - java.includes.dir : path to the JNI headers (.../jdk/include)
+ - java.includes.dir.platform : path to the platform JNI headers (.../jdk/include/linux)
+ - java.lib.dir.platform : path to the Java library dir (libjawt.so, etc.)
+ -
+ - If your project requires only minimal changes to the compiler
+ - configuration, you may be able to simply refer to the
+ - gluegen.cpptasks.setup.compiler target and avoid any platform-
+ - specific compiler subclassing.
+ -
+ - The gluegen.cpptasks.detect.compiler target sets the following
+ - properties appropriately. They are only set to "true" if the OS/compiler
+ - configuration is exactly as specified.
+ -
+ - isVCFamily
+ - isVC6
+ - isVC7
+ - isVC8
+ - isVC8_X64
+ - isVC8Family (= isVC8 || isVC8_X64 || isVC9) (requires manifest in DLL)
+ - isVC9
+ - isMingW
+ -
+ - The gluegen.cpptasks.configure.compiler target initializes several
+ - cpptasks compiler and linker configurations designed to support
+ - compilation of C code on multiple platforms. Generally if it is
+ - necessary to set up include paths, link paths, etc., then these
+ - compilers and linkers will need to be subclassed in sub-projects.
+ - However, at least the base-level configuration does not need to
+ - be replicated.
+ -
+ - The following compiler and linker IDs are defined by this target:
+ -
+ - compiler.cfg.linux
+ - compiler.cfg.linux.amd64
+ - compiler.cfg.solaris
+ - compiler.cfg.solaris.sparcv9
+ - compiler.cfg.solaris.amd64
+ - compiler.cfg.win32.mingw
+ - compiler.cfg.win32.msvc
+ - compiler.cfg.macosx
+ - compiler.cfg.freebsd
+ - compiler.cfg.hpux
+ - linker.cfg.linux
+ - linker.cfg.linux.amd64
+ - linker.cfg.solaris
+ - linker.cfg.solaris.sparcv9
+ - linker.cfg.solaris.amd64
+ - linker.cfg.win32.mingw
+ - linker.cfg.win32.msvc
+ - linker.cfg.macosx
+ - linker.cfg.hpux
+ -
+ - This project file also defines a macrodef called "msvc.manifest"
+ - which helps insert manifests into DLLs compiled with MSVC 8.0 and
+ - later. Example usage is:
+ - &lt;msvc.manifest objdir="${obj}" dllname="gluegen-rt" /&gt;
+ -->
+<project name="GlueGen-cpptasks" basedir=".">
+ <!-- import cpptasks -->
+ <typedef resource="net/sf/antcontrib/cpptasks/antlib.xml" classpath="${gluegen.root}/make/lib/cpptasks.jar"/>
+
+ <available file="${user.home}/gluegen.compiler.xml" property="gluegen.compiler.present"/>
+ <import file="${user.home}/gluegen.compiler.xml" optional="true" />
+
+ <!-- Detect OS and compiler configuration -->
+ <target name="gluegen.cpptasks.detect.os.1" unless="gluegen.cpptasks.detected.os">
+ <condition property="isOSX">
+ <and>
+ <os family="mac"/>
+ <os family="unix"/>
+ </and>
+ </condition>
+ <!-- Need a way to be able to disable the macosx64 property specification in a build.xml -->
+ <condition property="use.macosx64">
+ <istrue value="${macosx64}" />
+ </condition>
+ <condition property="isUnix">
+ <and>
+ <os family="unix" />
+ <not>
+ <os family="mac" />
+ </not>
+ </and>
+ </condition>
+ <condition property="isLinux">
+ <os name="Linux" />
+ </condition>
+ <condition property="isSolaris">
+ <os name="SunOS" />
+ </condition>
+ <condition property="isWindows">
+ <os family="windows" />
+ </condition>
+ <condition property="isWindowsX86">
+ <and>
+ <istrue value="${isWindows}" />
+ <or>
+ <os arch="i386" />
+ <os arch="x86" />
+ </or>
+ </and>
+ </condition>
+ <condition property="isWindowsAMD64">
+ <and>
+ <istrue value="${isWindows}" />
+ <os arch="amd64" />
+ </and>
+ </condition>
+ <condition property="isFreeBSD">
+ <os name="FreeBSD" />
+ </condition>
+ <condition property="isHPUX">
+ <os name="HP-UX" />
+ </condition>
+ <condition property="isLinuxX86">
+ <and>
+ <istrue value="${isLinux}" />
+ <or>
+ <os arch="i386" />
+ <os arch="x86" />
+ </or>
+ </and>
+ </condition>
+ <condition property="isLinuxAMD64">
+ <and>
+ <istrue value="${isLinux}" />
+ <or>
+ <os arch="AMD64" />
+ <os arch="x86_64" />
+ </or>
+ </and>
+ </condition>
+ <condition property="isLinuxIA64">
+ <and>
+ <istrue value="${isLinux}" />
+ <os arch="IA64" />
+ </and>
+ </condition>
+ <condition property="isIA64">
+ <os arch="IA64" />
+ </condition>
+ <condition property="isSolaris32Bit">
+ <and>
+ <istrue value="${isSolaris}" />
+ <or>
+ <os arch="i386" />
+ <os arch="x86" />
+ <os arch="sparc" />
+ </or>
+ </and>
+ </condition>
+ <condition property="isSolarisSparc">
+ <and>
+ <istrue value="${isSolaris}" />
+ <os arch="sparc" />
+ </and>
+ </condition>
+ <condition property="isSolarisSparcv9">
+ <and>
+ <istrue value="${isSolaris}" />
+ <os arch="sparcv9" />
+ </and>
+ </condition>
+ <condition property="isSolarisAMD64">
+ <and>
+ <istrue value="${isSolaris}" />
+ <os arch="AMD64" />
+ </and>
+ </condition>
+ <condition property="isSolarisX86">
+ <and>
+ <istrue value="${isSolaris}" />
+ <or>
+ <os arch="i386" />
+ <os arch="x86" />
+ </or>
+ </and>
+ </condition>
+
+ <!-- Note: assumes X11 platform by default -->
+ <condition property="isX11">
+ <and>
+ <isfalse value="${isWindows}" />
+ <isfalse value="${isOSX}" />
+ </and>
+ </condition>
+
+ <condition property="solaris.cpu" value="sparc">
+ <os name="SunOS" arch="sparc" />
+ </condition>
+ <condition property="solaris.cpu" value="sparcv9">
+ <os name="SunOS" arch="sparcv9" />
+ </condition>
+ <condition property="solaris.cpu" value="i386">
+ <os name="SunOS" arch="x86" />
+ </condition>
+ <condition property="solaris.cpu" value="amd64">
+ <os name="SunOS" arch="amd64" />
+ </condition>
+
+ <echo message="FreeBSD=${isFreeBSD}" />
+ <echo message="HPUX=${isHPUX}" />
+ <echo message="IA64=${isIA64}" />
+ <echo message="Linux=${isLinux}" />
+ <echo message="LinuxAMD64=${isLinuxAMD64}" />
+ <echo message="LinuxIA64=${isLinuxIA64}" />
+ <echo message="LinuxX86=${isLinuxX86}" />
+ <echo message="OS X=${isOSX}" />
+ <echo message="Solaris=${isSolaris}" />
+ <echo message="Solaris32Bit=${isSolaris32Bit}" />
+ <echo message="SolarisSparc=${isSolarisSparc}" />
+ <echo message="SolarisSparcv9=${isSolarisSparcv9}" />
+ <echo message="SolarisAMD64=${isSolarisAMD64}" />
+ <echo message="SolarisX86=${isSolarisX86}" />
+ <echo message="Unix=${isUnix}" />
+ <echo message="Windows=${isWindows}" />
+ <echo message="X11=${isX11}" />
+ </target>
+
+ <target name="gluegen.cpptasks.detect.os.freebsd" unless="gluegen.cpptasks.detected.os.2" if="isFreeBSD">
+ <property name="os.and.arch" value="freebsd-i586" />
+ </target>
+
+ <target name="gluegen.cpptasks.detect.os.hpux" unless="gluegen.cpptasks.detected.os.2" if="isHPUX">
+ <property name="os.and.arch" value="hpux-hppa" />
+ </target>
+
+ <target name="gluegen.cpptasks.detect.os.linux.amd64" unless="gluegen.cpptasks.detected.os.2" if="isLinuxAMD64">
+ <property name="os.and.arch" value="linux-amd64" />
+ </target>
+
+ <target name="gluegen.cpptasks.detect.os.linux.ia64" unless="gluegen.cpptasks.detected.os.2" if="isLinuxIA64">
+ <property name="os.and.arch" value="linux-ia64" />
+ </target>
+
+ <target name="gluegen.cpptasks.detect.os.linux.x86" unless="gluegen.cpptasks.detected.os.2" if="isLinuxX86">
+ <property name="os.and.arch" value="linux-i586" />
+ </target>
+
+ <target name="gluegen.cpptasks.detect.os.linux" depends="gluegen.cpptasks.detect.os.linux.amd64,gluegen.cpptasks.detect.os.linux.ia64,gluegen.cpptasks.detect.os.linux.x86" unless="gluegen.cpptasks.detected.os.2" />
+
+ <target name="gluegen.cpptasks.detect.os.osx" unless="gluegen.cpptasks.detected.os.2" if="isOSX">
+ <property name="native.library.suffix" value="*lib" />
+ <property name="os.and.arch" value="macosx-universal" />
+ </target>
+
+ <target name="gluegen.cpptasks.detect.os.solaris.sparc" unless="gluegen.cpptasks.detected.os.2" if="isSolarisSparc">
+ <property name="os.and.arch" value="solaris-sparc" />
+ </target>
+
+ <target name="gluegen.cpptasks.detect.os.solaris.sparcv9" unless="gluegen.cpptasks.detected.os.2" if="isSolarisSparcv9">
+ <property name="os.and.arch" value="solaris-sparcv9" />
+ </target>
+
+ <target name="gluegen.cpptasks.detect.os.solaris.amd64" unless="gluegen.cpptasks.detected.os.2" if="isSolarisAMD64">
+ <property name="os.and.arch" value="solaris-amd64" />
+ </target>
+
+ <target name="gluegen.cpptasks.detect.os.solaris.x86" unless="gluegen.cpptasks.detected.os.2" if="isSolarisX86">
+ <property name="os.and.arch" value="solaris-i586" />
+ </target>
+
+ <target name="gluegen.cpptasks.detect.os.solaris" depends="gluegen.cpptasks.detect.os.solaris.sparc,gluegen.cpptasks.detect.os.solaris.sparcv9,gluegen.cpptasks.detect.os.solaris.amd64,gluegen.cpptasks.detect.os.solaris.x86" unless="gluegen.cpptasks.detected.os.2" />
+
+ <target name="gluegen.cpptasks.detect.os.unix" unless="gluegen.cpptasks.detected.os.2" if="isUnix">
+ <property name="native.library.suffix" value="so" />
+ </target>
+
+ <target name="gluegen.cpptasks.detect.os.windows.amd64" unless="gluegen.cpptasks.detected.os.2" if="isWindowsAMD64">
+ <property name="os.and.arch" value="windows-amd64" />
+ </target>
+
+ <target name="gluegen.cpptasks.detect.os.windows.x86" unless="gluegen.cpptasks.detected.os.2" if="isWindowsX86">
+ <property name="os.and.arch" value="windows-i586" />
+ </target>
+
+ <target name="gluegen.cpptasks.detect.os.windows" depends="gluegen.cpptasks.detect.os.windows.amd64,gluegen.cpptasks.detect.os.windows.x86" unless="gluegen.cpptasks.detected.os.2" if="isWindows">
+ <property name="native.library.suffix" value="dll" />
+ </target>
+
+ <target name="gluegen.cpptasks.detect.os.2" depends="gluegen.cpptasks.detect.os.freebsd,gluegen.cpptasks.detect.os.hpux,gluegen.cpptasks.detect.os.linux,gluegen.cpptasks.detect.os.osx,gluegen.cpptasks.detect.os.solaris,gluegen.cpptasks.detect.os.unix,gluegen.cpptasks.detect.os.windows" unless="gluegen.cpptasks.detected.os.2">
+ </target>
+
+ <target name="gluegen.cpptasks.detect.os" depends="gluegen.cpptasks.detect.os.1,gluegen.cpptasks.detect.os.2">
+ <property name="gluegen.cpptasks.detected.os" value="true" />
+ <property name="gluegen.cpptasks.detected.os.2" value="true" />
+ </target>
+
+ <!-- Detect compiler setup, in particular on Windows; separated
+ - out because this must sometimes be called late in the setup process
+ -->
+ <target name="gluegen.cpptasks.detect.compiler">
+ <!-- Set up compiler selection on Windows -->
+ <condition property="isVCFamily">
+ <and>
+ <istrue value="${isWindows}" />
+ <not>
+ <equals arg1="${win32.c.compiler}" arg2="mingw" />
+ </not>
+ </and>
+ </condition>
+ <condition property="isVC6">
+ <and>
+ <istrue value="${isWindows}" />
+ <equals arg1="${win32.c.compiler}" arg2="vc6" />
+ </and>
+ </condition>
+ <condition property="isVC7">
+ <and>
+ <istrue value="${isWindows}" />
+ <equals arg1="${win32.c.compiler}" arg2="vc7" />
+ </and>
+ </condition>
+ <condition property="isVC8">
+ <and>
+ <istrue value="${isWindows}" />
+ <equals arg1="${win32.c.compiler}" arg2="vc8" />
+ </and>
+ </condition>
+ <condition property="isVC9">
+ <and>
+ <istrue value="${isWindows}" />
+ <equals arg1="${win32.c.compiler}" arg2="vc9" />
+ </and>
+ </condition>
+ <condition property="isVC8_X64">
+ <and>
+ <istrue value="${isWindows}" />
+ <equals arg1="${win32.c.compiler}" arg2="vc8_x64" />
+ </and>
+ </condition>
+ <condition property="isVC8Family">
+ <or>
+ <istrue value="${isVC8}" />
+ <istrue value="${isVC8_X64}" />
+ <istrue value="${isVC9}" />
+ </or>
+ </condition>
+ <condition property="isMingW">
+ <and>
+ <istrue value="${isWindows}" />
+ <equals arg1="${win32.c.compiler}" arg2="mingw" />
+ </and>
+ </condition>
+ <condition property="WindowsFailure">
+ <and>
+ <istrue value="${isWindows}" />
+ <isfalse value="${isVC6}" />
+ <isfalse value="${isVC7}" />
+ <isfalse value="${isVC8}" />
+ <isfalse value="${isVC8_X64}" />
+ <isfalse value="${isVC9}" />
+ <isfalse value="${isMingW}" />
+ </and>
+ </condition>
+ <fail message="Must specify either win32.c.compiler in e.g. jogl.properties or use e.g. win32.vc6 build target" if="WindowsFailure" />
+ <echo message="VC6=${isVC6}" />
+ <echo message="VC7=${isVC7}" />
+ <echo message="VC8=${isVC8}" />
+ <echo message="VC8_X64=${isVC8_X64}" />
+ <echo message="VC9=${isVC9}" />
+ <echo message="MingW=${isMingW}" />
+
+ <!-- NOTE: the value of the debug and optimise attributes will not be overridden if already set externally -->
+ <property name="c.compiler.debug" value="false" />
+ </target>
+
+ <!-- ================================================================== -->
+ <!--
+ - Set up java.home.dir appropriately on all platforms.
+ -->
+ <target name="setup.java.home.dir.nonmacosx" unless="isOSX">
+ <!-- java home dir is up one directory as java.home points to '<java-install-dir>/jre' -->
+ <property name="java.home.dir" value="${java.home}/.." />
+ </target>
+ <target name="setup.java.home.dir.macosx" if="isOSX">
+ <property name="java.home.dir" value="/System/Library/Frameworks/JavaVM.framework/Home" />
+ </target>
+ <target name="setup.java.home.dir" depends="setup.java.home.dir.nonmacosx,setup.java.home.dir.macosx">
+ <property name="java.includes.dir" value="${java.home.dir}/include" />
+ </target>
+
+ <target name="gluegen.cpptasks.configure.compiler" depends="setup.java.home.dir" unless="gluegen.compiler.present">
+ <!-- compiler configuration -->
+ <compiler id="compiler.cfg.linux" name="gcc">
+ </compiler>
+
+ <compiler id="compiler.cfg.linux.amd64" name="gcc">
+ <compilerarg value="-fPIC"/>
+ </compiler>
+
+ <compiler id="compiler.cfg.solaris" name="suncc">
+ <defineset>
+ <define name="SOLARIS" />
+ </defineset>
+ </compiler>
+
+ <compiler id="compiler.cfg.solaris.sparcv9" name="suncc">
+ <compilerarg value="-fast" />
+ <compilerarg value="-xchip=ultra" />
+ <compilerarg value="-xarch=v9a" />
+ <defineset>
+ <define name="SOLARIS" />
+ </defineset>
+ </compiler>
+
+ <compiler id="compiler.cfg.solaris.amd64" name="suncc">
+ <compilerarg value="-fast" />
+ <compilerarg value="-xchip=opteron" />
+ <compilerarg value="-xarch=amd64" />
+ <!-- <compilerarg value="-xcache=64/64/2:1024/64/16" /> -->
+ <defineset>
+ <define name="SOLARIS" />
+ </defineset>
+ </compiler>
+
+ <compiler id="compiler.cfg.win32.mingw" name="gcc">
+ <defineset>
+ <define name="_DEBUG" if="c.compiler.use-debug"/>
+ <define name="DEBUG" if="c.compiler.use-debug"/>
+ <define name="NDEBUG" unless="c.compiler.use-debug"/>
+
+ <define name="DBUILD_DLL" />
+ <define name="_WINGDI_" />
+ <define name="_STRICT_ANSI" />
+ <define name="_JNI_IMPLEMENTATION_" />
+ <define name="MINGW" />
+ <define name="WINVER" value="0x0500"/> <!-- set windows version to >= Windows 2000 -->
+ <define name="_WIN32_WINNT" value="0x0500"/> <!-- set windows version to >= Windows 2000 -->
+ </defineset>
+ </compiler>
+
+ <compiler id="compiler.cfg.win32.msvc" name="msvc">
+ <compilerarg value="/W3"/> <!-- set warning level -->
+ <compilerarg value="/Ob1"/> <!-- inline only functions marked inline -->
+ <compilerarg value="/GF"/> <!-- enable string pooling -->
+ <compilerarg value="/Gy"/> <!-- enable function level linking -->
+ <compilerarg value="/GS" if="isVC7"/> <!-- buffer security checks -->
+ <compilerarg value="/Wp64" if="isVC7"/> <!-- detect 64-bit port problems -->
+ <compilerarg value="/RTCcsu" if="isVC7"/> <!-- various runtime checks -->
+ <!-- Note: previous compiler options for VC7 were:
+ Debug: /MDd /Yd /GS /RTCs /RTCu /RTCc /W3 /Od /GF /EHsc /Zi /GS /Gy /Wp64 /Zi /D &quot;_DEBUG&quot;
+ Optimized: /MD /W3 /O2 /Ob1 /GF /EHsc /GS /Gy /Wp64 /D &quot;NDEBUG&quot; -->
+ <compilerarg value="/GS" if="isVC8"/> <!-- buffer security checks -->
+ <compilerarg value="/Wp64" if="isVC8"/> <!-- detect 64-bit port problems -->
+ <compilerarg value="/RTCcsu" if="isVC8"/> <!-- various runtime checks -->
+ <compilerarg value="/NODEFAULTLIB:oldnames.lib" if="isVC8"/> <!-- library not available with VC8 -->
+ <compilerarg value="/GS" if="isVC9"/> <!-- buffer security checks -->
+ <compilerarg value="/RTCcsu" if="isVC9"/> <!-- various runtime checks -->
+ <!--compilerarg value="/MT" if="isVC9"/--> <!-- static multithreaded - somehow overwritten by default /MD -->
+
+ <defineset>
+ <define name="_DEBUG" if="c.compiler.use-debug"/>
+ <define name="DEBUG" if="c.compiler.use-debug"/>
+ <define name="NDEBUG" unless="c.compiler.use-debug"/>
+ </defineset>
+ </compiler>
+
+ <compiler id="compiler.cfg.macosx" name="gcc">
+ <compilerarg value="-arch" />
+ <compilerarg value="ppc" />
+ <compilerarg value="-arch" />
+ <compilerarg value="i386" />
+ <compilerarg value="-arch" if="use.macosx64"/>
+ <compilerarg value="x86_64" if="use.macosx64"/>
+ <!-- Note: Apple doesn't seem to provide ppc64 binaries on Leopard -->
+ <compilerarg value="-Wmost" />
+ <compilerarg value="-ObjC" />
+ <defineset>
+ <define name="macosx" />
+ </defineset>
+ </compiler>
+
+ <compiler id="compiler.cfg.freebsd" name="gcc">
+ <defineset>
+ <define name="FREEBSD" />
+ <define name="BSD" />
+ </defineset>
+ </compiler>
+
+ <compiler id="compiler.cfg.hpux" name="aCC">
+ <!-- Interpret source as ANSI C89 (not C++) -->
+ <compilerarg value="-Ae"/>
+ <!-- Dereferences are performed with four-byte loads and stores. -->
+ <compilerarg value="+u4"/>
+ <!-- Suppress warnings:
+ 942: signed/unsigned assignment compatibility
+ 129: redeclarations in stub_includes -->
+ <compilerarg value="+W942,129"/>
+ <defineset>
+ <!-- aCC doesn't seem to define a generic system macro, a la
+ "__sun". The documentation claims it defines the following,
+ but don't seem to work: __HP_aCC, __LP64__, __RISC_0__.
+ HP-UX docs on JNI say to use the defs below
+ (http://www.hp.com/products1/unix/java/infolibrary/prog_guide/JNI_java2.html) -->
+ <!-- Single underscore prefix, as recommended by aCC docs... -->
+ <define name="_HPUX"/>
+ <define name="_POSIX_C_SOURCE" value="199506L"/>
+ </defineset>
+ </compiler>
+
+ <!-- linker configuration -->
+
+ <linker id="linker.cfg.linux" name="gcc">
+ </linker>
+
+ <linker id="linker.cfg.linux.amd64" name="gcc">
+ </linker>
+
+ <linker id="linker.cfg.solaris" name="suncc">
+ </linker>
+
+ <linker id="linker.cfg.solaris.sparcv9" name="suncc">
+ <linkerarg value="-xarch=v9a" />
+ </linker>
+
+ <linker id="linker.cfg.solaris.amd64" name="suncc">
+ <linkerarg value="-xarch=amd64" />
+ </linker>
+
+ <linker id="linker.cfg.win32.mingw" name="gcc" incremental="false">
+ <linkerarg value="-Wl,--kill-at" /> <!-- remove @ from function names -->
+ </linker>
+
+ <linker id="linker.cfg.win32.msvc" name="msvc" incremental="false">
+ <linkerarg value="/OPT:REF,ICF" /> <!-- enable link-time optimisations -->
+ <linkerarg value="/SUBSYSTEM:WINDOWS" /> <!-- output is not a console app as uses WinMain entry point -->
+ <linkerarg value="/MACHINE:X86" if="isVC6" /> <!-- explicity set target platform -->
+ <linkerarg value="/MACHINE:X86" if="isVC7" /> <!-- explicity set target platform -->
+ <linkerarg value="/MACHINE:X86" if="isVC8" /> <!-- explicity set target platform -->
+ <linkerarg value="/MACHINE:X64" if="isVC8_X64"/> <!-- explicity set target platform (IX64) -->
+ <linkerarg value="/MACHINE:X86" if="isVC9" /> <!-- explicity set target platform -->
+ </linker>
+
+ <linker id="linker.cfg.macosx" name="gcc">
+ <linkerarg value="-arch" />
+ <linkerarg value="ppc" />
+ <linkerarg value="-arch" />
+ <linkerarg value="i386" />
+ <linkerarg value="-arch" if="use.macosx64"/>
+ <linkerarg value="x86_64" if="use.macosx64"/>
+ <!-- Note: Apple doesn't seem to provide ppc64 binaries on Leopard -->
+ </linker>
+
+ <linker id="linker.cfg.hpux" name="aCC">
+ </linker>
+ </target>
+
+ <!-- ================================================================== -->
+ <!--
+ - Platform specific declares.
+ -->
+ <target name="gluegen.cpptasks.declare.compiler.win32.vc6" if="isVC6">
+ <echo message="Win32.VC6" />
+ <property name="compiler.cfg.id.base" value="compiler.cfg.win32.msvc" />
+ <property name="linker.cfg.id.base" value="linker.cfg.win32.msvc" />
+ </target>
+
+ <target name="gluegen.cpptasks.declare.compiler.win32.vc7" if="isVC7">
+ <echo message="Win32.VC7" />
+ <property name="compiler.cfg.id.base" value="compiler.cfg.win32.msvc" />
+ <property name="linker.cfg.id.base" value="linker.cfg.win32.msvc" />
+ </target>
+
+ <target name="gluegen.cpptasks.declare.compiler.win32.vc8" if="isVC8">
+ <echo message="Win32.VC8" />
+ <property name="compiler.cfg.id.base" value="compiler.cfg.win32.msvc" />
+ <property name="linker.cfg.id.base" value="linker.cfg.win32.msvc" />
+ </target>
+
+ <target name="gluegen.cpptasks.declare.compiler.win32.vc8_x64" if="isVC8_X64">
+ <echo message="Win32.VC8_X64" />
+ <property name="compiler.cfg.id.base" value="compiler.cfg.win32.msvc" />
+ <property name="linker.cfg.id.base" value="linker.cfg.win32.msvc" />
+ </target>
+
+ <target name="gluegen.cpptasks.declare.compiler.win32.vc9" if="isVC9">
+ <echo message="Win32.VC9" />
+ <property name="compiler.cfg.id.base" value="compiler.cfg.win32.msvc" />
+ <property name="linker.cfg.id.base" value="linker.cfg.win32.msvc" />
+ </target>
+
+ <target name="gluegen.cpptasks.declare.compiler.win32.mingw" if="isMingW">
+ <echo message="Win32.MingW" />
+ <property name="compiler.cfg.id.base" value="compiler.cfg.win32.mingw" />
+ <property name="linker.cfg.id.base" value="linker.cfg.win32.mingw" />
+ </target>
+
+ <target name="gluegen.cpptasks.declare.compiler.win32" depends="gluegen.cpptasks.declare.compiler.win32.vc6,gluegen.cpptasks.declare.compiler.win32.vc7,gluegen.cpptasks.declare.compiler.win32.vc8,gluegen.cpptasks.declare.compiler.win32.vc8_x64,gluegen.cpptasks.declare.compiler.win32.vc9,gluegen.cpptasks.declare.compiler.win32.mingw" if="isWindows">
+ <property name="java.includes.dir.platform" value="${java.includes.dir}/win32" />
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib" />
+ </target>
+
+ <target name="gluegen.cpptasks.declare.compiler.linux.x86" if="isLinuxX86">
+ <echo message="Linux.x86" />
+ <property name="compiler.cfg.id.base" value="compiler.cfg.linux" />
+ <property name="linker.cfg.id.base" value="linker.cfg.linux" />
+ <property name="java.lib.dir.platform" value="${java.home.dir}/jre/lib/i386" />
+ </target>
+
+ <target name="gluegen.cpptasks.declare.compiler.linux.amd64" if="isLinuxAMD64">
+ <echo message="Linux.AMD64" />
+ <property name="compiler.cfg.id.base" value="compiler.cfg.linux.amd64" />
+ <property name="linker.cfg.id.base" value="linker.cfg.linux.amd64" />
+ <property name="java.lib.dir.platform" value="${java.home.dir}/jre/lib/amd64" />
+ </target>
+
+ <target name="gluegen.cpptasks.declare.compiler.linux.ia64" if="isLinuxIA64">
+ <echo message="Linux.IA64" />
+ <property name="compiler.cfg.id.base" value="compiler.cfg.linux" />
+ <property name="linker.cfg.id.base" value="linker.cfg.linux" />
+ <property name="java.lib.dir.platform" value="${java.home.dir}/jre/lib/ia64" />
+ </target>
+
+ <target name="gluegen.cpptasks.declare.compiler.linux" depends="gluegen.cpptasks.declare.compiler.linux.x86,gluegen.cpptasks.declare.compiler.linux.amd64,gluegen.cpptasks.declare.compiler.linux.ia64" if="isLinux">
+ <property name="java.includes.dir.platform" value="${java.includes.dir}/linux" />
+ </target>
+
+ <target name="gluegen.cpptasks.declare.compiler.solaris32" if="isSolaris32Bit">
+ <echo message="Solaris" />
+ <property name="compiler.cfg.id.base" value="compiler.cfg.solaris" />
+ <property name="linker.cfg.id.base" value="linker.cfg.solaris" />
+ </target>
+
+ <target name="gluegen.cpptasks.declare.compiler.solaris.sparcv9" if="isSolarisSparcv9">
+ <echo message="SolarisSparcv9" />
+ <property name="compiler.cfg.id.base" value="compiler.cfg.solaris.sparcv9" />
+ <property name="linker.cfg.id.base" value="linker.cfg.solaris.sparcv9" />
+ </target>
+
+ <target name="gluegen.cpptasks.declare.compiler.solaris.amd64" if="isSolarisAMD64">
+ <echo message="SolarisAMD64" />
+ <property name="compiler.cfg.id.base" value="compiler.cfg.solaris.amd64" />
+ <property name="linker.cfg.id.base" value="linker.cfg.solaris.amd64" />
+ </target>
+
+ <target name="gluegen.cpptasks.declare.compiler.solaris" depends="gluegen.cpptasks.declare.compiler.solaris32,gluegen.cpptasks.declare.compiler.solaris.sparcv9,gluegen.cpptasks.declare.compiler.solaris.amd64" if="isSolaris">
+ <property name="java.includes.dir.platform" value="${java.includes.dir}/solaris" />
+ <property name="java.lib.dir.platform" value="${java.home.dir}/jre/lib/${solaris.cpu}" />
+ </target>
+
+ <target name="gluegen.cpptasks.declare.compiler.macosx" if="isOSX">
+ <echo message="MacOSX" />
+ <property name="compiler.cfg.id.base" value="compiler.cfg.macosx" />
+ <property name="linker.cfg.id.base" value="linker.cfg.macosx" />
+ <property name="java.includes.dir.platform" value="/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Headers" />
+ <property name="java.lib.dir.platform" value="/System/Library/Frameworks/JavaVM.framework/Libraries" />
+ </target>
+
+ <target name="gluegen.cpptasks.declare.compiler.freebsd" if="isFreeBSD">
+ <echo message="FreeBSD" />
+ <property name="compiler.cfg.id.base" value="compiler.cfg.freebsd" />
+ <property name="linker.cfg.id.base" value="linker.cfg.linux" />
+ <property name="java.includes.dir.platform" value="${java.includes.dir}/freebsd" />
+ <property name="java.lib.dir.platform" value="${java.home.dir}/jre/lib/i386" />
+ </target>
+
+ <target name="gluegen.cpptasks.declare.compiler.hpux" if="isHPUX">
+ <echo message="HP-UX" />
+ <property name="compiler.cfg.id.base" value="compiler.cfg.hpux" />
+ <property name="linker.cfg.id.base" value="linker.cfg.hpux" />
+ <property name="java.includes.dir.platform" value="${java.includes.dir}/hp-ux" />
+ <property name="java.lib.dir.platform" value="${java.home.dir}/jre/lib/PA_RISC2.0" />
+ </target>
+
+ <target name="gluegen.cpptasks.declare.compiler" depends="gluegen.cpptasks.declare.compiler.win32,gluegen.cpptasks.declare.compiler.linux,gluegen.cpptasks.declare.compiler.solaris,gluegen.cpptasks.declare.compiler.macosx,gluegen.cpptasks.declare.compiler.freebsd,gluegen.cpptasks.declare.compiler.hpux" unless="gluegen.compiler.present"/>
+
+ <target name="gluegen.cpptasks.setup.compiler" depends="gluegen.cpptasks.detect.compiler,gluegen.cpptasks.configure.compiler,gluegen.cpptasks.declare.compiler" />
+
+ <!-- ================================================================== -->
+ <!--
+ - Helper macrodef for installing manifest in generated DLLs, needed for VC8 and later
+ -->
+ <macrodef name="msvc.manifest">
+ <attribute name="objdir" />
+ <attribute name="dllname" />
+ <sequential>
+ <exec executable="mt">
+ <arg value="-manifest"/>
+ <arg value="@{objdir}/@{dllname}.dll.manifest"/>
+ <arg value="-outputresource:@{objdir}/@{dllname}.dll;#2"/>
+ </exec>
+ </sequential>
+ </macrodef>
+</project>
diff --git a/make/gluegen.compiler.xml b/make/gluegen.compiler.xml
new file mode 100644
index 0000000..ee7ebee
--- /dev/null
+++ b/make/gluegen.compiler.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="GlueGen-cpptasks" basedir="." >
+
+<target name="gluegen.cpptasks.configure.compiler" depends="setup.java.home.dir">
+ <compiler id="compiler.cfg.linux" name="gcc">
+ <compilerarg value="-m32" />
+ <compilerarg value="-Wall" />
+ <compilerarg value="-I/devtools/i686-unknown-linux-gnu/include" />
+ <compilerarg value="-I/devtools/share/include" />
+ <compilerarg value="-I/devtools/i686-unknown-linux-gnu/xfree86-4.3.0-linux-ix86-glibc23/include" />
+ <defineset>
+ <define name="LINUX" />
+ </defineset>
+ </compiler>
+
+ <linker id="linker.cfg.linux" name="gcc">
+ <linkerarg value="-m32" />
+ <linkerarg value="-L/devtools/i686-unknown-linux-gnu/lib" />
+ <linkerarg value="-L/devtools/i686-unknown-linux-gnu/xfree86-4.3.0-linux-ix86-glibc23/lib" />
+ </linker>
+</target>
+</project>
diff --git a/make/gluegen.properties b/make/gluegen.properties
new file mode 100755
index 0000000..bc5af68
--- /dev/null
+++ b/make/gluegen.properties
@@ -0,0 +1,31 @@
+###############################################################################
+# The host specific properties. The build will inform you of required
+# properties. This file must be copied into your home directory (pointed
+# to by the Java system property user.home) and the copy modified appropriately.
+###############################################################################
+#
+# The required antlr.jar property that is the full path to the antlr.jar
+# including the name of the jar
+#
+# Windows
+antlr.jar=C:/Users/kbr/ANTLR/antlr-2.7.2/antlr.jar
+# Linux
+# antlr.jar=/home/kbr/antlr-2.7.2/antlr.jar
+# Mac OS X
+# antlr.jar=/Users/kbr/antlr-2.7.2/antlr.jar
+# Solaris
+# antlr.jar=/export/kbr/ANTLR/antlr-2.7.2/antlr.jar
+
+# If you are building the native code for the GlueGen run-time library
+# on Windows and have the Microsoft Visual C++ compilers installed,
+# you can choose an alternate compiler with which to build the native
+# code. Valid strings here are "vc6", "vc7", "vc8", "vc8_x64", "vc9", and
+# "mingw".
+# win32.c.compiler=vc6
+
+# If you are building on a Mac OS X system supporting
+# cross-compilation and want to generate fat binaries containing
+# x86_64 code, uncomment the property below
+# macosx64=true
+
+#user.compiler.import="${user.home}/gluegen.compiler.xml"
diff --git a/make/lib/JOGLDocLinksGeneratorAndLibs.jar b/make/lib/JOGLDocLinksGeneratorAndLibs.jar
new file mode 100755
index 0000000..b72764c
--- /dev/null
+++ b/make/lib/JOGLDocLinksGeneratorAndLibs.jar
Binary files differ
diff --git a/make/lib/cdc_fp.jar b/make/lib/cdc_fp.jar
new file mode 100755
index 0000000..ada2e3b
--- /dev/null
+++ b/make/lib/cdc_fp.jar
Binary files differ
diff --git a/make/lib/cpptasks-patch.tar.gz b/make/lib/cpptasks-patch.tar.gz
new file mode 100644
index 0000000..22f1cde
--- /dev/null
+++ b/make/lib/cpptasks-patch.tar.gz
Binary files differ
diff --git a/make/lib/cpptasks-version.txt b/make/lib/cpptasks-version.txt
new file mode 100755
index 0000000..2e7dd72
--- /dev/null
+++ b/make/lib/cpptasks-version.txt
@@ -0,0 +1,4 @@
+Current cpptasks is from CVS repository at
+:pserver:[email protected]:/cvsroot/ant-contrib
+as of 10/5/2005 with patches applied for Forte C compiler (Bug
+1314266) and fat binary generation on Mac OS X (Bug 1313421).
diff --git a/make/lib/cpptasks.jar b/make/lib/cpptasks.jar
new file mode 100755
index 0000000..005691c
--- /dev/null
+++ b/make/lib/cpptasks.jar
Binary files differ
diff --git a/make/stub_includes/macosx/dynamic-linker.h b/make/stub_includes/macosx/dynamic-linker.h
new file mode 100755
index 0000000..11afcdc
--- /dev/null
+++ b/make/stub_includes/macosx/dynamic-linker.h
@@ -0,0 +1,46 @@
+/* Portions extracted from Mac OS X dlfcn.h */
+
+/*
+ * Copyright (c) 2004-2005 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+/*
+ Based on the dlcompat work done by:
+ Jorge Acereda <[email protected]> &
+ Peter O'Gorman <[email protected]>
+*/
+
+extern int dlclose(void * __handle);
+extern char * dlerror(void);
+extern void * dlopen(const char * __path, int __mode);
+extern void * dlsym(void * __handle, const char * __symbol);
+
+#define RTLD_LAZY 0x1
+#define RTLD_NOW 0x2
+#define RTLD_LOCAL 0x4
+#define RTLD_GLOBAL 0x8
+
+/*
+ * Special handle arguments for dlsym().
+ */
+#define RTLD_NEXT -1LL /* Search subsequent objects. */
+#define RTLD_DEFAULT -2LL /* Use default search algorithm. */
diff --git a/make/stub_includes/unix/dynamic-linker.h b/make/stub_includes/unix/dynamic-linker.h
new file mode 100755
index 0000000..7071438
--- /dev/null
+++ b/make/stub_includes/unix/dynamic-linker.h
@@ -0,0 +1,47 @@
+/* Portions extracted from Solaris dlfcn.h */
+
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ *
+ * Copyright (c) 1989 AT&T
+ * All Rights Reserved
+ *
+ */
+
+/*
+ * Valid values for handle argument to dlsym(3x).
+ */
+#define RTLD_NEXT -1LL /* look in `next' dependency */
+#define RTLD_DEFAULT -2LL /* look up symbol from scope */
+ /* of current object */
+#define RTLD_SELF -3LL /* look in `ourself' */
+#define RTLD_PROBE -4LL /* look up symbol from scope */
+ /* of current object, */
+ /* using currently */
+ /* loaded objects only. */
+
+/*
+ * Valid values for mode argument to dlopen.
+ */
+#define RTLD_LAZY 0x00001 /* deferred function binding */
+#define RTLD_NOW 0x00002 /* immediate function binding */
+#define RTLD_NOLOAD 0x00004 /* don't load object */
+
+#define RTLD_GLOBAL 0x00100 /* export symbols to others */
+#define RTLD_LOCAL 0x00000 /* symbols are only available */
+ /* to group members */
+#define RTLD_PARENT 0x00200 /* add parent (caller) to */
+ /* a group dependencies */
+#define RTLD_GROUP 0x00400 /* resolve symbols within */
+ /* members of the group */
+#define RTLD_WORLD 0x00800 /* resolve symbols within */
+ /* global objects */
+#define RTLD_NODELETE 0x01000 /* do not remove members */
+#define RTLD_FIRST 0x02000 /* only first object is */
+ /* available for dlsym */
+
+extern void *dlopen(const char *, int);
+extern void *dlsym(void *, const char *);
+extern int dlclose(void *);
+extern char *dlerror(void);
diff --git a/make/stub_includes/windows/dynamic-linker.h b/make/stub_includes/windows/dynamic-linker.h
new file mode 100755
index 0000000..1b06902
--- /dev/null
+++ b/make/stub_includes/windows/dynamic-linker.h
@@ -0,0 +1,32 @@
+/* Windows #defines and typedefs required for processing of extracts
+ from WINDOWS.H */
+
+#define FAR
+#define WINBASEAPI
+#define WINAPI
+#define CONST const
+#define VOID void
+typedef int BOOL;
+typedef unsigned char BYTE;
+typedef unsigned int DWORD;
+typedef int INT;
+typedef int INT32;
+typedef __int64 INT64;
+typedef float FLOAT;
+typedef struct _handle* HANDLE;
+typedef HANDLE HMODULE;
+typedef long LONG;
+typedef const char* LPCSTR;
+typedef const short* LPCWSTR;
+typedef void* LPVOID;
+typedef struct _proc* PROC;
+typedef unsigned int* PUINT;
+typedef unsigned int UINT;
+typedef unsigned short USHORT;
+typedef unsigned short WORD;
+
+// Dynamic loading routines
+WINBASEAPI DWORD WINAPI GetLastError(VOID);
+WINBASEAPI HMODULE WINAPI LoadLibraryW(LPCWSTR lpLibFileName);
+WINBASEAPI PROC WINAPI GetProcAddressA(HMODULE hModule, LPCSTR lpProcName);
+WINBASEAPI BOOL WINAPI FreeLibrary(HMODULE hLibModule);
diff --git a/make/validate-properties.xml b/make/validate-properties.xml
new file mode 100755
index 0000000..195fb2a
--- /dev/null
+++ b/make/validate-properties.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ - A validator for all of the user-defined properties. It will be called
+ - from build.xml in the "init" task.
+ -->
+<project name="Configuration validator" default="validate">
+
+ <!-- ================================================================== -->
+ <!--
+ - Ensure that "antlr.jar" is set.
+ -->
+ <target name="antlr.jar.validate" unless="antlr.jar">
+ <fail>
+
+ ********************************************************************
+ ** The property "antlr.jar" was not set in the GlueGen properties **
+ ** file **
+ ** "${user.properties.file}" **
+ ** (or this file was not found). **
+ ** **
+ ** Please set "antlr.jar" to to the full path of the ANTLR jar **
+ ** including the jar itself. **
+ ********************************************************************
+ </fail>
+ </target>
+
+ <!--
+ - Make sure that gluegen.jar is not on the CLASSPATH; this can cause
+ - builds to fail since if this Java process has the jar file open
+ - we can not overwrite it.
+ -->
+ <target name="java.class.path.validate">
+ <available property="gluegen.jar.on.class.path" classname="com.sun.gluegen.GlueGen" />
+ <fail if="gluegen.jar.on.class.path">
+ *******************************************************************
+ ** Your CLASSPATH environment variable appears to be set (some **
+ ** GlueGen classes are currently visible to the build.) This can **
+ ** cause the build to fail. Please unset your CLASSPATH **
+ ** variable and restart the build. **
+ *******************************************************************
+ </fail>
+ </target>
+
+ <!-- ================================================================== -->
+ <!--
+ - Validate the required properties
+ -->
+ <target name="validate" depends="antlr.jar.validate, java.class.path.validate"
+ description="Validate required properties" />
+
+</project>