<project name="gdx-Windows-32" basedir="." default="postcompile"> <!-- include the environment --> <property environment="env"/> <!-- output directory for temporary object files --> <property name="buildDir" value="../target/native/windows32" /> <!-- output directory for the shared library --> <property name="libsDir" value="../libs/windows32" /> <!-- the name of the shared library --> <property name="libName" value="gdx.dll"/> <!-- the jni header jniPlatform to use --> <property name="jniPlatform" value="win32"/> <!-- the compilerPrefix for the C & C++ compilers --> <property name="compilerPrefix" value="i686-w64-mingw32-"/> <!-- the compilerSuffix for the C & C++ compilers --> <property name="compilerSuffix" value="" /> <!-- define gcc compiler, options and files to compile --> <property name="gcc" value="${compilerPrefix}gcc${compilerSuffix}"/> <property name="gcc-opts" value="-c -Wall -O2 -mfpmath=sse -msse2 -fmessage-length=0 -m32"/> <fileset id="gcc-files" dir="./"> <exclude name="target/"/> <include name="memcpy_wrap.c"/> <include name="**/*.c"/> </fileset> <!-- define g++ compiler, options and files to compile --> <property name="g++" value="${compilerPrefix}g++${compilerSuffix}"/> <property name="g++-opts" value="-c -Wall -O2 -mfpmath=sse -msse2 -fmessage-length=0 -m32"/> <fileset id="g++-files" dir="./"> <exclude name="target/"/> <include name="**/*.cpp"/> <exclude name="android/**"/> <exclude name="iosgl/**"/> </fileset> <!-- define linker and options --> <property name="linker" value="${compilerPrefix}g++${compilerSuffix}"/> <property name="linker-opts" value="-Wl,--kill-at -shared -m32 -static -static-libgcc -static-libstdc++"/> <property name="libraries" value=""/> <!-- cleans the build directory, removes all object files and shared libs --> <target name="clean"> <delete includeemptydirs="true" quiet="true"> <fileset dir="${buildDir}"/> <fileset dir="${libsDir}" includes="**/*" excludes="**/.svn"/> </delete> </target> <target name="precompile"> <condition property="compiler-found"> <and> <or> <!-- Include both b/c Windows might be either --> <available file="${g++}" filepath="${env.PATH}"/> <available file="${g++}" filepath="${env.Path}"/> </or> <or> <!-- Include both b/c Windows might be either --> <available file="${gcc}" filepath="${env.PATH}"/> <available file="${gcc}" filepath="${env.Path}"/> </or> </and> </condition> <condition property="has-compiler"> <equals arg1="${compiler-found}" arg2="true"/> </condition> </target> <target name="create-build-dir" depends="precompile" if="has-compiler"> <!-- FIXME this is pretty nasty :/ --> <copy todir="${buildDir}"> <fileset refid="g++-files"/> <fileset refid="gcc-files"/> </copy> <delete> <fileset dir="${buildDir}"> <include name="*"/> <exclude name="*.o"/> </fileset> </delete> </target> <!-- compiles all C and C++ files to object files in the build directory --> <target name="compile" depends="create-build-dir" if="has-compiler"> <mkdir dir="${buildDir}"/> <apply failonerror="true" executable="${g++}" dest="${buildDir}" verbose="true"> <arg line="${g++-opts}"/> <arg value="-Ijni-headers"/> <arg value="-Ijni-headers/${jniPlatform}"/> <arg value="-I."/> <srcfile/> <arg value="-o"/> <targetfile/> <fileset refid="g++-files"/> <compositemapper> <mapper type="glob" from="*.cpp" to="*.o"/> <mapper type="glob" from="*.mm" to="*.o"/> </compositemapper> </apply> <apply failonerror="true" executable="${gcc}" dest="${buildDir}" verbose="true"> <arg line="${gcc-opts}"/> <arg value="-Ijni-headers"/> <arg value="-Ijni-headers/${jniPlatform}"/> <arg value="-I."/> <srcfile/> <arg value="-o"/> <targetfile/> <fileset refid="gcc-files"/> <compositemapper> <mapper type="glob" from="*.c" to="*.o"/> <mapper type="glob" from="*.m" to="*.o"/> </compositemapper> </apply> </target> <!-- links the shared library based on the previously compiled object files --> <target name="link" depends="compile" if="has-compiler"> <fileset dir="${buildDir}" id="objFileSet"> <patternset> <include name="**/*.o" /> </patternset> </fileset> <pathconvert pathsep=" " property="objFiles" refid="objFileSet" /> <mkdir dir="${libsDir}" /> <exec executable="${linker}" failonerror="true" dir="${buildDir}"> <arg line="${linker-opts}" /> <arg value="-o" /> <arg path="${libsDir}/${libName}" /> <arg line="${objFiles}"/> <arg line="${libraries}" /> </exec> </target> <target name="postcompile" depends="link"> </target> </project>