summaryrefslogtreecommitdiff
path: root/Meta/serenity.sh
AgeCommit message (Collapse)Author
2022-12-28Meta: Remove i686 targetLiav A
2022-12-25Meta: Enable starting ladybird from serenity.shAndrew Kaster
This solution feels really hacky and should be refined later.
2022-12-24Meta: Move UCD/CLDR/TZDB downloaded artifacts to Build/cachesTimothy Flynn
They currently reside under Build/<arch>, meaning that they would be redownloaded for each architecture/toolchain build combo. Move them to a location that can be re-used for all builds.
2022-12-19Documentation: Adjust default TARGET to x86_64 in the documentation0xxFF
2022-12-17Meta: Prefer clang as a host compiler to gccAndrew Kaster
2022-12-17Meta: Allow building with Apple clang 14.xAndrew Kaster
We previously disregarded Apple clang entirely, since no released version was able to succesfully build Lagom. Xcode 14 seems to have all the features we need, as we haven't added any code that needs trunk clang features in quite a while.
2022-12-13Meta: Build CMake from source if version is too old in serenity.shAndrew Kaster
2022-11-25Meta: Use proper versions in is_compiler_supported check in serenity.shAndrew Kaster
We were checking the compilers against clang-12 and gcc-10. Since the check itself is confusing, some comments are warranted.
2022-10-25Everywhere: Require version >= 12 for GCC host compilerLinus Groh
So far we've gotten away with using GCC 11 for Lagom and to compile the toolchain, but via #15795 we discovered a compiler bug that has been fixed in the latest version but would error the build with CI's GCC 11. Time for an upgrade :^) We already use ubuntu-22.04 images in most places, so this is pretty straightforward. The only exception is Idan's self-hosted runner, which uses Ubuntu Focal. LibJS should build fine with GCC 11, still.
2022-10-24Meta: Also set CC/CXX when selecting the host toolchainTim Schumacher
This ensures that the toolchain building scripts will use the host toolchain that has been found manually, and that they won't fall back to `cc` (which in the worst case may not even be installed).
2022-10-16Meta: Print error if cmake does not existdemostanis
2022-10-03Meta: Make x86-64 target the defaultLiav A
This is a preparation to check if our users find noticeable bugs in the x86-64 target, before we can decide if we want to remove the i686 target for good.
2022-09-18Meta: Fix example invocations of the serenity.sh run commandBen Wiederhake
2022-09-14Everywhere: Fix a variety of typosBrian Gianforcaro
Spelling fixes found by `codespell`.
2022-09-13Meta: Add confirmation for toolchain rebuilds if there's one alreadynetworkException
2022-08-24Toolchain: Update binutils to version 2.39Brian Gianforcaro
2022-08-14Everywhere: Get rid of the fbdev kernel boot argument remaindersLiav A
2022-07-10Meta: Teach pick_host_compiler about Homebrew ClangDaniel Bertalan
Homebrew does not add upstream LLVM's install location to $PATH so as not to conflict with XCode tools, so we should look for it by its absolute path. LLVM is installed to /opt/homebrew/opt/llvm on ARM Macs, and is a symlink that points to the latest stable LLVM version.
2022-05-31Meta: Add error message when running serenity.sh as rootAndrew Kaster
It's not a good idea, and it causes countless issues for people who do so and then try to run without root later.
2022-05-17Meta: Validate explicitly set TOOLCHAIN in `serenity.sh`Jelle Raaijmakers
Previously, `serenity.sh rebuild-toolchain x86_64 clang` would simply start building GCC instead and call it a day. With this change, if a toolchain is passed as an argument, it is validated if it is either "GNU" or "Clang" and exits with an error otherwise. The `TOOLCHAIN` value defaults to the `SERENITY_TOOLCHAIN` environment variable if not provided explicitly.
2022-04-26Meta: Allow Clang to be used as the host compiler for LagomDaniel Bertalan
Various Clang binaries are now considered when choosing the compiler for Lagom. The selection precedence is as follows: 1. Use the compiler set via CC/CXX if it's a supported version 2. Use newest available GCC if it's supported 3. Use newest available Clang if it's supported Note that Apple Clang is still not supported, as its versioning scheme and the fact that it masquerades as both GCC and Clang would complicate this logic even more. Fixes #12253
2022-03-27Meta: Fix path to GCC's addr2line in serenity.shLinus Groh
I'm not sure when this changed, but the path is wildly different now.
2022-03-24Meta: Disable KASLR when debugging the kernel with GDBIdan Horowitz
This lets GDB resolve the kernel symbols correctly.
2022-03-08Meta: Fix that the processor count was output to stderr and ignoreddavidot
Because of ninja's default behavior of using all processors this gave the correct behaviour because MAKEJOBS was empty. However this meant that the processor count was printed to stderr when building.
2022-03-08Meta: Read MAKEJOBS to limit jobs for ninja in serenity.shdavidot
The default behavior of using all cores will still apply if no MAKEJOBS variable is supplied.
2022-02-19Meta: Make `serenity.sh gdb` work with the Clang toolchainDaniel Bertalan
We now pass along the toolchain type to all subcommands. This ensures that gdb will load the correct debug information for kernels compiled with Clang, and the following warning won't appear with the GNU toolchain: > WARNING: unknown toolchain 'gdb'. Defaulting to GNU. > Valid values are 'Clang', 'GNU' (default)
2022-02-14Meta: Add support for the Limine bootloaderczapek1337
2022-02-11Meta: Enable RELR relocationsDaniel Bertalan
Also add a check to serenity.sh to ensure that the toolchain is new enough for this feature to work.
2022-01-07Meta+CI+Documentation: Bump host gcc requirement up to gcc 11Andrew Kaster
Bump macOS CI version to macOS 11 while we're here.
2021-12-29Meta: Add egcc as a GCC candidatetuftedocelot
egcc is the alias for the GCC compiler (since OpenBSD uses Clang by default). Toolchain/BuildIt.sh has the necessary adjustments, but the compiler check occurs before BuildIt.sh is called.
2021-11-02Meta: Don't check for toolchain if serenity.sh target is lagomLinus Groh
This is just silly :^) $ serenity run lagom js WARNING: unknown toolchain 'js'. Defaulting to GNU. Valid values are 'Clang', 'GNU' (default)
2021-10-25Kernel+SystemServer: Change bootmode to system_modeBen Wiederhake
'bootmode' now only controls which set of services are started by SystemServer, so it is more appropriate to rename it to system_mode, and no longer validate it in the Kernel.
2021-10-25Kernel: Separate panic behavior from bootmodeBen Wiederhake
Bootmode used to control panic behavior and SystemServer. This patch factors panic behavior control into a separate flag.
2021-10-25Kernel: Separate framebuffers from bootmodeBen Wiederhake
Bootmode used to control framebuffers, panic behavior, and SystemServer. This patch factors framebuffer control into a separate flag. Note that the combination 'bootmode=self-test fbdev=on' leads to unexpected behavior, which can only be fixed in a later commit.
2021-10-17Meta: Support llvm-addr2line in `serenity.sh`Daniel Bertalan
With this, the subcommands 'addr2line` and `kaddr2line` work as with the GNU toolchain.
2021-10-17Toolchain+Meta: Update LLVM version to 13.0.0Daniel Bertalan
This commit updates the Clang toolchain's version to 13.0.0, which comes with better C++20 support and improved handling of new features by clang-format. Due to the newly enabled `-Bsymbolic-functions` flag, our Clang binaries will only be 2-4% slower than if we dynamically linked them, but we save hundreds of megabytes of disk space. The `BuildClang.sh` script has been reworked to build the entire toolchain in just three steps: one for the compiler, one for GNU binutils, and one for the runtime libraries. This reduces the complexity of the build script, and will allow us to modify the CI configuration to only rebuild the libraries when our libc headers change. Most of the compile flags have been moved out to a separate CMake cache file, similarly to how the Android and Fuchsia toolchains are implemented within the LLVM repo. This provides a nicer interface than the heaps of command-line arguments. We no longer build separate toolchains for each architecture, as the same Clang binary can compile code for multiple targets. The horrible mess that `SERENITY_CLANG_ARCH` was, has been removed in this commit. Clang happily accepts an `i686-pc-serenity` target triple, which matches what our GCC toolchain accepts.
2021-10-07Meta: Warn on `rebuild-toolchain i686 clang`Nico Weber
It's "Clang" (capitalized). Silently building gcc if the toolchain isn't know seems a bit unfriendly. So print a warning for this (and for other unknown toolchains).
2021-09-16Meta: Ensure BUILD_LAGOM is set when running `serenity.sh test lagom`Andrew Kaster
If the superbuild created the lagom binary directory, it won't set BUILD_LAGOM=ON in the CMake cache for that binary directory. Insert a check into build_target() to make sure that if the user explicitly asks for the lagom target, we have all our ducks in a row.
2021-09-15Meta: Update serenity.sh for the SuperBuildAndrew Kaster
Direct build commands to the SuperBuild's binary directory, and image/run commands to the Serenity binary directory. As a side benefit, make the lagom target only build Lagom instead of the entire OS alongside Lagom.
2021-09-07Meta: Don't immediately continue in serenity.sh's gdb optionIdan Horowitz
This allows us to step through the initial boot instructions.
2021-09-03Meta: Add the ability to specify clang with serenity.shTom
This enables maintaining gcc and clang builds side-by-side.
2021-08-29Meta: Remove duplicate valid target check from serenity.shLinus Groh
2021-08-29Meta: Mention aarch64 as a supported TARGET in serenity.sh's helpLinus Groh
2021-08-28Toolchain: Enough to make `rebuild-toolchain aarch64` workNico Weber
The gcc patch might not be completely correct, but at least the toolchain completes building.
2021-08-28Meta: Let serenity.sh's TARGET default to SERENITY_ARCH, not i686Linus Groh
This environment variable is already widely used across our build scripts and tooling, so serenity.sh should respect it as well. It still uses i686 as the fallback.
2021-08-22Meta: Add 'copy-src' command to serenity.shItamar
This command copies the project's source tree to /home/anon/Source/serenity in the built disk image. This will be useful for working on serenity inside serenity :^)
2021-07-10Documentation: Reorganize the build documentationGunnar Beutner
2021-07-10Meta: Automatically pick an appropriate GCC binaryGunnar Beutner
2021-07-01Meta: Make serenity.sh pass the SERENITY_ARCH cmake argument for x86_64Idan Horowitz
This is required as our CMake config defaults to i686 if not overriden manually via the SERENITY_ARCH argument.
2021-06-02Meta: Remove duplicated ensure_toolchain from serenity.shLinus Groh