1commit 25a5572d5cd137aa6d893e09a00bd39908a59a18
2Author: Christoph Moench-Tegeder <cmt@burggraben.net>
3Date:   Tue Sep 10 22:23:32 2024 +0200
4
5    based on:
6     commit 717bba28411c
7     Author: Jory A. Pratt <anarchy@gentoo.org>
8     Date:   Thu Jun 13 11:53:00 2019 -0700
9
10         Bug 1559213 - Allow to use system av1 libs instead of bundled.
11
12diff --git config/external/moz.build config/external/moz.build
13index a24b470396cf..547f5f5c9e04 100644
14--- config/external/moz.build
15+++ config/external/moz.build
16@@ -40,8 +40,9 @@ if not CONFIG["MOZ_SYSTEM_LIBVPX"]:
17     external_dirs += ["media/libvpx"]
18
19 if CONFIG["MOZ_AV1"]:
20-    external_dirs += ["media/libaom"]
21-    external_dirs += ["media/libdav1d"]
22+    if not CONFIG["MOZ_SYSTEM_AV1"]:
23+        external_dirs += ["media/libaom"]
24+        external_dirs += ["media/libdav1d"]
25
26 if not CONFIG["MOZ_SYSTEM_PNG"]:
27     external_dirs += ["media/libpng"]
28diff --git dom/media/platforms/moz.build dom/media/platforms/moz.build
29index 61536cc6e225..29cf635bbb44 100644
30--- dom/media/platforms/moz.build
31+++ dom/media/platforms/moz.build
32@@ -71,6 +71,11 @@ if CONFIG["MOZ_AV1"]:
33         "agnostic/AOMDecoder.cpp",
34         "agnostic/DAV1DDecoder.cpp",
35     ]
36+    if CONFIG['MOZ_SYSTEM_AV1']:
37+        CXXFLAGS += CONFIG['MOZ_SYSTEM_LIBAOM_CFLAGS']
38+        OS_LIBS += CONFIG['MOZ_SYSTEM_LIBAOM_LIBS']
39+        CXXFLAGS += CONFIG['MOZ_SYSTEM_LIBDAV1D_CFLAGS']
40+        OS_LIBS += CONFIG['MOZ_SYSTEM_LIBDAV1D_LIBS']
41
42 if CONFIG["MOZ_OMX"]:
43     EXPORTS += [
44diff --git media/ffvpx/libavcodec/moz.build media/ffvpx/libavcodec/moz.build
45index 6f09049a6068..90a82a19a9d1 100644
46--- media/ffvpx/libavcodec/moz.build
47+++ media/ffvpx/libavcodec/moz.build
48@@ -119,10 +119,16 @@ if not CONFIG['MOZ_FFVPX_AUDIOONLY']:
49         'vp9recon.c',
50         'vpx_rac.c',
51     ]
52-    USE_LIBS += [
53-        'dav1d',
54-        'media_libdav1d_asm',
55-    ]
56+    if CONFIG["MOZ_SYSTEM_AV1"]:
57+        CFLAGS += CONFIG['MOZ_SYSTEM_LIBDAV1D_CFLAGS']
58+        OS_LIBS += CONFIG['MOZ_SYSTEM_LIBDAV1D_LIBS']
59+        CFLAGS += CONFIG['MOZ_SYSTEM_LIBAOM_CFLAGS']
60+        OS_LIBS += CONFIG['MOZ_SYSTEM_LIBAOM_LIBS']
61+    else:
62+        USE_LIBS += [
63+            'dav1d',
64+            'media_libdav1d_asm',
65+        ]
66     if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
67         LOCAL_INCLUDES += ['/media/mozva']
68         SOURCES += [
69diff --git media/libopus/moz.build media/libopus/moz.build
70index 943aee79ee99..4ad07e3e98af 100644
71--- media/libopus/moz.build
72+++ media/libopus/moz.build
73@@ -58,7 +58,7 @@ if not CONFIG["MOZ_SAMPLE_TYPE_FLOAT32"]:
74     DEFINES["FIXED_POINT"] = 1
75     DEFINES["DISABLE_FLOAT_API"] = True
76
77-if CONFIG["OS_ARCH"] == "Linux":
78+if CONFIG["OS_ARCH"] in ("FreeBSD", "Linux"):
79     OS_LIBS += [
80         "m",
81     ]
82diff --git media/libvorbis/moz.build media/libvorbis/moz.build
83index cd17d4f89759..816edd72a000 100644
84--- media/libvorbis/moz.build
85+++ media/libvorbis/moz.build
86@@ -45,7 +45,7 @@ LOCAL_INCLUDES += ['lib']
87 if CONFIG['OS_ARCH'] == 'SunOS':
88     DEFINES['HAVE_ALLOCA_H'] = True
89
90-if CONFIG["OS_ARCH"] == "Linux":
91+if CONFIG["OS_ARCH"] in ("FreeBSD", "Linux"):
92     OS_LIBS += [
93         "m",
94     ]
95diff --git toolkit/moz.configure toolkit/moz.configure
96index 1f85d2831f2f..07294b93f850 100644
97--- toolkit/moz.configure
98+++ toolkit/moz.configure
99@@ -883,7 +883,23 @@ def av1(value):
100         return True
101
102
103-@depends(target, when=av1 & compile_environment)
104+option("--with-system-av1",
105+       help="Use system av1 (located with pkgconfig)")
106+
107+system_libaom_info = pkg_check_modules("MOZ_SYSTEM_LIBAOM", "aom >= 1.0.0",
108+                                       when="--with-system-av1")
109+
110+system_libdav1d_info = pkg_check_modules("MOZ_SYSTEM_LIBDAV1D", "dav1d >= 0.1.1",
111+                                         when="--with-system-av1")
112+
113+@depends(system_libaom_info, system_libdav1d_info)
114+def system_av1(system_libaom_info, system_libdav1d_info):
115+    has_av1_libs = False
116+    if system_libaom_info and system_libdav1d_info:
117+        has_av1_libs = True
118+    return has_av1_libs
119+
120+@depends(target, when=av1 & depends(system_av1)(lambda v: not v) & compile_environment)
121 def dav1d_asm(target):
122     if target.cpu in ("aarch64", "x86", "x86_64"):
123         return True
124@@ -899,6 +915,7 @@ set_config("MOZ_DAV1D_ASM", dav1d_asm)
125 set_define("MOZ_DAV1D_ASM", dav1d_asm)
126 set_config("MOZ_AV1", av1)
127 set_define("MOZ_AV1", av1)
128+set_config("MOZ_SYSTEM_AV1", depends_if(system_av1)(lambda _: True))
129
130 # JXL Image Codec Support
131 # ==============================================================
132