diff --git a/README.adoc b/README.adoc index 0e36c48..a06b97c 100644 --- a/README.adoc +++ b/README.adoc @@ -64,7 +64,7 @@ from a context menu. Windows ~~~~~~~ 'fiv' can be cross-compiled for Windows, provided that you install a bunch of -dependencies listed at the beginning of 'msys2-cross-configure.sh', +dependencies listed at the beginning of 'msys2-configure.sh', plus rsvg-convert from librsvg2, and icotool from icoutils. Beware that the build will take up about a gigabyte of disk space. diff --git a/meson.build b/meson.build index e1d9e5f..50daf3d 100644 --- a/meson.build +++ b/meson.build @@ -326,10 +326,11 @@ if not win32 meson.add_install_script(updater, skip_if_destdir : dynamic_desktops) endif elif meson.is_cross_build() + # Note that even compiling /from within MSYS2/ can still be a cross-build. msys2_root = meson.get_external_property('msys2_root') - meson.add_install_script('msys2-cross-install.sh', msys2_root) + meson.add_install_script('msys2-install.sh', msys2_root) - # This is the minimum to run targets from msys2-cross-configure.sh builds. + # This is the minimum to run targets from msys2-configure.sh builds. meson.add_devenv({ 'WINEPATH' : msys2_root / 'bin', 'XDG_DATA_DIRS' : msys2_root / 'share', diff --git a/msys2-cross-configure.sh b/msys2-configure.sh similarity index 92% rename from msys2-cross-configure.sh rename to msys2-configure.sh index b2ea2d5..53ccdc5 100755 --- a/msys2-cross-configure.sh +++ b/msys2-configure.sh @@ -1,9 +1,16 @@ #!/bin/sh -e -# msys2-cross-configure.sh: set up an MSYS2-based cross-compiled Meson build. +# msys2-configure.sh: set up an MSYS2-based Meson build targeting x86-64. # Dependencies: AWK, sed, sha256sum, cURL, bsdtar, # wine64, Meson, mingw-w64-binutils, mingw-w64-gcc, pkg-config repository=https://repo.msys2.org/mingw/mingw64/ +# Support running directly from within MSYS2 on Windows. +if [ -n "$MSYSTEM" ] +then + wine64() { "$@"; } + awk() { command awk -v RS='\r?\n' "$@"; } +fi + status() { echo "$(tput bold)-- $*$(tput sgr0)" } @@ -74,6 +81,8 @@ configure() { setup() { status Setting up Meson + [ -n "$MSYSTEM" ] && wrap=false || wrap=true + cat >"$toolchain" <<-EOF [binaries] c = 'x86_64-w64-mingw32-gcc' @@ -88,7 +97,7 @@ setup() { sys_root = '$builddir' msys2_root = '$msys2_root' pkg_config_libdir = '$msys2_root/share/pkgconfig:$msys2_root/lib/pkgconfig' - needs_exe_wrapper = true + needs_exe_wrapper = $wrap [host_machine] system = 'windows' diff --git a/msys2-cross-install.sh b/msys2-install.sh similarity index 93% rename from msys2-cross-install.sh rename to msys2-install.sh index 7cbc2cc..abb284f 100755 --- a/msys2-cross-install.sh +++ b/msys2-install.sh @@ -3,6 +3,13 @@ export LC_ALL=C cd "$MESON_INSTALL_DESTDIR_PREFIX" msys2_root=$1 +# Support running directly from within MSYS2 on Windows. +if [ -n "$MSYSTEM" ] +then + wine64() { "$@"; } + awk() { command awk -v RS='\r?\n' "$@"; } +fi + # Copy binaries we directly or indirectly depend on. cp -p "$msys2_root"/bin/*.dll . cp -p "$msys2_root"/bin/wperl.exe .