55 lines
1.9 KiB
Python
55 lines
1.9 KiB
Python
|
|
||
|
from pythonforandroid.toolchain import CythonRecipe, Recipe, shprint, current_directory, ArchARM
|
||
|
from os.path import exists, join
|
||
|
import sh
|
||
|
import glob
|
||
|
|
||
|
|
||
|
class KivyRecipe(CythonRecipe):
|
||
|
version = '1.10.0'
|
||
|
url = 'https://github.com/kivy/kivy/archive/{version}.zip'
|
||
|
name = 'kivy'
|
||
|
|
||
|
depends = [('sdl2', 'pygame'), 'pyjnius']
|
||
|
|
||
|
call_hostpython_via_targetpython = False
|
||
|
# patches = ['setargv.patch']
|
||
|
|
||
|
|
||
|
def cythonize_build(self, env, build_dir='.'):
|
||
|
super(KivyRecipe, self).cythonize_build(env, build_dir=build_dir)
|
||
|
|
||
|
if not exists(join(build_dir, 'kivy', 'include')):
|
||
|
return
|
||
|
|
||
|
# If kivy is new enough to use the include dir, copy it
|
||
|
# manually to the right location as we bypass this stage of
|
||
|
# the build
|
||
|
with current_directory(build_dir):
|
||
|
build_libs_dirs = glob.glob(join('build', 'lib.*'))
|
||
|
|
||
|
for dirn in build_libs_dirs:
|
||
|
shprint(sh.cp, '-r', join('kivy', 'include'),
|
||
|
join(dirn, 'kivy'))
|
||
|
|
||
|
def get_recipe_env(self, arch):
|
||
|
env = super(KivyRecipe, self).get_recipe_env(arch)
|
||
|
|
||
|
target_python = Recipe.get_recipe('python2', self.ctx).get_build_dir(arch.arch)
|
||
|
env['PYTHON_ROOT'] = join(target_python, 'python-install')
|
||
|
env['CFLAGS'] += ' -I' + env['PYTHON_ROOT'] + '/include/python2.7'
|
||
|
env['LDFLAGS'] += ' -L' + env['PYTHON_ROOT'] + '/lib' + ' -lpython2.7'
|
||
|
|
||
|
if 'sdl2' in self.ctx.recipe_build_order:
|
||
|
env['USE_SDL2'] = '1'
|
||
|
env['KIVY_SDL2_PATH'] = ':'.join([
|
||
|
join(self.ctx.bootstrap.build_dir, 'jni', 'SDL', 'include'),
|
||
|
join(self.ctx.bootstrap.build_dir, 'jni', 'SDL2_image'),
|
||
|
join(self.ctx.bootstrap.build_dir, 'jni', 'SDL2_mixer'),
|
||
|
join(self.ctx.bootstrap.build_dir, 'jni', 'SDL2_ttf'),
|
||
|
])
|
||
|
|
||
|
return env
|
||
|
|
||
|
recipe = KivyRecipe()
|