So I’m trying to build SDL2, SDL2_mixer, SDL2_ttf, and SDL2_image for Android using the android NDK.
I’m at the point where I’m using the Android.mk files with ndk-build. I thought SDL2 had built fine; but since I can’t get any of the other libraries to build from it (they all fail after linking or trying to find an include file) I’m assuming I did not do the initial SDL2 build correctly.
I’m using Cygwin and followed the following steps:
- Download and install the NDK.
- Create the toolchain directories.
- Download and extracted the source for SDL 2.0.1
- In cygwin navigated to the SDL 2.0.1 folder where the Android.mk file is located
- Run the Android.mk file using the following command:
/cygdrive/h/programming/android/android-ndk-r9c/ndk-build V=1 clean all all NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk \ APP_PLATFORM=android-19
Results are here: http://pastebin.com/WYPhWuzT
But no errors that I see and I get a libSDL2.so file.
-
Take the libSDL2.so file place it in the root directory of the next projects extracted source
-
Edit the Android.mk file in SDL2_mixer2.0.0 like so:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := SDL2_mixer
Enable this if you want to support loading MOD music via modplug
The library path should be a relative path to this directory.
SUPPORT_MOD_MODPLUG := false
MODPLUG_LIBRARY_PATH := external/libmodplug-0.8.8.4Enable this if you want to support loading MOD music via mikmod
The library path should be a relative path to this directory.
SUPPORT_MOD_MIKMOD := false
MIKMOD_LIBRARY_PATH := external/libmikmod-3.1.12Enable this if you want to support loading MP3 music via SMPEG
The library path should be a relative path to this directory.
SUPPORT_MP3_SMPEG := false
SMPEG_LIBRARY_PATH := external/smpeg2-2.0.0Enable this if you want to support loading OGG Vorbis music via Tremor
The library path should be a relative path to this directory.
SUPPORT_OGG := false
OGG_LIBRARY_PATH := external/libogg-1.3.1
VORBIS_LIBRARY_PATH := external/libvorbisidec-1.2.1LOCAL_C_INCLUDES := $(LOCAL_PATH)
…/SDL2-2.0.1/include
LOCAL_CFLAGS := -DWAV_MUSICLOCAL_SRC_FILES := $(notdir $(filter-out %/playmus.c %/playwave.c, $(wildcard $(LOCAL_PATH)/*.c)))
LOCAL_LDLIBS :=
LOCAL_STATIC_LIBRARIES :=
LOCAL_SHARED_LIBRARIES := SDL2.soifeq ($(SUPPORT_MOD_MODPLUG),true)
LOCAL_C_INCLUDES += $(LOCAL_PATH)/$(MODPLUG_LIBRARY_PATH)/src $(LOCAL_PATH)/$(MODPLUG_LIBRARY_PATH)/src/libmodplug
LOCAL_CFLAGS += -DMODPLUG_MUSIC -DHAVE_SETENV -DHAVE_SINF
LOCAL_SRC_FILES +=
$(MODPLUG_LIBRARY_PATH)/src/fastmix.cpp
$(MODPLUG_LIBRARY_PATH)/src/load_669.cpp
$(MODPLUG_LIBRARY_PATH)/src/load_abc.cpp
$(MODPLUG_LIBRARY_PATH)/src/load_amf.cpp
$(MODPLUG_LIBRARY_PATH)/src/load_ams.cpp
$(MODPLUG_LIBRARY_PATH)/src/load_dbm.cpp
$(MODPLUG_LIBRARY_PATH)/src/load_dmf.cpp
$(MODPLUG_LIBRARY_PATH)/src/load_dsm.cpp
$(MODPLUG_LIBRARY_PATH)/src/load_far.cpp
$(MODPLUG_LIBRARY_PATH)/src/load_it.cpp
$(MODPLUG_LIBRARY_PATH)/src/load_j2b.cpp
$(MODPLUG_LIBRARY_PATH)/src/load_mdl.cpp
$(MODPLUG_LIBRARY_PATH)/src/load_med.cpp
$(MODPLUG_LIBRARY_PATH)/src/load_mid.cpp
$(MODPLUG_LIBRARY_PATH)/src/load_mod.cpp
$(MODPLUG_LIBRARY_PATH)/src/load_mt2.cpp
$(MODPLUG_LIBRARY_PATH)/src/load_mtm.cpp
$(MODPLUG_LIBRARY_PATH)/src/load_okt.cpp
$(MODPLUG_LIBRARY_PATH)/src/load_pat.cpp
$(MODPLUG_LIBRARY_PATH)/src/load_psm.cpp
$(MODPLUG_LIBRARY_PATH)/src/load_ptm.cpp
$(MODPLUG_LIBRARY_PATH)/src/load_s3m.cpp
$(MODPLUG_LIBRARY_PATH)/src/load_stm.cpp
$(MODPLUG_LIBRARY_PATH)/src/load_ult.cpp
$(MODPLUG_LIBRARY_PATH)/src/load_umx.cpp
$(MODPLUG_LIBRARY_PATH)/src/load_wav.cpp
$(MODPLUG_LIBRARY_PATH)/src/load_xm.cpp
$(MODPLUG_LIBRARY_PATH)/src/mmcmp.cpp
$(MODPLUG_LIBRARY_PATH)/src/modplug.cpp
$(MODPLUG_LIBRARY_PATH)/src/snd_dsp.cpp
$(MODPLUG_LIBRARY_PATH)/src/snd_flt.cpp
$(MODPLUG_LIBRARY_PATH)/src/snd_fx.cpp
$(MODPLUG_LIBRARY_PATH)/src/sndfile.cpp
$(MODPLUG_LIBRARY_PATH)/src/sndmix.cpp
endififeq ($(SUPPORT_MOD_MIKMOD),true)
LOCAL_C_INCLUDES += $(LOCAL_PATH)/$(MIKMOD_LIBRARY_PATH)/include
LOCAL_CFLAGS += -DMOD_MUSIC
LOCAL_SHARED_LIBRARIES += mikmod
endififeq ($(SUPPORT_MP3_SMPEG),true)
LOCAL_C_INCLUDES += $(LOCAL_PATH)/$(SMPEG_LIBRARY_PATH)
LOCAL_CFLAGS += -DMP3_MUSIC
LOCAL_SHARED_LIBRARIES += smpeg2
endififeq ($(SUPPORT_OGG),true)
LOCAL_C_INCLUDES += $(LOCAL_PATH)/$(OGG_LIBRARY_PATH)/include $(LOCAL_PATH)/$(VORBIS_LIBRARY_PATH)
LOCAL_CFLAGS += -DOGG_MUSIC -DOGG_USE_TREMOR
LOCAL_SRC_FILES +=
$(VORBIS_LIBRARY_PATH)/mdct.c
$(VORBIS_LIBRARY_PATH)/block.c
$(VORBIS_LIBRARY_PATH)/window.c
$(VORBIS_LIBRARY_PATH)/synthesis.c
$(VORBIS_LIBRARY_PATH)/info.c
$(VORBIS_LIBRARY_PATH)/floor1.c
$(VORBIS_LIBRARY_PATH)/floor0.c
$(VORBIS_LIBRARY_PATH)/vorbisfile.c
$(VORBIS_LIBRARY_PATH)/res012.c
$(VORBIS_LIBRARY_PATH)/mapping0.c
$(VORBIS_LIBRARY_PATH)/registry.c
$(VORBIS_LIBRARY_PATH)/codebook.c
$(VORBIS_LIBRARY_PATH)/sharedbook.c
$(OGG_LIBRARY_PATH)/src/framing.c
$(OGG_LIBRARY_PATH)/src/bitwise.c
endifLOCAL_EXPORT_C_INCLUDES += $(LOCAL_C_INCLUDES)
include $(BUILD_SHARED_LIBRARY)
- Run the Android.mk file using the following command:
/cygdrive/h/programming/android/android-ndk-r9c/ndk-build V=1 clean all all NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk \ APP_PLATFORM=android-19
And the results are here: http://pastebin.com/4DBra7iD
This is all new to me but I’m assuming those are errors during the linking process. I get similar results when trying to build SDL2_ttf as well so my guess is I have messed up in building the original SDL2.so.
I have been working on this for about 8 hours trying several different tutorials and instructions and searching for similar issues but I have not been able to find out what I am doing wrong.