[fractal/fractal-next] meson: Drop build shell script



commit c6e25f4fbf5de5dee685b1308e16c50c5e06bca2
Author: Julian Sparber <julian sparber net>
Date:   Wed Jan 19 16:05:07 2022 +0100

    meson: Drop build shell script
    
    This drops the script we used to build fractal. And uses know only
    meson. This also drops the need for specifying sources since cargo does
    that for us.
    
    This also bumps the meson version.
    This also drops the build option `skip-cargo-build`.
    
    Most of the changes are comming from https://gitlab.gnome.org/World/pika-backup

 build-aux/cargo.sh |  21 --------
 meson.build        |   9 ++--
 meson_options.txt  |   4 --
 src/meson.build    | 137 ++++++++++-------------------------------------------
 4 files changed, 28 insertions(+), 143 deletions(-)
---
diff --git a/meson.build b/meson.build
index 4506067e..851b600c 100644
--- a/meson.build
+++ b/meson.build
@@ -2,7 +2,7 @@ project('fractal',
         'rust',
         version: '0.0.1',
         license: 'MIT',
-  meson_version: '>= 0.53')
+  meson_version: '>= 0.57')
 
 i18n = import('i18n')
 gnome = import('gnome')
@@ -32,7 +32,6 @@ glib_compile_schemas = find_program('glib-compile-schemas', required: true)
 desktop_file_validate = find_program('desktop-file-validate', required: false)
 appstream_util = find_program('appstream-util', required: false)
 cargo = find_program('cargo', required: true)
-cargo_script = find_program('build-aux/cargo.sh')
 
 version = meson.project_version()
 version_array = version.split('.')
@@ -47,7 +46,7 @@ localedir = prefix / get_option('localedir')
 datadir = prefix / get_option('datadir')
 pkgdatadir = datadir / meson.project_name()
 iconsdir = datadir / 'icons'
-podir = meson.source_root() / 'po'
+podir = meson.project_source_root() / 'po'
 gettext_package = meson.project_name()
 
 if get_option('profile') == 'development'
@@ -67,8 +66,8 @@ endif
 
 meson.add_dist_script(
   'build-aux/dist-vendor.sh',
-  meson.build_root() / 'meson-dist' / meson.project_name() + '-' + version,
-  meson.source_root()
+  meson.project_build_root() / 'meson-dist' / meson.project_name() + '-' + version,
+  meson.project_source_root()
 )
 
 if get_option('profile') == 'development'
diff --git a/meson_options.txt b/meson_options.txt
index ea7fd89a..35af6dbc 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -8,7 +8,3 @@ option(
   value: 'default',
   description: 'The build profile for Fractal. One of "default" or "development".'
 )
