summaryrefslogtreecommitdiff
path: root/Meta/CMake
AgeCommit message (Collapse)Author
2022-01-10LibGUI+AK: Add DRAG_DEBUG opt and put drag operations behind dbgln_ifMarcus Nilsson
No need to have this enabled all the time.
2022-01-08LibTimeZone: Extract and parse the backwards compatibility LINK entriesTimothy Flynn
This set of LINK entries contains the link from "UTC" to "Etc/UTC", which LibJS will heavily depend upon.
2022-01-08LibTimeZone+Meta: Add plumbing for an IANA Time Zone Database generatorTimothy Flynn
The IANA Time Zone Database contains data needed, at least, for various JavaScript objects. This adds plumbing for a parser and code generator for this data. The generated data will be made available by LibTimeZone, much like how UCD and CLDR data is available through LibUnicode.
2022-01-08Meta: Move invoke_generator to utils.cmakeTimothy Flynn
2022-01-08Meta: Move remove_unicode_data_if_version_changed to utils.cmakeTimothy Flynn
This function will be used by the time zone database parser. Move it to the common utilities file, and rename it remove_path_if_version_changed to be more generic.
2022-01-08Meta: Redefine link_with_unicode_data to not include unicode_data.cmakeTimothy Flynn
This is to prevent an import cycle in a subsequent commit.
2022-01-07Everywhere: Fix spelling mistakesmjz19910
2022-01-01Kernel/NVMe: Add initial NVMe driver supportPankaj Raghav
Add a basic NVMe driver support to serenity based on NVMe spec 1.4. The driver can support multiple NVMe drives (subsystems). But in a NVMe drive, the driver can support one controller with multiple namespaces. Each core will get a separate NVMe Queue. As the system lacks MSI support, PIN based interrupts are used for IO. Tested the NVMe support by replacing IDE driver with the NVMe driver :^)
2021-12-30Meta: Add helper CMake function to link directly against LibUnicodeDataTimothy Flynn
Rather than each CMakeLists.txt needing to import unicode_data.cmake and check if Unicode data generation is enabled, add a helper method to do this.
2021-12-05Kernel: Stub out the SO_DEBUG SOL_SOCKET-level optionIdan Horowitz
2021-11-29LibUnicode: Parse and generate calendar (ca) Unicode keywordsTimothy Flynn
Also removes a few fly-by "StringView x = nullptr;" unnecessary initializers.
2021-11-29LibUnicode: Parse and generate regional hour cyclesTimothy Flynn
Unlike most data in the CLDR, hour cycles are not stored on a per-locale basis. Instead, they are keyed by a string that is usually a region, but sometimes is a locale. Therefore, given a locale, to determine the hour cycles for that locale, we: 1. Check if the locale itself is assigned hour cycles. 2. If the locale has a region, check if that region is assigned hour cycles. 3. Otherwise, maximize that locale, and if the maximized locale has a region, check if that region is assigned hour cycles. 4. If the above all fail, fallback to the "001" region. Further, each locale's default hour cycle is the first assigned hour cycle.
2021-11-29LibUnicode: Create a nearly empty generator for date-time formattingTimothy Flynn
Similar to number formatting, the data for date-time formatting will be located in its own generated file. This extracts the cldr-dates package from the CLDR and sets up the generator plumbing to create the date-time data files.
2021-11-28Kernel: Add AC97_DEBUG macroJelle Raaijmakers
2021-11-26CMake: Also install the source files of userland programsItamar
Previously, we only copied the source files of libraries to `/usr/src/serenity`. We now also install the source files of userland programs.
2021-11-26CMake: Simplify serenity_install_sources by inferring installation pathItamar
The serenity_install_sources function now infers the path under `/usr/src/serenity` in which to install the source files according to the relative path of the source files in the repository. For example `Userland/Libraries/LibGUI/Widget.h` gets installed at `/usr/src/serenity/Userland/Libraries/LibGUI/Widget.h`. This fixes cases where the source files of libraries are not under `Userland/Libraries` (for example LibShell & LibLanguageServer).
2021-11-23LibUnicode: Functionalize the Unicode generator CMake commandsTimothy Flynn
Makes it a bit easier to add a new generator.
2021-11-20Meta+LibUnicode: Provide code point names through libraryBen Wiederhake
2021-11-19LibUnicode: Stop passing the cldr-core package to UnicodeNumberFormatTimothy Flynn
This is no longer needed now that this generator isn't parsing the default-content locales.
2021-11-16LibUnicode: Parse and generate CLDR unit data for Intl.NumberFormatTimothy Flynn
The units data is in another CLDR package, cldr-units.
2021-11-13LibUnicode: Ensure UnicodeNumberFormat is aware of default contentTimothy Flynn
For example, there isn't a unique set of data for the en-US locale; rather, it defaults to the data for the en locale. See this commit for much more detail: 357c97dfa864dbd779d517bac502858aa2618b96
2021-11-13Meta: Resolve cyclic dependency between LibPthread and libc++Daniel Bertalan
libc++ uses a Pthread condition variable in one of its initialization functions. This means that Pthread forwarding has to be set up in LibC before libc++ can be initialized. Also, because LibPthread is written in C++, (at least some) parts of the C++ standard library have to be linked against it. This is a circular dependency, which means that the order in which these two libraries' initialization functions are called is undefined. In some cases, libc++ will come first, which will then trigger an assert due to the missing Pthread forwarding. This issue isn't necessarily unique to LibPthread, as all libraries that libc++ depends on exhibit the same circular dependency issue. The reason why this issue didn't affect the GNU toolchain is that libstdc++ is always linked statically. If we were to change that, I believe that we would run into the same issue.
2021-11-12LibUnicode: Move number formatting code generator to UnicodeNumberFormatTimothy Flynn
2021-11-11LibWasm: Implement module validationAli Mohammad Pur
2021-11-11Meta: Update WebAssembly testsuite branch nameAli Mohammad Pur
The 'master' branch is no longer updated, they've switched to 'main'.
2021-11-10CMake: Build serenity_lib libraries with a custom SONAMETim Schumacher
This allows libraries and binaries to explicitly link against `<library>.so.serenity`, which avoids some confusion if there are other libraries with the same name, such as OpenSSL's `libcrypto`.
2021-11-10CMake: Remove unused serenity_shared_lib functionTim Schumacher
2021-11-09LibUnicode: Upgrade to CLDR version 40.0.0Timothy Flynn
Release notes: https://github.com/unicode-org/cldr-json/releases/tag/40.0.0
2021-10-28Kernel: Add the IFF_* SIOCGIFFLAGS flag macrosIdan Horowitz
2021-10-21Meta: Enable ccache for Lagom by defaultTimothy Flynn
2021-10-20HeaderCheck: It checks some of your headersBen Wiederhake
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-01RequestServer: Don't hide the SIGINFO state dump behind a debug macroAndreas Kling
Until we're confident that RequestServer doesn't need this runtime debug dump helper, it's much nicer if everyone has it built in, so they can simply send a SIGINFO if they see it acting up.
2021-10-01Meta: Fix typosNico Weber
2021-09-30LibUnicode: Upgrade to Unicode version 14.0.0Timothy Flynn
2021-09-30LibUnicode: Remove cached UCD and CLDR files when their version changesTimothy Flynn
2021-09-30LibUnicode: Use consistent variable naming in unicode_data.cmakeTimothy Flynn
I kept mixing these up in my head.
2021-09-30LibUnicode: Functionalize extraction of CLDR data filesTimothy Flynn
2021-09-30LibUnicode: Functionalize downloading of UCD data filesTimothy Flynn
2021-09-30LibUnicode: Extract UCD and CLDR versions to a CMake variableTimothy Flynn
This also surrounds expansion of affected URL and path variables with quotes.
2021-09-29RequestServer: Use an OwnPtr for cached connectionsAli Mohammad Pur
Otherwise we'd end up trying to delete the wrong connection if a connection made before us is deleted. Fixes _some_ RequestServer spins (though not all...). This commit also adds a small debug mechanism to RequestServer (which can be enabled by turning REQUEST_SERVER_DEBUG on), that can dump all the current active connections in the cache, what they're doing, and how long they've been doing that by sending it a SIGINFO.
2021-09-16CI+Meta: Update Sonar Cloud CI job for new SuperBuild configurationAndrew Kaster
This requires exposing the `configure` step on the `serenity` ExternalProject in the SuperBuild CMakeLists so that we can continue to only build the generated sources and not the entire OS.
2021-09-15Meta: Switch to a SuperBuild that splits host and target buildsAndrew Kaster
Replace the old logic where we would start with a host build, and swap all the CMake compiler and target variables underneath it to trick CMake into building for Serenity after we configured and built the Lagom code generators. The SuperBuild creates two ExternalProjects, one for Lagom and one for Serenity. The Serenity project depends on the install stage for the Lagom build. The SuperBuild also generates a CMakeToolchain file for the Serenity build to use that replaces the old toolchain file that was only used for Ports. To ensure that code generators are rebuilt when core libraries such as AK and LibCore are modified, developers will need to direct their manual `ninja` invocations to the SuperBuild's binary directory instead of the Serenity binary directory. This commit includes warning coalescing and option style cleanup for the affected CMakeLists in the Kernel, top level, and runtime support libraries. A large part of the cleanup is replacing USE_CLANG_TOOLCHAIN with the proper CMAKE_CXX_COMPILER_ID variable, which will no longer be confused by a host clang compiler.
2021-09-15Meta: Move all options to targetname_options.cmake filesAndrew Kaster
This common strategy of having a serenity_option() macro defined in either the Lagom or top level CMakeLists.txt allows us to do two things: First, we can more clearly see which options are Serenity-specific, Lagom-specific, or common between the target and host builds. Second, it enables the upcoming SuperBuild changes to set() the options in the SuperBuild's CMake cache and forward each target's options to the corresponding ExternalProject.
2021-09-15Meta: Use Lagom:: namespaced names for code generatorsAndrew Kaster
This will be required when we switch to a SuperBuild that has Lagom as a configure time dependency, but is a distinct enough change to be separate.
2021-09-15Meta: Allow specifying alternative paths for downloaded Unicode dataAndrew Kaster
This lets us possibly share downloaded artifacts between different builds without re-downloading them every time you change toolchains.
2021-09-14Kernel: Disable lock rank enforcement by default for nowBrian Gianforcaro
There are a few violations with signal handling that I won't be able to fix it until later this week. So lets put lock rank enforcement under a debug option for now so other folks don't hit these crashes until rank enforcement is more fleshed out.
2021-09-06LibUnicode: Extract cldr-misc dataset from CLDR databaseTimothy Flynn
2021-09-01LibUnicode: Extract cldr-core dataset from CLDR databaseTimothy Flynn
2021-08-31Tests: Test LibMarkdown against commonmark test suitePeter Elliott
TestCommonmark runs the CommonMark test suite (https://spec.commonmark.org/0.30/spec.json) against LibMarkdown. Currently 44/652 tests pass.