Use AVIF_LIBRARY_SUFFIX for libdav1d in CMake

Otherwise a locally built ext/dav1d will be missing libdav1d.so
in a shared build of libavif on Unix platforms.
Add a fallback to .a for Windows platforms.

Build dav1d in ci-unix-shared-local.yml.
diff --git a/.github/workflows/ci-unix-shared-local.yml b/.github/workflows/ci-unix-shared-local.yml
index 967ea5e..5d302f5 100644
--- a/.github/workflows/ci-unix-shared-local.yml
+++ b/.github/workflows/ci-unix-shared-local.yml
@@ -1,7 +1,7 @@
 # This is a copy of ci.yml for building shared libraries. It differs from ci.yml as follows:
 #
 #   * The os matrix consists of ubuntu-latest only.
-#   * Does not build dav1d, rav1e, SVT-AV1 nor libgav1.
+#   * Does not build rav1e, SVT-AV1 nor libgav1.
 
 name: CI
 on: [push, pull_request]
@@ -38,17 +38,24 @@
       with:
         version: 2.15.05
     - uses: seanmiddleditch/gha-setup-ninja@v3
+    - run: pip install meson
     - name: Set shared libs
       if: steps.cache-ext.outputs.cache-hit != 'true'
       working-directory: ./ext
       run: >
         sed -i'' -e 's/-DBUILD_SHARED_LIBS=OFF/-DBUILD_SHARED_LIBS=ON/' *.cmd
 
+        sed -i'' -e 's/--default-library=static/--default-library=shared/' dav1d.cmd
+
         sed -i'' -e 's/ninja yuv/ninja yuv_shared/' libyuv.cmd
     - name: Build aom
       if: steps.cache-ext.outputs.cache-hit != 'true'
       working-directory: ./ext
       run: bash aom.cmd
+    - name: Build dav1d
+      if: steps.cache-ext.outputs.cache-hit != 'true'
+      working-directory: ./ext
+      run: bash dav1d.cmd
     - name: Build libyuv
       if: steps.cache-ext.outputs.cache-hit != 'true'
       working-directory: ./ext
@@ -69,6 +76,7 @@
         cmake .. -G Ninja
         -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON
         -DAVIF_CODEC_AOM=ON -DAVIF_LOCAL_AOM=ON
+        -DAVIF_CODEC_DAV1D=ON -DAVIF_LOCAL_DAV1D=ON
         -DAVIF_LOCAL_LIBYUV=ON
         -DAVIF_LOCAL_LIBSHARPYUV=ON
         -DAVIF_BUILD_EXAMPLES=ON -DAVIF_BUILD_APPS=ON
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2a8b8cb..0aaea9d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -278,9 +278,18 @@
     set(AVIF_SRCS ${AVIF_SRCS} src/codec_dav1d.c)
 
     if(AVIF_LOCAL_DAV1D)
-        set(LIB_FILENAME "${CMAKE_CURRENT_SOURCE_DIR}/ext/dav1d/build/src/libdav1d.a")
+        set(LIB_FILENAME "${CMAKE_CURRENT_SOURCE_DIR}/ext/dav1d/build/src/libdav1d${AVIF_LIBRARY_SUFFIX}")
         if(NOT EXISTS "${LIB_FILENAME}")
-            message(FATAL_ERROR "libavif: ${LIB_FILENAME} is missing, bailing out")
+            if("${AVIF_LIBRARY_SUFFIX}" STREQUAL ".a")
+                message(FATAL_ERROR "libavif: ${LIB_FILENAME} is missing, bailing out")
+            else()
+                # On windows, meson will produce a libdav1d.a instead of the expected libdav1d.dll/.lib.
+                # See https://github.com/mesonbuild/meson/issues/8153.
+                set(LIB_FILENAME "${CMAKE_CURRENT_SOURCE_DIR}/ext/dav1d/build/src/libdav1d.a")
+                if(NOT EXISTS "${LIB_FILENAME}")
+                    message(FATAL_ERROR "libavif: ${LIB_FILENAME} (or libdav1d${AVIF_LIBRARY_SUFFIX}) is missing, bailing out")
+                endif()
+            endif()
         endif()
 
         set(AVIF_CODEC_INCLUDES