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.
This commit is contained in:
Undefine 2026-04-21 14:59:41 +02:00 committed by Shannon Booth
parent b41dbf60f3
commit 1d83e8c896
14 changed files with 69 additions and 97 deletions

View file

@ -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)

View file

@ -1,6 +1,3 @@
include(skia)
include(vulkan)
set(SOURCES
AffineTransform.cpp
Bitmap.cpp

View file

@ -1,7 +1,5 @@
include(audio)
include(ffmpeg)
set(SOURCES
Audio/AudioDevices.cpp
Containers/Matroska/MatroskaDemuxer.cpp

View file

@ -1,8 +1,4 @@
include(fontconfig)
include(libweb_generators)
include(vulkan)
include(skia)
include(SDL3)
set(SOURCES
Animations/Animatable.cpp

View file

@ -1,5 +1,3 @@
include(fontconfig)
set(SOURCES
Application.cpp
Attribute.cpp

View file

@ -1,3 +0,0 @@
include_guard()
find_package(SDL3 CONFIG REQUIRED)

View file

@ -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 "$<LINK_GROUP:no_as_needed,Fontconfig::Fontconfig>")
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})

View file

@ -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}

View file

@ -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()

View file

@ -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()

View file

@ -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 "$<LINK_GROUP:no_as_needed,Fontconfig::Fontconfig>")
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})

View file

@ -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()

View file

@ -1,5 +1,4 @@
include(audio)
include(SDL3)
set(SOURCES
ConnectionFromClient.cpp

View file

@ -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)