mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 15:42:44 +00:00 
			
		
		
		
	Documentation: Reorganize Ladybird build docs to put easy path first
Instead of explaining custom build directories first and then following that up with a an explainer that Meta/serenity.sh is the easiest way to get the browser up and running to try it out was not very ergonmic. Also reorganize some of the per-distro documentation to put the compiler requirements front and center.
This commit is contained in:
		
							parent
							
								
									82bac7e665
								
							
						
					
					
						commit
						fa637e29d2
					
				
					 1 changed files with 59 additions and 24 deletions
				
			
		|  | @ -2,12 +2,20 @@ | ||||||
| 
 | 
 | ||||||
| ## Build Prerequisites | ## Build Prerequisites | ||||||
| 
 | 
 | ||||||
| Qt6 development packages and a C++20 capable compiler are required. On Debian/Ubuntu required packages include, but are not limited to: | Qt6 development packages and a C++20 capable compiler are required. gcc-12 or clang-13 are required at a minimum for c++20 support. | ||||||
|  | 
 | ||||||
|  | On Debian/Ubuntu required packages include, but are not limited to: | ||||||
| 
 | 
 | ||||||
| ``` | ``` | ||||||
| sudo apt install build-essential cmake libgl1-mesa-dev ninja-build qt6-base-dev qt6-tools-dev-tools | sudo apt install build-essential cmake libgl1-mesa-dev ninja-build qt6-base-dev qt6-tools-dev-tools | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|  | For Ubuntu 20.04 and above, ensure that the Qt6 Wayland packages are available: | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | sudo apt install qt6-wayland | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
| On Arch Linux/Manjaro: | On Arch Linux/Manjaro: | ||||||
| 
 | 
 | ||||||
| ``` | ``` | ||||||
|  | @ -26,26 +34,68 @@ nix-shell ladybird.nix | ||||||
| 
 | 
 | ||||||
| On macOS: | On macOS: | ||||||
| 
 | 
 | ||||||
|  | Note that XCode 13.x does not have sufficient C++20 support to build ladybird. XCode 14.x or clang from homebrew may be required to successfully build ladybird. | ||||||
|  | 
 | ||||||
| ``` | ``` | ||||||
| xcode-select --install | xcode-select --install | ||||||
| brew install cmake qt ninja | brew install cmake qt ninja | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| For the C++ compiler, gcc-12 or clang-13 are required at a minimum for c++20 support. | On Windows: | ||||||
| 
 |  | ||||||
| For Ubuntu 20.04 and above, ensure that the Qt6 Wayland packages are available: |  | ||||||
| 
 |  | ||||||
| ``` |  | ||||||
| sudo apt install qt6-wayland |  | ||||||
| ``` |  | ||||||
| 
 | 
 | ||||||
|  | WSL2/WSLg are preferred, as they provide a linux environment that matches one of the above distributions. | ||||||
|  | MinGW/MSYS2 are not supported, but may work with sufficient elbow grease. Native Windows builds are not supported with either clang-cl or MSVC. | ||||||
| 
 | 
 | ||||||
| ## Build steps | ## Build steps | ||||||
| 
 | 
 | ||||||
| Basic workflow, if you only want to build Ladybird | ### Using serenity.sh | ||||||
|  | 
 | ||||||
|  | The simplest way to build and run ladybird is via the serenity.sh script: | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | # From /path/to/serenity | ||||||
|  | ./Meta/serenity.sh run lagom ladybird | ||||||
|  | ./Meta/serenity.sh debug lagom ladybird | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Note that running ladybird from the script will change the CMake cache in your Build/lagom build | ||||||
|  | directory to always build LibWeb and Ladybird for Lagom when rebuilding SerenityOS using the | ||||||
|  | serenity.sh script to run a qemu instance. | ||||||
|  | 
 | ||||||
