git: a012dd67b23d - main - www/firefox: update to 97.0 (rc1)

From: Christoph Moench-Tegeder <cmt_at_FreeBSD.org>
Date: Tue, 01 Feb 2022 16:32:17 UTC
The branch main has been updated by cmt:

URL: https://cgit.FreeBSD.org/ports/commit/?id=a012dd67b23d35b6a44c8b8b3ecaf0f750bb9238

commit a012dd67b23d35b6a44c8b8b3ecaf0f750bb9238
Author:     Evgeniy Khramtsov <evgeniy@khramtsov.org>
AuthorDate: 2022-02-01 00:30:08 +0000
Commit:     Christoph Moench-Tegeder <cmt@FreeBSD.org>
CommitDate: 2022-02-01 16:31:51 +0000

    www/firefox: update to 97.0 (rc1)
    
    Release Notes (soon):
      https://www.mozilla.org/en-US/firefox/97.0/releasenotes/
    
    PR:             261642
---
 Mk/bsd.gecko.mk                                    |      3 +
 www/firefox/Makefile                               |      4 +-
 www/firefox/distinfo                               |      6 +-
 www/firefox/files/patch-bug1640982                 |      2 -
 www/firefox/files/patch-bug1664115                 |      4 +-
 www/firefox/files/patch-bug1749604                 |    249 +
 www/firefox/files/patch-bug847568                  |     14 +-
 www/firefox/files/patch-libwebrtc-generate         |    192 +
 www/firefox/files/patch-libwebrtc-generated        |  19756 ++
 .../files/patch-media_libcubeb_src_cubeb__oss.c    |    385 +-
 www/firefox/files/patch-webrtc                     | 253107 ------------------
 11 files changed, 20249 insertions(+), 253473 deletions(-)

diff --git a/Mk/bsd.gecko.mk b/Mk/bsd.gecko.mk
index 0613d70a0272..380c1df518e1 100644
--- a/Mk/bsd.gecko.mk
+++ b/Mk/bsd.gecko.mk
@@ -167,6 +167,9 @@ pixman_MOZ_OPTIONS=	--enable-system-pixman
 
 png_LIB_DEPENDS=	libpng.so:graphics/png
 png_MOZ_OPTIONS=	--with-system-png=${LOCALBASE}
+.if ${MOZILLA_VER:R:R} >= 97
+png_MOZ_OPTIONS=	--with-system-png
+.endif
 
 sqlite_LIB_DEPENDS=	libsqlite3.so:databases/sqlite3
 sqlite_MOZ_OPTIONS=	--enable-system-sqlite
diff --git a/www/firefox/Makefile b/www/firefox/Makefile
index 7b574b3473d5..6cef007bc48e 100644
--- a/www/firefox/Makefile
+++ b/www/firefox/Makefile
@@ -1,7 +1,7 @@
 # Created by: Alan Eldridge <alane@FreeBSD.org>
 
 PORTNAME=	firefox
-DISTVERSION=	96.0.3
+DISTVERSION=	97.0
 PORTEPOCH=	2
 CATEGORIES=	www
 MASTER_SITES=	MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \
@@ -12,7 +12,7 @@ MAINTAINER=	gecko@FreeBSD.org
 COMMENT=	Web browser based on the browser portion of Mozilla
 
 BUILD_DEPENDS=	nspr>=4.32:devel/nspr \
-		nss>=3.73:security/nss \
+		nss>=3.74:security/nss \
 		icu>=70.1:devel/icu \
 		libevent>=2.1.8:devel/libevent \
 		harfbuzz>=2.9.1:print/harfbuzz \
diff --git a/www/firefox/distinfo b/www/firefox/distinfo
index 862c1dda9361..5f757d0d0e7f 100644
--- a/www/firefox/distinfo
+++ b/www/firefox/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1643336011
-SHA256 (firefox-96.0.3.source.tar.xz) = 1a741d6fcf20e6833a90169f41d29141ea4610f58b848e06091a683af6304dea
-SIZE (firefox-96.0.3.source.tar.xz) = 406721708
+TIMESTAMP = 1643713139
+SHA256 (firefox-97.0.source.tar.xz) = 7a98c83d552ffde2b858fa288778c6d44d0077c3a9488293280184ee856420ee
+SIZE (firefox-97.0.source.tar.xz) = 487369236
diff --git a/www/firefox/files/patch-bug1640982 b/www/firefox/files/patch-bug1640982
index 15789b617616..5ad0fbad6c72 100644
--- a/www/firefox/files/patch-bug1640982
+++ b/www/firefox/files/patch-bug1640982
@@ -2,8 +2,6 @@ Unbreak build with Rust 1.45.0
 
 error: options `-C embed-bitcode=no` and `-C lto` are incompatible
 
---- config/makefiles/rust.mk.orig      2020-05-12 09:36:22 UTC
-
 diff --git config/makefiles/rust.mk config/makefiles/rust.mk
 index 75570d3..94ec33f 100644
 --- config/makefiles/rust.mk
diff --git a/www/firefox/files/patch-bug1664115 b/www/firefox/files/patch-bug1664115
index 8a6e82d59b1f..86898c765f08 100644
--- a/www/firefox/files/patch-bug1664115
+++ b/www/firefox/files/patch-bug1664115
@@ -10,10 +10,10 @@ created by libcubeb.
  #include "Tracing.h"
  #include "webaudio/blink/DenormalDisabler.h"
 -#include "AudioThreadRegistry.h"
+ #include "mozilla/StaticPrefs_media.h"
  
  // Use abort() instead of exception in SoundTouch.
- #define ST_NO_EXCEPTION_HANDLING 1
-@@ -140,9 +139,7 @@
+@@ -141,9 +140,7 @@ AudioStream::AudioStream(DataSource& aSource)
        mTimeStretcher(nullptr),
        mState(INITIALIZED),
        mDataSource(aSource),
