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.
440 lines
12 KiB
440 lines
12 KiB
# Copyright (C) 2020-2021 Alexandros Theodotou <alex at zrythm dot org> |
|
# |
|
# This file is part of Zrythm |
|
# |
|
# Zrythm 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. |
|
# |
|
# Zrythm 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 Zrythm. If not, see <https://www.gnu.org/licenses/>. |
|
|
|
windows_msys_conf = configuration_data () |
|
windows_msys_conf.set ( |
|
'BASH', bash.full_path ()) |
|
windows_msys_conf.set ( |
|
'DASH_TRIAL', dash_trial) |
|
windows_msys_conf.set ( |
|
'ZPLUGINS_VER', zplugins_ver) |
|
windows_msys_conf.set ( |
|
'ZRYTHM_PKG_VERSION', zrythm_pkg_ver) |
|
windows_msys_conf.set ( |
|
'ZRYTHM_PKG_SEMVER_VERSION', zrythm_pkg_semver) |
|
windows_msys_conf.set ( |
|
'TRIAL_TRUE_FALSE', trial_true_false) |
|
windows_msys_conf.set ( |
|
'CARLA_GIT_VER', carla_git_ver) |
|
windows_msys_conf.set ( |
|
'ZRYTHM_INNER_DIR_NAME', zrythm_inner_dir_name) |
|
windows_msys_conf.set ( |
|
'ZRYTHM_SOURCE_TARBALL_FILENAME', |
|
zrythm_src_tarball_filename) |
|
windows_msys_conf.set ( |
|
'SUPPORTING_TEXT', |
|
build_trial ? 'trying out' : 'supporting') |
|
windows_msys_conf.set ( |
|
'MINGW_PKG_PREFIX', mingw_pkg_prefix) |
|
windows_msys_conf.set ( |
|
'MINGW_PREFIX', mingw_prefix) |
|
windows_msys_conf.set ( |
|
'MINGW_ARCH', mingw_arch) |
|
windows_msys_conf.set ( |
|
'MESON_SOURCE_ROOT', meson_src_root) |
|
windows_msys_conf.set ( |
|
'LSP_DSP_LIB_VER', lsp_dsp_lib_ver) |
|
windows_msys_conf.set ('IS_TAG', is_tag ? 'true' : 'false') |
|
|
|
mingw_zrythm_pkgbuild = configure_file ( |
|
output: 'PKGBUILD', |
|
input: 'PKGBUILD.in', |
|
configuration: windows_msys_conf, |
|
) |
|
mingw_carla_pkgbuild = configure_file ( |
|
output: 'PKGBUILD-carla-mingw', |
|
input: 'PKGBUILD-carla-mingw.in', |
|
configuration: windows_msys_conf, |
|
) |
|
mingw_cairo_pkgbuild = configure_file ( |
|
output: 'PKGBUILD-cairo-mingw', |
|
input: 'PKGBUILD-cairo-mingw.in', |
|
configuration: windows_msys_conf, |
|
) |
|
mingw_gtk4_pkgbuild = configure_file ( |
|
output: 'PKGBUILD-gtk4-mingw', |
|
input: 'PKGBUILD-gtk4-mingw.in', |
|
configuration: windows_msys_conf, |
|
) |
|
mingw_libadwaita_pkgbuild = configure_file ( |
|
output: 'PKGBUILD-libadwaita-mingw', |
|
input: 'PKGBUILD-libadwaita-mingw.in', |
|
configuration: windows_msys_conf, |
|
) |
|
mingw_libpanel_pkgbuild = configure_file ( |
|
output: 'PKGBUILD-libpanel-mingw', |
|
input: 'PKGBUILD-libpanel-mingw.in', |
|
configuration: windows_msys_conf, |
|
) |
|
mingw_lsp_dsp_lib_pkgbuild = configure_file ( |
|
output: 'PKGBUILD-lsp-dsp-lib-mingw', |
|
input: 'PKGBUILD-lsp-dsp-lib-mingw.in', |
|
configuration: windows_msys_conf, |
|
) |
|
|
|
# configure scripts |
|
make_windows_chroot = configure_file ( |
|
output: 'make_windows_chroot.sh', |
|
input: 'make_windows_chroot.sh.in', |
|
configuration: windows_msys_conf, |
|
) |
|
collect_dlls = configure_file ( |
|
output: 'collect_dlls.sh', |
|
input: 'collect_dlls.sh.in', |
|
configuration: windows_msys_conf, |
|
) |
|
make_dist_dir = configure_file ( |
|
output: 'make_dist_dir.sh', |
|
input: 'make_dist_dir.sh.in', |
|
configuration: windows_msys_conf, |
|
) |
|
make_windows_installer = configure_file ( |
|
output: 'make_windows_installer.sh', |
|
input: 'make_windows_installer.sh.in', |
|
configuration: windows_msys_conf, |
|
) |
|
make_mingw_pkg = configure_file ( |
|
output: 'make_mingw_pkg.sh', |
|
input: 'make_mingw_pkg.sh.in', |
|
configuration: windows_msys_conf, |
|
) |
|
make_zrythm_mingw_pkg = configure_file ( |
|
output: 'make_zrythm_mingw_pkg.sh', |
|
input: 'make_zrythm_mingw_pkg.sh.in', |
|
configuration: windows_msys_conf, |
|
) |
|
|
|
filename = 'Carla-' + carla_git_ver + '.tar.gz' |
|
url = 'https://github.com/falkTX/Carla/archive/' + carla_git_ver + '.zip' |
|
carla_zip_orig_src = custom_target ( |
|
'carla-zip-orig_src', |
|
output: 'carla-zip-orig-src-' + carla_git_ver + '.zip', |
|
command: [ |
|
bash, '-c', 'wget "$1" -O "$2"', |
|
'_ignored', |
|
url, '@OUTPUT@', |
|
], |
|
install: false, |
|
) |
|
carla_zip_windows = custom_target ( |
|
'carla-zip-windows', |
|
output: filename, |
|
input: carla_zip_orig_src, |
|
command: [ |
|
bash, '-c', |
|
'rm -rf "$3" && mkdir -p "$3" && cp "$1" "$3"/"$2" && ' + |
|
'cd "$3" && rm -rf "$4" && unzip "$2" && ' + |
|
'cd "$4" && pwd && make msys2fix && cd .. && ' + |
|
'tar cvf "$2" "$4" && cd ../.. && mv "$3"/"$2" "$5" && ' + |
|
'echo "done"', |
|
'_ignored', |
|
'@INPUT@', filename, '@PRIVATE_DIR@', |
|
'Carla-' + carla_git_ver, '@OUTPUT@', |
|
], |
|
install: false, |
|
) |
|
|
|
make_mingw_pkg_cmd = [ |
|
bash, '-c', '@INPUT0@ "$1" "$2" "$3" "$4" ' + |
|
'"$5" "$6"', |
|
'_ignored', |
|
'@OUTPUT@', '@INPUT1@', '@PRIVATE_DIR@', |
|
mingw_arch, '', '', |
|
] |
|
make_mingw_pkg_cmd_full = [ |
|
bash, '-c', '@INPUT0@ "$1" "$2" "$3" "$4" ' + |
|
'"$5" "$6"', |
|
'_ignored', |
|
'@OUTPUT@', '@INPUT1@', '@PRIVATE_DIR@', |
|
mingw_arch, '', '@INPUT2@', |
|
] |
|
|
|
# sources |
|
inno_extract_ver = '1.9' |
|
filename = 'innoextract-' + inno_extract_ver + '-windows.zip' |
|
url = 'https://github.com/dscharrer/innoextract/releases/download/' + inno_extract_ver + '/' + filename |
|
inno_extract_zip = custom_target ( |
|
'inno-extract-zip', |
|
output: filename, |
|
command: [ |
|
'wget', url, '-O', '@OUTPUT@', |
|
], |
|
install: false, |
|
) |
|
#inno_extract = custom_target ( |
|
#'inno-extract-exe', |
|
#output: 'innoextract.exe', |
|
#input: inno_extract_ver, |
|
#command: [ |
|
#bash, '-c', '@INPUT0@ "$1" "$2" "$3"', '_ignored', |
|
#'@OUTPUT@', '@INPUT1@', '@PRIVATE_DIR@' |
|
filename = 'rcedit-x64.exe' |
|
url = 'https://github.com/electron/rcedit/releases/download/v1.1.1/' + filename |
|
rcedit_x64_exe = custom_target ( |
|
'rcedit-x64-exe', |
|
output: filename, |
|
command: [ |
|
bash, '-c', |
|
'wget ' + url + ' -O \'@OUTPUT@\' && ' + |
|
'chmod +x \'@OUTPUT@\'' |
|
], |
|
install: false, |
|
) |
|
|
|
# install dependencies |
|
carla_packages = [] |
|
foreach arch : [ 'ucrt64', 'mingw32' ] |
|
#foreach arch : [ '32' ] |
|
carla_pkg_target = custom_target ( |
|
'mingw-carla-' + arch, |
|
output: 'carla-' + arch + '.pkg.tar.zst', |
|
input: [ |
|
make_mingw_pkg, mingw_carla_pkgbuild, |
|
carla_zip_windows, |
|
], |
|
command: [ |
|
bash, '-c', |
|
'@INPUT0@ "$1" "$2" "$3" "$4" "$5" "$6"', |
|
'_ignored', |
|
'@OUTPUT@', '@INPUT1@', '@PRIVATE_DIR@', |
|
arch, |
|
'@INPUT2@', |
|
], |
|
console: true, |
|
install: false, |
|
) |
|
carla_packages += carla_pkg_target |
|
run_target ( |
|
'mingw-carla-' + arch + '-build', |
|
command: [ 'echo', 'done', ], |
|
depends: carla_pkg_target) |
|
endforeach |
|
serd_pkg = custom_target ( |
|
'mingw-serd', |
|
output: 'serd.pkg.tar.zst', |
|
input: [ make_mingw_pkg, 'PKGBUILD-serd-mingw', ], |
|
command: make_mingw_pkg_cmd, |
|
console: true, |
|
install: false, |
|
) |
|
sord_pkg = custom_target ( |
|
'mingw-sord', |
|
output: 'sord.pkg.tar.zst', |
|
input: [ make_mingw_pkg, 'PKGBUILD-sord-mingw', ], |
|
command: make_mingw_pkg_cmd, |
|
depends: serd_pkg, |
|
console: true, |
|
install: false, |
|
) |
|
sratom_pkg = custom_target ( |
|
'mingw-sratom', |
|
output: 'sratom.pkg.tar.zst', |
|
input: [ make_mingw_pkg, 'PKGBUILD-sratom-mingw', ], |
|
command: make_mingw_pkg_cmd, |
|
depends: sord_pkg, |
|
console: true, |
|
install: false, |
|
) |
|
lilv_pkg = custom_target ( |
|
'mingw-lilv', |
|
output: 'lilv.pkg.tar.zst', |
|
input: [ make_mingw_pkg, 'PKGBUILD-lilv-mingw', ], |
|
command: make_mingw_pkg_cmd, |
|
depends: sratom_pkg, |
|
console: true, |
|
install: false, |
|
) |
|
run_target ( |
|
'run-mingw-lilv', |
|
command: [ 'echo', 'done' ], |
|
depends: lilv_pkg) |
|
lsp_dsp_lib_pkg = custom_target ( |
|
'mingw-lsp-dsp-lib', |
|
output: 'lsp-dsp-lib.pkg.tar.zst', |
|
input: [ make_mingw_pkg, mingw_lsp_dsp_lib_pkgbuild, ], |
|
command: make_mingw_pkg_cmd, |
|
console: true, |
|
install: false, |
|
) |
|
cairo_pkg = custom_target ( |
|
'mingw-cairo', |
|
output: 'cairo.pkg.tar.zst', |
|
input: [ make_mingw_pkg, mingw_cairo_pkgbuild, ], |
|
command: make_mingw_pkg_cmd, |
|
console: true, |
|
install: false, |
|
) |
|
run_target ( |
|
'run-mingw-cairo', |
|
command: [ 'echo', 'done' ], |
|
depends: cairo_pkg) |
|
gtk4_pkg = custom_target ( |
|
'mingw-gtk4', |
|
output: 'gtk4.pkg.tar.zst', |
|
input: [ make_mingw_pkg, mingw_gtk4_pkgbuild, ], |
|
depends: cairo_pkg, |
|
command: make_mingw_pkg_cmd, |
|
console: true, |
|
install: false, |
|
) |
|
run_target ( |
|
'run-mingw-gtk4', |
|
command: [ 'echo', 'done' ], |
|
depends: gtk4_pkg) |
|
libadwaita_pkg = custom_target ( |
|
'mingw-libadwaita', |
|
output: 'libadwaita.pkg.tar.zst', |
|
input: [ make_mingw_pkg, mingw_libadwaita_pkgbuild, ], |
|
command: make_mingw_pkg_cmd, |
|
depends: gtk4_pkg, |
|
console: true, |
|
install: false, |
|
) |
|
run_target ( |
|
'run-mingw-libadwaita', |
|
command: [ 'echo', 'done' ], |
|
depends: libadwaita_pkg) |
|
|
|
libpanel_pkg = custom_target ( |
|
'mingw-libpanel', |
|
output: 'libpanel.pkg.tar.zst', |
|
input: [ make_mingw_pkg, mingw_libpanel_pkgbuild, ], |
|
command: make_mingw_pkg_cmd, |
|
console: true, |
|
install: false, |
|
) |
|
run_target ( |
|
'run-mingw-libpanel', |
|
command: [ 'echo', 'done' ], |
|
depends: libpanel_pkg) |
|
|
|
mingw_zrythm_pkg = custom_target ( |
|
'mingw-zrythm-pkg', |
|
output: 'zrythm' + dash_trial + '.pkg.tar.zst', |
|
input: [ |
|
make_zrythm_mingw_pkg, mingw_zrythm_pkgbuild, |
|
zrythm_src_tarball, zplugins_src_tarball, |
|
], |
|
command: [ |
|
bash, '-c', |
|
'@INPUT0@ "$1" "$2" "$3" "$4" "$5"', '_ignored', |
|
'@OUTPUT@', '@INPUT1@', '@INPUT2@', |
|
'@INPUT3@', '@PRIVATE_DIR@', |
|
], |
|
depends: [ |
|
lilv_pkg, lsp_dsp_lib_pkg, libpanel_pkg, |
|
], |
|
console: true, |
|
install: false, |
|
) |
|
|
|
run_target ( |
|
'install-zrythm-mingw-pkg', |
|
command: [ 'echo', 'done' ], |
|
depends: mingw_zrythm_pkg) |
|
|
|
chroot_dir = meson.current_build_dir () / 'zrythm' + dash_trial + '-chroot' |
|
windows_chroot_target = custom_target ( |
|
'windows-chroot', |
|
output: 'zrythm-test', |
|
input: [ |
|
make_windows_chroot, zrythm_src_tarball, |
|
carla_packages[0], |
|
carla_packages[1], |
|
serd_pkg, sord_pkg, |
|
sratom_pkg, lilv_pkg, |
|
lsp_dsp_lib_pkg, libpanel_pkg, mingw_zrythm_pkg, |
|
], |
|
command: [ |
|
bash, '-c', |
|
'@INPUT0@ "$1" "$2" "$3" "$4" "$5" "$6" ' + |
|
'"$7" "$8" "$9" "${10}" "${11}" "${12}" "${13}" ' + |
|
'"${14}" "${15}" "${16}"', |
|
'_ignored', |
|
'@OUTPUT@', chroot_dir, '@INPUT1@', '@INPUT2@', |
|
'@INPUT3@', '@INPUT4@', '@INPUT5@', '@INPUT6@', |
|
'@INPUT7@', '@INPUT8@', '@INPUT9@', '@INPUT10@', |
|
], |
|
console: true, |
|
install: false, |
|
) |
|
|
|
dll_dir = custom_target ( |
|
'windows-msys-dll-dir', |
|
output: 'dlls', |
|
input: [ |
|
collect_dlls, 'copy-dll-deps.sh', |
|
], |
|
command: [ |
|
bash, '-c', |
|
'@INPUT0@ "$1" "$2" "$3"', |
|
'_ignored', |
|
'@OUTPUT@', '@INPUT1@', chroot_dir, |
|
], |
|
depends: [ |
|
windows_chroot_target, |
|
], |
|
console: true, |
|
install: false, |
|
) |
|
|
|
run_target ( |
|
'windows-msys-prepare', |
|
command: [ 'echo', 'done' ], |
|
depends: dll_dir) |
|
|
|
installer_dist_dir = custom_target ( |
|
'windows-installer-dist-dir', |
|
output: 'installer-dist', |
|
input: [ |
|
make_dist_dir, zrythm_src_tarball, |
|
'copy-dll-deps.sh', |
|
rcedit_x64_exe, dll_dir, |
|
breeze_icons, |
|
], |
|
command: [ |
|
bash, '-c', |
|
'@INPUT0@ "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8"', |
|
'_ignored', |
|
'@OUTPUT@', '@INPUT1@', chroot_dir, |
|
'@PRIVATE_DIR@', '@INPUT2@', '@INPUT3@', |
|
'@INPUT4@', '@INPUT5@', |
|
], |
|
console: true, |
|
install: false, |
|
) |
|
|
|
windows_msys_installer_filename = run_command ( |
|
bash, '-c', |
|
meson.build_root () / 'scripts/get_pkg_filename.sh' + |
|
' WINDOWS_MSYS ' + dash_trial).stdout ().strip () |
|
windows_msys_installer = custom_target ( |
|
'windows-msys-installer', |
|
output: windows_msys_installer_filename, |
|
input: [ |
|
make_windows_installer, installer_dist_dir, |
|
'installer.iss', |
|
], |
|
command: [ |
|
bash, '-c', |
|
'@INPUT0@ "$1" "$2" "$3"', '_ignored', |
|
'@OUTPUT@', '@INPUT1@', '@INPUT2@', |
|
], |
|
console: true, |
|
install: true, |
|
install_dir: get_option ('prefix'), |
|
)
|
|
|