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