diff --git a/www/firefox/files/patch-bug1749604 b/www/firefox/files/patch-bug1749604
new file mode 100644
index 000000000000..a0195b8d00c9
--- /dev/null
+++ b/www/firefox/files/patch-bug1749604
@@ -0,0 +1,249 @@
+https://bugzilla.mozilla.org/show_bug.cgi?id=1749604
+https://hg.mozilla.org/mozilla-central/rev/f6031b5927f5
+https://hg.mozilla.org/mozilla-central/rev/c7440a6eb545
+https://github.com/mozilla/gecko-dev/commit/e6f459cd77e3
+(Avoid ~13 GB clone of moz-libwebrtc for libwebrtc regen)
+(To be dropped for 98)
+
+Updated README.md to reflect simplified setup for generation.
+Updated generate-gn-build-files.sh:
+  - remove dependencies on MOZ_LIBWEBRTC environment variable
+  - add checking for GN environment variable
+---
+
+diff --git a/dom/media/webrtc/third_party_build/gn-configs/README.md b/dom/media/webrtc/third_party_build/gn-configs/README.md
+index bc54ba183d016..09dea1ae87833 100644
+--- dom/media/webrtc/third_party_build/gn-configs/README.md
++++ dom/media/webrtc/third_party_build/gn-configs/README.md
+@@ -1,9 +1,10 @@
+ # Generate new gn json files and moz.build files for building libwebrtc in our tree
+ 
+-1. If generating on macOS for Apple Silicon (cross-compiling), make sure to have at least
+-[Xcode 12.2](https://download.developer.apple.com/Developer_Tools/Xcode_12.2/Xcode_12.2.xip).
++1. If generating on macOS for Apple Silicon (cross-compiling), make sure to have
++   at least [Xcode 12.2](https://download.developer.apple.com/Developer_Tools/Xcode_12.2/Xcode_12.2.xip).
+ 
+-   In addition the aarch64 Rust target will need to be installed via: `rustup target add aarch64-apple-darwin`
++   The aarch64 Rust target will need to be installed via:
++   `rustup target add aarch64-apple-darwin`
+ 
+ 2. If generating on Windows 10, Visual Studio 2019 is required.  Please follow
+    the install instructions from [here](https://firefox-source-docs.mozilla.org/setup/windows_build.html)
+@@ -14,86 +15,85 @@
+    - MSVC v142 - VS2019 C++ ARM64 build tools
+ 
+    "Debugging Tools for Windows" is also required.
+-   - Under `Settings -> Apps` search for "Windows Software Development Kit" with the version
+-   number 10.0.19041.685.
++   - Under `Settings -> Apps` search for "Windows Software Development Kit" with
++     the version number 10.0.19041.685.
+    - select Modify (and allow the installer to modify)
+    - select Change and then click Next
+    - select "Debugging Tools for Windows" and then click Change.
+ 
+-   And the aarch64 Rust target will need to be installed via: `rustup target add aarch64-pc-windows-msvc`
++   The aarch64 Rust target will need to be installed via:
++   `rustup target add aarch64-pc-windows-msvc`
+ 
+-3. See information in `third_party/libwebrtc/README.mozilla` for the proper revision of libwebrtc
++3. See information in `third_party/libwebrtc/README.mozilla` for the proper
++   revision of libwebrtc
+ 
+         libwebrtc updated from commit https://github.com/mozilla/libwebrtc/archive/149d693483e9055f574d9d65b01fe75a186b654b.tar.gz on 2020-11-30T15:48:48.472088.
+         third_party updated from commit https://chromium.googlesource.com/chromium/src/third_party/+archive/5dc5a4a45df9592baa8e8c5f896006d9193d8e45.tar.gz on 2020-11-30T17:00:15.612630.
+ 
+-   In our current case, the revision is `149d693483e9055f574d9d65b01fe75a186b654b` which
+-   corresponds to:
++   In our current case, the revision is `149d693483e9055f574d9d65b01fe75a186b654b`
++   which corresponds to:
+ 
+         mozilla-modifications-rel86
+ 
+-4. Clone Mozilla's version of libwebrtc from [libwebrtc](https://github.com/mozilla/libwebrtc)
++   This commit was made on `Thu Nov 19 14:14:00 2020`.
+ 
+-        git clone https://github.com/mozilla/libwebrtc moz-libwebrtc
+-        export MOZ_LIBWEBRTC=`pwd`/moz-libwebrtc
+-        (cd moz-libwebrtc ; git checkout mozilla-modifications-rel86)
++4. Download a version of the `gn` executable that corresponds to
++    `Thu Nov 19 14:14:00 2020`.  In our case, that is version `1889 (8fe02009)`.
++   
++   - [Win](https://chrome-infra-packages.appspot.com/p/gn/gn/windows-amd64/+/e_UmTHedzuu4zJ2gdpW8jrFFNnzIhThljx3jn3RMlVsC)
++   - [Linux](https://chrome-infra-packages.appspot.com/p/gn/gn/linux-amd64/+/bvBFKgehaepiKy_YhFnbiOpF38CK26N2OyE1R1jXof0C)
++   - [macOS](https://chrome-infra-packages.appspot.com/p/gn/gn/mac-amd64/+/nXvMRpyJhLhisAcnRmU5s9UZqovzMAhKAvWjax-swioC)
+ 
+-   Note that branch was made on `Thu Nov 19 14:14:00 2020`
++   Find the downloaded `.zip` file, unzip and export the location of the
++   executable:
+ 
+-5. Clone `depot_tools` from [depot_tools](https://chromium.googlesource.com/chromium/tools/depot_tools.git)
++        unzip gn-mac-amd64.zip && export GN=`pwd`/gn
++        unzip gn-windows-amd64.zip && export GN=`pwd`/gn.exe
++        unzip gn-linux-amd64.zip && export GN=`pwd`/gn
+ 
+-        git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
+-        export DEPOT_TOOLS=`pwd`/depot_tools
++   On platforms that don't have pre-built `gn` executables, `ninja` and `gn` can
++   be easily built:
+ 
+-   If generating files on Windows, the following steps must be completed
+-   from a traditional Windows Cmd prompt (cmd.exe) launched from the start
+-   menu or search bar.  This allows `gclient` to properly bootstrap the
+-   required python setup.
++        git clone https://github.com/ninja-build/ninja.git
++        git clone https://gn.googlesource.com/gn
++        (cd gn && git checkout 8fe02009)
++        (cd ninja && ./configure.py --bootstrap)
++        (export NINJA=`pwd`/ninja/ninja ; cd gn && python build/gen.py && $NINJA -C out)
++        export GN=`pwd`/gn/out/gn
+ 
+-        cd {depot_tools directory}
+-        set PATH=%CD%;%PATH%
+-        set DEPOT_TOOLS_WIN_TOOLCHAIN=0
+-        set vs2019_install="c:\Program Files (x86)\Microsoft Visual Studio\2019\Community"
+-        gclient
+-        exit
++   On OpenBSD, a slightly newer version of `gn` is needed in order to build:
+ 
+-   Now, we need to checkout a revision of `depot_tools` that corresponds to the date of
+-   our libwebrtc branch.  The closest `depot_tools` commit to `Thu Nov 19 14:14:00 2020` is
+-   `e7d1862b155ac3ccbef72c4d70629b5c88ffcb32`.  There is additional information on how to
+-   more automatically determine this [here](https://chromium.googlesource.com/chromium/src/+/master/docs/building_old_revisions.md).
++        (cd gn && git checkout 31f2bba8)
+ 
+-        (cd depot_tools ; git checkout e7d1862b155ac3ccbef72c4d70629b5c88ffcb32 )
++5. Clone `depot_tools` from [depot_tools](https://chromium.googlesource.com/chromium/tools/depot_tools.git)
+ 
+-6. It is necessary to let `depot_tools` pull information into the `libwebrtc` tree as well.  This can take a while.
++        git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
++        export DEPOT_TOOLS=`pwd`/depot_tools
+ 
+-        (cd moz-libwebrtc ; \
+-         export PATH=$DEPOT_TOOLS:$PATH ; \
+-         export DEPOT_TOOLS_UPDATE=0 ; \
+-         export DEPOT_TOOLS_WIN_TOOLCHAIN=0 ; \
+-         gclient config https://github.com/mozilla/libwebrtc && \
+-         gclient sync -D --force --reset --with_branch_heads \
+-        )
+-  
+-    Note that if one uses `gclient` sync with a different output directory `$MOZ_LIBWEBRTC_GIT`
+-    must be set to the original clone directory, and `$MOZ_LIBWEBRTC` needs to be set to the
+-    directory created by `gclient sync`.
++   Now, we need to checkout a revision of `depot_tools` that corresponds to the
++   date of our libwebrtc branch.  The closest `depot_tools` commit to
++   `Thu Nov 19 14:14:00 2020` is `e7d1862b155ac3ccbef72c4d70629b5c88ffcb32`.
++   There is additional information on how to more automatically determine this
++   [here](https://chromium.googlesource.com/chromium/src/+/master/docs/building_old_revisions.md).
++
++        (cd depot_tools ; git checkout e7d1862b155ac3ccbef72c4d70629b5c88ffcb32 )
+ 
+-7. Now it is time to generate the build files.  The script should be run from the top
+-directory of our firefox tree.
++6. It is time to generate the build files.  The script should be run from the
++   top directory of our firefox tree.
+ 
+-        ./dom/media/webrtc/third_party_build/gn-configs/generate-gn-build-files.sh
++        bash ./dom/media/webrtc/third_party_build/gn-configs/generate-gn-build-files.sh
+ 
+-   Debugging the generate script itself may prove useful, and one can do this by setting the DEBUG_GEN environment
+-   variable to a non-empty value. This will print everything that the script executes.
++   Debugging the generate script itself may prove useful, and one can do this by
++   setting the DEBUG_GEN environment variable to a non-empty value. This will 
++   print everything that the script executes.
+ 
+-8. Checkin all the generated/modified files and try your build!
++7. Checkin all the generated/modified files and try your build!
+ 
+ # Adding new configurations to the build
+ 
+-- Each new platform/architecture will require 2 new mozconfig files,
+-  one for the debug build and one for the non-debug build.  The
+-  filenames follow the same pattern as the generated json files,
+-  `a-b-c-d.mozconfig` where:
++- Each new platform/architecture will require 2 new mozconfig files, one for the
++  debug build and one for the non-debug build.  The filenames follow the same
++  pattern as the generated json files, `a-b-c-d.mozconfig` where:
+   - a = generating cpu (example: x64)
+   - b = debug (True / False)
+   - c = target cpu (example: x64 / arm64)
+@@ -103,9 +103,9 @@ directory of our firefox tree.
+ - The new configs must be added to the appropriate platform section in
+   `generate-gn-build-files.sh`.
+ 
+-**Note:** when adding new mozconfig files, especially for linux/android
+-configs, it is important to include the `ac_add_options
+---enable-bootstrap`.  This ensures switching archtectures for
+-"cross-compiled" generation works properly.  For example, when generating
+-`x86` or `arm64` linux json files, it would be necessary to install additional
+-libraries in order for the configure step to complete.
++**Note:** when adding new mozconfig files, especially for linux/android configs,
++it is important to include the `ac_add_options --enable-bootstrap`.  This
++ensures switching archtectures for "cross-compiled" generation works properly.
++For example, when generating `x86` or `arm64` linux json files, it would be
++necessary to install additional libraries in order for the configure step to
++complete.
+diff --git a/dom/media/webrtc/third_party_build/gn-configs/generate-gn-build-files.sh b/dom/media/webrtc/third_party_build/gn-configs/generate-gn-build-files.sh
+index 4452b0ce76aeb..8d1acbf783514 100755
+--- dom/media/webrtc/third_party_build/gn-configs/generate-gn-build-files.sh
++++ dom/media/webrtc/third_party_build/gn-configs/generate-gn-build-files.sh
+@@ -8,33 +8,15 @@ if [ ! "x$DEBUG_GEN" = "x" ]; then
+   set -x
+ fi
+ 
+-if [ "x$MOZ_LIBWEBRTC" = "x" ]; then
+-  echo "MOZ_LIBWEBRTC is not defined, see README.md"
++if [ "x$GN" = "x" ]; then
++  echo "GN is not defined, see README.md"
+   exit
+ fi
+ 
+-if [ -d $MOZ_LIBWEBRTC ]; then
+-  echo "MOZ_LIBWEBRTC is $MOZ_LIBWEBRTC"
++if [ -f $GN ]; then
++  echo "GN is $GN"
+ else
+-  echo "Path $MOZ_LIBWEBRTC is not found, see README.md"
+-  exit
+-fi
+-
+-# git clone and gclient checkout may be in different places 
+-if [ "x$MOZ_LIBWEBRTC_GIT" = "x" ]; then
+-  MOZ_LIBWEBRTC_GIT=$MOZ_LIBWEBRTC
+-fi
+-
+-if [ ! -d $MOZ_LIBWEBRTC_GIT/.git ]; then
+-  echo "No .git directory is found in the libwebrtc checkout, see README.md"
+-  exit
+-fi
+-
+-if [ ! -d $MOZ_LIBWEBRTC/src/buildtools ]; then
+-  echo "Path $MOZ_LIBWEBRTC/src/buildtools is not found, see README.md"
+-  echo "Please run the following commands from inside $MOZ_LIBWEBRTC:"
+-  echo "\tgclient config https://github.com/mozilla/libwebrtc"
+-  echo "\tgclient sync -D --force --reset --with_branch_heads # this make take a while"
++  echo "Path $GN is not found, see README.md"
+   exit
+ fi
+ 
+@@ -115,21 +97,6 @@ fi
+ export PATH=$DEPOT_TOOLS:$PATH
+ export DEPOT_TOOLS_UPDATE=0
+ 
+-# Symlink in the buildtools and .git directories from our copy of libwebrtc.
+-if [ -L ./third_party/libwebrtc/buildtools ]; then
+-  rm ./third_party/libwebrtc/buildtools
+-elif [ -d ./third_party/libwebrtc/buildtools ]; then
+-  rm -rf ./third_party/libwebrtc/buildtools
+-fi
+-ln -s $MOZ_LIBWEBRTC/src/buildtools ./third_party/libwebrtc/
+-
+-if [ -L ./third_party/libwebrtc/.git ]; then
+-  rm ./third_party/libwebrtc/.git
+-elif [ -d ./third_party/libwebrtc/.git ]; then
+-  rm -rf ./third_party/libwebrtc/.git
+-fi
+-ln -s $MOZ_LIBWEBRTC_GIT/.git ./third_party/libwebrtc/
+-
+ CONFIG_DIR=dom/media/webrtc/third_party_build/gn-configs
+ echo "CONFIG_DIR is $CONFIG_DIR"
+ 
diff --git a/www/firefox/files/patch-bug847568 b/www/firefox/files/patch-bug847568
index c91cc9be17a9..3161dbb88d08 100644
--- a/www/firefox/files/patch-bug847568
+++ b/www/firefox/files/patch-bug847568
@@ -28,9 +28,9 @@ diff --git dom/base/moz.build dom/base/moz.build
 index d390adf..4508f19 100644
 --- dom/base/moz.build
 +++ dom/base/moz.build
-@@ -567,6 +567,9 @@ FINAL_LIBRARY = "xul"
- if CONFIG["MOZ_X11"]:
-     CXXFLAGS += CONFIG["TK_CFLAGS"]
+@@ -576,6 +576,9 @@ FINAL_LIBRARY = "xul"
+ if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
+     CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"]
  
 +if CONFIG["MOZ_SYSTEM_HARFBUZZ"]:
 +    CXXFLAGS += CONFIG["MOZ_HARFBUZZ_CFLAGS"]
@@ -215,9 +215,9 @@ diff --git old-configure.in old-configure.in
 index d147957..d332b34 100644
 --- old-configure.in
 +++ old-configure.in
-@@ -2217,6 +2217,27 @@ dnl ========================================================
- 
- AC_SUBST(MOZ_LINUX_32_SSE2_STARTUP_ERROR)
+@@ -1335,6 +1335,27 @@ fi
+ AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
+ AC_SUBST(MOZ_MACBUNDLE_ID)
  
 +dnl ========================================================
 +dnl Check for graphite2
@@ -241,7 +241,7 @@ index d147957..d332b34 100644
 +fi
 +
  dnl ========================================================
- dnl Check for pixman and cairo
+ dnl = Child Process Name for IPC
  dnl ========================================================
 diff --git toolkit/library/moz.build toolkit/library/moz.build
 index 2c3f869..e8a9d23 100644
diff --git a/www/firefox/files/patch-libwebrtc-generate b/www/firefox/files/patch-libwebrtc-generate
new file mode 100644
index 000000000000..fc8cd43d4686
--- /dev/null
+++ b/www/firefox/files/patch-libwebrtc-generate
@@ -0,0 +1,192 @@
+# Below are the changes needed for generate-gn-build-files.sh
+# except for depot_tools
+# https://bugzilla.mozilla.org/show_bug.cgi?id=1654448
+
+diff --git dom/media/webrtc/third_party_build/gn-configs/arm64_False_arm64_freebsd.mozconfig dom/media/webrtc/third_party_build/gn-configs/arm64_False_arm64_freebsd.mozconfig
+new file mode 100644
+index 0000000000..7c76576969
+--- /dev/null
++++ dom/media/webrtc/third_party_build/gn-configs/arm64_False_arm64_freebsd.mozconfig
+@@ -0,0 +1,12 @@
++export M4=/usr/local/bin/gm4
++export CC=/usr/local/bin/clang13
++export CXX=/usr/local/bin/clang++13
++export CPP=/usr/local/bin/clang-cpp13
++ac_add_options --prefix="/usr/local"
++ac_add_options --with-libclang-path="/usr/local/llvm13/lib"
++ac_add_options --with-wasi-sysroot="/usr/local/share/wasi-sysroot"
++
++ac_add_options --target=aarch64
++ac_add_options --enable-bootstrap
++
++mk_add_options MOZ_OBJDIR=obj-arm64_False_arm64_freebsd
+diff --git dom/media/webrtc/third_party_build/gn-configs/arm64_True_arm64_freebsd.mozconfig dom/media/webrtc/third_party_build/gn-configs/arm64_True_arm64_freebsd.mozconfig
+new file mode 100644
+index 0000000000..d056686355
+--- /dev/null
++++ dom/media/webrtc/third_party_build/gn-configs/arm64_True_arm64_freebsd.mozconfig
+@@ -0,0 +1,13 @@
++export M4=/usr/local/bin/gm4
++export CC=/usr/local/bin/clang13
++export CXX=/usr/local/bin/clang++13
++export CPP=/usr/local/bin/clang-cpp13
++ac_add_options --prefix="/usr/local"
++ac_add_options --with-libclang-path="/usr/local/llvm13/lib"
++ac_add_options --with-wasi-sysroot="/usr/local/share/wasi-sysroot"
++
++ac_add_options --target=aarch64
++ac_add_options --enable-debug
++ac_add_options --enable-bootstrap
++
++mk_add_options MOZ_OBJDIR=obj-arm64_True_arm64_freebsd
+diff --git dom/media/webrtc/third_party_build/gn-configs/generate-gn-build-files.sh dom/media/webrtc/third_party_build/gn-configs/generate-gn-build-files.sh
+index 4452b0ce76..34a8ddf28e 100755
+--- dom/media/webrtc/third_party_build/gn-configs/generate-gn-build-files.sh
++++ dom/media/webrtc/third_party_build/gn-configs/generate-gn-build-files.sh
+@@ -57,17 +57,6 @@ set -eEuo pipefail
+ 
+ SYS_NAME=`uname`
+ 
+-# Check for modified files and abort if present.
+-MODIFIED_FILES=`hg status --modified --added --exclude "**/moz.build" --exclude "dom/media/webrtc/third_party_build/**.json"`
+-if [ "x$MODIFIED_FILES" = "x" ]; then
+-  # Completely clean the mercurial checkout before proceeding
+-  hg update -C -r .
+-  hg purge
+-else
+-  echo "There are modified files in the checkout. Cowardly aborting!"
+-  echo "$MODIFIED_FILES"
+-  exit 1
+-fi
+ 
+ IS_WIN=0
+ IS_DARWIN=0
+@@ -94,6 +83,10 @@ elif [ "x$SYS_NAME" = "xMINGW32_NT-6.2" ]; then
+   IS_WIN=1
+ elif [ "x$SYS_NAME" = "xOpenBSD" ]; then
+   CONFIGS="x64_False_x64_openbsd x64_True_x64_openbsd"
++elif [ "x$SYS_NAME" = "xFreeBSD" ]; then
++  CONFIGS="x64_False_x64_freebsd x64_True_x64_freebsd"
++  CONFIGS="$CONFIGS x64_False_x86_freebsd x64_True_x86_freebsd"
++  #CONFIGS="arm64_False_arm64_freebsd arm64_True_arm64_freebsd"
+ else
+   # Ensure rust has the correct targets for building x86 and arm64.  These
+   # operations succeed quickly if previously completed.
+diff --git dom/media/webrtc/third_party_build/gn-configs/x64_False_x64_freebsd.mozconfig dom/media/webrtc/third_party_build/gn-configs/x64_False_x64_freebsd.mozconfig
+new file mode 100644
+index 0000000000..37319939ba
+--- /dev/null
++++ dom/media/webrtc/third_party_build/gn-configs/x64_False_x64_freebsd.mozconfig
+@@ -0,0 +1,11 @@
++export M4=/usr/local/bin/gm4
++export CC=/usr/local/bin/clang13
++export CXX=/usr/local/bin/clang++13
++export CPP=/usr/local/bin/clang-cpp13
++ac_add_options --prefix="/usr/local"
++ac_add_options --with-libclang-path="/usr/local/llvm13/lib"
++ac_add_options --with-wasi-sysroot="/usr/local/share/wasi-sysroot"
++
++ac_add_options --enable-bootstrap
++
++mk_add_options MOZ_OBJDIR=obj-x64_False_x64_freebsd
+diff --git dom/media/webrtc/third_party_build/gn-configs/x64_False_x86_freebsd.mozconfig dom/media/webrtc/third_party_build/gn-configs/x64_False_x86_freebsd.mozconfig
+new file mode 100644
+index 0000000000..4bcac5d797
+--- /dev/null
++++ dom/media/webrtc/third_party_build/gn-configs/x64_False_x86_freebsd.mozconfig
+@@ -0,0 +1,12 @@
++export M4=/usr/local/bin/gm4
++export CC=/usr/local/bin/clang13
++export CXX=/usr/local/bin/clang++13
++export CPP=/usr/local/bin/clang-cpp13
++ac_add_options --prefix="/usr/local"
++ac_add_options --with-libclang-path="/usr/local/llvm13/lib"
++ac_add_options --with-wasi-sysroot="/usr/local/share/wasi-sysroot"
++
++ac_add_options --target=i686
++ac_add_options --enable-bootstrap
++
++mk_add_options MOZ_OBJDIR=obj-x64_False_x86_freebsd
+diff --git dom/media/webrtc/third_party_build/gn-configs/x64_True_x64_freebsd.mozconfig dom/media/webrtc/third_party_build/gn-configs/x64_True_x64_freebsd.mozconfig
+new file mode 100644
+index 0000000000..7c5ae25d67
+--- /dev/null
++++ dom/media/webrtc/third_party_build/gn-configs/x64_True_x64_freebsd.mozconfig
+@@ -0,0 +1,12 @@
++export M4=/usr/local/bin/gm4
++export CC=/usr/local/bin/clang13
++export CXX=/usr/local/bin/clang++13
++export CPP=/usr/local/bin/clang-cpp13
++ac_add_options --prefix="/usr/local"
++ac_add_options --with-libclang-path="/usr/local/llvm13/lib"
++ac_add_options --with-wasi-sysroot="/usr/local/share/wasi-sysroot"
++
++ac_add_options --enable-debug
++ac_add_options --enable-bootstrap
++
++mk_add_options MOZ_OBJDIR=obj-x64_True_x64_freebsd
+diff --git dom/media/webrtc/third_party_build/gn-configs/x64_True_x86_freebsd.mozconfig dom/media/webrtc/third_party_build/gn-configs/x64_True_x86_freebsd.mozconfig
+new file mode 100644
+index 0000000000..ee95c64a23
+--- /dev/null
++++ dom/media/webrtc/third_party_build/gn-configs/x64_True_x86_freebsd.mozconfig
+@@ -0,0 +1,13 @@
++export M4=/usr/local/bin/gm4
++export CC=/usr/local/bin/clang13
++export CXX=/usr/local/bin/clang++13
++export CPP=/usr/local/bin/clang-cpp13
++ac_add_options --prefix="/usr/local"
++ac_add_options --with-libclang-path="/usr/local/llvm13/lib"
++ac_add_options --with-wasi-sysroot="/usr/local/share/wasi-sysroot"
++
++ac_add_options --target=i686
++ac_add_options --enable-debug
++ac_add_options --enable-bootstrap
++
++mk_add_options MOZ_OBJDIR=obj-x64_True_x86_freebsd
+diff --git third_party/libwebrtc/build/config/BUILDCONFIG.gn third_party/libwebrtc/build/config/BUILDCONFIG.gn
+index fe6f5b7d2a..1092f99c65 100644
+--- third_party/libwebrtc/build/config/BUILDCONFIG.gn
++++ third_party/libwebrtc/build/config/BUILDCONFIG.gn
+@@ -131,10 +131,12 @@ declare_args() {
+   is_official_build = false
+ 
+   # Whether we're a traditional desktop unix.
+-  is_desktop_linux = current_os == "linux" || current_os == "openbsd"
++  is_desktop_linux = current_os == "linux" || current_os == "openbsd" ||
++                     current_os == "freebsd"
+ 
+   # Set to true when compiling with the Clang compiler.
+   is_clang = current_os != "linux" || current_os == "openbsd" ||
++             current_os == "freebsd" ||
+              (current_cpu != "s390x" && current_cpu != "s390" &&
+               current_cpu != "ppc64" && current_cpu != "ppc" &&
+               current_cpu != "mips" && current_cpu != "mips64")
+@@ -186,7 +188,7 @@ if (host_toolchain == "") {
+   # TODO(dpranke): Add some sort of assert here that verifies that
+   # no toolchain omitted host_toolchain from its toolchain_args().
+ 
+-  if (host_os == "linux" || host_os == "openbsd") {
++  if (host_os == "linux" || host_os == "openbsd" || host_os == "freebsd" ) {
+     if (target_os != "linux") {
+       host_toolchain = "//build/toolchain/linux:clang_$host_cpu"
+     } else if (is_clang) {
+@@ -224,7 +226,8 @@ if (target_os == "android") {
+   assert(host_os == "linux" || host_os == "mac",
+          "Android builds are only supported on Linux and Mac hosts.")
+   _default_toolchain = "//build/toolchain/android:android_clang_$target_cpu"
+-} else if (target_os == "chromeos" || target_os == "linux" || target_os == "openbsd") {
++} else if (target_os == "chromeos" || target_os == "linux" ||
++           target_os == "openbsd" || target_os == "freebsd") {
+   # See comments in build/toolchain/cros/BUILD.gn about board compiles.
+   if (is_clang) {
+     _default_toolchain = "//build/toolchain/linux:clang_$target_cpu"
+@@ -289,7 +292,7 @@ is_chromeos = current_os == "chromeos"
+ is_fuchsia = current_os == "fuchsia"
+ is_ios = current_os == "ios"
+ is_linux = current_os == "chromeos" || current_os == "linux"
+-is_bsd = current_os == "openbsd"
++is_bsd = current_os == "openbsd" || current_os == "freebsd"
+ is_mac = current_os == "mac"
+ is_nacl = current_os == "nacl"
+ is_win = current_os == "win" || current_os == "winuwp"
diff --git a/www/firefox/files/patch-libwebrtc-generated b/www/firefox/files/patch-libwebrtc-generated
new file mode 100644
index 000000000000..b51a927bddb0
--- /dev/null
+++ b/www/firefox/files/patch-libwebrtc-generated
@@ -0,0 +1,19756 @@
+diff --git third_party/libwebrtc/api/adaptation/resource_adaptation_api_gn/moz.build third_party/libwebrtc/api/adaptation/resource_adaptation_api_gn/moz.build
+index 3dffbc4abb..aac5d092ef 100644
+--- third_party/libwebrtc/api/adaptation/resource_adaptation_api_gn/moz.build
++++ third_party/libwebrtc/api/adaptation/resource_adaptation_api_gn/moz.build
+@@ -67,6 +67,17 @@ if CONFIG["OS_TARGET"] == "Darwin":
+     DEFINES["__STDC_CONSTANT_MACROS"] = True
+     DEFINES["__STDC_FORMAT_MACROS"] = True
+ 
++if CONFIG["OS_TARGET"] == "FreeBSD":
++
++    DEFINES["USE_GLIB"] = "1"
++    DEFINES["WEBRTC_BSD"] = True
++    DEFINES["WEBRTC_POSIX"] = True
++    DEFINES["_FILE_OFFSET_BITS"] = "64"
++    DEFINES["_LARGEFILE64_SOURCE"] = True
++    DEFINES["_LARGEFILE_SOURCE"] = True
++    DEFINES["__STDC_CONSTANT_MACROS"] = True
++    DEFINES["__STDC_FORMAT_MACROS"] = True
++
+ if CONFIG["OS_TARGET"] == "Linux":
+ 
+     DEFINES["USE_AURA"] = "1"
+@@ -153,6 +164,10 @@ if not CONFIG["MOZ_DEBUG"] and CONFIG["OS_TARGET"] == "Darwin":
+ 
+     DEFINES["_FORTIFY_SOURCE"] = "2"
+ 
++if not CONFIG["MOZ_DEBUG"] and CONFIG["OS_TARGET"] == "FreeBSD":
++
++    DEFINES["_FORTIFY_SOURCE"] = "2"
++
+ if not CONFIG["MOZ_DEBUG"] and CONFIG["OS_TARGET"] == "Linux":
+ 
+     DEFINES["_FORTIFY_SOURCE"] = "2"
+@@ -169,6 +184,10 @@ if CONFIG["MOZ_DEBUG"] == "1" and CONFIG["OS_TARGET"] == "Darwin":
+ 
+     DEFINES["_DEBUG"] = True
+ 
++if CONFIG["MOZ_DEBUG"] == "1" and CONFIG["OS_TARGET"] == "FreeBSD":
++
++    DEFINES["_DEBUG"] = True
++
+ if CONFIG["MOZ_DEBUG"] == "1" and CONFIG["OS_TARGET"] == "Linux":
+ 
+     DEFINES["_DEBUG"] = True
+@@ -191,6 +210,12 @@ if CONFIG["CPU_ARCH"] == "x86" and CONFIG["OS_TARGET"] == "Android":
+         "android_support"
+     ]
+ 
++if CONFIG["CPU_ARCH"] == "x86" and CONFIG["OS_TARGET"] == "FreeBSD":
++
++    CXXFLAGS += [
++        "-msse2"
++    ]
++
+ if CONFIG["CPU_ARCH"] == "aarch64" and CONFIG["OS_TARGET"] == "Linux":
+ 
+     DEFINES["CR_SYSROOT_HASH"] = "ef67b6ca8fd6e2e51515a243d043d1ea4caf45e6"
+diff --git third_party/libwebrtc/api/array_view_gn/moz.build third_party/libwebrtc/api/array_view_gn/moz.build
+index aca9f59966..1ea31b6a5e 100644
+--- third_party/libwebrtc/api/array_view_gn/moz.build
++++ third_party/libwebrtc/api/array_view_gn/moz.build
+@@ -63,6 +63,17 @@ if CONFIG["OS_TARGET"] == "Darwin":
+     DEFINES["__STDC_CONSTANT_MACROS"] = True
+     DEFINES["__STDC_FORMAT_MACROS"] = True
+ 
++if CONFIG["OS_TARGET"] == "FreeBSD":
++
++    DEFINES["USE_GLIB"] = "1"
++    DEFINES["WEBRTC_BSD"] = True
++    DEFINES["WEBRTC_POSIX"] = True
++    DEFINES["_FILE_OFFSET_BITS"] = "64"
++    DEFINES["_LARGEFILE64_SOURCE"] = True
++    DEFINES["_LARGEFILE_SOURCE"] = True
++    DEFINES["__STDC_CONSTANT_MACROS"] = True
++    DEFINES["__STDC_FORMAT_MACROS"] = True
++
+ if CONFIG["OS_TARGET"] == "Linux":
+ 
+     DEFINES["USE_AURA"] = "1"
+@@ -141,6 +152,10 @@ if not CONFIG["MOZ_DEBUG"] and CONFIG["OS_TARGET"] == "Darwin":
+ 
+     DEFINES["_FORTIFY_SOURCE"] = "2"
+ 
++if not CONFIG["MOZ_DEBUG"] and CONFIG["OS_TARGET"] == "FreeBSD":
++
++    DEFINES["_FORTIFY_SOURCE"] = "2"
++
+ if not CONFIG["MOZ_DEBUG"] and CONFIG["OS_TARGET"] == "Linux":
+ 
+     DEFINES["_FORTIFY_SOURCE"] = "2"
+@@ -157,6 +172,10 @@ if CONFIG["MOZ_DEBUG"] == "1" and CONFIG["OS_TARGET"] == "Darwin":
+ 
+     DEFINES["_DEBUG"] = True
+ 
++if CONFIG["MOZ_DEBUG"] == "1" and CONFIG["OS_TARGET"] == "FreeBSD":
++
++    DEFINES["_DEBUG"] = True
++
+ if CONFIG["MOZ_DEBUG"] == "1" and CONFIG["OS_TARGET"] == "Linux":
+ 
+     DEFINES["_DEBUG"] = True
+diff --git third_party/libwebrtc/api/audio/aec3_config_gn/moz.build third_party/libwebrtc/api/audio/aec3_config_gn/moz.build
+index 861233bfeb..c2f87155bb 100644
+--- third_party/libwebrtc/api/audio/aec3_config_gn/moz.build
++++ third_party/libwebrtc/api/audio/aec3_config_gn/moz.build
+@@ -67,6 +67,17 @@ if CONFIG["OS_TARGET"] == "Darwin":
+     DEFINES["__STDC_CONSTANT_MACROS"] = True
+     DEFINES["__STDC_FORMAT_MACROS"] = True
+ 
++if CONFIG["OS_TARGET"] == "FreeBSD":
++
++    DEFINES["USE_GLIB"] = "1"
++    DEFINES["WEBRTC_BSD"] = True
++    DEFINES["WEBRTC_POSIX"] = True
++    DEFINES["_FILE_OFFSET_BITS"] = "64"
++    DEFINES["_LARGEFILE64_SOURCE"] = True
++    DEFINES["_LARGEFILE_SOURCE"] = True
++    DEFINES["__STDC_CONSTANT_MACROS"] = True
++    DEFINES["__STDC_FORMAT_MACROS"] = True
++
+ if CONFIG["OS_TARGET"] == "Linux":
+ 
+     DEFINES["USE_AURA"] = "1"
+@@ -153,6 +164,10 @@ if not CONFIG["MOZ_DEBUG"] and CONFIG["OS_TARGET"] == "Darwin":
+ 
+     DEFINES["_FORTIFY_SOURCE"] = "2"
+ 
++if not CONFIG["MOZ_DEBUG"] and CONFIG["OS_TARGET"] == "FreeBSD":
++
++    DEFINES["_FORTIFY_SOURCE"] = "2"
++
+ if not CONFIG["MOZ_DEBUG"] and CONFIG["OS_TARGET"] == "Linux":
+ 
+     DEFINES["_FORTIFY_SOURCE"] = "2"
+@@ -169,6 +184,10 @@ if CONFIG["MOZ_DEBUG"] == "1" and CONFIG["OS_TARGET"] == "Darwin":
+ 
+     DEFINES["_DEBUG"] = True
+ 
++if CONFIG["MOZ_DEBUG"] == "1" and CONFIG["OS_TARGET"] == "FreeBSD":
++
++    DEFINES["_DEBUG"] = True
++
+ if CONFIG["MOZ_DEBUG"] == "1" and CONFIG["OS_TARGET"] == "Linux":
+ 
+     DEFINES["_DEBUG"] = True
+@@ -191,6 +210,12 @@ if CONFIG["CPU_ARCH"] == "x86" and CONFIG["OS_TARGET"] == "Android":
+         "android_support"
+     ]
+ 
++if CONFIG["CPU_ARCH"] == "x86" and CONFIG["OS_TARGET"] == "FreeBSD":
++
++    CXXFLAGS += [
++        "-msse2"
++    ]
++
+ if CONFIG["CPU_ARCH"] == "aarch64" and CONFIG["OS_TARGET"] == "Linux":
+ 
+     DEFINES["CR_SYSROOT_HASH"] = "ef67b6ca8fd6e2e51515a243d043d1ea4caf45e6"
+diff --git third_party/libwebrtc/api/audio/aec3_factory_gn/moz.build third_party/libwebrtc/api/audio/aec3_factory_gn/moz.build
+index 2421e514b6..6a6fc577a5 100644
+--- third_party/libwebrtc/api/audio/aec3_factory_gn/moz.build
++++ third_party/libwebrtc/api/audio/aec3_factory_gn/moz.build
+@@ -68,6 +68,17 @@ if CONFIG["OS_TARGET"] == "Darwin":
+     DEFINES["__STDC_CONSTANT_MACROS"] = True
+     DEFINES["__STDC_FORMAT_MACROS"] = True
+ 
++if CONFIG["OS_TARGET"] == "FreeBSD":
++
++    DEFINES["USE_GLIB"] = "1"
++    DEFINES["WEBRTC_BSD"] = True
++    DEFINES["WEBRTC_POSIX"] = True
++    DEFINES["_FILE_OFFSET_BITS"] = "64"
++    DEFINES["_LARGEFILE64_SOURCE"] = True
++    DEFINES["_LARGEFILE_SOURCE"] = True
++    DEFINES["__STDC_CONSTANT_MACROS"] = True
++    DEFINES["__STDC_FORMAT_MACROS"] = True
++
+ if CONFIG["OS_TARGET"] == "Linux":
+ 
+     DEFINES["USE_AURA"] = "1"
+@@ -161,6 +172,10 @@ if not CONFIG["MOZ_DEBUG"] and CONFIG["OS_TARGET"] == "Darwin":
+ 
+     DEFINES["_FORTIFY_SOURCE"] = "2"
+ 
++if not CONFIG["MOZ_DEBUG"] and CONFIG["OS_TARGET"] == "FreeBSD":
++
++    DEFINES["_FORTIFY_SOURCE"] = "2"
++
+ if not CONFIG["MOZ_DEBUG"] and CONFIG["OS_TARGET"] == "Linux":
+ 
+     DEFINES["_FORTIFY_SOURCE"] = "2"
+@@ -177,6 +192,10 @@ if CONFIG["MOZ_DEBUG"] == "1" and CONFIG["OS_TARGET"] == "Darwin":
+ 
+     DEFINES["_DEBUG"] = True
+ 
++if CONFIG["MOZ_DEBUG"] == "1" and CONFIG["OS_TARGET"] == "FreeBSD":
++
++    DEFINES["_DEBUG"] = True
++
+ if CONFIG["MOZ_DEBUG"] == "1" and CONFIG["OS_TARGET"] == "Linux":
+ 
+     DEFINES["_DEBUG"] = True
+@@ -199,6 +218,12 @@ if CONFIG["CPU_ARCH"] == "x86" and CONFIG["OS_TARGET"] == "Android":
+         "android_support"
+     ]
+ 
++if CONFIG["CPU_ARCH"] == "x86" and CONFIG["OS_TARGET"] == "FreeBSD":
++
++    CXXFLAGS += [
++        "-msse2"
++    ]
++
+ if CONFIG["CPU_ARCH"] == "aarch64" and CONFIG["OS_TARGET"] == "Linux":
+ 
+     DEFINES["CR_SYSROOT_HASH"] = "ef67b6ca8fd6e2e51515a243d043d1ea4caf45e6"
+diff --git third_party/libwebrtc/api/audio/audio_frame_api_gn/moz.build third_party/libwebrtc/api/audio/audio_frame_api_gn/moz.build
+index 48abf7cd40..26317d4cf5 100644
+--- third_party/libwebrtc/api/audio/audio_frame_api_gn/moz.build
++++ third_party/libwebrtc/api/audio/audio_frame_api_gn/moz.build
+@@ -68,6 +68,17 @@ if CONFIG["OS_TARGET"] == "Darwin":
+     DEFINES["__STDC_CONSTANT_MACROS"] = True
+     DEFINES["__STDC_FORMAT_MACROS"] = True
+ 
++if CONFIG["OS_TARGET"] == "FreeBSD":
++
++    DEFINES["USE_GLIB"] = "1"
++    DEFINES["WEBRTC_BSD"] = True
++    DEFINES["WEBRTC_POSIX"] = True
++    DEFINES["_FILE_OFFSET_BITS"] = "64"
++    DEFINES["_LARGEFILE64_SOURCE"] = True
++    DEFINES["_LARGEFILE_SOURCE"] = True
++    DEFINES["__STDC_CONSTANT_MACROS"] = True
++    DEFINES["__STDC_FORMAT_MACROS"] = True
++
+ if CONFIG["OS_TARGET"] == "Linux":
+ 
+     DEFINES["USE_AURA"] = "1"
+@@ -154,6 +165,10 @@ if not CONFIG["MOZ_DEBUG"] and CONFIG["OS_TARGET"] == "Darwin":
+ 
+     DEFINES["_FORTIFY_SOURCE"] = "2"
+ 
++if not CONFIG["MOZ_DEBUG"] and CONFIG["OS_TARGET"] == "FreeBSD":
++
++    DEFINES["_FORTIFY_SOURCE"] = "2"
++
+ if not CONFIG["MOZ_DEBUG"] and CONFIG["OS_TARGET"] == "Linux":
+ 
+     DEFINES["_FORTIFY_SOURCE"] = "2"
+@@ -170,6 +185,10 @@ if CONFIG["MOZ_DEBUG"] == "1" and CONFIG["OS_TARGET"] == "Darwin":
+ 
+     DEFINES["_DEBUG"] = True
+ 
++if CONFIG["MOZ_DEBUG"] == "1" and CONFIG["OS_TARGET"] == "FreeBSD":
++
++    DEFINES["_DEBUG"] = True
++
+ if CONFIG["MOZ_DEBUG"] == "1" and CONFIG["OS_TARGET"] == "Linux":
+ 
+     DEFINES["_DEBUG"] = True
+@@ -192,6 +211,12 @@ if CONFIG["CPU_ARCH"] == "x86" and CONFIG["OS_TARGET"] == "Android":
+         "android_support"
+     ]
+ 
++if CONFIG["CPU_ARCH"] == "x86" and CONFIG["OS_TARGET"] == "FreeBSD":
++
++    CXXFLAGS += [
++        "-msse2"
++    ]
++
+ if CONFIG["CPU_ARCH"] == "aarch64" and CONFIG["OS_TARGET"] == "Linux":
+ 
+     DEFINES["CR_SYSROOT_HASH"] = "ef67b6ca8fd6e2e51515a243d043d1ea4caf45e6"
+diff --git third_party/libwebrtc/api/audio/audio_mixer_api_gn/moz.build third_party/libwebrtc/api/audio/audio_mixer_api_gn/moz.build
+index 41222e1e06..5a75494c05 100644
+--- third_party/libwebrtc/api/audio/audio_mixer_api_gn/moz.build
++++ third_party/libwebrtc/api/audio/audio_mixer_api_gn/moz.build
+@@ -63,6 +63,17 @@ if CONFIG["OS_TARGET"] == "Darwin":
+     DEFINES["__STDC_CONSTANT_MACROS"] = True
+     DEFINES["__STDC_FORMAT_MACROS"] = True
+ 
++if CONFIG["OS_TARGET"] == "FreeBSD":
++
++    DEFINES["USE_GLIB"] = "1"
++    DEFINES["WEBRTC_BSD"] = True
++    DEFINES["WEBRTC_POSIX"] = True
++    DEFINES["_FILE_OFFSET_BITS"] = "64"
++    DEFINES["_LARGEFILE64_SOURCE"] = True
++    DEFINES["_LARGEFILE_SOURCE"] = True
++    DEFINES["__STDC_CONSTANT_MACROS"] = True
++    DEFINES["__STDC_FORMAT_MACROS"] = True
++
+ if CONFIG["OS_TARGET"] == "Linux":
+ 
+     DEFINES["USE_AURA"] = "1"
+@@ -145,6 +156,10 @@ if not CONFIG["MOZ_DEBUG"] and CONFIG["OS_TARGET"] == "Darwin":
+ 
+     DEFINES["_FORTIFY_SOURCE"] = "2"
+ 
++if not CONFIG["MOZ_DEBUG"] and CONFIG["OS_TARGET"] == "FreeBSD":
++
++    DEFINES["_FORTIFY_SOURCE"] = "2"
++
+ if not CONFIG["MOZ_DEBUG"] and CONFIG["OS_TARGET"] == "Linux":
+ 
+     DEFINES["_FORTIFY_SOURCE"] = "2"
+@@ -161,6 +176,10 @@ if CONFIG["MOZ_DEBUG"] == "1" and CONFIG["OS_TARGET"] == "Darwin":
+ 
+     DEFINES["_DEBUG"] = True
+ 
++if CONFIG["MOZ_DEBUG"] == "1" and CONFIG["OS_TARGET"] == "FreeBSD":
++
++    DEFINES["_DEBUG"] = True
++
+ if CONFIG["MOZ_DEBUG"] == "1" and CONFIG["OS_TARGET"] == "Linux":
+ 
+     DEFINES["_DEBUG"] = True
+diff --git third_party/libwebrtc/api/audio/echo_control_gn/moz.build third_party/libwebrtc/api/audio/echo_control_gn/moz.build
+index 132b296b25..df28661dfb 100644
+--- third_party/libwebrtc/api/audio/echo_control_gn/moz.build
++++ third_party/libwebrtc/api/audio/echo_control_gn/moz.build
+@@ -63,6 +63,17 @@ if CONFIG["OS_TARGET"] == "Darwin":
+     DEFINES["__STDC_CONSTANT_MACROS"] = True
+     DEFINES["__STDC_FORMAT_MACROS"] = True
+ 
++if CONFIG["OS_TARGET"] == "FreeBSD":
++
++    DEFINES["USE_GLIB"] = "1"
++    DEFINES["WEBRTC_BSD"] = True
++    DEFINES["WEBRTC_POSIX"] = True
++    DEFINES["_FILE_OFFSET_BITS"] = "64"
++    DEFINES["_LARGEFILE64_SOURCE"] = True
++    DEFINES["_LARGEFILE_SOURCE"] = True
++    DEFINES["__STDC_CONSTANT_MACROS"] = True
++    DEFINES["__STDC_FORMAT_MACROS"] = True
++
+ if CONFIG["OS_TARGET"] == "Linux":
+ 
+     DEFINES["USE_AURA"] = "1"
+@@ -141,6 +152,10 @@ if not CONFIG["MOZ_DEBUG"] and CONFIG["OS_TARGET"] == "Darwin":
+ 
+     DEFINES["_FORTIFY_SOURCE"] = "2"
+ 
++if not CONFIG["MOZ_DEBUG"] and CONFIG["OS_TARGET"] == "FreeBSD":
++
++    DEFINES["_FORTIFY_SOURCE"] = "2"
++
+ if not CONFIG["MOZ_DEBUG"] and CONFIG["OS_TARGET"] == "Linux":
+ 
+     DEFINES["_FORTIFY_SOURCE"] = "2"
+@@ -157,6 +172,10 @@ if CONFIG["MOZ_DEBUG"] == "1" and CONFIG["OS_TARGET"] == "Darwin":
+ 
+     DEFINES["_DEBUG"] = True
+ 
++if CONFIG["MOZ_DEBUG"] == "1" and CONFIG["OS_TARGET"] == "FreeBSD":
++
++    DEFINES["_DEBUG"] = True
++
+ if CONFIG["MOZ_DEBUG"] == "1" and CONFIG["OS_TARGET"] == "Linux":
+ 
+     DEFINES["_DEBUG"] = True
+diff --git third_party/libwebrtc/api/audio_codecs/L16/audio_decoder_L16_gn/moz.build third_party/libwebrtc/api/audio_codecs/L16/audio_decoder_L16_gn/moz.build
+index 8499f556e3..92d90abb2d 100644
+--- third_party/libwebrtc/api/audio_codecs/L16/audio_decoder_L16_gn/moz.build
++++ third_party/libwebrtc/api/audio_codecs/L16/audio_decoder_L16_gn/moz.build
+@@ -67,6 +67,17 @@ if CONFIG["OS_TARGET"] == "Darwin":
+     DEFINES["__STDC_CONSTANT_MACROS"] = True
+     DEFINES["__STDC_FORMAT_MACROS"] = True
+ 
++if CONFIG["OS_TARGET"] == "FreeBSD":
++
++    DEFINES["USE_GLIB"] = "1"
++    DEFINES["WEBRTC_BSD"] = True
++    DEFINES["WEBRTC_POSIX"] = True
++    DEFINES["_FILE_OFFSET_BITS"] = "64"
++    DEFINES["_LARGEFILE64_SOURCE"] = True
++    DEFINES["_LARGEFILE_SOURCE"] = True
++    DEFINES["__STDC_CONSTANT_MACROS"] = True
++    DEFINES["__STDC_FORMAT_MACROS"] = True
++
+ if CONFIG["OS_TARGET"] == "Linux":
+ 
+     DEFINES["USE_AURA"] = "1"
*** 272905 LINES SKIPPED ***