diff --git a/pythonforandroid/recipes/kivy/__init__.py b/pythonforandroid/recipes/kivy/__init__.py index d92fbe9367..ee199b963f 100644 --- a/pythonforandroid/recipes/kivy/__init__.py +++ b/pythonforandroid/recipes/kivy/__init__.py @@ -15,6 +15,22 @@ class KivyRecipe(CythonRecipe): # 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) if 'sdl2' in self.ctx.recipe_build_order: @@ -25,6 +41,14 @@ def get_recipe_env(self, arch): join(self.ctx.bootstrap.build_dir, 'jni', 'SDL2_mixer'), join(self.ctx.bootstrap.build_dir, 'jni', 'SDL2_ttf'), ]) + + # Set include dir for pxi files - Kivy normally handles this + # in the setup.py invocation, but we skip this + build_dir = self.get_build_dir(arch.arch) + self.cython_args = ['-I{}'.format(join(build_dir, 'kivy', 'include'))] + + env['CFLAGS'] += ' -I{}'.format(join(build_dir, 'kivy', 'include')) + return env recipe = KivyRecipe()