-option(
-  'skip-cargo-build', type: 'boolean', value: false,
-  description: 'Skip building "cargo-build" target.'
-)
diff --git a/src/meson.build b/src/meson.build
index 72ba437d..d99036d6 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -13,129 +13,40 @@ config = configure_file(
 # Copy the config.rs output to the source directory.
 run_command(
   'cp',
-  meson.build_root() / 'src' / 'config.rs',
-  meson.source_root() / 'src' / 'config.rs',
+  meson.project_build_root() / 'src' / 'config.rs',
+  meson.project_source_root() / 'src' / 'config.rs',
   check: true
 )
 
-sources = files(
-  'application.rs',
-  'contrib/qr_code.rs',
-  'contrib/qr_code_scanner/camera_paintable.rs',
-  'contrib/qr_code_scanner/mod.rs',
-  'contrib/qr_code_scanner/screenshot.rs',
-  'contrib/qr_code_scanner/qr_code_detector.rs',
-  'components/avatar.rs',
-  'components/auth_dialog.rs',
-  'components/badge.rs',
-  'components/context_menu_bin.rs',
-  'components/custom_entry.rs',
-  'components/label_with_widgets.rs',
-  'components/mod.rs',
-  'components/pill.rs',
-  'components/room_title.rs',
-  'components/in_app_notification.rs',
-  'components/spinner_button.rs',
-  'components/loading_listbox_row.rs',
-  'components/video_player.rs',
-  'config.rs',
-  'error.rs',
-  'main.rs',
-  'window.rs',
-  'login.rs',
-  'secret.rs',
-  'user_facing_error.rs',
-  'utils.rs',
-  'session/avatar.rs',
-  'session/event_source_dialog.rs',
-  'session/account_settings/devices_page/device.rs',
-  'session/account_settings/devices_page/device_row.rs',
-  'session/account_settings/devices_page/device_list.rs',
-  'session/account_settings/devices_page/mod.rs',
-  'session/account_settings/mod.rs',
-  'session/user.rs',
-  'session/mod.rs',
-  'session/content/explore/mod.rs',
-  'session/content/explore/public_room.rs',
-  'session/content/explore/public_room_list.rs',
-  'session/content/explore/public_room_row.rs',
-  'session/content/invite.rs',
-  'session/content/markdown_popover.rs',
-  'session/content/room_history/divider_row.rs',
-  'session/content/room_history/item_row.rs',
-  'session/content/room_history/message_row/file.rs',
-  'session/content/room_history/message_row/media.rs',
-  'session/content/room_history/message_row/mod.rs',
-  'session/content/room_history/message_row/text.rs',
-  'session/content/room_history/mod.rs',
-  'session/content/room_history/state_row/creation.rs',
-  'session/content/room_history/state_row/mod.rs',
-  'session/content/room_history/state_row/tombstone.rs',
-  'session/content/room_history/verification_info_bar.rs',
-  'session/content/mod.rs',
-  'session/content/room_details/invite_subpage/invitee.rs',
-  'session/content/room_details/invite_subpage/mod.rs',
-  'session/content/room_details/invite_subpage/invitee_list.rs',
-  'session/content/room_details/invite_subpage/invitee_row.rs',
-  'session/content/room_details/member_page/mod.rs',
-  'session/content/room_details/member_page/member_row.rs',
-  'session/content/room_details/member_page/member_menu.rs',
-  'session/content/room_details/mod.rs',
-  'session/content/verification/emoji.rs',
-  'session/content/verification/mod.rs',
-  'session/content/verification/identity_verification_widget.rs',
-  'session/content/verification/session_verification.rs',
-  'session/media_viewer.rs',
-  'session/room/event.rs',
-  'session/room/event_actions.rs',
-  'session/room/highlight_flags.rs',
-  'session/room/item.rs',
-  'session/room/member.rs',
-  'session/room/member_list.rs',
-  'session/room/member_role.rs',
-  'session/room/mod.rs',
-  'session/room/power_levels.rs',
-  'session/room/room_type.rs',
-  'session/room_list.rs',
-  'session/room/timeline.rs',
-  'session/room_creation/mod.rs',
-  'session/sidebar/item_list.rs',
-  'session/sidebar/category.rs',
-  'session/sidebar/category_row.rs',
-  'session/sidebar/mod.rs',
-  'session/sidebar/row.rs',
-  'session/sidebar/room_row.rs',
-  'session/sidebar/entry.rs',
-  'session/sidebar/entry_row.rs',
-  'session/sidebar/entry_type.rs',
-  'session/sidebar/verification_row.rs',
-  'session/sidebar/selection.rs',
-  'session/sidebar/account_switcher/add_account.rs',
-  'session/sidebar/account_switcher/avatar_with_selection.rs',
-  'session/sidebar/account_switcher/item.rs',
-  'session/sidebar/account_switcher/mod.rs',
-  'session/sidebar/account_switcher/user_entry.rs',
-  'session/sidebar/category_type.rs',
-  'session/verification/mod.rs',
-  'session/verification/identity_verification.rs',
-  'session/verification/verification_list.rs',
-)
+cargo_options = [ '--manifest-path', meson.project_source_root() / 'Cargo.toml' ]
+cargo_options += [ '--target-dir', meson.project_build_root() / 'src' ]
+
+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
+
+cargo_env = [ 'CARGO_HOME=' + meson.project_build_root() / 'cargo-home' ]
 
-custom_target(
+cargo_build = custom_target(
   'cargo-build',
-  build_by_default: not get_option('skip-cargo-build'),
-  input: sources,
+  build_by_default: true,
+  build_always_stale: true,
   output: meson.project_name(),
   console: true,
   install: true,
   install_dir: bindir,
   depends: resources,
   command: [
-    cargo_script,
-    meson.build_root(),
-    meson.source_root(),
-    '@OUTPUT@',
-    profile,
-    meson.project_name(),
+    'env',
+    cargo_env,
+    cargo, 'build',
+    cargo_options,
+    '&&',
+    'cp', 'src' / rust_target / meson.project_name(), '@OUTPUT@',
   ]
 )


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]