|  | To restore the previous behavior that only builds code generators and tools from Lagom when | ||||||
|  | rebuilding serenity, you must modify the CMake cache back to the default. | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | cmake -S Meta/Lagom -B Build/lagom -DENABLE_LAGOM_LADYBIRD=OFF -DENABLE_LAGOM_LIBWEB=OFF -DBUILD_LAGOM=OFF | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ### Resource files | ||||||
|  | 
 | ||||||
|  | Ladybird requires resource files from the serenity/Base/res directory in order to properly load | ||||||
|  | icons, fonts, and other theming information. The serenity.sh script calls into custom CMake targets | ||||||
|  | that set these variables, and ensure that the $PWD is set properly to allow execution from the build | ||||||
|  | directory. To run the built binary without using the script, one can either directly invoke the | ||||||
|  | ninja rules, set $SERENITY_SOURCE_DIR to the root of their serenity checkout, or install ladybird | ||||||
|  | using the provided CMake install rules. See the ``Custom CMake build directory`` section below for | ||||||
|  | details. | ||||||
|  | 
 | ||||||
|  | ### Custom CMake build directory | ||||||
|  | 
 | ||||||
|  | If you want to build ladybird on its own, or are interested in packaging ladybird for distribution, | ||||||
|  | then a separate CMake build directory may be desired. Note that ladybird can be build via the Lagom | ||||||
|  | CMakeLists.txt, or via the CMakeLists.txt found in the Ladybird directory. For distributions, using | ||||||
|  | Ladybird as the source directory will give the desired results. | ||||||
|  | 
 | ||||||
|  | The install rules in Ladybird/cmake/InstallRules.cmake define which binaries and libraries will be | ||||||
|  | installed into the configured CMAKE_PREFIX_PATH or path passed to ``cmake --install``. | ||||||
|  | 
 | ||||||
|  | Note that when using a custom build directory rather than Meta/serenity.sh, the user may need to provide | ||||||
|  | a suitable C++ compiler (g++ >= 12, clang >= 13, Apple Clang >= 14) via the CMAKE_CXX_COMPILER and | ||||||
|  | CMAKE_C_COMPILER cmake options. | ||||||
| 
 | 
 | ||||||
| ``` | ``` | ||||||
| cmake -GNinja -S Ladybird -B Build/ladybird | cmake -GNinja -S Ladybird -B Build/ladybird | ||||||
|  | # optionally, add -DCMAKE_CXX_COMPILER=<suitable compiler> -DCMAKE_C_COMPILER=<matching c compiler> | ||||||
| cmake --build Build/ladybird | cmake --build Build/ladybird | ||||||
| ninja -C Build/ladybird run | ninja -C Build/ladybird run | ||||||
| ``` | ``` | ||||||
|  | @ -61,21 +111,6 @@ export SERENITY_SOURCE_DIR=$(realpath ../) | ||||||
| ./Build/ladybird/ladybird # or, in macOS: open ./Build/ladybird/ladybird.app | ./Build/ladybird/ladybird # or, in macOS: open ./Build/ladybird/ladybird.app | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| However, if you already have a serenity build, you might want to enable ladybird as part of your pre-existing build directories: |  | ||||||
| 
 |  | ||||||
| ``` |  | ||||||
| # From /path/to/serenity |  | ||||||
| ./Meta/serenity.sh run lagom ladybird |  | ||||||
| ./Meta/serenity.sh debug lagom ladybird |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Doing so will re-build Lagom LibWeb and ladybird whenever you change any related serenity library source code. To disable this after |  | ||||||
| enabling it, simply disable LibWeb and ladybird on the Lagom binary directory: |  | ||||||
| 
 |  | ||||||
| ``` |  | ||||||
| cmake -S Meta/Lagom -B Build/lagom -DENABLE_LAGOM_LADYBIRD=OFF -DENABLE_LAGOM_LIBWEB=OFF |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## Experimental Android Build Steps | ## Experimental Android Build Steps | ||||||
| 
 | 
 | ||||||
| ### Prepping Qt Creator | ### Prepping Qt Creator | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andrew Kaster
						Andrew Kaster