37 Commits

Author SHA1 Message Date
Rocco Corsi
73b01a975a CI: Add All_Debug CI job 2025-10-27 08:46:02 -04:00
ayeteadoe
ee3c033de2 LibWebView: Enable in Windows CI 2025-08-23 16:04:36 -06:00
ayeteadoe
75d26b1610 CMake: Improve preset display names and descriptions
Now all configure and build presets have consistently formatted
display names with useful content
2025-07-09 16:26:59 -06:00
Jelle Raaijmakers
37b8ab54df CI+CMake: Remove most of the *_CI CMake presets
These existed because of their `vcpkg_ci` base preset, whose goal was to
enable vcpkg-supported caching on GitHub. We now handle vcpkg caching in
the CI steps, removing the necessity for all these *_CI preset variants.

This allows us to reuse `inputs.build_preset` in the test step, and we
can do away with the Windows-specific test step since it is now almost
identical to the Linux/macOS test step.

I've left in the Windows_CI presets, because that one actually results
in a different set of compiled files compared to the
Windows_Experimental presets.
2025-07-09 15:32:57 -06:00
Jelle Raaijmakers
4a57fe4392 CI+CMake: Enable vcpkg source assets cache
I've set up a shared vcpkg source assets cache using Azurite. By
default, it runs in read-only mode allowing anyone who builds Ladybird
to use the cache to speed up downloads of source tarballs. This should
alleviate some of the more slower vcpkgs downloads I've been seeing
lately.

CI runs on master put vcpkg in readwrite mode, updating the cache for
everyone.
2025-07-09 15:32:57 -06:00
ayeteadoe
f737ec2570 CMake: Rename SERENITY_* helper variables to LADYBIRD_* 2025-07-03 23:19:41 +02:00
ayeteadoe
91e7664849 CMake: Allow Windows to build Lib/Test GUI targets 2025-06-26 19:35:14 -06:00
ayeteadoe
56d7d50566 Meta: Add Windows sanitizer presets
Windows Clang supports both ASAN and UBSAN
2025-06-17 15:33:26 -06:00
Andrew Kaster
a0173b342f CMake: Add preset with swift interop enabled 2025-06-11 11:54:52 -06:00
ayeteadoe
f2a10bda32 CMake: Simplify preset structure for Windows
As we now are only officially supporting the Ninja generator for
Windows, the old preset structure can now be simplified. Also, we
now follow the naming conventions of the non-hidden presets.
2025-06-10 11:29:29 -06:00
Timothy Flynn
3786d56814 Meta: Remove msbuild presets
Let's just support ninja for simplicity. The msbuild presets are
significantly slower anyhow.
2025-05-30 13:52:51 -04:00
ayeteadoe
c9624d5118 Meta: Add build command to ladybird.py 2025-05-21 11:35:20 -06:00
Andrew Kaster
0c434485b4 CMake: Rework Windows build and test presets
Make them work with the new preset names, and hide platform-specific
presets on platforms that don't support them.
2025-05-20 12:51:30 -06:00
ayeteadoe
a11242f3de CMake: Expose Windows CI utilities
This will allow us to gradually build up official support for Windows,
as only targets we have explicitly marked as supported on windows will
be built and ran during CI.
2025-05-20 10:58:43 -06:00
Andrew Kaster
6eb0e9ab38 CI: Use a raw actions/cache step for vcpkg instead of the x-gha source
This is a workaround for the deprecation of the cache v1 REST API that
was replaced with a new protobuf RPC based API this month. vcpkg was
using the private cache backend API without the knowledge of the GitHub
actions team, and was thus broken by the deprecation.

While we wait for Microsoft to talk to Microsoft to get this feature
restored, we can use the raw actions/cache step to get almost the same
cache behavior. The only difference is that the cache will be less fine
grained than the per-package cache that VCPKG_BINARY_SOURCES of x-gha
was giving us before.
2025-04-24 17:40:39 -06:00
Jelle Raaijmakers
3bc6870bbf Meta: Make the "Release" build type use -O3 and -flto
This doesn't affect the default preset, but the Distribution preset will
now compile with these flags instead.
2025-04-01 13:44:05 +02:00
Andrew Kaster
13338a9532 CMake: Ensure build and test presets for Distribution and Debug 2025-02-21 12:05:18 +01:00
Andrew Kaster
673537b26b CMake: Rename our triplets to their canonical names
Becuase we're using dynamic libraries, our configuration is
classified as a "community triplet". To not confuse vcpkg
maintainers when developers create bug reports, name them
properly. This means that the default triplet detection is now
kind of useless, so we have to invent our own for these triplets.
2024-12-22 15:48:30 -07:00
Sam Atkins
1081a7f3e2 CI: Move sanitizer output into a separate CI step
Instead of writing ASAN and UBSAN output into the same stream we use for
test logging, direct them to log files, named asan.log.$PID and
ubsan.log.$PID, and then output them in a separate CI job that runs
afterwards. This should hopefully make it easier to see which tests are
failing.

The downside is that it's now harder to tell which tests the *SAN errors
are related to.
2024-12-04 15:35:15 +00:00
Timothy Flynn
0447d05d52 Meta: Support fully static distribution release builds
This adds the vcpkg triplets and CMake preset to perform release
builds for distribution. These builds are fully static, and currently
intended to be used for the `js` ESVU release.

