Skip to content

Commit 538266d

Browse files
authored
Include paths for sdl2_mixer have changed. Added a method to return the correct one. (kivy#2700)
1 parent 5ca3a52 commit 538266d

File tree

6 files changed

+42
-7
lines changed

6 files changed

+42
-7
lines changed

pythonforandroid/recipes/audiostream/__init__.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,18 @@ class AudiostreamRecipe(CythonRecipe):
1717
def get_recipe_env(self, arch):
1818
env = super().get_recipe_env(arch)
1919
sdl_include = 'SDL2'
20-
sdl_mixer_include = 'SDL2_mixer'
20+
2121
env['USE_SDL2'] = 'True'
2222
env['SDL2_INCLUDE_DIR'] = join(self.ctx.bootstrap.build_dir, 'jni', 'SDL', 'include')
2323

24-
env['CFLAGS'] += ' -I{jni_path}/{sdl_include}/include -I{jni_path}/{sdl_mixer_include}'.format(
24+
env['CFLAGS'] += ' -I{jni_path}/{sdl_include}/include'.format(
2525
jni_path=join(self.ctx.bootstrap.build_dir, 'jni'),
26-
sdl_include=sdl_include,
27-
sdl_mixer_include=sdl_mixer_include)
26+
sdl_include=sdl_include)
27+
28+
sdl2_mixer_recipe = self.get_recipe('sdl2_mixer', self.ctx)
29+
for include_dir in sdl2_mixer_recipe.get_include_dirs(arch):
30+
env['CFLAGS'] += ' -I{include_dir}'.format(include_dir=include_dir)
31+
2832
# NDKPLATFORM is our switch for detecting Android platform, so can't be None
2933
env['NDKPLATFORM'] = "NOTNONE"
3034
env['LIBLINK'] = 'NOTNONE' # Hacky fix. Needed by audiostream setup.py

pythonforandroid/recipes/ffpyplayer/__init__.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,11 @@ def get_recipe_env(self, arch, with_flags_in_cc=True):
2020
env["SDL_LIB_DIR"] = join(self.ctx.bootstrap.build_dir, 'libs', arch.arch)
2121

2222
env["USE_SDL2_MIXER"] = '1'
23-
env["SDL2_MIXER_INCLUDE_DIR"] = join(self.ctx.bootstrap.build_dir, 'jni', 'SDL2_mixer')
23+
24+
# ffpyplayer does not allow to pass more than one include dir for sdl2_mixer (and ATM is
25+
# not needed), so we only pass the first one.
26+
sdl2_mixer_recipe = self.get_recipe('sdl2_mixer', self.ctx)
27+
env["SDL2_MIXER_INCLUDE_DIR"] = sdl2_mixer_recipe.get_include_dirs(arch)[0]
2428

2529
# NDKPLATFORM and LIBLINK are our switches for detecting Android platform, so can't be empty
2630
# FIXME: We may want to introduce a cleaner approach to this?

pythonforandroid/recipes/kivy/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,11 @@ def get_recipe_env(self, arch):
6565
if 'sdl2' in self.ctx.recipe_build_order:
6666
env['USE_SDL2'] = '1'
6767
env['KIVY_SPLIT_EXAMPLES'] = '1'
68+
sdl2_mixer_recipe = self.get_recipe('sdl2_mixer', self.ctx)
6869
env['KIVY_SDL2_PATH'] = ':'.join([
6970
join(self.ctx.bootstrap.build_dir, 'jni', 'SDL', 'include'),
7071
join(self.ctx.bootstrap.build_dir, 'jni', 'SDL2_image'),
71-
join(self.ctx.bootstrap.build_dir, 'jni', 'SDL2_mixer', 'include'),
72+
*sdl2_mixer_recipe.get_include_dirs(arch),
7273
join(self.ctx.bootstrap.build_dir, 'jni', 'SDL2_ttf'),
7374
])
7475

pythonforandroid/recipes/pygame/__init__.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,19 @@ def prebuild_arch(self, arch):
3737
jpeg = self.get_recipe('jpeg', self.ctx)
3838
jpeg_inc_dir = jpeg_lib_dir = jpeg.get_build_dir(arch.arch)
3939

40+
sdl_mixer_includes = ""
41+
sdl2_mixer_recipe = self.get_recipe('sdl2_mixer', self.ctx)
42+
for include_dir in sdl2_mixer_recipe.get_include_dirs(arch):
43+
sdl_mixer_includes += f"-I{include_dir} "
44+
4045
setup_file = setup_template.format(
4146
sdl_includes=(
4247
" -I" + join(self.ctx.bootstrap.build_dir, 'jni', 'SDL', 'include') +
4348
" -L" + join(self.ctx.bootstrap.build_dir, "libs", str(arch)) +
4449
" -L" + png_lib_dir + " -L" + jpeg_lib_dir + " -L" + arch.ndk_lib_dir_versioned),
4550
sdl_ttf_includes="-I"+join(self.ctx.bootstrap.build_dir, 'jni', 'SDL2_ttf'),
4651
sdl_image_includes="-I"+join(self.ctx.bootstrap.build_dir, 'jni', 'SDL2_image'),
47-
sdl_mixer_includes="-I"+join(self.ctx.bootstrap.build_dir, 'jni', 'SDL2_mixer'),
52+
sdl_mixer_includes=sdl_mixer_includes,
4853
jpeg_includes="-I"+jpeg_inc_dir,
4954
png_includes="-I"+png_inc_dir,
5055
freetype_includes=""

pythonforandroid/recipes/sdl2_mixer/__init__.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import os
2+
13
from pythonforandroid.recipe import BootstrapNDKRecipe
24

35

@@ -6,5 +8,10 @@ class LibSDL2Mixer(BootstrapNDKRecipe):
68
url = 'https://github.com/libsdl-org/SDL_mixer/releases/download/release-{version}/SDL2_mixer-{version}.tar.gz'
79
dir_name = 'SDL2_mixer'
810

11+
def get_include_dirs(self, arch):
12+
return [
13+
os.path.join(self.ctx.bootstrap.build_dir, "jni", "SDL2_mixer", "include")
14+
]
15+
916

1017
recipe = LibSDL2Mixer()

tests/recipes/test_sdl2_mixer.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import unittest
2+
from tests.recipes.recipe_lib_test import RecipeCtx
3+
4+
5+
class TestSDL2MixerRecipe(RecipeCtx, unittest.TestCase):
6+
"""
7+
An unittest for recipe :mod:`~pythonforandroid.recipes.sdl2_mixer`
8+
"""
9+
recipe_name = "sdl2_mixer"
10+
11+
def test_get_include_dirs(self):
12+
list_of_includes = self.recipe.get_include_dirs(self.arch)
13+
self.assertIsInstance(list_of_includes, list)
14+
self.assertTrue(list_of_includes[0].endswith("include"))

0 commit comments

Comments
 (0)