Commit Graph

536 Commits

Author SHA1 Message Date
Linus Groh
8750e1d080 Documentation: Add section about curly braces to CodingStyle.md 2023-01-06 19:52:06 +01:00
Børlaag
fb3e890bd9 Documentation: Update VirtualBox docs memory section 2023-01-06 11:08:58 -07:00
Børlaag
2ec4322772 Documentation: Update VMWare docs memory section 2023-01-06 11:08:58 -07:00
Liav A
0f7cc468b2 Kernel: Make i8042 controller initialization sequence more robust
The setting of scan code set sequence is removed, as it's buggy and
could lead the controller to fail immediately when doing self-test
afterwards. We will restore it when we understand how to do so safely.

Allow the user to determine a preferred detection path with a new kernel
command line argument. The defualt option is to check i8042 presence
with an ACPI check and if necessary - an "aggressive" test to determine
i8042 existence in the system.
Also, keep the i8042 controller pointer on the stack, so don't assign
m_i8042_controller member pointer if it does not exist.
2023-01-06 11:09:56 +01:00
Ben Wiederhake
6c85088952 Documentation: Update QtCreator setup instructions
The biggest difference is that -m32 is no longer important, and in fact
breaks every 64-bit setup.

Also, defining ENABLE_UNICODE_DATA, ENABLE_COMPILETIME_FORMAT_CHECK, and
__SSE__ makes some code "visible" in the #ifdef sense, which improves
syntax highlighting.
2023-01-05 13:20:54 +01:00
Taj Morton
f2253d11e5 Documentation: Add how to update build to use SerenityOS-provided CMake 2023-01-04 09:02:13 +00:00
kleines Filmröllchen
b36d09bab0 Documentation: Document fix for missing /etc/mtab
/etc/mtab is identical to /proc/self/mounts, but it does not exist under
many circumstances, e.g. chroot'ed or in WSL. The fact that many
userspace programs rely on this file existing and the user needing to
create symlinks manually has been a long-standing issue (there's pretty
old forum posts on Debian and Arch Linux forums about it), but it's not
fixed upstream. This short mention should save people some time.
2023-01-03 18:02:16 +01:00
Vetrox
2afe9f574e Documentation: Add Neovim configuration documentation 2023-01-03 17:59:08 +01:00
Liav A
8c9128f36d Documentation: Remove i686 support 2022-12-28 11:53:41 +01:00
Nico Weber
7aa9413b53 Documentation: Fix a few typos 2022-12-27 15:58:39 -08:00
Andrew Kaster
e79e7dc3b9 Documentation: Move Ladybird BuildInstructions to Documentation
Update Ladybird/README.md at the same time to reflect its new monorepo
status.
2022-12-25 07:58:58 -07:00
0xxFF
c4bc889346 Documentation: Adjust default TARGET to x86_64 in the documentation 2022-12-19 09:00:34 -05:00
Andrew Kaster
75495a5d65 Documentation: Explain CMake 3.25.x requirement 2022-12-17 22:21:43 -07:00
Andrew Kaster
75f7a164a6 Documentation: Clarify that clang can be used as a host compiler 2022-12-17 22:21:43 -07:00
Gurkirat Singh
c2597c3856 Documentation: Add libssl-dev in the debian / ubuntu requirements
In the fresh and minimal installations dev package are often
stripped. This commit will install the libssl dev packages
required in `Utilities/cmcurl/CMakeLists.txt:608`.
2022-12-16 01:03:23 -07:00
Andrew Kaster
77a22268c6 Documentation: Describe extra clang tools built alongside BuildClang.sh
Also rephrase some of the information on updated clang-format binaries
2022-12-10 03:00:24 -07:00
Liav A
968e1a6efc Documentation: Add a note on paths in the kernel development guidelines
Add a note on hardcoded paths so everyone know that this is not an
appropriate thing to do when writing kernel code.
2022-12-09 22:59:50 -07:00
Linus Groh
57dc179b1f Everywhere: Rename to_{string => deprecated_string}() where applicable
This will make it easier to support both string types at the same time
while we convert code, and tracking down remaining uses.

