ソースを参照

Add PhysX support to Android

Daniele Bartolini 12 年 前
コミット
312e67b811
2 ファイル変更148 行追加35 行削除
  1. 131 35
      engine/Android.mk
  2. 17 0
      utils/crown-android.rb

+ 131 - 35
engine/Android.mk

@@ -25,6 +25,71 @@ LOCAL_MODULE := vorbis
 LOCAL_SRC_FILES := libvorbis.a
 include $(PREBUILT_STATIC_LIBRARY)
 
+###############################################################################
+# nvidia physx
+###############################################################################
+include $(CLEAR_VARS)
+LOCAL_MODULE := PhysX3
+LOCAL_SRC_FILES := libPhysX3.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := SimulationController
+LOCAL_SRC_FILES := libSimulationController.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := LowLevel
+LOCAL_SRC_FILES := libLowLevel.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := LowLevelCloth
+LOCAL_SRC_FILES := libLowLevelCloth.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := PxTask
+LOCAL_SRC_FILES := libPxTask.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := PhysX3Extensions
+LOCAL_SRC_FILES := libPhysX3Extensions.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := SceneQuery
+LOCAL_SRC_FILES := libSceneQuery.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := PhysX3Common
+LOCAL_SRC_FILES := libPhysX3Common.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := PhysX3CharacterKinematic
+LOCAL_SRC_FILES := libPhysX3CharacterKinematic.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := PhysXProfileSDK
+LOCAL_SRC_FILES := libPhysXProfileSDK.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+PhysX_libraries :=\
+	LowLevel\
+	LowLevelCloth\
+	PhysX3\
+	PhysX3CharacterKinematic\
+	PhysX3Common\
+	PhysX3Extensions\
+	PhysXProfileSDK\
+	PxTask\
+	SceneQuery\
+	SimulationController\
+
 ###############################################################################
 # libcrown
 ###############################################################################
@@ -38,9 +103,9 @@ LOCAL_SRC_FILES :=\
 \
 	core/compressors/ZipCompressor.cpp\
 \
-	core/filesystem/File.cpp\
 	core/filesystem/DiskFile.cpp\
 	core/filesystem/DiskFilesystem.cpp\
+	core/filesystem/File.cpp\
 \
 	core/json/JSON.cpp\
 	core/json/JSONParser.cpp\
@@ -56,10 +121,10 @@ LOCAL_SRC_FILES :=\
 \
 	core/mem/HeapAllocator.cpp\
 	core/mem/LinearAllocator.cpp\
+	core/mem/Memory.cpp\
+	core/mem/PoolAllocator.cpp\
 	core/mem/ProxyAllocator.cpp\
 	core/mem/StackAllocator.cpp\
-	core/mem/PoolAllocator.cpp\
-	core/mem/Memory.cpp\
 \
 	core/settings/FloatSetting.cpp\
 	core/settings/IntSetting.cpp\
@@ -68,58 +133,67 @@ LOCAL_SRC_FILES :=\
 	core/Args.cpp\
 	core/Log.cpp\
 \
-	os/android/AndroidOS.cpp\
 	os/android/AndroidDevice.cpp\
-	os/android/OsWindow.cpp\
+	os/android/AndroidOS.cpp\
 	os/android/ApkFile.cpp\
 	os/android/ApkFilesystem.cpp\
+	os/android/OsWindow.cpp\
 	os/posix/OsFile.cpp\
 \
-	renderers/gl/GLRenderer.cpp\
-	renderers/gl/egl/GLContext.cpp\
+	physics/Actor.cpp\
+	physics/Controller.cpp\
+	physics/PhysicsWorld.cpp\
+\
+	renderers/backend/gl/egl/GLContext.cpp\
+	renderers/backend/gl/GLRenderer.cpp\
+\
+	renderers/Material.cpp\
+	renderers/Mesh.cpp\
+	renderers/RenderWorld.cpp\
+	renderers/Sprite.cpp\
 \
 	resource/FileBundle.cpp\
 	resource/ResourceLoader.cpp\
 	resource/ResourceManager.cpp\
 	resource/ResourceRegistry.cpp\
 \
-	lua/LuaStack.cpp\
-	lua/LuaEnvironment.cpp\
 	lua/LuaAccelerometer.cpp\
+	lua/LuaActor.cpp\
+	lua/LuaCamera.cpp\
+	lua/LuaController.cpp\
 	lua/LuaDevice.cpp\
+	lua/LuaEnvironment.cpp\
+	lua/LuaFloatSetting.cpp\
+	lua/LuaIntSetting.cpp\
 	lua/LuaKeyboard.cpp\
-	lua/LuaMatrix4x4.cpp\
 	lua/LuaMath.cpp\
+	lua/LuaMatrix4x4.cpp\
+	lua/LuaMesh.cpp\
 	lua/LuaMouse.cpp\
+	lua/LuaPhysicsWorld.cpp\
 	lua/LuaQuaternion.cpp\
+	lua/LuaResourcePackage.cpp\
+	lua/LuaSprite.cpp\
+	lua/LuaStack.cpp\
+	lua/LuaStringSetting.cpp\
 	lua/LuaTouch.cpp\
+	lua/LuaUnit.cpp\
 	lua/LuaVector2.cpp\
 	lua/LuaVector3.cpp\
 	lua/LuaWindow.cpp\
-	lua/LuaIntSetting.cpp\
-	lua/LuaFloatSetting.cpp\
-	lua/LuaStringSetting.cpp\
-	lua/LuaResourcePackage.cpp\
-	lua/LuaUnit.cpp\
-	lua/LuaCamera.cpp\
 	lua/LuaWorld.cpp\
-	lua/LuaMesh.cpp\
-	lua/LuaSprite.cpp\
-	lua/LuaActor.cpp\
-	lua/LuaPhysicsWorld.cpp\
 \
-	audio/sles/SLESRenderer.cpp\
+	world/Camera.cpp\
+	world/SceneGraph.cpp\
+	world/SceneGraphManager.cpp\
+	world/Unit.cpp\
+	world/World.cpp\
+	world/WorldManager.cpp\
 \
-	Camera.cpp\
-	Device.cpp\
-	Mesh.cpp\
-	RenderWorld.cpp\
-	SceneGraph.cpp\
-	Sprite.cpp\
-	Unit.cpp\
-	World.cpp\
 	ConsoleServer.cpp\
+	Device.cpp\
 \
+	audio/sles/SLESRenderer.cpp\
 
 LOCAL_C_INCLUDES	:=\
 	$(LOCAL_PATH)/\
@@ -135,7 +209,6 @@ LOCAL_C_INCLUDES	:=\
 	$(LOCAL_PATH)/core/settings\
 	$(LOCAL_PATH)/core/strings\
 	$(LOCAL_PATH)/resource\
-	$(LOCAL_PATH)/rpc\
 	$(LOCAL_PATH)/input\
 	$(LOCAL_PATH)/lua\
 	$(LOCAL_PATH)/audio\
@@ -143,16 +216,39 @@ LOCAL_C_INCLUDES	:=\
 	$(LOCAL_PATH)/os\
 	$(LOCAL_PATH)/os/android\
 	$(LOCAL_PATH)/os/posix\
+	$(LOCAL_PATH)/physics\
 	$(LOCAL_PATH)/renderers\
-	$(LOCAL_PATH)/renderers/gl\
-	$(LOCAL_PATH)/renderers/gl/egl\
+	$(LOCAL_PATH)/renderers/backend\
+	$(LOCAL_PATH)/renderers/backend/gl\
+	$(LOCAL_PATH)/renderers/backend/gl/egl\
+	$(LOCAL_PATH)/world\
+\
 	$(LOCAL_PATH)/third/ARMv7/luajit/include/luajit-2.0\
+\
 	$(LOCAL_PATH)/third/ARMv7/oggvorbis/include\
+\
+	$(LOCAL_PATH)/third/ARMv7/physx/include\
+	$(LOCAL_PATH)/third/ARMv7/physx/include/common\
+	$(LOCAL_PATH)/third/ARMv7/physx/include/characterkinematic\
+	$(LOCAL_PATH)/third/ARMv7/physx/include/cloth\
+	$(LOCAL_PATH)/third/ARMv7/physx/include/common\
+	$(LOCAL_PATH)/third/ARMv7/physx/include/cooking\
+	$(LOCAL_PATH)/third/ARMv7/physx/include/extensions\
+	$(LOCAL_PATH)/third/ARMv7/physx/include/foundation\
+	$(LOCAL_PATH)/third/ARMv7/physx/include/geometry\
+	$(LOCAL_PATH)/third/ARMv7/physx/include/particles\
+	$(LOCAL_PATH)/third/ARMv7/physx/include/physxprofilesdk\
+	$(LOCAL_PATH)/third/ARMv7/physx/include/physxvisualdebuggersdk\
+	$(LOCAL_PATH)/third/ARMv7/physx/include/pvd\
+	$(LOCAL_PATH)/third/ARMv7/physx/include/pxtask\
+	$(LOCAL_PATH)/third/ARMv7/physx/include/RepX\
+	$(LOCAL_PATH)/third/ARMv7/physx/include/RepXUpgrader\
+	$(LOCAL_PATH)/third/ARMv7/physx/include/vehicle\
 	
-LOCAL_CPPFLAGS	:= -g -fexceptions -std=c++03 -ansi -pedantic -Wall -Wextra -Wno-long-long -Wno-variadic-macros
-LOCAL_LDLIBS	:= -llog -landroid -lEGL -lGLESv2 -lz -lOpenSLES
+LOCAL_CPPFLAGS := -g -fexceptions -std=c++03 -ansi -Wall -Wextra -Wno-long-long -Wno-variadic-macros -Wno-missing-braces -Wno-unused-parameter -Wno-unknown-pragmas -Wno-format
+LOCAL_LDLIBS := -L$(LOCAL_PATH) -Wl,--start-group $(addprefix -l, $(PhysX_libraries)) -Wl,--end-group -llog -landroid -lEGL -lGLESv2 -lz -lOpenSLES
 LOCAL_SHARED_LIBRARIES := luajit-5.1
-LOCAL_STATIC_LIBRARIES := android_native_app_glue vorbis ogg
+LOCAL_STATIC_LIBRARIES := android_native_app_glue ogg vorbis
 include $(BUILD_SHARED_LIBRARY)
 
 $(call import-module,android/native_app_glue)

+ 17 - 0
utils/crown-android.rb

@@ -38,6 +38,7 @@ $manifest			= "../engine/os/android/AndroidManifest.xml"
 
 $luajit				= "../engine/third/ARMv7/luajit"
 $oggvorbis			= "../engine/third/ARMv7/oggvorbis"
+$physx				= "../engine/third/ARMv7/physx"
 
 #------------------------------------------------------------------------------
 def validate_command_line(args)
@@ -164,6 +165,22 @@ def fill_android_project(res, path)
 	FileUtils.cp($oggvorbis + "/lib/libvorbis.a", engine_dest + "/libvorbis.a")
 	print "Copied oggvorbis libs to " + engine_dest + "\n"
 
+	# Copy physx lib
+	FileUtils.cp($physx + "/lib/libPhysX3.a", engine_dest)
+	FileUtils.cp($physx + "/lib/libSimulationController.a", engine_dest)
+	FileUtils.cp($physx + "/lib/libLowLevel.a", engine_dest)
+	FileUtils.cp($physx + "/lib/libLowLevelCloth.a", engine_dest)
+	FileUtils.cp($physx + "/lib/libPxTask.a", engine_dest)
+	FileUtils.cp($physx + "/lib/libPhysXProfileSDK.a", engine_dest)
+	FileUtils.cp($physx + "/lib/libPhysX3Extensions.a", engine_dest)
+	FileUtils.cp($physx + "/lib/libSceneQuery.a", engine_dest)
+	FileUtils.cp($physx + "/lib/libPhysX3Common.a", engine_dest)
+	FileUtils.cp($physx + "/lib/libPhysX3CharacterKinematic.a", engine_dest)
+	FileUtils.cp($physx + "/lib/libPhysX3Vehicle.a", engine_dest)
+	FileUtils.cp($physx + "/lib/libPhysX3Cooking.a", engine_dest)
+	FileUtils.cp($physx + "/lib/libPvdRuntime.a", engine_dest)
+	FileUtils.cp($physx + "/lib/libRepX3.a", engine_dest)
+
 	# Copy Java files
 	FileUtils.cp_r(Dir.glob($android_src), android_dest, :remove_destination => true)
 	print "Copied Java files to " + android_dest + "\n"