Is Ladybird CMake Yet?

Is CMake Profitable Yet?
Last updated on 10:45AM on May 06, 2025 (TZ: UTC+0000)

Individual commit stats

CMake: Explicitly set CMAKE_OSX_SYSROOT to macosx for macOS host builds

CMake: Remove warning suppression for unknown attributes

AK: Annotate [[no_unique_address]] members with NO_UNIQUE_ADDRESS macro

CMake: Disable [[no_unique_address]] when Swift is enabled

AK: Add macro to switch between no_unique_address attribute forms

Meta: Use presets, chosen clang and explicit sysroot to build fuzzers

CMake: Add macro to wrap C++ command line definitions for swiftc

LibGC+LibWeb+LibJS: Remove workaround for Swift boolean bitfield issue

WebContent: Remove unused private member

CMake: Refactor FindSwiftTesting to find TestingMacros dir on macOS

LibWeb+LibGC: Import GC swift module into LibWeb and an initial user

LibGC: Teach Swift bindings about Cell and Cell::Visitor

AK: Add cxxCast template to allow Swift to perform simple checked casts

LibGC+LibJS+LibWeb: Add workaround for Swift boolean bitfield issue

AK: Mark Function as SWIFT_UNSAFE_REFERENCE

CI: Bump CI Xcode version to 16.2

Revert "CI: Temporarily install CMake 3.x"

Meta: Update vcpkg to latest main revision

Revert "Meta: Add workaround for CMake 4.0 policy minimum changes"

Meta: Add workaround for CMake 4.0 policy minimum changes

Meta: Explicitly enable zstd feature for tiff in vcpkg

Meta: Omit vcpkg overlay ports from style and EOF lints

Revert "Meta: Add fontconfig and freetype vcpkg overlays"

Meta: Update vcpkg to latest master

CI: Temporarily install CMake 3.x

LibWeb: Devirtualize CSS::CalculatedOr

CMake: Remove unused CMake functions

AK: Support storing blocks in AK::Function

CMake: Add find module for BlocksRuntime on non-Apple platforms

AK: Add cast using objective-c __bridge qualifier

AK: Add feature detection for -fblocks and -fobjc-arc

CMake: Allow passing test name to serenity_test

LibUnicode: Specify ICU 76 in LibUnicode/CMakeLists.txt

LibDevTools+LibWebView: Avoid dependence on LibWebView from LibDevTools

CMake: Ensure build and test presets for Distribution and Debug

CI: Use CMake build preset directly instead of a fuzzer flag

CI: Use arch variable in ci.yml instead of always using 'Lagom'

Devcontainer: Set VCPKG_FORCE_SYSTEM_BINARIES when building cache

Meta: Disable implicit-const-int-float-conversion for clang-cl

LibTest: Remove uses of gettimeofday in favor of AK::Time

LibLine: Use AK::Time instead of gettimeofday for history entries

Meta+LibWeb: Pass IDL files to codegen using response file on Windows

Meta: Add a workaround for missing dllimport for skcms API

LibTLS: Disable connect() on windows

Meta: Clarify what IDL files need adding to idl_files.cmake

Meta/CMake: Use standard attribute syntax in skia/portfile.cmake

Meta/CMake: Use simple string match to find relevant vcpkg triplets

CMake: Enable -Wl,--no-undefined on ELF platforms

CMake: Enable -Werror unconditionally

CMake: Also set VCPKG_HOST_TRIPLET to the dynamic triplet

LibWebView: Accept Noto Sans Mono as a monospace font

CMake: Rename our triplets to their canonical names

LibCrypto: Link with OpenSSL

CMake: Add workaround for binutils+patchelf incompatability

LibCore: Add ProcessWindows.cpp to CMakeLists

CMake: Fix Windows exceptions flag

CMake: Check for Swift-aware C++ compiler more robustly

CMake: Store the CMake sauce to add no-as-needed libraries to cache

LibWeb: Add CMake dependencies for GeneratedCSSStyleProperties.idl

CMake: Enable no-as-needed hack for all link languages, not just C++

AK: Add a Swift helper for StringView::ends_with

Services: Remove unused main.cpp and CMakeLists.txt files

CI: Use clang for `js` artifacts on Linux

CI: Use the distribution release configuration for `js` artifacts

Meta: Support fully static distribution release builds

CMake: Force-load fontconfig into dependencies of skia

CMake: Add include_guard() statements to fontconfig and vulkan

CMake: Add a Fuzzers preset for building fuzzers locally

Meta: Add overlay port for skia to patch generated skparagraph.gni

Meta: Bump simdutf to version 5.6.0