One big exception is Value::to_string() in LibJS, where the name is
dictated by the ToString AO.
2022-12-06 08:54:33 +01:00
Linus Groh
6e19ab2bbc AK+Everywhere: Rename String to DeprecatedString
We have a new, improved string type coming up in AK (OOM aware, no null
state), and while it's going to use UTF-8, the name UTF8String is a
mouthful - so let's free up the String name by renaming the existing
class.
Making the old one have an annoying name will hopefully also help with
quick adoption :^)
2022-12-06 08:54:33 +01:00
Agustin Gianni
bf522d3bb3 Documentation: Fix typo in AdvancedBuildInstructions.md
Fixes a small typo where the word `are` was missing.
2022-12-05 11:08:19 +00:00
Liav A
bef9ad4e44 Meta: Update all references of clang-format-14 to clang-format-15
Also, we add a section that describes how to get an updated clang-format
with multiple possible options to do that.
2022-12-04 09:13:24 -07:00
Andreas Oppebøen
eb44a90e62 Documentation: Recommend CLion code style settings over manual steps
Changing the naming conventions one-by-one was tedious and error-prone.
A settings file is likely to be more forward compatible than a
screenshot. The settings file was made by repeating the manual steps
provided in the documentation, and exporting the file in CLion.
2022-12-03 23:54:48 +00:00
Linus Groh
8639d8bc21 Meta: Switch to clang-format-15 as the standard formatter
The two major changes noticeable on the SerenityOS codebase are:
- Much improved support for const placement, clang-format-14 ignored
  our east-const configuration in various places
- Different formatting for requires clauses, now breaking them onto
  their own line, which helps with readability a bit

Current versions of CLion also ship LLVM 15, so the built-in formatting
now matches CI formatting again :^)
2022-12-03 23:52:23 +00:00
sno2
36f6e09f7e Documentation: Update WSL QEMU Installation Requirements
As Evil stated in the Discord, WSL users must install the DLL
libraries with their QEMU Installation or else they will receive
obscure errors about the syntax of the Meta/run.sh file as shown in
SerenityOS#14033.
2022-12-03 16:04:38 -07:00
Liav A
71536e91c5 Documentation: Add a document about TmpFS 2022-11-25 14:43:28 -07:00
Liav A
9e7d099678 Documentation: Add guidelines document for kernel development 2022-11-25 22:34:32 +01:00
Filiph Sandström
02baa1b005 Documentation: Give collapsed sections consistent headers 2022-11-03 06:58:19 +00:00
John Diamond
63c459b6c1 Documentation: Update macOS build dependencies to gcc-12
Since commit bc2ebcadc serenity requires gcc version 12 or later to
build, so let's update the homebrew package version to match that.
2022-11-02 16:58:43 +00:00
Gunnar Beutner
2ef1e7e634 Meta: Add configuration file for YouCompleteMe
YouCompleteMe is a plugin for Vim which provides code-completion
functionality. This change adds a configuration file which makes
YouCompleteMe aware of which compile flags to use with clangd.
2022-10-27 20:52:39 +01:00
Linus Groh
bc2ebcadc0 Everywhere: Require version >= 12 for GCC host compiler
So far we've gotten away with using GCC 11 for Lagom and to compile the
toolchain, but via #15795 we discovered a compiler bug that has been
fixed in the latest version but would error the build with CI's GCC 11.
Time for an upgrade :^)

We already use ubuntu-22.04 images in most places, so this is pretty
straightforward. The only exception is Idan's self-hosted runner, which
uses Ubuntu Focal. LibJS should build fine with GCC 11, still.
2022-10-25 23:15:51 +01:00
kleines Filmröllchen
2d4591dad4 Documentation: Add FAQ regarding MP3 patents 2022-10-15 22:50:33 +02:00
leeight
1d058ffd72 Documentation: Update VSCodeConfiguration.md
Because x86-64 is the default target, so update the related
documentations.

74018be739
2022-10-13 17:44:49 +02:00
Liav A
a1d1f7566f Documentation: Add initial document about the Kernel graphics subsystem 2022-10-12 15:00:53 +01:00
Kenneth Myhra
7ea987456a Documentation: Update CLion Configuration to use the x86-64 target
Since the default target is x86-64 after PR #15441 was merged, then let
us update the CLion Configuration accordingly.
2022-10-12 00:09:51 +02:00
Andrew Kaster
a74251ca91 Documentation: Update AddNewIDLFile for GC and Exposed changes 2022-10-09 10:14:57 +02:00
Peter Elliott
37f527be9c Documentation: Change references to uid based sockets to sids 2022-10-03 11:11:29 +02:00
Liav A
f46cc90f82 Documentation: Add a document about the Kernel IOWindow concept 2022-09-23 17:22:15 +01:00
Linus Groh
edfef8e2f5 Everywhere: Rename WrapperGenerator to BindingsGenerator
This code generator no longer creates JS wrappers for platform objects
in the old sense, instead they're JS objects internally themselves.
Most of what we generate now are prototypes - which can be seen as
bindings for the internal C++ methods implementing getters, setters, and
methods - as well as object constructors, i.e. bindings for the internal
create_with_global_object() method.

