Commit graph

351 commits

Author SHA1 Message Date
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
Jakob-Niklas See
86d230ab5f Documentation: Fixed minor typo in UsingQtCreator 2020-09-07 16:53:29 +02:00
Luke
9b9c752dbe Documentation: Add Windows section in build instructions
It seems that new people go to the build instructions from the main
README, don't see Windows and are then stuck.

We do have instructions for Windows, but they aren't noted in the build
instructions, so new people get stuck thinking there's no way to build
on Windows.
2020-09-03 11:03:34 +02:00
Sergio Ahumada
647f3b87bd Documentation: Update BuildInstructions.md
Add missing `cmake ..' line before compiling with make
2020-08-25 09:36:56 +02:00
Ben Wiederhake
1176865276 Meta: Explain how to build with ninja
Inspired by #3047, and my struggles to understand how cmake is supposed to work ^^

Thanks to @bgianfo, who made me realize that ninja can be used just like make.
No idea why I didn't notice that earlier.
2020-08-17 23:05:55 +02:00
Andreas Kling
b6e18133ae LibWeb: Rename WebContentView => OutOfProcessWebView 2020-08-17 18:05:35 +02:00
Ben Wiederhake
7a8c72d136 Meta: Document QtCreator auto-format and compiler kits 2020-08-15 20:48:52 +02:00
Peter Nelson
e36fce9cfc Docs: explain how to enable QEMU hardware acceleration on Windows
Describes how to enable QEMU hardware acceleration on Windows using the
Windows Hypervisor Platform feature.
2020-08-14 15:09:59 +02:00
Peter Nelson
d00df4e721 Docs: clarify steps to use Windows-native QEMU when building under WSL
This now descibes how to get the regular `make run` workflow to work
under Windows using native QEMU. It describes how to override the QEMU
binary path, as well as overriding the SerenityOS disk image file
location with a native Windows path.

Also fixes some minor spelling and punctuation issues.
2020-08-14 15:09:59 +02:00
Andrew Mbugua
1f7190d3bd
Meta: Fix typo in NotesOnWSL.md (#3086) 2020-08-11 14:27:00 +02:00
Valtteri Koskivuori
c1f633e1ee Documentation: Add a mention of the recent requirement for a newer
host compiler. On macOS this might have to be specified explicitly.
2020-08-07 09:07:10 +02:00
Valtteri Koskivuori
b4a29113e4 Documentation: Add a guide for setting up Qt Creator
This was already in video form, but I figured it might be nice to
have this here as well, to make it easier to discover.
2020-08-06 10:22:14 +02:00
Luke
f71b112530 Documentation: Add an installation guide for VirtualBox
Now that Serenity can run on VirtualBox, it's time for the documentation.
2020-08-05 10:52:48 +02:00
Paul Scharnofske
fbc54a2dba Documentation: Only install missing packages for Arch Linux.
By default `pacman -S` will reinstall all the packages that are already installed on the system.
2020-07-26 17:48:24 +02:00
Dominik M. Kwiatek
782cd93c01
Meta: Add openSUSE dependencies to build documentation (#2801) 2020-07-15 00:06:16 +02:00
Andreas Kling
1037a24076 Documentation: Add note about DNS lookups to browser architecture docs 2020-07-06 18:41:41 +02:00
Andreas Kling
d897940e02 Documentation: Add a document about the Browser process architecture 2020-07-06 16:17:43 +02:00
Petr Akhlamov
188c83328f
Meta: Add ALT Linux packages to BuildInstructions.md (#2688) 2020-07-04 10:51:16 +02:00
Andrew Kaster
4f71bd54a7 Documentation: Add filesystem note to WSL2 notes
WSL2 is now available in non-insider builds of Windows, starting
with version 2004.

Add a filesystem note regarding use of /mnt/c et al from WSL2 for
compiling serenity. Namely, recommend against it as the performance
across the 9p file system protocol is terrible for IO heavy jobs.
2020-06-28 00:06:27 +02:00
Emanuele Torre
e42f4abd61 Meta: tweak build-image-grub.sh to allow running make grub-image..
without sudo.
2020-06-21 10:13:04 +02:00
Érico Nogueira Rolim
fef9ad520b
Toolchain: Use curl instead of wget (#2574)
- For Linux: curl is already listed as a dependency;
- For macOS: curl is pre-installed;
- For OpenBSD and FreeBSD: curl is a dependecy of git.
2020-06-18 16:31:12 +02:00
Ewan
0609a85166 Docs: Correct wording on CMake downloads 2020-06-17 15:08:47 +02:00
Ewan
92eed96265 Docs: Spell CMake correctly in BuildInstructions 2020-06-17 15:08:47 +02:00
Ewan
6a567e1191 Docs: Add comment about required cmake version
Toolchain/BuiltIt.sh expected a version of cmake which
apt did not provide for my system. Added note of the
expected version and where to find a newer version.
2020-06-16 13:54:47 +02:00
Dominik Madarász
7e2cf4be4b
Docs: Update FreeBSD instructions (#2510)
ginstall should not be symlinked to install globally. The actual issue
of having GNU coreutils prefixed with `g` and not being picked up by
CMake can be fixed on CMake level as noted here:
https://github.com/SerenityOS/serenity/issues/2234#issuecomment-629754194
2020-06-16 13:31:11 +02:00
Andreas Kling
68177fd9a1 Meta: Move INSTALL.md into Documentation/ 2020-05-28 13:09:43 +02:00
Yonatan Goldschmidt
00c0650f96 Build: Add Dockerfile 2020-05-22 01:19:15 +02:00
Andreas Kling
59c3b3b702 Revert "Meta: Restore instructions to create build directory for CMake"
This reverts commit 83137f76de.
2020-05-20 16:24:26 +02:00
Andrew Kaster
83137f76de Meta: Restore instructions to create build directory for CMake
We eliminated the need to pre-build LibC for libstdc++ by eliminating
libstdc++ itself, so users need to create their own build directories
again.
2020-05-20 08:37:50 +02:00
Devashish
e4f7080bbd Meta: Update CLion and WSL configuration documentations
This commit updates CLionConfiguration.md and NotesOnWSL.md so that
they comply with new build system. In addition to that, the WSL doc
is updated to include instructions to run qemu (and serenity) natively
on Windows, without needing an X-window server.
2020-05-17 23:07:35 +02:00
Dominik Madarasz
4e27c58be7 Build: FreeBSD support 2020-05-16 11:01:14 +02:00
DexesTTP
5386508119 Meta: Updated BuildInstructions.md for the cmake update
List of changes:
- The cmake command has been moved away from the main build instructions since
  the BuildIt script executes it automatically
- The ninja install has been clarified to take the BuildIt script into account
  and explain that the folder needs to be cleaned before executing cmake
- The ports instructions have been updated to use the make commands
- "brew install bash" has been added to the macOS prerequisites as per #2132
- The build instructions headers have been indented to group the prerequisites
  together
- The build instructions code snippets have been standardized into code blocks
- Fixed a typo
2020-05-15 09:48:14 +02:00
DexesTTP
c715b13ffc Meta: Updated CodingStyle.md clang-format requirement from 8 to 10
Fixes #2213
2020-05-15 09:48:14 +02:00
Sergey Bugaev
450a2a0f9c Build: Switch to CMake :^)
Closes https://github.com/SerenityOS/serenity/issues/2080
2020-05-14 20:15:18 +02:00
Andreas Kling
cf3b58fbe8 Services: Renamed from Servers
It didn't feel right to have a "DHCPClient" in a "Servers" directory.
Rename this to Services to better reflect the type of programs we'll
be putting in there.
2020-05-08 21:57:44 +02:00
Yonatan Goldschmidt
3df3ab4598 Build: Support building in Docker
Add missing installations to instructions, and use genext2fs instead
of mounting.
2020-05-07 10:23:26 +02:00
Andreas Kling
eabb7b563a Documentation: Add note about /dev/kvm to BuildInstructions.md 2020-05-06 17:12:49 +02:00
Devashish
f22c973ba3 Meta: Add configuration for setting up project in CLion
This commit adds a CMakeLists.txt file that will be used by CLion to
configure the project and documentation explaining the steps to follow.
Configuring CLion this way enables important features like code
completion and file search. The configuration isn't perfect. There are
source files for which CLion cannot pick up the headers and asks to
manually include them from certain directories. But for the most part,
it works all right.
2020-05-04 09:50:45 +02:00
Andreas Kling
2b7fc08db3 Documentation: Add section about structs vs. classes to CodingStyle.md 2020-04-18 11:14:05 +02:00
Andres Vieira
e9c65b6566 Meta: Add Arch Linux (and derivatives) build instructions
This patch adds a one liner to install all the dependency packages
needed to compile and run Serenity on Arch Linux, Manjaro, etc
2020-04-13 17:38:27 +02:00
Ed Rochenski
551cafe4d3 Documentation: added additional info about moving to wsl2 2020-04-09 11:35:43 +02:00
Ed Rochenski
932de565b1 Documentation: added note to prevent script failure in build section 2020-04-09 11:35:43 +02:00
Andreas Kling
ec91d2eb9f Documentation: Inform people that anon can su to root by default
\0 pointed out that this is not mentioned anywhere, technically making
it a "local privilege escalation" bug.

This patch adds it to the documentation, and I've also paid out the
first $5 bounty to the "Kiwis for Kiwi" charity as per \0's request!

http://serenityos.org/bounty/kiwis4kiwi.png
2020-03-30 11:35:39 +02:00
Linus Groh
c5cf740830 Documentation: Add build dependencies for Fedora 2020-03-28 22:12:20 +01:00
Andreas Kling
2176a3dd18 Documentation: Tweak document about smart pointers a bit
Add notes about assigning between FooPtr / NonnullFooPtr.
2020-03-20 14:41:02 +01:00
Alexander F. Rødseth
cdb58cdfd2
Build: Use ccache if it's available (#1315) 2020-02-27 11:44:29 +01:00
Oliver Kraitschy
aab59eaaab Documentation: Explain compilation of small changes and ports 2020-02-01 20:16:24 +01:00
Andreas Kling
3de5439579 AK: Let's call decrementing reference counts "unref" instead of "deref"
It always bothered me that we're using the overloaded "dereference"
term for this. Let's call it "unreference" instead. :^)
2020-01-23 15:14:21 +01:00
Elisée Maurer
9e22b83343 Documentation: Suggest gcc-9 on Ubuntu since PPA doesn't have 8 anymore 2020-01-05 08:57:43 +01:00
joshua stein
5e430e4eb4 Build: add support for building on OpenBSD
This requires gcc8 from ports to build the Toolchain.
2020-01-02 21:03:53 +01:00
Andreas Kling
fd14795f9d Meta: Update ReadMe and move build instructions to a separate document 2019-12-29 16:23:50 +01:00
Andreas Kling
1133acabb2 Meta: Move "Notes on WSL" to a separate file in Documentation/
Since this is not relevant to the majority of people, let's move it
out of the way.
2019-11-06 21:03:18 +01:00
Andreas Kling
af840af1ce Documentation: Let's have a coding style document
This is only meant to be about higher-level coding style, not the small
things like brace placement, indentation, etc. For all of that we just
obey clang-format.
2019-08-21 17:01:29 +02:00
Andreas Kling
f4bae8971c Documentation: Add a paragraph about NonnullOwnPtr to SmartPointers.md 2019-08-01 14:35:50 +02:00
Andreas Kling
e97d714bbc Documentation: Update SmartPointers.md with new pointer names. 2019-06-21 18:42:17 +02:00
Robin Burchell
faafaf9b43 Documentation: RIP the short-lived coding style
Let's just use clang-format. It's easier than explaining the rules.
2019-05-28 17:31:20 +02:00
Andreas Kling
854598bc46 Documentation: Remove some irrelevant things from the coding style.
This was adapted from the WebKit coding style docs, but some parts of it
don't make sense for Serenity.
2019-05-28 11:43:28 +02:00
Andreas Kling
fc3732759d Documentation: Import an attempt at describing the project coding style. 2019-05-28 11:40:44 +02:00