1+ from pythonforandroid .recipe import NDKRecipe , IncludedFilesBehaviour
2+ from pythonforandroid .util import current_directory
3+ from pythonforandroid .logger import shprint
4+ from os .path import join
5+ import shutil
6+ import sh
7+
8+
9+ class LibusbRecipe (NDKRecipe , IncludedFilesBehaviour ):
10+ version = '1.0'
11+ url = None
12+ site_packages_name = 'libusb'
13+ name = 'libusb'
14+ src_filename = './src'
15+ generated_libraries = ['libusb1.0.so' ]
16+
17+ def should_build (self , arch ):
18+ return True
19+
20+ def get_recipe_env (self , arch ):
21+ env = super ().get_recipe_env (arch )
22+
23+ env ['LOCAL_C_INCLUDES' ] = ' $(LIBUSB_ROOT_ABS)'
24+ env ['LOCAL_SHARED_LIBRARIES' ] = ' libusb1.0'
25+ return env
26+
27+ def get_lib_dir (self , arch ):
28+ return join (self .get_build_dir (arch .arch ), 'android' , 'obj' , 'local' , arch .arch )
29+
30+ def get_jni_dir (self , arch ):
31+ return join (self .get_build_dir (arch .arch ), 'android' , 'jni' )
32+
33+ def build_arch (self , arch , * extra_args ):
34+ env = self .get_recipe_env (arch )
35+ with current_directory (self .get_build_dir (arch .arch )):
36+ shprint (
37+ sh .Command (join (self .ctx .ndk_dir , "ndk-build" )),
38+ 'NDK_PROJECT_PATH=' + self .get_build_dir (arch .arch ) + '/android' ,
39+ 'NDK=' + self .ctx .ndk_dir ,
40+ 'APP_PLATFORM=android-' + str (self .ctx .ndk_api ),
41+ 'APP_ABI=' + arch .arch ,
42+ * extra_args , _env = env
43+ )
44+
45+ shutil .copyfile (join (self .get_build_dir (arch .arch ), 'android' , 'libs' , arch .arch , 'libusb1.0.so' ), join (self .ctx .get_libs_dir (arch .arch ), 'libusb1.0.so' ))
46+
47+ recipe = LibusbRecipe ()
0 commit comments