51 lines
1.7 KiB
Python
51 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()
|