<?xml version="1.0" encoding="UTF-8"?>
<project name= "build bullet natives" default= "all" basedir= "../" >
<!-- load cpp compiler ant task -->
<taskdef resource= "cpptasks.tasks" classpath= "lib/antlibs/cpptasks.jar" />
<!-- load properties -->
<property file= "nbproject/bullet-native.properties" />
<!-- condition for mac platform check -->
<condition property= "isSolaris" >
<os name= "SunOS" />
</condition>
<condition property= "isMac" >
<and >
<os family= "mac" />
<os family= "unix" />
</and>
</condition>
<condition property= "isWindows" >
<os family= "windows" />
</condition>
<condition property= "isLinux" >
<and >
<os family= "unix" />
<not >
<os family= "mac" />
</not>
<not >
<os name= "SunOS" />
</not>
</and>
</condition>
<condition property= "is64bit" >
<or >
<os arch= "x86_64" />
<os arch= "amd64" />
</or>
</condition>
<condition property= "ndk-build-name" value= "ndk-build.cmd" else= "ndk-build" >
<os family= "windows" />
</condition>
<fileset id= "lib.jars" dir= "${bullet.lib.dir}" >
<include name= "**/*.jar" />
</fileset>
<fileset id= "lib.jme.jars" dir= "${bullet.jme.dir}" >
<include name= "**/*.jar" />
</fileset>
<pathconvert property= "lib.importpath" >
<fileset refid= "lib.jars" />
<fileset refid= "lib.jme.jars" />
</pathconvert>
<target name= "-check-conditions-pre" >
<available file= "${bullet.folder}" property= "haveBulletSource" />
<available file= "build/bullet-base/libLinearMath.a" property= "haveBulletLibrary" />
<available file= "build/bullet-base-64/libLinearMath.a" property= "haveBulletLibrary64" />
<available file= "build/bullet-base-mingw/libLinearMath.a" property= "haveBulletLibraryMingw" />
<available file= "build/bullet-base-mingw-64/libLinearMath.a" property= "haveBulletLibraryMingw64" />
<condition property= "doDownloadBulletSource" >
<isfalse value= "${haveBulletSource}" />
</condition>
<condition property= "doBuildMacBase" >
<and >
<istrue value= "${isMac}" />
<isfalse value= "${haveBulletLibrary}" />
</and>
</condition>
<condition property= "doBuildLinuxBase" >
<and >
<istrue value= "${isLinux}" />
<or >
<isfalse value= "${is64bit}" />
<istrue value= "${cross.compile}" />
</or>
<isfalse value= "${haveBulletLibrary}" />
</and>
</condition>
<condition property= "doBuildLinuxBase64" >
<and >
<istrue value= "${isLinux}" />
<or >
<istrue value= "${is64bit}" />
<istrue value= "${cross.compile}" />
</or>
<isfalse value= "${haveBulletLibrary64}" />
</and>
</condition>
<condition property= "doBuildLinuxBaseMingw" >
<and >
<istrue value= "${isLinux}" />
<istrue value= "${cross.compile}" />
<isfalse value= "${haveBulletLibraryMingw}" />
</and>
</condition>
<condition property= "doBuildLinuxBaseMingw64" >
<and >
<istrue value= "${isLinux}" />
<istrue value= "${cross.compile}" />
<isfalse value= "${haveBulletLibraryMingw64}" />
</and>
</condition>
<condition property= "doBuildWindowsBase" >
<and >
<istrue value= "${isWindows}" />
<isfalse value= "${haveBulletLibrary}" />
</and>
</condition>
<condition property= "doBuildSolarisBase" >
<and >
<istrue value= "${isSolaris}" />
<isfalse value= "${haveBulletLibrary}" />
</and>
</condition>
</target>
<target name= "-check-conditions-post" >
<available file= "build/bullet-base/libLinearMath.a" property= "haveBuiltBulletLibrary" />
<available file= "build/bullet-base-64/libLinearMath.a" property= "haveBuiltBulletLibrary64" />
<available file= "build/bullet-base-mingw/libLinearMath.a" property= "haveBuiltBulletLibraryMingw" />
<available file= "build/bullet-base-mingw-64/libLinearMath.a" property= "haveBuiltBulletLibraryMingw64" />
<condition property= "doBuildMacBinary" >
<and >
<istrue value= "${isMac}" />
<istrue value= "${haveBuiltBulletLibrary}" />
</and>
</condition>
<condition property= "doBuildLinuxBinary" >
<and >
<istrue value= "${isLinux}" />
<or >
<isfalse value= "${is64bit}" />
<istrue value= "${cross.compile}" />
</or>
<istrue value= "${haveBuiltBulletLibrary}" />
</and>
</condition>
<condition property= "doBuildLinuxBinary64" >
<and >
<istrue value= "${isLinux}" />
<or >
<istrue value= "${is64bit}" />
<istrue value= "${cross.compile}" />
</or>
<istrue value= "${haveBuiltBulletLibrary64}" />
</and>
</condition>
<condition property= "doBuildLinuxBinaryMingw" >
<and >
<istrue value= "${isLinux}" />
<istrue value= "${cross.compile}" />
<istrue value= "${haveBuiltBulletLibraryMingw}" />
</and>
</condition>
<condition property= "doBuildLinuxBinaryMingw64" >
<and >
<istrue value= "${isLinux}" />
<istrue value= "${cross.compile}" />
<istrue value= "${haveBuiltBulletLibraryMingw64}" />
</and>
</condition>
<condition property= "doBuildWindowsBinary" >
<and >
<istrue value= "${isWindows}" />
<istrue value= "${haveBuiltBulletLibrary}" />
</and>
</condition>
<condition property= "doBuildSolarisBinary" >
<and >
<istrue value= "${isSolaris}" />
<istrue value= "${haveBuiltBulletLibrary}" />
</and>
</condition>
</target>
<target name= "build-bullet-natives" description= "builds the native bullet library for the platform being run on and for android if NDK available" depends= "create-native-headers, compile-bullet-sources, compile-native-library, compile-android" >
<echo message= "Updating native jME3-bullet-natives.jar" />
<zip basedir= "${bullet.output.base}/jarcontent" file= "${bullet.output.base}/jME3-bullet-natives.jar" compress= "true" />
<zip basedir= "${bullet.output.base}/android" file= "${bullet.output.base}/jME3-bullet-natives-android.jar" compress= "true" />
<copy file= "${bullet.output.base}/jME3-bullet-natives.jar" todir= "dist/opt/native-bullet/lib/" />
<copy file= "${bullet.output.base}/jME3-bullet-natives-android.jar" todir= "dist/opt/native-bullet/lib/" />
</target>
<target name= "create-native-headers" description= "creates the native C++ headers for the java native methods" >
<javah destdir= "${bullet.source.dir}" classpath= "${bullet.build.dir}${path.separator}${lib.importpath}" >
<class name= "com.jme3.bullet.PhysicsSpace" />
<class name= "com.jme3.bullet.collision.PhysicsCollisionEvent" />
<class name= "com.jme3.bullet.collision.PhysicsCollisionObject" />
<class name= "com.jme3.bullet.objects.PhysicsCharacter" />
<class name= "com.jme3.bullet.objects.PhysicsGhostObject" />
<class name= "com.jme3.bullet.objects.PhysicsRigidBody" />
<class name= "com.jme3.bullet.objects.PhysicsVehicle" />
<class name= "com.jme3.bullet.objects.VehicleWheel" />
<class name= "com.jme3.bullet.objects.infos.RigidBodyMotionState" />
<class name= "com.jme3.bullet.collision.shapes.CollisionShape" />
<class name= "com.jme3.bullet.collision.shapes.BoxCollisionShape" />
<class name= "com.jme3.bullet.collision.shapes.CapsuleCollisionShape" />
<class name= "com.jme3.bullet.collision.shapes.CompoundCollisionShape" />
<class name= "com.jme3.bullet.collision.shapes.ConeCollisionShape" />
<class name= "com.jme3.bullet.collision.shapes.CylinderCollisionShape" />
<class name= "com.jme3.bullet.collision.shapes.GImpactCollisionShape" />
<class name= "com.jme3.bullet.collision.shapes.HeightfieldCollisionShape" />
<class name= "com.jme3.bullet.collision.shapes.HullCollisionShape" />
<class name= "com.jme3.bullet.collision.shapes.MeshCollisionShape" />
<class name= "com.jme3.bullet.collision.shapes.PlaneCollisionShape" />
<class name= "com.jme3.bullet.collision.shapes.SimplexCollisionShape" />
<class name= "com.jme3.bullet.collision.shapes.SphereCollisionShape" />
<class name= "com.jme3.bullet.joints.PhysicsJoint" />
<class name= "com.jme3.bullet.joints.ConeJoint" />
<class name= "com.jme3.bullet.joints.HingeJoint" />
<class name= "com.jme3.bullet.joints.Point2PointJoint" />
<class name= "com.jme3.bullet.joints.SixDofJoint" />
<class name= "com.jme3.bullet.joints.SixDofSpringJoint" />
<class name= "com.jme3.bullet.joints.SliderJoint" />
<class name= "com.jme3.bullet.joints.motors.RotationalLimitMotor" />
<class name= "com.jme3.bullet.joints.motors.TranslationalLimitMotor" />
<class name= "com.jme3.bullet.util.NativeMeshUtil" />
<class name= "com.jme3.bullet.util.DebugShapeFactory" />
</javah>
</target>
<!-- compares the API of native bullet and java version -->
<target name= "bullet-api-diff" description= "creates a html file showing the differences between the native and jbullet based jme3-bullet api" >
<echo message= "Comparing bullet and jbullet API" />
<property name= "dependencyfinder.home" value= "lib/antlibs/depfinder" />
<path id= "dependencyfinder" >
<pathelement location= "${dependencyfinder.home}/classes" />
<pathelement location= "${dependencyfinder.home}/lib/DependencyFinder.jar" />
<pathelement location= "${dependencyfinder.home}/lib/jakarta-oro.jar" />
<pathelement location= "${dependencyfinder.home}/lib/log4j.jar" />
<pathelement location= "${dependencyfinder.home}/lib/guava.jar" />
</path>
<taskdef resource= "dependencyfindertasks.properties" >
<classpath refid= "dependencyfinder" />
</taskdef>
<jarjardiff destfile= "bullet-api-diff.xml"
name="jMonkeyEngine3 Bullet Physics API Comparison"
oldlabel="Java Version"
newlabel="Native Version"
level="incompatible">
<old >
<pathelement location= "build/jME3-jbullet.jar" />
</old>
<new >
<pathelement location= "build/jME3-bullet.jar" />
</new>
</jarjardiff>
<xslt style= "${dependencyfinder.home}/etc/DiffToHTML.xsl"
in="bullet-api-diff.xml"
out="bullet-api-diff.html" force="true"/>
<delete file= "bullet-api-diff.xml" />
</target>
<target name= "compile-native-library" description= "compiles the native libbulletjme binary for the current platform" depends= "-check-conditions-post, -create-folders, -nativelib-osx, -nativelib-windows, -nativelib-linux, -nativelib-linux-64, -nativelib-linux-mingw, -nativelib-linux-mingw-64, -nativelib-solaris" />
<target name= "-create-folders" description= "creates the needed folders" >
<mkdir dir= "${bullet.source.dir}" />
<mkdir dir= "${bullet.build.dir}" />
<mkdir dir= "${bullet.output.dir}" />
<mkdir dir= "build/bullet-native" />
<mkdir dir= "build/bullet-native-64" />
</target>
<target name= "-nativelib-osx" if= "doBuildMacBinary" >
<echo message= "Building MacOSX version of native bullet" />
<mkdir dir= "${bullet.output.dir}/macosx" />
<cc name= "${bullet.osx.compiler}" warnings= "none" debug= "${bullet.compile.debug}" link= "shared" outfile= "${bullet.output.dir}/macosx/${bullet.library.name}" objdir= "build/bullet-native" >
<fileset dir= "${bullet.source.dir}" >
<include name= "*.cpp" >
</include>
</fileset>
<includepath path= "${bullet.osx.java.include}" />
<includepath path= "${bullet.bullet.include}" />
<compilerarg value= "-syslibroot ${bullet.osx.syslibroot}" />
<!-- compilerarg value=" - arch"/>
<compilerarg value= "ppc" / - - >
<compilerarg value= "-arch" />
<compilerarg value= "i386" />
<compilerarg value= "-arch" />
<compilerarg value= "x86_64" />
<linker name= "${bullet.osx.compiler}" >
<libset dir= "build/bullet-base" libs= "BulletMultiThreaded,BulletDynamics,BulletCollision,LinearMath" />
<!-- linkerarg value=" - arch"/>
<linkerarg value= "ppc" / - - >
<linkerarg value= "-arch" />
<linkerarg value= "i386" />
<linkerarg value= "-arch" />
<linkerarg value= "x86_64" />
</linker>
</cc>
<move file= "${bullet.output.dir}/macosx/lib${bullet.library.name}.dylib" tofile= "${bullet.output.dir}/macosx/lib${bullet.library.name}.jnilib" failonerror= "true" verbose= "true" />
<delete file= "${bullet.output.dir}/macosx/history.xml" />
</target>
<target name= "-nativelib-linux" if= "doBuildLinuxBinary" >
<echo message= "Building 32 bit Linux version of native bullet" />
<mkdir dir= "${bullet.output.dir}/linux" />
<cc name= "${bullet.linux.compiler}" warnings= "severe" debug= "${bullet.compile.debug}" link= "shared" outfile= "${bullet.output.dir}/linux/${bullet.library.name}" objdir= "build/bullet-native" >
<fileset dir= "${bullet.source.dir}" >
<include name= "*.cpp" >
</include>
</fileset>
<includepath path= "${bullet.java.include}" />
<includepath path= "${bullet.java.include}/linux" />
<includepath path= "${bullet.bullet.include}" />
<compilerarg value= "-m32" />
<linker name= "${bullet.linux.compiler}" >
<linkerarg value= "-m32" />
<libset dir= "build/bullet-base" libs= "BulletMultiThreaded,BulletDynamics,BulletCollision,LinearMath" />
</linker>
</cc>
<delete file= "${bullet.output.dir}/linux/history.xml" />
</target>
<target name= "-nativelib-linux-64" if= "doBuildLinuxBinary64" >
<echo message= "Building 64 bit Linux version of native bullet" />
<mkdir dir= "${bullet.output.dir}/linux" />
<cc name= "${bullet.linux.compiler}" warnings= "severe" debug= "${bullet.compile.debug}" link= "shared" outfile= "${bullet.output.dir}/linux/${bullet.library.name}64" objdir= "build/bullet-native-64" >
<fileset dir= "${bullet.source.dir}" >
<include name= "*.cpp" >
</include>
</fileset>
<includepath path= "${bullet.java.include}" />
<includepath path= "${bullet.java.include}/linux" />
<includepath path= "${bullet.bullet.include}" />
<linker name= "${bullet.linux.compiler}" >
<libset dir= "build/bullet-base-64" libs= "BulletMultiThreaded,BulletDynamics,BulletCollision,LinearMath" />
</linker>
</cc>
<delete file= "${bullet.output.dir}/linux/history.xml" />
</target>
<target name= "-nativelib-linux-mingw" if= "doBuildLinuxBinaryMingw" >
<echo message= "Building 32 bit Windows version of native bullet" />
<mkdir dir= "build/bullet-native-mingw" />
<mkdir dir= "${bullet.output.dir}/windows" />
<cc compilertarget= "${cross.compile.target}" name= "${bullet.linux.crosscompiler}" warnings= "severe" debug= "${bullet.compile.debug}"
outfile="${bullet.output.dir}/windows/${bullet.library.name}" objdir="build/bullet-native-mingw" outtype="shared">
<fileset dir= "${bullet.source.dir}" >
<include name= "*.cpp" >
</include>
</fileset>
<sysincludepath path= "/usr/${cross.compile.target}/include" />
<includepath path= "${bullet.java.include}" />
<includepath path= "${bullet.java.include}/win32" />
<includepath path= "${bullet.bullet.include}" />
<compilerarg value= "-m32" />
<compilerarg value= "-static-libgcc" />
<linker name= "${bullet.linux.crosscompiler}" >
<linkerarg value= "-static" />
<libset dir= "build/bullet-base-mingw" libs= "BulletMultiThreaded,BulletDynamics,BulletCollision,LinearMath" />
</linker>
</cc>
<move file= "${bullet.output.dir}/windows/lib${bullet.library.name}.so" tofile= "${bullet.output.dir}/windows/${bullet.library.name}.dll" failonerror= "false" />
<delete file= "${bullet.output.dir}/windows/history.xml" />
</target>
<target name= "-nativelib-linux-mingw-64" if= "doBuildLinuxBinaryMingw64" >
<echo message= "Building 64 bit Windows version of native bullet" />
<mkdir dir= "build/bullet-native-mingw-64" />
<mkdir dir= "${bullet.output.dir}/windows" />
<cc compilertarget= "${cross.compile.target64}" name= "${bullet.linux.crosscompiler}" warnings= "severe" debug= "${bullet.compile.debug}"
outfile="${bullet.output.dir}/windows/${bullet.library.name}64" objdir="build/bullet-native-mingw-64" outtype="shared">
<fileset dir= "${bullet.source.dir}" >
<include name= "*.cpp" >
</include>
</fileset>
<sysincludepath path= "/usr/${cross.compile.target64}/include" />
<includepath path= "${bullet.java.include}" />
<includepath path= "${bullet.java.include}/win32" />
<includepath path= "${bullet.bullet.include}" />
<compilerarg value= "-static-libgcc" />
<compilerarg value= "-fpermissive" />
<linker name= "${bullet.linux.crosscompiler}" >
<linkerarg value= "-static" />
<libset dir= "build/bullet-base-mingw-64" libs= "BulletMultiThreaded,BulletDynamics,BulletCollision,LinearMath" />
</linker>
</cc>
<move file= "${bullet.output.dir}/windows/lib${bullet.library.name}64.so" tofile= "${bullet.output.dir}/windows/${bullet.library.name}64.dll" failonerror= "false" />
<delete file= "${bullet.output.dir}/windows/history.xml" />
</target>
<target name= "-nativelib-solaris" if= "doBuildSolarisBinary" >
<echo message= "Building Solaris version of native bullet" />
<mkdir dir= "${bullet.output.dir}/linux" />
<cc name= "${bullet.solaris.compiler}" warnings= "severe" debug= "${bullet.compile.debug}" link= "shared" outfile= "${bullet.output.dir}/solaris/${bullet.library.name}" objdir= "build/bullet-native" >
<fileset dir= "${bullet.source.dir}" >
<include name= "*.cpp" >
</include>
</fileset>
<includepath path= "${bullet.java.include}" />
<includepath path= "${bullet.java.include}/solaris" />
<includepath path= "${bullet.bullet.include}" />
<!-- compilerarg value=" - m32"/ -->
<compilerarg value= "-m32" />
<compilerarg value= "-fno-strict-aliasing" />
<compilerarg value= "-pthread" />
<compilerarg value= "-fPIC" />
<compilerarg value= "-D_REENTRANT" />
<compilerarg value= "-static-libstdc++" />
<compilerarg value= "-static-libgcc" />
<compilerarg value= "-D_REENTRANT" />
<linker name= "${bullet.solaris.compiler}" >
<linkerarg value= "-R/usr/sfw/lib" />
<libset dir= "${bullet.folder}/src/BulletMultiThreaded" libs= "BulletMultiThreaded" />
<libset dir= "${bullet.folder}/src/BulletDynamics" libs= "BulletDynamics" />
<libset dir= "${bullet.folder}/src/BulletCollision" libs= "BulletCollision" />
<libset dir= "${bullet.folder}/src/LinearMath" libs= "LinearMath" />
</linker>
</cc>
<delete file= "${bullet.output.dir}/solaris/history.xml" />
</target>
<target name= "-nativelib-windows" if= "doBuildWindowsBinary" >
<echo message= "Building Windows version of native bullet" />
<mkdir dir= "${bullet.output.dir}/windows" />
<cc multithreaded= "" name= "${bullet.windows.compiler}" warnings= "none" debug= "${bullet.compile.debug}" outtype= "shared" outfile= "${bullet.output.dir}/windows/${bullet.library.name}" objdir= "build/bullet-native" >
<fileset dir= "${bullet.source.dir}" >
<include name= "*.cpp" >
</include>
</fileset>
<includepath path= "${bullet.java.include}" />
<includepath path= "${bullet.java.include}/win32" />
<includepath path= "${bullet.bullet.include}" />
<!-- compilerarg value=" - m32"/ -->
<linker name= "${bullet.windows.compiler}" debug= "${bullet.compile.debug}" >
<linkerarg value= "-o${bullet.library.name}.dll" />
<linkerarg value= "--kill-at" />
<linkerarg value= "-static" />
<libset dir= "build/bullet-base" libs= "BulletMultiThreaded,BulletDynamics,BulletCollision,LinearMath" />
</linker>
</cc>
<delete file= "${bullet.output.dir}/windows/history.xml" />
</target>
<target name= "compile-android" description= "compiles libbulletjme using the Android NDK" depends= "-check-android-ndk" if= "haveAndoidNdk" >
<!-- create the android subdirectory in jarcontent for the libbulletjme.so shared library -->
<mkdir dir= "${bullet.output.base}/android" />
<!-- create the jni subdirectory -->
<mkdir dir= "build/bullet-android/jni" />
<!-- copy Android.mk and Application.mk files into jni directory -->
<copy file= "${bullet.source.dir}/android/Android.mk" todir= "build/bullet-android/jni" verbose= "true" />
<copy file= "${bullet.source.dir}/android/Application.mk" todir= "build/bullet-android/jni" verbose= "true" />
<!-- copy jME3 Native Bullet files into jni directory -->
<copy todir= "build/bullet-android/jni" verbose= "true" flatten= "false" >
<fileset dir= "${bullet.source.dir}" >
<include name= "*.cpp" />
<include name= "*.h" />
</fileset>
</copy>
<!-- copy Bullet - 2.79 files into jni directory -->
<copy todir= "build/bullet-android/jni" verbose= "true" flatten= "false" overwrite= "false" >
<fileset dir= "${bullet.bullet.include}" >
<include name= "**/*.cpp" />
<include name= "**/*.h" />
<include name= "**/*.cl" />
</fileset>
</copy>
<exec executable= "${ndk.dir}/${ndk-build-name}" failonerror= "true" >
<arg line= "-C build/bullet-android/" />
</exec>
<!-- copy resulting library directories to jarcontent directory -->
<copy todir= "${bullet.output.base}/android" verbose= "true" flatten= "false" >
<fileset dir= "build/bullet-android/libs" >
<include name= "**/*.*" />
<include name= "**/*.*" />
<!-- exclude name="**/x86/*.*"/ -->
</fileset>
</copy>
</target>
<target name= "-check-android-ndk" >
<available file= "${ndk.dir}/${ndk-build-name}" property= "haveAndoidNdk" />
</target>
<target name= "compile-bullet-sources" description= "downloads and compiles the bullet native library to static binaries to be included in the final libbulletjme" depends= "-check-conditions-pre, -get-bullet-sources, -compile-bullet-sources-windows, -compile-bullet-sources-macosx, -compile-bullet-sources-linux, -compile-bullet-sources-linux-64, -compile-bullet-sources-linux-mingw, -compile-bullet-sources-linux-mingw-64" />
<target name= "-get-bullet-sources" unless= "haveBulletSource" >
<echo > Downloading bullet source..</echo>
<get src= "${bullet.download}" dest= "../bullet.zip" />
<unzip src= "../bullet.zip" dest= "../" />
<delete file= "../bullet.zip" />
</target>
<target name= "-compile-bullet-sources-windows" if= "doBuildWindowsBase" >
<mkdir dir= "build/bullet-base" />
<property location= "build/bullet-base" name= "build.folder.resolved" />
<replace file= "${bullet.folder}/CMakeLists.txt" token= "#TODO add better GLUT detection for MinGW" value= " INCLUDE_DIRECTORIES($${BULLET_PHYSICS_SOURCE_DIR}/Glut)${line.separator}SET(GLUT_glut_LIBRARY $${BULLET_PHYSICS_SOURCE_DIR}/Glut/glut32.lib)" />
<exec executable= "${cmake.windows}" dir= "${bullet.folder}" failonerror= "true" >
<arg value= "." />
<arg value= "-DLIBRARY_OUTPUT_PATH='${build.folder.resolved}'" />
<arg value= "-DBUILD_SHARED_LIBS=OFF" />
<arg value= "-DBUILD_EXTRAS:BOOL=OFF" />
<arg value= "-DBUILD_DEMOS:BOOL=OFF" />
<arg value= "-DCMAKE_BUILD_TYPE=Release" />
<arg value= "." />
<arg value= "-G" />
<arg value= "MinGW Makefiles" />
</exec>
<exec executable= "${make.windows}" dir= "${bullet.folder}" />
</target>
<target name= "-compile-bullet-sources-macosx" if= "doBuildMacBase" >
<mkdir dir= "build/bullet-base" />
<property location= "build/bullet-base" name= "build.folder.resolved" />
<exec executable= "${cmake.osx}" dir= "${bullet.folder}" failonerror= "true" >
<arg value= "-DLIBRARY_OUTPUT_PATH='${build.folder.resolved}'" />
<arg value= "-DBUILD_SHARED_LIBS=OFF" />
<arg value= "-DCMAKE_OSX_ARCHITECTURES='i386;x86_64'" />
<arg value= "-DBUILD_EXTRAS=off" />
<arg value= "-DBUILD_DEMOS=off" />
<arg value= "-DCMAKE_BUILD_TYPE=Release" />
</exec>
<exec executable= "${make.osx}" dir= "${bullet.folder}" />
</target>
<target name= "-compile-bullet-sources-linux" if= "doBuildLinuxBase" >
<mkdir dir= "build/bullet-base" />
<property location= "build/bullet-base" name= "build.folder.resolved" />
<exec executable= "${cmake.linux}" dir= "${bullet.folder}" failonerror= "true" >
<arg value= "-DCMAKE_SYSTEM_NAME=Linux" />
<arg value= "-DCMAKE_C_COMPILER=gcc" />
<arg value= "-DCMAKE_CXX_COMPILER=g++" />
<arg value= "-DCMAKE_RC_COMPILER=windres" />
<arg value= "-DCMAKE_FIND_ROOT_PATH=/usr" />
</exec>
<exec executable= "${cmake.linux}" dir= "${bullet.folder}" failonerror= "true" >
<arg value= "-DLIBRARY_OUTPUT_PATH='${build.folder.resolved}'" />
<arg value= "-DBUILD_SHARED_LIBS=OFF" />
<arg value= "-DBUILD_STATIC_LIBS=ON" />
<!-- arg value=" - DCMAKE_C_FLAGS= - fPIC"/>
<arg value= "-DCMAKE_CXX_FLAGS=-fPIC" / - - >
<arg value= "-DCMAKE_C_FLAGS=-m32" />
<arg value= "-DCMAKE_CXX_FLAGS=-m32" />
<arg value= "-DCMAKE_LD_FLAGS=-m32" />
<arg value= "-DBUILD_EXTRAS=off" />
<arg value= "-DBUILD_DEMOS=off" />
<arg value= "-DCMAKE_BUILD_TYPE=Release" />
</exec>
<exec executable= "${make.linux}" dir= "${bullet.folder}" />
<exec executable= "ranlib" >
<arg value= "${basedir}/build/bullet-base/libBulletMultiThreaded.a" />
</exec>
<exec executable= "ranlib" >
<arg value= "${basedir}/build/bullet-base/libBulletDynamics.a" />
</exec>
<exec executable= "ranlib" >
<arg value= "${basedir}/build/bullet-base/libBulletCollision.a" />
</exec>
<exec executable= "ranlib" >
<arg value= "${basedir}/build/bullet-base/libLinearMath.a" />
</exec>
</target>
<target name= "-compile-bullet-sources-linux-64" if= "doBuildLinuxBase64" >
<mkdir dir= "build/bullet-base-64" />
<property location= "build/bullet-base-64" name= "build64.folder.resolved" />
<exec executable= "${cmake.linux}" dir= "${bullet.folder}" failonerror= "true" >
<arg value= "-DCMAKE_SYSTEM_NAME=Linux" />
<arg value= "-DCMAKE_C_COMPILER=gcc" />
<arg value= "-DCMAKE_CXX_COMPILER=g++" />
<arg value= "-DCMAKE_RC_COMPILER=windres" />
<arg value= "-DCMAKE_FIND_ROOT_PATH=/usr" />
</exec>
<exec executable= "${cmake.linux}" dir= "${bullet.folder}" failonerror= "true" >
<arg value= "-DLIBRARY_OUTPUT_PATH='${build64.folder.resolved}'" />
<arg value= "-DBUILD_SHARED_LIBS=OFF" />
<arg value= "-DBUILD_STATIC_LIBS=ON" />
<arg value= "-DCMAKE_C_FLAGS=-fPIC" />
<arg value= "-DCMAKE_CXX_FLAGS=-fPIC" />
<arg value= "-DBUILD_EXTRAS=off" />
<arg value= "-DBUILD_DEMOS=off" />
<arg value= "-DCMAKE_BUILD_TYPE=Release" />
</exec>
<exec executable= "${make.linux}" dir= "${bullet.folder}" />
</target>
<target name= "-compile-bullet-sources-linux-mingw" depends= "-fix-bullet-sources" if= "doBuildLinuxBaseMingw" >
<exec executable= "${cmake.linux}" dir= "${bullet.folder}" failonerror= "true" >
<arg value= "-DCMAKE_SYSTEM_NAME=Windows" />
<arg value= "-DCMAKE_C_COMPILER=${cross.compile.target}-gcc" />
<arg value= "-DCMAKE_CXX_COMPILER=${cross.compile.target}-g++" />
<arg value= "-DCMAKE_RC_COMPILER=${cross.compile.target}-windres" />
<arg value= "-DCMAKE_FIND_ROOT_PATH=/usr/${cross.compile.target}" />
<arg value= "-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER" />
<arg value= "-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY" />
<arg value= "-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY" />
</exec>
<mkdir dir= "build/bullet-base-mingw" />
<property location= "build/bullet-base-mingw" name= "build-mingw.folder.resolved" />
<exec executable= "${cmake.linux}" dir= "${bullet.folder}" failonerror= "true" >
<arg value= "-DCMAKE_BUILD_TYPE=Release" />
<arg value= "-DBUILD_SHARED_LIBS=OFF" />
<arg value= "-DBUILD_EXTRAS=OFF" />
<arg value= "-DBUILD_DEMOS=OFF" />
<arg value= "-DLIBRARY_OUTPUT_PATH='${build-mingw.folder.resolved}'" />
</exec>
<exec executable= "${make.linux}" dir= "${bullet.folder}" />
<exec executable= "${cross.compile.target}-ranlib" >
<arg value= "${basedir}/build/bullet-base-mingw/libBulletMultiThreaded.a" />
</exec>
<exec executable= "${cross.compile.target}-ranlib" >
<arg value= "${basedir}/build/bullet-base-mingw/libBulletDynamics.a" />
</exec>
<exec executable= "${cross.compile.target}-ranlib" >
<arg value= "${basedir}/build/bullet-base-mingw/libBulletCollision.a" />
</exec>
<exec executable= "${cross.compile.target}-ranlib" >
<arg value= "${basedir}/build/bullet-base-mingw/libLinearMath.a" />
</exec>
</target>
<target name= "-compile-bullet-sources-linux-mingw-64" depends= "-fix-bullet-sources" if= "doBuildLinuxBaseMingw64" >
<exec executable= "${cmake.linux}" dir= "${bullet.folder}" failonerror= "true" >
<arg value= "-DCMAKE_SYSTEM_NAME=Windows" />
<arg value= "-DCMAKE_C_COMPILER=${cross.compile.target64}-gcc" />
<arg value= "-DCMAKE_CXX_COMPILER=${cross.compile.target64}-g++" />
<arg value= "-DCMAKE_RC_COMPILER=${cross.compile.target64}-windres" />
<arg value= "-DCMAKE_FIND_ROOT_PATH=/usr/${cross.compile.target64}" />
<arg value= "-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER" />
<arg value= "-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY" />
<arg value= "-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY" />
</exec>
<mkdir dir= "build/bullet-base-mingw-64" />
<property location= "build/bullet-base-mingw-64" name= "build-mingw64.folder.resolved" />
<exec executable= "${cmake.linux}" dir= "${bullet.folder}" failonerror= "true" >
<arg value= "-DCMAKE_BUILD_TYPE=Release" />
<arg value= "-DBUILD_SHARED_LIBS=OFF" />
<arg value= "-DBUILD_EXTRAS=OFF" />
<arg value= "-DBUILD_DEMOS=OFF" />
<arg value= "-DCMAKE_CXX_FLAGS=-fpermissive" />
<arg value= "-DLIBRARY_OUTPUT_PATH='${build-mingw64.folder.resolved}'" />
</exec>
<exec executable= "${make.linux}" dir= "${bullet.folder}" />
<exec executable= "${cross.compile.target64}-ranlib" >
<arg value= "${basedir}/build/bullet-base-mingw-64/libBulletMultiThreaded.a" />
</exec>
<exec executable= "${cross.compile.target64}-ranlib" >
<arg value= "${basedir}/build/bullet-base-mingw-64/libBulletDynamics.a" />
</exec>
<exec executable= "${cross.compile.target64}-ranlib" >
<arg value= "${basedir}/build/bullet-base-mingw-64/libBulletCollision.a" />
</exec>
<exec executable= "${cross.compile.target64}-ranlib" >
<arg value= "${basedir}/build/bullet-base-mingw-64/libLinearMath.a" />
</exec>
</target>
<target name= "-fix-bullet-sources" >
<replace file= "${bullet.folder}/CMakeLists.txt" token= "#TODO add better GLUT detection for MinGW"
value="INCLUDE_DIRECTORIES($${BULLET_PHYSICS_SOURCE_DIR}/Glut)${line.separator}
SET(GLUT_INCLUDE_DIR ${BULLET_PHYSICS_SOURCE_DIR}/Glut)${line.separator}
IF (WIN32)${line.separator}
message('Win32 using Glut/glut32.lib')${line.separator}
SET(GLUT_glut_LIBRARY $${BULLET_PHYSICS_SOURCE_DIR}/Glut/glut32.lib)${line.separator}
ELSE(WIN32)${line.separator}
message('Win64 using Glut/glut64.lib')${line.separator}
SET(GLUT_glut_LIBRARY $${BULLET_PHYSICS_SOURCE_DIR}/Glut/glut64.lib)${line.separator}
ENDIF (WIN32)${line.separator}"/>
</target>
</project>