summaryrefslogtreecommitdiff
path: root/Meta/CMake
AgeCommit message (Collapse)Author
2022-02-06LibWeb: Put ResolvedCSSStyleDeclaration debug spam behind a macroAndreas Kling
Blowing up the debug console with a fajillion FIXME's whenever you navigate in the web inspector is no fun.
2022-02-03LibTimeZone: Parse and generate time zone coordinate dataTimothy Flynn
2022-01-31LibUnicode: Download and parse {Grapheme,Word,Sentence} break propsIdan Horowitz
2022-01-29Kernel: Stop using HashMap in MutexIdan Horowitz
This commit removes the usage of HashMap in Mutex, thereby making Mutex be allocation-free. In order to achieve this several simplifications were made to Mutex, removing unused code-paths and extra VERIFYs: * We no longer support 'upgrading' a shared lock holder to an exclusive holder when it is the only shared holder and it did not unlock the lock before relocking it as exclusive. NOTE: Unlike the rest of these changes, this scenario is not VERIFY-able in an allocation-free way, as a result the new LOCK_SHARED_UPGRADE_DEBUG debug flag was added, this flag lets Mutex allocate in order to detect such cases when debugging a deadlock. * We no longer support checking if a Mutex is locked by the current thread when the Mutex was not locked exclusively, the shared version of this check was not used anywhere. * We no longer support force unlocking/relocking a Mutex if the Mutex was not locked exclusively, the shared version of these functions was not used anywhere.
2022-01-27LibUnicode: Create a nearly empty generator for relative-time formattingTimothy Flynn
This sets up the generator plumbing to create the relative-time data files. This data could probably be included in the date-time generator, but that generator is large enough that I'd rather put this tangentially related data in its own file.
2022-01-26LibEDID: Do not check if ${PNP_IDS_EXPORT_PATH} exists in pnp_ids.cmakeTimothy Flynn
This check isn't needed because download_file() will check if it exists already before doing the download. Worse, it would prevent the generator target from being defined if the file existed, which then made CMake not realize the generated files were important and delete them.
2022-01-26LibEDID: Rename the downloaded PNP IDs fileTimothy Flynn
After fixing the CMake file to use the correct paths, users may have had to manually remove the existing downloaded pnp.ids.html for CMake to re- run the generator. So this change renames the downloaded file to pnp_ids.html to ensure everyone picks up that change without manual intervention.
2022-01-26LibEDID: Use correct paths for LibEDID generated filesTimothy Flynn
Code generators that generate their files for both Lagom and Serenity have a blob in their CMake file like this: set(TIME_ZONE_DATA_HEADER LibTimeZone/TimeZoneData.h) set(TIME_ZONE_DATA_IMPLEMENTATION LibTimeZone/TimeZoneData.cpp) set(TIME_ZONE_META_TARGET_PREFIX LibTimeZone_) if (CMAKE_CURRENT_BINARY_DIR MATCHES ".*/LibTimeZone") # Serenity build. set(TIME_ZONE_DATA_HEADER TimeZoneData.h) set(TIME_ZONE_DATA_IMPLEMENTATION TimeZoneData.cpp) set(TIME_ZONE_META_TARGET_PREFIX "") endif() LibEDID generates files only for Serenity, but was using the Lagom build version of the _HEADER, _IMPLEMENTATION, and _PREFIX variables. Thus if pnp_ids.cmake was ever touched, the following error would be raised: Userland/Libraries/LibEDID/EDID.cpp:18:18: fatal error: LibEDID/PnpIDs.h: No such file or directory 18 | # include <LibEDID/LibEDID/PnpIDs.h> Use the Serenity paths in pnp_ids.cmake and in the #include within LibEDID itself.
2022-01-26Meta: Download PNP ID data with fallible download functionTimothy Flynn
2022-01-26Meta: Download TZDB data with fallible download functionTimothy Flynn
2022-01-26Meta: Download UCD and CLDR data with fallible download functionTimothy Flynn
2022-01-26Meta: Add a CMake function to download remote files during the buildTimothy Flynn
This function will handle download failures. It doesn't support hashing for integrity yet, but if the download times out or otherwise fails, the build itself will fail. But default, file(DOWNLOAD) in CMake doesn't fail the build; we must pass in and check a STATUS variable.
2022-01-26Meta: Correct the PNP ID download conditionAli Mohammad Pur
`PNP_IDS_PATH` does not exist, set this to `PNP_IDS_EXPORT_PATH` to avoid redownloading the database every reconfigure.
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-23Meta+LibEDID: Download and generate the PNP ID databaseTom
This downloads the UEFI's published PNP ID database and generates a lookup table for use in LibEDID. The lookup table isn't optimized at all, but this can be easily done at a later point if needed.
2022-01-23LibHTTP+AK: Rename CNETWORKJOB_DEBUG to NETWORKJOB_DEBUGNico Weber
2022-01-23LibHTTP+AK: Rename CHTTPJOB_DEBUG to HTTPJOB_DEBUGNico Weber
2022-01-22RequestServer+AK: Move happy-path logging behind REQUESTSERVER_DEBUGNico Weber
vdbgln() was responsible for ~10% of samples on pv's flamegraph for RequestServer (under request_did_finish) when loading github.com in Browser and recording a whole-system profile. This makes that almost completely disappear.
2022-01-22Meta: Add JS_MODULE_DEBUG define flagdavidot
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-12LibUnicode: Parse number system digits from the CLDRTimothy Flynn
We had a hard-coded table of number system digits copied from ECMA-402. Turns out these digits are in the CLDR, so let's parse the digits from there instead of hard-coding them.
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