Commit graph

508 commits

Author SHA1 Message Date
kleines Filmröllchen 0a14732aa8 Documentation: Add more clangd configuration options
This should make clangd work very well. I totally forgot to add this...
2022-04-26 22:47:27 +02:00
Adam Patterson 452334ab6e Documentation: Add EmacsConfiguration.md for emacs editor support
Emacs takes a little work to get working with Serenity.
2022-04-26 22:43:50 +02:00
Simon Wanner 206d6ece55 LibGfx: Move other font-related files to LibGfx/Font/ 2022-04-09 23:48:18 +02:00
Brandon Doornbos 36b6356ce5 Documentation: Add instructions for building images without root
I could not find the fuse2fs or equivalent packages for the other
distros, so it is represented separately for each distro that does
have it.
2022-04-04 12:49:32 +02:00
Andreas Kling 8f1ba8db4f Documentation: Clarify text about virtual/override/final 2022-04-04 12:44:44 +02:00
djwisdom 64564a54d4 Base: Add to documentation 4th method of transferring files
Update documentation with focus on enabling openssh
in SerenityOS and on the proper usage of sftp client to
transfer files.
2022-04-02 19:36:24 -07:00
Idan Horowitz 852ae6c195 Meta: Switch to clang-format-14 as the standard formatter
Now that clang-format-14 ubuntu packages are available, it's time to
finally upgrade our clang-format version. This version brings with it
a bunch of useful features with const-placement being the most notable.
These will be enabled in the following commits.
2022-04-01 21:24:45 +01:00
Idan Horowitz 916e093d4a Documentation: Add Kernel/Userland quick switch to CLion configuration 2022-04-01 17:39:15 +01:00
kleines Filmröllchen 684c39bc19 Documentation: Update GML information and manpage links in FileFormats 2022-03-31 22:13:49 -07:00
Tim Schumacher bf502ae3b0 CMake: Allow building fuzzing targets without libFuzzer or OSS-Fuzz 2022-03-31 22:11:04 -07:00
Tim Schumacher e3519b8e5c Meta: Rename Fuzzer flags to ENABLE_FUZZERS_{LIBFUZZER,OSSFUZZ} 2022-03-31 22:11:04 -07:00
Brian Gianforcaro 95b295971d Everywhere: Move tests to /home/anon/Tests 2022-03-20 22:20:59 +01:00
Andreas Kling 8ed07c8434 Documentation: Add some notes about LibWeb's new paint tree 2022-03-11 00:21:49 +01:00
Jonathan Marler 97c0a8c063 Toolchain: Move nix script from Documentation into Toolchain
Moves the nix script to setup the build environment from Documentation
into the Toolchain as a callable script.  I also modified the script
to accept a "pkgs" argument to make it easy to override the nixpkgs
version from the command-line when calling the script.
2022-03-08 23:31:45 +01:00
dotjpg3141 24a98b888a Documentation: Improve VS Code settings
- Set commit message length to 72 according to CONTRIBUTING.md
  - Format trailing new lines according to check-newlines-at-eof.py
2022-03-07 11:01:27 +01:00
KikooDX 1eb451b8ce Documentation: Add texinfo as a dependency for Alpine Linux 2022-03-01 19:00:19 -08:00
Itamar 935d023967 Userland: Rename WindowServerConnection=>ConnectionToWindowServer
This was done with CLion's automatic rename feature.
2022-02-25 22:35:12 +01:00
Itamar 3a71748e5d Userland: Rename IPC ClientConnection => ConnectionFromClient
This was done with CLion's automatic rename feature and with:
find . -name ClientConnection.h
    | rename 's/ClientConnection\.h/ConnectionFromClient.h/'

find . -name ClientConnection.cpp
    | rename 's/ClientConnection\.cpp/ConnectionFromClient.cpp/'
2022-02-25 22:35:12 +01:00
Andreas Kling 52651f41b0 Documentation: Start writing about "LibWeb: From loading to painting"
This document is meant to cover every significant step in the journey
from giving a page URL to LibWeb, and pixels showing up on screen.

It's by no means complete, but I wrote a fair chunk already, so I'll
commit at this stage and we can expand on it in-tree.
2022-02-24 18:45:37 +01:00
JT b426623f9d Documentation: Add sudo apt update step to build instructions
This adds the necessary `sudo apt update` to the build instructions
after adding the GCC 11 respository.
2022-02-22 13:10:17 +00:00
isakBSD c50ea8c1dd Documentation: Add texinfo as a dependency for Fedora 2022-02-19 18:27:21 +00:00
Debdut Chakraborty 7527b52efc Documentation: Add Userland/ to qtcreator include path 2022-02-19 11:39:08 +01:00
Isak Holmstrom 8ad9f49de3 Documentation: Change/add two pkgs in the FreeBSD instructions 2022-02-17 09:26:56 +00:00
Max Desiatov 4b85866746 Documentation: Add Rosetta/Homebrew macOS note
This should prevent a build issue caused by a potential
conflicting zstd installation on M1 Mac.

This was manifested in a linker error when building
the GNU toolchain:

```
Undefined symbols for architecture arm64:
[gcc/build]   "_ZSTD_compress", referenced from:
```
2022-02-16 11:29:31 -05:00
czapek1337 6cdb41ccab Documentation: Add information about the limine-image target 2022-02-14 11:52:07 +01:00
Gaven Rendell 78ef608a6b Documentation: Add coreutils dep to Alpine Linux build instructions
`build-image-qemu.sh` depends on GNU's version of `du`:

43d706a29e/Meta/build-image-qemu.sh (L47-L48)

Alpine Linux doesn't use that version by default.
2022-02-11 23:24:25 +00:00
electrikmilk ebfd296016 Documentation: Small fixes to transferring files documentation 2022-02-06 23:50:20 +00:00
Idan Horowitz 18b98f8c28 AK: Convert the try_make<T> factory function to use ErrorOr
This allows more ergonomic memory allocation failure related error
checking using the TRY macro.
2022-02-03 23:33:20 +01:00
Idan Horowitz a65bbbdb71 Kernel: Convert try_make_ref_counted to use ErrorOr
This allows more ergonomic memory allocation failure related error
checking using the TRY macro.
2022-02-03 23:33:20 +01:00
Rummskartoffel 2560d0b9ad Documentation: Update reference to obsolete config option 2022-02-03 14:57:46 +01:00
sin-ack f1c00bb439 Documentation: Add FAQ entry about running the system 2022-02-02 21:40:28 +01:00
Pankaj Raghav d93ffe3cf8 Documentation: Update BareMetalInstallation's storage support section
NVMe drive has been tested on a BareMetal HW :^) . Update the
BareMetalInstallation instruction to reflect the same.
2022-02-02 18:26:59 +01:00
Sergei Reznikov a9a1d0afb4 Documentation: Document setting UUID for VDI image 2022-01-28 19:46:52 +00:00
Daniel Bertalan 4055c393fc Toolchain: Add support for building the userland with the mold linker
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-24 10:41:47 +00:00
Gurkirat Singh ecf53105b0 Documentation: Replace deprecated osxfuse with macfuse 2022-01-24 05:43:36 +00:00
Dmitry Petrov 19c2b96b0c Documentation: Update qt creator guide to have up to date paths 2022-01-17 11:18:19 +01:00
flyingwombat921 ed271aa7c5 Documentation: Swap 'Right' and 'Wrong' code practice 2022-01-16 15:16:44 -08:00
kleines Filmröllchen 49011e2030 Documentation: Explain the array-like types and their differences
It's not at all obvious how we need three different array-like types.
This change to the Patterns documentation attempts to explain why they
exist, how they differ (mostly in allocation behavior) and what their
use cases are. This builds on #11844 which fixates and tests the
hereby-described allocation behavior of FixedArray.
2022-01-16 11:14:26 +01:00
Rummskartoffel 5fe619de99 Documentation: Update names of RefPtr helper functions
This seems to have been missed when these functions were renamed.
2022-01-15 21:33:04 +01:00
kleines Filmröllchen 60ace37713 Documentation: Add a method for 7zip and other archive tools
Some archive tools can open ext2 images like an archive, which is very
convenient for people that already have such tools like 7zip.

