aboutsummaryrefslogtreecommitdiff
path: root/src/meson.build
diff options
context:
space:
mode:
authorRuben Beltran del Rio <jj@r.bdr.sh>2026-03-23 20:52:55 +0100
committerRubén Beltrán del Río <jj@r.bdr.sh>2026-04-05 00:31:21 +0200
commitef32d65ac1852da581ac75d20f903dbcb2d0b5cd (patch)
tree98cdb79c471babd906368d23171fe10168c18062 /src/meson.build
parentdae5942e2ad1ac59f6217ad0f8e0bd630d0b4747 (diff)
Use meson as a build system
Diffstat (limited to 'src/meson.build')
-rw-r--r--src/meson.build49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/meson.build b/src/meson.build
new file mode 100644
index 0000000..6ce0ee9
--- /dev/null
+++ b/src/meson.build
@@ -0,0 +1,49 @@
+source_configuration = configuration_data()
+source_configuration.set_quoted('APP_ID', application_id)
+source_configuration.set_quoted('GETTEXT_DOMAIN', gettext_domain)
+configure_file(
+ input: 'info.rs.in',
+ output: '@BASENAME@',
+ configuration: source_configuration
+)
+
+run_command(
+ 'cp',
+ meson.project_build_root() / 'src' / 'info.rs',
+ meson.project_source_root() / 'src' / 'info.rs',
+ check: true,
+)
+
+cargo_options = ['--manifest-path', meson.project_source_root() / 'Cargo.toml']
+cargo_options += ['--target-dir', meson.project_build_root() / 'src']
+cargo_env = ['CARGO_HOME=' + meson.project_build_root() / 'cargo-home']
+
+if get_option('profile') == 'default'
+ cargo_options += ['--release']
+ rust_target = 'release'
+ message('Building in release mode')
+else
+ rust_target = 'debug'
+ message('Building in debug mode')
+endif
+
+custom_target(
+ 'cargo-build',
+ build_by_default: true,
+ build_always_stale: true,
+ output: meson.project_name(),
+ console: true,
+ install: true,
+ install_dir: bindir,
+ command: [
+ 'env',
+ cargo_env,
+ cargo,
+ 'build',
+ cargo_options,
+ '&&',
+ 'cp',
+ 'src' / rust_target / meson.project_name(),
+ '@OUTPUT@',
+ ],
+)