In the future, linking everything statically into the final binary is
probably not what we will do for released Ladybird builds. Instead, we
may have a "libladybird.so", which is then linked into the binary. But
this should be fine for `js` for now.
2024-11-08 11:29:18 -07:00
Andrew Kaster
80d9949264 CMake: Add a Fuzzers preset for building fuzzers locally 2024-11-06 10:38:57 -07:00
Timothy Flynn
5681dbee64 Meta: Move the vcpkg installation/cache directories under Build
In addition to changing the build-type dependent build directories, we
can take this opportunity to move the vcpkg cache directory to the Build
folder itself. This probably isn't 100% needed, but it ensures that no
leftover artifacts are used from non-dynamic vcpkg builds, and it's also
generally nice to have all build artifacts under Build.
2024-11-06 10:38:57 -07:00
Timothy Flynn
4ffca2089e Meta: Change the default build directories to exclude "ladybird" prefix
The reason for this change is that CMake/vcpkg are unable to detect a
change to VCPKG_LIBRARY_LINKAGE. So when we switch to dynamic builds,
the switch would be non-functional, and every developer would have to
remove their Build and vcpkg cache directories manually. By changing
these directories, vcpkg is able to detect it must rebuild.
2024-11-06 10:38:57 -07:00
Timothy Flynn
6cd224bb88 Meta: Use release builds as the basis for Sanitizer builds
LLVM recommends compiling with at least -O1 to have decent performance
with sanitizers enabled. Indeed, this improves CI performance of LibWeb
tests as follows:

    GCC on Linux:   160.61s to 119.68s (40.93s faster)
    Clang on Linux:  65.56s to  55.64s ( 9.92s faster)
2024-10-26 22:58:40 +02:00
Andrew Kaster
8e716daa3d CMake: Allow developers to append VCPKG_BINARY_SOURCES
This enables adding extra binary caches, which will be useful for
devcontainers.
2024-10-14 15:55:23 -06:00
pheonixfirewingz
38f42f17fe CMake: Add experimental windows native presets
Co-Authored-By: Andrew Kaster <andrew@ladybird.org>
2024-10-10 21:48:41 -06:00
sideshowbarker
edf0d9b7bb CMake: Enable running unit tests with a Debug build/preset
Some checks failed
CI / Lagom (false, FUZZ, ubuntu-22.04, Linux, Clang) (push) Has been cancelled
CI / Lagom (false, NO_FUZZ, macos-14, macOS, Clang) (push) Has been cancelled
CI / Lagom (false, NO_FUZZ, ubuntu-22.04, Linux, GNU) (push) Has been cancelled
CI / Lagom (true, NO_FUZZ, ubuntu-22.04, Linux, Clang) (push) Has been cancelled
Package the js repl as a binary artifact / build-and-package (macos-14, macOS, macOS-universal2) (push) Has been cancelled
Package the js repl as a binary artifact / build-and-package (ubuntu-22.04, Linux, Linux-x86_64) (push) Has been cancelled
Run test262 and test-wasm / run_and_update_results (push) Has been cancelled
Lint Code / lint (push) Has been cancelled
Push notes / build (push) Has been cancelled
2024-08-28 01:13:16 -06:00
Timothy Flynn
7c813d3992 Meta+CI: Hook up the Lagom tools build with vcpkg
AK will depend on some vcpkg dependencies, so the Lagom tools build will
need to know how to use vcpkg. We can do this by sym-linking vcpkg.json
to Meta/Lagom (as vcpkg.json has to be in the CMake source directory).
We also need a CMakePresets.json in the source directory, which can just
include the root file. The root CMakePresets then needs to define paths
relative to ${fileDir} rather than ${sourceDir}.
2024-07-18 14:46:25 +02:00
Timothy Flynn
d9470d6a93 Meta: Add a debug build CMake preset
Since the default mode now only builds release vcpkg libraries, having
an easy-to-create debug build will be convenient.
2024-06-28 12:10:59 -04:00
Timothy Flynn
1c2aef9255 Meta: Only build vcpkg dependencies in release mode by default
We currently build debug and release versions of vcpkg dependencies. We
will most commonly only need the release version, so let's default to
that to approximately halve our dependency build time.
2024-06-28 12:10:59 -04:00
Andrew Kaster
bf3c11229f CMake: Create a set of vcpkg overlay triplets for sanitizers
This changes the Sanitizer configs to build all the vcpkg dependencies
with our specified CFLAGS and CXXFLAGS for ASAN and UBSAN.

Unfortunately, we can't yet enable actually compiling them with
sanitizers enabled, because this causes test failures that need to be
investigated.
2024-06-18 04:47:57 -06:00
Timothy Flynn
7242fdcf23 Meta: Change the default build type to RelWithDebInfo
By default, we were linking the debug version of all vcpkg dependencies,
which was very noticeable in benchmarks. Let's default to a build type
with reasonable performance.
2024-06-17 09:25:25 -04:00
Andrew Kaster
bffdd280bf CI: Create and use a GitHub Actions cache for vcpkg 2024-06-07 11:15:48 -04:00
Andrew Kaster
62b016002a CMake: Set vcpkg options in CMakePresets 2024-06-07 11:15:48 -04:00
Andrew Kaster
4f406b0d1d Documentation: Update RunningTests to refer to CMakePresets 2024-06-06 10:09:46 -06:00
Hexeption
6a1a62d9b6 CMake: Added VCPKG_ROOT env to presets 2024-06-06 10:09:11 -06:00
Andrew Kaster
74e82b57cf CMake: Add a CMakePresets.json to make IDE integration easier 2024-06-04 13:44:22 -06:00