From c6e25f4fbf5de5dee685b1308e16c50c5e06bca2 Mon Sep 17 00:00:00 2001 From: Julian Sparber Date: Wed, 19 Jan 2022 16:05:07 +0100 Subject: [PATCH] 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(-) delete mode 100644 build-aux/cargo.sh diff --git a/build-aux/cargo.sh b/build-aux/cargo.sh deleted file mode 100644 index 9ad379f0..00000000 --- a/build-aux/cargo.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/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 = "Devel" ]] -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 - - 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@', ] )