Use the system libjpeg-turbo and libwebp instead of downloading and
statically building pinned copies through ExternalProject at build time.

--- a/src/cmake/FlmImageCodecs.cmake
+++ b/src/cmake/FlmImageCodecs.cmake
@@ -1,124 +1,17 @@
 # JPEG/PNG/WebP codecs for ImageReader (src/common/image/image_reader.cpp).
 #
-#   - libjpeg-turbo (IJG + BSD-3-Clause + zlib licenses), built as a static
-#     library. Upstream refuses add_subdirectory(), so it goes through
-#     ExternalProject. Only the libjpeg API is built (WITH_TURBOJPEG=OFF): that is
-#     the API Pillow decodes with, and it keeps out the libspng/zlib copy that the
-#     TurboJPEG API bundles. SIMD is used wherever NASM is on PATH.
+#   - libjpeg (the libjpeg API of the system libjpeg-turbo), via pkg-config.
 #   - lodepng (zlib license), vendored in include/lodepng.
-#   - libwebp (BSD-3-Clause), decoder only (libwebpdecoder), built as a static
-#     library through ExternalProject: the version Pillow 12 ships, so WebP
-#     pixels match the reference's.
+#   - libwebpdecoder (the decoder-only library of the system libwebp), via
+#     pkg-config.
 #
 # Defines the INTERFACE target flm_image_codecs. Link it from anything that
 # compiles image_reader.cpp.
 include_guard(GLOBAL)
