Make pixman an optional dependency
Goal
Allow to compile text-mode only QEMU system emulators for running headless emulation without any kind of graphics doesn't technically require pixman as a dependency.
Technical details
Allow QEMU compile everything except code in UI and some display devices (or SPICE) if pixman dependency not found.
Additional information
Only these files use pixman functions (excluding tests, of course):
meson.build
contrib/vhost-user-gpu/vhost-user-gpu.c
contrib/vhost-user-gpu/meson.build
chardev/meson.build
include/ui/spice-display.h
include/ui/sdl2.h
include/ui/gtk.h
include/ui/qemu-pixman.h
include/ui/console.h
include/hw/display/xlnx_dp.h
include/hw/virtio/virtio-gpu.h
include/hw/virtio/virtio-gpu-pixman.h
hw/display/vga.c
hw/display/ramfb.c
hw/display/vhost-user-gpu.c
hw/display/virtio-gpu-gl.c
hw/display/virtio-gpu-udmabuf.c
hw/display/xenfb.c
hw/display/ati_2d.c
hw/display/meson.build
hw/display/vmware_vga.c
hw/display/qxl-render.c
hw/display/xlnx_dp.c
hw/display/bochs-display.c
hw/display/sm501.c
hw/display/virtio-gpu.c
hw/vfio/display.c
hw/s390x/meson.build
ui/cocoa.m
ui/console-gl.c
ui/vnc.c
ui/qemu-pixman.c
ui/gtk.c
ui/console.c
ui/trace-events
ui/meson.build
ui/dbus-listener.c
ui/vnc-enc-tight.c
ui/vnc.h
ui/spice-display.c
ui/dbus-display1.xml
ui/sdl2-2d.c
This code in meson.build always require pixman for building system emulators:
pixman = not_found
if have_system or have_tools
pixman = dependency('pixman-1', required: have_system, version:'>=0.21.8',
method: 'pkg-config', kwargs: static_kwargs)
endif
https://gitlab.com/qemu-project/qemu/-/blob/master/meson.build#L520
Most of the code could work without it.
Edited by Anton Kochkov