from pythonforandroid.recipe import NDKRecipe from pythonforandroid.toolchain import current_directory, shprint from os.path import join import os import sh class OpenALRecipe(NDKRecipe): version = '1.18.2' url = 'https://github.com/kcat/openal-soft/archive/openal-soft-{version}.tar.gz' generated_libraries = ['libopenal.so'] def prebuild_arch(self, arch): # we need to build native tools for host system architecture with current_directory(join(self.get_build_dir(arch.arch), 'native-tools')): shprint(sh.cmake, '.', _env=os.environ) shprint(sh.make, _env=os.environ) def build_arch(self, arch): with current_directory(self.get_build_dir(arch.arch)): env = self.get_recipe_env(arch) cmake_args = [ '-DCMAKE_TOOLCHAIN_FILE={}'.format('XCompile-Android.txt'), '-DHOST={}'.format(self.ctx.toolchain_prefix) ] if self.ctx.ndk == 'crystax': # avoids a segfault in libcrystax when calling lrintf cmake_args += ['-DHAVE_LRINTF=0'] shprint( sh.cmake, '.', *cmake_args, _env=env ) shprint(sh.make, _env=env) self.install_libs(arch, 'libopenal.so') recipe = OpenALRecipe()