You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
668 lines
34 KiB
668 lines
34 KiB
<?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"/>
|
|
<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="-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>
|
|
|