diff --git a/ext/dav1d.cmd b/ext/dav1d.cmd index 45f62470e..d8b9a1719 100755 --- a/ext/dav1d.cmd +++ b/ext/dav1d.cmd @@ -8,6 +8,7 @@ : # If you're running this on Windows, be sure you've already run this (from your VC2019 install dir): : # "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvars64.bat" +# When updating the dav1d version, make the same change to dav1d_oss_fuzz.sh. git clone -b 0.9.2 --depth 1 https://code.videolan.org/videolan/dav1d.git cd dav1d diff --git a/ext/dav1d_oss_fuzz.patch b/ext/dav1d_oss_fuzz.patch new file mode 100644 index 000000000..29cf34349 --- /dev/null +++ b/ext/dav1d_oss_fuzz.patch @@ -0,0 +1,19 @@ +diff --git a/meson.build b/meson.build +index a9cfa04..085653f 100644 +--- a/meson.build ++++ b/meson.build +@@ -382,7 +382,13 @@ endif + + cdata.set10('ARCH_PPC64LE', host_machine.cpu() == 'ppc64le') + +-if cc.symbols_have_underscore_prefix() ++# Meson's symbols_have_underscore_prefix() function returns true incorrectly ++# if -fprofile-instr-generate is specified in CFLAGS. This is similar to the ++# problem symbols_have_underscore_prefix() has with -flto mentioned in ++# https://github.com/mesonbuild/meson/issues/5482. Since oss-fuzz uses ++# -fprofile-instr-generate in CFLAGS only on Linux, add a special case for ++# Linux to work around this Meson bug. ++if host_machine.system() != 'linux' and cc.symbols_have_underscore_prefix() + cdata.set10('PREFIX', true) + cdata_asm.set10('PREFIX', true) + endif diff --git a/ext/dav1d_oss_fuzz.sh b/ext/dav1d_oss_fuzz.sh new file mode 100755 index 000000000..ee96e52e1 --- /dev/null +++ b/ext/dav1d_oss_fuzz.sh @@ -0,0 +1,23 @@ +: # If you want to use a local build of dav1d, you must clone the dav1d repo in this directory first, then enable CMake's AVIF_CODEC_DAV1D and AVIF_LOCAL_DAV1D options. +: # The git SHA below is known to work, and will occasionally be updated. Feel free to use a more recent commit. + +: # The odd choice of comment style in this file is to try to share this script between *nix and win32. + +: # meson and ninja must be in your PATH. + +: # If you're running this on Windows, be sure you've already run this (from your VC2019 install dir): +: # "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvars64.bat" + +git clone -b 0.9.2 --depth 1 https://code.videolan.org/videolan/dav1d.git + +cd dav1d +patch -p1 < ../dav1d_oss_fuzz.patch +mkdir build +cd build + +: # macOS might require: -Dc_args=-fno-stack-check +: # Build with asan: -Db_sanitize=address +: # Build with ubsan: -Db_sanitize=undefined +meson --default-library=static --buildtype release .. +ninja +cd ../..