Commit graph

371 commits

Author SHA1 Message Date
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
Andreas Kling 3cd1db09d4 Documentation: Add a brief description of Serenity's smart pointer types. 2019-05-15 14:07:14 +02:00