Browse Source

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
merge-requests/1327/merge
Julian Sparber 4 years ago
parent
commit
c6e25f4fbf
  1. 21
      build-aux/cargo.sh
  2. 9
      meson.build
  3. 4
      meson_options.txt
  4. 137
      src/meson.build

21
build-aux/cargo.sh

@ -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

9
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'

4
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.'
)

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

Loading…
Cancel
Save