-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #2164 from AndreMiras/feature/pygame_recipe
Adds pygame recipe
- Loading branch information
Showing
1 changed file
with
64 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
from os.path import join | ||
|
||
from pythonforandroid.recipe import CompiledComponentsPythonRecipe | ||
from pythonforandroid.toolchain import current_directory | ||
|
||
|
||
class Pygame2Recipe(CompiledComponentsPythonRecipe): | ||
""" | ||
Recipe to build apps based on SDL2-based pygame. | ||
.. warning:: Some pygame functionality is still untested, and some | ||
dependencies like freetype, postmidi and libjpeg are currently | ||
not part of the build. It's usable, but not complete. | ||
""" | ||
|
||
version = '2.0.0-dev7' | ||
url = 'https://github.com/pygame/pygame/archive/android-{version}.tar.gz' | ||
|
||
site_packages_name = 'pygame' | ||
name = 'pygame' | ||
|
||
depends = ['sdl2', 'sdl2_image', 'sdl2_mixer', 'sdl2_ttf', 'setuptools', 'jpeg', 'png'] | ||
call_hostpython_via_targetpython = False # Due to setuptools | ||
install_in_hostpython = False | ||
|
||
def prebuild_arch(self, arch): | ||
super().prebuild_arch(arch) | ||
with current_directory(self.get_build_dir(arch.arch)): | ||
setup_template = open(join("buildconfig", "Setup.Android.SDL2.in")).read() | ||
env = self.get_recipe_env(arch) | ||
env['ANDROID_ROOT'] = join(self.ctx.ndk_platform, 'usr') | ||
|
||
ndk_lib_dir = join(self.ctx.ndk_platform, 'usr', 'lib') | ||
|
||
png = self.get_recipe('png', self.ctx) | ||
png_lib_dir = join(png.get_build_dir(arch.arch), '.libs') | ||
png_inc_dir = png.get_build_dir(arch) | ||
|
||
jpeg = self.get_recipe('jpeg', self.ctx) | ||
jpeg_inc_dir = jpeg_lib_dir = jpeg.get_build_dir(arch.arch) | ||
|
||
setup_file = setup_template.format( | ||
sdl_includes=( | ||
" -I" + join(self.ctx.bootstrap.build_dir, 'jni', 'SDL', 'include') + | ||
" -L" + join(self.ctx.bootstrap.build_dir, "libs", str(arch)) + | ||
" -L" + png_lib_dir + " -L" + jpeg_lib_dir + " -L" + ndk_lib_dir), | ||
sdl_ttf_includes="-I"+join(self.ctx.bootstrap.build_dir, 'jni', 'SDL2_ttf'), | ||
sdl_image_includes="-I"+join(self.ctx.bootstrap.build_dir, 'jni', 'SDL2_image'), | ||
sdl_mixer_includes="-I"+join(self.ctx.bootstrap.build_dir, 'jni', 'SDL2_mixer'), | ||
jpeg_includes="-I"+jpeg_inc_dir, | ||
png_includes="-I"+png_inc_dir, | ||
freetype_includes="" | ||
) | ||
open("Setup", "w").write(setup_file) | ||
|
||
def get_recipe_env(self, arch): | ||
env = super().get_recipe_env(arch) | ||
env['USE_SDL2'] = '1' | ||
env["PYGAME_CROSS_COMPILE"] = "TRUE" | ||
env["PYGAME_ANDROID"] = "TRUE" | ||
return env | ||
|
||
|
||
recipe = Pygame2Recipe() |