build-sys: add a "pixman" feature

For now, pixman is mandatory, but we set config_host.h and Kconfig.
Once compilation is fixed, "pixman" will become actually optional.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
master
Marc-André Lureau 2023-08-30 13:38:25 +04:00
parent bb541a7068
commit cca1575686
5 changed files with 18 additions and 2 deletions

View File

@ -11,6 +11,9 @@ config OPENGL
config X11 config X11
bool bool
config PIXMAN
bool
config SPICE config SPICE
bool bool

View File

@ -6,11 +6,13 @@
#ifndef QEMU_PIXMAN_H #ifndef QEMU_PIXMAN_H
#define QEMU_PIXMAN_H #define QEMU_PIXMAN_H
#ifdef CONFIG_PIXMAN
/* pixman-0.16.0 headers have a redundant declaration */ /* pixman-0.16.0 headers have a redundant declaration */
#pragma GCC diagnostic push #pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wredundant-decls" #pragma GCC diagnostic ignored "-Wredundant-decls"
#include <pixman.h> #include <pixman.h>
#pragma GCC diagnostic pop #pragma GCC diagnostic pop
#endif
/* /*
* pixman image formats are defined to be native endian, * pixman image formats are defined to be native endian,

View File

@ -813,10 +813,14 @@ if 'ust' in get_option('trace_backends')
method: 'pkg-config') method: 'pkg-config')
endif endif
pixman = not_found pixman = not_found
if have_system or have_tools if not get_option('pixman').auto() or have_system or have_tools
pixman = dependency('pixman-1', required: have_system, version:'>=0.21.8', pixman = dependency('pixman-1', required: get_option('pixman'), version:'>=0.21.8',
method: 'pkg-config') method: 'pkg-config')
endif endif
if not pixman.found() and (have_system or have_tools)
error('FIXME: pixman is currently required')
endif
zlib = dependency('zlib', required: true) zlib = dependency('zlib', required: true)
libaio = not_found libaio = not_found
@ -2149,6 +2153,7 @@ config_host_data.set('CONFIG_SECCOMP', seccomp.found())
if seccomp.found() if seccomp.found()
config_host_data.set('CONFIG_SECCOMP_SYSRAWRC', seccomp_has_sysrawrc) config_host_data.set('CONFIG_SECCOMP_SYSRAWRC', seccomp_has_sysrawrc)
endif endif
config_host_data.set('CONFIG_PIXMAN', pixman.found())
config_host_data.set('CONFIG_SNAPPY', snappy.found()) config_host_data.set('CONFIG_SNAPPY', snappy.found())
config_host_data.set('CONFIG_SOLARIS', targetos == 'sunos') config_host_data.set('CONFIG_SOLARIS', targetos == 'sunos')
if get_option('tcg').allowed() if get_option('tcg').allowed()
@ -2868,6 +2873,7 @@ have_ivshmem = config_host_data.get('CONFIG_EVENTFD')
host_kconfig = \ host_kconfig = \
(get_option('fuzzing') ? ['CONFIG_FUZZ=y'] : []) + \ (get_option('fuzzing') ? ['CONFIG_FUZZ=y'] : []) + \
(have_tpm ? ['CONFIG_TPM=y'] : []) + \ (have_tpm ? ['CONFIG_TPM=y'] : []) + \
(pixman.found() ? ['CONFIG_PIXMAN=y'] : []) + \
(spice.found() ? ['CONFIG_SPICE=y'] : []) + \ (spice.found() ? ['CONFIG_SPICE=y'] : []) + \
(have_ivshmem ? ['CONFIG_IVSHMEM=y'] : []) + \ (have_ivshmem ? ['CONFIG_IVSHMEM=y'] : []) + \
(opengl.found() ? ['CONFIG_OPENGL=y'] : []) + \ (opengl.found() ? ['CONFIG_OPENGL=y'] : []) + \

View File

@ -226,6 +226,8 @@ option('l2tpv3', type : 'feature', value : 'auto',
description: 'l2tpv3 network backend support') description: 'l2tpv3 network backend support')
option('netmap', type : 'feature', value : 'auto', option('netmap', type : 'feature', value : 'auto',
description: 'netmap network backend support') description: 'netmap network backend support')
option('pixman', type : 'feature', value : 'auto',
description: 'pixman support')
option('slirp', type: 'feature', value: 'auto', option('slirp', type: 'feature', value: 'auto',
description: 'libslirp user mode network backend support') description: 'libslirp user mode network backend support')
option('vde', type : 'feature', value : 'auto', option('vde', type : 'feature', value : 'auto',

View File

@ -160,6 +160,7 @@ meson_options_help() {
printf "%s\n" ' pa PulseAudio sound support' printf "%s\n" ' pa PulseAudio sound support'
printf "%s\n" ' parallels parallels image format support' printf "%s\n" ' parallels parallels image format support'
printf "%s\n" ' pipewire PipeWire sound support' printf "%s\n" ' pipewire PipeWire sound support'
printf "%s\n" ' pixman pixman support'
printf "%s\n" ' plugins TCG plugins via shared library loading' printf "%s\n" ' plugins TCG plugins via shared library loading'
printf "%s\n" ' png PNG support with libpng' printf "%s\n" ' png PNG support with libpng'
printf "%s\n" ' pvrdma Enable PVRDMA support' printf "%s\n" ' pvrdma Enable PVRDMA support'
@ -419,6 +420,8 @@ _meson_option_parse() {
--disable-parallels) printf "%s" -Dparallels=disabled ;; --disable-parallels) printf "%s" -Dparallels=disabled ;;
--enable-pipewire) printf "%s" -Dpipewire=enabled ;; --enable-pipewire) printf "%s" -Dpipewire=enabled ;;
--disable-pipewire) printf "%s" -Dpipewire=disabled ;; --disable-pipewire) printf "%s" -Dpipewire=disabled ;;
--enable-pixman) printf "%s" -Dpixman=enabled ;;
--disable-pixman) printf "%s" -Dpixman=disabled ;;
--with-pkgversion=*) quote_sh "-Dpkgversion=$2" ;; --with-pkgversion=*) quote_sh "-Dpkgversion=$2" ;;
--enable-plugins) printf "%s" -Dplugins=true ;; --enable-plugins) printf "%s" -Dplugins=true ;;
--disable-plugins) printf "%s" -Dplugins=false ;; --disable-plugins) printf "%s" -Dplugins=false ;;