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.
This commit is contained in:
parent
a4772ce319
commit
86622e0c31
|
@ -64,7 +64,7 @@ from a context menu.
|
||||||
Windows
|
Windows
|
||||||
~~~~~~~
|
~~~~~~~
|
||||||
'fiv' can be cross-compiled for Windows, provided that you install a bunch of
|
'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.
|
plus rsvg-convert from librsvg2, and icotool from icoutils.
|
||||||
Beware that the build will take up about a gigabyte of disk space.
|
Beware that the build will take up about a gigabyte of disk space.
|
||||||
|
|
||||||
|
|
|
@ -326,10 +326,11 @@ if not win32
|
||||||
meson.add_install_script(updater, skip_if_destdir : dynamic_desktops)
|
meson.add_install_script(updater, skip_if_destdir : dynamic_desktops)
|
||||||
endif
|
endif
|
||||||
elif meson.is_cross_build()
|
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')
|
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({
|
meson.add_devenv({
|
||||||
'WINEPATH' : msys2_root / 'bin',
|
'WINEPATH' : msys2_root / 'bin',
|
||||||
'XDG_DATA_DIRS' : msys2_root / 'share',
|
'XDG_DATA_DIRS' : msys2_root / 'share',
|
||||||
|
|
|
@ -1,9 +1,16 @@
|
||||||
#!/bin/sh -e
|
#!/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,
|
# Dependencies: AWK, sed, sha256sum, cURL, bsdtar,
|
||||||
# wine64, Meson, mingw-w64-binutils, mingw-w64-gcc, pkg-config
|
# wine64, Meson, mingw-w64-binutils, mingw-w64-gcc, pkg-config
|
||||||
repository=https://repo.msys2.org/mingw/mingw64/
|
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() {
|
status() {
|
||||||
echo "$(tput bold)-- $*$(tput sgr0)"
|
echo "$(tput bold)-- $*$(tput sgr0)"
|
||||||
}
|
}
|
||||||
|
@ -74,6 +81,8 @@ configure() {
|
||||||
|
|
||||||
setup() {
|
setup() {
|
||||||
status Setting up Meson
|
status Setting up Meson
|
||||||
|
[ -n "$MSYSTEM" ] && wrap=false || wrap=true
|
||||||
|
|
||||||
cat >"$toolchain" <<-EOF
|
cat >"$toolchain" <<-EOF
|
||||||
[binaries]
|
[binaries]
|
||||||
c = 'x86_64-w64-mingw32-gcc'
|
c = 'x86_64-w64-mingw32-gcc'
|
||||||
|
@ -88,7 +97,7 @@ setup() {
|
||||||
sys_root = '$builddir'
|
sys_root = '$builddir'
|
||||||
msys2_root = '$msys2_root'
|
msys2_root = '$msys2_root'
|
||||||
pkg_config_libdir = '$msys2_root/share/pkgconfig:$msys2_root/lib/pkgconfig'
|
pkg_config_libdir = '$msys2_root/share/pkgconfig:$msys2_root/lib/pkgconfig'
|
||||||
needs_exe_wrapper = true
|
needs_exe_wrapper = $wrap
|
||||||
|
|
||||||
[host_machine]
|
[host_machine]
|
||||||
system = 'windows'
|
system = 'windows'
|
|
@ -3,6 +3,13 @@ export LC_ALL=C
|
||||||
cd "$MESON_INSTALL_DESTDIR_PREFIX"
|
cd "$MESON_INSTALL_DESTDIR_PREFIX"
|
||||||
msys2_root=$1
|
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.
|
# Copy binaries we directly or indirectly depend on.
|
||||||
cp -p "$msys2_root"/bin/*.dll .
|
cp -p "$msys2_root"/bin/*.dll .
|
||||||
cp -p "$msys2_root"/bin/wperl.exe .
|
cp -p "$msys2_root"/bin/wperl.exe .
|
Loading…
Reference in New Issue