Skip to content

Commit 11b6f77

Browse files
committed
sdl2: start sdl2 integration (more exploration about how we can integrate it.)
1 parent 82da05c commit 11b6f77

File tree

10 files changed

+163
-79
lines changed

10 files changed

+163
-79
lines changed

recipes/android/recipe.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
VERSION_android=
44
URL_android=
5-
DEPS_android=(pygame)
5+
DEPS_android=
6+
DEPS_OPTIONAL_android=(sdl sdl2)
67
MD5_android=
78
BUILD_android=$BUILD_PATH/android/android
89
RECIPE_android=$RECIPES_PATH/android

recipes/kivy/recipe.sh

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
VERSION_kivy=${VERSION_kivy:-stable}
44
URL_kivy=https://github.com/kivy/kivy/zipball/$VERSION_kivy/kivy-$VERSION_kivy.zip
5-
DEPS_kivy=(pygame pyjnius android)
5+
DEPS_kivy=(pyjnius android)
6+
DEPS_OPTIONAL_kivy=(pygame sdl2)
67
MD5_kivy=
78
BUILD_kivy=$BUILD_PATH/kivy/$(get_directory $URL_kivy)
89
RECIPE_kivy=$RECIPES_PATH/kivy
@@ -23,6 +24,29 @@ function build_kivy() {
2324
export LDFLAGS="$LDFLAGS -L$LIBS_PATH"
2425
export LDSHARED="$LIBLINK"
2526

27+
# sdl2 activated ?
28+
if [ "X$BUILD_sdl2" != "X" ]; then
29+
debug "Active flags for SDL2"
30+
export USE_SDL2=1
31+
export CFLAGS="$CFLAGS -I$BUILD_sdl2/include/"
32+
export LDFLAGS="$LDFLAGS -L$BUILD_sdl2/"
33+
fi
34+
if [ "X$BUILD_sdl2_image" != "X" ]; then
35+
debug "Active flags for SDL2_image"
36+
export CFLAGS="$CFLAGS -I$BUILD_sdl2_image/"
37+
export LDFLAGS="$LDFLAGS -L$BUILD_sdl2_image/"
38+
fi
39+
if [ "X$BUILD_sdl2_ttf" != "X" ]; then
40+
debug "Active flags for SDL2_ttf"
41+
export CFLAGS="$CFLAGS -I$BUILD_sdl2_ttf/"
42+
export LDFLAGS="$LDFLAGS -L$BUILD_sdl2_ttf/"
43+
fi
44+
if [ "X$BUILD_sdl2_mixer" != "X" ]; then
45+
debug "Active flags for SDL2_mixer"
46+
export CFLAGS="$CFLAGS -I$BUILD_sdl2_mixer/"
47+
export LDFLAGS="$LDFLAGS -L$BUILD_sdl2_mixer/"
48+
fi
49+
2650
# fake try to be able to cythonize generated files
2751
$BUILD_PATH/python-install/bin/python.host setup.py build_ext
2852
try find . -iname '*.pyx' -exec cython {} \;

recipes/pyjnius/recipe.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
VERSION_pyjnius=${VERSION_pyjnius:-master}
44
URL_pyjnius=https://github.com/kivy/pyjnius/zipball/$VERSION_pyjnius/pyjnius-$VERSION_pyjnius.zip
5-
DEPS_pyjnius=(python sdl)
5+
DEPS_pyjnius=(python)
6+
DEPS_OPTIONAL_pyjnius=(sdl sdl2)
67
MD5_pyjnius=
78
BUILD_pyjnius=$BUILD_PATH/pyjnius/$(get_directory $URL_pyjnius)
89
RECIPE_pyjnius=$RECIPES_PATH/pyjnius
@@ -13,8 +14,7 @@ function prebuild_pyjnius() {
1314

1415
function build_pyjnius() {
1516
if [ -d "$BUILD_PATH/python-install/lib/python2.7/site-packages/jnius" ]; then
16-
#return
17-
true
17+
return
1818
fi
1919

2020
cd $BUILD_pyjnius

recipes/sdl2/recipe.sh

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#!/bin/bash
2+
3+
VERSION_sdl2=2.0.0
4+
URL_sdl2=http://www.libsdl.org/release/SDL2-$VERSION_sdl2.tar.gz
5+
MD5_sdl2=
6+
DEPS_sdl2=()
7+
BUILD_sdl2=$BUILD_PATH/sdl2/SDL2-$VERSION_sdl2
8+
RECIPE_sdl2=$RECIPES_PATH/sdl2
9+
10+
function prebuild_sdl2() {
11+
true
12+
}
13+
14+
function build_sdl2() {
15+
cd $SRC_PATH/jni
16+
ln -s $BUILD_sdl2 sdl2
17+
18+
push_arm
19+
try ndk-build V=1 SDL2 application
20+
pop_arm
21+
22+
try cp -a $SRC_PATH/obj/local/$ARCH/*.so $LIBS_PATH
23+
}
24+
25+
function postbuild_sdl2() {
26+
true
27+
}

recipes/sdl2_image/recipe.sh

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#!/bin/bash
2+
3+
VERSION_sdl2_image=2.0.0
4+
URL_sdl2_image=http://www.libsdl.org/projects/SDL_image/release/SDL2_image-$VERSION_sdl2_image.tar.gz
5+
MD5_sdl2_image=
6+
DEPS_sdl2_image=(sdl2)
7+
BUILD_sdl2_image=$BUILD_PATH/sdl2_image/SDL2_image-$VERSION_sdl2_image
8+
RECIPE_sdl2_image=$RECIPES_PATH/sdl2_image
9+
10+
function prebuild_sdl2_image() {
11+
true
12+
}
13+
14+
function build_sdl2_image() {
15+
cd $SRC_PATH/jni
16+
ln -s $BUILD_sdl2_image sdl2_image
17+
18+
push_arm
19+
try ndk-build V=1 SDL2_image SUPPORT_WEBP=false
20+
pop_arm
21+
22+
try cp -a $SRC_PATH/obj/local/$ARCH/*.so $LIBS_PATH
23+
}
24+
25+
function postbuild_sdl2_image() {
26+
true
27+
}

recipes/sdl2_mixer/recipe.sh

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#!/bin/bash
2+
3+
VERSION_sdl2_mixer=2.0.0
4+
URL_sdl2_mixer=http://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-$VERSION_sdl2_mixer.tar.gz
5+
MD5_sdl2_mixer=
6+
DEPS_sdl2_mixer=(sdl2)
7+
BUILD_sdl2_mixer=$BUILD_PATH/sdl2_mixer/SDL2_mixer-$VERSION_sdl2_mixer
8+
RECIPE_sdl2_mixer=$RECIPES_PATH/sdl2_mixer
9+
10+
function prebuild_sdl2_mixer() {
11+
true
12+
}
13+
14+
function build_sdl2_mixer() {
15+
cd $SRC_PATH/jni
16+
ln -s $BUILD_sdl2_mixer sdl2_mixer
17+
18+
push_arm
19+
try ndk-build V=1 SDL2_mixer \
20+
SUPPORT_MOD_MODPLUG=false \
21+
SUPPORT_MOD_MIKMOD=false \
22+
SUPPORT_MP3_SMPEG=false
23+
pop_arm
24+
25+
try cp -a $SRC_PATH/obj/local/$ARCH/*.so $LIBS_PATH
26+
}
27+
28+
function postbuild_sdl2_mixer() {
29+
true
30+
}

recipes/sdl2_ttf/recipe.sh

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#!/bin/bash
2+
3+
VERSION_sdl2_ttf=2.0.12
4+
URL_sdl2_ttf=http://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-$VERSION_sdl2_ttf.tar.gz
5+
MD5_sdl2_ttf=
6+
DEPS_sdl2_ttf=(sdl2)
7+
BUILD_sdl2_ttf=$BUILD_PATH/sdl2_ttf/SDL2_ttf-$VERSION_sdl2_ttf
8+
RECIPE_sdl2_ttf=$RECIPES_PATH/SDL2_ttf
9+
10+
function prebuild_sdl2_ttf() {
11+
true
12+
}
13+
14+
function build_sdl2_ttf() {
15+
cd $SRC_PATH/jni
16+
ln -s $BUILD_sdl2_ttf sdl2_ttf
17+
18+
push_arm
19+
try ndk-build V=1 SDL2_ttf
20+
pop_arm
21+
22+
try cp -a $SRC_PATH/obj/local/$ARCH/*.so $LIBS_PATH
23+
}
24+
25+
function postbuild_sdl2_ttf() {
26+
true
27+
}

src/jni/application/Android.mk

Lines changed: 7 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,11 @@ include $(CLEAR_VARS)
44

55
LOCAL_MODULE := application
66

7-
APP_SUBDIRS := $(patsubst $(LOCAL_PATH)/%, %, $(shell find $(LOCAL_PATH)/src/ -type d))
8-
97
LOCAL_CFLAGS := $(foreach D, $(APP_SUBDIRS), -I$(LOCAL_PATH)/$(D)) \
10-
-I$(LOCAL_PATH)/../sdl/include \
11-
-I$(LOCAL_PATH)/../sdl_mixer \
12-
-I$(LOCAL_PATH)/../sdl_image \
13-
-I$(LOCAL_PATH)/../sdl_ttf \
14-
-I$(LOCAL_PATH)/../sdl_net \
15-
-I$(LOCAL_PATH)/../sdl_blitpool \
16-
-I$(LOCAL_PATH)/../sdl_gfx \
17-
-I$(LOCAL_PATH)/../png \
18-
-I$(LOCAL_PATH)/../jpeg \
8+
-I$(LOCAL_PATH)/../SDL2/include \
9+
-I$(LOCAL_PATH)/../SDL2_mixer \
10+
-I$(LOCAL_PATH)/../SDL2_image \
11+
-I$(LOCAL_PATH)/../SDL2_ttf \
1912
-I$(LOCAL_PATH)/../intl \
2013
-I$(LOCAL_PATH)/.. \
2114
-I$(LOCAL_PATH)/../../../build/python-install/include/python2.7
@@ -26,39 +19,10 @@ LOCAL_CFLAGS += $(APPLICATION_ADDITIONAL_CFLAGS)
2619
#Change C++ file extension as appropriate
2720
LOCAL_CPP_EXTENSION := .cpp
2821

29-
LOCAL_SRC_FILES := $(foreach F, $(APP_SUBDIRS), $(addprefix $(F)/,$(notdir $(wildcard $(LOCAL_PATH)/$(F)/*.cpp))))
30-
# Uncomment to also add C sources
31-
LOCAL_SRC_FILES += $(foreach F, $(APP_SUBDIRS), $(addprefix $(F)/,$(notdir $(wildcard $(LOCAL_PATH)/$(F)/*.c))))
32-
33-
LOCAL_SHARED_LIBRARIES := sdl $(COMPILED_LIBRARIES)
34-
22+
LOCAL_SRC_FILES := ../sdl2/src/main/android/SDL_android_main.c src/start.c
23+
LOCAL_SHARED_LIBRARIES := SDL2
3524
LOCAL_STATIC_LIBRARIES := jpeg png
36-
3725
LOCAL_LDLIBS := -lpython2.7 -lGLESv1_CM -ldl -llog -lz
38-
39-
LOCAL_LDFLAGS += -L$(LOCAL_PATH)/../../../build/python-install/lib $(APPLICATION_ADDITIONAL_LDFLAGS)
40-
41-
LIBS_WITH_LONG_SYMBOLS := $(strip $(shell \
42-
for f in $(LOCAL_PATH)/../../libs/$ARCH/*.so ; do \
43-
if echo $$f | grep "libapplication[.]so" > /dev/null ; then \
44-
continue ; \
45-
fi ; \
46-
if [ -e "$$f" ] ; then \
47-
if nm -g $$f | cut -c 12- | egrep '.{128}' > /dev/null ; then \
48-
echo $$f | grep -o 'lib[^/]*[.]so' ; \
49-
fi ; \
50-
fi ; \
51-
done \
52-
) )
53-
54-
ifneq "$(LIBS_WITH_LONG_SYMBOLS)" ""
55-
$(foreach F, $(LIBS_WITH_LONG_SYMBOLS), \
56-
$(info Library $(F): abusing symbol names are: \
57-
$(shell nm -g $(LOCAL_PATH)/../../libs/$ARCH/$(F) | cut -c 12- | egrep '.{128}' ) ) \
58-
$(info Library $(F) contains symbol names longer than 128 bytes, \
59-
YOUR CODE WILL DEADLOCK WITHOUT ANY WARNING when you'll access such function - \
60-
please make this library static to avoid problems. ) )
61-
$(error Detected libraries with too long symbol names. Remove all files under project/libs/$ARCH, make these libs static, and recompile)
62-
endif
26+
LOCAL_LDFLAGS += -L$(LOCAL_PATH)/../../../build/python-install/lib
6327

6428
include $(BUILD_SHARED_LIBRARY)

src/src/org/renpy/android/PythonActivity.java

Lines changed: 12 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
package org.renpy.android;
22

3+
import org.libsdl.app.SDLActivity;
4+
5+
public class PythonActivity extends SDLActivity {
6+
}
7+
8+
/**
39
import android.app.Activity;
410
import android.content.Intent;
511
import android.content.ActivityNotFoundException;
@@ -49,9 +55,6 @@
4955
public class PythonActivity extends Activity implements Runnable {
5056
private static String TAG = "Python";
5157
52-
// The audio thread for streaming audio...
53-
private static AudioThread mAudioThread = null;
54-
5558
// The SDLSurfaceView we contain.
5659
public static SDLSurfaceView mView = null;
5760
public static PythonActivity mActivity = null;
@@ -150,10 +153,6 @@ protected void onCreate(Bundle savedInstanceState) {
150153
setContentView(mView);
151154
}
152155
153-
/**
154-
* Show an error using a toast. (Only makes sense from non-UI
155-
* threads.)
156-
*/
157156
public void toastError(final String msg) {
158157
159158
final Activity thisActivity = this;
@@ -183,10 +182,6 @@ public void recursiveDelete(File f) {
183182
}
184183
185184
186-
/**
187-
* This determines if unpacking one the zip files included in
188-
* the .apk is necessary. If it is, the zip file is unpacked.
189-
*/
190185
public void unpackData(final String resource, File target) {
191186
192187
// The version of data in memory and on disk.
@@ -245,13 +240,13 @@ public void run() {
245240
unpackData("private", getFilesDir());
246241
unpackData("public", externalStorage);
247242
248-
System.loadLibrary("sdl");
249-
System.loadLibrary("sdl_image");
250-
System.loadLibrary("sdl_ttf");
251-
System.loadLibrary("sdl_mixer");
243+
System.loadLibrary("SDL2");
244+
System.loadLibrary("SDL2_image");
245+
System.loadLibrary("SDL2_ttf");
246+
System.loadLibrary("SDL2_mixer");
252247
System.loadLibrary("python2.7");
253248
System.loadLibrary("application");
254-
System.loadLibrary("sdl_main");
249+
//System.loadLibrary("sdl_main");
255250
256251
System.load(getFilesDir() + "/lib/python2.7/lib-dynload/_io.so");
257252
System.load(getFilesDir() + "/lib/python2.7/lib-dynload/unicodedata.so");
@@ -269,11 +264,6 @@ public void run() {
269264
} catch(UnsatisfiedLinkError e) {
270265
}
271266
272-
if ( mAudioThread == null ) {
273-
Log.i("python", "Starting audio thread");
274-
mAudioThread = new AudioThread(this);
275-
}
276-
277267
runOnUiThread(new Runnable () {
278268
public void run() {
279269
mView.start();
@@ -501,13 +491,6 @@ public void onRestoreTransactionsResponse(RestoreTransactions request,
501491
}
502492
}
503493
504-
/**
505-
* If the database has not been initialized, we send a
506-
* RESTORE_TRANSACTIONS request to Android Market to get the list of purchased items
507-
* for this user. This happens if the application has just been installed
508-
* or the user wiped data. We do not want to do this on every startup, rather, we want to do
509-
* only when the database needs to be initialized.
510-
*/
511494
private void restoreDatabase() {
512495
SharedPreferences prefs = getPreferences(MODE_PRIVATE);
513496
boolean initialized = prefs.getBoolean(DB_INITIALIZED, false);
@@ -516,8 +499,6 @@ private void restoreDatabase() {
516499
}
517500
}
518501
519-
/** An array of product list entries for the products that can be purchased. */
520-
521502
private enum Managed { MANAGED, UNMANAGED, SUBSCRIPTION }
522503
523504
@@ -622,4 +603,4 @@ static String billingGetPendingMessage() {
622603
}
623604
624605
}
625-
606+
**/

src/tools/biglink

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ for fn in sofiles:
2929
args.append(afn)
3030
with open(libsfn) as fd:
3131
data = fd.read()
32+
print(libsfn, data)
3233
args.extend(data.split(" "))
3334

3435
unique_args = [ ]
@@ -37,6 +38,8 @@ while args:
3738
if a in ('-L', ):
3839
continue
3940
if a not in unique_args:
41+
if a == '-lsdl':
42+
continue
4043
unique_args.insert(0, a)
4144

4245

0 commit comments

Comments
 (0)