From: <man...@us...> - 2015-02-14 14:20:25
|
Revision: 4755 http://sourceforge.net/p/modplug/code/4755 Author: manxorist Date: 2015-02-14 14:20:11 +0000 (Sat, 14 Feb 2015) Log Message: ----------- [Mod] libopenmpt: Add a MPT_LINKED_UNMO3 macro which results in resolving unmo3 symbols directly when linking libopenmpt instead of dynamically at runtime. This requires the build system to link against unmo3, obviously. [Mod] build: Split Android-unmo3.mk file from the regular one without unmo3 support and directly link the unmo3 library in the former. [Doc] libopenmpt: Update Android docs. Modified Paths: -------------- trunk/OpenMPT/build/android_ndk/Android.mk trunk/OpenMPT/build/android_ndk/README.AndroidNDK.txt trunk/OpenMPT/soundlib/Load_mo3.cpp Added Paths: ----------- trunk/OpenMPT/build/android_ndk/Android-unmo3.mk Copied: trunk/OpenMPT/build/android_ndk/Android-unmo3.mk (from rev 4754, trunk/OpenMPT/build/android_ndk/Android.mk) =================================================================== --- trunk/OpenMPT/build/android_ndk/Android-unmo3.mk (rev 0) +++ trunk/OpenMPT/build/android_ndk/Android-unmo3.mk 2015-02-14 14:20:11 UTC (rev 4755) @@ -0,0 +1,139 @@ + +LOCAL_PATH := $(call my-dir) + + +ifeq ($(TARGET_ARCH_ABI),armeabi) +include $(CLEAR_VARS) +LOCAL_MODULE := unmo3 +LOCAL_SRC_FILES := unmo3lib/android/armeabi/libunmo3.so +include $(PREBUILT_SHARED_LIBRARY) +endif + +ifeq ($(TARGET_ARCH_ABI),armeabi-v7a) +include $(CLEAR_VARS) +LOCAL_MODULE := unmo3 +LOCAL_SRC_FILES := unmo3lib/android/armeabi-v7a/libunmo3.so +include $(PREBUILT_SHARED_LIBRARY) +endif + +ifeq ($(TARGET_ARCH_ABI),x86) +include $(CLEAR_VARS) +LOCAL_MODULE := unmo3 +LOCAL_SRC_FILES := unmo3lib/android/x86/libunmo3.so +include $(PREBUILT_SHARED_LIBRARY) +endif + + +include $(CLEAR_VARS) + +LOCAL_MODULE := openmpt + +LOCAL_CPP_FEATURES += exceptions +LOCAL_CPP_FEATURES += rtti + +LOCAL_C_INCLUDES := $(LOCAL_PATH) $(LOCAL_PATH)/common $(LOCAL_PATH)/build/svn_version + +LOCAL_CFLAGS := -fvisibility=hidden -DLIBOPENMPT_BUILD -DMPT_WITH_ZLIB -DMPT_WITH_MO3 -DMPT_LINKED_UNMO3 +LOCAL_CPPFLAGS := -std=c++11 -fvisibility=hidden -DLIBOPENMPT_BUILD -DMPT_WITH_ZLIB -DMPT_WITH_MO3 -DMPT_LINKED_UNMO3 +LOCAL_LDLIBS := -lz + +ifeq ($(TARGET_ARCH_ABI),armeabi) +LOCAL_SHARED_LIBRARIES := unmo3 +endif +ifeq ($(TARGET_ARCH_ABI),armeabi-v7a) +LOCAL_SHARED_LIBRARIES := unmo3 +endif +ifeq ($(TARGET_ARCH_ABI),x86) +LOCAL_SHARED_LIBRARIES := unmo3 +endif + +LOCAL_SRC_FILES := \ + common/stdafx.cpp \ + common/AudioCriticalSection.cpp \ + common/ComponentManager.cpp \ + common/Logging.cpp \ + common/misc_util.cpp \ + common/mptFileIO.cpp \ + common/mptIO.cpp \ + common/mptPathString.cpp \ + common/mptString.cpp \ + common/Profiler.cpp \ + common/serialization_utils.cpp \ + common/typedefs.cpp \ + common/version.cpp \ + libopenmpt/libopenmpt_c.cpp \ + libopenmpt/libopenmpt_cxx.cpp \ + libopenmpt/libopenmpt_impl.cpp \ + libopenmpt/libopenmpt_ext.cpp \ + soundlib/Dither.cpp \ + soundlib/Dlsbank.cpp \ + soundlib/Fastmix.cpp \ + soundlib/ITCompression.cpp \ + soundlib/ITTools.cpp \ + soundlib/Load_669.cpp \ + soundlib/Load_amf.cpp \ + soundlib/Load_ams.cpp \ + soundlib/Load_dbm.cpp \ + soundlib/Load_digi.cpp \ + soundlib/Load_dmf.cpp \ + soundlib/Load_dsm.cpp \ + soundlib/Load_far.cpp \ + soundlib/Load_gdm.cpp \ + soundlib/Load_imf.cpp \ + soundlib/Load_it.cpp \ + soundlib/Load_itp.cpp \ + soundlib/load_j2b.cpp \ + soundlib/Load_mdl.cpp \ + soundlib/Load_med.cpp \ + soundlib/Load_mid.cpp \ + soundlib/Load_mo3.cpp \ + soundlib/Load_mod.cpp \ + soundlib/Load_mt2.cpp \ + soundlib/Load_mtm.cpp \ + soundlib/Load_okt.cpp \ + soundlib/Load_psm.cpp \ + soundlib/Load_ptm.cpp \ + soundlib/Load_s3m.cpp \ + soundlib/Load_stm.cpp \ + soundlib/Load_ult.cpp \ + soundlib/Load_umx.cpp \ + soundlib/Load_wav.cpp \ + soundlib/Load_xm.cpp \ + soundlib/Message.cpp \ + soundlib/MIDIEvents.cpp \ + soundlib/MIDIMacros.cpp \ + soundlib/MixerLoops.cpp \ + soundlib/MixerSettings.cpp \ + soundlib/Mmcmp.cpp \ + soundlib/ModChannel.cpp \ + soundlib/modcommand.cpp \ + soundlib/ModInstrument.cpp \ + soundlib/ModSample.cpp \ + soundlib/ModSequence.cpp \ + soundlib/modsmp_ctrl.cpp \ + soundlib/mod_specifications.cpp \ + soundlib/patternContainer.cpp \ + soundlib/pattern.cpp \ + soundlib/RowVisitor.cpp \ + soundlib/S3MTools.cpp \ + soundlib/SampleFormats.cpp \ + soundlib/SampleIO.cpp \ + soundlib/Sndfile.cpp \ + soundlib/Snd_flt.cpp \ + soundlib/Snd_fx.cpp \ + soundlib/Sndmix.cpp \ + soundlib/SoundFilePlayConfig.cpp \ + soundlib/UpgradeModule.cpp \ + soundlib/Tables.cpp \ + soundlib/Tagging.cpp \ + soundlib/tuningbase.cpp \ + soundlib/tuningCollection.cpp \ + soundlib/tuning.cpp \ + soundlib/WAVTools.cpp \ + soundlib/WindowedFIR.cpp \ + soundlib/XMTools.cpp \ + test/TestToolsLib.cpp \ + test/test.cpp + +include $(BUILD_SHARED_LIBRARY) + Modified: trunk/OpenMPT/build/android_ndk/Android.mk =================================================================== --- trunk/OpenMPT/build/android_ndk/Android.mk 2015-02-13 09:17:11 UTC (rev 4754) +++ trunk/OpenMPT/build/android_ndk/Android.mk 2015-02-14 14:20:11 UTC (rev 4755) @@ -1,6 +1,7 @@ LOCAL_PATH := $(call my-dir) + include $(CLEAR_VARS) LOCAL_MODULE := openmpt @@ -10,8 +11,8 @@ LOCAL_C_INCLUDES := $(LOCAL_PATH) $(LOCAL_PATH)/common $(LOCAL_PATH)/build/svn_version -LOCAL_CFLAGS := -fvisibility=hidden -DLIBOPENMPT_BUILD -DMPT_WITH_ZLIB -DMPT_WITH_MO3 -LOCAL_CPPFLAGS := -std=c++11 -fvisibility=hidden -DLIBOPENMPT_BUILD -DMPT_WITH_ZLIB -DMPT_WITH_MO3 +LOCAL_CFLAGS := -fvisibility=hidden -DLIBOPENMPT_BUILD -DMPT_WITH_ZLIB +LOCAL_CPPFLAGS := -std=c++11 -fvisibility=hidden -DLIBOPENMPT_BUILD -DMPT_WITH_ZLIB LOCAL_LDLIBS := -lz LOCAL_SRC_FILES := \ @@ -103,3 +104,4 @@ test/test.cpp include $(BUILD_SHARED_LIBRARY) + Modified: trunk/OpenMPT/build/android_ndk/README.AndroidNDK.txt =================================================================== --- trunk/OpenMPT/build/android_ndk/README.AndroidNDK.txt 2015-02-13 09:17:11 UTC (rev 4754) +++ trunk/OpenMPT/build/android_ndk/README.AndroidNDK.txt 2015-02-14 14:20:11 UTC (rev 4755) @@ -6,12 +6,8 @@ 1. Copy the whole libopenmpt source tree below your jni directory. 2. Copy build/android_ndk/* into the root of libopenmpt, i.e. also into the jni directory and adjust as needed. - 3. Use ndk-build as usual. - 4. libopenmpt for Android gets built with un4seen unmo3 library support by - default. - If you want to disable it, remove the -DMPT_WITH_MO3 define in Android.mk. - If you want to use it, you have to load the unmo3 shared object - additionally to libopenmpt from your Java code because shared object - path handling is rather confused on Android. libopenmpt will then - automatically pick up the required symbols. + 3. If you want to use unmo3, copy the contents of unmo3lib.zip from un4seen + into unmo3lib/ directory in your jni directory and rename Android-unmo3.mk + to Android.mk . + 4. Use ndk-build as usual. Modified: trunk/OpenMPT/soundlib/Load_mo3.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_mo3.cpp 2015-02-13 09:17:11 UTC (rev 4754) +++ trunk/OpenMPT/soundlib/Load_mo3.cpp 2015-02-14 14:20:11 UTC (rev 4755) @@ -12,7 +12,25 @@ #include "Loaders.h" #include "../common/ComponentManager.h" +#ifndef NO_MO3 +#if MPT_OS_WINDOWS + #define UNMO3_API __stdcall +#else + #define UNMO3_API +#endif + +#ifdef MPT_LINKED_UNMO3 +extern "C" { +uint32 UNMO3_API UNMO3_GetVersion(void); +void UNMO3_API UNMO3_Free(const void *data); +int32 UNMO3_API UNMO3_Decode(const void **data, uint32 *len, uint32 flags); +}; +#endif // MPT_LINKED_UNMO3 + +#endif // !NO_MO3 + + OPENMPT_NAMESPACE_BEGIN @@ -22,12 +40,6 @@ { MPT_DECLARE_COMPONENT_MEMBERS public: - // Library loaded successfully. - #if MPT_OS_WINDOWS - #define UNMO3_API __stdcall - #else - #define UNMO3_API - #endif uint32 (UNMO3_API * UNMO3_GetVersion)(); // Decode a MO3 file (returns the same "exit codes" as UNMO3.EXE, eg. 0=success) // IN: data/len = MO3 data/len @@ -47,6 +59,13 @@ std::string GetSettingsKey() const { return "UnMO3"; } bool DoInitialize() { +#ifdef MPT_LINKED_UNMO3 + UNMO3_GetVersion = &(::UNMO3_GetVersion); + UNMO3_Free = &(::UNMO3_Free); + UNMO3_Decode_Old = nullptr; + UNMO3_Decode_New = &(::UNMO3_Decode); + return true; +#else AddLibrary("unmo3", mpt::LibraryPath::App(MPT_PATHSTRING("unmo3"))); MPT_COMPONENT_BIND("unmo3", UNMO3_Free); if(MPT_COMPONENT_BIND_OPTIONAL("unmo3", UNMO3_GetVersion)) @@ -60,6 +79,7 @@ MPT_COMPONENT_BIND_SYMBOL("unmo3", "UNMO3_Decode", UNMO3_Decode_Old); } return !HasBindFailed(); +#endif } }; MPT_REGISTERED_COMPONENT(ComponentUnMO3) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |