10000 add support pygame_sdl2 module · lstwzd/python-for-android@306b753 · GitHub
[go: up one dir, main page]

Skip to content

Commit 306b753

Browse files
committed
add support pygame_sdl2 module
1 parent ca58e0e commit 306b753

File tree

1 file changed

+117
-0
lines changed

1 file changed

+117
-0
lines changed
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
from os.path import join
2+
3+
from pythonforandroid.recipe import PythonRecipe, warning
4+
5+
from pythonforandroid.recipe import CompiledComponentsPythonRecipe
6+
from pythonforandroid.toolchain import current_directory
7+
8+
9+
10+
class Pygame_sdl2Recipe(CompiledComponentsPythonRecipe):
11+
12+
version = 'renpy-7.3.5.606'
13+
url = 'https://github.com/renpy/pygame_sdl2/archive/{version}.tar.gz'
14+
15+
name = 'pygame_sdl2'
16+
version = '2.1.0'
17+
#url = 'https://nightly.renpy.org/current/pygame_sdl2-2.1.0-for-renpy-nightly-2021-03-19-50aedffdd.tar.gz'
18+
19+
site_packages_name= 'pygame_sdl2'
20+
21+
#depends = []
22+
23+
depends = ['sdl2', 'sdl2_image', 'sdl2_mixer', 'sdl2_ttf', 'setuptools', 'jpeg', 'png']
24+
call_hostpython_via_targetpython = False # Due to setuptools
25+
install_in_hostpython = False
26+
27+
def prebuild_arch(self, arch):
28+
super().prebuild_arch(arch)
29+
30+
def include_flags(self, arch):
31+
'''Returns a string with the include folders'''
32+
33+
png = self.get_recipe('png', self.ctx)
34+
png_lib_dir = join(png.get_build_dir(arch.arch), '.libs')
35+
png_inc_dir = png.get_build_dir(arch)
36+
37+
jpeg = self.get_recipe('jpeg', self.ctx)
38+
jpeg_inc_dir = jpeg_lib_dir = jpeg.get_build_dir(arch.arch)
39+
40+
sdl_ttf_includes= join(self.ctx.bootstrap.build_dir, 'jni', 'SDL2_ttf')
41+
sdl_image_includes= join(self.ctx.bootstrap.build_dir, 'jni', 'SDL2_image')
42+
sdl_mixer_includes= join(self.ctx.bootstrap.build_dir, 'jni', 'SDL2_mixer')
43+
44+
sdl2_includes = join(self.ctx.bootstrap.build_dir, 'jni', 'SDL', 'include')
45+
46+
return (' -I' + sdl2_includes +
47+
' -I' + sdl_ttf_includes +
48+
' -I' + sdl_image_includes +
49+
' -I' + sdl_mixer_includes +
50+
' -I' + jpeg_inc_dir +
51+
' -I' + png_inc_dir)
52+
53+
def link_dirs_flags(self, arch):
54+
55+
png = self.get_recipe('png', self.ctx)
56+
png_lib_dir = join(png.get_build_dir(arch.arch), '.libs')
57+
58+
jpeg = self.get_recipe('jpeg', self.ctx)
59+
jpeg_lib_dir = jpeg.get_build_dir(arch.arch)
60+
61+
ndk_lib_dir = join(self.ctx.ndk_platform, 'usr', 'lib')
62+
63+
return (
64+
' -L' + join(self.ctx.bootstrap.build_dir, "libs", str(arch)) +
65+
' -L' + png_lib_dir +
66+
' -L' + jpeg_lib_dir +
67+
' -L' + ndk_lib_dir)
68+
69+
# def prebuild_arch(self, arch):
70+
# super(Pygame_sdl2Recipe, self).prebuild_arch(arch)
71+
# # AND: Fix this warning!
72+
# warning('Pygame_sdl2 is built assuming the archiver name is '
73+
# 'arm-linux-androideabi-ar, which may not always be true!')
74+
75+
# def prebuild_arch(self, arch):
76+
# super().prebuild_arch(arch)
77+
# with current_directory(self.get_build_dir(arch.arch)):
78+
# setup_template = open(join("buildconfig", "Setup.Android.SDL2.in")).read()
79+
# env = self.get_recipe_env(arch)
80+
# env['ANDROID_ROOT'] = join(self.ctx.ndk_platform, 'usr')
81+
82+
# ndk_lib_dir = join(self.ctx.ndk_platform, 'usr', 'lib')
83+
84+
# png = self.get_recipe('png', self.ctx)
85+
# png_lib_dir = join(png.get_build_dir(arch.arch), '.libs')
86+
# png_inc_dir = png.get_build_dir(arch)
87+
88+
# jpeg = self.get_recipe('jpeg', self.ctx)
89+
# jpeg_inc_dir = jpeg_lib_dir = jpeg.get_build_dir(arch.arch)
90+
91+
# setup_file = setup_template.format(
92+
# sdl_includes=(
93+
# " -I" + join(self.ctx.bootstrap.build_dir, 'jni', 'SDL', 'include') +
94+
# " -L" + join(self.ctx.bootstrap.build_dir, "libs", str(arch)) +
95+
# " -L" + png_lib_dir + " -L" + jpeg_lib_dir + " -L" + ndk_lib_dir),
96+
# sdl_ttf_includes="-I"+join(self.ctx.bootstrap.build_dir, 'jni', 'SDL2_ttf'),
97+
# sdl_image_includes="-I"+join(self.ctx.bootstrap.build_dir, 'jni', 'SDL2_image'),
98+
# sdl_mixer_includes="-I"+join(self.ctx.bootstrap.build_dir, 'jni', 'SDL2_mixer'),
99+
# jpeg_includes="-I"+jpeg_inc_dir,
100+
# png_includes="-I"+png_inc_dir,
101+
# freetype_includes=""
102+
# )
103+
# open("Setup", "w").write(setup_file)
104+
105+
106+
def get_recipe_env(self, arch):
107+
env = super().get_recipe_env(arch)
108+
env["PYGAME_SDL2_ANDROID"] = "TRUE"
109+
env['CFLAGS'] += self.include_flags(arch)
110+
env['LDFLAGS'] += self.link_dirs_flags(arch)
111+
112+
env['USE_SDL2'] = '1'
113+
env["PYGAME_CROSS_COMPILE"] = "TRUE"
114+
env["PYGAME_ANDROID"] = "TRUE"
115+
return env
116+
117+
recipe = Pygame_sdl2Recipe()

0 commit comments

Comments
 (0)
0