mirror of
https://gitlab.freedesktop.org/pipewire/helvum.git
synced 2025-12-20 01:50:03 +01:00
buildsystem: Move to meson for building the project
Meson will allow us to: - Verify the used rust compiler is recent enough - Install ressources such as a .desktop files, icons, etc.
This commit is contained in:
parent
7ef8677c4c
commit
a8bfd8383e
6 changed files with 115 additions and 16 deletions
17
README.md
17
README.md
|
|
@ -24,28 +24,33 @@ $ flatpak install org.gnome.{Platform,Sdk}//40 org.freedesktop.Sdk.Extension.rus
|
|||
|
||||
To compile and install as a flatpak, run
|
||||
```shell
|
||||
$ flatpak-builder --install flatpak-build/ org.freedesktop.ryuukyu.Helvum.json
|
||||
$ flatpak-builder --install flatpak-build/ build-aux/org.freedesktop.ryuukyu.Helvum.json
|
||||
```
|
||||
|
||||
You can then run the app via
|
||||
```shell
|
||||
flatpak run org.freedesktop.ryuukyu.Helvum
|
||||
$ flatpak run org.freedesktop.ryuukyu.Helvum
|
||||
```
|
||||
|
||||
## Manually
|
||||
For compilation, you will need:
|
||||
|
||||
- Meson
|
||||
- An up-to-date rust toolchain
|
||||
- `libclang-3.7` or higher
|
||||
- `gtk-4.0` and `pipewire-0.3` development headers
|
||||
|
||||
To compile, run
|
||||
To compile and install, run
|
||||
|
||||
$ cargo build --release
|
||||
```shell
|
||||
$ meson setup build && cd build
|
||||
$ meson compile
|
||||
$ meson install
|
||||
```
|
||||
|
||||
in the repository root.
|
||||
The resulting binary will be at `target/release/helvum`.
|
||||
This will install the compiled project files into `/usr/local`.
|
||||
|
||||
# License
|
||||
Helvum is distributed under the terms of the GPL3 license.
|
||||
See LICENSE for more information.
|
||||
See LICENSE for more information.
|
||||
|
|
|
|||
20
build-aux/cargo.sh
Normal file
20
build-aux/cargo.sh
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
#!/bin/sh
|
||||
|
||||
export MESON_BUILD_ROOT="$1"
|
||||
export MESON_SOURCE_ROOT="$2"
|
||||
export CARGO_TARGET_DIR="$MESON_BUILD_ROOT"/target
|
||||
export CARGO_HOME="$MESON_BUILD_ROOT"/cargo-home
|
||||
|
||||
if [[ $4 = "development" ]]
|
||||
then
|
||||
echo "DEBUG MODE"
|
||||
cargo build --manifest-path \
|
||||
"$MESON_SOURCE_ROOT"/Cargo.toml && \
|
||||
cp "$CARGO_TARGET_DIR"/debug/$5 $3
|
||||
else
|
||||
echo "RELEASE MODE"
|
||||
cargo build --manifest-path \
|
||||
"$MESON_SOURCE_ROOT"/Cargo.toml --release && \
|
||||
cp "$CARGO_TARGET_DIR"/release/$5 $3
|
||||
fi
|
||||
|
||||
|
|
@ -3,33 +3,35 @@
|
|||
"runtime": "org.gnome.Platform",
|
||||
"runtime-version": "40",
|
||||
"sdk": "org.gnome.Sdk",
|
||||
"sdk-extensions": ["org.freedesktop.Sdk.Extension.rust-stable"],
|
||||
"sdk-extensions": [
|
||||
"org.freedesktop.Sdk.Extension.rust-stable"
|
||||
],
|
||||
"command": "helvum",
|
||||
"finish-args" : [
|
||||
"finish-args": [
|
||||
"--socket=fallback-x11",
|
||||
"--socket=wayland",
|
||||
"--device=dri",
|
||||
"--share=ipc",
|
||||
"--filesystem=xdg-run/pipewire-0"
|
||||
],
|
||||
"build-options" : {
|
||||
"append-path" : "/usr/lib/sdk/rust-stable/bin",
|
||||
"build-args" : [
|
||||
"build-options": {
|
||||
"append-path": "/usr/lib/sdk/rust-stable/bin",
|
||||
"build-args": [
|
||||
"--share=network"
|
||||
]
|
||||
},
|
||||
"modules": [
|
||||
{
|
||||
"name": "Helvum",
|
||||
"buildsystem": "simple",
|
||||
"build-commands": [
|
||||
"cargo install --path . --root /app --no-track"
|
||||
],
|
||||
"buildsystem": "meson",
|
||||
"sources": [
|
||||
{
|
||||
"type": "dir",
|
||||
"path": "./"
|
||||
"path": "../"
|
||||
}
|
||||
],
|
||||
"config-opts": [
|
||||
"-Dprofile=development"
|
||||
]
|
||||
}
|
||||
]
|
||||
30
meson.build
Normal file
30
meson.build
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
project(
|
||||
'helvum',
|
||||
'rust',
|
||||
version: '0.3.0',
|
||||
license: 'GPL-3.0',
|
||||
meson_version: '>=0.50.0'
|
||||
)
|
||||
|
||||
dependency('glib-2.0', version: '>= 2.48')
|
||||
dependency('gtk4', version: '>= 4.0.0')
|
||||
dependency('libpipewire-0.3')
|
||||
|
||||
rust_version = meson.get_compiler('rust').version()
|
||||
min_rust_version = '1.54.0'
|
||||
if rust_version < min_rust_version
|
||||
error('Rust version too old: Required version is ' + min_rust_version + ' but actual version is ' + rust_version)
|
||||
endif
|
||||
|
||||
cargo = find_program('cargo', required: true)
|
||||
cargo_script = find_program('build-aux/cargo.sh')
|
||||
|
||||
prefix = get_option('prefix')
|
||||
bindir = prefix / get_option('bindir')
|
||||
|
||||
cargo_sources = files(
|
||||
'Cargo.toml',
|
||||
'Cargo.lock',
|
||||
)
|
||||
|
||||
subdir('src')
|
||||
11
meson_options.txt
Normal file
11
meson_options.txt
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
option(
|
||||
'profile',
|
||||
type: 'combo',
|
||||
choices: [
|
||||
'default',
|
||||
'development'
|
||||
],
|
||||
value: 'default',
|
||||
description: 'The build profile for Helvum. One of "default" or "development".'
|
||||
)
|
||||
|
||||
31
src/meson.build
Normal file
31
src/meson.build
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
rust_sources = files(
|
||||
'application.rs',
|
||||
'main.rs',
|
||||
'pipewire_connection.rs',
|
||||
'pipewire_connection/state.rs',
|
||||
'view/graph_view.rs',
|
||||
'view/mod.rs',
|
||||
'view/node.rs',
|
||||
'view/port.rs',
|
||||
)
|
||||
|
||||
custom_target(
|
||||
'cargo-build',
|
||||
build_by_default: true,
|
||||
input: [
|
||||
cargo_sources,
|
||||
rust_sources
|
||||
],
|
||||
output: meson.project_name(),
|
||||
console: true,
|
||||
install: true,
|
||||
install_dir: bindir,
|
||||
command: [
|
||||
cargo_script,
|
||||
meson.build_root(),
|
||||
meson.source_root(),
|
||||
'@OUTPUT@',
|
||||
get_option('profile'),
|
||||
meson.project_name(),
|
||||
],
|
||||
)
|
||||
Loading…
Add table
Reference in a new issue