This also contains information for WSL users on where to find the
_disk_image in Explorer.
2022-01-10 21:18:07 +01:00
Brandon f43b69f8e2 Documentation: Document how to transfer files from QEMU to the host
Document how to transfer files from QEMU to the host
2022-01-10 10:31:54 +01:00
Maciej b3e47f0bd5 Documentation: Update glyph/x-fonteditor format description 2022-01-09 00:18:46 +01:00
Sam Atkins e8c71605b9 Documentation: Document string formatting format 2022-01-08 06:18:04 -08:00
mjz19910 10ec98dd38 Everywhere: Fix spelling mistakes 2022-01-07 15:44:42 +01:00
Andrew Kaster c62c10caf0 Meta+CI+Documentation: Bump host gcc requirement up to gcc 11
Bump macOS CI version to macOS 11 while we're here.
2022-01-07 11:02:30 +01:00
mjz19910 3102d8e160 Everywhere: Fix many spelling errors 2022-01-07 10:56:59 +01:00
tuftedocelot 6dee1e91be Meta+Documentation: Don't rebuild disk image for every run on OpenBSD 2021-12-29 03:46:56 -08:00
kleines Filmröllchen f650efc76f Documentation: Elaborate on GRUB image flashing and video-less debugging
This should help others to not run into the same roadblocks with
bare-metal that I ran into.
2021-12-29 03:45:59 -08:00
Conor Byrne 7c6fc79c23 Documentation: Recommend using Xcode's command line tools on macOS 2021-12-27 23:26:25 +01:00
Ali Mohammad Pur f20e0036bd Meta: Add a cmake flag for building for compiler explorer
We don't need to build tests/binaries for CE.
2021-12-22 20:49:28 +03:30
alexmajor 35e5cbe3b3 Documentation: Update VSCode configuration
Remove note about CMake Tools as version 1.9.0 has shipped and no longer
needed. Update details for files to latest versions and allow easier
copy and paste into an empty file.
2021-12-21 22:09:06 +01:00
Andreas Kling 13680ae038 Kernel: Build with -O2 by default
We used to build with -Os in order to fit within a certain size, but
there isn't really a good reason for that kind of restriction.

Switching to -O2 yields a significant improvement in throughput,
for example `test-js` is roughly 20% faster on my machine. :^)
2021-12-16 22:48:16 +01:00
Astraeus- 9090dea1e2 Documentation: Fix spelling error
"SourceLocatin" -> "SourceLocation"
2021-12-14 15:05:16 +00:00
Sam Atkins 3a44b8111b Documentation: Update instructions for using the Clang toolchain
The note that `Meta/serenity.sh` is incompatible with Clang is no longer
true.
2021-12-02 14:34:45 -08:00
Brian Gianforcaro 60ba0e67fe Documentation: Document the new TRY/MUST and serenity_main patterns :^)
We have some new patterns, lets document them for future contributors.
2021-11-30 23:39:32 -08:00
Thi Doãn 7b2bd79855 Documentation: Remove outdated instruction
As of qemu 6.0.0, it should already have the entitlement to access the
Hypervior.framework by default, so re-codesigning the binary is
no-longer necessary.

8a74ce618b
2021-11-25 01:10:19 -08:00
Ben Wiederhake 66c06e8efb Documentation: Document which file formats exist
I intentionally don't document the format specifics, to prevent this
file from becoming outdated. Hence, only a list with pointers to where
to find details.
2021-11-21 00:31:00 +00:00
Jelle Raaijmakers 8744086781 Toolchain: Add Qemu build dependencies to Dockerfile
Also add `libsdl2-dev` as a required dependency and reorder the
list of packages passed to `apt-get`.
2021-11-20 21:16:51 +00:00
Ben Wiederhake f2ce751a32 Documentation: Update Debian dependency list
Apparently, qemu-system-* changed its name.

On Debian/Ubuntu, genext2fs does not make a difference: The only user of
this command, Meta/build-image-qemu.sh, runs as root anyway, and tries
to do 'mount _disk_image mnt/' first. Debian/Ubuntu always have drivers
for ext2 available, so this command has no good reason to fail, and
trying to use genext2fs might only obscure any problems that mount
encountered.

Finally, Debian Bullseye (released 2021-08-14) contains gcc-10, so the
instructions on how to upgrade are now obsolete.
2021-11-11 12:47:39 +00:00
Hendiadyoin1 1bbdce7e81 Documentation: Update and simplify VSCode Task recommendation
With these you'll only need 3 tasks to cover lagom and all of normal
build and launch with just 3 Tasks and two option menus.
2021-11-06 00:45:45 +01:00
Ben Wiederhake 5e9cf47627 Documentation: Recommend a comment style 2021-11-05 21:07:35 +01:00
Nicolas Danelon b233cdde77 Documentation: Update BuildInstructionsMacOS.md
- gcc@10 is not available for M1, using gcc 11.
- the path to qemu is now dynamic
2021-11-02 12:24:39 +01:00
Jelle Raaijmakers 0909bbfe38 Documentation: Update required Qemu dev packages
Without `libspice-server-dev`, Qemu will build without SPICE support.
2021-11-02 11:08:17 +01:00
Ben Wiederhake 3d855a801b SystemServer: Rename 'BootModes' config option to 'SystemModes' 2021-10-25 23:38:28 +02:00
Ben Wiederhake 8d13f6ddce Kernel+SystemServer: Change bootmode to system_mode
'bootmode' now only controls which set of services are started by
SystemServer, so it is more appropriate to rename it to system_mode, and
no longer validate it in the Kernel.
2021-10-25 23:38:28 +02:00
Ben Wiederhake 09432a8241 Kernel: Separate panic behavior from bootmode
Bootmode used to control panic behavior and SystemServer.
This patch factors panic behavior control into a separate flag.
2021-10-25 23:38:28 +02:00
Ben Wiederhake 542a88a7be Kernel: Separate framebuffers from bootmode
Bootmode used to control framebuffers, panic behavior, and SystemServer.
This patch factors framebuffer control into a separate flag.
Note that the combination 'bootmode=self-test fbdev=on' leads to
unexpected behavior, which can only be fixed in a later commit.
2021-10-25 23:38:28 +02:00
Nico Weber ef1d247d79 Documentation: Tweak RunningOnRaspberryPi a bit 2021-10-21 20:01:34 +01:00
Tom 1d4919bb81 Meta: Document anon user's password 2021-10-20 18:07:24 +02:00
Marcin Undak d045181375 Documentation: Add RunningOnRaspberryPi page
This is a first draft targeted for existing developers.
2021-10-16 00:36:51 +01:00
mjz19910 8ea79c05db Documentation: Fix spelling error
A spelling error caused an invalid file to be referenced,
change the summary value so it mentions to the correct file.
2021-10-11 22:52:12 +01:00
Ben Wiederhake 9df8c31cdc Documentation: Fix broken empty links
The intention seems to be to enable links like:
https://github.com/SerenityOS/serenity/blob/master/Documentation/CodingStyle.md#east-const
However, this has never worked, and is also not how the syntax works.
Because there seems to be no demand for the intended feature (nobody
since 2019 fixed it), this patch removes it.

