From ba73bb0f3d2023839bc3b681c49b7ec1192cceb4 Mon Sep 17 00:00:00 2001
|
From: Alexander Kanavin <alex.kanavin@gmail.com>
|
Date: Sat, 8 May 2021 21:58:54 +0200
|
Subject: [PATCH] Add use_prebuilt_tools option
|
|
This allows using the gdk-pixbuf tools from the host to
|
build and install tests in a cross-compile scenarion.
|
|
Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/merge_requests/119]
|
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
|
|
---
|
gdk-pixbuf/meson.build | 11 +++++++++--
|
meson.build | 6 +++---
|
meson_options.txt | 4 ++++
|
tests/meson.build | 16 ++++++++--------
|
thumbnailer/meson.build | 24 ++++++++++++++++++------
|
5 files changed, 42 insertions(+), 19 deletions(-)
|
|
diff --git a/gdk-pixbuf/meson.build b/gdk-pixbuf/meson.build
|
index 8b0590b..7331491 100644
|
--- a/gdk-pixbuf/meson.build
|
+++ b/gdk-pixbuf/meson.build
|
@@ -342,13 +342,20 @@ foreach bin: gdkpixbuf_bin
|
include_directories: [ root_inc, gdk_pixbuf_inc ],
|
c_args: common_cflags + gdk_pixbuf_cflags,
|
install: true)
|
- meson.override_find_program(bin_name, bin)
|
+ if not get_option('use_prebuilt_tools')
|
+ meson.override_find_program(bin_name, bin)
|
+ endif
|
|
# Used in tests
|
set_variable(bin_name.underscorify(), bin)
|
endforeach
|
|
-if not meson.is_cross_build()
|
+if get_option('use_prebuilt_tools')
|
+ gdk_pixbuf_query_loaders = find_program('gdk-pixbuf-query-loaders', required: true)
|
+ gdk_pixbuf_pixdata = find_program('gdk-pixbuf-pixdata', required: true)
|
+endif
|
+
|
+if not meson.is_cross_build() or get_option('use_prebuilt_tools')
|
# The 'loaders.cache' used for testing, so we don't accidentally
|
# load the installed cache; we always build it by default
|
loaders_cache = custom_target('loaders.cache',
|
diff --git a/meson.build b/meson.build
|
index 7a1409b..0bc73eb 100644
|
--- a/meson.build
|
+++ b/meson.build
|
@@ -403,16 +403,16 @@ subdir('gdk-pixbuf')
|
# i18n
|
subdir('po')
|
|
-if not meson.is_cross_build()
|
+if not meson.is_cross_build() or get_option('use_prebuilt_tools')
|
subdir('tests')
|
- subdir('thumbnailer')
|
endif
|
+subdir('thumbnailer')
|
|
# Documentation
|
build_docs = get_option('gtk_doc') or get_option('docs')
|
subdir('docs')
|
|
-if not meson.is_cross_build()
|
+if not meson.is_cross_build() or get_option('use_prebuilt_tools')
|
meson.add_install_script('build-aux/post-install.py',
|
gdk_pixbuf_bindir,
|
gdk_pixbuf_libdir,
|
diff --git a/meson_options.txt b/meson_options.txt
|
index 0ee6718..cc29855 100644
|
--- a/meson_options.txt
|
+++ b/meson_options.txt
|
@@ -49,4 +49,8 @@ option('gio_sniffing',
|
description: 'Perform file type detection using GIO (Unused on MacOS and Windows)',
|
type: 'boolean',
|
value: true)
|
+option('use_prebuilt_tools',
|
+ description: 'Use prebuilt gdk-pixbuf tools from the host for cross-compilation',
|
+ type: 'boolean',
|
+ value: false)
|
|
diff --git a/tests/meson.build b/tests/meson.build
|
index 7c6cb11..1029e6a 100644
|
--- a/tests/meson.build
|
+++ b/tests/meson.build
|
@@ -5,6 +5,12 @@
|
# $PATH. Ideally we should use gnome.compile_resources() and let Meson deal with
|
# this problem: See https://github.com/mesonbuild/meson/issues/8266.
|
if enabled_loaders.contains('png') and host_system != 'windows'
|
+
|
+ resources_deps = [loaders_cache,]
|
+ if not get_option('use_prebuilt_tools')
|
+ resources_deps += [gdk_pixbuf_pixdata,]
|
+ endif
|
+
|
# Resources; we cannot use gnome.compile_resources() here, because we need to
|
# override the environment in order to use the utilities we just built instead
|
# of the system ones
|
@@ -21,10 +27,7 @@ if enabled_loaders.contains('png') and host_system != 'windows'
|
'@INPUT@',
|
'@OUTPUT@',
|
],
|
- depends: [
|
- gdk_pixbuf_pixdata,
|
- loaders_cache,
|
- ],
|
+ depends: resources_deps,
|
)
|
|
resources_h = custom_target('resources.h',
|
@@ -40,10 +43,7 @@ if enabled_loaders.contains('png') and host_system != 'windows'
|
'@INPUT@',
|
'@OUTPUT@',
|
],
|
- depends: [
|
- gdk_pixbuf_pixdata,
|
- loaders_cache,
|
- ],
|
+ depends: resources_deps,
|
)
|
no_resources = false
|
else
|
diff --git a/thumbnailer/meson.build b/thumbnailer/meson.build
|
index b6a206d..9336c21 100644
|
--- a/thumbnailer/meson.build
|
+++ b/thumbnailer/meson.build
|
@@ -6,13 +6,29 @@ bin = executable('gdk-pixbuf-thumbnailer',
|
],
|
dependencies: gdk_pixbuf_deps + [ gdkpixbuf_dep ],
|
install: true)
|
-meson.override_find_program('gdk-pixbuf-thumbnailer', bin)
|
+if not get_option('use_prebuilt_tools')
|
+ meson.override_find_program('gdk-pixbuf-thumbnailer', bin)
|
+endif
|
|
gdk_pixbuf_print_mime_types = executable('gdk-pixbuf-print-mime-types',
|
'gdk-pixbuf-print-mime-types.c',
|
+ install: true,
|
c_args: common_cflags,
|
dependencies: gdk_pixbuf_deps + [ gdkpixbuf_dep ])
|
|
+if get_option('use_prebuilt_tools')
|
+ gdk_pixbuf_print_mime_types = find_program('gdk-pixbuf-print-mime-types', required: true)
|
+endif
|
+
|
+thumbnailer_deps = [loaders_cache,]
|
+
|
+if not get_option('use_prebuilt_tools')
|
+ thumbnailer_deps += [
|
+ gdk_pixbuf_print_mime_types,
|
+ gdk_pixbuf_pixdata,
|
+ ]
|
+endif
|
+
|
custom_target('thumbnailer',
|
input: 'gdk-pixbuf-thumbnailer.thumbnailer.in',
|
output: 'gdk-pixbuf-thumbnailer.thumbnailer',
|
@@ -25,10 +41,6 @@ custom_target('thumbnailer',
|
'@INPUT@',
|
'@OUTPUT@',
|
],
|
- depends: [
|
- gdk_pixbuf_print_mime_types,
|
- gdk_pixbuf_pixdata,
|
- loaders_cache,
|
- ],
|
+ depends: thumbnailer_deps,
|
install: true,
|
install_dir: join_paths(gdk_pixbuf_datadir, 'thumbnailers'))
|