summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
AgeCommit message (Collapse)Author
2023-04-01Meta: Install PCI and USB ID files directly into /resTimothy Flynn
The install() command used by 1e36d5449304226b097a4929a90f846c0ddf1d76 installs the provided file into the *directory* named by the DESTINATION parameter. So if we ask it to install pci.ids to /res/pci.ids, the final destination will be /res/pci.ids/pci.ids.
2023-03-15Meta: Make sure directories for pci.ids and usb.ids existSam Atkins
`file(COPY_FILE ...)` fails if the target directory does not already exist, whereas `install(FILES ... DESTINATION ...)` happily creates all the required directories.
2023-03-15Meta: Download pci.ids and usb.ids to Build/cachesTimothy Flynn
This ensures we only need to download these files once for all build configurations. We similarly download the UCD, CLDR, and TZDB to this cache directory as well.
2023-03-12Meta+CMake: Remove "image" ninja target in favor of "qemu-image"Nico Weber
"image" was an alias for "qemu-image". I want to add an `image` userland utility, which clashes with that shortname. So remove the existing "image" target. It was just an alias for "qemu-image". If you use serenity.sh to build, nothing changes. This only affects you if you run ninja manually -- you now have to say `ninja qemu-image` to build the disk image.
2022-12-14Meta+CMake: Extract Wasm spec tests into the binary directoryAndrew Kaster
Clean up the Wasm spec tests CMake rules to extract and compile the wat files into wasm files in the LibWasm binary directory instead of its source directory. Also make the rules more robust to missing host tools, and use more CMake install rules for the test files rather than relying on build-root-filesystem.sh. Add some FIXMEs for later, we really shouldn't be doing installation of test files into /home/anon at the build-root-filesystem stage in $CURRENT_YEAR. Tests go in /usr/Tests
2022-12-14CMake: Pass NO_POLICY_SCOPE to options cmake helpersAndrew Kaster
Tell CMake to not create a new policy scope for the (lagom|serenity|common)_options.cmake helpers, and lets us set common policies for both projects in common_options.cmake that actually apply to the rest of the project, instead of just common_options.cmake itself.
2022-12-13CMake: Bump cmake_minimum_required to 3.25Andrew Kaster
The SerenityOS platform files we upstreamed were first released in version 3.25.0
2022-12-12Meta: Separate ccache setup into its own componentJan200101
2022-10-24Toolchain: Update LLVM to 15.0.3Tim Schumacher
2022-10-14Everywhere: Enable building userspace and test binaries on AARCH64Gunnar Beutner
Surely this will just work once the kernel boots, right?
2022-10-14AK+Toolchain: Make char and wchar_t behave on AARCH64Gunnar Beutner
By default char and wchar_t are unsigned on AARCH64. This fixes a bunch of related compiler errors.
2022-10-08Meta: Remove unused variables in CMakeLists.txtMacDue
Both USB_IDS_PATH and PCI_IDS_PATH are now unused so can be safely removed.
2022-10-08Meta: Fix install path of usb.idsMacDue
2022-09-16Everywhere: Fully remove the separate LibM directoryTim Schumacher
2022-09-16Toolchain: Update to LLVM 15.0.0Tim Schumacher
2022-09-09Meta: Download uncompressed files instead of *.gzDiego Iastrubni
Problem: cmake cannot handle gzip files (see https://gitlab.kitware.com/cmake/cmake/-/issues/23054 for more details). Instead of downloading the compressed (*.gz) USB and PCI ids, we not download the raw uncompressed files. The sizes we "loose" due to downloading such files are meaningless. This are the file sizes: ``` diego@debian:~/$ ls -lh pci.ids{,.gz} usb.ids{,.gz} -rw-r--r-- 1 diego diego 1.3M Aug 7 04:15 pci.ids -rw-r--r-- 1 diego diego 300K Aug 7 04:15 pci.ids.gz -rw-r--r-- 1 diego diego 700K May 20 22:34 usb.ids -rw-r--r-- 1 diego diego 245K May 20 22:34 usb.ids.gz ```
2022-09-09Meta: Use CMake functions to extract filesDiego Iastrubni
Newer cmake's have internal functions to un-compress files. These functions will work on pure windows - as well as linux. This eliminates the need to search for external tools (TAR,GZIP,ZIP) - and helps fixing #9866. In order to finally fix #9866 we need to decide to bump the cmake version requirements and remove the checks. If we demand a newer cmake version, we will loose Ubuntu 20.04 as a build target - as it ships with CMake 3.16. For now - we keep compatibility with CMake 3.16 - and only if CMake 3.18 as been found - we use its new functionality.
2022-09-09Meta: Update jakt build support for fully bootstrapped compilerAndrew Kaster
Remove the Corrosion dependency, and use the now-builtin add_jakt_executable function from the Jakt install rules to build our example application. By using find_package(Jakt), we now have to set ENABLE_JAKT manually on both serenity and Lagom at the same time, so the preferred method to do this for now is: cmake -B Build/superbuild<arch><toolchain> \ -S Meta/CMake/Superbuild \ -DENABLE_JAKT=ON \ -DJAKT_SOURCE_DIR=/path/to/jakt Where omitting JAKT_SOURCE_DIR will still pull from the main branch of SerenityOS/jakt. This can be done after runing Meta/serenity.sh run.
2022-09-02Meta+Tests: Allow running FLAC spec testskleines Filmröllchen
The FLAC "spec tests", or rather the test suite by xiph that exercises weird FLAC features and edge cases, can be found at https://github.com/ietf-wg-cellar/flac-test-files and is a good challenge for our FLAC decoder to become more spec compliant. Running these tests is similar to LibWasm spec tests, you need to pass INCLUDE_FLAC_SPEC_TESTS to CMake. As of integrating these tests, 23 out of 63 fail. :yakplus:
2022-09-02CMake: Quote all CMAKE_COMMAND occurencesdemostanis
Building might fail if the cmake command path contains whitespace. See https://stackoverflow.com/a/35853080.
2022-08-24Toolchain: Update gcc to version 12.2.0Brian Gianforcaro
2022-08-22Meta: Move downloading of emoji-test.txt to unicode_data.cmakeTimothy Flynn
The current emoji_txt.cmake does not handle download errors (which were a common source of issues in the build problems channel) or Unicode versioning. These are both handled by unicode_data.cmake. Move the download to unicode_data.cmake so that we can more easily handle next month's Unicode 15 release.
2022-08-22Meta: Generate emoji.txt at build time from Unicode's emoji-test.txtRyan Liptak
Instead of manually updating emoji.txt whenever new emoji are added, we use Unicode's emoji-test.txt to generate emoji.txt on each build, including only the emojis that Serenity supports at that time. By using emoji-test.txt, we can also include all forms of each emoji (fully-qualified, minimally-qualified, and unqualified) which can be helpful when double-checking how certain forms are handled.
2022-07-28Meta: Put USB and PCI IDs in the right folder in the Build environmentLiav A
Not sure why that happens and how it worked until now, but we need to be more precise about the location of PCI and USB IDs when decompressing them while building the OS.
2022-07-19Everywhere: Fully remove the separate LibPthread directoryTim Schumacher
2022-07-10Meta: Prefix manually created directories with the staging prefixTim Schumacher
In commit 02e8f2956014bd17c4e5a68757776fffc6d43c51 we started exporting the `CMAKE_INSTALL_*DIR` variables without prefix in order to make better use of the actual `PREFIX` settings. However, commands like `file(MAKE_DIRECTORY ...)` don't understand the GNUInstallDirs way of building paths, so we ended up creating directories in our main project directory by accident. Fix that by manually adding the correct prefix onto the path.
2022-07-06Meta: Use CMAKE_INSTALL_FOODIR variables instead of hardcoding usr/fooAndrew Kaster
In preparation for future refactoring of Lagom, let's use the variables from GNUInstallDirs as much as possible for the helper macros and other scripts used by the main build already.
2022-05-23Meta+Userland: Add jakt as an optional Lagom ToolAndrew Kaster
We can now use ENABLE_JAKT to pull jakt as a host tool and use it to pre-process .jakt files into .cpp files for use in serenity applications
2022-05-14Meta: Move compiler flags into standalone CMake filesLinus Groh
This way we can have all of them in a single place, similar to how we structure options added via the serenity_option() macro.
2022-05-12Toolchain: Upgrade to GCC 12.1.0Daniel Bertalan
This release brings support for various C++23 constructs like `if consteval` and multidimensional subscript operators. Vectorization is now enabled for O2 too, and `-ftrivial-auto-var-init` has been added which can help us find and prevent security issues coming from uninitialized variables. Toolchain/Patches/gcc.patch is now significanly smaller as some unused, autoconf-generated code has been removed.
2022-04-29AK: Install generated `Debug.h` into `/usr/include`Jelle Raaijmakers
Ports like SDL2 can depend on headers that try to include `Debug.h`.
2022-04-23Toolchain+Ports: Update LLVM to 14.0.1Daniel Bertalan
Besides a version bump, the following changes have been made to our toolchain infrastructure: - LLVM/Clang is now built with -march=native if the host compiler supports it. An exception to this is CI, as the toolchain cache is shared among many different machines there. - The LLVM tarball is not re-extracted if the hash of the applied patches doesn't differ. - The patches have been split up into atomic chunks. - Port-specific patches have been integrated into the main patches, which will aid in the work towards self-hosting. - <sysroot>/usr/local/lib is now appended to the linker's search path by default. - --pack-dyn-relocs=relr is appended to the linker command line by default, meaning ports take advantage of RELR relocations without any patches or additional compiler flags. The formatting of LLVM port's package.sh has been bothering me, so I also indented the arguments to the CMake invocation.
2022-03-19Meta: Error out on find_program errors with CMake less than 3.18Brian Gianforcaro
We have seen some cases where the build fails for folks, and they are missing unzip/tar/gzip etc. We can catch some of these in CMake itself, so lets make sure to handle that uniformly across the build system. The REQUIRED flag to `find_program` was only added on in CMake 3.18 and above, so we can't rely on that to actually halt the program execution.
2022-03-19CMake: Modify include path when building from Hack StudioItamar
With regular builds, the generated IPC headers exist inside the Build directory. The path Userland/Services under the build directory is added to the include path. For in-system builds the IPC headers are installed at /usr/include/. To support this, we add /usr/include/Userland/Services to the build path when building from Hack Studio. Co-Authored-By: Andrew Kaster <akaster@serenityos.org>
2022-02-19Meta: Use correct variable for checking if the mold linker is usedDaniel Bertalan
This variable was originally called USE_MOLD_LINKER, but it was changed to ENABLE_MOLD_LINKER during review to be consistent with other configuration options. I branched off the commits that added RELR support before this change, and I failed to update the variable name there.
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-02-04Meta: Add install-native-partition CMake target installing to a real FSBrian Gianforcaro
While playing around with getting serenity to run on my main desktop machine I wanted a way of easily updating my physical serenity partition. To use it you just need to: - Create and format your local partition to ext4 - Set `SERENITY_TARGET_INSTALL_PARTITION` to the partition /dev path. - Run the `install-native-partition` build target. Example: $ export SERENITY_TARGET_INSTALL_PARTITION=/dev/nvme1n1p3 $ cd serenity/Build/x86_64 $ ninja install-native-partition
2022-01-26Meta: Download USB and PCI ID data with fallible download functionTimothy Flynn
2022-01-24Toolchain: Add support for building the userland with the mold linkerDaniel Bertalan
This commit adds support for building the SerenityOS userland with the new [mold linker]. This is not enabled by default yet; to link using mold, run the `Toolchain/BuildMold.sh` script to build the latest release of mold, and set the `ENABLE_MOLD_LINKER` CMake variable to ON. This option relies on toolchain support that has been added just recently, so you might need to rebuild your toolchain for mold to work. [mold linker]: https://github.com/rui314/mold
2022-01-12CMake: Add HACKSTUDIO_BUILD option for building from Hack StudioItamar
If this option is set, we will not build all components. Instead, we include an external CMake file passed in via a variable named HACKSTUDIO_BUILD_CMAKE_FILE. This will be used to build serenity components from Hack Studio.
2022-01-09Meta: Do not allow undefined symbols in executables and shared objectsDaniel Bertalan
The `--allow-shlib-undefined` option is a bit of a misnomer. It actually controls whether we should be allowed to have undefined references after symbols from all dependencies have been resolved, so it applies both to shared libraries and executables. LLD defaults to allowing undefined references in shared libraries, but not in executables. Previously, we had to disable this check for executables too, as it caused a build failure due to the LibC-LibPthread-libc++ and the LibCore-LibCrypto circular dependencies. Now that those have been resolved, we can enable this warning, in the hopes that it will prevent us from introducing circular libraries and missing dependencies that might cause unexpected breakage.
2022-01-04Meta: Remove clang warnings with no violationsAndrew Kaster
At some point we probably needed these, but no code complains about them with the current state of the codebase.
2022-01-04SystemMonitor: Remove unused functions and enable warning globallyAndrew Kaster
These two helpers were the only unused functions clang could detect in the entire codebase. Now that's commitment to no dead code :^)
2022-01-04Userland: Resolve unused-but-set-varaible warningsAndrew Kaster
These are almost always bugs, so enable globally. Remove unused counter variables in SystemMonitor and disk_benchmark.
2022-01-04Userland: Resolve tautological-constant-out-of-range-compare warningsAndrew Kaster
Stop comparing platform-specific sized integer types to max() values of other interger types. Enable the warning everywhere.
2022-01-04Userland: Locally suppress -Wc99-designator and re-enable globallyAndrew Kaster
There's only two places where we're using the C99 feature of array designated initalizers. This feature seemingly wasn't included with C++20 designated initalizers for classes and structs. The only two places we were using this feature are suitably old and isolated that it makes sense to just suppress the warning at the usage sites while discouraging future array designated intializers in new code.
2022-01-04Userland: Resolve -Woverloaded-virtual in LibGUI and SoundPlayerAndrew Kaster
Enable the warning project-wide. It catches when a non-virtual method creates an overload set with a virtual method. This might cause surprising overload resolution depending on how the method is invoked.
2022-01-04Meta: Enable -Wexpansion-to-defined warning for ClangAndrew Kaster
The Clang implementation of this warning protects against some undefined pre-processor behavior while ignoring function-like macros. The gcc implementation also warns on function-like macros, and is therefore noisy.
2022-01-04Meta: Re-enable toolchain version checksAndrew Kaster
These were removed in the Superbuild conversion. Re-add the checks that make sure that if there's a toolchain update, developers re-build their toolchain.