lbry-android-sdk/p4a/pythonforandroid/recipes/libwebp/__init__.py
2022-11-29 15:35:24 -05:00

50 lines
1.7 KiB
Python

from multiprocessing import cpu_count
from os.path import join
import sh
from pythonforandroid.util import current_directory, ensure_dir
from pythonforandroid.toolchain import shprint
from pythonforandroid.recipe import Recipe
class LibwebpRecipe(Recipe):
version = '1.1.0'
url = 'https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-{version}.tar.gz' # noqa
depends = []
built_libraries = {
'libwebp.so': 'installation/lib',
'libwebpdecoder.so': 'installation/lib',
'libwebpdemux.so': 'installation/lib',
'libwebpmux.so': 'installation/lib',
}
def build_arch(self, arch):
source_dir = self.get_build_dir(arch.arch)
build_dir = join(source_dir, 'build')
install_dir = join(source_dir, 'installation')
toolchain_file = join(
self.ctx.ndk_dir, 'build', 'cmake', 'android.toolchain.cmake',
)
ensure_dir(build_dir)
with current_directory(build_dir):
env = self.get_recipe_env(arch)
shprint(sh.cmake, source_dir,
f'-DANDROID_ABI={arch.arch}',
f'-DANDROID_NATIVE_API_LEVEL={self.ctx.ndk_api}',
f'-DCMAKE_TOOLCHAIN_FILE={toolchain_file}',
f'-DCMAKE_INSTALL_PREFIX={install_dir}',
'-DCMAKE_BUILD_TYPE=Release',
'-DBUILD_SHARED_LIBS=1',
_env=env)
shprint(sh.make, '-j' + str(cpu_count()), _env=env)
# We make the install because this way we will have
# all the includes and libraries in one place
shprint(sh.make, 'install', _env=env)
recipe = LibwebpRecipe()