Also tweak the naming of various CMake glue code existing around this.
2022-09-21 23:06:08 +01:00
Tim Schumacher
1b25c38b8b Everywhere: Fully remove the separate LibM directory 2022-09-16 16:09:19 +00:00
Brian Gianforcaro
d0a1775369 Everywhere: Fix a variety of typos
Spelling fixes found by `codespell`.
2022-09-14 04:46:49 +00:00
Arun Nanduri
e268316865 Documentation: Amend comment describing use of "virtual" and "final" 2022-09-06 19:15:54 +00:00
Andreas Kling
6f433c8656 LibWeb+LibJS: Make the EventTarget hierarchy (incl. DOM) GC-allocated
This is a monster patch that turns all EventTargets into GC-allocated
PlatformObjects. Their C++ wrapper classes are removed, and the LibJS
garbage collector is now responsible for their lifetimes.

There's a fair amount of hacks and band-aids in this patch, and we'll
have a lot of cleanup to do after this.
2022-09-06 00:27:09 +02:00
Andreas Kling
7c3db526b0 LibWeb: Make DOM::Event and all its subclasses GC-allocated 2022-09-06 00:27:09 +02:00
Andreas Kling
12042f0757 LibWeb: Make CSSRule and all its subclasses GC-allocated 2022-09-06 00:27:09 +02:00
kleines Filmröllchen
c91511b883 Meta+Tests: Allow running FLAC spec tests
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-02 23:54:50 +01:00
Brian Gianforcaro
56c1e71a37 Documentation: Remove execute bit from image file 2022-08-24 07:29:13 +00:00
Skye Sprung
8026d8926c Documentation: Change spelling error in CLionConfiguration.md
Change "want exclude" to "want to exclude"
2022-08-22 08:48:29 +01:00
Roberto Bampi
78bc84c2d8 Docs: Update CLion configuration for WSL
In CLion on Windows subsystem for linux (WSL) we need to set up a
CLion toolchain so that the IDE can find the correct CMake.
2022-08-19 18:10:47 +01:00
Lucas CHOLLET
ac7b0e69e5 Base: Launch WebContent at session start-up 2022-08-14 21:52:35 +01:00
Sam Atkins
5fbcda950b Documentation: Add missing step when creating a new IDL type
If you use your new IDL class as a type in an IDL file without doing
this, you'll get confusing error messages.
2022-08-14 11:30:40 +02:00
Liav A
6164729d06 Everywhere: Get rid of the fbdev kernel boot argument remainders 2022-08-14 01:03:23 +01:00
Riyyi
77f0a66d2f Documentation: Add clang-format variant to EmacsConfiguration.md
Add a variant of auto formatting using clang-format that doesn't use
additional packages. It works by adding a buffer-local hook to
`'before-save` for all C++ project files.
2022-08-08 16:36:23 -04:00
Chun Ngai Au
bfa94dd0b7 Documentation: Fix c_cpp_properties.json typo
The current compilerArgs will cause an error when VSCode's C++ extension
queries the compiler for defaults, causing it to revert to the system's
default compiler.
2022-08-01 14:59:45 +01:00
Sam Atkins
2786147774 Documentation: Add a table of contents for Documentation 2022-07-21 17:35:36 +01:00
Sam Atkins
9ddca98bb0 Documentation: Rename UsingQtCreator.md
This name was the odd one out among the IDE/Editor guides.
2022-07-21 17:35:36 +01:00
Tim Schumacher
28061cf94d Everywhere: Fully remove the separate LibPthread directory 2022-07-19 11:00:35 +01:00
Andreas Kling
52862c72d0 LibWeb: Rename FormattingState to LayoutState
This seems a bit more descriptive (and also a bit shorter).
2022-07-17 14:11:36 +02:00
kleines Filmröllchen
fb7cd7b340 Documentation: Merge UsingFontEditor into existing FontEditor manpage
The generate-manpages script needs to be updated again to handle the new
PNGs in section 1. (I'm intentionally not making this a multi-directory
glob.)
2022-07-11 11:35:56 +02:00
kleines Filmröllchen
1419732a73 Documentation: Move IPC endpoint documentation to manpage section 4 2022-07-11 11:35:56 +02:00
kleines Filmröllchen
9660f5d0e6 Documentation: Move all file format documentation into its own manpage
The documentation is largely unchanged except for adoption into the
standard manpage format.
2022-07-11 11:35:56 +02:00
thankyouverycool
69a385f559 FontEditor: Rename FontEditorWidget => FontEditor::MainWidget 2022-07-06 14:25:30 +02:00
Jonta
6828937676 Docs: FAQ: Improve grammar in 2 paragraphs 2022-07-05 20:07:57 +00:00
Daniel K Bueno
65440f9262 Documentation: Add information on MacOS build prerequisites
This PR includes information that highlights the importance of
updating Xcode on MacOS. I ran into problems building serenity
on MacOS because I had Xcode installed but not updated in a while.
This triggered seemingly unrelated errors that were easily solved
by updating Xcode.
2022-07-04 05:52:31 +00:00
Cyber Gsus
224924885d Documentation: Bump compiler version to 12.1.0 in include paths
Even though we tell the user to change the version manually if it
doesn't match with the current
`Toolchain/Local/i686/i686-pc-serenity/include/XX.X.X` version, it
doesn't hurt to update it properly now that versions differ by major
version.
2022-06-30 13:16:40 +02:00
Linus Groh
cc4bb59a7e Playground: Rename the application to GMLPlayground
Just "Playground" is too generic and doesn't match the general rule of
"application name equals display name minus spaces".
2022-06-28 21:10:10 +01:00
kleines Filmröllchen
008b46d06e Documentation: Specify that no new code should contain C-style casts
Let's move towards a C-style-cast-free code base.
2022-05-29 20:36:16 +01:00
EWouters
59598ded15 Documentation: Add ninja command to example
This is needed for the next command to work.
2022-05-25 23:50:57 +01:00
Nathan Wallace
0c0a760aad Meta+Documentation: Bump required QEMU version
This commit bumps the required QEMU version to 6.2 and updates the
version checking logic in Meta/run.sh to support checking against
major and minor version numbers instead of checking against the major
version only
2022-05-24 06:30:57 -04:00
Andrew Kaster
ca42da23c2 Meta+Userland: Add jakt as an optional Lagom Tool
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-23 23:05:45 +02:00
Timon Kruiper
cc7723b6c4 Meta: Add option to disable Kernel Address Sanitizer
By default we enable the Kernel Undefined Behavior Sanitizer, which
checks for undefined behavior at runtime. However, sometimes a developer
might want to turn that off, so now there is a easy way to do that.
2022-05-21 20:23:32 +01:00
Daniel Bertalan
124bcd743b Documentation: Only install the x86 and AArch64 qemu backends on Arch
The qemu-emulators-full package installs qemu backends for *all*
supported architectures, but we only need x86 and AArch64.

