Fix issues with the meson build

This commit is contained in:
Bnyro 2023-06-26 11:38:25 +02:00
parent fbf4b8dfa5
commit 8e019361f4
9 changed files with 54 additions and 16 deletions

View File

@ -13,7 +13,7 @@
"--socket=fallback-x11", "--socket=fallback-x11",
"--socket=wayland", "--socket=wayland",
"--device=dri", "--device=dri",
"--env=RUST_LOG=gtk_rust_template=debug", "--env=RUST_LOG=lemoa=debug",
"--env=G_MESSAGES_DEBUG=none", "--env=G_MESSAGES_DEBUG=none",
"--env=RUST_BACKTRACE=1" "--env=RUST_BACKTRACE=1"
], ],
@ -38,7 +38,7 @@
{ {
"name": "lemoa", "name": "lemoa",
"buildsystem": "meson", "buildsystem": "meson",
"run-tests": true, "builddir": true,
"config-opts": [ "config-opts": [
"-Dprofile=development" "-Dprofile=development"
], ],
@ -51,5 +51,3 @@
} }
] ]
} }

View File

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

@ -15,12 +15,14 @@ configure_file(
# Scalable icon # Scalable icon
install_data( install_data(
'@0@.svg'.format(application_id), '@0@.svg'.format(base_id),
install_dir: iconsdir / 'hicolor' / 'scalable' / 'apps', install_dir: iconsdir / 'hicolor' / 'scalable' / 'apps',
rename: '@0@.svg'.format(application_id)
) )
# Symbolic icon # Symbolic icon
install_data( install_data(
'@0@-symbolic.svg'.format(application_id), '@0@-symbolic.svg'.format(base_id),
install_dir: iconsdir / 'hicolor' / 'symbolic' / 'apps', install_dir: iconsdir / 'hicolor' / 'symbolic' / 'apps',
rename: '@0@-symbolic.svg'.format(application_id)
) )

View File

@ -8,8 +8,10 @@ project(
gnome = import('gnome') gnome = import('gnome')
application_id = 'com.lemmygtk.lemoa' base_id = 'com.lemmygtk.lemoa'
version = meson.project_version()
# Required packages
dependency('glib-2.0', version: '>= 2.70') dependency('glib-2.0', version: '>= 2.70')
dependency('gio-2.0', version: '>= 2.70') dependency('gio-2.0', version: '>= 2.70')
dependency('gtk4', version: '>= 4.10.0') dependency('gtk4', version: '>= 4.10.0')
@ -19,16 +21,31 @@ glib_compile_schemas = find_program('glib-compile-schemas', required: true)
desktop_file_validate = find_program('desktop-file-validate', required: false) desktop_file_validate = find_program('desktop-file-validate', required: false)
cargo = find_program('cargo', required: true) cargo = find_program('cargo', required: true)
version = meson.project_version() # Various directories needed for building
prefix = get_option('prefix') prefix = get_option('prefix')
bindir = prefix / get_option('bindir') bindir = prefix / get_option('bindir')
datadir = prefix / get_option('datadir') datadir = prefix / get_option('datadir')
iconsdir = datadir / 'icons' iconsdir = datadir / 'icons'
applicationsdir = datadir / 'applications' applicationsdir = datadir / 'applications'
pkgdatadir = datadir / meson.project_name() pkgdatadir = datadir / meson.project_name()
# Add a version suffix for devel builds
if get_option('profile') == 'development'
profile = 'Devel'
vcs_tag = run_command('git', 'rev-parse', '--short', 'HEAD', check: false).stdout().strip()
if vcs_tag == ''
version_suffix = '-devel'
else
version_suffix = '-@0@'.format(vcs_tag)
endif
application_id = '@0@.@1@'.format(base_id, profile)
else
profile = ''
version_suffix = ''
application_id = base_id
endif
# Modules that need to be built
subdir('src') subdir('src')
subdir('data') subdir('data')
@ -37,4 +54,3 @@ gnome.post_install(
glib_compile_schemas: true, glib_compile_schemas: true,
update_desktop_database: true, update_desktop_database: true,
) )

10
meson_options.txt Normal file
View File

@ -0,0 +1,10 @@
option(
'profile',
type: 'combo',
choices: [
'default',
'development'
],
value: 'default',
description: 'The build profile for GTK Rust Template. One of "default" or "development".'
)

View File

@ -1,3 +1,3 @@
pub const APP_ID: &str = "com.lemmy-gtk.lemoa"; pub const APP_ID: &str = "com.lemmygtk.lemoa";
pub const PKGDATADIR: &str = "/usr/local/share/lemoa"; pub const PKGDATADIR: &str = "/usr/local/share/lemoa";
pub const VERSION: &str = "0.1.0"; pub const VERSION: &str = "0.1.0";

View File

@ -2,14 +2,16 @@
conf = configuration_data() conf = configuration_data()
conf.set_quoted('APP_ID', application_id) conf.set_quoted('APP_ID', application_id)
conf.set_quoted('PKGDATADIR', pkgdatadir) conf.set_quoted('PKGDATADIR', pkgdatadir)
conf.set_quoted('VERSION', version) conf.set_quoted('VERSION', version + version_suffix)
# Update the application config info
configure_file( configure_file(
input: 'config.rs.in', input: 'config.rs.in',
output: 'config.rs', output: 'config.rs',
configuration: conf configuration: conf
) )
# copy the config info into the project
run_command( run_command(
'cp', 'cp',
join_paths(meson.project_build_root(), 'src', 'config.rs'), join_paths(meson.project_build_root(), 'src', 'config.rs'),
@ -20,10 +22,21 @@ run_command(
# Setup cargo # Setup cargo
cargo = find_program('cargo') cargo = find_program('cargo')
cargo_env = [ 'CARGO_HOME=' + meson.project_build_root() / 'cargo-home' ] cargo_env = [ 'CARGO_HOME=' + meson.project_build_root() / 'cargo-home' ]
cargo_options = [ '--manifest-path', meson.project_source_root() / 'Cargo.toml' ] cargo_options = [ '--manifest-path', meson.project_source_root() / 'Cargo.toml' ]
cargo_options += [ '--target-dir', meson.project_build_root() / 'target' ] cargo_options += [ '--target-dir', meson.project_build_root() / 'target' ]
cargo_options += [ '--release' ]
# If the profile is development, build as debug, otherwise release
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
# Build the actual package
cargo_release = custom_target( cargo_release = custom_target(
'cargo-build', 'cargo-build',
build_by_default: true, build_by_default: true,
@ -38,7 +51,6 @@ cargo_release = custom_target(
cargo, 'build', cargo, 'build',
cargo_options, cargo_options,
'&&', '&&',
'cp', 'target' / 'release' / meson.project_name(), '@OUTPUT@', 'cp', 'target' / rust_target / meson.project_name(), '@OUTPUT@',
] ]
) )