Merge AndroidNativeBulletSubProject
This commit is contained in:
		
						commit
						20c1894409
					
				
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -71,3 +71,4 @@ | ||||
| /jme3-android-native/openal-soft/ | ||||
| /jme3-android-native/OpenALSoft.zip | ||||
| /jme3-android-native/stb_image/ | ||||
| /jme3-bullet-native-android/build/ | ||||
| @ -116,8 +116,8 @@ String findNDK() { | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| boolean ndkExists() { | ||||
|     String ndkCommandPath = findNDK() | ||||
| boolean checkNdkExists(String ndkCommandPath) { | ||||
| //    String ndkCommandPath = findNDK() | ||||
|     if (ndkCommandPath != null && new File(ndkCommandPath).exists()) { | ||||
|         return true | ||||
|     } else { | ||||
| @ -125,6 +125,11 @@ boolean ndkExists() { | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| ext { | ||||
|     ndkCommandPath = findNDK() | ||||
|     ndkExists = checkNdkExists(ndkCommandPath) | ||||
| } | ||||
| 
 | ||||
| //class IncrementalReverseTask extends DefaultTask { | ||||
| //    @InputDirectory | ||||
| //    def File inputDir | ||||
|  | ||||
| @ -12,3 +12,8 @@ buildNativeProjects = true | ||||
| # Path to android NDK for building native libraries | ||||
| #ndkPath=/Users/normenhansen/Documents/Code-Import/android-ndk-r7 | ||||
| ndkPath = D:/android/android-ndk-r8e | ||||
| 
 | ||||
| # Path for downloading native Bullet | ||||
| bulletUrl = http://bullet.googlecode.com/files/bullet-2.82-r2704.zip | ||||
| bulletFolder = bullet-2.82-r2704 | ||||
| bulletZipFile = bullet.zip | ||||
|  | ||||
| @ -39,13 +39,8 @@ ext { | ||||
|     projectClassPath = configurations.runtime.asFileTree.matching { | ||||
|         exclude ".gradle" | ||||
|     }.asPath | ||||
| 
 | ||||
|     // findNDK() is defined in the root project gradle.build so it | ||||
|     // can be visible to all subprojects that need to build an Android native lib | ||||
|     ndkCommandPath = findNDK() | ||||
| } | ||||
| //println "projectClassPath = " + projectClassPath | ||||
| //println "ndkCommandPath = " + ndkCommandPath | ||||
| 
 | ||||
| // add each native lib build file | ||||
| apply from: file('openalsoft.gradle') | ||||
|  | ||||
| @ -96,7 +96,7 @@ task buildOpenAlSoftNativeLib(type: Exec, dependsOn: generateOpenAlSoftHeaders) | ||||
| //    println "ndkCommandPath: " + project.ndkCommandPath | ||||
|     args 'TARGET_PLATFORM=android-9' | ||||
|     workingDir openalsoftBuildDir | ||||
|     executable project.ndkCommandPath | ||||
|     executable rootProject.ndkCommandPath | ||||
| } | ||||
| 
 | ||||
| task updatePreCompiledOpenAlSoftLibs(type: Copy, dependsOn: buildOpenAlSoftNativeLib) { | ||||
| @ -121,7 +121,7 @@ task copyPreCompiledOpenAlSoftLibs(type: Copy) { | ||||
|     into outputDir | ||||
| } | ||||
| 
 | ||||
| if (ndkExists()) { | ||||
| if (rootProject.ndkExists) { | ||||
|     // build native libs and update stored pre-compiled libs to commit | ||||
|     compileJava.dependsOn { updatePreCompiledOpenAlSoftLibs } | ||||
| } else { | ||||
|  | ||||
| @ -76,7 +76,7 @@ task buildStbiNativeLib(type: Exec, dependsOn: generateStbiHeaders) { | ||||
| //    println "ndkCommandPath: " + project.ndkCommandPath | ||||
|     args 'TARGET_PLATFORM=android-9' | ||||
|     workingDir stbiBuildDir | ||||
|     executable project.ndkCommandPath | ||||
|     executable rootProject.ndkCommandPath | ||||
| } | ||||
| 
 | ||||
| task updatePreCompiledStbiLibs(type: Copy, dependsOn: buildStbiNativeLib) { | ||||
| @ -100,7 +100,7 @@ task copyPreCompiledStbiLibs(type: Copy) { | ||||
|     into outputDir | ||||
| } | ||||
| 
 | ||||
| if (ndkExists()) { | ||||
| if (rootProject.ndkExists) { | ||||
|     // build native libs and update stored pre-compiled libs to commit | ||||
|     compileJava.dependsOn { updatePreCompiledStbiLibs } | ||||
| } else { | ||||
|  | ||||
							
								
								
									
										213
									
								
								jme3-bullet-native-android/build.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										213
									
								
								jme3-bullet-native-android/build.gradle
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,213 @@ | ||||
| String jmeBulletNativeProjectPath = '../jme3-bullet-native' | ||||
| 
 | ||||
| String localUnzipPath = jmeBulletNativeProjectPath | ||||
| String localZipFile = jmeBulletNativeProjectPath + File.separator + bulletZipFile | ||||
| String localZipFolder = jmeBulletNativeProjectPath + File.separator + bulletFolder | ||||
| String bulletSrcPath = localZipFolder + File.separator + 'src' | ||||
| 
 | ||||
| String jmeAndroidPath = 'src/native/android' | ||||
| String jmeCppPath = jmeBulletNativeProjectPath + '/src/native/cpp' | ||||
| 
 | ||||
| //Working directories for the ndk build. | ||||
| String ndkWorkingPath = "${buildDir}" + '/bullet' | ||||
| String jniPath = ndkWorkingPath + '/jni' | ||||
| String ndkOutputPath = ndkWorkingPath + '/libs' | ||||
| 
 | ||||
| //Pre-compiled libs directory | ||||
| String bulletPreCompiledLibsDir = 'libs' | ||||
| 
 | ||||
| if (!hasProperty('mainClass')) { | ||||
|     ext.mainClass = '' | ||||
| } | ||||
| 
 | ||||
| dependencies { | ||||
|     compile project(':jme3-bullet') | ||||
| } | ||||
| 
 | ||||
| // Java source sets for IDE acces and source jar bundling / mavenization | ||||
| sourceSets { | ||||
|     main { | ||||
|         java { | ||||
|             srcDir jmeCppPath | ||||
|             srcDir jmeAndroidPath | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| // Download bullet if not available | ||||
| task downloadBullet(type: MyDownload) { | ||||
|     sourceUrl = bulletUrl | ||||
|     target = file(localZipFile) | ||||
| } | ||||
| 
 | ||||
| // Unzip bullet if not available | ||||
| task unzipBullet(type: Copy) { | ||||
|     def zipFile = file(localZipFile) | ||||
|     def outputDir = file(localUnzipPath) | ||||
| //    println "unzipBullet zipFile = " + zipFile.absolutePath | ||||
| //    println "unzipBullet outputDir = " + outputDir.absolutePath | ||||
| 
 | ||||
|     from zipTree(zipFile) | ||||
|     into outputDir | ||||
| } | ||||
| unzipBullet.dependsOn { | ||||
|     def zipFile = file(localZipFile) | ||||
| //    println "zipFile path: " + zipFile.absolutePath | ||||
| //    println "zipFile exists: " + zipFile.exists() | ||||
| 
 | ||||
|     if (!zipFile.exists()) { | ||||
|         downloadBullet | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| // Copy Bullet files to jni directory | ||||
| task copyBullet(type: Copy) { | ||||
|     def sourceDir = file(bulletSrcPath) | ||||
|     def outputDir = new File(jniPath) | ||||
| //    println "copyBullet sourceDir = " + sourceDir | ||||
| //    println "copyBullet outputDir = " + outputDir | ||||
| 
 | ||||
|     from sourceDir | ||||
|     into outputDir | ||||
| } | ||||
| copyBullet.dependsOn { | ||||
|     def bulletUnzipDir = file(localZipFolder) | ||||
| //    println "bulletUnzipDir: " + bulletUnzipDir.absolutePath | ||||
| //    println "bulletUnzipDir exists: " + bulletUnzipDir.exists() | ||||
| //    println "bulletUnzipDir isDirectory: " + bulletUnzipDir.isDirectory() | ||||
|     if (!bulletUnzipDir.isDirectory()) { | ||||
|         unzipBullet | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| // Copy jME cpp native files to jni directory | ||||
| task copyJmeCpp(type: Copy, dependsOn:copyBullet) { | ||||
|     def sourceDir = new File(jmeCppPath) | ||||
|     def outputDir = new File(jniPath) | ||||
| //    println "copyJmeCpp sourceDir = " + sourceDir | ||||
| //    println "copyJmeCpp outputDir = " + outputDir | ||||
| 
 | ||||
|     from sourceDir | ||||
|     into outputDir | ||||
| } | ||||
| 
 | ||||
| // Copy jME android native files to jni directory | ||||
| task copyJmeAndroid(type: Copy, dependsOn:copyJmeCpp) { | ||||
|     def sourceDir = new File(jmeAndroidPath) | ||||
|     def outputDir = new File(jniPath) | ||||
| //    println "copyJmeAndroid sourceDir = " + sourceDir | ||||
| //    println "copyJmeAndroid outputDir = " + outputDir | ||||
| 
 | ||||
|     from sourceDir | ||||
|     into outputDir | ||||
| } | ||||
| 
 | ||||
| task generateNativeHeaders(dependsOn: copyJmeAndroid) << { | ||||
|     String destDirPath = jniPath | ||||
|     String classes = " \ | ||||
|             com.jme3.bullet.PhysicsSpace, \ | ||||
|             \ | ||||
|             com.jme3.bullet.collision.PhysicsCollisionEvent, \ | ||||
|             com.jme3.bullet.collision.PhysicsCollisionObject,\ | ||||
|             com.jme3.bullet.objects.PhysicsCharacter, \ | ||||
|             com.jme3.bullet.objects.PhysicsGhostObject, \ | ||||
|             com.jme3.bullet.objects.PhysicsRigidBody, \ | ||||
|             com.jme3.bullet.objects.PhysicsVehicle, \ | ||||
|             com.jme3.bullet.objects.VehicleWheel, \ | ||||
|             com.jme3.bullet.objects.infos.RigidBodyMotionState, \ | ||||
|             \ | ||||
|             com.jme3.bullet.collision.shapes.CollisionShape, \ | ||||
|             com.jme3.bullet.collision.shapes.BoxCollisionShape, \ | ||||
|             com.jme3.bullet.collision.shapes.CapsuleCollisionShape, \ | ||||
|             com.jme3.bullet.collision.shapes.CompoundCollisionShape, \ | ||||
|             com.jme3.bullet.collision.shapes.ConeCollisionShape, \ | ||||
|             com.jme3.bullet.collision.shapes.CylinderCollisionShape, \ | ||||
|             com.jme3.bullet.collision.shapes.GImpactCollisionShape, \ | ||||
|             com.jme3.bullet.collision.shapes.HeightfieldCollisionShape, \ | ||||
|             com.jme3.bullet.collision.shapes.HullCollisionShape, \ | ||||
|             com.jme3.bullet.collision.shapes.MeshCollisionShape, \ | ||||
|             com.jme3.bullet.collision.shapes.PlaneCollisionShape, \ | ||||
|             com.jme3.bullet.collision.shapes.SimplexCollisionShape, \ | ||||
|             com.jme3.bullet.collision.shapes.SphereCollisionShape, \ | ||||
|             \ | ||||
|             com.jme3.bullet.joints.PhysicsJoint, \ | ||||
|             com.jme3.bullet.joints.ConeJoint, \ | ||||
|             com.jme3.bullet.joints.HingeJoint, \ | ||||
|             com.jme3.bullet.joints.Point2PointJoint, \ | ||||
|             com.jme3.bullet.joints.SixDofJoint, \ | ||||
|             com.jme3.bullet.joints.SixDofSpringJoint, \ | ||||
|             com.jme3.bullet.joints.SliderJoint, \ | ||||
|             com.jme3.bullet.joints.motors.RotationalLimitMotor, \ | ||||
|             com.jme3.bullet.joints.motors.TranslationalLimitMotor, \ | ||||
|             \ | ||||
|             com.jme3.bullet.util.NativeMeshUtil, \ | ||||
|             com.jme3.bullet.util.DebugShapeFactory, \ | ||||
|             " | ||||
| 
 | ||||
|     String projectClassPath = configurations.runtime.asFileTree.matching { | ||||
|         exclude ".gradle" | ||||
|     }.asPath | ||||
| 
 | ||||
|     ant.javah( | ||||
|         classpath: projectClassPath, | ||||
|         destdir: destDirPath, | ||||
|         class: classes | ||||
|     ) | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| task buildBulletNativeLib(type: Exec, dependsOn: generateNativeHeaders) { | ||||
|     args 'TARGET_PLATFORM=android-9' | ||||
| //    println "buildBulletNativeLib ndkWorkingPath: " + ndkWorkingPath | ||||
| //    println "buildBulletNativeLib rootProject.ndkCommandPath: " + rootProject.ndkCommandPath | ||||
|     workingDir ndkWorkingPath | ||||
|     executable rootProject.ndkCommandPath | ||||
| } | ||||
| 
 | ||||
| //task updatePreCompiledBulletLibs(type: Copy, dependsOn: generateNativeHeaders) { | ||||
| task updatePreCompiledBulletLibs(type: Copy, dependsOn: buildBulletNativeLib) { | ||||
|     def sourceDir = new File(ndkOutputPath) | ||||
|     def outputDir = new File(bulletPreCompiledLibsDir) | ||||
| //    println "updatePreCompiledBulletLibs sourceDir: " + sourceDir | ||||
| //    println "updatePreCompiledBulletLibs outputDir: " + outputDir | ||||
| 
 | ||||
|     from sourceDir | ||||
|     into outputDir | ||||
| } | ||||
| 
 | ||||
| // Copy pre-compiled libs to build directory (when not building new libs) | ||||
| task copyPreCompiledBulletLibs(type: Copy) { | ||||
|     def sourceDir = new File(bulletPreCompiledLibsDir) | ||||
|     def outputDir = new File(ndkOutputPath) | ||||
| //    println "copyPreCompiledBulletLibs sourceDir: " + sourceDir | ||||
| //    println "copyPreCompiledBulletLibs outputDir: " + outputDir | ||||
| 
 | ||||
|     from sourceDir | ||||
|     into outputDir | ||||
| } | ||||
| 
 | ||||
| if (rootProject.ndkExists) { | ||||
|     // build native libs and update stored pre-compiled libs to commit | ||||
|     compileJava.dependsOn { updatePreCompiledBulletLibs } | ||||
| } else { | ||||
|     // use pre-compiled native libs (not building new ones) | ||||
|     compileJava.dependsOn { copyPreCompiledBulletLibs } | ||||
| } | ||||
| 
 | ||||
| jar.into("lib") { from ndkOutputPath } | ||||
| 
 | ||||
| 
 | ||||
| // Helper class to wrap ant dowload task | ||||
| class MyDownload extends DefaultTask { | ||||
|     @Input | ||||
|     String sourceUrl | ||||
| 
 | ||||
|     @OutputFile | ||||
|     File target | ||||
| 
 | ||||
|     @TaskAction | ||||
|     void download() { | ||||
|        ant.get(src: sourceUrl, dest: target) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
							
								
								
									
										
											BIN
										
									
								
								jme3-bullet-native-android/libs/armeabi-v7a/libbulletjme.so
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								jme3-bullet-native-android/libs/armeabi-v7a/libbulletjme.so
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								jme3-bullet-native-android/libs/armeabi/libbulletjme.so
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								jme3-bullet-native-android/libs/armeabi/libbulletjme.so
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								jme3-bullet-native-android/libs/mips/libbulletjme.so
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								jme3-bullet-native-android/libs/mips/libbulletjme.so
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								jme3-bullet-native-android/libs/x86/libbulletjme.so
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								jme3-bullet-native-android/libs/x86/libbulletjme.so
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										65
									
								
								jme3-bullet-native-android/src/native/android/Android.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								jme3-bullet-native-android/src/native/android/Android.mk
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,65 @@ | ||||
| # /*
 | ||||
| # Bullet Continuous Collision Detection and Physics Library for Android NDK
 | ||||
| # Copyright (c) 2006-2009 Noritsuna Imamura  <a href="http://www.siprop.org/" rel="nofollow">http://www.siprop.org/</a>
 | ||||
| #
 | ||||
| # This software is provided 'as-is', without any express or implied warranty.
 | ||||
| # In no event will the authors be held liable for any damages arising from the use of this software.
 | ||||
| # Permission is granted to anyone to use this software for any purpose,
 | ||||
| # including commercial applications, and to alter it and redistribute it freely,
 | ||||
| # subject to the following restrictions:
 | ||||
| #
 | ||||
| # 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
 | ||||
| # 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
 | ||||
| # 3. This notice may not be removed or altered from any source distribution.
 | ||||
| # */
 | ||||
| LOCAL_PATH:= $(call my-dir) | ||||
| BULLET_PATH:= ${LOCAL_PATH}/../ | ||||
| 
 | ||||
| include $(CLEAR_VARS) | ||||
| 
 | ||||
| LOCAL_MODULE    := bulletjme | ||||
| LOCAL_C_INCLUDES := $(BULLET_PATH)/\
 | ||||
|     $(BULLET_PATH)/BulletCollision\
 | ||||
|     $(BULLET_PATH)/BulletCollision/BroadphaseCollision\
 | ||||
|     $(BULLET_PATH)/BulletCollision/CollisionDispatch\
 | ||||
|     $(BULLET_PATH)/BulletCollision/CollisionShapes\
 | ||||
|     $(BULLET_PATH)/BulletCollision/NarrowPhaseCollision\
 | ||||
|     $(BULLET_PATH)/BulletCollision/Gimpact\
 | ||||
|     $(BULLET_PATH)/BulletDynamics\
 | ||||
|     $(BULLET_PATH)/BulletDynamics/ConstraintSolver\
 | ||||
|     $(BULLET_PATH)/BulletDynamics/Dynamics\
 | ||||
|     $(BULLET_PATH)/BulletDynamics/Vehicle\
 | ||||
|     $(BULLET_PATH)/BulletDynamics/Character\
 | ||||
|     $(BULLET_PATH)/BulletMultiThreaded\
 | ||||
|     $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers\
 | ||||
|     $(BULLET_PATH)/BulletMultiThreaded/SpuNarrowPhaseCollisionTask\
 | ||||
|     $(BULLET_PATH)/BulletMultiThreaded/SpuSampleTask\
 | ||||
|     $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/CPU\
 | ||||
|     $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/DX11\
 | ||||
|     $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL\
 | ||||
|     $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL\
 | ||||
|     $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/AMD\
 | ||||
|     $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/Apple\
 | ||||
|     $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL\
 | ||||
|     $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/NVidia\
 | ||||
|     $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC\
 | ||||
|     $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10\
 | ||||
|     $(BULLET_PATH)/LinearMath\
 | ||||
|     $(BULLET_PATH)/BulletSoftBody\
 | ||||
|     $(BULLET_PATH)/LinearMath\
 | ||||
|     $(BULLET_PATH)/MiniCL\
 | ||||
|     $(BULLET_PATH)/MiniCL/MiniCLTask\
 | ||||
|     $(BULLET_PATH)/vectormath\
 | ||||
|     $(BULLET_PATH)/vectormath/scalar\
 | ||||
|     $(BULLET_PATH)/vectormath/sse\
 | ||||
|     $(BULLET_PATH)/vectormath/neon | ||||
| 
 | ||||
| LOCAL_CFLAGS := $(LOCAL_C_INCLUDES:%=-I%) | ||||
| LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -ldl -lm -llog | ||||
| 
 | ||||
| FILE_LIST := $(wildcard $(LOCAL_PATH)/*.cpp) | ||||
| FILE_LIST += $(wildcard $(LOCAL_PATH)/**/*.cpp) | ||||
| FILE_LIST += $(wildcard $(LOCAL_PATH)/**/**/*.cpp) | ||||
| LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%) | ||||
| 
 | ||||
| include $(BUILD_SHARED_LIBRARY) | ||||
| @ -0,0 +1,4 @@ | ||||
| APP_OPTIM := release | ||||
| APP_ABI := all | ||||
| #APP_ABI := armeabi-v7a
 | ||||
| APP_MODULES      := bulletjme | ||||
| @ -27,6 +27,7 @@ include 'jme3-ios' | ||||
| include 'jme3-bullet' //java | ||||
| if(buildNativeProjects == "true"){ | ||||
|     include 'jme3-bullet-native' //cpp | ||||
|     include 'jme3-bullet-native-android' //cpp | ||||
| } | ||||
| include 'jme3-android-native' //cpp | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user