From 64bbf811e8dd53ecf004a618c34866d22916ca65 Mon Sep 17 00:00:00 2001 From: Dimitri Bouron Date: Thu, 5 May 2022 20:35:39 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=A6=20Enable=20meson=20cross=20build?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix pango library loading --- .github/docker/windows/Dockerfile | 2 +- lib/CMakeLists.txt | 13 +++++++++++-- lib/VERSIONS | 6 +----- meson/linux-mingw-w64-64bit.txt | 20 ++++++++++++++++++++ src/main/java/com/criteo/vips/Vips.java | 2 +- 5 files changed, 34 insertions(+), 9 deletions(-) create mode 100644 meson/linux-mingw-w64-64bit.txt diff --git a/.github/docker/windows/Dockerfile b/.github/docker/windows/Dockerfile index 267dac62..4029fd90 100644 --- a/.github/docker/windows/Dockerfile +++ b/.github/docker/windows/Dockerfile @@ -51,7 +51,7 @@ RUN yum install ${YUM_OPTIONS} \ mingw64-glib2 \ mingw64-win-iconv \ mingw64-expat \ - mingw-w64-x86_64 + mingw-w64-fontconfig # Link the system version of libmpfr, which is more recent than expected, but works fine. RUN ln -s /lib64/libmpfr.so.6 /lib64/libmpfr.so.4 diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 4a0a9dd4..c9bd0f36 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -1,6 +1,6 @@ include(ExternalProject) -find_program(MESON meson REQUIRED) +find_program(MESON meson REQUIRED ) find_program(NINJA ninja REQUIRED) # Read external project versions @@ -47,6 +47,14 @@ list(APPEND CONFIGURE_VARS ${CONFIGURE_HOST} ) + +if (NOT DEFINED BUILD_TARGET) + set(MESON_CROSS_FILE "") +elseif(${BUILD_TARGET} STREQUAL "w64") + set(MESON_CROSS_FILE "--cross-file ${PROJECT_SOURCE_DIR}/meson/linux-mingw-w64-64bit.txt") +endif() + + list(APPEND MESON_VARS -Dpkg_config_path=${EXT_INSTALL_DIR}/lib/pkgconfig:$PKG_CONFIG_PATH --bindir=${EXT_INSTALL_DIR}/bin @@ -54,6 +62,7 @@ list(APPEND MESON_VARS --includedir=${EXT_INSTALL_DIR}/include --datadir=${EXT_INSTALL_DIR}/share --prefix=${EXT_INSTALL_DIR} + ${MESON_CROSS_FILE} ) find_library(LIBIMAGEQUANT imagequant PATHS "${EXT_INSTALL_DIR}/lib" NO_DEFAULT_PATH) @@ -276,7 +285,7 @@ else() add_custom_target(cairo "") endif() -find_library(PANGO pango PATHS "${EXT_INSTALL_DIR}/lib" NO_DEFAULT_PATH) +find_library(PANGO pango-1.0 PATHS "${EXT_INSTALL_DIR}/lib" NO_DEFAULT_PATH) if(NOT PANGO) ExternalProject_Add(pango URL "https://gitlab.gnome.org/GNOME/pango/-/archive/${PANGO_VERSION}/pango-${PANGO_VERSION}.tar.gz" diff --git a/lib/VERSIONS b/lib/VERSIONS index 64d9d4df..6311f97c 100644 --- a/lib/VERSIONS +++ b/lib/VERSIONS @@ -11,12 +11,8 @@ LCMS2_VERSION=2.11 TIFF_VERSION=4.1.0 FREETYPE_VERSION=2.10.4 HARFBUZZ_VERSION=2.7.2 -<<<<<<< HEAD -VIPS_VERSION=8.12.2 -======= FRIBIDI_VERSION=1.0.10 PIXMAN_VERSION=0.40.0 CAIRO_VERSION=1.16.0 PANGO_VERSION=1.48.0 -VIPS_VERSION=8.12.1 ->>>>>>> 📦 Add Fribidi dependency +VIPS_VERSION=8.12.2 diff --git a/meson/linux-mingw-w64-64bit.txt b/meson/linux-mingw-w64-64bit.txt new file mode 100644 index 00000000..52774747 --- /dev/null +++ b/meson/linux-mingw-w64-64bit.txt @@ -0,0 +1,20 @@ +[binaries] +c = '/usr/bin/x86_64-w64-mingw32-gcc' +cpp = '/usr/bin/x86_64-w64-mingw32-g++' +ar = '/usr/bin/x86_64-w64-mingw32-ar' +strip = '/usr/bin/x86_64-w64-mingw32-strip' +pkgconfig = '/usr/bin/x86_64-w64-mingw32-pkg-config' +windres = '/usr/bin/x86_64-w64-mingw32-windres' +exe_wrapper = 'wine64' + +[properties] +# Directory that contains 'bin', 'lib', etc +root = '/usr/x86_64-w64-mingw32' +# Directory that contains 'bin', 'lib', etc for the toolchain and system libraries +sys_root = '/usr/x86_64-w64-mingw32/sys-root/mingw' + +[host_machine] +system = 'windows' +cpu_family = 'x86_64' +cpu = 'x86_64' +endian = 'little' \ No newline at end of file diff --git a/src/main/java/com/criteo/vips/Vips.java b/src/main/java/com/criteo/vips/Vips.java index cdbbcbdb..521d9455 100644 --- a/src/main/java/com/criteo/vips/Vips.java +++ b/src/main/java/com/criteo/vips/Vips.java @@ -34,7 +34,7 @@ public class Vips { "png16", "spng", "cairo", - "pango", + "pango-1.0", "gif", "jpeg", "turbojpeg",