summaryrefslogtreecommitdiff
path: root/Toolchain
AgeCommit message (Collapse)Author
2021-07-10Toolchain: Use correct variable when deleting the QEMU tarballGunnar Beutner
2021-07-08Toolchain: Fix building toolchain on arm64 macsmodmuss50
This patch is based off: https://github.com/osx-cross/homebrew-avr/pull/248 and https://github.com/riscv/riscv-gnu-toolchain/issues/800
2021-07-06Kernel+Toolchain: Remove the kernel-specific toolchainGunnar Beutner
This is no longer necessary now that the kernel doesn't use libsupc++ anymore.
2021-07-03Meta: Change the QEMU binary directory to Toolchain/Local/qemuGunnar Beutner
Previously we'd place the QEMU binaries into the architecture-specific toolchain directory. This is a problem because the BuildIt.sh script clears those directories which also removes the QEMU binaries users may have built earlier. Also, the QEMU binaries are not specific to the target architecture.
2021-06-29Toolchain: Allow containerized work with Serenity via Dockerkleines Filmröllchen
Docker is a nice way of doing build automation, or just containerizing builds for increased safety and isolating unstable packages. The old Dockerfile in the toolchain did not satisfy these needs. The new Dockerfile is known to run successfully on Docker version 20.10.7. It clones the SerenityOS repo and builds the toolchain. In this way, it is intended to be a starting point for other Docker images that can e.g. run builds. For example, one can simply run this docker image as-is, exec a shell in it and run a build there.
2021-06-26Toolchain: Build the x86_64 target in addition to i386 in BuildQemu.shIdan Horowitz
2021-06-07Toolchain: Add `gettext` as a dependency to `Dockerfile`Jelle Raaijmakers
We need `msgfmt` inside of the `gettext` package in order to build the git port.
2021-06-07Toolchain: Add `ccache` to DockerfileJelle Raaijmakers
Following up on 2d38d56e, we were missing this in our Dockerfile.
2021-06-07Toolchain+Ports: Fix building binutils on FreeBSDGunnar Beutner
This imports the upstream patch from https://sourceware.org/bugzilla/show_bug.cgi?id=27382 Fixes #7407.
2021-06-04Toolchain: Add ImageMagick to DockerfileJelle Raaijmakers
2021-06-03Toolchain: Use gcc's arHediadyoin1
the vanilla versions might not handle all things, that gcc can do; For example is lto not really supported by the vanilla versions source: https://gcc.gnu.org/wiki/LinkTimeOptimizationFAQ
2021-06-02Toolchain: Set CMAKE_AR to the right executableOleg Kosenkov
2021-05-30Toolchain: Remove dependency check for texinfoGunnar Beutner
Turns out we don't need that after all.
2021-05-30Toolchain: Check whether required tools and libraries are availableGunnar Beutner
Rather than having the toolchain build fail half-way through we should check whether the user has installed all the required tools and libraries early on.
2021-05-27Toolchain: Use set -o pipefail to the toolchain build scriptGunnar Beutner
Previously the buildstep function would obscure error codes because the return value of the function was the exit code for the sed command which caused us to continue execution even though one of the build steps had failed. With set -o pipefail the return value of the buildstep function is the real command's exit code.
2021-05-21Toolchain: Replace the -march=native flag with -mtune=nativeIdan Horowitz
This ensures inter-machine compatibility by not emitting any processor specific instructions. This fixes the issue raised by the non AVX-512 supporting GitHub actions runners.
2021-05-21Toolchain: Enable native host optimizations when building toolchainBrian Gianforcaro
-march=native specializes the binaries for the CPU features available on the CPU the binary is being compiled on. This matches the needs of the Toolchain, as it's always built and used on that machine only. This should be safe for the github actions VMs as well, as they all run on a standard VM SKU in "the cloud". I saw small but notable improvements in end-2-end build times in my local testing. Each compilation unit is on average around a second faster on my Intel(R) Core(TM) i7-8705G CPU @ 3.10GHz.
2021-05-09Toolchain+Ports: Skip link tests for libstdc++v3Gunnar Beutner
This makes stdlib.h and stdio.h functions available in the std namespace for C++. libstdc++v3's link tests can fail if you don't have an up-to-date build directory, for example: 1. Have libc with missing _Exit symbol because you haven't done a build since that was added. 2. Run toolchain rebuild. libstdc++v3's configure script will realize that it can do link tests in general but will fail later on when it tries to link a program that tests for _Exit. Even though this is a toolchain patch this does not necessarily require rebuilding the toolchain right away. This is only required once we start using any of these new members in the std namespace, e.g. for ports.
2021-05-07Toolchain: Make -nodefaultlibs not link against libgcc_sGunnar Beutner
This fixes the -nodefaultlibs flag for gcc which previously linked against libgcc_s anyway. Even though this is a toolchain patch we don't need to rebuild the toolchain right away.
2021-05-05Toolchain: Fix expansion bugs and make BuildIt.sh shellcheck compliantBrian Gianforcaro
BuildIt.sh had a bunch of SC2086 errors, where we were not quoting variables in variable expansions. The logic being: Quoting variables prevents word splitting and glob expansion, and prevents the script from breaking when input contains spaces, line feeds, glob characters and such. Reference: https://github.com/koalaman/shellcheck/wiki/SC2086 As bcoles noticed in #6772, shellcheck actually found a real bug here, where the user's build directory included spaces. Close: #6772
2021-05-05Toolchain: Make BuildFuseExt2.sh shellcheck compliantBrian Gianforcaro
BuildFuseExt2.sh was saying it should be run under /bin/sh but it is using bash extensions like pushd/popd, ${BASH_SOURCE[0]}, etc. So just run it under bash to avoid any potential issues.
2021-05-05Toolchain: Make BuildPython.sh shellcheck compliantBrian Gianforcaro
Shellcheck is unable to source non-literal includes, so inform shellcheck to just ignore this include.
2021-05-03Toolchain: Enable building all code with -fPICGunnar Beutner
Ordinarily this would force the compiler to not inline certain symbols and call them via the PLT instead. To counteract this I've also added -fno-semantic-interposition which disables ELF symbol interposition. Our dynamic loader doesn't support this anyway and we might even consider not implementing this at all. Even though this is a toolchain change this doesn't require rebuilding the toolchain unless you're planning to build for the x86_64 arch.
2021-04-30Toolchain: Upgrade to QEMU 6.0 releaseBrian Gianforcaro
2021-04-29Toolchain: Update the binutils patch file to match the portGunnar Beutner
Previously the toolchain's binutils would not have been able to build binaries on 32-bit host systems (not that this would be much of an issue nowadays) because one of the #ifdefs was in the wrong place. I moved the #ifdef in the port's patch and this now updates the toolchain's patch file to match the port's patch.
2021-04-29Toolchain+Ports: Update GCC to version 11.1.0Gunnar Beutner
2021-04-28Toolchain: Update QEMU to 6.0.0-rc5Brian Gianforcaro
Changes since rc4: 0cef06d187: Update version for v6.0.0-rc5 release 5351fb7cb2: hw/block/nvme: fix invalid msix exclusive uninit ffa090bc56: target/s390x: fix s390_probe_access to check PAGE_WRITE_ORG bc38e31b4e: net: check the existence of peer before trying to pad
2021-04-27Build: Use variables when concatenating Toolchain paths.Brian Gianforcaro
Make this stuff a bit easier to maintain by using the root level variables to build up the Toolchain paths. Also leave a note for future editors of BuildIt.sh to give them warning about the other changes they'll need to make.
2021-04-27Toolchain/Dockerfile: Add rsync and unzipJelle Raaijmakers
Both utilies are used in the .port_include.sh file.
2021-04-26Toolchain: Update QEMU to 6.0-rc4Brian Gianforcaro
2021-04-25Toolchain: Update cmake platform definitionGunnar Beutner
This fixes building cmake and other ports which use cmake to detect whether we have -ldl.
2021-04-22Toolchain/Dockerfile: Update to Ubuntu 21.04, add gitJelle Raaijmakers
2021-04-20Toolchain: Build GCC with optimizationsGunnar Beutner
2021-04-20Toolchain+Ports: Enable threads for gccGunnar Beutner
This enables POSIX threads for GCC and makes the -pthread argument available.
2021-04-20Everywhere: Replace SERENITY_ROOT with SERENITY_SOURCE_DIRPanagiotis Vasilopoulos
2021-04-19Toolchain: Don't produce debug symbolsxackus
Previously debug symbols were produced and then stripped.
2021-04-18Toolchain/BuildIt.sh: let's have colours on macOS too :^)Emanuele Torre
MacOS's sed doesn't support "\x1b" expansion unlike GNU sed, but we can still use bash's $'\x1b' to expand it.
2021-04-18Toolchain: Add missing buildstep callsGunnar Beutner
2021-04-18Toolchain: Cache the output of uname -sGunnar Beutner
2021-04-18Toolchain: Build fix for macOSGunnar Beutner
Unfortunately their sed behaves a tiny bit different to how GNU sed does.
2021-04-18Toolchain: Colorize the toolchain build script's outputGunnar Beutner
2021-04-18Toolchain: Enable -fexceptions and build a separate libstdc++ for the kernelGunnar Beutner
This enables building usermode programs with exception handling. It also builds a libstdc++ without exception support for the kernel. This is necessary because the libstdc++ that gets built is different when exceptions are enabled. Using the same library binary would require extensive stubs for exception-related functionality in the kernel.
2021-04-17Toolchain: Updated QEMU from 5.2.0 to 6.0.0-rc3Panagiotis Vasilopoulos
2021-04-17Toolchain: Fix cmake definition for CMAKE_DL_LIBSGunnar Beutner
We don't have libdl (yet) so update the CMAKE_DL_LIBRARY definition to match.
2021-04-16Ports: Make sure ports are installed into /usr/localGunnar Beutner
2021-04-16Toolchain+Ports: Move the CMake toolchain file into a subdirectoryGunnar Beutner
2021-04-16Toolchain: Add platform definition for CMakeGunnar Beutner
This also ensures that pkg-config finds packages in /usr/local and changes the install prefix to /usr/local.
2021-04-16Toolchain+LibC: Don't link LibC against crt0Gunnar Beutner
Instead GCC should be used to automatically link against crt0 and crt0_shared depending on the type of object file that is being built. Unfortunately this requires a rebuild of the toolchain as well as everything that has been built with the old GCC.
2021-04-14Toolchain: Update to the latest gcc release 10.3.0Brian Gianforcaro
10.3.0 is a bugfix release, with 178 bugs fixed. See: https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=10.3
2021-04-14Toolchain: Update binutils to version to latest 2.36.1 releaseBrian Gianforcaro
This updates binutils to the latest release. It looks like some lines where shuffled around, so I had to fixup out patch to apply cleanly again.