Found by markdown-checker.
2021-10-10 15:18:55 -07:00
Tim Schumacher 98e878ab3b Documentation: Fix one more path for GRUB netbooting 2021-10-07 23:00:14 +02:00
Tim Schumacher 9f56cf0698 Documentation: Install pxelinux into the root of TFTP
pxelinux doesn't appear to allow switching to the parent directory, and
absolute paths don't seem to work as expected either.
2021-10-07 23:00:14 +02:00
Tim Schumacher 2dcde51a74 Documentation: Update NetworkBoot to include Prekernel 2021-10-07 23:00:14 +02:00
Patrick Wilmes b00218715a Documentation: Added unzip to arch install list
After setting up the toochain on manjaro linux (new install) the build
of the toolchain failed as unzip was not found. The unzip package is
listed in the documentation for debian (apt) but is was missing for arch
linux.
2021-10-04 18:30:41 +01:00
Sam Atkins 02a369a0a3 Documentation: Add documentation for adding IDL files
There are several steps involved, which are not at all obvious unless
you already know them. So now they're written down. :^)
2021-10-04 15:32:27 +01:00
Nico Weber cd7ec294db Documentation: Fix grammar-o in ProcFSIndexing.md 2021-10-01 01:06:40 +01:00
Nico Weber e6a97f1b7b Documentation: Add texinfo to build instructions
`Meta/serenity.sh rebuild-toolchain aarch64` failed with the gdb build
complaining about missing `makeinfo` without this.
2021-09-30 02:56:21 +00:00
Brian Gianforcaro afb09e84db Documentation: Add AK::SourceLocation pattern to Patterns.md
Document the emergent pattern of using `SourceLocation` for capture
file, line, function name information when calling an API.
2021-09-28 10:57:00 +02:00
Brian Gianforcaro f71f1d66d6 Documentation: Add operator"" sv pattern to Patterns.md 2021-09-28 10:57:00 +02:00
Edward Palmer 2f01d34b99 Documentation: Add build file copy instruction 2021-09-27 16:30:38 +02:00
Tobias Christiansen f6ffa09437 Meta: Add section to CLion Configuration Docs about including headers 2021-09-19 22:57:58 +02:00
Liav A 3f5a6be69f Documentation: Add the new supported RTL8168 variants to the list 2021-09-18 17:49:24 +03:00
Andrew Kaster a78f967b93 Documentation: Recommend setting PREFIX_PATH instead of INSTALL_PREFIX
This was straight up the wrong CMake variable to set. We care about
where the project will find Lagom, not where it wants to install its own
binaries to.
2021-09-16 15:47:13 +00:00
Andrew Kaster 9ec02e7137 Documentation: Update CLionConfiguration for SuperBuild
Extra configure options may need passed to CLion in order for it not to
choke on the new CMake setup. In particular, it's now a very bad idea to
pass CMAKE_CXX_COMPILER and CMAKE_C_COMPILER to the target build.
2021-09-15 19:04:52 +04:30
Andrew Kaster a488041d54 Documentation: Document new SuperBuild build infrastructure
Add additional clarification for the CMake cache, and add missing extra
targets as well.
2021-09-15 19:04:52 +04:30
Ben Wiederhake 4acdea7cfe Documentation: Fix slightly-broken headers
GithubFlavoredMarkdown sees the angled brackets (<>) and censors them.
Perhaps because it does not allow HTML tags in headings.
2021-09-11 13:17:44 +02:00
Ali Mohammad Pur b37211a615 Documentation: Tweak IntrusiveList example to reflect new API 2021-09-10 18:05:46 +03:00
Sam Atkins f36781a8bc Documentation: Clarify Windows build instructions
People seem to easily miss the "Setting up build tools" section, so I
have moved that step above the filesystem information and linked
directly to BuildInstructions.md to hopefully make it harder to skip.

Also, added mention of `\\wsl$` since that regularly comes up in
Discord.
2021-09-10 14:05:25 +00:00
Ben Wiederhake 2572f5ebec Documentation: Fix broken link in Documentation 2021-09-08 16:48:33 +02:00
Ernests Kuzņecovs 82cb885966 Documentation: Add missing dependencies for Nix
I was building serenity on quite a fresh NixOS system and it turns
out `unzip` and `qemu` were missing from this nix expression to
compile and run serenity.
2021-09-07 20:23:23 +01:00
Brian Gianforcaro bb58a4d943 Kernel: Make all Spinlocks use u8 for storage, remove template
The default template argument is only used in one place, and it
looks like it was probably just an oversight. The rest of the Kernel
code all uses u8 as the type. So lets make that the default and remove
the unused template argument, as there doesn't seem to be a reason to
allow the size to be customizable.
2021-09-05 20:46:02 +02:00
Brian Gianforcaro 293e7ccfc7 Documentation: Add Patterns.md
The purpose of this document is to track and describe the various
patterns used through the SerenityOS code base.
2021-09-05 20:08:57 +02:00
Ben Wiederhake e7e2ccc04c Documentation: Prevent QtCreator from formatting IPC as C++ 2021-09-04 17:57:59 +02:00
LepkoQQ 69d3bf0d12 Documentation: Add unzip package to BuildInstructions 2021-08-30 18:30:20 +02:00
Linus Groh f2cc067c9b Documentation: Escape asterisk ("*NIX") in BuildInstructions.md
Even though Markdown renderers should handle this fine as-is, not
escaping the asterisk makes vim render a lot of text in italics, for
example.
2021-08-29 16:10:21 +01:00
kleines Filmröllchen 01b38ffc9a Documentation: Add configuration information for VSCode
This is a combination of the efforts of multiple people and hours of
pain trying to configure VSCode properly. This should give a good
baseline for anyone trying to develop Serenity with VSCode.

