Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CI: Add CMake a preset for "official" builds, and use it for js artifacts #2225

Merged
merged 3 commits into from
Nov 8, 2024

Conversation

trflynn89
Copy link
Contributor

This adds the vcpkg triplets and CMake preset to perform official 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.

Example build:
https://github.com/trflynn89/ladybird/actions/runs/11743377506

AK/CMakeLists.txt Show resolved Hide resolved
Meta/CMake/vcpkg/official-triplets/x64-linux.cmake Outdated Show resolved Hide resolved
@@ -87,6 +87,18 @@
"generator": "Visual Studio 17 2022",
"toolset": "ClangCL"
},
{
"name": "Official",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not entirely sure about naming this "official", since everything in this repository and its results could be considered "official"... maybe "distribution" is a better fit?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah the name "official" just came from a similar config that Chromium uses, open to bikeshedding here

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As briefly discussed, ReleaseStatic seems appropriate, I'll push up the change

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the intent to have a ReleaseStatic config, or do you want a config for what you'll eventually want to ship (which, in time, will probably also include things like PGO and LTO or PLO, and which will likely be too slow to use outside of builds for distribution)? If the latter, maybe don't make the name too specific to what it currently is.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point, it's the latter. So, Distribution instead

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.
We have optimizations that only work with clang (namely, our use of
FLATTEN in the bytecode interpreter).
@ADKaster ADKaster merged commit f9df95a into LadybirdBrowser:master Nov 8, 2024
6 checks passed
@trflynn89 trflynn89 deleted the js_artificts branch November 8, 2024 18:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants