summaryrefslogtreecommitdiffstats
path: root/media/libdav1d/asm/moz.build
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
commit2aa4a82499d4becd2284cdb482213d541b8804dd (patch)
treeb80bf8bf13c3766139fbacc530efd0dd9d54394c /media/libdav1d/asm/moz.build
parentInitial commit. (diff)
downloadfirefox-2aa4a82499d4becd2284cdb482213d541b8804dd.tar.xz
firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.zip
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'media/libdav1d/asm/moz.build')
-rw-r--r--media/libdav1d/asm/moz.build205
1 files changed, 205 insertions, 0 deletions
diff --git a/media/libdav1d/asm/moz.build b/media/libdav1d/asm/moz.build
new file mode 100644
index 0000000000..d742233b27
--- /dev/null
+++ b/media/libdav1d/asm/moz.build
@@ -0,0 +1,205 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 4 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# ASM enabled
+
+ASFLAGS += [
+ '-I%s/third_party/dav1d/src/' % TOPSRCDIR,
+ '-DHAVE_AVX512ICL=1',
+]
+
+LOCAL_INCLUDES += [
+ '/third_party/dav1d/',
+ '/third_party/dav1d/include/',
+ '/third_party/dav1d/src/',
+]
+
+# Don't export DAV1D_API symbols from libxul
+# see: third_party/dav1d/include/dav1d/common.h
+DEFINES['DAV1D_API'] = ''
+
+CFLAGS += [
+ # find the config.h file.
+ '-I%s/dist/include/dav1d/' % TOPOBJDIR,
+]
+
+# Store the stack alignment that will be used.
+stack_alignment = 0
+
+# Attaching config.asm file
+if CONFIG['CPU_ARCH'] == 'x86':
+ # Default stack alignment can be 4 bytes.
+ if CONFIG['OS_TARGET'] == 'WINNT':
+ stack_alignment = 4
+ ASFLAGS += ['-I%s/media/libdav1d/asm/x86_32/win/' % TOPSRCDIR]
+ else:
+ ASFLAGS += ['-I%s/media/libdav1d/asm/x86_32/' % TOPSRCDIR]
+ stack_alignment = 16
+ # Change stack alignment to 16 bytes.
+ if CONFIG['CC_TYPE'] == 'clang':
+ CFLAGS += ['-mstack-alignment=16']
+ elif CONFIG['CC_TYPE'] == 'gcc':
+ CFLAGS += ['-mpreferred-stack-boundary=4']
+elif CONFIG['CPU_ARCH'] == 'x86_64':
+ # Default stack aligment is 16 bytes.
+ stack_alignment = 16
+ if CONFIG['OS_TARGET'] == 'Darwin':
+ ASFLAGS += ['-I%s/media/libdav1d/asm/x86_64/osx/' % TOPSRCDIR]
+ elif CONFIG['OS_TARGET'] == 'WINNT':
+ ASFLAGS += ['-I%s/media/libdav1d/asm/x86_64/win/' % TOPSRCDIR]
+ else:
+ # The rest of the platforms are all Linux-like: plain Linux
+ # Android, OpenBSD, NetBSD, FreeBSD, DragonFly, SunOS
+ ASFLAGS += ['-I%s/media/libdav1d/asm/x86_64/linux/' % TOPSRCDIR]
+elif CONFIG['CPU_ARCH'] == 'aarch64':
+ stack_alignment = 16
+ ASFLAGS += ['-I%s/dist/include/dav1d/' % TOPOBJDIR]
+else:
+ error('Cpu arch %s is not expected' % CONFIG['CPU_ARCH'])
+
+# Set the macro here instead of config.h
+if stack_alignment == 0:
+ error('Stack alignment cannot be zero.')
+DEFINES['STACK_ALIGNMENT'] = stack_alignment
+
+if CONFIG['CPU_ARCH'] in ('x86', 'x86_64'):
+ ASFLAGS += ['-Dprivate_prefix=dav1d']
+
+ SOURCES += [
+ '../../../third_party/dav1d/src/x86/cpu.c',
+ '../../../third_party/dav1d/src/x86/msac_init.c',
+ ]
+
+ EXPORTS.dav1d += [
+ '../../../third_party/dav1d/src/x86/cpu.h',
+ '../../../third_party/dav1d/src/x86/msac.h',
+ ]
+
+ # ASM source files
+ if CONFIG['CPU_ARCH'] == 'x86_64':
+ # Empty file on all other archs. Nasm produces
+ # an error when it compiles empty files.
+ SOURCES += [
+ '../../../third_party/dav1d/src/x86/cdef_avx2.asm',
+ '../../../third_party/dav1d/src/x86/cdef_avx512.asm',
+ '../../../third_party/dav1d/src/x86/film_grain.asm',
+ '../../../third_party/dav1d/src/x86/ipred.asm',
+ '../../../third_party/dav1d/src/x86/itx.asm',
+ '../../../third_party/dav1d/src/x86/loopfilter.asm',
+ '../../../third_party/dav1d/src/x86/looprestoration.asm',
+ '../../../third_party/dav1d/src/x86/mc_avx2.asm',
+ '../../../third_party/dav1d/src/x86/mc_avx512.asm',
+ ]
+
+ include('autovendored_sources.mozbuild')
+ SOURCES += sources
+
+ # BITDEPTH
+ relative_path = '../../../third_party/dav1d/src/x86/'
+ bitdepth_basenames = [
+ 'cdef_init_tmpl.c',
+ 'film_grain_init_tmpl.c',
+ 'ipred_init_tmpl.c',
+ 'itx_init_tmpl.c',
+ 'loopfilter_init_tmpl.c',
+ 'looprestoration_init_tmpl.c',
+ 'mc_init_tmpl.c',
+ ]
+
+
+ for f in bitdepth_basenames:
+ SOURCES += [
+ '!16bd_%s' % f
+ ]
+ GeneratedFile('16bd_%s' % f, script='../generate_source.py',
+ entry_point='add_define', inputs=[relative_path + f],
+ flags=['BITDEPTH', '16'])
+ SOURCES += [
+ '!8bd_%s' % f
+ ]
+ GeneratedFile('8bd_%s' % f, script='../generate_source.py',
+ entry_point='add_define', inputs=[relative_path + f],
+ flags=['BITDEPTH', '8'])
+
+elif CONFIG['CPU_ARCH'] == 'arm' or CONFIG['CPU_ARCH'] == 'aarch64':
+ SOURCES += [
+ '../../../third_party/dav1d/src/arm/cpu.c',
+ ]
+ EXPORTS += [
+ '../../../third_party/dav1d/src/arm/cpu.h',
+ '../../../third_party/dav1d/src/arm/msac.h',
+ ]
+
+ # BITDEPTH c file
+ relative_path = '../../../third_party/dav1d/src/arm/'
+ bitdepth_basenames = [
+ 'cdef_init_tmpl.c',
+ 'ipred_init_tmpl.c',
+ 'itx_init_tmpl.c',
+ 'loopfilter_init_tmpl.c',
+ 'looprestoration_init_tmpl.c',
+ 'mc_init_tmpl.c',
+ ]
+
+ for f in bitdepth_basenames:
+ SOURCES += [
+ '!16bd_%s' % f
+ ]
+ GeneratedFile('16bd_%s' % f, script='../generate_source.py',
+ entry_point='add_define', inputs=[relative_path + f],
+ flags=['BITDEPTH', '16'])
+ SOURCES += [
+ '!8bd_%s' % f
+ ]
+ GeneratedFile('8bd_%s' % f, script='../generate_source.py',
+ entry_point='add_define', inputs=[relative_path + f],
+ flags=['BITDEPTH', '8'])
+
+ # BITDEPTH .S files
+ if CONFIG['CPU_ARCH'] == 'aarch64':
+ SOURCES += [
+ '../../../third_party/dav1d/src/arm/64/cdef.S',
+ '../../../third_party/dav1d/src/arm/64/cdef16.S',
+ '../../../third_party/dav1d/src/arm/64/cdef_tmpl.S',
+ '../../../third_party/dav1d/src/arm/64/ipred.S',
+ '../../../third_party/dav1d/src/arm/64/ipred16.S',
+ # itx.S is used for both 8 and 16 bpc.
+ '../../../third_party/dav1d/src/arm/64/itx.S',
+ '../../../third_party/dav1d/src/arm/64/itx16.S',
+ '../../../third_party/dav1d/src/arm/64/loopfilter.S',
+ '../../../third_party/dav1d/src/arm/64/loopfilter16.S',
+ '../../../third_party/dav1d/src/arm/64/looprestoration.S',
+ '../../../third_party/dav1d/src/arm/64/looprestoration16.S',
+ '../../../third_party/dav1d/src/arm/64/looprestoration_common.S',
+ '../../../third_party/dav1d/src/arm/64/looprestoration_tmpl.S',
+ '../../../third_party/dav1d/src/arm/64/mc.S',
+ '../../../third_party/dav1d/src/arm/64/mc16.S',
+ '../../../third_party/dav1d/src/arm/64/msac.S',
+ ]
+ elif CONFIG['CPU_ARCH'] == 'arm':
+ SOURCES += [
+ '../../../third_party/dav1d/src/arm/32/cdef.S',
+ '../../../third_party/dav1d/src/arm/32/cdef16.S',
+ '../../../third_party/dav1d/src/arm/32/cdef_tmpl.S',
+ '../../../third_party/dav1d/src/arm/32/ipred.S',
+ '../../../third_party/dav1d/src/arm/32/itx.S',
+ '../../../third_party/dav1d/src/arm/32/loopfilter.S',
+ '../../../third_party/dav1d/src/arm/32/looprestoration.S',
+ '../../../third_party/dav1d/src/arm/32/looprestoration16.S',
+ '../../../third_party/dav1d/src/arm/32/mc.S',
+ '../../../third_party/dav1d/src/arm/32/mc16.S',
+ '../../../third_party/dav1d/src/arm/32/msac.S',
+ ]
+
+if CONFIG['CPU_ARCH'] in ('x86', 'x86_64'):
+ USE_NASM = True
+elif CONFIG['CPU_ARCH'] == 'aarch64' and CONFIG['OS_TARGET'] == 'WINNT':
+ USE_INTEGRATED_CLANGCL_AS = True
+
+FINAL_LIBRARY = 'gkmedias'
+
+# We allow warnings for third-party code that can be updated from upstream.
+AllowCompilerWarnings()