Co-authored-by: Hendiadyoin1 <leon2002.la@gmail.com>
2021-08-27 23:37:39 +01:00
Martin Åberg 5d146628e1 Documentation: Update FreeBSD prerequisites
FreeBSD comes with Clang as default host compiler and provides
GCC in the package system. The commit adds a few dependencies to
the pkg command line.
2021-08-18 00:35:09 +02:00
vdjagilev 05ecbd9535 Documentation: Add genext2fs package for BuildInstructions 2021-08-15 15:29:03 +02:00
Andreas Kling afcd053b68 Documentation: Amend FAQ about the system being 32-bit only
People still ask about this all the time, so let's keep the question but
amend it with the fact that we now have 64-bit support as well.
2021-08-15 13:02:48 +02:00
Liav A 23a8cd1021 Documentation: Fix a few typos in the ProcFS Indexing document 2021-08-13 08:01:55 +02:00
Liav A 7ba991dc37 Kernel: Steer away from heap allocations for ProcFS process data
Instead, use more static patterns to acquire that sort of data.
2021-08-12 20:57:32 +02:00
Jean-Baptiste Boric 2084289162 Userland: Fix PATH environment variable ordering 2021-08-12 18:56:30 +02:00
Daniel Bertalan 90caebe96a Documentation: Add explanation for the Clang-based toolchain 2021-08-08 10:55:36 +02:00
Gunnar Beutner 723c89af67 Meta: Automatically enable WHPX when possible 2021-08-04 21:15:41 +02:00
Gunnar Beutner 5445155dba Meta: Auto-detect where QEMU is installed on Windows 2021-08-04 21:15:41 +02:00
Jelle Raaijmakers 31e3b3028b Documentation: Add ImageMagick as dependency for macOS 2021-08-04 13:54:08 +01:00
Martin Janiczek 2c042e3530 Documentation: Make docs for CLionConfiguration more understandable 2021-08-03 10:45:33 +02:00
Thomas Wagenveld 9222064439 Documentation: Remove more potentially harmful Debian advice
Serenity build tooling autodetects gcc 10 so update-alternatives
is not necessary. Also, switching apt repositories on the fly can
cause issues with dependencies, package downgrades and leave the
system in a broken state.
2021-07-30 23:51:10 +02:00
Sam Atkins 59a4e87a7e Documentation: Add BuildProfilingInstructions.md
After discussing on Discord about how to speed up the build time, I
received lots of helpful advice on measuring the build time, but none of
it was easily accessible. I thought other people might find it useful,
so I've written it down! :^)

Thanks goes to @bgianfo and @nico.
2021-07-30 20:51:11 +02:00
Thomas Wagenveld 1bfd405353 Documentation: Update instructions for Debian
Simply adding a 'testing' repo on a Debian stable system is destructive
to the system. Add better hints on building Serenity on Debian.
2021-07-30 19:00:46 +02:00
Jelle Raaijmakers d0be370568 Documentation: Always install e2fsprogs on MacOS
The `Meta/build-image-qemu.sh` script runs mke2fs in both the FUSE and
genext2fs options, so always install e2fsprogs.
2021-07-29 14:44:18 +02:00
Linus Groh 358356758a Documentation: Add preferred coding style options to CLion configuration 2021-07-27 22:49:41 +02:00
Patrick Meyer 83f88df757 Kernel: Add option to build with coverage instrumentation and KCOV
GCC and Clang allow us to inject a call to a function named
__sanitizer_cov_trace_pc on every edge. This function has to be defined
by us. By noting down the caller in that function we can trace the code
we have encountered during execution. Such information is used by
coverage guided fuzzers like AFL and LibFuzzer to determine if a new
input resulted in a new code path. This makes fuzzing much more
effective.

Additionally this adds a basic KCOV implementation. KCOV is an API that
allows user space to request the kernel to start collecting coverage
information for a given user space thread. Furthermore KCOV then exposes
the collected program counters to user space via a BlockDevice which can
be mmaped from user space.

This work is required to add effective support for fuzzing SerenityOS to
the Syzkaller syscall fuzzer. :^) :^)
2021-07-26 17:40:28 +02:00
Kenneth Myhra 7fa71fb7eb Documentation: Remove '$' character from build instruction commands
This removes the '$' character so that it is easier to copy commands
directly from the build instructions and then executing them without
first having to remove the '$' character.
2021-07-14 19:51:23 +02:00
Gunnar Beutner b805708c6f Documentation: Make sure Windows have QEMU tools in their WSL2 system
They don't need QEMU to run the VM but they do at least need the QEMU
tools to build the image.
2021-07-13 12:57:21 +02:00
Andrew Kaster 8ae425cec8 Meta+CI: Use wabt version 1.0.23 for all CI jobs
The WASM spec tests caused a stack overflow when generated with wat2wasm
version 1.0.23, which ships with homebrew. To give feature parity,
manually download the same version from GitHub packages for Ubuntu.

Document the dependencies of the WASM spec tests option, as well.
2021-07-12 18:42:45 +04:30
Gunnar Beutner 4db286e63f Documentation: Condense the Windows build instructions some more 2021-07-12 12:28:01 +02:00
Gunnar Beutner 0da89376b7 Documentation: Remove obsolete CMake option 2021-07-12 12:28:01 +02:00
Gunnar Beutner 1f229b45a9 Documentation: Show users how to build specific ninja targets directly 2021-07-12 12:28:01 +02:00
Gunnar Beutner 7f6e148e17 Documentation: Shuffle around systems in the build instruction docs
The crowd has spoken and it's clear they want... Windows and Arch Linux.
2021-07-12 12:28:01 +02:00
Andrew Kaster ca920ba082 Meta+Documentation: Remove unused -DDEBUG from build 2021-07-12 12:26:52 +02:00
Gunnar Beutner e2299b52de Documentation: Move the QEMU troubleshooting section
This is no longer relevant for most users because due to an
unrelated change to Meta/run.sh the default display backend is now
SDL which does not exhibit this problem.
2021-07-10 23:24:45 +02:00
Gunnar Beutner c3e8866118 Documentation: Add screenshot for WHPX 2021-07-10 23:24:45 +02:00
Gunnar Beutner baf40ad96d Documentation+Meta: Automatically add disable_virtio on Windows 2021-07-10 23:24:45 +02:00
Gunnar Beutner cc87bf46c1 Documentation+Meta: Automatically set vmx=off on Windows 2021-07-10 23:24:45 +02:00
Gunnar Beutner 2c392669c6 Documentation: Remove another redundant chapter
Clearly nobody has used this in a while because cpuinfo.c
for GCC 11 does not contain the code that's mentioned here.
2021-07-10 23:24:45 +02:00
Gunnar Beutner d23d81d075 Documentation: Remove redundant information
These workarounds are already mentioned in the "Hardware acceleration"
section.
2021-07-10 23:24:45 +02:00
Gunnar Beutner df84550b8f Documentation: Suggest using x86_64 QEMU on Windows
The x86_64 QEMU binary supports both i386 as well as x86_64 guests.
By using the x86_64 binary users won't have to change anything when
switching between i386 and x86_64 builds.
2021-07-10 23:24:45 +02:00
Gunnar Beutner ee7e9f05a8 Meta: Automatically use WSL paths on Windows 2021-07-10 23:24:45 +02:00
Gunnar Beutner 9026dbbfd6 Documentation: Reorganize the build documentation 2021-07-10 23:24:45 +02:00
networkException eedee151ab Documentation: Add a package manager section to the FAQ
People are commonly asking about a package manager in
serenity. This patch adds an answer the FAQ, explaining
why there is no need for packages as well as different
possible ways to add or remove software installed on the
system.
2021-07-09 19:45:08 +01:00
Yori 897ca104f9 Documentation: Added build instructions for Void Linux 2021-07-09 20:17:30 +02:00
Luke c94b0e80e7 Kernel: Stop booting and print if PAE is not supported by the processor
We currently require PAE and not having it causes us to crash.
This turns that crash into an error message.
2021-07-09 01:29:52 +02:00
Liav A 2900c8cf09 Documentation: Add simple troubleshooting guide
In this guide, we explain two boot errors that can occur and what can be
done to solve them.
2021-07-07 22:18:36 +02:00
Max Wipfli d3a2e492fb Documentation: Document the ConfigureComponents utility
This adds documentation for the ConfigureComponents utility to the build
instructions.
2021-07-06 21:54:51 +02:00
Idan Horowitz e9ab9ca5a0 Documentation: Add git to the list of self-hosted runner requirements
Github-hosted runners have this pre-installed, so our actions script
do not install it themselves.
2021-07-03 19:45:04 +01:00
Gunnar Beutner f2dca54bf0 Documentation: Increase recommended amount of RAM
The VM won't boot with 32MB because GRUB won't be able to load the
kernel which is about 114MB.
2021-07-03 20:08:54 +02:00
Gunnar Beutner 48f8dea28f Documentation: Update VirtualBox documentation for x86_64
The machine type "Other/Unknown (64-bit)" works for both the x86_64 as
well as the i686 build architecture.
2021-07-03 20:08:54 +02:00
Idan Horowitz 969b717e17 Documentation: Add instructions for setting up self-hosted runners 2021-07-03 18:32:39 +01:00
Tristan Menke 9f117a79f6 Documentation: Add workaround for blackscreen using WSL+QEMU6.x
This workaround disables the in-kernel interrupt controller.
This impacts the VM performance and should probably be removed
when the workaround is no longer needed.

