diff options
Diffstat (limited to 'make')
-rwxr-xr-x | make/Manifest | 2 | ||||
-rwxr-xr-x | make/Manifest-rt | 3 | ||||
-rwxr-xr-x | make/build.xml | 530 | ||||
-rwxr-xr-x | make/dynlink-macosx.cfg | 25 | ||||
-rwxr-xr-x | make/dynlink-unix-CustomJavaCode.java | 18 | ||||
-rwxr-xr-x | make/dynlink-unix.cfg | 22 | ||||
-rwxr-xr-x | make/dynlink-windows-CustomJavaCode.java | 11 | ||||
-rwxr-xr-x | make/dynlink-windows.cfg | 30 | ||||
-rwxr-xr-x | make/gluegen-cpptasks.xml | 755 | ||||
-rw-r--r-- | make/gluegen.compiler.xml | 22 | ||||
-rwxr-xr-x | make/gluegen.properties | 31 | ||||
-rwxr-xr-x | make/lib/JOGLDocLinksGeneratorAndLibs.jar | bin | 0 -> 566650 bytes | |||
-rwxr-xr-x | make/lib/cdc_fp.jar | bin | 0 -> 1494529 bytes | |||
-rw-r--r-- | make/lib/cpptasks-patch.tar.gz | bin | 0 -> 7743 bytes | |||
-rwxr-xr-x | make/lib/cpptasks-version.txt | 4 | ||||
-rwxr-xr-x | make/lib/cpptasks.jar | bin | 0 -> 345356 bytes | |||
-rwxr-xr-x | make/stub_includes/macosx/dynamic-linker.h | 46 | ||||
-rwxr-xr-x | make/stub_includes/unix/dynamic-linker.h | 47 | ||||
-rwxr-xr-x | make/stub_includes/windows/dynamic-linker.h | 32 | ||||
-rwxr-xr-x | make/validate-properties.xml | 51 |
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: + - <msvc.manifest objdir="${obj}" dllname="gluegen-rt" /> + --> +<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 "_DEBUG" + Optimized: /MD /W3 /O2 /Ob1 /GF /EHsc /GS /Gy /Wp64 /D "NDEBUG" --> + <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 Binary files differnew file mode 100755 index 0000000..b72764c --- /dev/null +++ b/make/lib/JOGLDocLinksGeneratorAndLibs.jar diff --git a/make/lib/cdc_fp.jar b/make/lib/cdc_fp.jar Binary files differnew file mode 100755 index 0000000..ada2e3b --- /dev/null +++ b/make/lib/cdc_fp.jar diff --git a/make/lib/cpptasks-patch.tar.gz b/make/lib/cpptasks-patch.tar.gz Binary files differnew file mode 100644 index 0000000..22f1cde --- /dev/null +++ b/make/lib/cpptasks-patch.tar.gz 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 Binary files differnew file mode 100755 index 0000000..005691c --- /dev/null +++ b/make/lib/cpptasks.jar 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> |