@@ -67,14 +67,20 @@ def build_arch(self, arch):
67
67
env = environ .copy ()
68
68
69
69
# TODO: Get this information from p4a's arch system
70
- android_host = 'arm-linux-androideabi'
70
+ android_host = arch . command_prefix
71
71
android_build = sh .Command (join (recipe_build_dir , 'config.guess' ))().stdout .strip ().decode ('utf-8' )
72
- platform_dir = join (self .ctx .ndk_dir , 'platforms' , platform_name , ' arch-arm' )
73
- toolchain = '{android_host}-4.9' .format (android_host = android_host )
72
+ platform_dir = join (self .ctx .ndk_dir , 'platforms' , platform_name , arch . platform_dir )
73
+ toolchain = '{android_host}-4.9' .format (android_host = arch . toolchain_prefix )
74
74
toolchain = join (self .ctx .ndk_dir , 'toolchains' , toolchain , 'prebuilt' , 'linux-x86_64' )
75
+
76
+ target_data = arch .command_prefix .split ('-' )
77
+ if target_data [0 ] == 'arm' :
78
+ target_data [0 ] = 'armv7a'
79
+ target = '-' .join ([target_data [0 ], 'none' , target_data [1 ], target_data [2 ]])
80
+
75
81
CC = '{clang} -target {target} -gcc-toolchain {toolchain}' .format (
76
82
clang = join (self .ctx .ndk_dir , 'toolchains' , 'llvm' , 'prebuilt' , 'linux-x86_64' , 'bin' , 'clang' ),
77
- target = 'armv7-none-linux-androideabi' ,
83
+ target = target ,
78
84
toolchain = toolchain )
79
85
80
86
AR = join (toolchain , 'bin' , android_host ) + '-ar'
@@ -94,13 +100,13 @@ def build_arch(self, arch):
94
100
hostpython_dir = self .get_recipe ('hostpython3' , self .ctx ).get_path_to_python (),
95
101
old_path = env ['PATH' ])
96
102
97
- ndk_flags = ('--sysroot={ndk_sysroot} -D__ANDROID_API__={android_api} '
103
+ ndk_flags = ('-fPIC - -sysroot={ndk_sysroot} -D__ANDROID_API__={android_api} '
98
104
'-isystem {ndk_android_host}' ).format (
99
105
ndk_sysroot = join (self .ctx .ndk_dir , 'sysroot' ),
100
106
android_api = self .ctx .ndk_api ,
101
107
ndk_android_host = join (
102
108
self .ctx .ndk_dir , 'sysroot' , 'usr' , 'include' , android_host ))
103
- sysroot = join (self .ctx .ndk_dir , 'platforms' , platform_name , ' arch-arm' )
109
+ sysroot = join (self .ctx .ndk_dir , 'platforms' , platform_name , arch . platform_dir )
104
110
env ['CFLAGS' ] = env .get ('CFLAGS' , '' ) + ' ' + ndk_flags
105
111
env ['CPPFLAGS' ] = env .get ('CPPFLAGS' , '' ) + ' ' + ndk_flags
106
112
env ['LDFLAGS' ] = env .get ('LDFLAGS' , '' ) + ' --sysroot={} -L{}' .format (sysroot , join (sysroot , 'usr' , 'lib' ))
@@ -113,6 +119,8 @@ def build_arch(self, arch):
113
119
# bpo-30386 Makefile system.
114
120
logger .warning ('Doing some hacky stuff to link properly' )
115
121
lib_dir = join (sysroot , 'usr' , 'lib' )
122
+ if arch .arch == 'x86_64' :
123
+ lib_dir = join (sysroot , 'usr' , 'lib64' )
116
124
env ['LDFLAGS' ] += ' -L{}' .format (lib_dir )
117
125
shprint (sh .cp , join (lib_dir , 'crtbegin_so.o' ), './' )
118
126
shprint (sh .cp , join (lib_dir , 'crtend_so.o' ), './' )
0 commit comments