Zrythm installer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

268 lines
7.6 KiB

# Copyright (C) 2020-2021 Alexandros Theodotou <alex at zrythm dot org>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
project (
'zrythm-installer', [ 'c' ],
version: '0.1.1',
meson_version: '>=0.55.0',
license: 'AGPL-3-or-later',
)
cc = meson.get_compiler ('c')
bash = find_program ('bash')
git = find_program ('git')
wget = find_program ('wget')
unzip = find_program ('unzip')
meson_bin = get_option ('meson-path')
prefix = get_option ('prefix')
libdir = get_option ('libdir')
distro = get_option ('distro')
zrythm_git_ver = get_option ('zrythm-git-ver')
zrythm_pkg_ver = get_option ('zrythm-pkg-ver')
zrythm_pkg_semver = get_option ('zrythm-pkg-semver')
zplugins_ver = get_option ('zplugins-ver')
carla_git_ver = get_option ('carla-git-ver')
lsp_dsp_lib_ver = get_option ('lsp-dsp-lib-ver')
gtk_ver = get_option ('gtk-ver')
libadwaita_ver = get_option ('libadwaita-ver')
libpanel_ver = get_option ('libpanel-ver')
build_trial = get_option ('build-trial')
zrythm_https_repo = 'https://git.zrythm.org/zrythm/zrythm'
orig_inner_dir_name = 'zrythm-' + zrythm_git_ver
orig_zrythm_src_tarball_filename = orig_inner_dir_name + '.tar.gz'
orig_zrythm_src_tarball_url = zrythm_https_repo + '/archive/' + zrythm_git_ver + '.tar.gz'
zrythm_inner_dir_name = 'zrythm-' + zrythm_pkg_ver
zrythm_src_tarball_filename = zrythm_inner_dir_name + '.tar.gz'
zplugins_src_tarball_filename = 'zplugins-' + zplugins_ver + '.tar.gz'
mingw_arch = 'ucrt64'
mingw_prefix = '/' + mingw_arch
mingw_pkg_prefix = 'mingw-w64-ucrt-x86_64'
mingw_zrythm_pkg_filename = mingw_pkg_prefix + '-zrythm-' + zrythm_pkg_ver + '-1-any.pkg.tar.zst'
mingw_zrythm_trial_pkg_filename = mingw_pkg_prefix + '-zrythm-trial-' + zrythm_pkg_ver + '-1-any.pkg.tar.zst'
debian_src_tarball_filename = 'zrythm_' + zrythm_pkg_ver + '.orig.tar.gz'
carla_prefix = '/usr/lib/zrythm'
library_prefix = meson.build_root () / 'lib_prefix'
library_pkgconfig_path = library_prefix / libdir / 'pkgconfig'
dash_trial = build_trial ? '-trial' : ''
locales = get_option ('locales')
space_sep_locales = ''
foreach locale : locales
space_sep_locales += locale + ' '
endforeach
space_sep_locales.strip ()
trial_true_false = build_trial ? 'true' : 'false'
is_arch = distro.contains ('arch')
is_debian = distro.contains ('debian') or distro.contains ('ubuntu')
is_nixos = distro.contains ('nixos')
is_rpm = distro.contains ('fedora')
is_windows_msys = distro.contains ('windows-msys')
is_osx_brew = distro.contains ('osx-brew')
is_osx = distro.contains ('osx')
is_gnu_linux = distro.contains ('gnu-linux')
is_appimage = distro.contains ('appimage')
is_flatpak = distro.contains ('flatpak')
is_user_manuals = distro.contains ('manual')
meson_src_root = meson.source_root ()
global_conf = configuration_data ()
global_conf.set ('PREFIX', prefix)
global_conf.set (
'MESON_BIN', meson_bin)
global_conf.set (
'MESON_BUILD_ROOT', meson.build_root ())
global_conf.set (
'MESON_SOURCE_ROOT', meson_src_root)
global_conf.set (
'BASH', bash.full_path ())
global_conf.set (
'CC', cc.get_id ())
global_conf.set (
'LIBDIR', libdir)
global_conf.set (
'DISTRO', distro)
global_conf.set (
'ZRYTHM_HTTPS_REPO', zrythm_https_repo)
global_conf.set (
'ZRYTHM_GIT_VERSION', zrythm_git_ver)
global_conf.set (
'ZRYTHM_PKG_VERSION', zrythm_pkg_ver)
global_conf.set (
'ZRYTHM_PKG_SEMVER_VERSION', zrythm_pkg_semver)
global_conf.set (
'ZRYTHM_SOURCE_TARBALL_FILENAME',
zrythm_src_tarball_filename)
global_conf.set (
'ZRYTHM_INNER_DIR_NAME', zrythm_inner_dir_name)
global_conf.set (
'ZRYTHM_ORIG_INNER_DIR_NAME', orig_inner_dir_name)
global_conf.set (
'ZRYTHM_ORIG_SRC_TARBALL_FILENAME',
orig_zrythm_src_tarball_filename)
global_conf.set (
'ZRYTHM_ORIG_SRC_TARBALL_URL',
orig_zrythm_src_tarball_url)
global_conf.set (
'ZPLUGINS_VER', zplugins_ver)
global_conf.set (
'CARLA_GIT_VER', carla_git_ver)
global_conf.set (
'LSP_DSP_LIB_VER', lsp_dsp_lib_ver)
global_conf.set (
'LIBRARY_PREFIX', library_prefix)
global_conf.set (
'LIBRARY_PKG_CONFIG_PATH',
library_pkgconfig_path)
global_conf.set (
'CARLA_PREFIX', carla_prefix)
global_conf.set ('DASH_TRIAL', dash_trial)
global_conf.set (
'TRIAL_TRUE_FALSE', trial_true_false)
global_conf.set (
'SPACE_SEPARATED_LOCALES', space_sep_locales)
global_conf.set (
'LV2_VERSION', get_option ('lv2-ver'))
global_conf.set (
'SERD_VERSION', get_option ('serd-ver'))
global_conf.set (
'SORD_VERSION', get_option ('sord-ver'))
global_conf.set (
'SRATOM_VERSION', get_option ('sratom-ver'))
global_conf.set (
'LILV_VERSION', get_option ('lilv-ver'))
global_conf.set (
'JACK_VERSION', get_option ('jack-ver'))
global_conf.set (
'GTK_VER', gtk_ver)
global_conf.set (
'LIBADWAITA_VER', libadwaita_ver)
global_conf.set (
'LIBPANEL_VER', libpanel_ver)
global_conf.set (
'SUPPORTING_TEXT',
build_trial ? 'trying out' : 'supporting')
global_conf.set ('EMAIL_AT_SYM', '@')
global_conf.set (
'PACKAGES_DIR', get_option ('packages-dir'))
global_conf.set (
'GET_PKG_FILENAME_SH_PATH',
meson.build_root () / 'scripts/get_pkg_filename.sh')
global_conf.set (
'MARCH_MTUNE', get_option ('march_mtune'))
subdir ('scripts')
subdir ('sources')
latest_tag = run_command (get_latest_tag).stdout ().strip ()
is_tag = run_command (is_tag_sh).stdout (). strip () == 'true'
carla_installation = custom_target (
'carla-installation',
output: 'carla-prefix',
input: carla_src_zip,
command: [
make_carla, '@OUTPUT@', '@INPUT@', '@PRIVATE_DIR@',
carla_prefix,
],
install: false,
)
carla_pkgconfig_path = carla_installation.full_path () + carla_prefix / 'pkgconfig'
zplugins_installation = custom_target (
'zplugins-installation',
output: 'built_zplugins',
input: zplugins_src_tarball,
command: [
make_zplugins, '@OUTPUT@', zplugins_src_tarball,
'@PRIVATE_DIR@',
],
install: false,
)
run_target (
'zplugins',
command: [ 'echo', 'done' ],
depends: zplugins_installation)
lsp_dsp_lib_installation = custom_target (
'lsp-dsp-lib-installation',
output: 'lsp-dsp-lib.pc',
input: lsp_dsp_lib_src_tarball,
command: [
make_lsp_dsp_lib, '@INPUT@', '&&',
'cp', library_pkgconfig_path / 'lsp-dsp-lib.pc',
'@OUTPUT@',
],
install: false,
)
if is_arch or is_user_manuals
subdir ('arch')
endif
if is_debian
subdir ('debian')
endif
if is_nixos
subdir ('nixos')
endif
if is_rpm
subdir ('rpm')
endif
if is_windows_msys
subdir ('windows-msys')
endif
if is_osx_brew
subdir ('osx-brew')
elif is_osx
subdir ('osx')
endif
if is_gnu_linux
subdir ('gnu-linux')
endif
if is_appimage
subdir ('appimage')
endif
if is_flatpak
subdir ('flatpak')
endif
summary ({
'prefix': prefix,
'libdir': libdir,
'Packages dir': get_option ('packages-dir'),
}, section: 'Directories')
summary ({
'Meson path': get_option ('meson-path'),
'Git version': get_option ('zrythm-git-ver'),
'Is tag': is_tag,
'Package version': get_option ('zrythm-pkg-ver'),
'Build trial': get_option ('build-trial').to_string (),
'Carla version': get_option ('carla-git-ver'),
'ZPlugins version': get_option ('zplugins-ver'),
'Locales': ' '.join (get_option ('locales')),
'Distro': get_option ('distro'),
}, section: 'General')