1- from os . path import join
1+ import os
22from pythonforandroid .recipe import PythonRecipe
33
44
@@ -9,25 +9,37 @@ class Secp256k1Recipe(PythonRecipe):
99 call_hostpython_via_targetpython = False
1010
1111 depends = [
12- 'openssl' , 'hostpython2' , 'python2' , 'setuptools' ,
13- 'libffi' , 'cffi' , 'libffi' , 'libsecp256k1' ]
12+ 'openssl' , ('hostpython2' , 'hostpython3crystax' ),
13+ ('python2' , 'python3crystax' ), 'setuptools' ,
14+ 'libffi' , 'cffi' , 'libsecp256k1' ]
1415
1516 patches = [
1617 "cross_compile.patch" , "drop_setup_requires.patch" ,
1718 "pkg-config.patch" , "find_lib.patch" , "no-download.patch" ]
1819
19- def get_recipe_env (self , arch = None ):
20- env = super (Secp256k1Recipe , self ).get_recipe_env (arch )
20+ def get_recipe_env (self , arch = None , with_flags_in_cc = True ):
21+ env = super (Secp256k1Recipe , self ).get_recipe_env (arch , with_flags_in_cc )
22+ # sets linker to use the correct gcc (cross compiler)
23+ env ['LDSHARED' ] = env ['CC' ] + ' -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions'
2124 libsecp256k1 = self .get_recipe ('libsecp256k1' , self .ctx )
2225 libsecp256k1_dir = libsecp256k1 .get_build_dir (arch .arch )
23- env ['PYTHON_ROOT' ] = self .ctx .get_python_install_dir ()
24- env ['CFLAGS' ] = ' -I' + join (libsecp256k1_dir , 'include' )
25- env ['CFLAGS' ] += ' -I' + env ['PYTHON_ROOT' ] + '/include/python2.7'
26- env ['LDSHARED' ] = env ['CC' ] + \
27- ' -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions'
2826 env ['LDFLAGS' ] += ' -L{}' .format (libsecp256k1_dir )
29- # TODO: hardcoded Python version
30- env ['LDFLAGS' ] += " -landroid -lpython2.7 -lsecp256k1"
27+ env ['CFLAGS' ] = ' -I' + os .path .join (libsecp256k1_dir , 'include' )
28+ # only keeps major.minor (discards patch)
29+ python_version = self .ctx .python_recipe .version [0 :3 ]
30+ # required additional library and path for Crystax
31+ if self .ctx .ndk == 'crystax' :
32+ ndk_dir_python = os .path .join (self .ctx .ndk_dir , 'sources/python/' , python_version )
33+ env ['LDFLAGS' ] += ' -L{}' .format (os .path .join (ndk_dir_python , 'libs' , arch .arch ))
34+ env ['LDFLAGS' ] += ' -lpython{}m' .format (python_version )
35+ # until `pythonforandroid/archs.py` gets merged upstream:
36+ # https://github.com/kivy/python-for-android/pull/1250/files#diff-569e13021e33ced8b54385f55b49cbe6
37+ env ['CFLAGS' ] += ' -I{}/include/python/' .format (ndk_dir_python )
38+ else :
39+ env ['PYTHON_ROOT' ] = self .ctx .get_python_install_dir ()
40+ env ['CFLAGS' ] += ' -I' + env ['PYTHON_ROOT' ] + '/include/python{}' .format (python_version )
41+ env ['LDFLAGS' ] += " -lpython{}" .format (python_version )
42+ env ['LDFLAGS' ] += " -lsecp256k1"
3143 return env
3244
3345
0 commit comments