Browse Source

waifulib: xcompile: we need to disable builtins even on armeabi with host compiler and NDK r10e

pull/2/head
Alibek Omarov 5 years ago
parent
commit
32ddc2a47f
  1. 29
      scripts/waifulib/xcompile.py

29
scripts/waifulib/xcompile.py

@ -248,6 +248,19 @@ class Android:
if cxx and not self.is_clang() and self.toolchain not in ['4.8','4.9']: if cxx and not self.is_clang() and self.toolchain not in ['4.8','4.9']:
cflags += ['-fno-sized-deallocation'] cflags += ['-fno-sized-deallocation']
def fixup_host_clang_with_old_ndk():
cflags = []
# Clang builtin redefine w/ different calling convention bug
# NOTE: I did not added complex.h functions here, despite
# that NDK devs forgot to put __NDK_FPABI_MATH__ for complex
# math functions
# I personally don't need complex numbers support, but if you want it
# just run sed to patch header
for f in ['strtod', 'strtof', 'strtold']:
cflags += ['-fno-builtin-%s' % f]
return cflags
if self.is_arm(): if self.is_arm():
if self.arch == 'armeabi-v7a': if self.arch == 'armeabi-v7a':
# ARMv7 support # ARMv7 support
@ -256,21 +269,17 @@ class Android:
if not self.is_clang() and not self.is_host(): if not self.is_clang() and not self.is_host():
cflags += [ '-mvectorize-with-neon-quad' ] cflags += [ '-mvectorize-with-neon-quad' ]
if self.is_host() and self.ndk_rev <= ANDROID_NDK_HARDFP_MAX:
cflags += fixup_host_clang_with_old_ndk()
if self.is_hardfp(): if self.is_hardfp():
cflags += ['-D_NDK_MATH_NO_SOFTFP=1', '-mfloat-abi=hard', '-DLOAD_HARDFP', '-DSOFTFP_LINK'] cflags += ['-D_NDK_MATH_NO_SOFTFP=1', '-mfloat-abi=hard', '-DLOAD_HARDFP', '-DSOFTFP_LINK']
if self.is_host():
# Clang builtin redefine w/ different calling convention bug
# NOTE: I did not added complex.h functions here, despite
# that NDK devs forgot to put __NDK_FPABI_MATH__ for complex
# math functions
# I personally don't need complex numbers support, but if you want it
# just run sed to patch header
for f in ['strtod', 'strtof', 'strtold']:
cflags += ['-fno-builtin-%s' % f]
else: else:
cflags += ['-mfloat-abi=softfp'] cflags += ['-mfloat-abi=softfp']
else: else:
if self.is_host() and self.ndk_rev <= ANDROID_NDK_HARDFP_MAX:
cflags += fixup_host_clang_with_old_ndk()
# ARMv5 support # ARMv5 support
cflags += ['-march=armv5te', '-mtune=xscale', '-msoft-float'] cflags += ['-march=armv5te', '-mtune=xscale', '-msoft-float']
elif self.is_x86(): elif self.is_x86():

Loading…
Cancel
Save