mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-04-25 17:25:08 +02:00
Meta: Move most dependency checks to check_for_dependencies.cmake
This file was here for quite a long while now. Let's finally move most of the dependency checks to one centralized place.
This commit is contained in:
Notes:
github-actions[bot]
2026-04-20 22:42:44 +00:00
Author: https://github.com/cqundefine Commit: https://github.com/LadybirdBrowser/ladybird/commit/e39a8719fde Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/8674 Reviewed-by: https://github.com/ADKaster ✅ Reviewed-by: https://github.com/konradekk
@@ -50,8 +50,6 @@ ladybird_lib(AK ak)
|
||||
|
||||
configure_file(Debug.h.in Debug.h @ONLY)
|
||||
|
||||
find_package(cpptrace CONFIG)
|
||||
find_package(Backtrace)
|
||||
|
||||
if(cpptrace_FOUND AND LADYBIRD_ENABLE_CPPTRACE)
|
||||
target_link_libraries(AK PRIVATE cpptrace::cpptrace)
|
||||
@@ -68,14 +66,7 @@ else()
|
||||
endif()
|
||||
configure_file(Backtrace.h.in Backtrace.h @ONLY)
|
||||
|
||||
find_package(simdutf REQUIRED)
|
||||
target_link_libraries(AK PRIVATE simdutf::simdutf)
|
||||
|
||||
find_package(FastFloat CONFIG REQUIRED)
|
||||
target_link_libraries(AK PRIVATE FastFloat::fast_float)
|
||||
|
||||
find_package(fmt CONFIG REQUIRED)
|
||||
target_link_libraries(AK PRIVATE fmt::fmt)
|
||||
target_link_libraries(AK PRIVATE FastFloat::fast_float fmt::fmt simdutf::simdutf)
|
||||
|
||||
set(MIMALLOC_VISIBILITY PRIVATE)
|
||||
if (NOT BUILD_SHARED_LIBS)
|
||||
|
||||
@@ -42,9 +42,6 @@ endif()
|
||||
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
# We need to find OpenSSL in order to link it explicitly with all targets.
|
||||
find_package(OpenSSL REQUIRED)
|
||||
|
||||
# Ensure that when single-value arguments are passed to `cmake_parse_arguments()`
|
||||
# with no or empty string arguments, they are still defined.
|
||||
if (POLICY CMP0174)
|
||||
@@ -63,8 +60,6 @@ if(ENABLE_ALL_THE_DEBUG_MACROS)
|
||||
include(all_the_debug_macros)
|
||||
endif()
|
||||
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
if (ENABLE_LAGOM_CCACHE)
|
||||
include(setup_ccache)
|
||||
endif()
|
||||
@@ -129,13 +124,6 @@ include_directories(${CMAKE_BINARY_DIR}/Services)
|
||||
|
||||
include(lagom_install)
|
||||
|
||||
if (WIN32)
|
||||
find_package(pthread REQUIRED)
|
||||
find_package(mman REQUIRED)
|
||||
endif()
|
||||
|
||||
find_package(mimalloc CONFIG REQUIRED)
|
||||
|
||||
include(rust_crate)
|
||||
include(targets)
|
||||
|
||||
@@ -184,7 +172,6 @@ add_custom_target(lint-shell-scripts
|
||||
USES_TERMINAL
|
||||
)
|
||||
|
||||
find_package(Python3 COMPONENTS Interpreter)
|
||||
if (Python3_FOUND)
|
||||
add_custom_target(check-style
|
||||
COMMAND ${Python3_EXECUTABLE} "${ladybird_SOURCE_DIR}/Meta/check-style.py"
|
||||
|
||||
@@ -9,5 +9,4 @@ set(SOURCES
|
||||
ladybird_lib(LibCompress compress)
|
||||
target_link_libraries(LibCompress PRIVATE LibCore LibCrypto)
|
||||
|
||||
find_package(ZLIB REQUIRED)
|
||||
target_link_libraries(LibCompress PRIVATE ZLIB::ZLIB)
|
||||
|
||||
@@ -32,9 +32,5 @@ set(SOURCES
|
||||
|
||||
ladybird_lib(LibCrypto crypto)
|
||||
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(libtommath REQUIRED IMPORTED_TARGET libtommath)
|
||||
target_link_libraries(LibCrypto PRIVATE PkgConfig::libtommath)
|
||||
|
||||
find_package(OpenSSL REQUIRED)
|
||||
target_link_libraries(LibCrypto PUBLIC OpenSSL::Crypto)
|
||||
|
||||
@@ -2,8 +2,6 @@ set(SOURCES
|
||||
Database.cpp
|
||||
)
|
||||
|
||||
find_package(SQLite3 REQUIRED)
|
||||
|
||||
ladybird_lib(LibDatabase database EXPLICIT_SYMBOL_EXPORT)
|
||||
target_link_libraries(LibDatabase PRIVATE LibCore)
|
||||
|
||||
|
||||
@@ -15,7 +15,6 @@ set(SOURCES
|
||||
ladybird_lib(LibGC gc EXPLICIT_SYMBOL_EXPORT)
|
||||
target_link_libraries(LibGC PRIVATE LibCore)
|
||||
|
||||
find_package(cpptrace CONFIG)
|
||||
if(cpptrace_FOUND AND LADYBIRD_ENABLE_CPPTRACE)
|
||||
target_link_libraries(LibGC PRIVATE cpptrace::cpptrace)
|
||||
target_compile_definitions(LibGC PRIVATE LIBGC_HAS_CPPTRACE=1)
|
||||
|
||||
@@ -83,8 +83,6 @@ target_link_libraries(LibGfx PRIVATE LibCompress LibCore LibCrypto LibFileSystem
|
||||
set(generated_sources TIFFMetadata.h TIFFTagHandler.cpp)
|
||||
list(TRANSFORM generated_sources PREPEND "ImageFormats/")
|
||||
|
||||
find_package(Python3 COMPONENTS Interpreter REQUIRED)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${generated_sources}
|
||||
COMMAND ${Python3_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/TIFFGenerator.py" -o "${CMAKE_CURRENT_BINARY_DIR}/ImageFormats"
|
||||
@@ -105,16 +103,6 @@ if (ENABLE_INSTALL_HEADERS)
|
||||
install(FILES ${generated_sources} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/LibGfx/ImageFormats")
|
||||
endif()
|
||||
|
||||
# Third-party
|
||||
find_package(PkgConfig)
|
||||
|
||||
pkg_check_modules(WOFF2 REQUIRED IMPORTED_TARGET libwoff2dec)
|
||||
find_package(JPEG REQUIRED)
|
||||
find_package(PNG REQUIRED)
|
||||
find_package(LIBAVIF REQUIRED)
|
||||
find_package(WebP REQUIRED)
|
||||
find_package(harfbuzz REQUIRED)
|
||||
|
||||
target_link_libraries(LibGfx PRIVATE PkgConfig::WOFF2 JPEG::JPEG PNG::PNG avif WebP::webp WebP::webpdecoder
|
||||
WebP::webpdemux WebP::libwebpmux skia harfbuzz)
|
||||
|
||||
@@ -140,7 +128,6 @@ if (NOT LIBPNG_HAS_APNG)
|
||||
endif()
|
||||
|
||||
if (NOT ANDROID)
|
||||
pkg_check_modules(Jxl REQUIRED IMPORTED_TARGET libjxl)
|
||||
# FIXME: Build vcpkg libraries with clang-cl so they can also build in sanitize.
|
||||
# https://github.com/LadybirdBrowser/ladybird/issues/5224
|
||||
if (WIN32 AND ENABLE_ADDRESS_SANITIZER)
|
||||
@@ -150,8 +137,6 @@ if (NOT ANDROID)
|
||||
endif()
|
||||
target_link_libraries(LibGfx PRIVATE PkgConfig::Jxl)
|
||||
else()
|
||||
find_package(libjxl REQUIRED)
|
||||
find_package(hwy REQUIRED)
|
||||
target_link_libraries(LibGfx PRIVATE libjxl::libjxl hwy::hwy)
|
||||
endif()
|
||||
|
||||
|
||||
@@ -269,10 +269,7 @@ set(GENERATED_SOURCES Bytecode/Op.cpp)
|
||||
|
||||
ladybird_lib(LibJS js EXPLICIT_SYMBOL_EXPORT)
|
||||
|
||||
find_package(simdjson CONFIG REQUIRED)
|
||||
target_link_libraries(LibJS PRIVATE simdjson::simdjson)
|
||||
|
||||
target_link_libraries(LibJS PRIVATE LibCore LibCrypto LibFileSystem LibRegex LibSyntax LibGC)
|
||||
target_link_libraries(LibJS PRIVATE LibCore LibCrypto LibFileSystem LibRegex LibSyntax LibGC simdjson::simdjson)
|
||||
|
||||
# Link LibUnicode publicly to ensure ICU data (which is in libicudata.a) is available in any process using LibJS.
|
||||
target_link_libraries(LibJS PUBLIC LibUnicode)
|
||||
|
||||
@@ -7,5 +7,4 @@ set(SOURCES
|
||||
ladybird_lib(LibTLS tls)
|
||||
target_link_libraries(LibTLS PRIVATE LibCore LibCrypto LibFileSystem)
|
||||
|
||||
find_package(OpenSSL REQUIRED)
|
||||
target_link_libraries(LibTLS PUBLIC OpenSSL::SSL)
|
||||
|
||||
@@ -8,7 +8,6 @@ ladybird_lib(LibThreading threading)
|
||||
target_link_libraries(LibThreading PRIVATE LibCore)
|
||||
|
||||
if (WIN32)
|
||||
find_package(pthread REQUIRED)
|
||||
target_include_directories(LibThreading PUBLIC $<BUILD_INTERFACE:${PTHREAD_INCLUDE_DIR}>)
|
||||
target_link_libraries(LibThreading PUBLIC ${PTHREAD_LIBRARY})
|
||||
endif()
|
||||
|
||||
@@ -27,7 +27,6 @@ set(GENERATED_SOURCES ${CURRENT_LIB_GENERATED})
|
||||
|
||||
ladybird_lib(LibUnicode unicode)
|
||||
|
||||
find_package(ICU 78.2 EXACT REQUIRED COMPONENTS data i18n uc)
|
||||
target_link_libraries(LibUnicode PRIVATE ICU::i18n ICU::uc ICU::data)
|
||||
|
||||
import_rust_crate(MANIFEST_PATH Rust/Cargo.toml CRATE_NAME libunicode_rust FEATURES allocator FFI_HEADER RustFFI.h)
|
||||
|
||||
@@ -4,15 +4,6 @@ include(vulkan)
|
||||
include(skia)
|
||||
include(SDL3)
|
||||
|
||||
find_package(unofficial-angle CONFIG)
|
||||
if(unofficial-angle_FOUND)
|
||||
set(ANGLE_TARGETS unofficial::angle::libEGL unofficial::angle::libGLESv2)
|
||||
else()
|
||||
find_package(PkgConfig)
|
||||
pkg_check_modules(angle REQUIRED IMPORTED_TARGET angle)
|
||||
set(ANGLE_TARGETS PkgConfig::angle)
|
||||
endif()
|
||||
|
||||
set(SOURCES
|
||||
Animations/Animatable.cpp
|
||||
Animations/Animation.cpp
|
||||
@@ -1231,8 +1222,6 @@ set(GENERATED_SOURCES
|
||||
|
||||
ladybird_lib(LibWeb web EXPLICIT_SYMBOL_EXPORT)
|
||||
|
||||
find_package(LibXml2 REQUIRED)
|
||||
|
||||
target_link_libraries(LibWeb PRIVATE LibCore LibCompress LibCrypto LibJS LibHTTP LibGfx LibIPC LibRegex LibSyntax LibTextCodec LibUnicode LibMedia LibWasm LibXML LibIDL LibURL LibTLS LibRequests LibGC LibThreading skia ${ANGLE_TARGETS} SDL3::SDL3 LibXml2::LibXml2)
|
||||
|
||||
if (HAS_FONTCONFIG)
|
||||
|
||||
@@ -5,5 +5,4 @@ set(SOURCES
|
||||
|
||||
ladybird_lib(LibXML xml EXPLICIT_SYMBOL_EXPORT)
|
||||
|
||||
find_package(LibXml2 REQUIRED)
|
||||
target_link_libraries(LibXML PRIVATE LibXml2::LibXml2)
|
||||
|
||||
@@ -5,7 +5,6 @@ if (APPLE AND NOT IOS)
|
||||
set(LADYBIRD_AUDIO_BACKEND "AUDIO_UNIT")
|
||||
return()
|
||||
elseif (NOT WIN32)
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(PULSEAUDIO IMPORTED_TARGET libpulse)
|
||||
|
||||
if (PULSEAUDIO_FOUND)
|
||||
|
||||
@@ -1,5 +1,55 @@
|
||||
#
|
||||
# Check for the dependencies that the Serenity (target) and Lagom (host) builds require.
|
||||
#
|
||||
include_guard()
|
||||
|
||||
# None at the moment!
|
||||
find_package(PkgConfig REQUIRED)
|
||||
|
||||
find_package(mimalloc CONFIG REQUIRED)
|
||||
|
||||
# AK dependencies
|
||||
find_package(Backtrace)
|
||||
find_package(cpptrace CONFIG)
|
||||
find_package(FastFloat CONFIG REQUIRED)
|
||||
find_package(fmt CONFIG REQUIRED)
|
||||
find_package(simdutf REQUIRED)
|
||||
|
||||
# LibGfx dependencies
|
||||
find_package(harfbuzz REQUIRED)
|
||||
find_package(JPEG REQUIRED)
|
||||
find_package(LIBAVIF REQUIRED)
|
||||
find_package(PNG REQUIRED)
|
||||
find_package(WebP REQUIRED)
|
||||
|
||||
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)
|
||||
else()
|
||||
find_package(libjxl REQUIRED)
|
||||
find_package(hwy REQUIRED)
|
||||
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(simdjson CONFIG REQUIRED)
|
||||
find_package(SQLite3 REQUIRED)
|
||||
find_package(Threads REQUIRED)
|
||||
find_package(ZLIB REQUIRED)
|
||||
|
||||
pkg_check_modules(libtommath REQUIRED IMPORTED_TARGET libtommath)
|
||||
|
||||
find_package(unofficial-angle CONFIG)
|
||||
if(unofficial-angle_FOUND)
|
||||
set(ANGLE_TARGETS unofficial::angle::libEGL unofficial::angle::libGLESv2)
|
||||
else()
|
||||
pkg_check_modules(angle REQUIRED IMPORTED_TARGET angle)
|
||||
set(ANGLE_TARGETS PkgConfig::angle)
|
||||
endif()
|
||||
|
||||
if (WIN32)
|
||||
find_package(pthread REQUIRED)
|
||||
find_package(mman REQUIRED)
|
||||
endif()
|
||||
|
||||
find_package(Python3 REQUIRED COMPONENTS Interpreter)
|
||||
|
||||
@@ -93,7 +93,6 @@ endfunction()
|
||||
|
||||
function(invoke_py_generator name script primary_source header implementation)
|
||||
cmake_parse_arguments(invoke_py_generator "" "EXTRA_HEADER" "arguments;dependencies" ${ARGN})
|
||||
find_package(Python3 REQUIRED COMPONENTS Interpreter)
|
||||
|
||||
set(py_generator_arguments ${invoke_py_generator_arguments})
|
||||
if (invoke_py_generator_EXTRA_HEADER)
|
||||
|
||||
@@ -29,9 +29,6 @@ endif()
|
||||
add_library(requestserverservice ${RS_LIB_TYPE} ${SOURCES} ${GENERATED_SOURCES})
|
||||
ladybird_generated_sources(requestserverservice)
|
||||
|
||||
find_package(PkgConfig)
|
||||
find_package(CURL REQUIRED)
|
||||
|
||||
add_executable(RequestServer main.cpp)
|
||||
|
||||
target_include_directories(requestserverservice PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../..)
|
||||
|
||||
@@ -22,7 +22,6 @@ target_include_directories(WebWorker PRIVATE ${LADYBIRD_SOURCE_DIR})
|
||||
target_link_libraries(WebWorker PRIVATE webworkerservice OpenSSL::Crypto OpenSSL::SSL)
|
||||
|
||||
if(WIN32)
|
||||
find_package(pthread REQUIRED)
|
||||
target_include_directories(WebWorker PRIVATE $<BUILD_INTERFACE:${PTHREAD_INCLUDE_DIR}>)
|
||||
lagom_windows_bin(WebWorker CONSOLE)
|
||||
endif()
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
include(clang_development)
|
||||
include(AddLLVM)
|
||||
|
||||
find_package(Python3 REQUIRED COMPONENTS Interpreter)
|
||||
|
||||
get_property(CLANG_PLUGINS_COMPILE_OPTIONS_FOR_TESTS GLOBAL PROPERTY CLANG_PLUGINS_COMPILE_OPTIONS_FOR_TESTS)
|
||||
|
||||
list(APPEND CLANG_PLUGINS_COMPILE_OPTIONS_FOR_TESTS
|
||||
|
||||
@@ -18,7 +18,6 @@ if (APPLE)
|
||||
target_compile_definitions(test-web PRIVATE LADYBIRD_BINARY_PATH="$<TARGET_FILE_DIR:ladybird>")
|
||||
elseif (WIN32)
|
||||
target_link_libraries(test-web PRIVATE LibDevTools)
|
||||
find_package(pthread REQUIRED)
|
||||
target_include_directories(test-web PRIVATE $<BUILD_INTERFACE:${PTHREAD_INCLUDE_DIR}>)
|
||||
lagom_windows_bin(test-web CONSOLE)
|
||||
endif()
|
||||
@@ -29,8 +28,6 @@ if (WIN32)
|
||||
endif()
|
||||
|
||||
if (BUILD_TESTING)
|
||||
find_package(Python3 REQUIRED)
|
||||
|
||||
add_test(
|
||||
NAME LibWeb
|
||||
COMMAND $<TARGET_FILE:test-web> --python-executable ${Python3_EXECUTABLE} --per-test-timeout 120 -v -v
|
||||
|
||||
Reference in New Issue
Block a user