From 1d83e8c89636dc4a0c0e64f8f2c2831b594aa353 Mon Sep 17 00:00:00 2001 From: Undefine Date: Tue, 21 Apr 2026 14:59:41 +0200 Subject: [PATCH] Meta: Move all remaining dependency checks to `check_for_dependencies` This also allows us to get rid of a couple of files that were meant for dependency specific checks. --- CMakeLists.txt | 5 +- Libraries/LibGfx/CMakeLists.txt | 3 -- Libraries/LibMedia/CMakeLists.txt | 2 - Libraries/LibWeb/CMakeLists.txt | 4 -- Libraries/LibWebView/CMakeLists.txt | 2 - Meta/CMake/SDL3.cmake | 3 -- Meta/CMake/check_for_dependencies.cmake | 67 +++++++++++++++++++++++++ Meta/CMake/code_generators.cmake | 1 - Meta/CMake/ffmpeg.cmake | 11 ---- Meta/CMake/fontconfig.cmake | 7 --- Meta/CMake/skia.cmake | 43 ---------------- Meta/CMake/vulkan.cmake | 16 ------ Services/WebContent/CMakeLists.txt | 1 - UI/Gtk/CMakeLists.txt | 1 - 14 files changed, 69 insertions(+), 97 deletions(-) delete mode 100644 Meta/CMake/SDL3.cmake delete mode 100644 Meta/CMake/ffmpeg.cmake delete mode 100644 Meta/CMake/fontconfig.cmake delete mode 100644 Meta/CMake/skia.cmake delete mode 100644 Meta/CMake/vulkan.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 4f9c59a3c4..88088db12e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,10 +51,9 @@ endif() set(LADYBIRD_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}") list(APPEND CMAKE_MODULE_PATH "${LADYBIRD_SOURCE_DIR}/Meta/CMake") -include(check_for_dependencies) -include(gui_framework) -include(cmake_options NO_POLICY_SCOPE) include(compile_options) +include(check_for_dependencies) +include(cmake_options) if(ENABLE_ALL_THE_DEBUG_MACROS) include(all_the_debug_macros) diff --git a/Libraries/LibGfx/CMakeLists.txt b/Libraries/LibGfx/CMakeLists.txt index 33099d5e45..e4f53e695e 100644 --- a/Libraries/LibGfx/CMakeLists.txt +++ b/Libraries/LibGfx/CMakeLists.txt @@ -1,6 +1,3 @@ -include(skia) -include(vulkan) - set(SOURCES AffineTransform.cpp Bitmap.cpp diff --git a/Libraries/LibMedia/CMakeLists.txt b/Libraries/LibMedia/CMakeLists.txt index d1fed8ef56..72b48bf2fd 100644 --- a/Libraries/LibMedia/CMakeLists.txt +++ b/Libraries/LibMedia/CMakeLists.txt @@ -1,7 +1,5 @@ include(audio) -include(ffmpeg) - set(SOURCES Audio/AudioDevices.cpp Containers/Matroska/MatroskaDemuxer.cpp diff --git a/Libraries/LibWeb/CMakeLists.txt b/Libraries/LibWeb/CMakeLists.txt index e0e057beb1..f9033e7c75 100644 --- a/Libraries/LibWeb/CMakeLists.txt +++ b/Libraries/LibWeb/CMakeLists.txt @@ -1,8 +1,4 @@ -include(fontconfig) include(libweb_generators) -include(vulkan) -include(skia) -include(SDL3) set(SOURCES Animations/Animatable.cpp diff --git a/Libraries/LibWebView/CMakeLists.txt b/Libraries/LibWebView/CMakeLists.txt index 3b99f8ae87..3798e747b4 100644 --- a/Libraries/LibWebView/CMakeLists.txt +++ b/Libraries/LibWebView/CMakeLists.txt @@ -1,5 +1,3 @@ -include(fontconfig) - set(SOURCES Application.cpp Attribute.cpp diff --git a/Meta/CMake/SDL3.cmake b/Meta/CMake/SDL3.cmake deleted file mode 100644 index 918b20667d..0000000000 --- a/Meta/CMake/SDL3.cmake +++ /dev/null @@ -1,3 +0,0 @@ -include_guard() - -find_package(SDL3 CONFIG REQUIRED) diff --git a/Meta/CMake/check_for_dependencies.cmake b/Meta/CMake/check_for_dependencies.cmake index 6f3b34ce3a..8db336115a 100644 --- a/Meta/CMake/check_for_dependencies.cmake +++ b/Meta/CMake/check_for_dependencies.cmake @@ -23,15 +23,44 @@ pkg_check_modules(WOFF2 REQUIRED IMPORTED_TARGET libwoff2dec) # TODO: Figure out if we can do this the same way on all platforms if (NOT ANDROID) pkg_check_modules(Jxl REQUIRED IMPORTED_TARGET libjxl) + + pkg_check_modules(AVCODEC REQUIRED IMPORTED_TARGET libavcodec) + pkg_check_modules(AVFORMAT REQUIRED IMPORTED_TARGET libavformat) + pkg_check_modules(AVUTIL REQUIRED IMPORTED_TARGET libavutil) + pkg_check_modules(LIBSWRESAMPLE REQUIRED IMPORTED_TARGET libswresample) else() find_package(libjxl REQUIRED) find_package(hwy REQUIRED) + + find_package(FFMPEG REQUIRED) +endif() + +if (NOT APPLE AND NOT ANDROID AND NOT WIN32) + find_package(Fontconfig REQUIRED) + set(HAS_FONTCONFIG ON CACHE BOOL "" FORCE) + add_cxx_compile_definitions(USE_FONTCONFIG=1) +endif() + +if (NOT APPLE) + find_package(VulkanHeaders CONFIG QUIET) + find_package(Vulkan QUIET) + if (VulkanHeaders_FOUND AND Vulkan_FOUND) + set(HAS_VULKAN ON CACHE BOOL "" FORCE) + add_cxx_compile_definitions(USE_VULKAN=1) + + # Sharable Vulkan images are currently only implemented on Linux and BSDs + if ((LINUX AND NOT ANDROID) OR BSD) + set(USE_VULKAN_DMABUF_IMAGES ON CACHE BOOL "" FORCE) + add_cxx_compile_definitions(USE_VULKAN_DMABUF_IMAGES=1) + endif() + endif() endif() find_package(CURL REQUIRED) find_package(ICU 78.2 EXACT REQUIRED COMPONENTS data i18n uc) find_package(LibXml2 REQUIRED) find_package(OpenSSL REQUIRED) +find_package(SDL3 CONFIG REQUIRED) find_package(simdjson CONFIG REQUIRED) find_package(SQLite3 REQUIRED) find_package(Threads REQUIRED) @@ -53,3 +82,41 @@ if (WIN32) endif() find_package(Python3 REQUIRED COMPONENTS Interpreter) + +find_package(unofficial-skia CONFIG) +if(unofficial-skia_FOUND) + set(SKIA_TARGET unofficial::skia::skia) + if (HAS_FONTCONFIG AND NOT WIN32) + set(CMAKE_LINK_GROUP_USING_no_as_needed_SUPPORTED TRUE CACHE BOOL "Link group using no-as-needed supported") + set(CMAKE_LINK_GROUP_USING_no_as_needed "LINKER:--push-state,--no-as-needed" "LINKER:--pop-state" CACHE STRING "Link group using no-as-needed") + set_property(TARGET unofficial::skia::skia APPEND PROPERTY INTERFACE_LINK_LIBRARIES "$") + endif() + if (ANDROID) + # FIXME: Submit a proper patch to vcpkg in order not to bring host's libc++ when compiling for Android + get_target_property(link_libs unofficial::skia::skia INTERFACE_LINK_LIBRARIES) + set(filtered_libs) + foreach(lib ${link_libs}) + if (NOT lib MATCHES "lib/libc\\+\\+.so$") + list(APPEND filtered_libs ${lib}) + endif() + endforeach() + set_property(TARGET unofficial::skia::skia PROPERTY INTERFACE_LINK_LIBRARIES ${filtered_libs}) + endif() +else() + # Get skia version from vcpkg.json + file(READ ${LADYBIRD_SOURCE_DIR}/vcpkg.json VCPKG_DOT_JSON) + string(JSON VCPKG_OVERRIDES_LENGTH LENGTH ${VCPKG_DOT_JSON} overrides) + MATH(EXPR VCPKG_OVERRIDES_END_RANGE "${VCPKG_OVERRIDES_LENGTH}-1") + foreach(IDX RANGE ${VCPKG_OVERRIDES_END_RANGE}) + string(JSON VCPKG_OVERRIDE_NAME GET ${VCPKG_DOT_JSON} overrides ${IDX} name) + if(VCPKG_OVERRIDE_NAME STREQUAL "skia") + string(JSON SKIA_REQUIRED_VERSION GET ${VCPKG_DOT_JSON} overrides ${IDX} version) + string(REGEX MATCH "[0-9]+" SKIA_REQUIRED_VERSION ${SKIA_REQUIRED_VERSION}) + endif() + endforeach() + + pkg_check_modules(skia skia=${SKIA_REQUIRED_VERSION} REQUIRED IMPORTED_TARGET skia) + set(SKIA_TARGET PkgConfig::skia) + set_property(TARGET PkgConfig::skia APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS "SKCMS_DLL") +endif() +add_library(skia ALIAS ${SKIA_TARGET}) diff --git a/Meta/CMake/code_generators.cmake b/Meta/CMake/code_generators.cmake index 5220684719..0721e1bfd1 100644 --- a/Meta/CMake/code_generators.cmake +++ b/Meta/CMake/code_generators.cmake @@ -8,7 +8,6 @@ function(embed_as_string name source_file output source_variable_name) if (EMBED_STRING_VIEW_NAMESPACE) set(namespace_arg "-s ${EMBED_STRING_VIEW_NAMESPACE}") endif() - find_package(Python3 REQUIRED COMPONENTS Interpreter) add_custom_command( OUTPUT "${output}" COMMAND "${Python3_EXECUTABLE}" "${LADYBIRD_SOURCE_DIR}/Meta/Generators/embed_as_string.py" "${source_file}" -o "${output}.tmp" -n "${source_variable_name}" ${namespace_arg} diff --git a/Meta/CMake/ffmpeg.cmake b/Meta/CMake/ffmpeg.cmake deleted file mode 100644 index 6e84ab611f..0000000000 --- a/Meta/CMake/ffmpeg.cmake +++ /dev/null @@ -1,11 +0,0 @@ -include_guard() - -if (NOT ANDROID) -find_package(PkgConfig REQUIRED) -pkg_check_modules(AVCODEC REQUIRED IMPORTED_TARGET libavcodec) -pkg_check_modules(AVFORMAT REQUIRED IMPORTED_TARGET libavformat) -pkg_check_modules(AVUTIL REQUIRED IMPORTED_TARGET libavutil) -pkg_check_modules(LIBSWRESAMPLE REQUIRED IMPORTED_TARGET libswresample) -else() - find_package(FFMPEG REQUIRED) -endif() diff --git a/Meta/CMake/fontconfig.cmake b/Meta/CMake/fontconfig.cmake deleted file mode 100644 index dcbbe1ff09..0000000000 --- a/Meta/CMake/fontconfig.cmake +++ /dev/null @@ -1,7 +0,0 @@ -include_guard() - -if (NOT APPLE AND NOT ANDROID AND NOT WIN32) - find_package(Fontconfig REQUIRED) - set(HAS_FONTCONFIG ON CACHE BOOL "" FORCE) - add_cxx_compile_definitions(USE_FONTCONFIG=1) -endif() diff --git a/Meta/CMake/skia.cmake b/Meta/CMake/skia.cmake deleted file mode 100644 index 4958793c87..0000000000 --- a/Meta/CMake/skia.cmake +++ /dev/null @@ -1,43 +0,0 @@ -include_guard() - -include(fontconfig) - -find_package(unofficial-skia CONFIG) -if(unofficial-skia_FOUND) - set(SKIA_TARGET unofficial::skia::skia) - if (HAS_FONTCONFIG AND NOT WIN32) - set(CMAKE_LINK_GROUP_USING_no_as_needed_SUPPORTED TRUE CACHE BOOL "Link group using no-as-needed supported") - set(CMAKE_LINK_GROUP_USING_no_as_needed "LINKER:--push-state,--no-as-needed" "LINKER:--pop-state" CACHE STRING "Link group using no-as-needed") - set_property(TARGET unofficial::skia::skia APPEND PROPERTY INTERFACE_LINK_LIBRARIES "$") - endif() - if (ANDROID) - # FIXME: Submit a proper patch to vcpkg in order not to bring host's libc++ when compiling for Android - get_target_property(link_libs unofficial::skia::skia INTERFACE_LINK_LIBRARIES) - set(filtered_libs) - foreach(lib ${link_libs}) - if (NOT lib MATCHES "lib/libc\\+\\+.so$") - list(APPEND filtered_libs ${lib}) - endif() - endforeach() - set_property(TARGET unofficial::skia::skia PROPERTY INTERFACE_LINK_LIBRARIES ${filtered_libs}) - endif() -else() - find_package(PkgConfig) - - # Get skia version from vcpkg.json - file(READ ${LADYBIRD_SOURCE_DIR}/vcpkg.json VCPKG_DOT_JSON) - string(JSON VCPKG_OVERRIDES_LENGTH LENGTH ${VCPKG_DOT_JSON} overrides) - MATH(EXPR VCPKG_OVERRIDES_END_RANGE "${VCPKG_OVERRIDES_LENGTH}-1") - foreach(IDX RANGE ${VCPKG_OVERRIDES_END_RANGE}) - string(JSON VCPKG_OVERRIDE_NAME GET ${VCPKG_DOT_JSON} overrides ${IDX} name) - if(VCPKG_OVERRIDE_NAME STREQUAL "skia") - string(JSON SKIA_REQUIRED_VERSION GET ${VCPKG_DOT_JSON} overrides ${IDX} version) - string(REGEX MATCH "[0-9]+" SKIA_REQUIRED_VERSION ${SKIA_REQUIRED_VERSION}) - endif() - endforeach() - - pkg_check_modules(skia skia=${SKIA_REQUIRED_VERSION} REQUIRED IMPORTED_TARGET skia) - set(SKIA_TARGET PkgConfig::skia) - set_property(TARGET PkgConfig::skia APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS "SKCMS_DLL") -endif() -add_library(skia ALIAS ${SKIA_TARGET}) diff --git a/Meta/CMake/vulkan.cmake b/Meta/CMake/vulkan.cmake deleted file mode 100644 index eee2e85767..0000000000 --- a/Meta/CMake/vulkan.cmake +++ /dev/null @@ -1,16 +0,0 @@ -include_guard() - -if (NOT APPLE) - find_package(VulkanHeaders CONFIG QUIET) - find_package(Vulkan QUIET) - if (VulkanHeaders_FOUND AND Vulkan_FOUND) - set(HAS_VULKAN ON CACHE BOOL "" FORCE) - add_cxx_compile_definitions(USE_VULKAN=1) - - # Sharable Vulkan images are currently only implemented on Linux and BSDs - if ((LINUX AND NOT ANDROID) OR BSD) - set(USE_VULKAN_DMABUF_IMAGES ON CACHE BOOL "" FORCE) - add_cxx_compile_definitions(USE_VULKAN_DMABUF_IMAGES=1) - endif() - endif() -endif() diff --git a/Services/WebContent/CMakeLists.txt b/Services/WebContent/CMakeLists.txt index 484554fffb..17e69a20b2 100644 --- a/Services/WebContent/CMakeLists.txt +++ b/Services/WebContent/CMakeLists.txt @@ -1,5 +1,4 @@ include(audio) -include(SDL3) set(SOURCES ConnectionFromClient.cpp diff --git a/UI/Gtk/CMakeLists.txt b/UI/Gtk/CMakeLists.txt index 8f153bc10e..a9e0c0e075 100644 --- a/UI/Gtk/CMakeLists.txt +++ b/UI/Gtk/CMakeLists.txt @@ -1,4 +1,3 @@ -find_package(PkgConfig REQUIRED) pkg_check_modules(GTK4 REQUIRED IMPORTED_TARGET gtk4) pkg_check_modules(LIBADWAITA REQUIRED IMPORTED_TARGET libadwaita-1>=1.4)