This workaround was posed by stelar7.
See #7523
2021-07-03 17:32:33 +02:00
Diego Garza 5d8585df97 Documentation: Add notes for first time setup of the project in CLion
Mention the "Open Project Wizard" where you can set
the CMake options before making the cache.
Remind users to use the "Default" build type
and to build the Toolchain so CMake does not complain.
2021-07-03 08:24:06 +04:30
Daniel Bertalan 754ddda38a Documentation: Document changes to creating smart pointers
Because of the added complexity of *non-throwing* `new`, helper methods
for correctly constructing smart pointers were added in a previous
commit. This commit changes the documentation to recommend using these,
and adds examples to aid in correctly determining when to use
non-throwing new when manually creating smart pointers.
2021-06-29 22:57:52 +04:30
Stéphane Travostino 35e7c44dd4 Documentation/WSL: add a workaround for slow emulation on HiDPI screens 2021-06-18 10:21:09 +02:00
Gunnar Beutner 0dd03413d6 Meta: Add support for declaring components
Components are a group of build targets that can be built and installed
separately. Whether a component should be built can be configured with
CMake arguments: -DBUILD_<NAME>=ON|OFF, where <NAME> is the name of the
component (in all caps).

Components can be marked as REQUIRED if they're necessary for a
minimally functional base system or they can be marked as RECOMMENDED
if they're not strictly necessary but are useful for most users.

A component can have an optional description which isn't used by the
build system but may be useful for a configuration UI.

Components specify the TARGETS which should be built when the component
is enabled. They can also specify other components which they depend on
(with DEPENDS).

This also adds the BUILD_EVERYTHING CMake variable which lets the user
build all optional components. For now this defaults to ON to make the
transition to the components-based build system easier.

The list of components is exported as an INI file in the build directory
(e.g. Build/i686/components.ini).

Fixes #8048.
2021-06-17 11:03:51 +02:00
Adam Hodgen 6ab48d612a Documentation: Move Ubuntu/Debian specific build instructions
Ubuntu/Debian specific instructions should live under the
Ubuntu/Debian header
2021-06-13 17:16:03 +01:00
Adam Hodgen 9bc0017499 Documentation: Fix QEMU 5 Ubuntu version confusion
PR #7970 added a line clarifying the requirement for QEMU 5.
Unfortunately, this location this line was added changed the meaning
of the following line, referencing the availability of GCC in Ubuntu
20.04.

QEMU 5 is not available in Ubuntu 20.04, so this change is incorrect,
as well as misleading.
2021-06-13 17:16:03 +01:00
Idan Horowitz a898e01d4d Kernel: Add driver for RTL8168 & RTL8111 NICs
These are pretty common on older LGA1366 & LGA1150 motherboards.

