Compare commits

...

2 Commits

Author SHA1 Message Date
1eee1831a5
Windows seems to be mostly working fine 2023-06-22 11:05:04 +02:00
86622e0c31
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.
2023-06-22 04:06:38 +02:00
4 changed files with 32 additions and 7 deletions

View File

@ -2,7 +2,7 @@ fiv
===
'fiv' is a slightly unconventional, general-purpose image browser and viewer
for Linux (as well as macOS and Windows, though these have known issues).
for Linux and Windows (macOS still has major issues).
image::docs/fiv.webp["Screenshot of both the browser and the viewer"]
@ -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.
@ -72,7 +72,15 @@ Beware that the build will take up about a gigabyte of disk space.
$ meson install -C builddir
If everything succeeds, you will find a portable build of the application
in the 'builddir/package' subdirectory. Keep your expectations low.
in the 'builddir/package' subdirectory. No installer is provided yet.
Faster colour management
^^^^^^^^^^^^^^^^^^^^^^^^
To get the Little CMS fast float plugin, you'll have to enter MSYS2 and
https://www.msys2.org/wiki/Creating-Packages/#re-building-a-package[rebuild]
_mingw-w64-lcms2_ with the following change:
sed -i 's/meson setup /&-Dfastfloat=true /' PKGCONFIG
Documentation
-------------

View File

@ -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',

View File

@ -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'

View File

@ -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 .