-include(ExternalProject)
-
-set(FLM_LIBJPEG_TURBO_VERSION 3.2.0)
-set(_flm_ljt_prefix ${CMAKE_BINARY_DIR}/libjpeg-turbo)
-if(MSVC)
-    set(_flm_ljt_lib ${_flm_ljt_prefix}/lib/jpeg-static.lib)
-else()
-    set(_flm_ljt_lib ${_flm_ljt_prefix}/lib/libjpeg.a)
-endif()
-
-set(_flm_ljt_args
-    -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
-    -DCMAKE_INSTALL_LIBDIR=lib
-    -DCMAKE_BUILD_TYPE=Release
-    -DCMAKE_POSITION_INDEPENDENT_CODE=ON
-    -DENABLE_SHARED=OFF
-    -DENABLE_STATIC=ON
-    -DWITH_TURBOJPEG=OFF
-    -DWITH_TOOLS=OFF
-    -DWITH_TESTS=OFF
-    # MSVC: use the C runtime DLL, like flm, instead of libjpeg-turbo's static default.
-    -DWITH_CRT_DLL=ON)
-if(CMAKE_C_COMPILER)
-    list(APPEND _flm_ljt_args -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER})
-endif()
-
-# Short working directories: the default <name>-prefix/src/<name>-build layout
-# plus CMake's try-compile and MSBuild's .tlog paths exceeds Windows' 260-char
-# MAX_PATH on CI runners with deep work directories.
-set(_flm_ljt_work ${CMAKE_BINARY_DIR}/ljt)
-ExternalProject_Add(flm_libjpeg_turbo
-    URL https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/${FLM_LIBJPEG_TURBO_VERSION}/libjpeg-turbo-${FLM_LIBJPEG_TURBO_VERSION}.tar.gz
-    URL_HASH SHA256=6f30092cef9fb839779646608f4ee14ae3cbac989c47fa05e841b0841f09878e
-    DOWNLOAD_EXTRACT_TIMESTAMP TRUE
-    EXCLUDE_FROM_ALL TRUE
-    PREFIX ${_flm_ljt_work}
-    DOWNLOAD_DIR ${_flm_ljt_work}/dl
-    SOURCE_DIR ${_flm_ljt_work}/s
-    BINARY_DIR ${_flm_ljt_work}/b
-    STAMP_DIR ${_flm_ljt_work}/st
-    TMP_DIR ${_flm_ljt_work}/t
-    INSTALL_DIR ${_flm_ljt_prefix}
-    CMAKE_ARGS ${_flm_ljt_args}
-    BUILD_BYPRODUCTS ${_flm_ljt_lib})
-
-# The include directory must exist at configure time for the imported target.
-file(MAKE_DIRECTORY ${_flm_ljt_prefix}/include)
-add_library(flm_libjpeg STATIC IMPORTED GLOBAL)
-set_target_properties(flm_libjpeg PROPERTIES
-    IMPORTED_LOCATION ${_flm_ljt_lib}
-    INTERFACE_INCLUDE_DIRECTORIES ${_flm_ljt_prefix}/include)
-add_dependencies(flm_libjpeg flm_libjpeg_turbo)
-
-set(FLM_LIBWEBP_VERSION 1.6.0)
-set(_flm_webp_prefix ${CMAKE_BINARY_DIR}/libwebp)
-if(MSVC)
-    set(_flm_webp_lib ${_flm_webp_prefix}/lib/libwebpdecoder.lib)
-else()
-    set(_flm_webp_lib ${_flm_webp_prefix}/lib/libwebpdecoder.a)
-endif()
-set(_flm_webp_args
-    -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
-    -DCMAKE_INSTALL_LIBDIR=lib
-    -DCMAKE_BUILD_TYPE=Release
-    -DCMAKE_POSITION_INDEPENDENT_CODE=ON
-    -DBUILD_SHARED_LIBS=OFF
-    -DWEBP_USE_THREAD=OFF
-    -DWEBP_BUILD_ANIM_UTILS=OFF
-    -DWEBP_BUILD_CWEBP=OFF
-    -DWEBP_BUILD_DWEBP=OFF
-    -DWEBP_BUILD_GIF2WEBP=OFF
-    -DWEBP_BUILD_IMG2WEBP=OFF
-    -DWEBP_BUILD_VWEBP=OFF
-    -DWEBP_BUILD_WEBPINFO=OFF
-    -DWEBP_BUILD_LIBWEBPMUX=OFF
-    -DWEBP_BUILD_WEBPMUX=OFF
-    -DWEBP_BUILD_EXTRAS=OFF
-    # MSVC: the C runtime DLL, like flm (and libjpeg-turbo above)
-    -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDLL
-    -DCMAKE_POLICY_DEFAULT_CMP0091=NEW)
-if(CMAKE_C_COMPILER)
-    list(APPEND _flm_webp_args -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER})
-endif()
-set(_flm_webp_work ${CMAKE_BINARY_DIR}/wbp)
-ExternalProject_Add(flm_libwebp
-    URL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${FLM_LIBWEBP_VERSION}.tar.gz
-    URL_HASH SHA256=e4ab7009bf0629fd11982d4c2aa83964cf244cffba7347ecd39019a9e38c4564
-    DOWNLOAD_EXTRACT_TIMESTAMP TRUE
-    EXCLUDE_FROM_ALL TRUE
-    PREFIX ${_flm_webp_work}
-    DOWNLOAD_DIR ${_flm_webp_work}/dl
-    SOURCE_DIR ${_flm_webp_work}/s
-    BINARY_DIR ${_flm_webp_work}/b
-    STAMP_DIR ${_flm_webp_work}/st
-    TMP_DIR ${_flm_webp_work}/t
-    INSTALL_DIR ${_flm_webp_prefix}
-    CMAKE_ARGS ${_flm_webp_args}
-    BUILD_BYPRODUCTS ${_flm_webp_lib})
-
-file(MAKE_DIRECTORY ${_flm_webp_prefix}/include)
-add_library(flm_libwebpdecoder STATIC IMPORTED GLOBAL)
-set_target_properties(flm_libwebpdecoder PROPERTIES
-    IMPORTED_LOCATION ${_flm_webp_lib}
-    INTERFACE_INCLUDE_DIRECTORIES ${_flm_webp_prefix}/include)
-add_dependencies(flm_libwebpdecoder flm_libwebp)
+find_package(PkgConfig REQUIRED)
+pkg_check_modules(FLM_LIBJPEG REQUIRED IMPORTED_TARGET libjpeg)
+pkg_check_modules(FLM_LIBWEBP REQUIRED IMPORTED_TARGET libwebpdecoder)
 
 add_library(flm_image_codecs INTERFACE)
 target_sources(flm_image_codecs INTERFACE ${CMAKE_CURRENT_LIST_DIR}/../include/lodepng/lodepng.cpp)
-target_link_libraries(flm_image_codecs INTERFACE flm_libjpeg flm_libwebpdecoder)
+target_link_libraries(flm_image_codecs INTERFACE PkgConfig::FLM_LIBJPEG PkgConfig::FLM_LIBWEBP)
