build: clarify shared libraries

This commit is contained in:
outfoxxed 2025-06-15 23:00:56 -07:00
parent d9164578a2
commit 9a30333405
Signed by untrusted user: outfoxxed
GPG key ID: 4C88A185FB89301E
2 changed files with 23 additions and 16 deletions

View file

@ -41,10 +41,15 @@ Quickshell has a set of base dependencies you will always need, names vary by di
- `cmake` - `cmake`
- `qt6base` - `qt6base`
- `qt6declarative` - `qt6declarative`
- `qtshadertools` (build-time only) - `qtshadertools` (build-time)
- `spirv-tools` (build-time only) - `spirv-tools` (build-time)
- `pkg-config` (build-time only) - `pkg-config` (build-time)
- `cli11` (build-time only) - `cli11` (static library)
Build time dependencies and static libraries don't have to exist at runtime,
however build time dependencies must be compiled for the architecture of
the builder, while static libraries must be compiled for the architecture
of the target.
On some distros, private Qt headers are in separate packages which you may have to install. On some distros, private Qt headers are in separate packages which you may have to install.
We currently require private headers for the following libraries: We currently require private headers for the following libraries:
@ -66,7 +71,7 @@ enable us to fix bugs far more easily.
To disable: `-DCRASH_REPORTER=OFF` To disable: `-DCRASH_REPORTER=OFF`
Dependencies: `google-breakpad` Dependencies: `google-breakpad` (static library)
### Jemalloc ### Jemalloc
We recommend leaving Jemalloc enabled as it will mask memory fragmentation caused We recommend leaving Jemalloc enabled as it will mask memory fragmentation caused
@ -101,8 +106,11 @@ To disable: `-DWAYLAND=OFF`
Dependencies: Dependencies:
- `qt6wayland` - `qt6wayland`
- `wayland` (libwayland-client) - `wayland` (libwayland-client)
- `wayland-scanner` (may be part of your distro's wayland package) - `wayland-scanner` (build time)
- `wayland-protocols` - `wayland-protocols` (static library)
Note that one or both of `wayland-scanner` and `wayland-protocols` may be bundled
with you distro's wayland package.
#### Wlroots Layershell #### Wlroots Layershell
Enables wlroots layershell integration through the [zwlr-layer-shell-v1] protocol, Enables wlroots layershell integration through the [zwlr-layer-shell-v1] protocol,
@ -220,7 +228,7 @@ To disable: `-DI3_IPC=OFF`
## Building ## Building
*For developers and prospective contributors: See [CONTRIBUTING.md](CONTRIBUTING.md).* *For developers and prospective contributors: See [CONTRIBUTING.md](CONTRIBUTING.md).*
We highly recommend using `ninja` to run the build, but you can use makefiles if you must. Only `ninja` builds are tested, but makefiles may work.
#### Configuring the build #### Configuring the build
```sh ```sh

View file

@ -46,29 +46,28 @@
}: buildStdenv.mkDerivation { }: buildStdenv.mkDerivation {
pname = "quickshell${lib.optionalString debug "-debug"}"; pname = "quickshell${lib.optionalString debug "-debug"}";
version = "0.1.0"; version = "0.1.0";
src = nix-gitignore.gitignoreSource "/docs\n/examples\n" ./.; src = nix-gitignore.gitignoreSource [] ./.;
nativeBuildInputs = [ nativeBuildInputs = [
cmake cmake
ninja ninja
qt6.qtshadertools qt6.qtshadertools
spirv-tools spirv-tools
cli11
qt6.wrapQtAppsHook qt6.wrapQtAppsHook
pkg-config pkg-config
] ++ (lib.optionals withWayland [ ]
wayland-protocols ++ lib.optional withWayland wayland-scanner;
wayland-scanner
]);
buildInputs = [ buildInputs = [
qt6.qtbase qt6.qtbase
qt6.qtdeclarative qt6.qtdeclarative
cli11
] ]
++ lib.optional withQtSvg qt6.qtsvg
++ lib.optional withCrashReporter breakpad ++ lib.optional withCrashReporter breakpad
++ lib.optional withJemalloc jemalloc ++ lib.optional withJemalloc jemalloc
++ lib.optional withQtSvg qt6.qtsvg ++ lib.optionals withWayland [ qt6.qtwayland wayland wayland-protocols ]
++ lib.optionals withWayland ([ qt6.qtwayland wayland ] ++ (if libgbm != null then [ libdrm libgbm ] else [])) ++ lib.optionals (withWayland && libgbm != null) [ libdrm libgbm ]
++ lib.optional withX11 xorg.libxcb ++ lib.optional withX11 xorg.libxcb
++ lib.optional withPam pam ++ lib.optional withPam pam
++ lib.optional withPipewire pipewire; ++ lib.optional withPipewire pipewire;