summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Claessens <xclaesse@gmail.com>2021-05-05 19:54:14 +0000
committerXavier Claessens <xclaesse@gmail.com>2021-05-05 19:54:14 +0000
commit1095a0619d6ea6716240bcaa499a9f44a5f331e6 (patch)
treeb92948f70dadceb69e3963b2bf708a7ee8b24609
parent1bfbff2a7f36c92c156897db79109121f465bb7d (diff)
parent7305f1ee096f819b52118b179c06e3d868518689 (diff)
downloadgdk-pixbuf-1095a0619d6ea6716240bcaa499a9f44a5f331e6.tar.gz
Merge branch 'meson-features' into 'master'
Meson: Change png/jpeg/tiff options from boolean to feature See merge request GNOME/gdk-pixbuf!118
-rw-r--r--.gitlab-ci.yml2
-rw-r--r--.gitlab/ci/test-msys2.sh6
-rw-r--r--meson.build81
-rw-r--r--meson_options.txt12
4 files changed, 60 insertions, 41 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 7887596f0..17a9ba38e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -8,7 +8,7 @@ stages:
variables:
CCACHE_DIR: _ccache
COMMON_MESON_FLAGS: "-Dwerror=true -Dglib:werror=false"
- LOADERS_FLAGS: "-Dpng=true -Djpeg=true -Dtiff=true"
+ LOADERS_FLAGS: "-Dpng=enabled -Djpeg=enabled -Dtiff=enabled"
MESON_TEST_TIMEOUT_MULTIPLIER: 3
FEDORA_IMAGE: "registry.gitlab.gnome.org/gnome/gdk-pixbuf/fedora:v3"
diff --git a/.gitlab/ci/test-msys2.sh b/.gitlab/ci/test-msys2.sh
index b5a94c946..f9ac9e639 100644
--- a/.gitlab/ci/test-msys2.sh
+++ b/.gitlab/ci/test-msys2.sh
@@ -21,9 +21,9 @@ pacman --noconfirm -S --needed \
mingw-w64-$MSYS2_ARCH-toolchain
meson setup --buildtype debug \
- -Dpng=true \
- -Djpeg=true \
- -Dtiff=true \
+ -Dpng=enabled \
+ -Djpeg=enabled \
+ -Dtiff=enabled \
_build
meson compile -C _build
diff --git a/meson.build b/meson.build
index fde0e9ade..8dc3ea68b 100644
--- a/meson.build
+++ b/meson.build
@@ -253,7 +253,8 @@ endif
enabled_loaders = []
loaders_deps = []
-if get_option('png')
+png_opt = get_option('png')
+if not png_opt.disabled()
png_dep = dependency('libpng', required: false)
if not png_dep.found() and cc.has_header('png.h')
@@ -283,11 +284,16 @@ if get_option('png')
# that will bypass --wrap-mode and cause issues for distro packagers.
# See: https://mesonbuild.com/Reference-manual.html#dependency
if not png_dep.found()
- png_dep = dependency('libpng', fallback: ['libpng', 'png_dep'])
+ png_dep = dependency('libpng',
+ fallback: ['libpng', 'png_dep'],
+ required: png_opt,
+ )
endif
- enabled_loaders += 'png'
- loaders_deps += png_dep
+ if png_dep.found()
+ enabled_loaders += 'png'
+ loaders_deps += png_dep
+ endif
endif
# On Windows, check whether we are building the native Windows loaders
@@ -307,7 +313,8 @@ if native_windows_loaders
endif
# Don't check and build the jpeg loader if native_windows_loaders is true
-if get_option('jpeg') and not native_windows_loaders
+jpeg_opt = get_option('jpeg')
+if not jpeg_opt.disabled() and not native_windows_loaders
jpeg_dep = dependency('libjpeg', required: false)
if not jpeg_dep.found() and cc.has_header('jpeglib.h')
@@ -321,43 +328,55 @@ if get_option('jpeg') and not native_windows_loaders
# Finally, look for the dependency in a fallback
if not jpeg_dep.found()
- jpeg_dep = dependency('libjpeg', fallback: ['libjpeg-turbo', 'jpeg_dep'])
+ jpeg_dep = dependency('libjpeg',
+ fallback: ['libjpeg-turbo', 'jpeg_dep'],
+ required: jpeg_opt,
+ )
endif
- enabled_loaders += 'jpeg'
- loaders_deps += jpeg_dep
+ if jpeg_dep.found()
+ enabled_loaders += 'jpeg'
+ loaders_deps += jpeg_dep
- if jpeg_dep.type_name() == 'internal'
- has_destroy_decompress = true
- has_simple_progression = true
- else
- has_destroy_decompress = cc.has_function('jpeg_destroy_decompress', dependencies: jpeg_dep)
- has_simple_progression = cc.has_function('jpeg_simple_progression', dependencies: jpeg_dep)
- endif
+ if jpeg_dep.type_name() == 'internal'
+ has_destroy_decompress = true
+ has_simple_progression = true
+ else
+ has_destroy_decompress = cc.has_function('jpeg_destroy_decompress', dependencies: jpeg_dep)
+ has_simple_progression = cc.has_function('jpeg_simple_progression', dependencies: jpeg_dep)
+ endif
- if has_destroy_decompress and has_simple_progression
- gdk_pixbuf_conf.set('HAVE_PROGRESSIVE_JPEG', has_simple_progression)
+ if has_destroy_decompress and has_simple_progression
+ gdk_pixbuf_conf.set('HAVE_PROGRESSIVE_JPEG', has_simple_progression)
+ endif
endif
endif
# Don't check and build the tiff loader if native_windows_loaders is true
-if get_option('tiff') and not native_windows_loaders
+tiff_opt = get_option('tiff')
+if not tiff_opt.disabled() and not native_windows_loaders
tiff_dep = dependency('libtiff-4', required: false)
- if not tiff_dep.found()
- # Fallback when no pkg-config file is found for libtiff on MSVC, which is quite normal
- if cc.get_id() == 'msvc' and cc.has_header('tiff.h')
- # First look for the DLL builds of libtiff, then the static builds
- tiff_dep = cc.find_library('libtiff_i', required: false)
-
- if not tiff_dep.found()
- # For the static lib, zlib and libjpeg .lib's have been looked for first, and
- # they are optional for libtiff
- tiff_dep = cc.find_library('libtiff')
- endif
+ if not tiff_dep.found() and cc.has_header('tiff.h')
+ # First look for the DLL builds of libtiff, then the static builds
+ tiff_dep = cc.find_library('libtiff_i', required: false)
+
+ if not tiff_dep.found()
+ # For the static lib, zlib and libjpeg .lib's have been looked for first, and
+ # they are optional for libtiff
+ tiff_dep = cc.find_library('libtiff', required: false)
endif
endif
- enabled_loaders += 'tiff'
- loaders_deps += tiff_dep
+
+ # We currently don't have a fallback subproject, but this handles error
+ # reporting if tiff_opt is enabled.
+ if not tiff_dep.found()
+ tiff_dep = dependency('libtiff-4', required: tiff_opt)
+ endif
+
+ if tiff_dep.found()
+ enabled_loaders += 'tiff'
+ loaders_deps += tiff_dep
+ endif
endif
# Determine whether we enable application bundle relocation support, and we use
diff --git a/meson_options.txt b/meson_options.txt
index 0ee6718bf..c12179c5e 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,15 +1,15 @@
option('png',
description: 'Enable PNG loader (requires libpng)',
- type: 'boolean',
- value: true)
+ type: 'feature',
+ value: 'enabled')
option('tiff',
description: 'Enable TIFF loader (requires libtiff), disabled on Windows if "native_windows_loaders" is used',
- type: 'boolean',
- value: true)
+ type: 'feature',
+ value: 'auto')
option('jpeg',
description: 'Enable JPEG loader (requires libjpeg), disabled on Windows if "native_windows_loaders" is used',
- type: 'boolean',
- value: true)
+ type: 'feature',
+ value: 'enabled')
option('builtin_loaders',
description: 'Comma-separated list of loaders to build into gdk-pixbuf',
type: 'array',