Skip to content

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
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information