--- extern/binreloc/CMakeLists.txt.orig	2025-10-08 10:41:55 UTC
+++ extern/binreloc/CMakeLists.txt
@@ -7,7 +7,7 @@ set(INC_SYS
 )
 
 set(INC_SYS
-
+  PUBLIC include
 )
 
 set(SRC
@@ -23,3 +23,4 @@ blender_add_lib(extern_binreloc "${SRC}" "${INC}" "${I
 
 
 blender_add_lib(extern_binreloc "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
+add_library(bf::extern::binreloc ALIAS extern_binreloc)
--- extern/CMakeLists.txt.orig	2025-10-08 10:41:55 UTC
+++ extern/CMakeLists.txt
@@ -4,7 +4,9 @@ add_subdirectory(curve_fit_nd)
 
 # Libs that adhere to strict flags
 add_subdirectory(curve_fit_nd)
+add_subdirectory(fast_float)
 add_subdirectory(fmtlib)
+add_subdirectory(json)
 if(WITH_IO_FBX)
   add_subdirectory(ufbx)
 endif()
--- extern/fast_float/CMakeLists.txt.orig	2025-12-23 01:40:52 UTC
+++ extern/fast_float/CMakeLists.txt
@@ -0,0 +1,7 @@
+# SPDX-FileCopyrightText: 2023 Blender Foundation
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+add_library(extern_fast_float INTERFACE)
+target_include_directories(extern_fast_float SYSTEM INTERFACE ".")
+add_library(bf::extern::fast_float ALIAS extern_fast_float)
--- extern/json/CMakeLists.txt.orig	2025-12-23 01:40:52 UTC
+++ extern/json/CMakeLists.txt
@@ -0,0 +1,7 @@
+# SPDX-FileCopyrightText: 2023 Blender Foundation
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+add_library(extern_json INTERFACE)
+target_include_directories(extern_json SYSTEM INTERFACE "include")
+add_library(bf::extern::json ALIAS extern_json)
--- extern/mantaflow/CMakeLists.txt.orig	2025-10-08 10:41:55 UTC
+++ extern/mantaflow/CMakeLists.txt
@@ -68,8 +68,6 @@ set(INC_SYS
 endif()
 
 set(INC_SYS
-  ${PYTHON_INCLUDE_DIRS}
-  ${ZLIB_INCLUDE_DIRS}
 )
 
 if(WITH_MANTA_NUMPY AND WITH_PYTHON_NUMPY)
@@ -229,8 +227,8 @@ set(LIB
 set(LIB
   PRIVATE bf::dependencies::optional::openvdb
   PRIVATE bf::dependencies::optional::tbb
-  ${PYTHON_LINKFLAGS}
-  ${PYTHON_LIBRARIES}
+  PRIVATE bf::dependencies::optional::python
+  PRIVATE bf::dependencies::zlib
 )
 
 blender_add_lib(extern_mantaflow "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
--- extern/vulkan_memory_allocator/CMakeLists.txt.orig	2025-10-08 10:41:56 UTC
+++ extern/vulkan_memory_allocator/CMakeLists.txt
@@ -3,7 +3,7 @@ set(INC
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 set(INC
-  .
+  PUBLIC .
 )
 
 set(INC_SYS
@@ -20,6 +20,7 @@ blender_add_lib(extern_vulkan_memory_allocator "${SRC}
 )
 
 blender_add_lib(extern_vulkan_memory_allocator "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
+add_library(bf::extern::vulkan_memory_allocator ALIAS extern_vulkan_memory_allocator)
 
 if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
   target_compile_options(extern_vulkan_memory_allocator
--- extern/wcwidth/CMakeLists.txt.orig	2025-10-08 10:41:56 UTC
+++ extern/wcwidth/CMakeLists.txt
@@ -1,4 +1,4 @@
-# SPDX-FileCopyrightText: 2013 Blender Foundation
+# SPDX-FileCopyrightText: 2023 Blender Foundation
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
@@ -7,7 +7,7 @@ set(INC_SYS
 )
 
 set(INC_SYS
-
+  PUBLIC .
 )
 
 set(SRC
@@ -20,3 +20,4 @@ blender_add_lib(extern_wcwidth "${SRC}" "${INC}" "${IN
 )
 
 blender_add_lib(extern_wcwidth "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
+add_library(bf::extern::wcwidth ALIAS extern_wcwidth)
--- intern/cycles/app/CMakeLists.txt.orig	2025-10-08 10:41:56 UTC
+++ intern/cycles/app/CMakeLists.txt
@@ -35,10 +35,12 @@ if(WITH_CYCLES_STANDALONE AND WITH_CYCLES_STANDALONE_G
 
 if(WITH_CYCLES_STANDALONE AND WITH_CYCLES_STANDALONE_GUI)
   list(APPEND INC_SYS
-    ${Epoxy_INCLUDE_DIRS}
     ${SDL2_INCLUDE_DIRS}
   )
-  list(APPEND LIB ${Epoxy_LIBRARIES} ${SDL2_LIBRARIES})
+  list(APPEND LIB
+    bf::dependencies::optional::epoxy
+    ${SDL2_LIBRARIES}
+  )
 endif()
 
 if(WITH_USD)
@@ -47,13 +49,9 @@ if(WITH_USD)
     -D__TBB_show_deprecation_message_atomic_H
     -D__TBB_show_deprecation_message_task_H
   )
-
-  list(APPEND INC_SYS
-    ${USD_INCLUDE_DIRS}
-  )
   list(APPEND LIB
     cycles_hydra
-    ${USD_LIBRARIES}
+    bf::dependencies::optional::usd
   )
 endif()
 
--- intern/cycles/blender/CMakeLists.txt.orig	2025-10-08 10:41:56 UTC
+++ intern/cycles/blender/CMakeLists.txt
@@ -9,8 +9,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ${Epoxy_INCLUDE_DIRS}
-  ${PYTHON_INCLUDE_DIRS}
 )
 
 set(SRC
@@ -70,9 +68,10 @@ set(LIB
   cycles_subd
   cycles_util
 
-  ${Epoxy_LIBRARIES}
-  ${PYTHON_LINKFLAGS}
-  ${PYTHON_LIBRARIES}
+  bf::dependencies::optional::epoxy
+  bf::dependencies::optional::python
+  bf::dependencies::optional::openimagedenoise
+  bf::dependencies::optional::openvdb
 )
 
 set(ADDON_FILES
@@ -101,22 +100,6 @@ if(WITH_TBB)
 
 if(WITH_TBB)
   add_definitions(-DWITH_TBB)
-endif()
-
-if(WITH_OPENVDB)
-  list(APPEND INC
-    ../../openvdb
-  )
-  list(APPEND LIB
-    ${OPENVDB_LIBRARIES}
-  )
-endif()
-
-if(WITH_OPENIMAGEDENOISE)
-  add_definitions(-DWITH_OPENIMAGEDENOISE)
-  list(APPEND INC_SYS
-    ${OPENIMAGEDENOISE_INCLUDE_DIRS}
-  )
 endif()
 
 if(WITH_CYCLES_OSL)
--- intern/cycles/device/CMakeLists.txt.orig	2025-10-08 10:41:56 UTC
+++ intern/cycles/device/CMakeLists.txt
@@ -6,7 +6,8 @@ set(INC
   ..
 )
 
-set(INC_SYS )
+set(INC_SYS
+)
 
 if(WITH_CYCLES_DEVICE_OPTIX OR WITH_CYCLES_DEVICE_CUDA)
   if(NOT WITH_CUDA_DYNLOAD)
--- intern/cycles/hydra/CMakeLists.txt.orig	2025-10-08 10:41:56 UTC
+++ intern/cycles/hydra/CMakeLists.txt
@@ -10,16 +10,13 @@ set(INC_SYS
   ..
 )
 set(INC_SYS
-  ${USD_INCLUDE_DIRS}
-  ${Epoxy_INCLUDE_DIRS}
-  ${PYTHON_INCLUDE_DIRS}
 )
 
 set(LIB
   cycles_scene
   cycles_session
   cycles_graph
-  ${Epoxy_LIBRARIES}
+  bf::dependencies::optional::epoxy
   ${BOOST_PYTHON_LIBRARIES}
 )
 cycles_external_libraries_append(LIB)
@@ -105,7 +102,8 @@ target_link_libraries(cycles_hydra
 
 target_link_libraries(cycles_hydra
   PUBLIC
-  ${USD_LIBRARIES}
+  bf::dependencies::optional::usd
+  bf::dependencies::optional::python
   PRIVATE
   ${LIB}
 )
--- intern/cycles/kernel/CMakeLists.txt.orig	2025-10-27 12:26:33 UTC
+++ intern/cycles/kernel/CMakeLists.txt
@@ -439,12 +439,9 @@ add_executable(zstd_compress ../cmake/zstd_compress.cp
 
 # `Zstd` compressor for kernels.
 add_executable(zstd_compress ../cmake/zstd_compress.cpp)
-target_include_directories(zstd_compress SYSTEM PRIVATE ${ZSTD_INCLUDE_DIRS})
 
-target_link_libraries(zstd_compress ${ZSTD_LIBRARIES})
-if(DEFINED PTHREADS_LIBRARIES)
-  target_link_libraries(zstd_compress ${PTHREADS_LIBRARIES})
-endif()
+target_link_libraries(zstd_compress PRIVATE bf::dependencies::zstd)
+target_link_libraries(zstd_compress PRIVATE bf::dependencies::pthreads)
 
 if(NOT WITH_BLENDER)
   # For the Cycles standalone put libraries next to the Cycles application.
--- intern/cycles/scene/CMakeLists.txt.orig	2025-10-08 10:41:56 UTC
+++ intern/cycles/scene/CMakeLists.txt
@@ -112,11 +112,8 @@ if(WITH_OPENCOLORIO)
 
 if(WITH_OPENCOLORIO)
   add_definitions(-DWITH_OCIO)
-  list(APPEND INC_SYS
-    ${OPENCOLORIO_INCLUDE_DIRS}
-  )
   list(APPEND LIB
-    ${OPENCOLORIO_LIBRARIES}
+    bf::dependencies::optional::opencolorio
   )
   if(WIN32 AND NOT USD_OVERRIDE_OPENCOLORIO)
     add_definitions(-DOpenColorIO_SKIP_IMPORTS)
@@ -125,7 +122,7 @@ if(WITH_OPENVDB)
 
 if(WITH_OPENVDB)
   list(APPEND LIB
-    ${OPENVDB_LIBRARIES}
+    bf::dependencies::optional::openvdb
   )
 endif()
 
--- intern/cycles/test/CMakeLists.txt.orig	2025-10-08 10:41:56 UTC
+++ intern/cycles/test/CMakeLists.txt
@@ -60,6 +60,6 @@ if(WITH_GTESTS)
 endif()
 
 if(WITH_GTESTS)
-  set(INC_SYS )
+  set(INC_SYS)
   blender_add_test_suite_executable(cycles "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
 endif()
--- intern/ghost/CMakeLists.txt.orig	2025-10-08 10:41:56 UTC
+++ intern/ghost/CMakeLists.txt
@@ -80,11 +80,8 @@ if(WITH_OPENGL_BACKEND)
 endif()
 
 if(WITH_OPENGL_BACKEND)
-  list(APPEND INC_SYS
-    ${Epoxy_INCLUDE_DIRS}
-  )
   list(APPEND LIB
-    ${Epoxy_LIBRARIES}
+    bf::dependencies::optional::epoxy
   )
   add_definitions(-DWITH_OPENGL_BACKEND)
 endif()
@@ -95,15 +92,9 @@ if(WITH_VULKAN_BACKEND)
 
     intern/GHOST_ContextVK.hh
   )
-  list(APPEND INC
-    ../../extern/vulkan_memory_allocator/
-  )
-  list(APPEND INC_SYS
-    PUBLIC ${VULKAN_INCLUDE_DIRS}
-  )
-
   list(APPEND LIB
-    ${VULKAN_LIBRARIES}
+    PUBLIC bf::dependencies::optional::vulkan
+    bf::extern::vulkan_memory_allocator
   )
 
   add_definitions(-DWITH_VULKAN_BACKEND)
@@ -160,11 +151,8 @@ elseif(WITH_GHOST_SDL)
   )
   add_definitions(-DWITH_GHOST_SDL)
 
-  list(APPEND INC_SYS
-    ${SDL_INCLUDE_DIR}
-  )
   list(APPEND LIB
-    ${SDL_LIBRARY}
+    bf::dependencies::optional::sdl
   )
 elseif(APPLE AND NOT WITH_GHOST_X11)
   list(APPEND SRC
--- intern/guardedalloc/CMakeLists.txt.orig	2025-10-08 10:41:56 UTC
+++ intern/guardedalloc/CMakeLists.txt
@@ -40,18 +40,8 @@ set(LIB
 
 set(LIB
   PRIVATE bf::intern::atomic
+  PRIVATE bf::dependencies::pthreads
 )
-
-if(WIN32 AND NOT UNIX)
-  list(APPEND INC_SYS
-    ${PTHREADS_INC}
-  )
-  if(DEFINED PTHREADS_LIBRARIES)
-    list(APPEND LIB
-      ${PTHREADS_LIBRARIES}
-    )
-  endif()
-endif()
 
 if(WITH_MEM_JEMALLOC)
   add_definitions(-DWITH_MEM_JEMALLOC)
--- intern/libmv/CMakeLists.txt.orig	2025-10-08 10:41:56 UTC
+++ intern/libmv/CMakeLists.txt
@@ -31,8 +31,6 @@ if(WITH_LIBMV)
   if(WIN32)
     add_definitions(-D_USE_MATH_DEFINES)
   endif()
-  add_definitions(${GFLAGS_DEFINES})
-  add_definitions(${GLOG_DEFINES})
   add_definitions(-DLIBMV_GFLAGS_NAMESPACE=${GFLAGS_NAMESPACE})
 
   if(WITH_TBB)
@@ -46,8 +44,6 @@ if(WITH_LIBMV)
   list(APPEND INC_SYS
     ${GFLAGS_INCLUDE_DIRS}
     ${GLOG_INCLUDE_DIRS}
-    ${PNG_INCLUDE_DIRS}
-    ${ZLIB_INCLUDE_DIRS}
     ../../extern/ceres/include
     ../../extern/ceres/config
   )
@@ -55,12 +51,12 @@ if(WITH_LIBMV)
   list(APPEND LIB
     extern_ceres
     PUBLIC bf::dependencies::optional::tbb
+    PRIVATE bf::dependencies::zlib
 
-    ${GLOG_LIBRARIES}
-    ${GFLAGS_LIBRARIES}
-    ${PNG_LIBRARIES}
-
     PRIVATE bf::dependencies::eigen
+    PRIVATE bf::dependencies::gflags
+    PRIVATE bf::dependencies::glog
+    PRIVATE bf::dependencies::png
   )
 
   add_definitions(
--- intern/mantaflow/CMakeLists.txt.orig	2025-10-08 10:41:56 UTC
+++ intern/mantaflow/CMakeLists.txt
@@ -34,8 +34,6 @@ set(INC_SYS
   ../../extern/mantaflow/helper/util
   ../../extern/mantaflow/helper/pwrapper
   ../../extern/mantaflow/preprocessed
-  ${PYTHON_INCLUDE_DIRS}
-  ${ZLIB_INCLUDE_DIRS}
 )
 
 set(SRC
@@ -58,10 +56,8 @@ set(LIB
   PRIVATE bf::dependencies::optional::openvdb
   PRIVATE bf::dependencies::optional::tbb
   extern_mantaflow
-
-  ${PYTHON_LINKFLAGS}
-  ${PYTHON_LIBRARIES}
-  ${ZLIB_LIBRARIES}
+  PRIVATE bf::dependencies::optional::python
+  PRIVATE bf::dependencies::zlib
 )
 
 blender_add_lib(bf_intern_mantaflow "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
--- intern/opensubdiv/CMakeLists.txt.orig	2025-10-08 10:41:56 UTC
+++ intern/opensubdiv/CMakeLists.txt
@@ -32,11 +32,6 @@ if(WITH_OPENSUBDIV)
     endif()
   endmacro()
 
-  list(APPEND INC_SYS
-    ${OPENSUBDIV_INCLUDE_DIRS}
-    ${Epoxy_INCLUDE_DIRS}
-  )
-
   list(APPEND SRC
     # Base.
     internal/base/memory.h
@@ -76,8 +71,8 @@ if(WITH_OPENSUBDIV)
   )
 
   list(APPEND LIB
-    ${OPENSUBDIV_LIBRARIES}
-    ${Epoxy_LIBRARIES}
+    bf::dependencies::optional::opensubdiv
+    bf::dependencies::optional::epoxy
   )
 
   if(WIN32)
@@ -137,9 +132,6 @@ if(WITH_GTESTS AND WITH_OPENSUBDIV)
 # Tests.
 
 if(WITH_GTESTS AND WITH_OPENSUBDIV)
-  add_definitions(${GFLAGS_DEFINES})
-  add_definitions(${GLOG_DEFINES})
-
   set(TEST_SRC
     internal/topology/mesh_topology_test.cc
   )
--- source/blender/animrig/CMakeLists.txt.orig	2025-10-08 10:41:56 UTC
+++ source/blender/animrig/CMakeLists.txt
@@ -13,7 +13,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ../../../extern/fmtlib/include
 )
 
 set(SRC
@@ -62,6 +61,7 @@ set(LIB
 )
 
 set(LIB
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   bf::blenlib
   PRIVATE bf::blenloader
--- source/blender/blendthumb/CMakeLists.txt.orig	2025-10-08 10:41:56 UTC
+++ source/blender/blendthumb/CMakeLists.txt
@@ -103,7 +103,5 @@ elseif(UNIX)
   setup_platform_linker_flags(blender-thumbnailer)
   setup_platform_linker_libs(blender-thumbnailer)
   target_link_libraries(blender-thumbnailer PRIVATE bf_blenlib bf_blenloader_core)
-  if(DEFINED PTHREADS_LIBRARIES)
-    target_link_libraries(blender-thumbnailer PRIVATE ${PTHREADS_LIBRARIES})
-  endif()
+  target_link_libraries(blender-thumbnailer PRIVATE bf::dependencies::pthreads)
 endif()
--- source/blender/blenfont/CMakeLists.txt.orig	2025-10-08 10:41:56 UTC
+++ source/blender/blenfont/CMakeLists.txt
@@ -8,7 +8,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ${FREETYPE_INCLUDE_DIRS}
 )
 
 set(SRC
@@ -33,7 +32,7 @@ set(LIB
   PRIVATE bf::gpu
   PRIVATE bf::imbuf
   PRIVATE bf::intern::guardedalloc
-  ${FREETYPE_LIBRARIES} ${BROTLI_LIBRARIES}
+  PRIVATE bf::dependencies::freetype
 )
 
 if(WIN32)
--- source/blender/blenkernel/CMakeLists.txt.orig	2025-10-15 13:26:30 UTC
+++ source/blender/blenkernel/CMakeLists.txt
@@ -25,11 +25,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ${ZLIB_INCLUDE_DIRS}
-  ${ZSTD_INCLUDE_DIRS}
-
-  # For `vfontdata_freetype.cc`.
-  ${FREETYPE_INCLUDE_DIRS}
 )
 
 set(SRC
@@ -563,6 +558,7 @@ set(LIB
 )
 
 set(LIB
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::animrig
   PRIVATE bf::asset_system
   PRIVATE bf::blenfont
@@ -593,19 +589,19 @@ set(LIB
   PRIVATE bf::sequencer
   bf_shader_fx
   bf_simulation
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::extern::xxhash
   PRIVATE bf::intern::atomic
-  # For `vfontdata_freetype.c`.
-  ${FREETYPE_LIBRARIES} ${BROTLI_LIBRARIES}
+  PRIVATE bf::dependencies::zlib
+  PRIVATE bf::dependencies::zstd
+  PRIVATE bf::dependencies::freetype  # For `vfontdata_freetype.c`.
+  PRIVATE bf::dependencies::optional::fftw3
+  PRIVATE bf::dependencies::optional::opensubdiv
+  PRIVATE bf::dependencies::optional::audaspace
 )
 
 if(WITH_BINRELOC)
-  list(APPEND INC_SYS
-    ${BINRELOC_INCLUDE_DIRS}
-  )
   list(APPEND LIB
-    extern_binreloc
+    bf::extern::binreloc
   )
   add_definitions(-DWITH_BINRELOC)
 endif()
@@ -618,35 +614,19 @@ if(WITH_AUDASPACE)
 endif()
 
 if(WITH_AUDASPACE)
-  list(APPEND INC_SYS
-    ${AUDASPACE_C_INCLUDE_DIRS}
-  )
-  if(WITH_SYSTEM_AUDASPACE)
-    list(APPEND LIB
-      ${AUDASPACE_C_LIBRARIES}
-      ${AUDASPACE_PY_LIBRARIES}
-    )
-  endif()
-  add_definitions(-DWITH_AUDASPACE)
-
   if(WITH_RUBBERBAND)
     add_definitions(-DWITH_RUBBERBAND)
   endif()
 endif()
 
 if(WITH_BULLET)
-  list(APPEND INC_SYS
-    ${BULLET_INCLUDE_DIRS}
-  )
   list(APPEND INC
     ../../../intern/rigidbody
   )
   list(APPEND LIB
     bf_intern_rigidbody
-
-    ${BULLET_LIBRARIES}
+    bf::dependencies::optional::bullet
   )
-  add_definitions(-DWITH_BULLET)
 endif()
 
 if(WITH_IMAGE_OPENEXR)
@@ -718,16 +698,6 @@ endif()
   add_definitions(-DWITH_LIBMV)
 endif()
 
-if(WITH_FFTW3)
-  list(APPEND INC_SYS
-    ${FFTW3_INCLUDE_DIRS}
-  )
-  list(APPEND LIB
-    ${FFTW3_LIBRARIES}
-  )
-  add_definitions(-DFFTW3=1)
-endif()
-
 if(WITH_FREESTYLE)
   add_definitions(-DWITH_FREESTYLE)
 endif()
@@ -744,16 +714,6 @@ if(WITH_USD)
     ../io/usd
   )
   add_definitions(-DWITH_USD)
-endif()
-
-if(WITH_OPENSUBDIV)
-  list(APPEND INC_SYS
-    ${OPENSUBDIV_INCLUDE_DIRS}
-  )
-  list(APPEND LIB
-    ${OPENSUBDIV_LIBRARIES}
-  )
-  add_definitions(-DWITH_OPENSUBDIV)
 endif()
 
 if(WITH_QUADRIFLOW)
--- source/blender/blenlib/CMakeLists.txt.orig	2025-10-08 10:41:56 UTC
+++ source/blender/blenlib/CMakeLists.txt
@@ -12,11 +12,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ../../../extern/wcwidth
-  ../../../extern/json/include
-
-  ${ZLIB_INCLUDE_DIRS}
-  ${ZSTD_INCLUDE_DIRS}
 )
 
 set(SRC
@@ -424,16 +419,19 @@ set(LIB
 set(LIB
   PUBLIC bf::dna
   PRIVATE bf::extern::fmtlib
+  PRIVATE bf::extern::json
   PRIVATE bf::extern::xxhash
   bf_intern_eigen
   PRIVATE bf::intern::guardedalloc
-  extern_wcwidth
+  PRIVATE bf::extern::wcwidth
   PRIVATE bf::intern::atomic
-  PRIVATE extern_fmtlib
-  PUBLIC bf::dependencies::optional::tbb
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::dependencies::eigen
-  ${ZLIB_LIBRARIES}
-  ${ZSTD_LIBRARIES}
+  PUBLIC bf::dependencies::optional::tbb
+  PRIVATE bf::dependencies::zlib
+  PRIVATE bf::dependencies::zstd
+  PRIVATE bf::dependencies::optional::gmp
+  PRIVATE bf::dependencies::optional::fftw3
 )
 
 if(NOT WITH_PYTHON_MODULE)
@@ -446,28 +444,6 @@ if(WITH_MEM_VALGRIND)
 
 if(WITH_MEM_VALGRIND)
   add_definitions(-DWITH_MEM_VALGRIND)
-endif()
-
-if(WITH_GMP)
-  add_definitions(-DWITH_GMP)
-
-  list(APPEND INC_SYS
-    ${GMP_INCLUDE_DIRS}
-  )
-
-  list(APPEND LIB
-    ${GMP_LIBRARIES}
-  )
-endif()
-
-if(WITH_FFTW3)
-  list(APPEND INC_SYS
-    ${FFTW3_INCLUDE_DIRS}
-  )
-  list(APPEND LIB
-    ${FFTW3_LIBRARIES}
-  )
-  add_definitions(-DWITH_FFTW3)
 endif()
 
 if(WIN32)
--- source/blender/blenloader/CMakeLists.txt.orig	2025-10-08 10:42:36 UTC
+++ source/blender/blenloader/CMakeLists.txt
@@ -12,7 +12,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ${ZSTD_INCLUDE_DIRS}
 )
 
 set(SRC
@@ -55,6 +54,7 @@ set(LIB
 set(LIB
   PRIVATE bf::animrig
   PRIVATE bf::asset_system
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PUBLIC bf::blenloader_core
@@ -68,13 +68,13 @@ set(LIB
   PRIVATE bf::imbuf::movie
   PRIVATE bf::intern::clog
   PRIVATE bf::intern::guardedalloc
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::intern::memutil
   PRIVATE bf::nodes
   PRIVATE bf::render
   PRIVATE bf::sequencer
   PRIVATE bf::windowmanager
   PRIVATE bf::extern::xxhash
+  PRIVATE bf::dependencies::zstd
 )
 
 if(WITH_BUILDINFO)
@@ -115,14 +115,14 @@ if(WITH_GTESTS)
   )
   set(TEST_UTIL_INC_SYS
     ${INC_SYS}
-    ${GFLAGS_INCLUDE_DIRS}
-    ${GLOG_INCLUDE_DIRS}
     ${CMAKE_SOURCE_DIR}/extern/gtest/include
   )
   set(TEST_UTIL_LIB
     ${LIB}
     PRIVATE bf::blenfont
     bf_blenloader
+    PRIVATE bf::dependencies::gflags
+    PRIVATE bf::dependencies::glog
   )
   blender_add_lib(bf_blenloader_test_util "${TEST_UTIL_SRC}" "${TEST_UTIL_INC}" "${TEST_UTIL_INC_SYS}" "${TEST_UTIL_LIB}")
 
--- source/blender/blentranslation/msgfmt/CMakeLists.txt.orig	2025-10-08 10:41:56 UTC
+++ source/blender/blentranslation/msgfmt/CMakeLists.txt
@@ -20,7 +20,7 @@ set(LIB
 set(LIB
   PRIVATE PRIVATE bf::blenlib
   PRIVATE bf::intern::guardedalloc
-  ${ZLIB_LIBRARIES}
+  PRIVATE bf::dependencies::zlib
   ${PLATFORM_LINKLIBS})
 
 add_cc_flags_custom_test(msgfmt)
--- source/blender/bmesh/CMakeLists.txt.orig	2025-10-08 10:41:56 UTC
+++ source/blender/bmesh/CMakeLists.txt
@@ -9,7 +9,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-
 )
 
 set(SRC
@@ -173,35 +172,21 @@ set(LIB
   PRIVATE bf::intern::guardedalloc
   extern_rangetree
   PRIVATE bf::intern::atomic
+  PRIVATE bf::dependencies::optional::gmp
+  PRIVATE bf::dependencies::optional::tbb
+  PRIVATE bf::dependencies::optional::bullet
 )
 
 if(WITH_BULLET)
-  list(APPEND INC_SYS
-    ${BULLET_INCLUDE_DIRS}
+  list(APPEND INC
     ../../../intern/rigidbody
   )
-  list(APPEND LIB
-    ${BULLET_LIBRARIES}
-  )
-  add_definitions(-DWITH_BULLET)
 endif()
 
 if(WITH_FREESTYLE)
   add_definitions(-DWITH_FREESTYLE)
 endif()
 
-if(WITH_GMP)
-  add_definitions(-DWITH_GMP)
-
-  list(APPEND INC_SYS
-    ${GMP_INCLUDE_DIRS}
-  )
-
-  list(APPEND LIB
-    ${GMP_LIBRARIES}
-  )
-endif()
-
 if(WITH_TBB)
   if(WIN32)
     # TBB includes Windows.h which will define min/max macros
@@ -209,6 +194,7 @@ endif()
     add_definitions(-DNOMINMAX)
   endif()
 endif()
+
 
 blender_add_lib(bf_bmesh "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
 add_library(bf::bmesh ALIAS bf_bmesh)
--- source/blender/compositor/CMakeLists.txt.orig	2025-10-08 10:41:56 UTC
+++ source/blender/compositor/CMakeLists.txt
@@ -15,7 +15,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-
 )
 
 set(SRC
@@ -151,9 +150,9 @@ set(LIB
 )
 
 set(LIB
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blentranslation
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::functions
   PRIVATE bf::gpu
   PRIVATE bf::imbuf
@@ -164,6 +163,9 @@ set(LIB
   PRIVATE bf::intern::guardedalloc
   PRIVATE bf::intern::clog
   PRIVATE bf::dependencies::optional::opencolorio
+  PRIVATE bf::dependencies::optional::tbb
+  PRIVATE bf::dependencies::optional::fftw3
+  PRIVATE bf::dependencies::optional::openimagedenoise
 )
 
 set(GLSL_SRC
@@ -415,29 +417,6 @@ if(WITH_TBB)
     # that will collide with the STL versions.
     add_definitions(-DNOMINMAX)
   endif()
-endif()
-
-if(WITH_OPENIMAGEDENOISE)
-  add_definitions(-DWITH_OPENIMAGEDENOISE)
-  add_definitions(-DOIDN_STATIC_LIB)
-  list(APPEND INC_SYS
-    ${OPENIMAGEDENOISE_INCLUDE_DIRS}
-    ${TBB_INCLUDE_DIRS}
-  )
-  list(APPEND LIB
-    ${OPENIMAGEDENOISE_LIBRARIES}
-    ${TBB_LIBRARIES}
-  )
-endif()
-
-if(WITH_FFTW3)
-  list(APPEND INC_SYS
-    ${FFTW3_INCLUDE_DIRS}
-  )
-  list(APPEND LIB
-    ${FFTW3_LIBRARIES}
-  )
-  add_definitions(-DWITH_FFTW3)
 endif()
 
 blender_add_lib(bf_compositor "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
--- source/blender/draw/CMakeLists.txt.orig	2025-10-08 18:16:31 UTC
+++ source/blender/draw/CMakeLists.txt
@@ -292,6 +292,7 @@ set(LIB
 
 set(LIB
   PRIVATE bf::blenfont
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blenloader
@@ -309,7 +310,7 @@ set(LIB
   PRIVATE bf::render
   PRIVATE bf::windowmanager
   PRIVATE bf::intern::atomic
-  PRIVATE bf::extern::fmtlib
+  PRIVATE bf::dependencies::optional::opensubdiv
 )
 
 set(GLSL_SRC
@@ -865,13 +866,6 @@ endif()
   add_definitions(-DWITH_DRAW_DEBUG)
 endif()
 
-if(WITH_OPENSUBDIV)
-  add_definitions(-DWITH_OPENSUBDIV)
-  list(APPEND INC_SYS
-    ${OPENSUBDIV_INCLUDE_DIRS}
-  )
-endif()
-
 if(WITH_MOD_FLUID)
   list(APPEND INC
     ../../../intern/mantaflow/extern
@@ -898,8 +892,8 @@ if(WITH_GTESTS)
     endif()
     if(WITH_VULKAN_BACKEND)
       add_definitions(-DWITH_VULKAN_BACKEND)
-      list(APPEND INC_SYS
-        PUBLIC ${VULKAN_INCLUDE_DIRS}
+      list(APPEND LIB
+        bf::dependencies::optional::vulkan
       )
     endif()
   endif()
--- source/blender/editors/animation/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/editors/animation/CMakeLists.txt
@@ -13,7 +13,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ../../../../extern/fmtlib/include
 )
 
 set(SRC
@@ -42,6 +41,7 @@ set(LIB
 )
 
 set(LIB
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::animrig
   PRIVATE bf::blenlib
--- source/blender/editors/armature/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/editors/armature/CMakeLists.txt
@@ -40,13 +40,13 @@ set(LIB
   PRIVATE bf::animrig
   PRIVATE bf::asset_system
   PRIVATE bf::blenfont
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blenloader
   PRIVATE bf::blentranslation
   PRIVATE bf::depsgraph
   PRIVATE bf::dna
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::gpu
   PRIVATE bf::intern::clog
   PRIVATE bf::intern::guardedalloc
--- source/blender/editors/datafiles/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/editors/datafiles/CMakeLists.txt
@@ -8,7 +8,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-
 )
 
 # Part of the `blender` binary (sources for data-files are appended).
--- source/blender/editors/geometry/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/editors/geometry/CMakeLists.txt
@@ -24,6 +24,7 @@ set(LIB
 
 set(LIB
   PRIVATE bf::asset_system
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blentranslation
@@ -31,7 +32,6 @@ set(LIB
   PRIVATE bf::depsgraph
   PRIVATE bf::dna
   bf_editor_object
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::functions
   PRIVATE bf::intern::guardedalloc
   PRIVATE bf::nodes
--- source/blender/editors/grease_pencil/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/editors/grease_pencil/CMakeLists.txt
@@ -42,6 +42,7 @@ set(LIB
 )
 
 set(LIB
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::animrig
   PRIVATE bf::blenlib
@@ -56,8 +57,7 @@ set(LIB
   PRIVATE bf::intern::guardedalloc
   PRIVATE bf::intern::clog
   PRIVATE bf::windowmanager
-  extern_curve_fit_nd
-  extern_fmtlib
+  bf::extern::curve_fit_nd
 )
 
 blender_add_lib(bf_editor_grease_pencil "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
--- source/blender/editors/interface/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/editors/interface/CMakeLists.txt
@@ -115,6 +115,7 @@ set(LIB
 set(LIB
   PRIVATE bf::asset_system
   PRIVATE bf::blenfont
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blenloader
@@ -125,7 +126,6 @@ set(LIB
   PRIVATE bf::draw
   bf_editor_datafiles
   bf_editor_id_management
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::functions
   PRIVATE bf::gpu
   PRIVATE bf::imbuf
--- source/blender/editors/io/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/editors/io/CMakeLists.txt
@@ -17,7 +17,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-
 )
 
 set(SRC
@@ -47,13 +46,13 @@ set(LIB
 )
 
 set(LIB
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blentranslation
   PRIVATE bf::bmesh
   PRIVATE bf::depsgraph
   PRIVATE bf::dna
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::intern::guardedalloc
   PRIVATE bf::intern::clog
   PRIVATE bf::windowmanager
@@ -102,11 +101,9 @@ if(WITH_USD)
 endif()
 
 if(WITH_USD)
-  list(APPEND INC_SYS
-    ${USD_INCLUDE_DIRS}
-  )
   list(APPEND LIB
     bf_io_usd
+    bf::dependencies::optional::usd
   )
   add_definitions(-DWITH_USD)
 endif()
--- source/blender/editors/lattice/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/editors/lattice/CMakeLists.txt
@@ -8,7 +8,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-
 )
 
 set(SRC
--- source/blender/editors/mesh/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/editors/mesh/CMakeLists.txt
@@ -54,6 +54,7 @@ set(LIB
 
 set(LIB
   PRIVATE bf::blenfont
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blentranslation
@@ -61,7 +62,6 @@ set(LIB
   PRIVATE bf::depsgraph
   PRIVATE bf::dna
   PRIVATE bf::draw
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::functions
   PRIVATE bf::geometry
   PRIVATE bf::gpu
--- source/blender/editors/metaball/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/editors/metaball/CMakeLists.txt
@@ -8,7 +8,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-
 )
 
 set(SRC
--- source/blender/editors/object/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/editors/object/CMakeLists.txt
@@ -57,6 +57,7 @@ set(LIB
   PRIVATE bf::animrig
   PRIVATE bf::asset_system
   PRIVATE bf::blenfont
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blentranslation
@@ -66,7 +67,6 @@ set(LIB
   bf_editor_mesh
   bf_editor_metaball
   bf_editor_grease_pencil
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::functions
   PRIVATE bf::geometry
   PRIVATE bf::gpu
--- source/blender/editors/scene/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/editors/scene/CMakeLists.txt
@@ -8,7 +8,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-
 )
 
 set(SRC
--- source/blender/editors/screen/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/editors/screen/CMakeLists.txt
@@ -13,7 +13,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ../../../../extern/fmtlib/include
 )
 
 set(SRC
@@ -39,6 +38,7 @@ set(LIB
   PRIVATE bf::animrig
   PRIVATE bf::asset_system
   PRIVATE bf::blenfont
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blenloader
@@ -51,7 +51,6 @@ set(LIB
   PRIVATE bf::gpu
   PRIVATE bf::imbuf
   PRIVATE bf::intern::guardedalloc
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::sequencer
   PRIVATE bf::windowmanager
 )
--- source/blender/editors/sculpt_paint/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/editors/sculpt_paint/CMakeLists.txt
@@ -16,7 +16,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ${ZSTD_INCLUDE_DIRS}
 )
 
 set(SRC
@@ -170,6 +169,7 @@ set(LIB
 
 set(LIB
   PRIVATE bf::asset_system
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::animrig
   PRIVATE bf::blenlib
@@ -179,7 +179,6 @@ set(LIB
   PRIVATE bf::depsgraph
   PRIVATE bf::dna
   PRIVATE bf::draw
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::functions
   PRIVATE bf::geometry
   PRIVATE bf::gpu
@@ -190,17 +189,9 @@ set(LIB
   PRIVATE bf::nodes
   PRIVATE bf::render
   PRIVATE bf::windowmanager
+  PRIVATE bf::dependencies::zstd
+  PRIVATE bf::dependencies::optional::potrace
 )
-
-if(WITH_POTRACE)
-  list(APPEND INC
-    ${POTRACE_INCLUDE_DIRS}
-  )
-  list(APPEND LIB
-    ${POTRACE_LIBRARIES}
-  )
-  add_definitions(-DWITH_POTRACE)
-endif()
 
 if(WIN32)
   add_definitions(-DNOMINMAX)
--- source/blender/editors/sound/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/editors/sound/CMakeLists.txt
@@ -10,7 +10,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-
 )
 
 set(SRC
--- source/blender/editors/space_api/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/editors/space_api/CMakeLists.txt
@@ -9,7 +9,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-
 )
 
 set(SRC
--- source/blender/editors/space_file/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/editors/space_file/CMakeLists.txt
@@ -41,6 +41,7 @@ set(LIB
 set(LIB
   PRIVATE bf::asset_system
   PRIVATE bf::blenfont
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blenloader
@@ -51,7 +52,6 @@ set(LIB
   PRIVATE bf::imbuf::movie
   PRIVATE bf::intern::clog
   PRIVATE bf::intern::guardedalloc
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::intern::atomic
   PRIVATE bf::render
   PRIVATE bf::windowmanager
--- source/blender/editors/space_graph/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/editors/space_graph/CMakeLists.txt
@@ -30,35 +30,18 @@ set(LIB
 )
 
 set(LIB
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blenloader
   PRIVATE bf::blentranslation
   PRIVATE bf::depsgraph
   PRIVATE bf::dna
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::gpu
   PRIVATE bf::intern::guardedalloc
   PRIVATE bf::animrig
   PRIVATE bf::windowmanager
 )
-
-if(WITH_AUDASPACE)
-  list(APPEND LIB
-    bf_intern_audaspace
-  )
-  list(APPEND INC_SYS
-    ${AUDASPACE_C_INCLUDE_DIRS}
-  )
-  if(WITH_SYSTEM_AUDASPACE)
-    list(APPEND LIB
-      ${AUDASPACE_C_LIBRARIES}
-      ${AUDASPACE_PY_LIBRARIES}
-    )
-  endif()
-  add_definitions(-DWITH_AUDASPACE)
-endif()
-
 
 blender_add_lib(bf_editor_space_graph "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
 
--- source/blender/editors/space_info/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/editors/space_info/CMakeLists.txt
@@ -27,6 +27,7 @@ set(LIB
 
 set(LIB
   PRIVATE bf::blenfont
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blenloader
@@ -37,7 +38,6 @@ set(LIB
   PRIVATE bf::gpu
   PRIVATE bf::imbuf
   PRIVATE bf::intern::guardedalloc
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::windowmanager
 )
 
--- source/blender/editors/space_node/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/editors/space_node/CMakeLists.txt
@@ -54,6 +54,7 @@ set(LIB
   PRIVATE bf::animrig
   PRIVATE bf::asset_system
   PRIVATE bf::blenfont
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blenloader
@@ -68,7 +69,6 @@ set(LIB
   PRIVATE bf::imbuf
   PRIVATE bf::intern::guardedalloc
   bf_compositor
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::nodes
   PRIVATE bf::render
   PRIVATE bf::windowmanager
--- source/blender/editors/space_outliner/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/editors/space_outliner/CMakeLists.txt
@@ -11,7 +11,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ../../../../extern/fmtlib/include
 )
 
 set(SRC
@@ -130,6 +129,7 @@ set(LIB
 
 set(LIB
   PRIVATE bf::animrig
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blenloader
@@ -145,7 +145,6 @@ set(LIB
   PRIVATE bf::nodes
   PRIVATE bf::sequencer
   PRIVATE bf::windowmanager
-  extern_fmtlib
 )
 
 
--- source/blender/editors/space_sequencer/CMakeLists.txt.orig	2025-10-21 09:50:31 UTC
+++ source/blender/editors/space_sequencer/CMakeLists.txt
@@ -48,6 +48,7 @@ set(LIB
 set(LIB
   PRIVATE bf::asset_system
   PRIVATE bf::blenfont
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blenloader
@@ -62,25 +63,11 @@ set(LIB
   PRIVATE bf::imbuf::movie
   PRIVATE bf::intern::atomic
   PRIVATE bf::intern::guardedalloc
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::animrig
   PRIVATE bf::sequencer
   PRIVATE bf::windowmanager
+  PRIVATE bf::dependencies::optional::audaspace
 )
-
-if(WITH_AUDASPACE)
-  list(APPEND INC_SYS
-    ${AUDASPACE_C_INCLUDE_DIRS}
-  )
-  if(WITH_SYSTEM_AUDASPACE)
-    list(APPEND LIB
-      ${AUDASPACE_C_LIBRARIES}
-      ${AUDASPACE_PY_LIBRARIES}
-    )
-  endif()
-  add_definitions(-DWITH_AUDASPACE)
-endif()
-
 
 blender_add_lib(bf_editor_space_sequencer "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
 
--- source/blender/editors/space_spreadsheet/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/editors/space_spreadsheet/CMakeLists.txt
@@ -42,6 +42,7 @@ set(LIB
 
 set(LIB
   PRIVATE bf::blenfont
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blenloader
@@ -49,7 +50,6 @@ set(LIB
   PRIVATE bf::bmesh
   PRIVATE bf::depsgraph
   PRIVATE bf::dna
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::functions
   PRIVATE bf::gpu
   PRIVATE bf::intern::guardedalloc
--- source/blender/editors/space_userpref/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/editors/space_userpref/CMakeLists.txt
@@ -11,7 +11,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-
 )
 
 set(SRC
@@ -23,12 +22,12 @@ set(LIB
 
 set(LIB
   PRIVATE bf::asset_system
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blenloader
   PRIVATE bf::blentranslation
   PRIVATE bf::dna
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::intern::guardedalloc
   PRIVATE bf::windowmanager
 )
--- source/blender/editors/space_view3d/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/editors/space_view3d/CMakeLists.txt
@@ -74,6 +74,7 @@ set(LIB
   PRIVATE bf::animrig
   PRIVATE bf::asset_system
   PRIVATE bf::blenfont
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blenloader
@@ -85,7 +86,6 @@ set(LIB
   bf_editor_curves
   bf_editor_lattice
   bf_editor_mesh
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::functions
   PRIVATE bf::gpu
   PRIVATE bf::imbuf
--- source/blender/editors/uvedit/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/editors/uvedit/CMakeLists.txt
@@ -31,13 +31,13 @@ set(LIB
 )
 
 set(LIB
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blentranslation
   PRIVATE bf::bmesh
   PRIVATE bf::depsgraph
   PRIVATE bf::dna
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::geometry
   PRIVATE bf::gpu
   PRIVATE bf::intern::guardedalloc
--- source/blender/freestyle/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/freestyle/CMakeLists.txt
@@ -538,10 +538,8 @@ set(LIB
   PRIVATE bf::imbuf
   PRIVATE bf::intern::guardedalloc
   bf_python_mathutils
-
-  ${PYTHON_LINKFLAGS}
-  ${PYTHON_LIBRARIES}
   PRIVATE bf::render
+  PRIVATE bf::dependencies::optional::python
 )
 
 set(INC
@@ -556,7 +554,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ${PYTHON_INCLUDE_DIRS}
 )
 
 add_definitions(-DWITH_FREESTYLE)
@@ -568,12 +565,6 @@ if(WITH_PYTHON_SAFETY)
 if(WITH_PYTHON_SAFETY)
   # For bpy_rna.hh access.
   add_definitions(-DWITH_PYTHON_SAFETY)
-endif()
-
-if(WIN32)
-  list(APPEND INC_SYS
-    ${PTHREADS_INC}
-  )
 endif()
 
 if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
--- source/blender/geometry/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/geometry/CMakeLists.txt
@@ -104,6 +104,7 @@ set(LIB
 )
 
 set(LIB
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blentranslation
@@ -112,9 +113,9 @@ set(LIB
   PRIVATE bf::functions
   PRIVATE bf::intern::atomic
   PRIVATE bf::intern::guardedalloc
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::extern::curve_fit_nd
   PRIVATE bf::dependencies::optional::manifold
+  PRIVATE bf::dependencies::optional::gmp
 )
 
 if(WITH_UV_SLIM)
@@ -122,18 +123,6 @@ if(WITH_UV_SLIM)
     ../../../intern/slim
   )
   add_definitions(-DWITH_UV_SLIM)
-endif()
-
-if(WITH_GMP)
-  add_definitions(-DWITH_GMP)
-
-  list(APPEND INC_SYS
-    ${GMP_INCLUDE_DIRS}
-  )
-
-  list(APPEND LIB
-    ${GMP_LIBRARIES}
-  )
 endif()
 
 if(WITH_MANIFOLD)
--- source/blender/gpu/CMakeLists.txt.orig	2025-10-08 18:16:31 UTC
+++ source/blender/gpu/CMakeLists.txt
@@ -390,6 +390,7 @@ set(LIB
 )
 
 set(LIB
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::bmesh
@@ -399,21 +400,17 @@ set(LIB
   PRIVATE bf::intern::atomic
   PRIVATE bf::intern::clog
   PRIVATE bf::intern::guardedalloc
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::nodes
   PRIVATE bf::dependencies::optional::opencolorio
 )
 
 # Select Backend source based on availability
 if(WITH_OPENGL_BACKEND)
-  list(APPEND INC_SYS
-    ${Epoxy_INCLUDE_DIRS}
-  )
   list(APPEND SRC
     ${OPENGL_SRC}
   )
   list(APPEND LIB
-    ${Epoxy_LIBRARIES}
+    bf::dependencies::optional::epoxy
   )
   add_definitions(-DWITH_OPENGL_BACKEND)
 endif()
@@ -424,25 +421,14 @@ if(WITH_VULKAN_BACKEND)
 
 
 if(WITH_VULKAN_BACKEND)
-  list(APPEND INC
-    ../../../extern/vulkan_memory_allocator
-  )
-  list(APPEND INC_SYS
-    ${VULKAN_INCLUDE_DIRS}
-  )
-
-  list(APPEND INC_SYS
-    ${SHADERC_INCLUDE_DIRS}
-  )
   list(APPEND SRC
     ${VULKAN_SRC}
   )
-
   list(APPEND LIB
-    ${VULKAN_LIBRARIES}
-    ${SHADERC_LIBRARIES}
-    extern_vulkan_memory_allocator
+    PRIVATE bf::extern::vulkan_memory_allocator
     PRIVATE bf::extern::xxhash
+    PRIVATE bf::dependencies::optional::vulkan
+    PRIVATE bf::dependencies::optional::shaderc
   )
 
   add_definitions(-DWITH_VULKAN_BACKEND)
--- source/blender/ikplugin/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/ikplugin/CMakeLists.txt
@@ -9,7 +9,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-
 )
 
 set(SRC
@@ -46,8 +45,6 @@ if(WITH_IK_ITASC)
   )
   list(APPEND INC
     ../../../intern/itasc
-  )
-  list(APPEND INC_SYS
   )
   list(APPEND SRC
     intern/itasc_plugin.cc
--- source/blender/imbuf/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/imbuf/CMakeLists.txt
@@ -13,9 +13,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ${JPEG_INCLUDE_DIR}
-  ${ZLIB_INCLUDE_DIRS}
-  ${OPENIMAGEIO_INCLUDE_DIRS}
 )
 
 set(SRC
@@ -84,8 +81,10 @@ set(LIB
   PRIVATE bf::imbuf::opencolorio
   PRIVATE bf::extern::nanosvg
 
-  ${JPEG_LIBRARIES}
   PRIVATE bf::sequencer
+  PRIVATE bf::dependencies::zlib
+  PRIVATE bf::dependencies::openimageio
+  PRIVATE bf::dependencies::jpeg
 )
 
 if(WITH_IMAGE_OPENEXR)
@@ -99,27 +98,13 @@ endif()
   )
 endif()
 
-# OpenImageIO headers include `Imath` headers when there is no SSE support for
-# matrix operations. This depends on the specific architecture and compiler
-# flags, most reliable is to always include the `Imath` headers if we have them.
-if(DEFINED IMATH_INCLUDE_DIRS)
-  list(APPEND INC_SYS
-    ${IMATH_INCLUDE_DIRS}
-  )
-endif()
-
 if(WITH_IMAGE_OPENJPEG)
-  list(APPEND INC_SYS
-    ${OPENJPEG_INCLUDE_DIRS}
-  )
   list(APPEND SRC
     intern/format_jp2.cc
   )
   list(APPEND LIB
-    ${OPENJPEG_LIBRARIES}
+    bf::dependencies::optional::openjpeg
   )
-
-  add_definitions(-DWITH_IMAGE_OPENJPEG ${OPENJPEG_DEFINES})
 endif()
 
 if(WITH_IMAGE_CINEON)
@@ -136,13 +121,9 @@ if(WITH_IMAGE_WEBP)
   list(APPEND SRC
     intern/format_webp.cc
   )
-  list(APPEND INC_SYS
-    ${WEBP_INCLUDE_DIRS}
-  )
   list(APPEND LIB
-    ${WEBP_LIBRARIES}
+    bf::dependencies::optional::webp
   )
-  add_definitions(-DWITH_IMAGE_WEBP)
 endif()
 
 if(WIN32)
--- source/blender/imbuf/intern/cineon/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/imbuf/intern/cineon/CMakeLists.txt
@@ -9,7 +9,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-
 )
 
 set(SRC
--- source/blender/imbuf/intern/oiio/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/imbuf/intern/oiio/CMakeLists.txt
@@ -10,7 +10,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ${OPENIMAGEIO_INCLUDE_DIRS}
 )
 
 set(SRC
@@ -22,36 +21,14 @@ set(LIB
 )
 
 set(LIB
-  ${OPENIMAGEIO_LIBRARIES}
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::dna
   PRIVATE bf::intern::guardedalloc
   PRIVATE bf::intern::clog
+  PRIVATE bf::dependencies::openimageio
+  PRIVATE bf::dependencies::optional::openexr
+  PRIVATE bf::dependencies::optional::pugixml
 )
-
-if(WITH_PUGIXML)
-  list(APPEND LIB
-    ${PUGIXML_LIBRARIES}
-  )
-endif()
-
-if(WITH_IMAGE_OPENEXR)
-  list(APPEND INC_SYS
-    ${OPENEXR_INCLUDE_DIRS}
-  )
-  list(APPEND LIB
-    ${OPENEXR_LIBRARIES}
-  )
-endif()
-
-# OpenImageIO headers include `Imath` headers when there is no SSE support for
-# matrix operations. This depends on the specific architecture and compiler
-# flags, most reliable is to always include the `Imath` headers if we have them.
-if(DEFINED IMATH_INCLUDE_DIRS)
-  list(APPEND INC_SYS
-    ${IMATH_INCLUDE_DIRS}
-  )
-endif()
 
 blender_add_lib(bf_imbuf_openimageio "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
--- source/blender/imbuf/intern/openexr/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/imbuf/intern/openexr/CMakeLists.txt
@@ -10,7 +10,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-
 )
 
 set(SRC
@@ -27,11 +26,8 @@ if(WITH_IMAGE_OPENEXR)
 )
 
 if(WITH_IMAGE_OPENEXR)
-  list(APPEND INC_SYS
-    ${OPENEXR_INCLUDE_DIRS}
-  )
   list(APPEND LIB
-    ${OPENEXR_LIBRARIES}
+    bf::dependencies::optional::openexr
   )
   add_definitions(-DWITH_IMAGE_OPENEXR)
   if(WIN32)
--- source/blender/imbuf/movie/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/imbuf/movie/CMakeLists.txt
@@ -33,6 +33,8 @@ set(LIB
   PUBLIC  bf::imbuf
   PRIVATE bf::intern::guardedalloc
   PRIVATE bf::intern::clog
+  PRIVATE bf::dependencies::optional::ffmpeg
+  PRIVATE bf::dependencies::optional::audaspace
 )
 
 if(WITH_CODEC_FFMPEG)
@@ -40,26 +42,6 @@ if(WITH_CODEC_FFMPEG)
     intern/ffmpeg_swscale.cc
     intern/ffmpeg_swscale.hh
   )
-  list(APPEND INC_SYS
-    ${FFMPEG_INCLUDE_DIRS}
-  )
-  list(APPEND LIB
-    ${FFMPEG_LIBRARIES}
-    ${OPENJPEG_LIBRARIES}
-  )
-  add_definitions(-DWITH_FFMPEG)
-endif()
-
-if(WITH_AUDASPACE)
-  list(APPEND INC_SYS
-    ${AUDASPACE_C_INCLUDE_DIRS}
-  )
-  if(WITH_SYSTEM_AUDASPACE)
-    list(APPEND LIB
-      ${AUDASPACE_C_LIBRARIES}
-    )
-  endif()
-  add_definitions(-DWITH_AUDASPACE)
 endif()
 
 blender_add_lib(bf_imbuf_movie "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
--- source/blender/imbuf/opencolorio/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/imbuf/opencolorio/CMakeLists.txt
@@ -76,6 +76,7 @@ set(LIB
 )
 
 set(LIB
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenlib
   PRIVATE bf::blenkernel
   PRIVATE bf::dna
@@ -83,7 +84,6 @@ set(LIB
   PRIVATE bf::intern::guardedalloc
   PRIVATE bf::intern::clog
   PUBLIC bf::dependencies::optional::opencolorio
-  PRIVATE bf::extern::fmtlib
 )
 
 blender_add_lib(bf_imbuf_opencolorio "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
--- source/blender/io/alembic/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/io/alembic/CMakeLists.txt
@@ -11,8 +11,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ${ALEMBIC_INCLUDE_DIRS}
-  ${OPENEXR_INCLUDE_DIRS}
 )
 
 set(SRC
@@ -83,10 +81,10 @@ set(LIB
   PRIVATE bf::intern::clog
   PRIVATE bf::intern::guardedalloc
   bf_io_common
-
-  ${ALEMBIC_LIBRARIES}
-  ${OPENEXR_LIBRARIES}
   PRIVATE bf::windowmanager
+
+  PRIVATE bf::dependencies::optional::alembic
+  PRIVATE bf::dependencies::optional::openexr
 )
 
 blender_add_lib(bf_io_alembic "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
--- source/blender/io/common/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/io/common/CMakeLists.txt
@@ -8,7 +8,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ../../../../extern/fast_float
 )
 
 set(SRC
@@ -33,13 +32,14 @@ set(LIB
 )
 
 set(LIB
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::depsgraph
   PRIVATE bf::dna
   PRIVATE bf::intern::clog
   PRIVATE bf::intern::guardedalloc
-  PRIVATE bf::extern::fmtlib
+  PRIVATE bf::extern::fast_float
 )
 
 blender_add_lib(bf_io_common "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
--- source/blender/io/csv/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/io/csv/CMakeLists.txt
@@ -10,7 +10,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ../../../../extern/fast_float
 )
 
 set(SRC
@@ -27,6 +26,7 @@ set(LIB
   PRIVATE bf::intern::guardedalloc
   bf_io_common
   PRIVATE bf::extern::fmtlib
+  PRIVATE bf::extern::fast_float
 )
 
 blender_add_lib(bf_io_csv "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
--- source/blender/io/fbx/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/io/fbx/CMakeLists.txt
@@ -33,6 +33,7 @@ set(LIB
 
 set(LIB
   PRIVATE bf::animrig
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blentranslation
@@ -44,7 +45,6 @@ set(LIB
   PRIVATE bf::intern::clog
   PRIVATE bf::intern::guardedalloc
   bf_io_common
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::extern::ufbx
 )
 
--- source/blender/io/grease_pencil/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/io/grease_pencil/CMakeLists.txt
@@ -13,7 +13,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ../../../../extern/fmtlib/include
 )
 
 set(SRC
@@ -25,6 +24,7 @@ set(LIB
 )
 
 set(LIB
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blenloader
@@ -37,7 +37,8 @@ set(LIB
   PRIVATE bf::intern::clog
   PRIVATE bf::intern::guardedalloc
   PRIVATE bf::windowmanager
-  PRIVATE extern_fmtlib
+  PRIVATE bf::dependencies::optional::pugixml
+  PRIVATE bf::dependencies::optional::haru
   bf_io_common
 )
 
--- source/blender/io/ply/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/io/ply/CMakeLists.txt
@@ -12,7 +12,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ../../../../extern/fast_float
 )
 
 set(SRC
@@ -46,6 +45,7 @@ set(LIB
 )
 
 set(LIB
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::bmesh
@@ -55,7 +55,7 @@ set(LIB
   PRIVATE bf::intern::clog
   PRIVATE bf::intern::guardedalloc
   bf_io_common
-  PRIVATE bf::extern::fmtlib
+  PRIVATE bf::extern::fast_float
   PRIVATE bf::windowmanager
 )
 
--- source/blender/io/stl/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/io/stl/CMakeLists.txt
@@ -13,7 +13,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ../../../../extern/fast_float
 )
 
 set(SRC
@@ -37,6 +36,7 @@ set(LIB
 )
 
 set(LIB
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::bmesh
@@ -45,7 +45,7 @@ set(LIB
   PRIVATE bf::intern::clog
   PRIVATE bf::intern::guardedalloc
   bf_io_common
-  PRIVATE bf::extern::fmtlib
+  PRIVATE bf::extern::fast_float
   PRIVATE bf::windowmanager
 )
 
--- source/blender/io/usd/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/io/usd/CMakeLists.txt
@@ -53,11 +53,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ${USD_INCLUDE_DIRS}
-  ${BOOST_INCLUDE_DIR}
-  ${TBB_INCLUDE_DIRS}
-  ${PYTHON_INCLUDE_DIR}
-
 )
 
 set(SRC
@@ -198,6 +193,7 @@ set(LIB
 endif()
 
 set(LIB
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blenloader
@@ -210,16 +206,14 @@ set(LIB
   PRIVATE bf::intern::clog
   PRIVATE bf::intern::guardedalloc
   bf_io_common
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::nodes
   PRIVATE bf::windowmanager
 )
 
 list(APPEND LIB
-  ${BOOST_PYTHON_LIBRARIES}
-  ${PYTHON_LIBRARIES}
-  ${USD_LIBRARIES}
-  ${TBB_LIBRARIES}
+  bf::dependencies::optional::python
+  bf::dependencies::optional::usd
+  bf::dependencies::optional::tbb
 )
 
 if(WITH_MATERIALX)
--- source/blender/io/wavefront_obj/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/io/wavefront_obj/CMakeLists.txt
@@ -13,7 +13,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ../../../../extern/fast_float
 )
 
 set(SRC
@@ -47,6 +46,7 @@ set(LIB
 )
 
 set(LIB
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::bmesh
@@ -55,7 +55,7 @@ set(LIB
   PRIVATE bf::intern::clog
   PRIVATE bf::intern::guardedalloc
   bf_io_common
-  PRIVATE bf::extern::fmtlib
+  PRIVATE bf::extern::fast_float
   PRIVATE bf::nodes
   PRIVATE bf::windowmanager
 )
--- source/blender/makesdna/intern/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/makesdna/intern/CMakeLists.txt
@@ -11,14 +11,13 @@ set(INC_SYS
 )
 
 set(INC_SYS
-
 )
 
 set(LIB
   PRIVATE bf::intern::atomic
   PRIVATE bf::intern::guardedalloc
-  PRIVATE bf::dependencies::optional::tbb
   PRIVATE bf::extern::fmtlib
+  PRIVATE bf::dependencies::optional::tbb
 )
 
 add_definitions(-DWITH_DNA_GHASH)
@@ -90,13 +89,8 @@ target_link_libraries(makesdna ${LIB})
 blender_target_include_dirs(makesdna ${INC})
 blender_target_include_dirs_sys(makesdna ${INC_SYS})
 target_link_libraries(makesdna ${LIB})
+target_link_libraries(makesdna PRIVATE bf::dependencies::pthreads)
 
-if(WIN32 AND NOT UNIX)
-  if(DEFINED PTHREADS_LIBRARIES)
-    target_link_libraries(makesdna PRIVATE ${PTHREADS_LIBRARIES})
-  endif()
-endif()
-
 # Output dna.cc
 add_custom_command(
   OUTPUT
@@ -153,7 +147,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-
 )
 
 set(SRC
--- source/blender/makesrna/intern/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/makesrna/intern/CMakeLists.txt
@@ -273,7 +273,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ../../../../extern/fmtlib/include
 )
 
 if(WITH_CYCLES)
@@ -303,19 +302,6 @@ endif()
   add_definitions(-DWITH_IMAGE_WEBP)
 endif()
 
-if(WITH_AUDASPACE)
-  list(APPEND INC_SYS
-    ${AUDASPACE_C_INCLUDE_DIRS}
-  )
-  if(WITH_SYSTEM_AUDASPACE)
-    list(APPEND LIB
-      ${AUDASPACE_C_LIBRARIES}
-      ${AUDASPACE_PY_LIBRARIES}
-    )
-  endif()
-  add_definitions(-DWITH_AUDASPACE)
-endif()
-
 if(WITH_CODEC_FFMPEG)
   add_definitions(-DWITH_FFMPEG)
 endif()
@@ -425,14 +411,10 @@ target_link_libraries(makesrna PRIVATE bf_dna_blenlib)
 target_link_libraries(makesrna PRIVATE bf::intern::atomic)
 target_link_libraries(makesrna PRIVATE bf::intern::guardedalloc)
 target_link_libraries(makesrna PRIVATE bf_dna_blenlib)
+target_link_libraries(makesrna PRIVATE bf::extern::fmtlib)
 target_link_libraries(makesrna PRIVATE bf::dependencies::optional::tbb)
+target_link_libraries(makesrna PRIVATE bf::dependencies::pthreads)
 
-if(WIN32 AND NOT UNIX)
-  if(DEFINED PTHREADS_LIBRARIES)
-    target_link_libraries(makesrna PRIVATE ${PTHREADS_LIBRARIES})
-  endif()
-endif()
-
 # Output `rna_*_gen.cc`.
 # NOTE: (Linux only): with crashes try add this after COMMAND:
 # `valgrind --leak-check=full --track-origins=yes`
@@ -462,9 +444,6 @@ set(LIB
 set(LIB
   PRIVATE bf::animrig
   PRIVATE bf::dna
-  PRIVATE bf::dependencies::optional::openvdb
-  PRIVATE bf::dependencies::optional::tbb
-  PRIVATE extern_fmtlib
   bf_editor_space_api
 
   bf_editor_animation
@@ -486,6 +465,10 @@ set(LIB
   bf_editor_transform
   bf_editor_undo
   PRIVATE bf::intern::guardedalloc
+  PRIVATE bf::extern::fmtlib
+  PRIVATE bf::dependencies::optional::openvdb
+  PRIVATE bf::dependencies::optional::tbb
+  PRIVATE bf::dependencies::optional::audaspace
 )
 
 blender_add_lib(bf_rna "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
--- source/blender/modifiers/CMakeLists.txt.orig	2025-10-13 16:46:34 UTC
+++ source/blender/modifiers/CMakeLists.txt
@@ -15,7 +15,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ${ZLIB_INCLUDE_DIRS}
 )
 
 set(SRC
@@ -132,6 +131,7 @@ set(LIB
 
 set(LIB
   PRIVATE bf::blenfont
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blenloader
@@ -142,11 +142,13 @@ set(LIB
   PRIVATE bf::functions
   PRIVATE bf::geometry
   PRIVATE bf::intern::guardedalloc
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::extern::xxhash
   PRIVATE bf::nodes
   PRIVATE bf::render
   PRIVATE bf::windowmanager
+  PRIVATE bf::dependencies::zlib
+  PRIVATE bf::dependencies::optional::gmp
+  PRIVATE bf::dependencies::optional::bullet
 )
 
 if(WITH_ALEMBIC)
@@ -191,28 +193,9 @@ endif()
   add_definitions(-DWITH_OPENSUBDIV)
 endif()
 
-if(WITH_BULLET)
-  list(APPEND LIB
-    ${BULLET_LIBRARIES}
-  )
-  add_definitions(-DWITH_BULLET)
-endif()
-
 # To disable adaptive subdivision test in subdivision-surface UI without cycles.
 if(WITH_CYCLES)
   add_definitions(-DWITH_CYCLES)
-endif()
-
-if(WITH_GMP)
-  add_definitions(-DWITH_GMP)
-
-  list(APPEND INC_SYS
-    ${GMP_INCLUDE_DIRS}
-  )
-
-  list(APPEND LIB
-    ${GMP_LIBRARIES}
-  )
 endif()
 
 if(WITH_TBB)
--- source/blender/nodes/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/nodes/CMakeLists.txt
@@ -167,6 +167,7 @@ set(LIB
 )
 
 set(LIB
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blenloader
@@ -184,24 +185,14 @@ set(LIB
   bf_nodes_geometry
   bf_nodes_shader
   bf_nodes_texture
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::extern::xxhash
   PRIVATE bf::render
   PRIVATE bf::windowmanager
   PRIVATE bf::intern::clog
+  PRIVATE bf::dependencies::optional::gmp
+  PRIVATE bf::dependencies::optional::bullet
 )
 
-if(WITH_BULLET)
-  list(APPEND INC_SYS
-    ${BULLET_INCLUDE_DIRS}
-    ../../../intern/rigidbody
-  )
-  list(APPEND LIB
-    ${BULLET_LIBRARIES}
-  )
-  add_definitions(-DWITH_BULLET)
-endif()
-
 if(WITH_TBB)
   if(WIN32)
     # TBB includes Windows.h which will define min/max macros
@@ -220,18 +211,6 @@ if(WITH_OPENSUBDIV)
 
 if(WITH_OPENSUBDIV)
   add_definitions(-DWITH_OPENSUBDIV)
-endif()
-
-if(WITH_GMP)
-  add_definitions(-DWITH_GMP)
-
-  list(APPEND INC_SYS
-    ${GMP_INCLUDE_DIRS}
-  )
-
-  list(APPEND LIB
-    ${GMP_LIBRARIES}
-  )
 endif()
 
 blender_add_lib(bf_nodes "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
--- source/blender/nodes/composite/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/nodes/composite/CMakeLists.txt
@@ -115,6 +115,7 @@ set(LIB
 )
 
 set(LIB
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blentranslation
@@ -125,12 +126,14 @@ set(LIB
   PRIVATE bf::gpu
   PRIVATE bf::imbuf
   PRIVATE bf::intern::guardedalloc
-  PRIVATE bf::extern::fmtlib
   bf_compositor
   PRIVATE bf::render
   PRIVATE bf::windowmanager
-  PRIVATE bf::dependencies::optional::opencolorio
   PRIVATE bf::sequencer
+  PRIVATE bf::dependencies::optional::opencolorio
+  PRIVATE bf::dependencies::optional::tbb
+  PRIVATE bf::dependencies::optional::openimagedenoise
+  PRIVATE bf::dependencies::optional::fftw3
 )
 
 add_node_discovery(
@@ -146,30 +149,6 @@ if(WITH_IMAGE_OPENEXR)
 
 if(WITH_IMAGE_OPENEXR)
   add_definitions(-DWITH_IMAGE_OPENEXR)
-endif()
-
-if(WITH_OPENIMAGEDENOISE)
-  add_definitions(-DWITH_OPENIMAGEDENOISE)
-  add_definitions(-DOIDN_STATIC_LIB)
-  list(APPEND INC_SYS
-    ${OPENIMAGEDENOISE_INCLUDE_DIRS}
-    ${TBB_INCLUDE_DIRS}
-  )
-  list(APPEND LIB
-    ${OPENIMAGEDENOISE_LIBRARIES}
-    ${TBB_LIBRARIES}
-  )
-endif()
-
-
-if(WITH_FFTW3)
-  list(APPEND INC_SYS
-    ${FFTW3_INCLUDE_DIRS}
-  )
-  list(APPEND LIB
-    ${FFTW3_LIBRARIES}
-  )
-  add_definitions(-DWITH_FFTW3)
 endif()
 
 blender_add_lib(bf_nodes_composite "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
--- source/blender/nodes/function/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/nodes/function/CMakeLists.txt
@@ -14,7 +14,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ../../../../extern/fast_float
 )
 
 set(SRC
@@ -75,6 +74,7 @@ set(LIB
 
 set(LIB
   PRIVATE bf::blenfont
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blentranslation
@@ -84,7 +84,7 @@ set(LIB
   PRIVATE bf::imbuf
   PRIVATE bf::intern::guardedalloc
   PRIVATE bf::windowmanager
-  PRIVATE bf::extern::fmtlib
+  PRIVATE bf::extern::fast_float
 )
 
 add_node_discovery(
--- source/blender/nodes/geometry/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/nodes/geometry/CMakeLists.txt
@@ -287,6 +287,7 @@ set(LIB
 )
 
 set(LIB
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blenloader
@@ -305,10 +306,11 @@ set(LIB
   bf_io_common
   bf_io_csv
   PRIVATE bf::intern::atomic
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::extern::xxhash
   PRIVATE bf::render
   PRIVATE bf::windowmanager
+  PRIVATE bf::dependencies::optional::gmp
+  PRIVATE bf::dependencies::optional::bullet
 )
 
 if(WITH_IO_STL)
@@ -336,14 +338,9 @@ if(WITH_BULLET)
 endif()
 
 if(WITH_BULLET)
-  list(APPEND INC_SYS
-    ${BULLET_INCLUDE_DIRS}
+  list(APPEND INC
     ../../../../intern/rigidbody
   )
-  list(APPEND LIB
-    ${BULLET_LIBRARIES}
-  )
-  add_definitions(-DWITH_BULLET)
 endif()
 
 if(WITH_TBB)
@@ -360,18 +357,6 @@ if(WITH_OPENSUBDIV)
 
 if(WITH_OPENSUBDIV)
   add_definitions(-DWITH_OPENSUBDIV)
-endif()
-
-if(WITH_GMP)
-  add_definitions(-DWITH_GMP)
-
-  list(APPEND INC_SYS
-    ${GMP_INCLUDE_DIRS}
-  )
-
-  list(APPEND LIB
-    ${GMP_LIBRARIES}
-  )
 endif()
 
 add_node_discovery(
--- source/blender/nodes/shader/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/nodes/shader/CMakeLists.txt
@@ -159,9 +159,8 @@ if(WITH_MATERIALX)
 
   if(WITH_USD)
     add_definitions(-DWITH_USD)
-    list(APPEND INC_SYS
-      ${USD_INCLUDE_DIRS}
-      ${BOOST_INCLUDE_DIR}
+    list(APPEND LIB
+      bf::dependencies::optional::usd
     )
   endif()
 endif()
--- source/blender/python/bmesh/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/python/bmesh/CMakeLists.txt
@@ -7,7 +7,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ${PYTHON_INCLUDE_DIRS}
 )
 
 set(SRC
@@ -41,8 +40,7 @@ set(LIB
   PRIVATE bf::intern::guardedalloc
   bf_python_mathutils
 
-  ${PYTHON_LINKFLAGS}
-  ${PYTHON_LIBRARIES}
+  PRIVATE bf::dependencies::optional::python
 )
 
 if(WITH_FREESTYLE)
--- source/blender/python/generic/CMakeLists.txt.orig	2025-10-10 07:14:29 UTC
+++ source/blender/python/generic/CMakeLists.txt
@@ -8,7 +8,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ${PYTHON_INCLUDE_DIRS}
 )
 
 set(SRC
@@ -36,26 +35,15 @@ set(LIB
 )
 
 set(LIB
-  ${PYTHON_LINKFLAGS}
-  ${PYTHON_LIBRARIES}
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::dna
   PRIVATE bf::gpu
   PRIVATE bf::intern::clog
   PRIVATE bf::intern::guardedalloc
+  PRIVATE bf::dependencies::optional::python
+  PRIVATE bf::dependencies::optional::epoxy
 )
-
-# NOTE: use irrespective of `WITH_OPENGL_BACKEND` as the `bgl` module uses this for constants.
-list(APPEND INC_SYS
-  ${Epoxy_INCLUDE_DIRS}
-)
-
-if(WITH_OPENGL_BACKEND)
-  list(APPEND LIB
-    ${Epoxy_LIBRARIES}
-  )
-endif()
 
 if(WITH_PYTHON_MODULE)
   add_definitions(-DWITH_PYTHON_MODULE)
--- source/blender/python/gpu/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/python/gpu/CMakeLists.txt
@@ -8,7 +8,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ${PYTHON_INCLUDE_DIRS}
 )
 
 set(SRC
@@ -55,22 +54,18 @@ set(LIB
 )
 
 set(LIB
-  ${PYTHON_LINKFLAGS}
-  ${PYTHON_LIBRARIES}
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::dna
   PRIVATE bf::gpu
   PRIVATE bf::imbuf
   PRIVATE bf::intern::guardedalloc
+  PRIVATE bf::dependencies::optional::python
 )
 
 if(WITH_OPENGL_BACKEND)
-  list(APPEND INC_SYS
-    ${Epoxy_INCLUDE_DIRS}
-  )
   list(APPEND LIB
-    ${Epoxy_LIBRARIES}
+    bf::dependencies::optional::epoxy
   )
 endif()
 
--- source/blender/python/intern/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/python/intern/CMakeLists.txt
@@ -13,7 +13,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ${PYTHON_INCLUDE_DIRS}
 )
 
 set(SRC
@@ -133,10 +132,11 @@ set(LIB
   bf_python_gpu
   PRIVATE bf::imbuf::opencolorio
   PRIVATE bf::nodes
-
-  ${PYTHON_LINKFLAGS}
-  ${PYTHON_LIBRARIES}
   PRIVATE bf::windowmanager
+
+  PRIVATE bf::dependencies::optional::python
+  PRIVATE bf::dependencies::optional::ffmpeg
+  PRIVATE bf::dependencies::optional::sdl
 )
 
 # Only to check if `buildinfo` is available.
@@ -190,16 +190,6 @@ endif()
   add_definitions(-DWITH_BULLET)
 endif()
 
-if(WITH_CODEC_FFMPEG)
-  list(APPEND INC_SYS
-    ${FFMPEG_INCLUDE_DIRS}
-  )
-  list(APPEND LIB
-    ${FFMPEG_LIBRARIES}
-  )
-  add_definitions(-DWITH_FFMPEG)
-endif()
-
 if(WITH_CODEC_SNDFILE)
   add_definitions(-DWITH_SNDFILE)
 endif()
@@ -259,16 +249,6 @@ if(WITH_OPENSUBDIV)
 
 if(WITH_OPENSUBDIV)
   add_definitions(-DWITH_OPENSUBDIV)
-endif()
-
-if(WITH_SDL)
-  list(APPEND INC_SYS
-    ${SDL_INCLUDE_DIR}
-  )
-  list(APPEND LIB
-    ${SDL_LIBRARY}
-  )
-  add_definitions(-DWITH_SDL)
 endif()
 
 if(WITH_JACK)
--- source/blender/python/mathutils/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/python/mathutils/CMakeLists.txt
@@ -7,7 +7,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ${PYTHON_INCLUDE_DIRS}
 )
 
 set(SRC
@@ -46,8 +45,7 @@ set(LIB
   PRIVATE bf::intern::guardedalloc
   bf_python_ext
 
-  ${PYTHON_LINKFLAGS}
-  ${PYTHON_LIBRARIES}
+  PRIVATE bf::dependencies::optional::python
 )
 
 
--- source/blender/render/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/render/CMakeLists.txt
@@ -52,13 +52,13 @@ set(LIB
 )
 
 set(LIB
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blentranslation
   PRIVATE bf::depsgraph
   PRIVATE bf::dna
   PRIVATE bf::draw
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::gpu
   PRIVATE bf::imbuf
   PRIVATE bf::imbuf::movie
--- source/blender/render/hydra/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/render/hydra/CMakeLists.txt
@@ -41,6 +41,10 @@ endif()
   endif()
 endif()
 
+if(WITH_OPENGL_BACKEND)
+  add_definitions(-DWITH_OPENGL_BACKEND)
+endif()
+
 set(INC
   ../../../../intern/guardedalloc
   ../../blenlib
@@ -55,19 +59,9 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ${PYTHON_INCLUDE_DIRS}
-  ${Epoxy_INCLUDE_DIRS}
-  ${USD_INCLUDE_DIRS}
-  ${BOOST_INCLUDE_DIR}
-  ${TBB_INCLUDE_DIRS}
-  ${GFLAGS_INCLUDE_DIRS}
 )
 
 set(LIB
-  ${Epoxy_LIBRARIES}
-  ${PYTHON_LIBRARIES}
-  ${USD_LIBRARIES}
-  ${TBB_LIBRARIES}
   PRIVATE bf::blenkernel
   PRIVATE bf::depsgraph
   PRIVATE bf::gpu
@@ -75,6 +69,12 @@ set(LIB
   PRIVATE bf::intern::clog
   bf_io_usd
   PRIVATE bf::nodes
+  PRIVATE bf::dependencies::optional::python
+  PRIVATE bf::dependencies::optional::usd
+  PRIVATE bf::dependencies::optional::tbb
+  PRIVATE bf::dependencies::optional::epoxy
+  PRIVATE bf::dependencies::eigen
+  PRIVATE bf::dependencies::gflags
   PRIVATE bf::dependencies::eigen
 )
 
--- source/blender/sequencer/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/sequencer/CMakeLists.txt
@@ -17,7 +17,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-
 )
 
 set(SRC
@@ -110,13 +109,13 @@ set(LIB
 
 set(LIB
   PRIVATE bf::blenfont
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blenloader
   PRIVATE bf::blentranslation
   PRIVATE bf::depsgraph
   PRIVATE bf::dna
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::gpu
   PRIVATE bf::imbuf
   PRIVATE bf::imbuf::movie
@@ -127,20 +126,10 @@ set(LIB
   PRIVATE bf::render
   PRIVATE bf::windowmanager
   bf_compositor
+  PRIVATE bf::dependencies::optional::audaspace
 )
 
 if(WITH_AUDASPACE)
-  list(APPEND INC_SYS
-    ${AUDASPACE_C_INCLUDE_DIRS}
-  )
-  if(WITH_SYSTEM_AUDASPACE)
-    list(APPEND LIB
-      ${AUDASPACE_C_LIBRARIES}
-      ${AUDASPACE_PY_LIBRARIES}
-    )
-  endif()
-  add_definitions(-DWITH_AUDASPACE)
-
   if(WITH_FFTW3)
     add_definitions(-DWITH_CONVOLUTION)
   endif()
--- source/blender/shader_fx/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/shader_fx/CMakeLists.txt
@@ -13,7 +13,6 @@ set(INC_SYS
 )
 
 set(INC_SYS
-  ${ZLIB_INCLUDE_DIRS}
 )
 
 set(SRC
@@ -46,6 +45,7 @@ set(LIB
   PRIVATE bf::intern::guardedalloc
   PRIVATE bf::render
   PRIVATE bf::windowmanager
+  PRIVATE bf::dependencies::zlib
 )
 
 
--- source/blender/windowmanager/CMakeLists.txt.orig	2025-10-08 10:41:57 UTC
+++ source/blender/windowmanager/CMakeLists.txt
@@ -90,6 +90,7 @@ set(LIB
 set(LIB
   PRIVATE bf::asset_system
   PRIVATE bf::blenfont
+  PRIVATE bf::extern::fmtlib
   PRIVATE bf::blenkernel
   PRIVATE bf::blenlib
   PRIVATE bf::blenloader
@@ -100,7 +101,6 @@ set(LIB
   PRIVATE bf::draw
   bf_editor_screen
   bf_editor_undo
-  PRIVATE bf::extern::fmtlib
   PRIVATE bf::gpu
   PRIVATE bf::imbuf
   PRIVATE bf::imbuf::movie
@@ -112,6 +112,8 @@ set(LIB
   PRIVATE bf::sequencer
   bf_intern_ghost
   bf_compositor
+  PRIVATE bf::dependencies::optional::ffmpeg
+  PRIVATE bf::dependencies::optional::audaspace
 )
 
 if(WIN32)
@@ -128,19 +130,6 @@ endif()
   )
 endif()
 
-if(WITH_AUDASPACE)
-  list(APPEND INC_SYS
-    ${AUDASPACE_C_INCLUDE_DIRS}
-  )
-  if(WITH_SYSTEM_AUDASPACE)
-    list(APPEND LIB
-      ${AUDASPACE_C_LIBRARIES}
-      ${AUDASPACE_PY_LIBRARIES}
-    )
-  endif()
-  add_definitions(-DWITH_AUDASPACE)
-endif()
-
 if(WITH_CYCLES)
   add_definitions(-DWITH_CYCLES)
 endif()
@@ -151,16 +140,6 @@ if(WITH_VULKAN_BACKEND)
 
 if(WITH_VULKAN_BACKEND)
   add_definitions(-DWITH_VULKAN_BACKEND)
-endif()
-
-if(WITH_CODEC_FFMPEG)
-  list(APPEND INC_SYS
-    ${FFMPEG_INCLUDE_DIRS}
-  )
-  list(APPEND LIB
-    ${FFMPEG_LIBRARIES}
-  )
-  add_definitions(-DWITH_FFMPEG)
 endif()
 
 if(WITH_HEADLESS)
--- build_files/cmake/macros.cmake.orig	2025-10-08 10:41:55 UTC
+++ build_files/cmake/macros.cmake
@@ -378,6 +378,7 @@ function(blender_link_libraries
   #
   # Use: "optimized libfoo optimized libbar debug libfoo_d debug libbar_d"
   # NOT: "optimized libfoo libbar debug libfoo_d libbar_d"
+  set(dependency_libraries)
   if(NOT "${library_deps}" STREQUAL "")
     set(next_library_mode "")
     set(next_interface_mode "PRIVATE")
@@ -392,16 +393,25 @@ function(blender_link_libraries
         set(next_interface_mode "${library}")
       else()
         if("${next_library_mode}" STREQUAL "optimized")
-          target_link_libraries(${target} ${next_interface_mode} optimized ${library})
+          set(link_library ${next_interface_mode} optimized ${library})
         elseif("${next_library_mode}" STREQUAL "debug")
-          target_link_libraries(${target} ${next_interface_mode} debug ${library})
+          set(link_library ${next_interface_mode} debug ${library})
         else()
-          target_link_libraries(${target} ${next_interface_mode} ${library})
+          set(link_library ${next_interface_mode} ${library})
         endif()
         set(next_library_mode "")
+        if(library MATCHES "^bf::dependencies")
+          list(APPEND dependency_libraries ${link_library})
+        else()
+          target_link_libraries(${target} ${link_library})
+        endif()
       endif()
     endforeach()
   endif()
+
+  # Ensure external dependencies are last in the list of libraries, so that bf::extern include
+  # directories have priority over system library include directories that might conflict.
+  target_link_libraries(${target} ${dependency_libraries})
 endfunction()
 
 function(blender_add_lib__impl
--- build_files/cmake/platform/dependency_targets.cmake.orig	2025-10-08 10:41:55 UTC
+++ build_files/cmake/platform/dependency_targets.cmake
@@ -23,6 +23,9 @@ endif()
   target_link_libraries(bf_deps_optional_tbb INTERFACE ${TBB_LIBRARIES})
 endif()
 
+# -----------------------------------------------------------------------------
+# Configure Manifold
+
 add_library(bf_deps_optional_manifold INTERFACE)
 add_library(bf::dependencies::optional::manifold ALIAS bf_deps_optional_manifold)
 if(WITH_MANIFOLD)
@@ -61,7 +64,6 @@ endif()
   )
 endif()
 
-
 # -----------------------------------------------------------------------------
 # Configure Eigen
 
@@ -86,4 +88,346 @@ if(WITH_OPENCOLORIO)
   target_compile_definitions(bf_deps_optional_opencolorio INTERFACE WITH_OPENCOLORIO)
   target_include_directories(bf_deps_optional_opencolorio SYSTEM INTERFACE ${OPENCOLORIO_INCLUDE_DIRS})
   target_link_libraries(bf_deps_optional_opencolorio INTERFACE ${OPENCOLORIO_LIBRARIES})
+endif()
+
+# -----------------------------------------------------------------------------
+# Configure Zlib
+
+add_library(bf_deps_zlib INTERFACE)
+add_library(bf::dependencies::zlib ALIAS bf_deps_zlib)
+
+target_include_directories(bf_deps_zlib SYSTEM INTERFACE ${ZLIB_INCLUDE_DIRS})
+target_link_libraries(bf_deps_zlib INTERFACE ${ZLIB_LIBRARIES})
+
+# -----------------------------------------------------------------------------
+# Configure ZSTD
+
+add_library(bf_deps_zstd INTERFACE)
+add_library(bf::dependencies::zstd ALIAS bf_deps_zstd)
+
+target_include_directories(bf_deps_zstd SYSTEM INTERFACE ${ZSTD_INCLUDE_DIRS})
+target_link_libraries(bf_deps_zstd INTERFACE ${ZSTD_LIBRARIES})
+
+# -----------------------------------------------------------------------------
+# Configure Freetype
+
+add_library(bf_deps_freetype INTERFACE)
+add_library(bf::dependencies::freetype ALIAS bf_deps_freetype)
+
+target_include_directories(bf_deps_freetype SYSTEM INTERFACE ${FREETYPE_INCLUDE_DIRS})
+target_link_libraries(bf_deps_freetype INTERFACE ${FREETYPE_LIBRARIES} ${BROTLI_LIBRARIES})
+
+# -----------------------------------------------------------------------------
+# Configure JPEG
+
+add_library(bf_deps_jpeg INTERFACE)
+add_library(bf::dependencies::jpeg ALIAS bf_deps_jpeg)
+
+target_include_directories(bf_deps_jpeg SYSTEM INTERFACE ${JPEG_INCLUDE_DIR})
+target_link_libraries(bf_deps_jpeg INTERFACE ${JPEG_LIBRARIES})
+
+# -----------------------------------------------------------------------------
+# Configure PNG
+
+add_library(bf_deps_png INTERFACE)
+add_library(bf::dependencies::png ALIAS bf_deps_png)
+
+target_include_directories(bf_deps_png SYSTEM INTERFACE ${PNG_INCLUDE_DIRS})
+target_link_libraries(bf_deps_png INTERFACE ${PNG_LIBRARIES})
+
+# -----------------------------------------------------------------------------
+# Configure OpenImageIO
+
+add_library(bf_deps_openimageio INTERFACE)
+add_library(bf::dependencies::openimageio ALIAS bf_deps_openimageio)
+
+target_include_directories(bf_deps_openimageio SYSTEM INTERFACE ${OPENIMAGEIO_INCLUDE_DIRS})
+target_link_libraries(bf_deps_openimageio INTERFACE ${OPENIMAGEIO_LIBRARIES})
+
+# OpenImageIO headers include `Imath` headers when there is no SSE support for
+# matrix operations. This depends on the specific architecture and compiler
+# flags, most reliable is to always include the `Imath` headers if we have them.
+if(DEFINED IMATH_INCLUDE_DIRS)
+  target_include_directories(bf_deps_openimageio SYSTEM INTERFACE ${IMATH_INCLUDE_DIRS})
+endif()
+
+# -----------------------------------------------------------------------------
+# Configure USD
+
+add_library(bf_deps_optional_usd INTERFACE)
+add_library(bf::dependencies::optional::usd ALIAS bf_deps_optional_usd)
+
+if(WITH_USD)
+  target_compile_definitions(bf_deps_optional_usd INTERFACE WITH_USD)
+  target_include_directories(bf_deps_optional_usd SYSTEM INTERFACE ${BOOST_INCLUDE_DIR} ${USD_INCLUDE_DIRS})
+  target_link_libraries(bf_deps_optional_usd INTERFACE ${USD_LIBRARIES})
+endif()
+
+# -----------------------------------------------------------------------------
+# Configure Alembic
+
+add_library(bf_deps_optional_alembic INTERFACE)
+add_library(bf::dependencies::optional::alembic ALIAS bf_deps_optional_alembic)
+
+if(WITH_ALEMBIC)
+  target_compile_definitions(bf_deps_optional_alembic INTERFACE WITH_ALEMBIC)
+  target_include_directories(bf_deps_optional_alembic SYSTEM INTERFACE ${ALEMBIC_INCLUDE_DIRS})
+  target_link_libraries(bf_deps_optional_alembic INTERFACE ${ALEMBIC_LIBRARIES})
+endif()
+
+# -----------------------------------------------------------------------------
+# Configure OpenSubdiv
+
+add_library(bf_deps_optional_opensubdiv INTERFACE)
+add_library(bf::dependencies::optional::opensubdiv ALIAS bf_deps_optional_opensubdiv)
+
+if(WITH_OPENSUBDIV)
+  target_compile_definitions(bf_deps_optional_opensubdiv INTERFACE WITH_OPENSUBDIV)
+  target_include_directories(bf_deps_optional_opensubdiv SYSTEM INTERFACE ${OPENSUBDIV_INCLUDE_DIRS})
+  target_link_libraries(bf_deps_optional_opensubdiv INTERFACE ${OPENSUBDIV_LIBRARIES})
+endif()
+
+# -----------------------------------------------------------------------------
+# Configure OpenEXR
+
+add_library(bf_deps_optional_openexr INTERFACE)
+add_library(bf::dependencies::optional::openexr ALIAS bf_deps_optional_openexr)
+
+if(WITH_IMAGE_OPENEXR)
+  target_compile_definitions(bf_deps_optional_openexr INTERFACE WITH_IMAGE_OPENEXR)
+  target_include_directories(bf_deps_optional_openexr SYSTEM INTERFACE ${OPENEXR_INCLUDE_DIRS})
+  target_link_libraries(bf_deps_optional_openexr INTERFACE ${OPENEXR_LIBRARIES})
+endif()
+
+# -----------------------------------------------------------------------------
+# Configure WebP
+
+add_library(bf_deps_optional_webp INTERFACE)
+add_library(bf::dependencies::optional::webp ALIAS bf_deps_optional_webp)
+
+if(WITH_IMAGE_WEBP)
+  target_compile_definitions(bf_deps_optional_webp INTERFACE WITH_IMAGE_WEBP)
+  target_include_directories(bf_deps_optional_webp SYSTEM INTERFACE ${WEBP_INCLUDE_DIRS})
+  target_link_libraries(bf_deps_optional_webp INTERFACE ${WEBP_LIBRARIES})
+endif()
+
+# -----------------------------------------------------------------------------
+# Configure OpenJPEG
+
+add_library(bf_deps_optional_openjpeg INTERFACE)
+add_library(bf::dependencies::optional::openjpeg ALIAS bf_deps_optional_openjpeg)
+
+if(WITH_IMAGE_OPENJPEG)
+  target_compile_definitions(bf_deps_optional_openjpeg INTERFACE WITH_IMAGE_OPENJPEG)
+  target_compile_definitions(bf_deps_optional_openjpeg INTERFACE ${OPENJPEG_DEFINES})
+  target_include_directories(bf_deps_optional_openjpeg SYSTEM INTERFACE ${OPENJPEG_INCLUDE_DIRS})
+  target_link_libraries(bf_deps_optional_openjpeg INTERFACE ${OPENJPEG_LIBRARIES})
+endif()
+
+# -----------------------------------------------------------------------------
+# Configure SDL
+
+add_library(bf_deps_optional_sdl INTERFACE)
+add_library(bf::dependencies::optional::sdl ALIAS bf_deps_optional_sdl)
+
+if(WITH_SDL)
+  target_compile_definitions(bf_deps_optional_sdl INTERFACE WITH_SDL)
+  target_include_directories(bf_deps_optional_sdl SYSTEM INTERFACE ${SDL_INCLUDE_DIR})
+  target_link_libraries(bf_deps_optional_sdl INTERFACE ${SDL_LIBRARY})
+endif()
+
+# -----------------------------------------------------------------------------
+# Configure FFmpeg
+
+add_library(bf_deps_optional_ffmpeg INTERFACE)
+add_library(bf::dependencies::optional::ffmpeg ALIAS bf_deps_optional_ffmpeg)
+
+if(WITH_CODEC_FFMPEG)
+  target_compile_definitions(bf_deps_optional_ffmpeg INTERFACE WITH_FFMPEG)
+  target_include_directories(bf_deps_optional_ffmpeg SYSTEM INTERFACE ${FFMPEG_INCLUDE_DIRS})
+  target_link_libraries(bf_deps_optional_ffmpeg INTERFACE ${FFMPEG_LIBRARIES})
+  if(WITH_IMAGE_OPENJPEG)
+    target_link_libraries(bf_deps_optional_ffmpeg INTERFACE ${OPENJPEG_LIBRARIES})
+  endif()
+endif()
+
+# -----------------------------------------------------------------------------
+# Configure Python
+
+add_library(bf_deps_optional_python INTERFACE)
+add_library(bf::dependencies::optional::python ALIAS bf_deps_optional_python)
+
+if(WITH_PYTHON)
+  target_compile_definitions(bf_deps_optional_python INTERFACE WITH_PYTHON)
+  if(WITH_PYTHON_MODULE)
+    target_compile_definitions(bf_deps_optional_python INTERFACE WITH_PYTHON_MODULE)
+  endif()
+  target_include_directories(bf_deps_optional_python SYSTEM INTERFACE ${PYTHON_INCLUDE_DIR})
+  target_link_libraries(bf_deps_optional_python INTERFACE ${PYTHON_LINKFLAGS} ${PYTHON_LIBRARIES})
+endif()
+
+# -----------------------------------------------------------------------------
+# Configure GMP
+
+add_library(bf_deps_optional_gmp INTERFACE)
+add_library(bf::dependencies::optional::gmp ALIAS bf_deps_optional_gmp)
+
+if(WITH_GMP)
+  target_compile_definitions(bf_deps_optional_gmp INTERFACE WITH_GMP)
+  target_include_directories(bf_deps_optional_gmp SYSTEM INTERFACE ${GMP_INCLUDE_DIRS})
+  target_link_libraries(bf_deps_optional_gmp INTERFACE ${GMP_LIBRARIES})
+endif()
+
+# -----------------------------------------------------------------------------
+# Configure PugiXML
+
+add_library(bf_deps_optional_pugixml INTERFACE)
+add_library(bf::dependencies::optional::pugixml ALIAS bf_deps_optional_pugixml)
+
+if(WITH_PUGIXML)
+  target_compile_definitions(bf_deps_optional_pugixml INTERFACE WITH_PUGIXML)
+  target_include_directories(bf_deps_optional_pugixml SYSTEM INTERFACE ${PUGIXML_INCLUDE_DIR})
+  target_link_libraries(bf_deps_optional_pugixml INTERFACE ${PUGIXML_LIBRARIES})
+endif()
+
+# -----------------------------------------------------------------------------
+# Configure Haru
+
+add_library(bf_deps_optional_haru INTERFACE)
+add_library(bf::dependencies::optional::haru ALIAS bf_deps_optional_haru)
+
+if(WITH_HARU)
+  target_compile_definitions(bf_deps_optional_haru INTERFACE WITH_HARU)
+  target_include_directories(bf_deps_optional_haru SYSTEM INTERFACE ${HARU_INCLUDE_DIRS})
+  target_link_libraries(bf_deps_optional_haru INTERFACE ${HARU_LIBRARIES})
+endif()
+
+# -----------------------------------------------------------------------------
+# Configure Vulkan
+
+add_library(bf_deps_optional_vulkan INTERFACE)
+add_library(bf::dependencies::optional::vulkan ALIAS bf_deps_optional_vulkan)
+
+if(WITH_VULKAN_BACKEND)
+  target_include_directories(bf_deps_optional_vulkan SYSTEM INTERFACE ${VULKAN_INCLUDE_DIRS})
+  target_link_libraries(bf_deps_optional_vulkan INTERFACE ${VULKAN_LIBRARIES})
+endif()
+
+# -----------------------------------------------------------------------------
+# Configure ShaderC
+
+add_library(bf_deps_optional_shaderc INTERFACE)
+add_library(bf::dependencies::optional::shaderc ALIAS bf_deps_optional_shaderc)
+
+if(WITH_VULKAN_BACKEND)
+  target_include_directories(bf_deps_optional_shaderc SYSTEM INTERFACE ${SHADERC_INCLUDE_DIRS})
+  target_link_libraries(bf_deps_optional_shaderc INTERFACE ${SHADERC_LIBRARIES})
+endif()
+
+# -----------------------------------------------------------------------------
+# Configure Epoxy
+
+add_library(bf_deps_optional_epoxy INTERFACE)
+add_library(bf::dependencies::optional::epoxy ALIAS bf_deps_optional_epoxy)
+
+target_include_directories(bf_deps_optional_epoxy SYSTEM INTERFACE ${Epoxy_INCLUDE_DIRS})
+target_link_libraries(bf_deps_optional_epoxy INTERFACE ${Epoxy_LIBRARIES})
+
+# -----------------------------------------------------------------------------
+# Configure Gflags
+
+add_library(bf_deps_gflags INTERFACE)
+add_library(bf::dependencies::gflags ALIAS bf_deps_gflags)
+
+target_compile_definitions(bf_deps_gflags INTERFACE ${GFLAGS_DEFINES})
+target_include_directories(bf_deps_gflags SYSTEM INTERFACE ${GFLAGS_INCLUDE_DIRS})
+target_link_libraries(bf_deps_gflags INTERFACE ${GFLAGS_LIBRARIES})
+
+# -----------------------------------------------------------------------------
+# Configure Glog
+
+add_library(bf_deps_glog INTERFACE)
+add_library(bf::dependencies::glog ALIAS bf_deps_glog)
+
+target_compile_definitions(bf_deps_glog INTERFACE ${GLOG_DEFINES})
+target_include_directories(bf_deps_glog SYSTEM INTERFACE ${GLOG_INCLUDE_DIRS})
+target_link_libraries(bf_deps_glog INTERFACE ${GLOG_LIBRARIES})
+
+# -----------------------------------------------------------------------------
+# Configure OpenImageDenoise
+
+add_library(bf_deps_optional_openimagedenoise INTERFACE)
+add_library(bf::dependencies::optional::openimagedenoise ALIAS bf_deps_optional_openimagedenoise)
+
+if(WITH_OPENIMAGEDENOISE)
+  target_compile_definitions(bf_deps_optional_openimagedenoise INTERFACE WITH_OPENIMAGEDENOISE)
+  target_compile_definitions(bf_deps_optional_openimagedenoise INTERFACE OIDN_STATIC_LIB)
+  target_include_directories(bf_deps_optional_openimagedenoise SYSTEM INTERFACE ${OPENIMAGEDENOISE_INCLUDE_DIRS})
+  target_link_libraries(bf_deps_optional_openimagedenoise INTERFACE ${OPENIMAGEDENOISE_LIBRARIES})
+endif()
+
+# -----------------------------------------------------------------------------
+# Configure FFTW3
+
+add_library(bf_deps_optional_fftw3 INTERFACE)
+add_library(bf::dependencies::optional::fftw3 ALIAS bf_deps_optional_fftw3)
+
+if(WITH_FFTW3)
+  target_compile_definitions(bf_deps_optional_fftw3 INTERFACE WITH_FFTW3)
+  target_include_directories(bf_deps_optional_fftw3 SYSTEM INTERFACE ${FFTW3_INCLUDE_DIRS})
+  target_link_libraries(bf_deps_optional_fftw3 INTERFACE ${FFTW3_LIBRARIES})
+endif()
+
+# -----------------------------------------------------------------------------
+# Configure Bullet
+
+add_library(bf_deps_optional_bullet INTERFACE)
+add_library(bf::dependencies::optional::bullet ALIAS bf_deps_optional_bullet)
+
+if(WITH_BULLET)
+  target_compile_definitions(bf_deps_optional_bullet INTERFACE WITH_BULLET)
+  target_include_directories(bf_deps_optional_bullet SYSTEM INTERFACE ${BULLET_INCLUDE_DIRS})
+  target_link_libraries(bf_deps_optional_bullet INTERFACE ${BULLET_LIBRARIES})
+endif()
+
+# -----------------------------------------------------------------------------
+# Configure Audaspace
+
+add_library(bf_deps_optional_audaspace INTERFACE)
+add_library(bf::dependencies::optional::audaspace ALIAS bf_deps_optional_audaspace)
+
+if(WITH_AUDASPACE)
+  target_compile_definitions(bf_deps_optional_audaspace INTERFACE WITH_AUDASPACE)
+  target_include_directories(bf_deps_optional_audaspace SYSTEM INTERFACE ${AUDASPACE_C_INCLUDE_DIRS} ${AUDASPACE_PY_INCLUDE_DIRS})
+  if(WITH_SYSTEM_AUDASPACE)
+    target_link_libraries(bf_deps_optional_audaspace INTERFACE ${AUDASPACE_C_LIBRARIES} ${AUDASPACE_PY_LIBRARIES})
+  else()
+    target_link_libraries(bf_deps_optional_audaspace INTERFACE audaspace audaspace-py)
+  endif()
+endif()
+
+# -----------------------------------------------------------------------------
+# Configure Potrace
+
+add_library(bf_deps_optional_potrace INTERFACE)
+add_library(bf::dependencies::optional::potrace ALIAS bf_deps_optional_potrace)
+
+if(WITH_POTRACE)
+  target_compile_definitions(bf_deps_optional_potrace INTERFACE WITH_POTRACE)
+  target_include_directories(bf_deps_optional_potrace SYSTEM INTERFACE ${POTRACE_INCLUDE_DIRS})
+  target_link_libraries(bf_deps_optional_potrace INTERFACE ${POTRACE_LIBRARIES})
+endif()
+
+# -----------------------------------------------------------------------------
+# Configure Pthreads
+#
+add_library(bf_deps_pthreads INTERFACE)
+add_library(bf::dependencies::pthreads ALIAS bf_deps_pthreads)
+
+# Include directories on non-Windows are handled globally.
+if(WIN32 AND NOT UNIX)
+  target_include_directories(bf_deps_pthreads SYSTEM INTERFACE ${PTHREADS_INC})
+endif()
+if(DEFINED PTHREADS_LIBRARIES)
+  target_link_libraries(bf_deps_pthreads INTERFACE ${PTHREADS_LIBRARIES})
 endif()
--- build_files/cmake/testing.cmake.orig	2025-10-08 10:41:55 UTC
+++ build_files/cmake/testing.cmake
@@ -65,8 +65,6 @@ macro(blender_src_gtest_ex)
       ${CMAKE_SOURCE_DIR}/tests/gtests
     )
     set(TEST_INC_SYS
-      ${GLOG_INCLUDE_DIRS}
-      ${GFLAGS_INCLUDE_DIRS}
       ${CMAKE_SOURCE_DIR}/extern/gtest/include
       ${CMAKE_SOURCE_DIR}/extern/gmock/include
     )
@@ -79,8 +77,6 @@ macro(blender_src_gtest_ex)
 
     add_executable(${TARGET_NAME} ${ARG_SRC} ${MANIFEST})
     setup_platform_linker_flags(${TARGET_NAME})
-    target_compile_definitions(${TARGET_NAME} PRIVATE ${GFLAGS_DEFINES})
-    target_compile_definitions(${TARGET_NAME} PRIVATE ${GLOG_DEFINES})
     target_include_directories(${TARGET_NAME} PUBLIC "${TEST_INC}")
     target_include_directories(${TARGET_NAME} SYSTEM PUBLIC "${TEST_INC_SYS}")
     blender_link_libraries(${TARGET_NAME} "${ARG_EXTRA_LIBS};${PLATFORM_LINKLIBS}")
@@ -100,21 +96,15 @@ macro(blender_src_gtest_ex)
                           extern_gtest
                           extern_gmock
                           # Needed for GLOG.
-                          ${GLOG_LIBRARIES}
-                          ${GFLAGS_LIBRARIES})
+                          bf::dependencies::glog
+                          bf::dependencies::gflags
+                          bf::dependencies::pthreads
+                          bf::dependencies::optional::tbb
+                          bf::dependencies::optional::gmp)
 
-    if(DEFINED PTHREADS_LIBRARIES) # Needed for GLOG.
-      target_link_libraries(${TARGET_NAME} PRIVATE ${PTHREADS_LIBRARIES})
-    endif()
     if(UNIX AND NOT APPLE)
       target_link_libraries(${TARGET_NAME} PRIVATE bf_intern_libc_compat)
     endif()
-    if(WITH_TBB)
-      target_link_libraries(${TARGET_NAME} PRIVATE ${TBB_LIBRARIES})
-    endif()
-    if(WITH_GMP)
-      target_link_libraries(${TARGET_NAME} PRIVATE ${GMP_LIBRARIES})
-    endif()
 
     get_blender_test_install_dir(TEST_INSTALL_DIR)
     set_target_properties(${TARGET_NAME} PROPERTIES
@@ -223,10 +213,12 @@ function(blender_add_test_suite_lib
       ${CMAKE_SOURCE_DIR}/tests/gtests
     )
     list(APPEND includes_sys
-      ${GLOG_INCLUDE_DIRS}
-      ${GFLAGS_INCLUDE_DIRS}
       ${CMAKE_SOURCE_DIR}/extern/gtest/include
       ${CMAKE_SOURCE_DIR}/extern/gmock/include
+    )
+    list(APPEND library_deps
+      bf::dependencies::gflags
+      bf::dependencies::glog
     )
 
     blender_add_lib__impl(${name}_tests
