Don't use LLVM internal assembler on armhf
authorCarsten Schoenert <c.schoenert@t-online.de>
Sat, 5 Oct 2019 17:23:45 +0000 (19:23 +0200)
committerCarsten Schoenert <c.schoenert@t-online.de>
Mon, 30 May 2022 17:36:06 +0000 (18:36 +0100)
Avoid the usage of LLVM own assembler implementation on specific parts
as the assembler isn't build with NEON support.

Author: Olivier Tilloy <olivier.tilloy@canonical.com>
Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1561819

Gbp-Pq: Topic porting-armhf
Gbp-Pq: Name Don-t-use-LLVM-internal-assembler-on-armhf.patch

build/moz.configure/toolchain.configure
gfx/ycbcr/moz.build
media/libjpeg/moz.build

index f7cdd418477460049c76bdf83327514a34e23477..a2464e0b8dcd20e446e8f7a32fec937a00fc8d1e 100755 (executable)
@@ -2192,9 +2192,9 @@ def select_linker(
 set_config("LINKER_KIND", select_linker.KIND)
 
 
-@depends_if(select_linker, target, macos_sdk, sysroot_path, multiarch_dir)
+@depends_if(select_linker, target, macos_sdk, sysroot_path, multiarch_dir, host)
 @imports("os")
-def linker_ldflags(linker, target, macos_sdk, sysroot_path, multiarch_dir):
+def linker_ldflags(linker, target, macos_sdk, sysroot_path, multiarch_dir, host):
     flags = list((linker and linker.LINKER_FLAG) or [])
     if target.kernel == "Darwin":
         if linker and linker.KIND == "ld64":
@@ -2210,6 +2210,8 @@ def linker_ldflags(linker, target, macos_sdk, sysroot_path, multiarch_dir):
                 # Non-Debian-patched binutils linkers (both BFD and gold) don't lookup
                 # in multi-arch directories.
                 flags.append("-Wl,-rpath-link,%s" % multiarch_lib_dir)
+    elif host.cpu == 'arm':
+        flags.append('-Wl,--no-keep-memory')
     return flags
 
 
index c643fbaf406b872aa36ef74c4b0668c9b87352af..59a7eab46cca2e2d7b663df17ed836b61a48036d 100644 (file)
@@ -60,6 +60,9 @@ if CONFIG['CPU_ARCH'] == 'arm' and CONFIG['HAVE_ARM_NEON']:
     SOURCES += [
         'yuv_convert_arm.cpp',
     ]
+    # The integrated assembler fails to build yuv_convert_arm.cpp because it doesn't have NEON
+    if CONFIG['CC_TYPE'] == 'clang':
+        CXXFLAGS += ['-fno-integrated-as']
 
 LOCAL_INCLUDES += ['/media/libyuv/libyuv/include']
 
index 879c090b491d3a7b1020efdc1c70441aa25a90a6..6c075589a462643e984ca5dd79674e9ee841b5e6 100644 (file)
@@ -219,6 +219,10 @@ if CONFIG['CPU_ARCH'] == 'x86_64':
     ASFLAGS += ['-I%s/media/libjpeg/simd/nasm/' % TOPSRCDIR]
     ASFLAGS += ['-I%s/media/libjpeg/simd/x86_64/' % TOPSRCDIR]
 
+# The integrated assembler fails to build simd/arm/jsimd_neon.S because it doesn't have NEON
+if CONFIG['CC_TYPE'] == 'clang' and CONFIG['CPU_ARCH'] == 'arm':
+    ASFLAGS += ['-fno-integrated-as']
+
 # We allow warnings for third-party code that can be updated from upstream.
 AllowCompilerWarnings()