summaryrefslogtreecommitdiff
path: root/Toolchain
AgeCommit message (Collapse)Author
2023-05-15Toolchain: Enable RELRO support for AArch64Daniel Bertalan
The BFD linker requires the `COMMONPAGESIZE` emulation parameter to be set in order to enable RELRO support for AArch64. As we are adding a custom `emulparams` file anyways, let's also tell LD that our ELF interpreter is called `/usr/lib/Loader.so`. This commit also removes some vestigial references to i686 SerenityOS. The one in `gas/configure.tgt` is still needed, as it also handles x86_64.
2023-05-15Toolchain+Ports: Update GCC to 13.1.0Daniel Bertalan
This is a mostly straight-forward rebase of our patches on top of 13.1.0. The spec files needed a change, as GCC no longer supports STABS debug information, but we were building GCC with support for it. Highlights of this release include static `operator()`, The Equality Operator You Are Looking For and extended `constexpr` support.
2023-05-15Toolchain: Use xz-compressed GCC and Binutils archivesDaniel Bertalan
This reduces the downloaded archives' size from 143+46 MB to 81+25 MB.
2023-05-07Toolchain: Replace inline nproc with get_number_of_processing_units()Kenneth Myhra
2023-05-06Toolchain: Use ninja to bootstrap CMakeMacDue
For some reason (for me) on Ubuntu 22.04 the standard make generator fails: --------------------------------------------- CMake has bootstrapped. Now run gmake. make: make: Permission denied make: *** [Makefile:166: all] Error 127 This seems to be because Source/kwsys/CMakeFiles/cmsys.dir/depend is missing or not generated. Using ninja works fine though, and as it is already the default for Serenity proper, it seems reasonable to switch it here too.
2023-04-29Toolchain: Patch QEMU to support reading kernel cmdline via RPI MailboxDaniel Bertalan
This commit backports my upstream QEMU patch to implement this functionality, which is currently waiting for review. It was submitted here: https://lists.nongnu.org/archive/html/qemu-arm/2023-04/msg00549
2023-04-29Toolchain: Fix self-built QEMU crashing on startup on macOSDaniel Bertalan
If the SDL libraries are present on the system, QEMU will attempt to use that for rendering the UI. This causes a crash when the AArch64 port starts up with the following message: > NSWindow drag regions should only be invalidated on the Main Thread! Fix this by explicitly disabling SDL support.
2023-04-25Toolchain: Exit Build*.sh scripts if executed as rootKenneth Myhra
2023-04-23Toolchain+Ports: Consolidate version information for QEMUKenneth Myhra
This consolidates version information, archive's download location, filename and SHA256 checksum into version.sh. This file is then sourced from the port script and toolchain build script. The version.sh script contains the following variables: - QEMU_VERSION - Version number - QEMU_ARCHIVE - Filename - QEMU_ARCHIVE_URL - Full url to download location - QEMU_ARCHIVE_SHA256SUM - The SHA256 checksum
2023-04-15Toolchain: Add imagemagick to serenity.nixLinus Groh
This is required to install ports with a launcher icon.
2023-04-14Ports/llvm: Increase the default stack size for LLVM executablesTim Schumacher
2023-04-11Toolchain: Move GDB build to a separate scriptDaniel Bertalan
Target GDB is only used for debugging the kernel, which is not relevant to most people. Starting with 924758c6f8bcf, GDB would always be built as part of the toolchain if the user didn't have it installed. This is unnecessary. This commit adds a separate script for building GDB, which the user needs to explicitly invoke. A message is added to Meta/debug-kernel.sh which alerts the user to this fact.
2023-04-09Meta+Toolchain: Redirect GDB error output to stdout before greppingTim Schumacher
2023-04-08Toolchain: Stop building QEMU with i386 supportMarco Cutecchia
2023-04-03Toolchain+Meta: Support kernel debugging with host AArch64 GDBDaniel Bertalan
Previously, we would unconditionally build GDB from source for the AArch64 toolchain. This commit makes it possible to use the system's `gdb` binary if it supports the architecture, or `aarch64-elf-gdb` if such a package is installed. An `aarch64-elf-gdb` package will be available through Homebrew once this PR is merged: https://github.com/Homebrew/homebrew-core/pull/127323
2023-04-02Toolchain: Allow many patches for gdb and add clang workaroundAndrew Kaster
This ports https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ae61525fcf456ab395d55c45492a106d1275873a from upstream binutils, which enables building with the newest host clang versions.
2023-04-02Toolchain: Update gdb to version 13.1Andrew Kaster
2023-04-02Toolchain: Create an `nm` symlink for ClangTim Schumacher
This is required for building the QEMU port using Clang.
2023-03-27Toolchain: Update binutils to version 2.40Cameron Youell
2023-03-27Ports/binutils: Update binutils to version 2.40Cameron Youell
2023-03-17Toolchain: Update CMake to version 3.26.0 in `BuildCMake.sh`EWouters
2023-03-16Toolchain: Add grub2 and parted to serenity.nixLinus Groh
This allows building the GRUB disk image from within the nix shell.
2023-03-13Toolchain: Use '|' as sed delimiter in Build{Clang,It}.sh, not '@'Linus Groh
The latter is problematic as it may be contained in the username (e.g. email address-like) and thus the $SRC_ROOT path. This would cause an invalid sed command to be created, breaking both of these scripts.
2023-03-01Toolchain: Don't abuse crt{begin,end}.o for shared or PIE binariesTim Schumacher
aarch64 required this to successfully build, but the actual fix to that is to just make sure that crtbeginS and crtendS get built as a part of the toolchain. This partially reverts commit c18c84dbfdc18effe5f8c5ffb56b2f5549e6bf90.
2023-02-11Toolchain: Add fuse2fs to serenity.nixBaitinq
This previously missing package was needed for root-less image building :)
2023-01-25Toolchain: Ensure aarch64 libgcc_s.so.1 includes DT_SONAME tagTimon Kruiper
Without this tag, executables that link libgcc_s.so.1, which is every executable, end up with the host path to libgcc_s.so.1 as the path for the dynamic dependency (DT_NEEDED) of the executable. By making sure that the libgcc_s.so.1 shared object includes the DT_SONAME tag, the path to libgcc_s.so.1 dynamic dependency will only contain the basename, instead of the absolute host path.
2023-01-09Toolchain: Do not use `install -D` in BuildIt.shNico Weber
`-D` doesn't exist on macOS. Just call `mkdir -p` instead.
2023-01-09Toolchain: Add macOS definitions of MD5SUM and NPROC in BuildIt.shNico Weber
2023-01-09Toolchain: Make BuildCMake.sh work on macOS without brew on PATHNico Weber
2022-12-30Toolchain: Fix aarch64 toolchain GDB buildkleines Filmröllchen
We just need to pass -disable-werror, otherwise Clang will complain a lot.
2022-12-28Meta: Remove i686 targetLiav A
2022-12-13Toolchain: Remove upstreamed CMake platform files :^)Andrew Kaster
2022-12-13Toolchain+Meta: Add script to build CMake from sourceAndrew Kaster
Since we upstreamed CMake support for Serenity, we can use the Platform files from upstream instead of keeping our local copy. While not added in this commit, we can add patching capabilities for the platform files similar to what we do for gdb, llvm, gcc, and binutils later.
2022-11-13Toolchain: Add libxcrypt to serenity.nixVictor Hugo Aguiar Pacce
Should deal with build errors related to a missing crypt.h file
2022-11-12Toolchain: Fix missing makeinfo on macOS VenturaSteffen Rusitschka
macOS ventura no longer comes with makeinfo. binutils has already been fixed - see https://github.com/SerenityOS/serenity/pull/15932 This patch does the same for GDB.
2022-11-05Toolchain: Disable makeinfo for binutilsChristopher Wales
This is necessary to build on MacOS. As discussed in #15530, Serenity no longer appears to build on MacOS Ventura. This attempts to fix that by enforcing it at the command level.
2022-11-01Toolchain: Use pkg-config instead of pkgconfig in serenity.nixMarco Rebhan
pkgconfig was renamed to pkg-config in nixpkgs.
2022-11-01Toolchain: Update gcc11 to gcc12 in serenity.nixMarco Rebhan
2022-10-27Toolchain: Update BuildQemu.sh to qemu-7.1Kenneth Myhra
QEMU 7.1 was released on August 30th. Release Notes: https://wiki.qemu.org/ChangeLog/7.1 The patch 'Toolchain/Patches/qemu-cf-protection-none.patch' (or similar) has been upstreamed so it can be safely removed.
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-24Toolchain: Update LLVM to 15.0.3Tim Schumacher
2022-10-21Toolchain: Keep LLVM from using `shm_open` and friendsTim Schumacher
I originally missed this while handling the upgrade to LLVM 15 (as it only affects the on-serenity port), so the patch gets to be here with a bit of a delay. Co-Authored-By: sin-ack <sin-ack@users.noreply.github.com>
2022-10-20Toolchain: Fix nix-shell; fuse2fs is now part of e2fsprogs derivationgrxnola
2022-10-14Toolchain: Fix building libgcc for AARCH64Gunnar Beutner
There was a typo in one of the spec files which resulted in us not building softfp support for libgcc. Additionally we were missing flags to build libgcc_s. This patch also makes sure we're not trying to link against crtbeginS.o and crtendS.o. This is part of a larger effort to at least get the userland to build at all.
2022-10-14Toolchain: Add SerenityOS to the LLVM config.guessTim Schumacher
2022-10-11Toolchain: Force makeinfo to be a no-opTim Schumacher
Neither are we changing any of our documentation files, nor do we need any of the documentation that is likely being built. With macOS potentially removing makeinfo from the default Xcode lineup, SerenityOS not being able to install it at all currently due to a lack of perl, and it otherwise just being a dependency that has to be installed to make the build system happy, lets just stub it out.
2022-10-06Toolchain: serenity.nix: Fix fuse2fs not being installedBaitinq
Nix (nixpkgs) have updated a while back how the e2fsprogs derivation works and now fuse2fs wasnt being installed with it. It is now needed to add a new derivation (package) to the dependency list: "fuse2fs". This fixes the Meta/serenity.sh script not finding the fuse2fs binary for rootless image building :^)
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-10-03Toolchain: Update BuildMold to mold 1.5.1 and use CMakeAndrew Kaster
Per the release notes for 1.5.0, the CMake build is preferred going forward.
2022-10-01Toolchain: Hardcode the results of LLVM runtime library detectionTim Schumacher
This keeps us from accidentally building toolchains that don't make it through a clean build if we build them using a populated sysroot, as it would otherwise detect libpthread and friends and try to pull them in while LibC is not yet built.