Android build: Difference between revisions
Sandstranger (talk | contribs) (Blanked the page) |
Lgromanowski (talk | contribs) m (Reverted edits by Sandstranger (talk) to last revision by Scrawl) |
||
Line 1: | Line 1: | ||
== Android build OpenMW == | |||
=== Preparation of building environment === | |||
Before you start building OpenMW on Android you have to do few steps of preparation: | |||
# Download Crystax NDK (because it supports wchar and long long types) from [https://github.com/crystax/android-platform-ndk GitHub repo], or [https://drive.google.com/file/d/0B5mOME9qjLFuZmZoXzJTSUMwQmM/edit?usp=sharing Google Drive] | |||
# Download and install [http://developer.android.com/sdk/index.html Google Android SDK] | |||
# Download [https://github.com/taka-no-me/android-cmake Cmake for Android] (it will be used for OpenMW and its dependencies compilation) | |||
# Download all OpenMW dependencies, ie: | |||
#* Ogre 1.9 | |||
#* Openal | |||
#* boost | |||
#* bullet | |||
#* Sdl2 | |||
#* Qt 4.8 | |||
#* ffmpeg | |||
#* freeimage | |||
#* freetype | |||
#* mygui | |||
#* zzip | |||
#* zlib | |||
=== Compilation of OpenMW dependencies === | |||
Then you should add PATH for crystax ndk and google sdk. | |||
==== Building Boost ==== | |||
For building boost I used it. You must build Ogre with Boost! | |||
https://github.com/MysticTreeGames/Boost-for-Android | |||
==== Building Freetype ==== | |||
Then you must build freetype | |||
http://www.freetype.org/ | |||
For example like this | |||
<syntaxhighlight lang="bash"> | |||
cmake /home/sylar/freetype -DCMAKE_TOOLCHAIN_FILE=/home/sylar/android-cmake-master/android.toolchain.cmake -DANDROID_NATIVE_API_LEVEL=14 | |||
</syntaxhighlight> | |||
==== Building Freeimage ==== | |||
Then you must build freeimage. I used this tutorial for building | |||
http://freeimage.sourceforge.net/ | |||
http://recursify.com/blog/2013/05/25/building-freeimage-for-android | |||
Since my phone supports manual armeabi-v7a I used this architecture for building. For example. | |||
<syntaxhighlight lang="bash"> | |||
ndk-build APP_PLATFORM=android-14 APP_ABI=armeabi-v7a | |||
</syntaxhighlight> | |||
Android.mk for building freeimage | |||
<syntaxhighlight lang="cmake"> | |||
LOCAL_PATH := $(call my-dir) | |||
include $(CLEAR_VARS) | |||
GLOBAL_C_INCLUDES := \ | |||
$(LOCAL_PATH)/../Source \ | |||
$(LOCAL_PATH)/../Source \ | |||
$(LOCAL_PATH)/../Source/DeprecationManager \ | |||
$(LOCAL_PATH)/../Source/FreeImage \ | |||
$(LOCAL_PATH)/../Source/FreeImageLib \ | |||
$(LOCAL_PATH)/../Source/FreeImageToolkit \ | |||
$(LOCAL_PATH)/../Source/LibJPEG \ | |||
$(LOCAL_PATH)/../Source/LibMNG \ | |||
$(LOCAL_PATH)/../Source/LibOpenJPEG \ | |||
$(LOCAL_PATH)/../Source/LibPNG \ | |||
$(LOCAL_PATH)/../Source/LibTIFF \ | |||
$(LOCAL_PATH)/../Source/Metadata \ | |||
$(LOCAL_PATH)/../Source/OpenEXR \ | |||
$(LOCAL_PATH)/../Source/OpenEXR/Copyrights \ | |||
$(LOCAL_PATH)/../Source/OpenEXR/Half \ | |||
$(LOCAL_PATH)/../Source/OpenEXR/Iex \ | |||
$(LOCAL_PATH)/../Source/OpenEXR/IlmImf \ | |||
$(LOCAL_PATH)/../Source/OpenEXR/IlmThread \ | |||
$(LOCAL_PATH)/../Source/OpenEXR/Imath \ | |||
$(LOCAL_PATH)/../Source/ZLib \ | |||
LOCAL_SRC_FILES = ../Source/FreeImage/BitmapAccess.cpp ../Source/FreeImage/ColorLookup.cpp ../Source/FreeImage/FreeImage.cpp \ | |||
../Source/FreeImage/FreeImageC.c ../Source/FreeImage/FreeImageIO.cpp ../Source/FreeImage/GetType.cpp ../Source/FreeImage/MemoryIO.cpp \ | |||
../Source/FreeImage/PixelAccess.cpp ../Source/FreeImage/J2KHelper.cpp ../Source/FreeImage/MNGHelper.cpp ../Source/FreeImage/Plugin.cpp \ | |||
../Source/FreeImage/PluginBMP.cpp ../Source/FreeImage/PluginCUT.cpp ../Source/FreeImage/PluginDDS.cpp ../Source/FreeImage/PluginEXR.cpp \ | |||
../Source/FreeImage/PluginG3.cpp ../Source/FreeImage/PluginGIF.cpp ../Source/FreeImage/PluginHDR.cpp ../Source/FreeImage/PluginICO.cpp \ | |||
../Source/FreeImage/PluginIFF.cpp ../Source/FreeImage/PluginJ2K.cpp ../Source/FreeImage/PluginJNG.cpp ../Source/FreeImage/PluginJP2.cpp \ | |||
../Source/FreeImage/PluginJPEG.cpp ../Source/FreeImage/PluginKOALA.cpp ../Source/FreeImage/PluginMNG.cpp ../Source/FreeImage/PluginPCD.cpp \ | |||
../Source/FreeImage/PluginPCX.cpp ../Source/FreeImage/PluginPFM.cpp ../Source/FreeImage/PluginPICT.cpp ../Source/FreeImage/PluginPNG.cpp \ | |||
../Source/FreeImage/PluginPNM.cpp ../Source/FreeImage/PluginPSD.cpp ../Source/FreeImage/PluginRAS.cpp ../Source/FreeImage/PluginSGI.cpp \ | |||
../Source/FreeImage/PluginTARGA.cpp ../Source/FreeImage/PluginTIFF.cpp ../Source/FreeImage/PluginWBMP.cpp ../Source/FreeImage/PluginXBM.cpp \ | |||
../Source/FreeImage/PluginXPM.cpp ../Source/FreeImage/PSDParser.cpp ../Source/FreeImage/TIFFLogLuv.cpp ../Source/FreeImage/Conversion.cpp \ | |||
../Source/FreeImage/Conversion16_555.cpp ../Source/FreeImage/Conversion16_565.cpp ../Source/FreeImage/Conversion24.cpp \ | |||
../Source/FreeImage/Conversion32.cpp ../Source/FreeImage/Conversion4.cpp ../Source/FreeImage/Conversion8.cpp ../Source/FreeImage/ConversionFloat.cpp \ | |||
../Source/FreeImage/ConversionRGB16.cpp ../Source/FreeImage/ConversionRGBF.cpp ../Source/FreeImage/ConversionType.cpp \ | |||
../Source/FreeImage/ConversionUINT16.cpp ../Source/FreeImage/Halftoning.cpp ../Source/FreeImage/tmoColorConvert.cpp ../Source/FreeImage/tmoDrago03.cpp \ | |||
../Source/FreeImage/tmoFattal02.cpp ../Source/FreeImage/tmoReinhard05.cpp ../Source/FreeImage/ToneMapping.cpp ../Source/FreeImage/NNQuantizer.cpp \ | |||
../Source/FreeImage/WuQuantizer.cpp ../Source/DeprecationManager/Deprecated.cpp ../Source/DeprecationManager/DeprecationMgr.cpp \ | |||
../Source/FreeImage/CacheFile.cpp ../Source/FreeImage/MultiPage.cpp ../Source/FreeImage/ZLibInterface.cpp ../Source/Metadata/Exif.cpp \ | |||
../Source/Metadata/FIRational.cpp ../Source/Metadata/FreeImageTag.cpp ../Source/Metadata/IPTC.cpp ../Source/Metadata/TagConversion.cpp \ | |||
../Source/Metadata/TagLib.cpp ../Source/Metadata/XTIFF.cpp ../Source/FreeImageToolkit/Background.cpp ../Source/FreeImageToolkit/BSplineRotate.cpp \ | |||
../Source/FreeImageToolkit/Channels.cpp ../Source/FreeImageToolkit/ClassicRotate.cpp ../Source/FreeImageToolkit/Colors.cpp \ | |||
../Source/FreeImageToolkit/CopyPaste.cpp ../Source/FreeImageToolkit/Display.cpp ../Source/FreeImageToolkit/Flip.cpp ../Source/FreeImageToolkit/JPEGTransform.cpp \ | |||
../Source/FreeImageToolkit/MultigridPoissonSolver.cpp ../Source/FreeImageToolkit/Rescale.cpp ../Source/FreeImageToolkit/Resize.cpp \ | |||
../Source/LibJPEG/./jaricom.c ../Source/LibJPEG/jcapimin.c ../Source/LibJPEG/jcapistd.c ../Source/LibJPEG/./jcarith.c ../Source/LibJPEG/jccoefct.c \ | |||
../Source/LibJPEG/jccolor.c ../Source/LibJPEG/jcdctmgr.c ../Source/LibJPEG/jchuff.c ../Source/LibJPEG/jcinit.c ../Source/LibJPEG/jcmainct.c \ | |||
../Source/LibJPEG/jcmarker.c ../Source/LibJPEG/jcmaster.c ../Source/LibJPEG/jcomapi.c ../Source/LibJPEG/jcparam.c ../Source/LibJPEG/jcprepct.c \ | |||
../Source/LibJPEG/jcsample.c ../Source/LibJPEG/jctrans.c ../Source/LibJPEG/jdapimin.c ../Source/LibJPEG/jdapistd.c ../Source/LibJPEG/./jdarith.c \ | |||
../Source/LibJPEG/jdatadst.c ../Source/LibJPEG/jdatasrc.c ../Source/LibJPEG/jdcoefct.c ../Source/LibJPEG/jdcolor.c ../Source/LibJPEG/jddctmgr.c \ | |||
../Source/LibJPEG/jdhuff.c ../Source/LibJPEG/jdinput.c ../Source/LibJPEG/jdmainct.c ../Source/LibJPEG/jdmarker.c ../Source/LibJPEG/jdmaster.c \ | |||
../Source/LibJPEG/jdmerge.c ../Source/LibJPEG/jdpostct.c ../Source/LibJPEG/jdsample.c ../Source/LibJPEG/jdtrans.c ../Source/LibJPEG/jerror.c \ | |||
../Source/LibJPEG/jfdctflt.c ../Source/LibJPEG/jfdctfst.c ../Source/LibJPEG/jfdctint.c ../Source/LibJPEG/jidctflt.c ../Source/LibJPEG/jidctfst.c \ | |||
../Source/LibJPEG/jidctint.c ../Source/LibJPEG/jmemmgr.c ../Source/LibJPEG/jmemnobs.c ../Source/LibJPEG/jquant1.c ../Source/LibJPEG/jquant2.c \ | |||
../Source/LibJPEG/jutils.c ../Source/LibJPEG/transupp.c ../Source/LibPNG/./png.c ../Source/LibPNG/./pngerror.c ../Source/LibPNG/./pngget.c \ | |||
../Source/LibPNG/./pngmem.c ../Source/LibPNG/./pngpread.c ../Source/LibPNG/./pngread.c ../Source/LibPNG/./pngrio.c ../Source/LibPNG/./pngrtran.c \ | |||
../Source/LibPNG/./pngrutil.c ../Source/LibPNG/./pngset.c ../Source/LibPNG/./pngtrans.c ../Source/LibPNG/./pngwio.c ../Source/LibPNG/./pngwrite.c \ | |||
../Source/LibPNG/./pngwtran.c ../Source/LibPNG/./pngwutil.c ../Source/LibTIFF4/./tif_aux.c ../Source/LibTIFF4/./tif_close.c ../Source/LibTIFF4/./tif_codec.c \ | |||
../Source/LibTIFF4/./tif_color.c ../Source/LibTIFF4/./tif_compress.c ../Source/LibTIFF4/./tif_dir.c ../Source/LibTIFF4/./tif_dirinfo.c \ | |||
../Source/LibTIFF4/./tif_dirread.c ../Source/LibTIFF4/./tif_dirwrite.c ../Source/LibTIFF4/./tif_dumpmode.c ../Source/LibTIFF4/./tif_error.c \ | |||
../Source/LibTIFF4/./tif_extension.c ../Source/LibTIFF4/./tif_fax3.c ../Source/LibTIFF4/./tif_fax3sm.c ../Source/LibTIFF4/./tif_flush.c \ | |||
../Source/LibTIFF4/./tif_getimage.c ../Source/LibTIFF4/./tif_jpeg.c ../Source/LibTIFF4/./tif_luv.c ../Source/LibTIFF4/./tif_lzma.c \ | |||
../Source/LibTIFF4/./tif_lzw.c ../Source/LibTIFF4/./tif_next.c ../Source/LibTIFF4/./tif_ojpeg.c ../Source/LibTIFF4/./tif_open.c ../Source/LibTIFF4/./tif_packbits.c \ | |||
../Source/LibTIFF4/./tif_pixarlog.c ../Source/LibTIFF4/./tif_predict.c ../Source/LibTIFF4/./tif_print.c ../Source/LibTIFF4/./tif_read.c \ | |||
../Source/LibTIFF4/./tif_strip.c ../Source/LibTIFF4/./tif_swab.c ../Source/LibTIFF4/./tif_thunder.c ../Source/LibTIFF4/./tif_tile.c \ | |||
../Source/LibTIFF4/./tif_version.c ../Source/LibTIFF4/./tif_warning.c ../Source/LibTIFF4/./tif_write.c ../Source/LibTIFF4/./tif_zip.c \ | |||
../Source/ZLib/./adler32.c ../Source/ZLib/./compress.c ../Source/ZLib/./crc32.c ../Source/ZLib/./deflate.c ../Source/ZLib/./gzclose.c \ | |||
../Source/ZLib/./gzlib.c ../Source/ZLib/./gzread.c ../Source/ZLib/./gzwrite.c ../Source/ZLib/./infback.c ../Source/ZLib/./inffast.c ../Source/ZLib/./inflate.c \ | |||
../Source/ZLib/./inftrees.c ../Source/ZLib/./trees.c ../Source/ZLib/./uncompr.c ../Source/ZLib/./zutil.c ../Source/LibOpenJPEG/bio.c \ | |||
../Source/LibOpenJPEG/./cidx_manager.c ../Source/LibOpenJPEG/cio.c ../Source/LibOpenJPEG/dwt.c ../Source/LibOpenJPEG/event.c ../Source/LibOpenJPEG/image.c \ | |||
../Source/LibOpenJPEG/j2k.c ../Source/LibOpenJPEG/j2k_lib.c ../Source/LibOpenJPEG/jp2.c ../Source/LibOpenJPEG/jpt.c ../Source/LibOpenJPEG/mct.c \ | |||
../Source/LibOpenJPEG/mqc.c ../Source/LibOpenJPEG/openjpeg.c ../Source/LibOpenJPEG/./phix_manager.c ../Source/LibOpenJPEG/pi.c \ | |||
../Source/LibOpenJPEG/./ppix_manager.c ../Source/LibOpenJPEG/raw.c ../Source/LibOpenJPEG/t1.c ../Source/LibOpenJPEG/t2.c ../Source/LibOpenJPEG/tcd.c \ | |||
../Source/LibOpenJPEG/tgt.c ../Source/LibOpenJPEG/./thix_manager.c ../Source/LibOpenJPEG/./tpix_manager.c ../Source/OpenEXR/./IlmImf/ImfAttribute.cpp \ | |||
../Source/OpenEXR/./IlmImf/ImfB44Compressor.cpp ../Source/OpenEXR/./IlmImf/ImfBoxAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfChannelList.cpp \ | |||
../Source/OpenEXR/./IlmImf/ImfChannelListAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfChromaticities.cpp ../Source/OpenEXR/./IlmImf/ImfChromaticitiesAttribute.cpp \ | |||
../Source/OpenEXR/./IlmImf/ImfCompressionAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfCompressor.cpp ../Source/OpenEXR/./IlmImf/ImfConvert.cpp \ | |||
../Source/OpenEXR/./IlmImf/ImfCRgbaFile.cpp ../Source/OpenEXR/./IlmImf/ImfDoubleAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfEnvmap.cpp \ | |||
../Source/OpenEXR/./IlmImf/ImfEnvmapAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfFloatAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfFrameBuffer.cpp \ | |||
../Source/OpenEXR/./IlmImf/ImfFramesPerSecond.cpp ../Source/OpenEXR/./IlmImf/ImfHeader.cpp ../Source/OpenEXR/./IlmImf/ImfHuf.cpp \ | |||
../Source/OpenEXR/./IlmImf/ImfInputFile.cpp ../Source/OpenEXR/./IlmImf/ImfIntAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfIO.cpp \ | |||
../Source/OpenEXR/./IlmImf/ImfKeyCode.cpp ../Source/OpenEXR/./IlmImf/ImfKeyCodeAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfLineOrderAttribute.cpp \ | |||
../Source/OpenEXR/./IlmImf/ImfLut.cpp ../Source/OpenEXR/./IlmImf/ImfMatrixAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfMisc.cpp \ | |||
../Source/OpenEXR/./IlmImf/ImfOpaqueAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfOutputFile.cpp ../Source/OpenEXR/./IlmImf/ImfPizCompressor.cpp \ | |||
../Source/OpenEXR/./IlmImf/ImfPreviewImage.cpp ../Source/OpenEXR/./IlmImf/ImfPreviewImageAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfPxr24Compressor.cpp \ | |||
../Source/OpenEXR/./IlmImf/ImfRational.cpp ../Source/OpenEXR/./IlmImf/ImfRationalAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfRgbaFile.cpp \ | |||
../Source/OpenEXR/./IlmImf/ImfRgbaYca.cpp ../Source/OpenEXR/./IlmImf/ImfRleCompressor.cpp ../Source/OpenEXR/./IlmImf/ImfScanLineInputFile.cpp \ | |||
../Source/OpenEXR/./IlmImf/ImfStandardAttributes.cpp ../Source/OpenEXR/./IlmImf/ImfStdIO.cpp ../Source/OpenEXR/./IlmImf/ImfStringAttribute.cpp \ | |||
../Source/OpenEXR/./IlmImf/ImfStringVectorAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfTestFile.cpp ../Source/OpenEXR/./IlmImf/ImfThreading.cpp \ | |||
../Source/OpenEXR/./IlmImf/ImfTileDescriptionAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfTiledInputFile.cpp ../Source/OpenEXR/./IlmImf/ImfTiledMisc.cpp \ | |||
../Source/OpenEXR/./IlmImf/ImfTiledOutputFile.cpp ../Source/OpenEXR/./IlmImf/ImfTiledRgbaFile.cpp ../Source/OpenEXR/./IlmImf/ImfTileOffsets.cpp \ | |||
../Source/OpenEXR/./IlmImf/ImfTimeCode.cpp ../Source/OpenEXR/./IlmImf/ImfTimeCodeAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfVecAttribute.cpp \ | |||
../Source/OpenEXR/./IlmImf/ImfVersion.cpp ../Source/OpenEXR/./IlmImf/ImfWav.cpp ../Source/OpenEXR/./IlmImf/ImfZipCompressor.cpp \ | |||
../Source/OpenEXR/./Imath/ImathBox.cpp ../Source/OpenEXR/./Imath/ImathColorAlgo.cpp ../Source/OpenEXR/./Imath/ImathFun.cpp ../Source/OpenEXR/./Imath/ImathMatrixAlgo.cpp \ | |||
../Source/OpenEXR/./Imath/ImathRandom.cpp ../Source/OpenEXR/./Imath/ImathShear.cpp ../Source/OpenEXR/./Imath/ImathVec.cpp ../Source/OpenEXR/./Iex/IexBaseExc.cpp \ | |||
../Source/OpenEXR/./Iex/IexThrowErrnoExc.cpp ../Source/OpenEXR/./Half/half.cpp ../Source/OpenEXR/./IlmThread/IlmThread.cpp \ | |||
../Source/OpenEXR/./IlmThread/IlmThreadMutex.cpp ../Source/OpenEXR/./IlmThread/IlmThreadPool.cpp ../Source/OpenEXR/./IlmThread/IlmThreadSemaphore.cpp | |||
LOCAL_MODULE := FreeImage | |||
LOCAL_CPP_FEATURES := rtti exceptions | |||
GLOBAL_CFLAGS := -O3 -DHAVE_CONFIG_H=1 -DFREEIMAGE_LIB -isystem | |||
ifeq ($(TARGET_ARCH),x86) | |||
LOCAL_CFLAGS := $(GLOBAL_CFLAGS) | |||
else | |||
LOCAL_CFLAGS := -mfpu=vfp -mfloat-abi=softfp -fno-short-enums -O3 -fPIC $(GLOBAL_CFLAGS) | |||
endif | |||
LOCAL_C_INCLUDES := $(GLOBAL_C_INCLUDES) | |||
include $(BUILD_STATIC_LIBRARY) | |||
</syntaxhighlight> | |||
==== Building Ogre3D ==== | |||
Next you must build ogre from source. I build ogre 1.9 with this tutorial . | |||
http://www.ogre3d.org/tikiwiki/tiki-index.php?page=CMake+Quick+Start+Guide&tikiversion=Android | |||
You must add it | |||
<syntaxhighlight lang="cpp"> | |||
if((opt = miscParams->find("externalWindowHandle")) != end) | |||
{ | |||
mWindow = (ANativeWindow*)(Ogre::StringConverter::parseInt(opt->second)); | |||
} | |||
</syntaxhighlight> | |||
and it | |||
<syntaxhighlight lang="cpp"> | |||
if (!mEglConfig) | |||
{ | |||
_createInternalResources(mWindow, config); | |||
mHwGamma = false; | |||
} | |||
mEglDisplay = mGLSupport->getGLDisplay(); | |||
</syntaxhighlight> | |||
to | |||
/sinbad-ogre-7c776867621e/RenderSystems/GLES2/src/EGL/Android/OgreAndroidEGLWindow.cpp | |||
ogre otherwise not be able to work with sdl2 ,because android can have only one active window . | |||
Also in Ogre 1.9 forgot to add this line to cmake file | |||
<syntaxhighlight lang="cmake"> | |||
if(ANDROID) | |||
set(CMAKE_FIND_ROOT_PATH ${OGRE_DEPENDENCIES_DIR} "${CMAKE_FIND_ROOT_PATH}") | |||
endif() | |||
</syntaxhighlight> | |||
==== Building MyGUI ==== | |||
Then you must build mygui for ogre | |||
http://mygui.info/ | |||
And you should remove this line from cmake file | |||
<syntaxhighlight lang="cmake"> | |||
add_definitions(-msse) | |||
</syntaxhighlight> | |||
==== Building Bullet ==== | |||
Then you should build bullet. You can use cmake or ndk-build | |||
https://github.com/bulletphysics/bullet3 | |||
Android.mk | |||
<syntaxhighlight lang="cmake"> | |||
LOCAL_PATH:= $(call my-dir) | |||
include $(CLEAR_VARS) | |||
LOCAL_MODULE := bullet | |||
LOCAL_C_INCLUDES := \ | |||
$(LOCAL_PATH)/ \ | |||
$(LOCAL_PATH)/BulletCollision/BroadphaseCollision \ | |||
$(LOCAL_PATH)/BulletCollision/CollisionDispatch \ | |||
$(LOCAL_PATH)/BulletCollision/CollisionShapes \ | |||
$(LOCAL_PATH)/BulletCollision/NarrowPhaseCollision \ | |||
$(LOCAL_PATH)/BulletDynamics/ConstraintSolver \ | |||
$(LOCAL_PATH)/BulletDynamics/Dynamics \ | |||
$(LOCAL_PATH)/BulletDynamics/Vehicle \ | |||
$(LOCAL_PATH)/LinearMath \ | |||
$(LOCAL_PATH)/../libzip/ \ | |||
$(LOCAL_PATH)/../libpng/ \ | |||
LOCAL_ARM_MODE := arm | |||
LOCAL_STATIC_LIBRARIES := libzip libpng | |||
LOCAL_CFLAGS := $(LOCAL_C_INCLUDES:%=-I%) -O3 -DANDROID_NDK | |||
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -ldl -llog -lGLESv1_CM -lGLESv2 -lz | |||
LOCAL_SRC_FILES := \ | |||
BulletMultiThreaded/SpuCollisionObjectWrapper.cpp \ | |||
BulletMultiThreaded/SpuSampleTask/SpuSampleTask.cpp \ | |||
BulletMultiThreaded/SpuLibspe2Support.cpp \ | |||
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.cpp \ | |||
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.cpp \ | |||
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.cpp \ | |||
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.cpp \ | |||
BulletMultiThreaded/btThreadSupportInterface.cpp \ | |||
BulletMultiThreaded/SequentialThreadSupport.cpp \ | |||
BulletMultiThreaded/SpuGatheringCollisionDispatcher.cpp \ | |||
BulletMultiThreaded/Win32ThreadSupport.cpp \ | |||
BulletMultiThreaded/SpuFakeDma.cpp \ | |||
BulletMultiThreaded/PosixThreadSupport.cpp \ | |||
BulletMultiThreaded/SpuCollisionTaskProcess.cpp \ | |||
BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.cpp \ | |||
BulletMultiThreaded/SpuSampleTaskProcess.cpp \ | |||
BulletMultiThreaded/SpuSampleTask/SpuSampleTask.h \ | |||
BulletMultiThreaded/PpuAddressSpace.h \ | |||
BulletMultiThreaded/SpuSampleTaskProcess.h \ | |||
BulletMultiThreaded/SequentialThreadSupport.h \ | |||
BulletMultiThreaded/PlatformDefinitions.h \ | |||
BulletMultiThreaded/Win32ThreadSupport.h \ | |||
BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.h \ | |||
BulletMultiThreaded/btThreadSupportInterface.h \ | |||
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h \ | |||
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuConvexPenetrationDepthSolver.h \ | |||
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuPreferredPenetrationDirections.h \ | |||
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.h \ | |||
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuLocalSupport.h \ | |||
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.h \ | |||
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.h \ | |||
BulletMultiThreaded/SpuGatheringCollisionDispatcher.h \ | |||
BulletMultiThreaded/SpuFakeDma.h \ | |||
BulletMultiThreaded/SpuSync.h \ | |||
BulletMultiThreaded/SpuCollisionObjectWrapper.h \ | |||
BulletMultiThreaded/SpuDoubleBuffer.h \ | |||
BulletMultiThreaded/SpuCollisionTaskProcess.h \ | |||
BulletMultiThreaded/PosixThreadSupport.h \ | |||
BulletMultiThreaded/SpuLibspe2Support.h \ | |||
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.cpp \ | |||
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.h \ | |||
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/Box.h\ | |||
LinearMath/btQuickprof.cpp \ | |||
LinearMath/btGeometryUtil.cpp \ | |||
LinearMath/btAlignedAllocator.cpp \ | |||
LinearMath/btSerializer.cpp \ | |||
LinearMath/btConvexHull.cpp \ | |||
LinearMath/btPolarDecomposition.cpp \ | |||
LinearMath/btVector3.cpp \ | |||
LinearMath/btConvexHullComputer.cpp \ | |||
LinearMath/btHashMap.h \ | |||
LinearMath/btConvexHull.h \ | |||
LinearMath/btAabbUtil2.h \ | |||
LinearMath/btGeometryUtil.h \ | |||
LinearMath/btQuadWord.h \ | |||
LinearMath/btPoolAllocator.h \ | |||
LinearMath/btPolarDecomposition.h \ | |||
LinearMath/btScalar.h \ | |||
LinearMath/btMinMax.h \ | |||
LinearMath/btVector3.h \ | |||
LinearMath/btList.h \ | |||
LinearMath/btStackAlloc.h \ | |||
LinearMath/btMatrix3x3.h \ | |||
LinearMath/btMotionState.h \ | |||
LinearMath/btAlignedAllocator.h \ | |||
LinearMath/btQuaternion.h \ | |||
LinearMath/btAlignedObjectArray.h \ | |||
LinearMath/btQuickprof.h \ | |||
LinearMath/btSerializer.h \ | |||
LinearMath/btTransformUtil.h \ | |||
LinearMath/btTransform.h \ | |||
LinearMath/btDefaultMotionState.h \ | |||
LinearMath/btIDebugDraw.h \ | |||
LinearMath/btRandom.h \ | |||
BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp \ | |||
BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp \ | |||
BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp \ | |||
BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp \ | |||
BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp \ | |||
BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp \ | |||
BulletCollision/NarrowPhaseCollision/btConvexCast.cpp \ | |||
BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.cpp \ | |||
BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp \ | |||
BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp \ | |||
BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp \ | |||
BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp \ | |||
BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp \ | |||
BulletCollision/CollisionDispatch/btCollisionObject.cpp \ | |||
BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp \ | |||
BulletCollision/CollisionDispatch/btGhostObject.cpp \ | |||
BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp \ | |||
BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp \ | |||
BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp \ | |||
BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp \ | |||
BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp \ | |||
BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp \ | |||
BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp \ | |||
BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp \ | |||
BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp \ | |||
BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp \ | |||
BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp \ | |||
BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp \ | |||
BulletCollision/CollisionDispatch/btManifoldResult.cpp \ | |||
BulletCollision/CollisionDispatch/btCollisionWorld.cpp \ | |||
BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp \ | |||
BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp \ | |||
BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp \ | |||
BulletCollision/CollisionDispatch/btUnionFind.cpp \ | |||
BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp \ | |||
BulletCollision/CollisionDispatch/btHashedSimplePairCache.cpp \ | |||
BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.cpp \ | |||
BulletCollision/CollisionShapes/btTetrahedronShape.cpp \ | |||
BulletCollision/CollisionShapes/btShapeHull.cpp \ | |||
BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp \ | |||
BulletCollision/CollisionShapes/btCompoundShape.cpp \ | |||
BulletCollision/CollisionShapes/btConeShape.cpp \ | |||
BulletCollision/CollisionShapes/btConvexPolyhedron.cpp \ | |||
BulletCollision/CollisionShapes/btMultiSphereShape.cpp \ | |||
BulletCollision/CollisionShapes/btUniformScalingShape.cpp \ | |||
BulletCollision/CollisionShapes/btSphereShape.cpp \ | |||
BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp \ | |||
BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp \ | |||
BulletCollision/CollisionShapes/btTriangleMeshShape.cpp \ | |||
BulletCollision/CollisionShapes/btTriangleBuffer.cpp \ | |||
BulletCollision/CollisionShapes/btStaticPlaneShape.cpp \ | |||
BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp \ | |||
BulletCollision/CollisionShapes/btEmptyShape.cpp \ | |||
BulletCollision/CollisionShapes/btCollisionShape.cpp \ | |||
BulletCollision/CollisionShapes/btConvexShape.cpp \ | |||
BulletCollision/CollisionShapes/btConvex2dShape.cpp \ | |||
BulletCollision/CollisionShapes/btConvexInternalShape.cpp \ | |||
BulletCollision/CollisionShapes/btConvexHullShape.cpp \ | |||
BulletCollision/CollisionShapes/btTriangleCallback.cpp \ | |||
BulletCollision/CollisionShapes/btCapsuleShape.cpp \ | |||
BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp \ | |||
BulletCollision/CollisionShapes/btConcaveShape.cpp \ | |||
BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp \ | |||
BulletCollision/CollisionShapes/btBoxShape.cpp \ | |||
BulletCollision/CollisionShapes/btBox2dShape.cpp \ | |||
BulletCollision/CollisionShapes/btOptimizedBvh.cpp \ | |||
BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp \ | |||
BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp \ | |||
BulletCollision/CollisionShapes/btCylinderShape.cpp \ | |||
BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp \ | |||
BulletCollision/CollisionShapes/btStridingMeshInterface.cpp \ | |||
BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp \ | |||
BulletCollision/CollisionShapes/btTriangleMesh.cpp \ | |||
BulletCollision/BroadphaseCollision/btAxisSweep3.cpp \ | |||
BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp \ | |||
BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp \ | |||
BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp \ | |||
BulletCollision/BroadphaseCollision/btDispatcher.cpp \ | |||
BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp \ | |||
BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp \ | |||
BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp \ | |||
BulletCollision/BroadphaseCollision/btDbvt.cpp \ | |||
BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp \ | |||
BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h \ | |||
BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h \ | |||
BulletCollision/NarrowPhaseCollision/btConvexCast.h \ | |||
BulletCollision/NarrowPhaseCollision/btGjkEpa2.h \ | |||
BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h \ | |||
BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h \ | |||
BulletCollision/NarrowPhaseCollision/btPointCollector.h \ | |||
BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h \ | |||
BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h \ | |||
BulletCollision/NarrowPhaseCollision/btRaycastCallback.h \ | |||
BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h \ | |||
BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h \ | |||
BulletCollision/NarrowPhaseCollision/btPersistentManifold.h \ | |||
BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h \ | |||
BulletCollision/NarrowPhaseCollision/btManifoldPoint.h \ | |||
BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h \ | |||
BulletCollision/CollisionDispatch/btCollisionObject.h \ | |||
BulletCollision/CollisionDispatch/btCollisionObjectWrapper.h \ | |||
BulletCollision/CollisionDispatch/btGhostObject.h \ | |||
BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h \ | |||
BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h \ | |||
BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h \ | |||
BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h \ | |||
BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h \ | |||
BulletCollision/CollisionDispatch/btCollisionCreateFunc.h \ | |||
BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h \ | |||
BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h \ | |||
BulletCollision/CollisionDispatch/btBoxBoxDetector.h \ | |||
BulletCollision/CollisionDispatch/btCollisionDispatcher.h \ | |||
BulletCollision/CollisionDispatch/SphereTriangleDetector.h \ | |||
BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h \ | |||
BulletCollision/CollisionDispatch/btUnionFind.h \ | |||
BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h \ | |||
BulletCollision/CollisionDispatch/btHashedSimplePairCache.h \ | |||
BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.h \ | |||
BulletCollision/CollisionDispatch/btSimulationIslandManager.h \ | |||
BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h \ | |||
BulletCollision/CollisionDispatch/btCollisionWorld.h \ | |||
BulletCollision/CollisionDispatch/btInternalEdgeUtility.h \ | |||
BulletCollision/CollisionDispatch/btManifoldResult.h \ | |||
BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h \ | |||
BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h \ | |||
BulletCollision/CollisionDispatch/btCollisionConfiguration.h \ | |||
BulletCollision/CollisionShapes/btConvexShape.h \ | |||
BulletCollision/CollisionShapes/btConvex2dShape.h \ | |||
BulletCollision/CollisionShapes/btTriangleCallback.h \ | |||
BulletCollision/CollisionShapes/btPolyhedralConvexShape.h \ | |||
BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h \ | |||
BulletCollision/CollisionShapes/btCompoundShape.h \ | |||
BulletCollision/CollisionShapes/btBoxShape.h \ | |||
BulletCollision/CollisionShapes/btBox2dShape.h \ | |||
BulletCollision/CollisionShapes/btMultiSphereShape.h \ | |||
BulletCollision/CollisionShapes/btCollisionMargin.h \ | |||
BulletCollision/CollisionShapes/btConcaveShape.h \ | |||
BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h \ | |||
BulletCollision/CollisionShapes/btEmptyShape.h \ | |||
BulletCollision/CollisionShapes/btUniformScalingShape.h \ | |||
BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h \ | |||
BulletCollision/CollisionShapes/btMaterial.h \ | |||
BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h \ | |||
BulletCollision/CollisionShapes/btTriangleInfoMap.h \ | |||
BulletCollision/CollisionShapes/btSphereShape.h \ | |||
BulletCollision/CollisionShapes/btConvexPointCloudShape.h \ | |||
BulletCollision/CollisionShapes/btCapsuleShape.h \ | |||
BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h \ | |||
BulletCollision/CollisionShapes/btCollisionShape.h \ | |||
BulletCollision/CollisionShapes/btStaticPlaneShape.h \ | |||
BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h \ | |||
BulletCollision/CollisionShapes/btTriangleMeshShape.h \ | |||
BulletCollision/CollisionShapes/btStridingMeshInterface.h \ | |||
BulletCollision/CollisionShapes/btTriangleMesh.h \ | |||
BulletCollision/CollisionShapes/btTriangleBuffer.h \ | |||
BulletCollision/CollisionShapes/btShapeHull.h \ | |||
BulletCollision/CollisionShapes/btMinkowskiSumShape.h \ | |||
BulletCollision/CollisionShapes/btOptimizedBvh.h \ | |||
BulletCollision/CollisionShapes/btTriangleShape.h \ | |||
BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h \ | |||
BulletCollision/CollisionShapes/btCylinderShape.h \ | |||
BulletCollision/CollisionShapes/btTetrahedronShape.h \ | |||
BulletCollision/CollisionShapes/btConvexInternalShape.h \ | |||
BulletCollision/CollisionShapes/btConeShape.h \ | |||
BulletCollision/CollisionShapes/btConvexHullShape.h \ | |||
BulletCollision/BroadphaseCollision/btAxisSweep3.h \ | |||
BulletCollision/BroadphaseCollision/btDbvtBroadphase.h \ | |||
BulletCollision/BroadphaseCollision/btSimpleBroadphase.h \ | |||
BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h \ | |||
BulletCollision/BroadphaseCollision/btDbvt.h \ | |||
BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h \ | |||
BulletCollision/BroadphaseCollision/btDispatcher.h \ | |||
BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h \ | |||
BulletCollision/BroadphaseCollision/btBroadphaseProxy.h \ | |||
BulletCollision/BroadphaseCollision/btOverlappingPairCache.h \ | |||
BulletCollision/BroadphaseCollision/btBroadphaseInterface.h \ | |||
BulletCollision/BroadphaseCollision/btQuantizedBvh.h \ | |||
BulletCollision/Gimpact/btGImpactBvh.cpp\ | |||
BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp\ | |||
BulletCollision/Gimpact/btTriangleShapeEx.cpp\ | |||
BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp\ | |||
BulletCollision/Gimpact/btGImpactShape.cpp\ | |||
BulletCollision/Gimpact/gim_box_set.cpp\ | |||
BulletCollision/Gimpact/gim_contact.cpp\ | |||
BulletCollision/Gimpact/gim_memory.cpp\ | |||
BulletCollision/Gimpact/gim_tri_collision.cpp \ | |||
BulletDynamics/Dynamics/btRigidBody.cpp \ | |||
BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp \ | |||
BulletDynamics/Dynamics/Bullet-C-API.cpp \ | |||
BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp \ | |||
BulletDynamics/ConstraintSolver/btFixedConstraint.cpp \ | |||
BulletDynamics/ConstraintSolver/btGearConstraint.cpp \ | |||
BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp \ | |||
BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp \ | |||
BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp \ | |||
BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp \ | |||
BulletDynamics/ConstraintSolver/btTypedConstraint.cpp \ | |||
BulletDynamics/ConstraintSolver/btContactConstraint.cpp \ | |||
BulletDynamics/ConstraintSolver/btSliderConstraint.cpp \ | |||
BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp \ | |||
BulletDynamics/ConstraintSolver/btHingeConstraint.cpp \ | |||
BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp \ | |||
BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp \ | |||
BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp \ | |||
BulletDynamics/Vehicle/btWheelInfo.cpp \ | |||
BulletDynamics/Vehicle/btRaycastVehicle.cpp \ | |||
BulletDynamics/Character/btKinematicCharacterController.cpp \ | |||
BulletDynamics/Character/btKinematicCharacterController.h \ | |||
BulletDynamics/Character/btCharacterControllerInterface.h \ | |||
BulletDynamics/Dynamics/btActionInterface.h \ | |||
BulletDynamics/Dynamics/btSimpleDynamicsWorld.h \ | |||
BulletDynamics/Dynamics/btRigidBody.h \ | |||
BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h \ | |||
BulletDynamics/Dynamics/btDynamicsWorld.h \ | |||
BulletDynamics/ConstraintSolver/btSolverBody.h \ | |||
BulletDynamics/ConstraintSolver/btConstraintSolver.h \ | |||
BulletDynamics/ConstraintSolver/btConeTwistConstraint.h \ | |||
BulletDynamics/ConstraintSolver/btTypedConstraint.h \ | |||
BulletDynamics/ConstraintSolver/btContactSolverInfo.h \ | |||
BulletDynamics/ConstraintSolver/btContactConstraint.h \ | |||
BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h \ | |||
BulletDynamics/ConstraintSolver/btJacobianEntry.h \ | |||
BulletDynamics/ConstraintSolver/btSolverConstraint.h \ | |||
BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h \ | |||
BulletDynamics/ConstraintSolver/btGearConstraint.h \ | |||
BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h \ | |||
BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h \ | |||
BulletDynamics/ConstraintSolver/btSliderConstraint.h \ | |||
BulletDynamics/ConstraintSolver/btHingeConstraint.h \ | |||
BulletDynamics/ConstraintSolver/btHinge2Constraint.h \ | |||
BulletDynamics/ConstraintSolver/btUniversalConstraint.h \ | |||
BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h \ | |||
BulletDynamics/Vehicle/btVehicleRaycaster.h \ | |||
BulletDynamics/Vehicle/btRaycastVehicle.h \ | |||
BulletDynamics/Vehicle/btWheelInfo.h \ | |||
BulletDynamics/Featherstone/btMultiBody.cpp \ | |||
BulletDynamics/Featherstone/btMultiBodyConstraintSolver.cpp \ | |||
BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.cpp \ | |||
BulletDynamics/Featherstone/btMultiBodyJointMotor.cpp \ | |||
BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.cpp \ | |||
BulletDynamics/Featherstone/btMultiBodyJointMotor.h \ | |||
BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.h \ | |||
BulletDynamics/Featherstone/btMultiBody.h \ | |||
BulletDynamics/Featherstone/btMultiBodyConstraintSolver.h \ | |||
BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.h \ | |||
BulletDynamics/Featherstone/btMultiBodyLink.h \ | |||
BulletDynamics/Featherstone/btMultiBodyLinkCollider.h \ | |||
BulletDynamics/Featherstone/btMultiBodySolverConstraint.h \ | |||
BulletDynamics/Featherstone/btMultiBodyConstraint.h \ | |||
BulletDynamics/Featherstone/btMultiBodyPoint2Point.h \ | |||
BulletDynamics/Featherstone/btMultiBodyConstraint.cpp \ | |||
BulletDynamics/Featherstone/btMultiBodyPoint2Point.cpp \ | |||
BulletDynamics/MLCPSolvers/btDantzigLCP.cpp \ | |||
BulletDynamics/MLCPSolvers/btMLCPSolver.cpp \ | |||
BulletDynamics/MLCPSolvers/btDantzigLCP.h \ | |||
BulletDynamics/MLCPSolvers/btDantzigSolver.h \ | |||
BulletDynamics/MLCPSolvers/btMLCPSolver.h \ | |||
BulletDynamics/MLCPSolvers/btMLCPSolverInterface.h \ | |||
BulletDynamics/MLCPSolvers/btPATHSolver.h \ | |||
BulletDynamics/MLCPSolvers/btSolveProjectedGaussSeidel.h \ | |||
BulletSoftBody/btDefaultSoftBodySolver.cpp \ | |||
BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp \ | |||
BulletSoftBody/btSoftBody.cpp \ | |||
BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp \ | |||
BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp \ | |||
BulletSoftBody/btSoftRigidDynamicsWorld.cpp \ | |||
BulletSoftBody/btSoftBodyHelpers.cpp \ | |||
BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp \ | |||
BulletSoftBody/btSparseSDF.h \ | |||
BulletSoftBody/btSoftRigidCollisionAlgorithm.h \ | |||
BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h \ | |||
BulletSoftBody/btSoftBody.h \ | |||
BulletSoftBody/btSoftSoftCollisionAlgorithm.h \ | |||
BulletSoftBody/btSoftBodyInternals.h \ | |||
BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h \ | |||
BulletSoftBody/btSoftRigidDynamicsWorld.h \ | |||
BulletSoftBody/btSoftBodyHelpers.h | |||
include $(BUILD_SHARED_LIBRARY) | |||
</syntaxhighlight> | |||
==== Building OpenAL ==== | |||
Then you must build openal . | |||
http://repo.or.cz/w/openal-soft/android.git | |||
==== Building Qt (optional) ==== | |||
Note: Qt is only used by the launcher and OpenCS, and can be skipped. | |||
To build Qt 4.8 for android: | |||
http://necessitas.kde.org/ I used this tutorial for building: https://community.kde.org/Necessitas/CompileQtFramework | |||
==== Building FFmpeg ==== | |||
Then you must build ffmpeg . Important! You must use ffmpeg 1.26: http://www.roman10.net/how-to-build-ffmpeg-with-ndk-r9/ | |||
my script for build | |||
<syntaxhighlight lang="bash"> | |||
./configure \ | |||
--prefix=$(pwd)/android/$CPU \ | |||
--enable-shared \ | |||
--disable-static \ | |||
--disable-doc \ | |||
--disable-ffmpeg \ | |||
--disable-ffplay \ | |||
--disable-ffprobe \ | |||
--disable-ffserver \ | |||
--disable-doc \ | |||
--disable-symver \ | |||
--cross-prefix=/home/sylar/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm-linux-androideabi- \ | |||
--target-os=linux \ | |||
--arch=arm \ | |||
--enable-asm \ | |||
--enable-cross-compile \ | |||
--sysroot=/home/sylar/android-ndk-r9d/platforms/android-19/arch-arm \ | |||
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \ | |||
--extra-ldflags="$ADDI_LDFLAGS" | |||
</syntaxhighlight> | |||
==== Building SDL2 ==== | |||
Then you must build SDL2: https://www.libsdl.org/hg.php | |||
I used SDL2 mercurial latest source. | |||
=== Building OpenMW === | |||
then I started to build OpenMW. At first you must remove all lines associated with x server in FindOGRE.cmake | |||
and add GLES2 instead GLES . | |||
For example | |||
<syntaxhighlight lang="cmake"> | |||
ogre_find_plugin(RenderSystem_GLES2 OgreGLES2RenderSystem.h RenderSystems/GLES2/include) | |||
</syntaxhighlight> | |||
next I add this to main cmake file: | |||
<syntaxhighlight lang="cmake"> | |||
set(CMAKE_FIND_ROOT_PATH ${OPENMW_DEPENDENCIES_DIR} "${CMAKE_FIND_ROOT_PATH}") | |||
</syntaxhighlight> | |||
And now I can build OpenMW with it | |||
<syntaxhighlight lang="bash"> | |||
cmake /home/sylar/openmw -DCMAKE_TOOLCHAIN_FILE=/home/sylar/android-cmake-master/android.toolchain.cmake -DOPENMW_DEPENDENCIES_DIR=/home/sylar/AndroidDependencies -DANDROID_NATIVE_API_LEVEL=14 | |||
</syntaxhighlight> | |||
next I remove line from main cmake file: | |||
<syntaxhighlight lang="cmake"> | |||
add_static_ogre_plugin(RenderSystem_GL) | |||
</syntaxhighlight> | |||
and add it | |||
<syntaxhighlight lang="cmake"> | |||
add_static_ogre_plugin(RenderSystem_GLES2) | |||
</syntaxhighlight> | |||
Next I add I remove line | |||
<syntaxhighlight lang="cmake"> | |||
add_library(openmw executable | |||
${OPENMW_LIBS} ${OPENMW_LIBS_HEADER} | |||
${OPENMW_FILES} | |||
${GAME} ${GAME_HEADER} | |||
${APPLE_BUNDLE_RESOURCES} | |||
) | |||
</syntaxhighlight> | |||
in /openmw/apps/openmw/Cmakelists.txt | |||
and add it | |||
<syntaxhighlight lang="cmake"> | |||
add_library(main SHARED | |||
${OPENMW_LIBS} ${OPENMW_LIBS_HEADER} | |||
${OPENMW_FILES} | |||
${GAME} ${GAME_HEADER} | |||
${APPLE_BUNDLE_RESOURCES} | |||
) | |||
</syntaxhighlight> | |||
also I add it | |||
<syntaxhighlight lang="cmake"> | |||
set(GAME | |||
main.cpp | |||
SDL_android_main.c | |||
engine.cpp | |||
) | |||
#//if(NOT WIN32) | |||
# // set(GAME ${GAME} crashcatcher.cpp) | |||
#endif() | |||
# Main executable | |||
set(BOOST_COMPONENTS system filesystem program_options thread wave atomic) | |||
target_link_libraries(main | |||
${OGRE_STATIC_PLUGINS} | |||
#RenderSystem_GLES2Static | |||
#//Plugin_OctreeSceneManagerStatic | |||
#//Plugin_ParticleFXStatic | |||
# ${OGRE_Plugin_OctreeSceneManager_LIBRARY_REL} | |||
# ${OGRE_Plugin_ParticleFX_LIBRARY_REL} | |||
#${OGRE_RenderSystem_GLES2_LIBRARY_REL} | |||
) | |||
target_link_libraries(main | |||
EGL | |||
android | |||
log | |||
dl | |||
# ${OGRE_Plugin_OctreeSceneManager_LIBRARY_REL} | |||
# ${OGRE_Plugin_ParticleFX_LIBRARY_REL} | |||
#${OGRE_RenderSystem_GLES2_LIBRARY_REL} | |||
) | |||
target_link_libraries(main | |||
boost_atomic | |||
boost_chrono | |||
boost_date_time | |||
boost_filesystem | |||
boost_program_options | |||
boost_system | |||
boost_thread | |||
boost_wave | |||
# ${OGRE_Plugin_OctreeSceneManager_LIBRARY_REL} | |||
# ${OGRE_Plugin_ParticleFX_LIBRARY_REL} | |||
#${OGRE_RenderSystem_GLES2_LIBRARY_REL} | |||
) | |||
target_link_libraries(main | |||
FreeImage | |||
freetype | |||
# ${OGRE_Plugin_OctreeSceneManager_LIBRARY_REL} | |||
# ${OGRE_Plugin_ParticleFX_LIBRARY_REL} | |||
#${OGRE_RenderSystem_GLES2_LIBRARY_REL} | |||
) | |||
target_link_libraries(main | |||
OgreMainStatic | |||
# ${OGRE_Plugin_OctreeSceneManager_LIBRARY_REL} | |||
# ${OGRE_Plugin_ParticleFX_LIBRARY_REL} | |||
#${OGRE_RenderSystem_GLES2_LIBRARY_REL} | |||
) | |||
target_link_libraries(main | |||
MyGUI.OgrePlatform | |||
MyGUIEngineStatic | |||
Plugin_StrangeButtonStatic | |||
cpufeatures | |||
# ${OGRE_Plugin_OctreeSceneManager_LIBRARY_REL} | |||
# ${OGRE_Plugin_ParticleFX_LIBRARY_REL} | |||
#${OGRE_RenderSystem_GLES2_LIBRARY_REL} | |||
) | |||
</syntaxhighlight> | |||
Next I changed paths in: /openmw/components/files/linuxpath.cpp | |||
for example | |||
<syntaxhighlight lang="cpp"> | |||
return getEnv("XDG_DATA_HOME", "/sdcard/morrowind/share") / mName; | |||
</syntaxhighlight> | |||
Next I add patch in ogreinit.cpp and ogreinit.hpp | |||
I comment it | |||
<syntaxhighlight lang="cpp"> | |||
// Set up logging first | |||
// new Ogre::LogManager; | |||
// Ogre::Log *log = Ogre::LogManager::getSingleton().createLog(logPath); | |||
// #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 | |||
// Use custom listener only on Windows | |||
// log->addListener(new LogListener(logPath)); | |||
// #endif | |||
// Disable logging to cout/cerr | |||
// log->setDebugOutputEnabled(false); | |||
</syntaxhighlight> | |||
and change plugin gl on gles2 | |||
<syntaxhighlight lang="cpp"> | |||
#ifdef ENABLE_PLUGIN_GLES2 | |||
# include "OgreGLES2Plugin.h" | |||
#endif | |||
#ifdef ENABLE_PLUGIN_GLES2 | |||
Ogre::GLES2Plugin* mGLES2Plugin; | |||
#endif | |||
</syntaxhighlight> | |||
Next you must add it to | |||
<syntaxhighlight lang="cpp"> | |||
opt["externalWindowHandle"] = Ogre::StringConverter::toString((int) wmInfo.info.android.window ); | |||
opt["externalSurface"] = Ogre::StringConverter::toString((int) wmInfo.info.android.surface ); | |||
</syntaxhighlight> | |||
/openmw/extern/sdl4ogre/sdlwindowhelper.cpp | |||
Next I add this file to OpenMW | |||
SDL_android_main.c | |||
With it, I calle native c code from java wtih help jni . | |||
I rename main function in main.cpp to SDL_main . | |||
Now you can build openmw lib | |||
Next for eclipse project I use android-project example from SDL | |||
and use README-android.txt tutorial from sdl | |||
==== Disable mipmaps ==== | |||
Add this line to all textures_units | |||
<syntaxhighlight lang="cpp"> | |||
filtering linear linear none | |||
</syntaxhighlight> |
Revision as of 16:08, 20 August 2014
Android build OpenMW
Preparation of building environment
Before you start building OpenMW on Android you have to do few steps of preparation:
- Download Crystax NDK (because it supports wchar and long long types) from GitHub repo, or Google Drive
- Download and install Google Android SDK
- Download Cmake for Android (it will be used for OpenMW and its dependencies compilation)
- Download all OpenMW dependencies, ie:
- Ogre 1.9
- Openal
- boost
- bullet
- Sdl2
- Qt 4.8
- ffmpeg
- freeimage
- freetype
- mygui
- zzip
- zlib
Compilation of OpenMW dependencies
Then you should add PATH for crystax ndk and google sdk.
Building Boost
For building boost I used it. You must build Ogre with Boost! https://github.com/MysticTreeGames/Boost-for-Android
Building Freetype
Then you must build freetype http://www.freetype.org/ For example like this
cmake /home/sylar/freetype -DCMAKE_TOOLCHAIN_FILE=/home/sylar/android-cmake-master/android.toolchain.cmake -DANDROID_NATIVE_API_LEVEL=14
Building Freeimage
Then you must build freeimage. I used this tutorial for building http://freeimage.sourceforge.net/ http://recursify.com/blog/2013/05/25/building-freeimage-for-android
Since my phone supports manual armeabi-v7a I used this architecture for building. For example.
ndk-build APP_PLATFORM=android-14 APP_ABI=armeabi-v7a
Android.mk for building freeimage
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
GLOBAL_C_INCLUDES := \
$(LOCAL_PATH)/../Source \
$(LOCAL_PATH)/../Source \
$(LOCAL_PATH)/../Source/DeprecationManager \
$(LOCAL_PATH)/../Source/FreeImage \
$(LOCAL_PATH)/../Source/FreeImageLib \
$(LOCAL_PATH)/../Source/FreeImageToolkit \
$(LOCAL_PATH)/../Source/LibJPEG \
$(LOCAL_PATH)/../Source/LibMNG \
$(LOCAL_PATH)/../Source/LibOpenJPEG \
$(LOCAL_PATH)/../Source/LibPNG \
$(LOCAL_PATH)/../Source/LibTIFF \
$(LOCAL_PATH)/../Source/Metadata \
$(LOCAL_PATH)/../Source/OpenEXR \
$(LOCAL_PATH)/../Source/OpenEXR/Copyrights \
$(LOCAL_PATH)/../Source/OpenEXR/Half \
$(LOCAL_PATH)/../Source/OpenEXR/Iex \
$(LOCAL_PATH)/../Source/OpenEXR/IlmImf \
$(LOCAL_PATH)/../Source/OpenEXR/IlmThread \
$(LOCAL_PATH)/../Source/OpenEXR/Imath \
$(LOCAL_PATH)/../Source/ZLib \
LOCAL_SRC_FILES = ../Source/FreeImage/BitmapAccess.cpp ../Source/FreeImage/ColorLookup.cpp ../Source/FreeImage/FreeImage.cpp \
../Source/FreeImage/FreeImageC.c ../Source/FreeImage/FreeImageIO.cpp ../Source/FreeImage/GetType.cpp ../Source/FreeImage/MemoryIO.cpp \
../Source/FreeImage/PixelAccess.cpp ../Source/FreeImage/J2KHelper.cpp ../Source/FreeImage/MNGHelper.cpp ../Source/FreeImage/Plugin.cpp \
../Source/FreeImage/PluginBMP.cpp ../Source/FreeImage/PluginCUT.cpp ../Source/FreeImage/PluginDDS.cpp ../Source/FreeImage/PluginEXR.cpp \
../Source/FreeImage/PluginG3.cpp ../Source/FreeImage/PluginGIF.cpp ../Source/FreeImage/PluginHDR.cpp ../Source/FreeImage/PluginICO.cpp \
../Source/FreeImage/PluginIFF.cpp ../Source/FreeImage/PluginJ2K.cpp ../Source/FreeImage/PluginJNG.cpp ../Source/FreeImage/PluginJP2.cpp \
../Source/FreeImage/PluginJPEG.cpp ../Source/FreeImage/PluginKOALA.cpp ../Source/FreeImage/PluginMNG.cpp ../Source/FreeImage/PluginPCD.cpp \
../Source/FreeImage/PluginPCX.cpp ../Source/FreeImage/PluginPFM.cpp ../Source/FreeImage/PluginPICT.cpp ../Source/FreeImage/PluginPNG.cpp \
../Source/FreeImage/PluginPNM.cpp ../Source/FreeImage/PluginPSD.cpp ../Source/FreeImage/PluginRAS.cpp ../Source/FreeImage/PluginSGI.cpp \
../Source/FreeImage/PluginTARGA.cpp ../Source/FreeImage/PluginTIFF.cpp ../Source/FreeImage/PluginWBMP.cpp ../Source/FreeImage/PluginXBM.cpp \
../Source/FreeImage/PluginXPM.cpp ../Source/FreeImage/PSDParser.cpp ../Source/FreeImage/TIFFLogLuv.cpp ../Source/FreeImage/Conversion.cpp \
../Source/FreeImage/Conversion16_555.cpp ../Source/FreeImage/Conversion16_565.cpp ../Source/FreeImage/Conversion24.cpp \
../Source/FreeImage/Conversion32.cpp ../Source/FreeImage/Conversion4.cpp ../Source/FreeImage/Conversion8.cpp ../Source/FreeImage/ConversionFloat.cpp \
../Source/FreeImage/ConversionRGB16.cpp ../Source/FreeImage/ConversionRGBF.cpp ../Source/FreeImage/ConversionType.cpp \
../Source/FreeImage/ConversionUINT16.cpp ../Source/FreeImage/Halftoning.cpp ../Source/FreeImage/tmoColorConvert.cpp ../Source/FreeImage/tmoDrago03.cpp \
../Source/FreeImage/tmoFattal02.cpp ../Source/FreeImage/tmoReinhard05.cpp ../Source/FreeImage/ToneMapping.cpp ../Source/FreeImage/NNQuantizer.cpp \
../Source/FreeImage/WuQuantizer.cpp ../Source/DeprecationManager/Deprecated.cpp ../Source/DeprecationManager/DeprecationMgr.cpp \
../Source/FreeImage/CacheFile.cpp ../Source/FreeImage/MultiPage.cpp ../Source/FreeImage/ZLibInterface.cpp ../Source/Metadata/Exif.cpp \
../Source/Metadata/FIRational.cpp ../Source/Metadata/FreeImageTag.cpp ../Source/Metadata/IPTC.cpp ../Source/Metadata/TagConversion.cpp \
../Source/Metadata/TagLib.cpp ../Source/Metadata/XTIFF.cpp ../Source/FreeImageToolkit/Background.cpp ../Source/FreeImageToolkit/BSplineRotate.cpp \
../Source/FreeImageToolkit/Channels.cpp ../Source/FreeImageToolkit/ClassicRotate.cpp ../Source/FreeImageToolkit/Colors.cpp \
../Source/FreeImageToolkit/CopyPaste.cpp ../Source/FreeImageToolkit/Display.cpp ../Source/FreeImageToolkit/Flip.cpp ../Source/FreeImageToolkit/JPEGTransform.cpp \
../Source/FreeImageToolkit/MultigridPoissonSolver.cpp ../Source/FreeImageToolkit/Rescale.cpp ../Source/FreeImageToolkit/Resize.cpp \
../Source/LibJPEG/./jaricom.c ../Source/LibJPEG/jcapimin.c ../Source/LibJPEG/jcapistd.c ../Source/LibJPEG/./jcarith.c ../Source/LibJPEG/jccoefct.c \
../Source/LibJPEG/jccolor.c ../Source/LibJPEG/jcdctmgr.c ../Source/LibJPEG/jchuff.c ../Source/LibJPEG/jcinit.c ../Source/LibJPEG/jcmainct.c \
../Source/LibJPEG/jcmarker.c ../Source/LibJPEG/jcmaster.c ../Source/LibJPEG/jcomapi.c ../Source/LibJPEG/jcparam.c ../Source/LibJPEG/jcprepct.c \
../Source/LibJPEG/jcsample.c ../Source/LibJPEG/jctrans.c ../Source/LibJPEG/jdapimin.c ../Source/LibJPEG/jdapistd.c ../Source/LibJPEG/./jdarith.c \
../Source/LibJPEG/jdatadst.c ../Source/LibJPEG/jdatasrc.c ../Source/LibJPEG/jdcoefct.c ../Source/LibJPEG/jdcolor.c ../Source/LibJPEG/jddctmgr.c \
../Source/LibJPEG/jdhuff.c ../Source/LibJPEG/jdinput.c ../Source/LibJPEG/jdmainct.c ../Source/LibJPEG/jdmarker.c ../Source/LibJPEG/jdmaster.c \
../Source/LibJPEG/jdmerge.c ../Source/LibJPEG/jdpostct.c ../Source/LibJPEG/jdsample.c ../Source/LibJPEG/jdtrans.c ../Source/LibJPEG/jerror.c \
../Source/LibJPEG/jfdctflt.c ../Source/LibJPEG/jfdctfst.c ../Source/LibJPEG/jfdctint.c ../Source/LibJPEG/jidctflt.c ../Source/LibJPEG/jidctfst.c \
../Source/LibJPEG/jidctint.c ../Source/LibJPEG/jmemmgr.c ../Source/LibJPEG/jmemnobs.c ../Source/LibJPEG/jquant1.c ../Source/LibJPEG/jquant2.c \
../Source/LibJPEG/jutils.c ../Source/LibJPEG/transupp.c ../Source/LibPNG/./png.c ../Source/LibPNG/./pngerror.c ../Source/LibPNG/./pngget.c \
../Source/LibPNG/./pngmem.c ../Source/LibPNG/./pngpread.c ../Source/LibPNG/./pngread.c ../Source/LibPNG/./pngrio.c ../Source/LibPNG/./pngrtran.c \
../Source/LibPNG/./pngrutil.c ../Source/LibPNG/./pngset.c ../Source/LibPNG/./pngtrans.c ../Source/LibPNG/./pngwio.c ../Source/LibPNG/./pngwrite.c \
../Source/LibPNG/./pngwtran.c ../Source/LibPNG/./pngwutil.c ../Source/LibTIFF4/./tif_aux.c ../Source/LibTIFF4/./tif_close.c ../Source/LibTIFF4/./tif_codec.c \
../Source/LibTIFF4/./tif_color.c ../Source/LibTIFF4/./tif_compress.c ../Source/LibTIFF4/./tif_dir.c ../Source/LibTIFF4/./tif_dirinfo.c \
../Source/LibTIFF4/./tif_dirread.c ../Source/LibTIFF4/./tif_dirwrite.c ../Source/LibTIFF4/./tif_dumpmode.c ../Source/LibTIFF4/./tif_error.c \
../Source/LibTIFF4/./tif_extension.c ../Source/LibTIFF4/./tif_fax3.c ../Source/LibTIFF4/./tif_fax3sm.c ../Source/LibTIFF4/./tif_flush.c \
../Source/LibTIFF4/./tif_getimage.c ../Source/LibTIFF4/./tif_jpeg.c ../Source/LibTIFF4/./tif_luv.c ../Source/LibTIFF4/./tif_lzma.c \
../Source/LibTIFF4/./tif_lzw.c ../Source/LibTIFF4/./tif_next.c ../Source/LibTIFF4/./tif_ojpeg.c ../Source/LibTIFF4/./tif_open.c ../Source/LibTIFF4/./tif_packbits.c \
../Source/LibTIFF4/./tif_pixarlog.c ../Source/LibTIFF4/./tif_predict.c ../Source/LibTIFF4/./tif_print.c ../Source/LibTIFF4/./tif_read.c \
../Source/LibTIFF4/./tif_strip.c ../Source/LibTIFF4/./tif_swab.c ../Source/LibTIFF4/./tif_thunder.c ../Source/LibTIFF4/./tif_tile.c \
../Source/LibTIFF4/./tif_version.c ../Source/LibTIFF4/./tif_warning.c ../Source/LibTIFF4/./tif_write.c ../Source/LibTIFF4/./tif_zip.c \
../Source/ZLib/./adler32.c ../Source/ZLib/./compress.c ../Source/ZLib/./crc32.c ../Source/ZLib/./deflate.c ../Source/ZLib/./gzclose.c \
../Source/ZLib/./gzlib.c ../Source/ZLib/./gzread.c ../Source/ZLib/./gzwrite.c ../Source/ZLib/./infback.c ../Source/ZLib/./inffast.c ../Source/ZLib/./inflate.c \
../Source/ZLib/./inftrees.c ../Source/ZLib/./trees.c ../Source/ZLib/./uncompr.c ../Source/ZLib/./zutil.c ../Source/LibOpenJPEG/bio.c \
../Source/LibOpenJPEG/./cidx_manager.c ../Source/LibOpenJPEG/cio.c ../Source/LibOpenJPEG/dwt.c ../Source/LibOpenJPEG/event.c ../Source/LibOpenJPEG/image.c \
../Source/LibOpenJPEG/j2k.c ../Source/LibOpenJPEG/j2k_lib.c ../Source/LibOpenJPEG/jp2.c ../Source/LibOpenJPEG/jpt.c ../Source/LibOpenJPEG/mct.c \
../Source/LibOpenJPEG/mqc.c ../Source/LibOpenJPEG/openjpeg.c ../Source/LibOpenJPEG/./phix_manager.c ../Source/LibOpenJPEG/pi.c \
../Source/LibOpenJPEG/./ppix_manager.c ../Source/LibOpenJPEG/raw.c ../Source/LibOpenJPEG/t1.c ../Source/LibOpenJPEG/t2.c ../Source/LibOpenJPEG/tcd.c \
../Source/LibOpenJPEG/tgt.c ../Source/LibOpenJPEG/./thix_manager.c ../Source/LibOpenJPEG/./tpix_manager.c ../Source/OpenEXR/./IlmImf/ImfAttribute.cpp \
../Source/OpenEXR/./IlmImf/ImfB44Compressor.cpp ../Source/OpenEXR/./IlmImf/ImfBoxAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfChannelList.cpp \
../Source/OpenEXR/./IlmImf/ImfChannelListAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfChromaticities.cpp ../Source/OpenEXR/./IlmImf/ImfChromaticitiesAttribute.cpp \
../Source/OpenEXR/./IlmImf/ImfCompressionAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfCompressor.cpp ../Source/OpenEXR/./IlmImf/ImfConvert.cpp \
../Source/OpenEXR/./IlmImf/ImfCRgbaFile.cpp ../Source/OpenEXR/./IlmImf/ImfDoubleAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfEnvmap.cpp \
../Source/OpenEXR/./IlmImf/ImfEnvmapAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfFloatAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfFrameBuffer.cpp \
../Source/OpenEXR/./IlmImf/ImfFramesPerSecond.cpp ../Source/OpenEXR/./IlmImf/ImfHeader.cpp ../Source/OpenEXR/./IlmImf/ImfHuf.cpp \
../Source/OpenEXR/./IlmImf/ImfInputFile.cpp ../Source/OpenEXR/./IlmImf/ImfIntAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfIO.cpp \
../Source/OpenEXR/./IlmImf/ImfKeyCode.cpp ../Source/OpenEXR/./IlmImf/ImfKeyCodeAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfLineOrderAttribute.cpp \
../Source/OpenEXR/./IlmImf/ImfLut.cpp ../Source/OpenEXR/./IlmImf/ImfMatrixAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfMisc.cpp \
../Source/OpenEXR/./IlmImf/ImfOpaqueAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfOutputFile.cpp ../Source/OpenEXR/./IlmImf/ImfPizCompressor.cpp \
../Source/OpenEXR/./IlmImf/ImfPreviewImage.cpp ../Source/OpenEXR/./IlmImf/ImfPreviewImageAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfPxr24Compressor.cpp \
../Source/OpenEXR/./IlmImf/ImfRational.cpp ../Source/OpenEXR/./IlmImf/ImfRationalAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfRgbaFile.cpp \
../Source/OpenEXR/./IlmImf/ImfRgbaYca.cpp ../Source/OpenEXR/./IlmImf/ImfRleCompressor.cpp ../Source/OpenEXR/./IlmImf/ImfScanLineInputFile.cpp \
../Source/OpenEXR/./IlmImf/ImfStandardAttributes.cpp ../Source/OpenEXR/./IlmImf/ImfStdIO.cpp ../Source/OpenEXR/./IlmImf/ImfStringAttribute.cpp \
../Source/OpenEXR/./IlmImf/ImfStringVectorAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfTestFile.cpp ../Source/OpenEXR/./IlmImf/ImfThreading.cpp \
../Source/OpenEXR/./IlmImf/ImfTileDescriptionAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfTiledInputFile.cpp ../Source/OpenEXR/./IlmImf/ImfTiledMisc.cpp \
../Source/OpenEXR/./IlmImf/ImfTiledOutputFile.cpp ../Source/OpenEXR/./IlmImf/ImfTiledRgbaFile.cpp ../Source/OpenEXR/./IlmImf/ImfTileOffsets.cpp \
../Source/OpenEXR/./IlmImf/ImfTimeCode.cpp ../Source/OpenEXR/./IlmImf/ImfTimeCodeAttribute.cpp ../Source/OpenEXR/./IlmImf/ImfVecAttribute.cpp \
../Source/OpenEXR/./IlmImf/ImfVersion.cpp ../Source/OpenEXR/./IlmImf/ImfWav.cpp ../Source/OpenEXR/./IlmImf/ImfZipCompressor.cpp \
../Source/OpenEXR/./Imath/ImathBox.cpp ../Source/OpenEXR/./Imath/ImathColorAlgo.cpp ../Source/OpenEXR/./Imath/ImathFun.cpp ../Source/OpenEXR/./Imath/ImathMatrixAlgo.cpp \
../Source/OpenEXR/./Imath/ImathRandom.cpp ../Source/OpenEXR/./Imath/ImathShear.cpp ../Source/OpenEXR/./Imath/ImathVec.cpp ../Source/OpenEXR/./Iex/IexBaseExc.cpp \
../Source/OpenEXR/./Iex/IexThrowErrnoExc.cpp ../Source/OpenEXR/./Half/half.cpp ../Source/OpenEXR/./IlmThread/IlmThread.cpp \
../Source/OpenEXR/./IlmThread/IlmThreadMutex.cpp ../Source/OpenEXR/./IlmThread/IlmThreadPool.cpp ../Source/OpenEXR/./IlmThread/IlmThreadSemaphore.cpp
LOCAL_MODULE := FreeImage
LOCAL_CPP_FEATURES := rtti exceptions
GLOBAL_CFLAGS := -O3 -DHAVE_CONFIG_H=1 -DFREEIMAGE_LIB -isystem
ifeq ($(TARGET_ARCH),x86)
LOCAL_CFLAGS := $(GLOBAL_CFLAGS)
else
LOCAL_CFLAGS := -mfpu=vfp -mfloat-abi=softfp -fno-short-enums -O3 -fPIC $(GLOBAL_CFLAGS)
endif
LOCAL_C_INCLUDES := $(GLOBAL_C_INCLUDES)
include $(BUILD_STATIC_LIBRARY)
Building Ogre3D
Next you must build ogre from source. I build ogre 1.9 with this tutorial . http://www.ogre3d.org/tikiwiki/tiki-index.php?page=CMake+Quick+Start+Guide&tikiversion=Android You must add it
if((opt = miscParams->find("externalWindowHandle")) != end)
{
mWindow = (ANativeWindow*)(Ogre::StringConverter::parseInt(opt->second));
}
and it
if (!mEglConfig)
{
_createInternalResources(mWindow, config);
mHwGamma = false;
}
mEglDisplay = mGLSupport->getGLDisplay();
to /sinbad-ogre-7c776867621e/RenderSystems/GLES2/src/EGL/Android/OgreAndroidEGLWindow.cpp ogre otherwise not be able to work with sdl2 ,because android can have only one active window . Also in Ogre 1.9 forgot to add this line to cmake file
if(ANDROID)
set(CMAKE_FIND_ROOT_PATH ${OGRE_DEPENDENCIES_DIR} "${CMAKE_FIND_ROOT_PATH}")
endif()
Building MyGUI
Then you must build mygui for ogre http://mygui.info/ And you should remove this line from cmake file
add_definitions(-msse)
Building Bullet
Then you should build bullet. You can use cmake or ndk-build https://github.com/bulletphysics/bullet3 Android.mk
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := bullet
LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/ \
$(LOCAL_PATH)/BulletCollision/BroadphaseCollision \
$(LOCAL_PATH)/BulletCollision/CollisionDispatch \
$(LOCAL_PATH)/BulletCollision/CollisionShapes \
$(LOCAL_PATH)/BulletCollision/NarrowPhaseCollision \
$(LOCAL_PATH)/BulletDynamics/ConstraintSolver \
$(LOCAL_PATH)/BulletDynamics/Dynamics \
$(LOCAL_PATH)/BulletDynamics/Vehicle \
$(LOCAL_PATH)/LinearMath \
$(LOCAL_PATH)/../libzip/ \
$(LOCAL_PATH)/../libpng/ \
LOCAL_ARM_MODE := arm
LOCAL_STATIC_LIBRARIES := libzip libpng
LOCAL_CFLAGS := $(LOCAL_C_INCLUDES:%=-I%) -O3 -DANDROID_NDK
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -ldl -llog -lGLESv1_CM -lGLESv2 -lz
LOCAL_SRC_FILES := \
BulletMultiThreaded/SpuCollisionObjectWrapper.cpp \
BulletMultiThreaded/SpuSampleTask/SpuSampleTask.cpp \
BulletMultiThreaded/SpuLibspe2Support.cpp \
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.cpp \
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.cpp \
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.cpp \
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.cpp \
BulletMultiThreaded/btThreadSupportInterface.cpp \
BulletMultiThreaded/SequentialThreadSupport.cpp \
BulletMultiThreaded/SpuGatheringCollisionDispatcher.cpp \
BulletMultiThreaded/Win32ThreadSupport.cpp \
BulletMultiThreaded/SpuFakeDma.cpp \
BulletMultiThreaded/PosixThreadSupport.cpp \
BulletMultiThreaded/SpuCollisionTaskProcess.cpp \
BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.cpp \
BulletMultiThreaded/SpuSampleTaskProcess.cpp \
BulletMultiThreaded/SpuSampleTask/SpuSampleTask.h \
BulletMultiThreaded/PpuAddressSpace.h \
BulletMultiThreaded/SpuSampleTaskProcess.h \
BulletMultiThreaded/SequentialThreadSupport.h \
BulletMultiThreaded/PlatformDefinitions.h \
BulletMultiThreaded/Win32ThreadSupport.h \
BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.h \
BulletMultiThreaded/btThreadSupportInterface.h \
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h \
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuConvexPenetrationDepthSolver.h \
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuPreferredPenetrationDirections.h \
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.h \
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuLocalSupport.h \
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.h \
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.h \
BulletMultiThreaded/SpuGatheringCollisionDispatcher.h \
BulletMultiThreaded/SpuFakeDma.h \
BulletMultiThreaded/SpuSync.h \
BulletMultiThreaded/SpuCollisionObjectWrapper.h \
BulletMultiThreaded/SpuDoubleBuffer.h \
BulletMultiThreaded/SpuCollisionTaskProcess.h \
BulletMultiThreaded/PosixThreadSupport.h \
BulletMultiThreaded/SpuLibspe2Support.h \
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.cpp \
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.h \
BulletMultiThreaded/SpuNarrowPhaseCollisionTask/Box.h\
LinearMath/btQuickprof.cpp \
LinearMath/btGeometryUtil.cpp \
LinearMath/btAlignedAllocator.cpp \
LinearMath/btSerializer.cpp \
LinearMath/btConvexHull.cpp \
LinearMath/btPolarDecomposition.cpp \
LinearMath/btVector3.cpp \
LinearMath/btConvexHullComputer.cpp \
LinearMath/btHashMap.h \
LinearMath/btConvexHull.h \
LinearMath/btAabbUtil2.h \
LinearMath/btGeometryUtil.h \
LinearMath/btQuadWord.h \
LinearMath/btPoolAllocator.h \
LinearMath/btPolarDecomposition.h \
LinearMath/btScalar.h \
LinearMath/btMinMax.h \
LinearMath/btVector3.h \
LinearMath/btList.h \
LinearMath/btStackAlloc.h \
LinearMath/btMatrix3x3.h \
LinearMath/btMotionState.h \
LinearMath/btAlignedAllocator.h \
LinearMath/btQuaternion.h \
LinearMath/btAlignedObjectArray.h \
LinearMath/btQuickprof.h \
LinearMath/btSerializer.h \
LinearMath/btTransformUtil.h \
LinearMath/btTransform.h \
LinearMath/btDefaultMotionState.h \
LinearMath/btIDebugDraw.h \
LinearMath/btRandom.h \
BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp \
BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp \
BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp \
BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp \
BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp \
BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp \
BulletCollision/NarrowPhaseCollision/btConvexCast.cpp \
BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.cpp \
BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp \
BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp \
BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp \
BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp \
BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp \
BulletCollision/CollisionDispatch/btCollisionObject.cpp \
BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp \
BulletCollision/CollisionDispatch/btGhostObject.cpp \
BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp \
BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp \
BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp \
BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp \
BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp \
BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp \
BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp \
BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp \
BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp \
BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp \
BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp \
BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp \
BulletCollision/CollisionDispatch/btManifoldResult.cpp \
BulletCollision/CollisionDispatch/btCollisionWorld.cpp \
BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp \
BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp \
BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp \
BulletCollision/CollisionDispatch/btUnionFind.cpp \
BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp \
BulletCollision/CollisionDispatch/btHashedSimplePairCache.cpp \
BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.cpp \
BulletCollision/CollisionShapes/btTetrahedronShape.cpp \
BulletCollision/CollisionShapes/btShapeHull.cpp \
BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp \
BulletCollision/CollisionShapes/btCompoundShape.cpp \
BulletCollision/CollisionShapes/btConeShape.cpp \
BulletCollision/CollisionShapes/btConvexPolyhedron.cpp \
BulletCollision/CollisionShapes/btMultiSphereShape.cpp \
BulletCollision/CollisionShapes/btUniformScalingShape.cpp \
BulletCollision/CollisionShapes/btSphereShape.cpp \
BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp \
BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp \
BulletCollision/CollisionShapes/btTriangleMeshShape.cpp \
BulletCollision/CollisionShapes/btTriangleBuffer.cpp \
BulletCollision/CollisionShapes/btStaticPlaneShape.cpp \
BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp \
BulletCollision/CollisionShapes/btEmptyShape.cpp \
BulletCollision/CollisionShapes/btCollisionShape.cpp \
BulletCollision/CollisionShapes/btConvexShape.cpp \
BulletCollision/CollisionShapes/btConvex2dShape.cpp \
BulletCollision/CollisionShapes/btConvexInternalShape.cpp \
BulletCollision/CollisionShapes/btConvexHullShape.cpp \
BulletCollision/CollisionShapes/btTriangleCallback.cpp \
BulletCollision/CollisionShapes/btCapsuleShape.cpp \
BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp \
BulletCollision/CollisionShapes/btConcaveShape.cpp \
BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp \
BulletCollision/CollisionShapes/btBoxShape.cpp \
BulletCollision/CollisionShapes/btBox2dShape.cpp \
BulletCollision/CollisionShapes/btOptimizedBvh.cpp \
BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp \
BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp \
BulletCollision/CollisionShapes/btCylinderShape.cpp \
BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp \
BulletCollision/CollisionShapes/btStridingMeshInterface.cpp \
BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp \
BulletCollision/CollisionShapes/btTriangleMesh.cpp \
BulletCollision/BroadphaseCollision/btAxisSweep3.cpp \
BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp \
BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp \
BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp \
BulletCollision/BroadphaseCollision/btDispatcher.cpp \
BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp \
BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp \
BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp \
BulletCollision/BroadphaseCollision/btDbvt.cpp \
BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp \
BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h \
BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h \
BulletCollision/NarrowPhaseCollision/btConvexCast.h \
BulletCollision/NarrowPhaseCollision/btGjkEpa2.h \
BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h \
BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h \
BulletCollision/NarrowPhaseCollision/btPointCollector.h \
BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h \
BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h \
BulletCollision/NarrowPhaseCollision/btRaycastCallback.h \
BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h \
BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h \
BulletCollision/NarrowPhaseCollision/btPersistentManifold.h \
BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h \
BulletCollision/NarrowPhaseCollision/btManifoldPoint.h \
BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h \
BulletCollision/CollisionDispatch/btCollisionObject.h \
BulletCollision/CollisionDispatch/btCollisionObjectWrapper.h \
BulletCollision/CollisionDispatch/btGhostObject.h \
BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h \
BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h \
BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h \
BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h \
BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h \
BulletCollision/CollisionDispatch/btCollisionCreateFunc.h \
BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h \
BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h \
BulletCollision/CollisionDispatch/btBoxBoxDetector.h \
BulletCollision/CollisionDispatch/btCollisionDispatcher.h \
BulletCollision/CollisionDispatch/SphereTriangleDetector.h \
BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h \
BulletCollision/CollisionDispatch/btUnionFind.h \
BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h \
BulletCollision/CollisionDispatch/btHashedSimplePairCache.h \
BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.h \
BulletCollision/CollisionDispatch/btSimulationIslandManager.h \
BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h \
BulletCollision/CollisionDispatch/btCollisionWorld.h \
BulletCollision/CollisionDispatch/btInternalEdgeUtility.h \
BulletCollision/CollisionDispatch/btManifoldResult.h \
BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h \
BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h \
BulletCollision/CollisionDispatch/btCollisionConfiguration.h \
BulletCollision/CollisionShapes/btConvexShape.h \
BulletCollision/CollisionShapes/btConvex2dShape.h \
BulletCollision/CollisionShapes/btTriangleCallback.h \
BulletCollision/CollisionShapes/btPolyhedralConvexShape.h \
BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h \
BulletCollision/CollisionShapes/btCompoundShape.h \
BulletCollision/CollisionShapes/btBoxShape.h \
BulletCollision/CollisionShapes/btBox2dShape.h \
BulletCollision/CollisionShapes/btMultiSphereShape.h \
BulletCollision/CollisionShapes/btCollisionMargin.h \
BulletCollision/CollisionShapes/btConcaveShape.h \
BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h \
BulletCollision/CollisionShapes/btEmptyShape.h \
BulletCollision/CollisionShapes/btUniformScalingShape.h \
BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h \
BulletCollision/CollisionShapes/btMaterial.h \
BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h \
BulletCollision/CollisionShapes/btTriangleInfoMap.h \
BulletCollision/CollisionShapes/btSphereShape.h \
BulletCollision/CollisionShapes/btConvexPointCloudShape.h \
BulletCollision/CollisionShapes/btCapsuleShape.h \
BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h \
BulletCollision/CollisionShapes/btCollisionShape.h \
BulletCollision/CollisionShapes/btStaticPlaneShape.h \
BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h \
BulletCollision/CollisionShapes/btTriangleMeshShape.h \
BulletCollision/CollisionShapes/btStridingMeshInterface.h \
BulletCollision/CollisionShapes/btTriangleMesh.h \
BulletCollision/CollisionShapes/btTriangleBuffer.h \
BulletCollision/CollisionShapes/btShapeHull.h \
BulletCollision/CollisionShapes/btMinkowskiSumShape.h \
BulletCollision/CollisionShapes/btOptimizedBvh.h \
BulletCollision/CollisionShapes/btTriangleShape.h \
BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h \
BulletCollision/CollisionShapes/btCylinderShape.h \
BulletCollision/CollisionShapes/btTetrahedronShape.h \
BulletCollision/CollisionShapes/btConvexInternalShape.h \
BulletCollision/CollisionShapes/btConeShape.h \
BulletCollision/CollisionShapes/btConvexHullShape.h \
BulletCollision/BroadphaseCollision/btAxisSweep3.h \
BulletCollision/BroadphaseCollision/btDbvtBroadphase.h \
BulletCollision/BroadphaseCollision/btSimpleBroadphase.h \
BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h \
BulletCollision/BroadphaseCollision/btDbvt.h \
BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h \
BulletCollision/BroadphaseCollision/btDispatcher.h \
BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h \
BulletCollision/BroadphaseCollision/btBroadphaseProxy.h \
BulletCollision/BroadphaseCollision/btOverlappingPairCache.h \
BulletCollision/BroadphaseCollision/btBroadphaseInterface.h \
BulletCollision/BroadphaseCollision/btQuantizedBvh.h \
BulletCollision/Gimpact/btGImpactBvh.cpp\
BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp\
BulletCollision/Gimpact/btTriangleShapeEx.cpp\
BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp\
BulletCollision/Gimpact/btGImpactShape.cpp\
BulletCollision/Gimpact/gim_box_set.cpp\
BulletCollision/Gimpact/gim_contact.cpp\
BulletCollision/Gimpact/gim_memory.cpp\
BulletCollision/Gimpact/gim_tri_collision.cpp \
BulletDynamics/Dynamics/btRigidBody.cpp \
BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp \
BulletDynamics/Dynamics/Bullet-C-API.cpp \
BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp \
BulletDynamics/ConstraintSolver/btFixedConstraint.cpp \
BulletDynamics/ConstraintSolver/btGearConstraint.cpp \
BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp \
BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp \
BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp \
BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp \
BulletDynamics/ConstraintSolver/btTypedConstraint.cpp \
BulletDynamics/ConstraintSolver/btContactConstraint.cpp \
BulletDynamics/ConstraintSolver/btSliderConstraint.cpp \
BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp \
BulletDynamics/ConstraintSolver/btHingeConstraint.cpp \
BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp \
BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp \
BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp \
BulletDynamics/Vehicle/btWheelInfo.cpp \
BulletDynamics/Vehicle/btRaycastVehicle.cpp \
BulletDynamics/Character/btKinematicCharacterController.cpp \
BulletDynamics/Character/btKinematicCharacterController.h \
BulletDynamics/Character/btCharacterControllerInterface.h \
BulletDynamics/Dynamics/btActionInterface.h \
BulletDynamics/Dynamics/btSimpleDynamicsWorld.h \
BulletDynamics/Dynamics/btRigidBody.h \
BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h \
BulletDynamics/Dynamics/btDynamicsWorld.h \
BulletDynamics/ConstraintSolver/btSolverBody.h \
BulletDynamics/ConstraintSolver/btConstraintSolver.h \
BulletDynamics/ConstraintSolver/btConeTwistConstraint.h \
BulletDynamics/ConstraintSolver/btTypedConstraint.h \
BulletDynamics/ConstraintSolver/btContactSolverInfo.h \
BulletDynamics/ConstraintSolver/btContactConstraint.h \
BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h \
BulletDynamics/ConstraintSolver/btJacobianEntry.h \
BulletDynamics/ConstraintSolver/btSolverConstraint.h \
BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h \
BulletDynamics/ConstraintSolver/btGearConstraint.h \
BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h \
BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h \
BulletDynamics/ConstraintSolver/btSliderConstraint.h \
BulletDynamics/ConstraintSolver/btHingeConstraint.h \
BulletDynamics/ConstraintSolver/btHinge2Constraint.h \
BulletDynamics/ConstraintSolver/btUniversalConstraint.h \
BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h \
BulletDynamics/Vehicle/btVehicleRaycaster.h \
BulletDynamics/Vehicle/btRaycastVehicle.h \
BulletDynamics/Vehicle/btWheelInfo.h \
BulletDynamics/Featherstone/btMultiBody.cpp \
BulletDynamics/Featherstone/btMultiBodyConstraintSolver.cpp \
BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.cpp \
BulletDynamics/Featherstone/btMultiBodyJointMotor.cpp \
BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.cpp \
BulletDynamics/Featherstone/btMultiBodyJointMotor.h \
BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.h \
BulletDynamics/Featherstone/btMultiBody.h \
BulletDynamics/Featherstone/btMultiBodyConstraintSolver.h \
BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.h \
BulletDynamics/Featherstone/btMultiBodyLink.h \
BulletDynamics/Featherstone/btMultiBodyLinkCollider.h \
BulletDynamics/Featherstone/btMultiBodySolverConstraint.h \
BulletDynamics/Featherstone/btMultiBodyConstraint.h \
BulletDynamics/Featherstone/btMultiBodyPoint2Point.h \
BulletDynamics/Featherstone/btMultiBodyConstraint.cpp \
BulletDynamics/Featherstone/btMultiBodyPoint2Point.cpp \
BulletDynamics/MLCPSolvers/btDantzigLCP.cpp \
BulletDynamics/MLCPSolvers/btMLCPSolver.cpp \
BulletDynamics/MLCPSolvers/btDantzigLCP.h \
BulletDynamics/MLCPSolvers/btDantzigSolver.h \
BulletDynamics/MLCPSolvers/btMLCPSolver.h \
BulletDynamics/MLCPSolvers/btMLCPSolverInterface.h \
BulletDynamics/MLCPSolvers/btPATHSolver.h \
BulletDynamics/MLCPSolvers/btSolveProjectedGaussSeidel.h \
BulletSoftBody/btDefaultSoftBodySolver.cpp \
BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp \
BulletSoftBody/btSoftBody.cpp \
BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp \
BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp \
BulletSoftBody/btSoftRigidDynamicsWorld.cpp \
BulletSoftBody/btSoftBodyHelpers.cpp \
BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp \
BulletSoftBody/btSparseSDF.h \
BulletSoftBody/btSoftRigidCollisionAlgorithm.h \
BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h \
BulletSoftBody/btSoftBody.h \
BulletSoftBody/btSoftSoftCollisionAlgorithm.h \
BulletSoftBody/btSoftBodyInternals.h \
BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h \
BulletSoftBody/btSoftRigidDynamicsWorld.h \
BulletSoftBody/btSoftBodyHelpers.h
include $(BUILD_SHARED_LIBRARY)
Building OpenAL
Then you must build openal . http://repo.or.cz/w/openal-soft/android.git
Building Qt (optional)
Note: Qt is only used by the launcher and OpenCS, and can be skipped. To build Qt 4.8 for android: http://necessitas.kde.org/ I used this tutorial for building: https://community.kde.org/Necessitas/CompileQtFramework
Building FFmpeg
Then you must build ffmpeg . Important! You must use ffmpeg 1.26: http://www.roman10.net/how-to-build-ffmpeg-with-ndk-r9/
my script for build
./configure \
--prefix=$(pwd)/android/$CPU \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-doc \
--disable-symver \
--cross-prefix=/home/sylar/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=arm \
--enable-asm \
--enable-cross-compile \
--sysroot=/home/sylar/android-ndk-r9d/platforms/android-19/arch-arm \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS"
Building SDL2
Then you must build SDL2: https://www.libsdl.org/hg.php I used SDL2 mercurial latest source.
Building OpenMW
then I started to build OpenMW. At first you must remove all lines associated with x server in FindOGRE.cmake and add GLES2 instead GLES . For example
ogre_find_plugin(RenderSystem_GLES2 OgreGLES2RenderSystem.h RenderSystems/GLES2/include)
next I add this to main cmake file:
set(CMAKE_FIND_ROOT_PATH ${OPENMW_DEPENDENCIES_DIR} "${CMAKE_FIND_ROOT_PATH}")
And now I can build OpenMW with it
cmake /home/sylar/openmw -DCMAKE_TOOLCHAIN_FILE=/home/sylar/android-cmake-master/android.toolchain.cmake -DOPENMW_DEPENDENCIES_DIR=/home/sylar/AndroidDependencies -DANDROID_NATIVE_API_LEVEL=14
next I remove line from main cmake file:
add_static_ogre_plugin(RenderSystem_GL)
and add it
add_static_ogre_plugin(RenderSystem_GLES2)
Next I add I remove line
add_library(openmw executable
${OPENMW_LIBS} ${OPENMW_LIBS_HEADER}
${OPENMW_FILES}
${GAME} ${GAME_HEADER}
${APPLE_BUNDLE_RESOURCES}
)
in /openmw/apps/openmw/Cmakelists.txt
and add it
add_library(main SHARED
${OPENMW_LIBS} ${OPENMW_LIBS_HEADER}
${OPENMW_FILES}
${GAME} ${GAME_HEADER}
${APPLE_BUNDLE_RESOURCES}
)
also I add it
set(GAME
main.cpp
SDL_android_main.c
engine.cpp
)
#//if(NOT WIN32)
# // set(GAME ${GAME} crashcatcher.cpp)
#endif()
# Main executable
set(BOOST_COMPONENTS system filesystem program_options thread wave atomic)
target_link_libraries(main
${OGRE_STATIC_PLUGINS}
#RenderSystem_GLES2Static
#//Plugin_OctreeSceneManagerStatic
#//Plugin_ParticleFXStatic
# ${OGRE_Plugin_OctreeSceneManager_LIBRARY_REL}
# ${OGRE_Plugin_ParticleFX_LIBRARY_REL}
#${OGRE_RenderSystem_GLES2_LIBRARY_REL}
)
target_link_libraries(main
EGL
android
log
dl
# ${OGRE_Plugin_OctreeSceneManager_LIBRARY_REL}
# ${OGRE_Plugin_ParticleFX_LIBRARY_REL}
#${OGRE_RenderSystem_GLES2_LIBRARY_REL}
)
target_link_libraries(main
boost_atomic
boost_chrono
boost_date_time
boost_filesystem
boost_program_options
boost_system
boost_thread
boost_wave
# ${OGRE_Plugin_OctreeSceneManager_LIBRARY_REL}
# ${OGRE_Plugin_ParticleFX_LIBRARY_REL}
#${OGRE_RenderSystem_GLES2_LIBRARY_REL}
)
target_link_libraries(main
FreeImage
freetype
# ${OGRE_Plugin_OctreeSceneManager_LIBRARY_REL}
# ${OGRE_Plugin_ParticleFX_LIBRARY_REL}
#${OGRE_RenderSystem_GLES2_LIBRARY_REL}
)
target_link_libraries(main
OgreMainStatic
# ${OGRE_Plugin_OctreeSceneManager_LIBRARY_REL}
# ${OGRE_Plugin_ParticleFX_LIBRARY_REL}
#${OGRE_RenderSystem_GLES2_LIBRARY_REL}
)
target_link_libraries(main
MyGUI.OgrePlatform
MyGUIEngineStatic
Plugin_StrangeButtonStatic
cpufeatures
# ${OGRE_Plugin_OctreeSceneManager_LIBRARY_REL}
# ${OGRE_Plugin_ParticleFX_LIBRARY_REL}
#${OGRE_RenderSystem_GLES2_LIBRARY_REL}
)
Next I changed paths in: /openmw/components/files/linuxpath.cpp for example
return getEnv("XDG_DATA_HOME", "/sdcard/morrowind/share") / mName;
Next I add patch in ogreinit.cpp and ogreinit.hpp I comment it
// Set up logging first
// new Ogre::LogManager;
// Ogre::Log *log = Ogre::LogManager::getSingleton().createLog(logPath);
// #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
// Use custom listener only on Windows
// log->addListener(new LogListener(logPath));
// #endif
// Disable logging to cout/cerr
// log->setDebugOutputEnabled(false);
and change plugin gl on gles2
#ifdef ENABLE_PLUGIN_GLES2
# include "OgreGLES2Plugin.h"
#endif
#ifdef ENABLE_PLUGIN_GLES2
Ogre::GLES2Plugin* mGLES2Plugin;
#endif
Next you must add it to
opt["externalWindowHandle"] = Ogre::StringConverter::toString((int) wmInfo.info.android.window );
opt["externalSurface"] = Ogre::StringConverter::toString((int) wmInfo.info.android.surface );
/openmw/extern/sdl4ogre/sdlwindowhelper.cpp
Next I add this file to OpenMW SDL_android_main.c With it, I calle native c code from java wtih help jni . I rename main function in main.cpp to SDL_main .
Now you can build openmw lib
Next for eclipse project I use android-project example from SDL and use README-android.txt tutorial from sdl
Disable mipmaps
Add this line to all textures_units
filtering linear linear none