aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPřemysl Eric Janouch <p@janouch.name>2023-06-22 01:48:02 +0200
committerPřemysl Eric Janouch <p@janouch.name>2023-06-22 04:06:38 +0200
commit86622e0c311a80bb26666688b88b8c5d853119e5 (patch)
tree85a1ab3e57b126262bb340be2efea4999c36905f
parenta4772ce3194484c56595a8f5e9c0535fd86254fd (diff)
downloadfiv-86622e0c311a80bb26666688b88b8c5d853119e5.tar.gz
fiv-86622e0c311a80bb26666688b88b8c5d853119e5.tar.xz
fiv-86622e0c311a80bb26666688b88b8c5d853119e5.zip
Make cross-compilation scripts work from MSYS2
This is weird and runs very slowly. Meson can also find libraries outside the subroot, in particular the fast float plugin.
-rw-r--r--README.adoc2
-rw-r--r--meson.build5
-rwxr-xr-xmsys2-configure.sh (renamed from msys2-cross-configure.sh)13
-rwxr-xr-xmsys2-install.sh (renamed from msys2-cross-install.sh)7
4 files changed, 22 insertions, 5 deletions
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
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
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 .