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@', ] )