This decreases the installed size of dependencies by 800 MiB.
2022-05-20 09:51:15 +01:00
DexesTTP
b37379d489 Meta: Move LibWeb's CMake generation script to its own file
This patch has no functional changes, but prepares the CMake script to
be able to handle LibWeb on Lagom.
2022-05-13 09:59:02 +02:00
Sam Atkins
f64a164392 Documentation: Correct and update IDL documentation
- Delete the part about removing `[Exposed=Window]` since that's not
  necessary and we may want that information there to generate the
  Window object.
- Mention adding `#import`s.
- Outline the requirements for the implementation class.
- Mention the non-Event wrapper factories that need to know about
  certain types.

I tend to refer to this document every time I add an IDL type so it's
helpful if it's comprehensive.
2022-05-11 20:16:10 +02:00
networkException
45d78f6435 Documentation: Update the required packages for arch based systems
Since qemu 7 the Arch Linux repository is using a different naming
system for the various required packages. This patch updates the
required dependencies for running serenity.

See https://archlinux.org/news/qemu-700-changes-split-package-setup/
2022-05-09 17:18:25 +02:00
kleines Filmröllchen
53d3d2daaa Documentation: Document how the event loop works & what it does
This was long overdue; as of writing this I saw another question about
something that seems obvious to me who spent a bunch of time with the
system.
2022-05-03 23:04:11 +02:00
Andrew Kaster
5120b39d0e Meta+Userland: Add ENABLE_USERSPACE_COVERAGE_COLLECTION CMake option
This option sets -fprofile-instr-generate -fcoverage-mapping for Clang
builds only on almost all of Userland. Loader and LibTimeZone are
exempt. This can be used for generating code coverage reports, or even
PGO in the future.
2022-05-02 01:46:18 +02:00
python-69
bfb4f070ba Documentation: Fix Typo in TransferringFiles.md
Changed typo in command from Meta/serenity.run to Meta/serenity.sh run
2022-05-01 18:11:07 +02:00
djwisdom
0083fb629b Base+Documentation: Add UsingFontEditor markdown file
Applied all document rewordings as stated for in the PRs
conversation section.
2022-04-30 19:13:17 +02:00
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