Meta: Use dynamic vcpkg linkage for release builds

Meta: Move the vcpkg installation/cache directories under Build

Meta: Change the default build directories to exclude "ladybird" prefix

CMake: Install simdutf runtime components as required

Meta: Update libpng to version 1.6.43#3

Meta: Update vcpkg to the October 2024 release

CMake: Add warning for missing field initializers globally

Documentation: Explain how to fix CMake errors in CLion

headless-browser: Force-enable font config via code rather than CMake

LibWeb: Don't re-invent println for sticky element test

CMake: Fix linker issues on Windows

CMake: Allow developers to append VCPKG_BINARY_SOURCES

CMake: Fix codesigning error on Intel macOS

Meta: Clean up generated CMake uservars

UI: Migrate headless-browser to be alongside other Ladybird chromes

AK: Use process name on Windows for dbgln()

Documentation: Add instructions for experimental native Windows build

CMake: Reorganize flags for ClangCL usage

Toolchain: Rewrite BuildVcpkg.sh in python

Meta: Add windows options to vcpkg

CMake: Add experimental windows native presets

LibMedia: Disable ffmpeg on windows

Meta: Add .vs to gitignore

Meta: Remove the WPT test target from CMake

UI/Qt: Remove Qt networking linkage from WebContent/WebWorker

LibMedia: Mark ffmpeg as required, and reorganize CMakeLists

Meta: Add third-party libraries to gn build with vcpkg install script

Meta: Add missing -Wno-unqualified-std-cast-call warning to gn build

LibMedia: Use build-time rather than configure-time check for avcodec

Meta: Update the build rules for AK

CMake: Update homepage url in project() declaration to point to .org

CMake: Don't install fonts on Linux

CMake: Don't install service libraries

CMake: Fix Makefile build on case-insensitive file system

CMake: Pull swift-testing from the Swift toolchain

CMake: Enable finding the Swift -target flag in more cases

Meta: Remove check-ak-test-files script

Meta: Remove unused functions from shell_include.sh

Meta: Check for CMake version in ladybird.sh

LibGfx: Use a diffrent way for finding libjxl on Android

LibGfx: Use Android functions when compiling for Android in TypefaceSkia

Android: Use LibWebView for command line flags

Android: Write prototypes to satisfy compiler

LibAudio: Override onAudioReady in PlaybackStreamOboe

LibAudio: Replace Duration with AK::Duration in PlaybackStreamOboe

CMake: Add find module for swift-testing

Meta: Apply cxx-interop settings to swift targets directly

CMake: Enable running unit tests with a Debug build/preset

Meta+Libraries+AK: Append Cxx to imported library module names in swift

CMake: Always use a target for linking skia

CMake: Add script to FetchContent the swift-collections library

LibGfx: Use new AK+Swift extensions to simplify parseHexString

AK+Meta: Add SwiftAK module to add helpers to construct swift Strings

LibGfx: Fix build with system skia

CMake: Add helper to swiftify imported properties from dependencies

AK: Conform SimpleIterator to the random access iterator requirements

CMake: Fix invalid target when using system skia

Meta: Add a script and CMake function to generate a clang module map

LibGfx: Include implicit header files from EdgeFlagPathRasterizer

CMake: Silence the loudest warnings for generating Swift interop headers

CMake: Apply C++ compile options to Swift compilations

AK: Disable -Wunqualified-std-cast-call explicitly in CMake

CMake: Work around two upstream CMake issues for Swift files

LibGfx: Add an implementation of #rrggbb color parsing in Swift

AK: Add a clang modules module map

CMake: Add proper sanitizer options for Swift files

Meta: Create a common Swift settings flow

CMake: Move GenerateSwiftHeader.cmake to Meta/CMake

Everywhere: Remove AK_DONT_REPLACE_STD macro

Ladybird: Reformat AppKit UI Swift files

Meta: Add swift-format configuration

LibGfx: Factor out #rrggbb Color parsing into its own helper function

CMake: Ensure that dependency targets are built before AppKit UI files

CMake: Enable policy 0157 for more control over Swift compile mode

Ladybird/AppKit: Port TaskManager window to Swift

CMake: Ensure C/C++ compile options only applied when compiling C/C++


-- Total CMake changes: 1793 insertions, 662 deletions

-- Total Non-CMake Code changes: 648 insertions, 642 deletions

-- Total Non-code changes: 2527 insertions, 1366 deletions

-- Total New CMake ratio: 96.91516709511568%


Lines of Code

-- CMake Adoption Rate: 1.8990956687291765%


More CMake than Churn? NO (Churn: code[6] + non-cmake[1161] = 1167, CMake: 1131)