NOTE: Since the registers datasheets for all versions of the chip
besides versions 1 - 3  are still under NDAs i had to collect
several "magical vendor constants" from the *BSD driver and the
linux driver that i was not able to name verbosely, and as such
these are labeled with the comment "vendor magic values".
2021-06-10 21:54:51 +02:00
Apoorv Mishra 73cf16f643
Documentation: Specify minimum required QEMU version 2021-06-10 17:28:26 +01:00
Liav A d183f4b03f Documentation: Add a list of supported network cards 2021-06-09 22:44:09 +04:30
Gunnar Beutner 2d38d56e29 Documentation: Add ccache and rsync to the packages to install
These aren't hard dependencies but make building and working with
SerenityOS significantly faster.
2021-06-07 09:50:26 +02:00
kemzeb b9980ffd07 Documentation: Remove redundancy in CodingStyle.md
This is a fairly small change; removed the statement "Pointer and
reference types in C++ code" as it does not provide any additional
knowledge that contributors are or will be aware of after further
reading into the "Pointers and References" section. It seems
unnecessary and redundant given the sentence adjacent to it.
2021-06-06 00:18:02 +01:00
Scott Antipa 7dab58ac3b
Documentation: Fix a typo by removing an extra word 2021-06-04 08:22:41 +01:00
Siddhant Rao 566d3cb393 Documentation: Correct some typos in kernel and browser docs 2021-06-02 18:02:59 +02:00
Andreas Kling dd9b8ee7ef Documentation: Add rule about "east const" to CodingStyle.md
Unfortunately we cannot enforce this with clang-format yet, as that
feature is not available. Until then, let's try to write new code
with this in mind, and convert old code as we go.
2021-06-01 08:55:47 +02:00
Liav A 10c747f2be Documentation: Add explanation about AHCI locking 2021-05-31 18:28:25 +01:00
Andreas Kling 89dceb178b Documentation: Remove outdated info about pls from build instructions 2021-05-31 08:53:21 +02:00
Jesse Buhagiar d44e2c9ad9 Userland: Check sudoers file perms and owner in pls
As per comment found in #6319 by @bcoles, `pls` should check the
permissions and owner of the sudoers file to ensure that it hasn't
been compromised.
2021-05-29 22:33:12 +04:30
Jesse Buhagiar 82b48d867d Userland: Implement pls, a sudo clone 2021-05-29 22:33:12 +04:30
Jacob Lindgren 8f22af087e Meta: Add binutils-devel to fedora build docs 2021-05-29 17:22:01 +01:00
Liav A e679530380 Documentation: Add another working laptop model to the list 2021-05-29 15:51:52 +02:00
Andrew Kaster 2ec302ea22 Meta/CI: Add ENABLE_ALL_DEBUG_FACILITIES CMake option
This option replaces the use of ENABLE_ALL_THE_DEBUG_MACROS in CI runs,
and enables all debug options that might be broken by developers
unintentionally that are only used in specific debugging situations.
2021-05-27 10:21:30 +02:00
Andrew Kaster dda8afcb90 Kernel: Add ENABLE_EXTRA_KERNEL_DEBUG_SYMBOLS option to set Og and ggdb3
When debugging kernel code, it's necessary to set extra flags. Normal
advice is to set -ggdb3. Sometimes that still doesn't provide enough
debugging information for complex functions that still get optimized.
Compiling with -Og gives the best optimizations for debugging, but can
sometimes be broken by changes that are innocuous when the compiler gets
more of a chance to look at them. The new CMake option enables both
compile options for kernel code.
2021-05-27 10:21:30 +02:00
Ali Mohammad Pur b3c13c3e8a LibWasm+Meta: Add test-wasm and optionally test the conformance tests
This only tests "can it be parsed", but the goal of this commit is to
provide a test framework that can be built upon :)
The conformance tests are downloaded, compiled* and installed only if
the INCLUDE_WASM_SPEC_TESTS cmake option is enabled.
(*) Since we do not yet have a wast parser, the compilation is delegated
to an external tool from binaryen, `wasm-as`, which is required for the
test suite download/install to succeed.
This *does* run the tests in CI, but it currently does not include the
spec conformance tests.
2021-05-21 00:15:23 +01:00
Linus Groh 0aab774343 Everywhere: Fix a bunch of typos 2021-05-17 17:48:55 +01:00
Andrew Kaster cfdd231a4d Documentation: Add Sanitizer section to RunningTests
Also, add link to RunningTests BuildInstructions, and clean up stale
commands in RunningTests to align to current build strategies.
2021-05-16 21:58:14 +01:00
Liav A 69a54e5f64 Documentation: Update bare metal troubleshooting guide 2021-05-16 19:58:33 +02:00
Alexander Richards ab8aa591f9
Documentation: Add my machine to hardware compatibility list (#7152) 2021-05-15 22:55:23 +02:00
Luke 4b61062785 Documentation: Add a working notebook to Hardware Compatibility List
This notebook started working with the recent AHCI fixes.
2021-05-15 22:53:06 +02:00
Idan Horowitz 227b1d4133 Documentation: Add a tested motherboard to Hardware Compatibility list
This motherboard and cpu combo now boots correctly into graphical mode
as a result of the recent fixes for AHCI and HPET.
2021-05-15 20:44:29 +01:00
Daniel Bertalan 00498e0405
Documentation: Document CMake build options
Closes #7107.
2021-05-15 00:55:36 +01:00
Idan Horowitz 687efe6dd6 Documentation: Add a note about enabling the console iPXE command
This command is used in the given script, and in the latest version of
iPXE its disabled by default
2021-05-14 13:25:19 +02:00
Jagger De Leo 0ed46103ed Documentation: Add Alpine Linux build instructions 2021-05-12 08:30:02 +01:00
Vladislav Vorobev e87eaa3991 Documentation: Fix broken link to Meta/Lagom/ReadMe.md 2021-05-11 20:35:17 +01:00
Linus Groh 5eb062d8d3 Documentation: Update sync-local.sh keyboard layout example 2021-05-09 15:31:52 +01:00
Eric Butler bf31b0da7d Documentation: Suggest using genext2fs on macos
This is a nice alternative to dealing with fuse, and a step forward
towards not requiring root.
2021-05-09 15:34:12 +02:00
Andreas Kling 773c17b6a0 Documentation: Update FAQ a bit and move it into Documentation/
This was hiding on the serenityos.org website previously, where not
many people found it. Let's put it in a more natural location, and
also make sure to link to it from the README.
2021-05-05 20:03:02 +02:00
Brian Gianforcaro f1c4a42840 Documentation: Add a note about excluding the Build directory in CLion
This was discussed a while back on discord, but no one got around to
writing it down yet.
2021-05-03 15:20:26 +02:00
thislooksfun 906460e62a Documentation: Fix typo (duplicate osxfuse) from #6069
This fixes part of #6656.
2021-04-28 09:28:19 +02:00
thislooksfun bae86cbaa7 Documentation: Fix typo (ex2 -> ext2) from #6069 2021-04-28 09:28:19 +02:00
DexesTTP 71d27abb97 Services: Rename ProtocolServer to RequestServer
The current ProtocolServer was really only used for requests, and with
the recent introduction of the WebSocket service, long-lasting
connections with another server are not part of it. To better reflect
this, this commit renames it to RequestServer.

This commit also changes the existing 'protocol' portal to 'request',
the existing 'protocol' user and group to 'request', and most mentions
of the 'download' aspect of the request to 'request' when relevant, to
make everything consistent across the system.

Note that LibProtocol still exists as-is, but the more generic Client
class and the more specific Download class have both been renamed to a
more accurate RequestClient and Request to match the new names.

This commit only change names, not behaviors.
2021-04-25 19:04:34 +02:00
Andreas Kling b91c49364d AK: Rename adopt() to adopt_ref()
This makes it more symmetrical with adopt_own() (which is used to
create a NonnullOwnPtr from the result of a naked new.)
2021-04-23 16:46:57 +02:00
Brian Gianforcaro 1682f0b760 Everything: Move to SPDX license identifiers in all files.
SPDX License Identifiers are a more compact / standardized
way of representing file license information.

See: https://spdx.dev/resources/use/#identifiers

This was done with the `ambr` search and replace tool.

 ambr --no-parent-ignore --key-from-file --rep-from-file key.txt rep.txt *
2021-04-22 11:22:27 +02:00
Idan Horowitz aaf3d26dae Kernel: Add kernel command line flag to disable VirtIO support
This command line flag can be used to disable VirtIO support on
certain configurations (native windows) where interfacing with
virtio devices can cause qemu to freeze.
2021-04-18 22:06:42 +02:00
Luke c84107a1ab Kernel: Add boot argument to disable the UHCI Controller
Helps with bare metal debugging, as we can't be sure our implementation
will work with a given machine.

As reported by someone on Discord, their machine hangs when we attempt
the dummy transfer.
2021-04-18 17:01:22 +02:00
Linus Groh 2b0c361d04 Everywhere: Fix a bunch of typos 2021-04-18 10:30:03 +02:00
Marcin Gasperowicz 139c04a6e5 Documentation: Change CMake build directory to Build/i686 in CLion config 2021-04-17 12:33:45 +02:00
João Moreno bf8223926a
Documentation: Fix the path to the disk image on WSL 2021-04-16 17:41:21 +02:00
Liav A ea1b71af69 Documentation: Describe how to use the iPXE bootloader for network boot
This method seems useful for bare-metal debugging.
2021-04-15 17:49:40 +02:00
Emil Engler b2a0552281 Documentation: Fix FreeBSD usage of the pkg command 2021-04-12 17:45:48 +02:00
Dan MacDonald 535331c75f Documentation: Add Dell Inspiron mini 10 to the hardware compatibility list 2021-04-11 01:16:24 +02:00
Samuel Klein 392d9e94f0
Documentation: Improve wording around build directory location (#6168) 2021-04-10 09:34:11 +02:00
breakgimme c0235b596b
Documentation: Change make to ninja in the installation guide (#6199) 2021-04-09 09:31:20 +02:00
Dan MacDonald af39d5d146 Documentation: Add dnsmasq configuration instructions to network boot guide 2021-04-07 19:38:00 +02:00
Dan MacDonald ceafc5eea0 Documentation: Add link to network booting guide to install guide 2021-04-06 09:27:45 +02:00
Dan MacDonald bb39f3097a Documentation: Update supported NICs and mention network boot support within install guide 2021-04-06 09:27:45 +02:00
Will fdffd8ece5
Meta: Removed commas from command in macOS prereqs (#6109)
The commas cause Homebrew to attempt to install "osxfuse,"
instead of osxfuse. "osxfuse," doesn't exist.
2021-04-04 09:00:44 +02:00
Liav A 8a12d02b9a Documentation: Add supported and tested motherboards to the list
I tested both motherboards and they seem to boot Serenity correctly :)
2021-04-03 11:57:23 +02:00
Liav A 48111f17fc Documentation: Clarify that AHCI is supported but may suffer from bugs
We do support AHCI now, but the implementation could be incomplete for
some chipsets.
Also, we should write the acronym "Non-volatile Memory Express" as
NVMe. not NVME.
2021-04-03 11:57:23 +02:00
thislooksfun 05d7869dc0 Documentation: Split brew install commands into core and fuse+ext2
If you don't need/want to use Fuse+ex2 then half of the existing
install command is unnecessary, and it's hard to pick out which you
do and don't need to, for example, build Lagom. This makes it clear
which commands you can skip if you don't need ex2 support.
2021-04-02 23:08:05 +02:00
thislooksfun 408398e276 Documentation: Add cmake to brew installs
MacOS does not ship with CMake, so we have to install it before it
can be used!
2021-04-02 23:08:05 +02:00
thislooksfun 20ca1acdbf Documentation: Update macOS build path in BuildInstructions.md
This is a follow-up to d0427b610c.
2021-04-02 23:08:05 +02:00
Linus Groh d0427b610c Documentation: Update build path in BuildInstructions.md
Build/ is now /Build/i686/. No need to mention other targets just yet.
2021-03-11 21:01:29 +01:00
Linus Groh 07f25ca6be Documentation: Clean up BuildInstructions.md a bit
- Fix headings
- Consistent & more accurate code block language specifiers
- Add some newlines where appropriate
- Remove the strange "run ninja but actually you don't have to run ninja
  as ninja install takes care of that" part
- Don't repeat specific build commands in "Ports" section
- Reword "Keymap" section to more generic "Customize disk image"
2021-03-11 21:01:29 +01:00
Brendan Coles 0e18c7ffda Documentation: Add Serenity installation guide for VMware 2021-03-10 11:59:32 +01:00
Emanuele Torre 1f81bc6879 Everywhere: Remove unnecessary whitespace at the end of some lines. 2021-03-08 09:20:53 +01:00
Dan MacDonald 9547846a18 Documentation: Re-arrange Linux prerequisites in build instructions 2021-03-04 15:42:29 +01:00
Elliot Maisl 95b49691c5 Documentation: Add instruction about entitlements in BuildInstructions
The QEMU's `--accel hvf` command was recently enabled in the `run.sh`
script, but it sadly doesn't work on macOS Big Sur: you need to first
sign your code by adding an `entitlements.xml` file and running a
simple command.
2021-03-03 23:08:25 +01:00
Paweł Łukasik f66adbdd95
Meta: Use ninja instead of make in the WSL docs (#5575)
Co-authored-by: Paweł Łukasik <lukasik.pawel@gmail.com>
2021-03-01 11:10:50 +01:00
Andrew Kaster 87a47de613 Documentation: Add RunningTests document
This page explains how to run host tests with Lagom and on-target tests
with run-tests-and-shutdown.sh
2021-02-28 18:19:37 +01:00
Itamar 780e84f2e1 Documentation: Update CLion configuration documentation
Closes #5512
2021-02-26 14:43:26 +01:00
Jorropo 7b156a7add
Documentation: Combine two "cd" commands in build instructions (#5457) 2021-02-21 23:49:56 +01:00
Ben Wiederhake 44649517e4 Documentation: QtCreator likes BOMs, our linter doesn't 2021-02-21 22:34:09 +01:00
joshua stein ca35776e78 Documentation: Update build dependencies on OpenBSD 2021-02-14 09:29:22 +01:00
Ben Wiederhake 71219b8a1d Documentation: QtCreator and <syscall.h> 2021-02-08 18:03:57 +01:00
Ben Wiederhake 897d3d78b9 Documentation: Update QtCreator includes for Debug.h
Including 'Build/' is unfortunate, but this seems to be what everyone does,
short of creating a symlink/hardlink from /AK/Debug.h to /Build/AK/Debug.h.

This feels like a crutch, but it's a better crutch than having a workaround
that could easily break or corrupt commits (i.e., the symlinks).
2021-02-08 18:03:57 +01:00
jarhill0 ff3ae331f7 Documentation: Clarify macOS build instructions
I just ran through successfully building and running SerenityOS under
macOS. I ran into two main things that I struggled with, which were
- properly enabling osxfuse (through System Preferences)
- running the suggested command about compiler versions in such a way
  that would be compatible with Ninja (as it turns out, I just needed
  to add `-G Ninja` to the command)
This commit clarifies those things for anyone who may follow
2021-02-06 08:51:45 +01:00
Ben Wiederhake 52fff644d5 Documentation: Keymaps are nice, document them!
fixup! Meta+Documentation: Fix sync-local.sh support, document keymaps
2021-02-01 09:54:32 +01:00
Dexter d697d33fa6
Documentation: Fix typo in CodingStyle.md (#5121) 2021-01-26 12:26:27 +01:00
Jean-Baptiste Boric 59396ab1c6 Documentation: Add instructions for network booting 2021-01-25 22:25:58 +01:00
Linus Groh 421587c15c Everywhere: Fix typos 2021-01-22 18:41:29 +01:00
Jonathan Turner 0bf5669ba3
Meta: Get building on NixOS (#5005) 2021-01-22 17:44:05 +01:00
Ben Wiederhake 7980268b7b Meta: Document QtCreator 'lic' auto-complete 2021-01-22 11:28:07 +01:00
Nico Weber 98637bd549 WindowServer: In HighDPI mode, load high-res window buttons and high-res cursors
Bitmap::load_from_file("foo.png", 2) will now look for "foo-2x.png" and
try load that as a bitmap with scale factor 2 if it exists. If it
doesn't, it falls back to the 1x bitmap as normal.
Only places that know that they'll draw the bitmap to a 2x painter
should pass "2" for the second argument.

Use this new API in WindowServer for loading window buttons and
cursors.

As a testing aid, ctrl-shift-super-i can force HighDPI icons off in
HighDPI mode. Toggling between low-res and high-res icons makes it easy
to see if the high-res version of an icon looks right: It should look
like the low-res version, just less jaggy.

We'll likely have to grow a better API for loading scaled resources, but
for now this suffices.

Things to check:
- `chres 640 480` followed by `chres 640 480 2` followed by
  `chres 640 480`
- window buttons in window context menu (in task bar and on title bar)
  still have low-res icons
- ctrl-shift-super-i in high-res mode toggles sharpness of window
  buttons and of arrow cursorf
- arrow cursor hotspot is still where you'd expect
2021-01-20 10:28:27 +01:00
Nico Weber 5f9c42c404 LibGfx: Give Bitmap a scale factor
Gfx::Bitmap can now store its scale factor. Normally it's 1, but
in high dpi mode it can be 2.

If a Bitmap with a scale factor of 2 is blitted to a Painter with
scale factor of 2, the pixels can be copied over without any resampling.
(When blitting a Bitmap with a scale factor of 1 to a Painter with scale
factor of 2, the Bitmap is painted at twice its width and height at
paint time. Blitting a Bitmap with a scale factor of 2 to a Painter with
scale factor 1 is not supported.)

A Bitmap with scale factor of 2 reports the same width() and height() as
one with scale factor 1. That's important because many places in the
codebase use a bitmap's width() and height() to layout Widgets, and all
widget coordinates are in logical coordinates as well, per
Documentation/HighDPI.md.

Bitmap grows physical_width() / physical_height() to access the actual
pixel size. Update a few callers that work with pixels to call this
instead.

Make Painter's constructor take its scale factor from the target bitmap
that's passed in, and update its various blit() methods to handle
blitting a 2x bitmap to a 2x painter. This allows removing some gnarly
code in Compositor. (In return, put some new gnarly code in
LibGfxScaleDemo to preserve behavior there.)

No intended behavior change.
2021-01-20 10:28:27 +01:00
Nico Weber b1c640a956 Docs: Start outlining options for highdpi resource handling 2021-01-19 16:48:21 +01:00
Andrew Thurman 6d20b54b09
Documentation: Add patch to fedora build deps (#4968) 2021-01-17 08:08:11 +01:00
Nico Weber f37f281f89 DisplaySettings: Add UI for switching the scale factor
For now, only support 1x and 2x scale.

I tried doing something "smarter" first where the UI would try
to keep the physical resolution constant when toggling between
1x and 2x, but many of the smaller 1x resolutions map to 2x
logical resolutions that Compositor rejects (e.g. 1024x768 becomes
512x384, which is less than the minimum 640x480 that Compositor
wants) and it felt complicated and overly magical.

So this instead just gives you a 1x/2x toggle and a dropdown
with logical (!) resolutions. That is, 800x600 @ 2x gives you
a physical resolution of 1600x1200.

If we don't like this after trying it for a while, we can change
the UI then.
2021-01-17 08:06:12 +01:00
Ben Wiederhake b3d04b3a3c Documentation: Make serenity.includes more easily copyable 2021-01-15 21:51:19 +01:00
Ben Wiederhake 7562cf5157 Documentation: Recommend ninja by default 2021-01-15 21:51:19 +01:00
Nico Weber e87b8a79ed WindowServer: Make HighDPI aware
Almost all logic stays in "logical" (unscaled coordinates), which
means the patch is small and things like DnD, window moving and
resizing, menu handling, menuapplets, etc all work without changes.

Screen knows about phyiscal coordinates and mouse handling internally is
in physical coordinates (so that two 1 pixel movements in succession can
translate to one 1 logical coordinate mouse movement -- only a single
event is sent in this case, on the 2nd moved pixel).

Compositor also knows about physical pixels for its backbuffers. This is
a temporary state -- in a follow-up, I'll try to let Bitmaps know about
their intrinsic scale, then Compositor won't have to know about pixels
any longer. Most of Compositor's logic stays in view units, just
blitting to and from back buffers and the cursor save buffer has to be
done in pixels. The back buffer Painter gets a scale applied which
transparently handles all drawing. (But since the backbuffer and cursor
save buffer are also HighDPI, they currently need to be drawn using a
hack temporary unscaled Painter object. This will also go away once
Bitmaps know about their intrinsic scale.)

With this, editing WindowServer.ini to say

  Width=800
  Height=600
  ScaleFactor=2

and booting brings up a fully-functional HighDPI UI.
(Except for minimizing windows, which will crash the window server
until #4932 is merged. And I didn't test the window switcher since the
win-tab shortcut doesn't work on my system.) It's all pixel-scaled,
but it looks pretty decent :^)
2021-01-15 19:10:16 +01:00
bcoles 8e6c320af1 Documentation: UsingQtCreator: Include Userland in includes paths 2021-01-14 16:19:53 +01:00
Nico Weber d551263b11 LibGfx: Make it possible to apply an (integer) scale to a Painter
This adds a scale factor to Painter, which will be used for HighDPI
support. It's also a step towards general affine transforms on Painters.

All of Painter's public API takes logical coordinates, while some
internals deal with physical coordinates now. If scale == 1, logical
and physical coordinates are the same. For scale == 2, a 200x100 bitmap
would be covered by a logical {0, 0, 100, 50} rect, while its physical
size would be {0, 0, 200, 100}.

Most of Painter's functions just assert that scale() == 1 is for now,
but most functions called by WindowServer are updated to handle
arbitrary (integer) scale.

Also add a new Demo "LibGfxScaleDemo" that covers the converted
functions and that can be used to iteratively add scaling support
to more functions.

To make Painter's interface deal with logical coordinates only,
make translation() and clip_rect() non-public.
2021-01-12 23:32:54 +01:00
Nico Weber dc34ecf394 Docs: Add design doc and implementation plan for highdpi
I have a local branch that gets us past implementation stage 1
in this doc, and it seems like a useful enough checkpoint to
upstream it and then iterate in tree.
2021-01-12 20:44:42 +01:00
Linus Groh fb220d5678 Meta+Docs+CI: Require clang-format >= 11 2020-12-31 21:51:00 +01:00
Peter Nelson d014277973 Docs: Update WSL notes with some workarounds for known issues 2020-12-30 20:31:30 +01:00
meme 23b23cee5a Build: Support non-i686 toolchains
* Add SERENITY_ARCH option to CMake for selecting the target toolchain
* Port all build scripts but continue to use i686
* Update GitHub Actions cache to include BuildIt.sh
2020-12-29 17:42:04 +01:00
Nathan Lanza 33834090bb
Documentation: Update macOS build instructions cask invocation (#4561)
brew deprecated `brew cask` and requires `brew install --cask` instead
2020-12-27 01:18:15 +01:00
Dan MacDonald 277c44c2dc Meta: Update install guide with link to hardware compatibility list 2020-12-24 11:02:43 +01:00
Dan MacDonald 00dc615d53 Meta: Add Hardware Compatbility List 2020-12-16 17:30:09 +01:00
Dan MacDonald 0e8702c310 Meta: Update bare metal installation guide 2020-12-11 09:35:24 +01:00
Linus Groh 2c9e6585f8 Documentation: Update required GCC version to >= 10
I initially thought as long as Lagom is not built >= 9 would be fine,
but LagomCore is always built for the code generators.
2020-11-07 18:22:18 +01:00
Andreas Kling 69a015cd9a Documentation: Remove outdated comment about global git identity
This was used by the toolchain build script at one point but is now
only used when running BuildIt.sh with --dev.
2020-10-18 20:33:02 +02:00
Andreas Kling 57c2da1f86 Documentation: Remove "flock" from dependencies
The build system no longer uses "flock", so stop telling people they
need to install it.
2020-10-18 20:33:02 +02:00
Andreas Kling 75d5f436bc Toolchain: Upgrade to GCC 10.2.0 2020-10-12 19:53:25 +02:00
Linus Groh bcfc6f0c57 Everywhere: Fix more typos 2020-10-03 12:36:49 +02:00
zilrich a2ffe95a8c
Meta: Update OpenSUSE build dependencies (#3655) 2020-10-02 13:08:06 +02:00
Robbe De Greef fd7a2278b9 Documentation: Debian gcc-9 installation instructions
We already have installation instructions for ubuntu but not yet for
Debian. Gcc-9 is not available on Debian stable so instructions for
switching to and from Debian testing are added.
2020-09-26 17:16:53 +02:00
Robbe De Greef 926fb3ff48 Documentation: Serenity requires GCC 9 or higher
Gcc 8.3.0 (which is the current version in debian 10 stable) seems to
fail at building AK. New people might get stuck when they try to run
make inside the ./Build folder and fail at building serenity.
2020-09-26 17:16:53 +02:00