Skip to content

contrib/plugins/Makefile is not crossplatform

Host environment

  • Operating system: macOS, Windows
  • OS/kernel version: -
  • Architecture: -
  • QEMU flavor: *
  • QEMU version:

Emulated/Virtualized environment

  • Operating system: *

Description of problem

Currently contrib/plugins/Makefile makes multiple assumptions about paths used, compiler flags available, and library extension

Steps to reproduce

  1. Compile QEMU from sources on macOS or Windows
  2. Enter contrib/plugins
  3. Type make and become sad.

Additional information

As the rest of QEMU switched to Meson, maybe it's a good idea to do the same for plugins as well?

This is what I come with myself:

meson.build:

project('qemu-plugins', 'c', meson_version: '>=0.50.0')

qemu_src = get_option('qemu_path')
if qemu_src == ''
  qemu_src = '../..'
endif

qemu_include = qemu_src + '/include/qemu'
incdir = include_directories(qemu_include)

plugins = [
  'execlog',
  'hotblocks',
  'hotpages',
  'howvec',
  'lockstep',
  'hwprofile',
  'cache',
  'drcov',
]

th = dependency('threads', required: true)
glib = dependency('glib-2.0', required: true)

foreach p: plugins
  library(p, p + '.c',
    include_directories: incdir,
    dependencies: [th, glib],
    override_options: ['b_lundef=false']
  )
endforeach

meson_options.txt:

option('qemu_path', type : 'string', value : '', description : 'Full path to the QEMU sources to build the plugin for')
Edited by Anton Kochkov
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information