mirror of
https://git.proxmox.com/git/fwupd
synced 2025-05-02 05:47:46 +00:00
344 lines
8.3 KiB
Meson
344 lines
8.3 KiB
Meson
fwupdplugin_version_h = configure_file(
|
|
input : 'fu-version.h.in',
|
|
output : 'fu-version.h',
|
|
configuration : conf
|
|
)
|
|
|
|
fwupdplugin_src = [
|
|
'fu-archive.c',
|
|
'fu-backend.c',
|
|
'fu-bluez-device.c',
|
|
'fu-cabinet.c',
|
|
'fu-chunk.c', # fuzzing
|
|
'fu-common.c', # fuzzing
|
|
'fu-common-cab.c',
|
|
'fu-common-guid.c',
|
|
'fu-common-version.c', # fuzzing
|
|
'fu-context.c', # fuzzing
|
|
'fu-device-locker.c', # fuzzing
|
|
'fu-device.c', # fuzzing
|
|
'fu-dfu-firmware.c', # fuzzing
|
|
'fu-volume.c', # fuzzing
|
|
'fu-firmware.c', # fuzzing
|
|
'fu-firmware-common.c', # fuzzing
|
|
'fu-dfuse-firmware.c', # fuzzing
|
|
'fu-fmap-firmware.c', # fuzzing
|
|
'fu-hwids.c', # fuzzing
|
|
'fu-ihex-firmware.c', # fuzzing
|
|
'fu-io-channel.c', # fuzzing
|
|
'fu-plugin.c',
|
|
'fu-quirks.c', # fuzzing
|
|
'fu-security-attrs.c',
|
|
'fu-smbios.c', # fuzzing
|
|
'fu-srec-firmware.c', # fuzzing
|
|
'fu-kenv.c', # fuzzing
|
|
'fu-efi-signature.c',
|
|
'fu-efi-signature-list.c',
|
|
'fu-efi-common.c', # fuzzing
|
|
'fu-efi-firmware-common.c', # fuzzing
|
|
'fu-efi-firmware-file.c', # fuzzing
|
|
'fu-efi-firmware-filesystem.c', # fuzzing
|
|
'fu-efi-firmware-section.c', # fuzzing
|
|
'fu-efi-firmware-volume.c', # fuzzing
|
|
'fu-ifd-bios.c', # fuzzing
|
|
'fu-ifd-common.c', # fuzzing
|
|
'fu-ifd-firmware.c', # fuzzing
|
|
'fu-ifd-image.c', # fuzzing
|
|
'fu-efivar.c',
|
|
'fu-udev-device.c',
|
|
'fu-i2c-device.c',
|
|
'fu-usb-device.c',
|
|
'fu-hid-device.c',
|
|
'fu-version.c',
|
|
]
|
|
|
|
if host_machine.system() == 'linux'
|
|
fwupdplugin_src += 'fu-common-linux.c' # fuzzing
|
|
fwupdplugin_src += 'fu-efivar-linux.c'
|
|
elif host_machine.system() == 'freebsd'
|
|
fwupdplugin_src += 'fu-common-freebsd.c'
|
|
fwupdplugin_src += 'fu-efivar-freebsd.c'
|
|
elif host_machine.system() == 'windows'
|
|
fwupdplugin_src += 'fu-common-windows.c'
|
|
fwupdplugin_src += 'fu-efivar-windows.c' # fuzzing
|
|
else
|
|
error('no OS support for @0@'.format(host_machine.system()))
|
|
endif
|
|
|
|
fwupdplugin_headers = [
|
|
'fu-archive.h',
|
|
'fu-backend.h',
|
|
'fu-bluez-device.h',
|
|
'fu-cabinet.h',
|
|
'fu-chunk.h',
|
|
'fu-common.h',
|
|
'fu-common-cab.h',
|
|
'fu-common-guid.h',
|
|
'fu-common-version.h',
|
|
'fu-context.h',
|
|
'fu-deprecated.h',
|
|
'fu-device.h',
|
|
'fu-device-metadata.h',
|
|
'fu-device-locker.h',
|
|
'fu-dfu-firmware.h',
|
|
'fu-efi-common.h',
|
|
'fu-efi-firmware-file.h',
|
|
'fu-efi-firmware-filesystem.h',
|
|
'fu-efi-firmware-section.h',
|
|
'fu-efi-firmware-volume.h',
|
|
'fu-ifd-bios.h',
|
|
'fu-ifd-common.h',
|
|
'fu-ifd-firmware.h',
|
|
'fu-ifd-image.h',
|
|
'fu-volume.h',
|
|
'fu-firmware.h',
|
|
'fu-firmware-common.h',
|
|
'fu-fmap-firmware.h',
|
|
'fu-dfuse-firmware.h',
|
|
'fu-hwids.h',
|
|
'fu-ihex-firmware.h',
|
|
'fu-io-channel.h',
|
|
'fu-plugin.h',
|
|
'fu-quirks.h',
|
|
'fu-security-attrs.h',
|
|
'fu-smbios.h',
|
|
'fu-srec-firmware.h',
|
|
'fu-efi-signature.h',
|
|
'fu-efi-signature-list.h',
|
|
'fu-efivar.h',
|
|
'fu-udev-device.h',
|
|
'fu-i2c-device.h',
|
|
'fu-usb-device.h',
|
|
'fu-hid-device.h',
|
|
]
|
|
install_headers(
|
|
'fwupdplugin.h',
|
|
subdir : 'fwupd-1',
|
|
)
|
|
install_headers([fwupdplugin_headers, 'fu-plugin-vfuncs.h'],
|
|
subdir : 'fwupd-1/libfwupdplugin',
|
|
)
|
|
|
|
fu_hash = custom_target(
|
|
'fu-hash.h',
|
|
input : fwupdplugin_src,
|
|
output : 'fu-hash.h',
|
|
command : [python3.path(),
|
|
join_paths(meson.current_source_dir(), 'fu-hash.py'),
|
|
'@OUTPUT@', '@INPUT@']
|
|
)
|
|
|
|
fwupdplugin_headers_private = [
|
|
fu_hash,
|
|
'fu-context-private.h',
|
|
'fu-device-private.h',
|
|
'fu-kenv.h',
|
|
'fu-plugin-private.h',
|
|
'fu-security-attrs-private.h',
|
|
'fu-smbios-private.h',
|
|
'fu-udev-device-private.h',
|
|
'fu-usb-device-private.h',
|
|
fwupdplugin_version_h,
|
|
]
|
|
|
|
introspection_deps = [
|
|
libxmlb,
|
|
libjcat,
|
|
giounix,
|
|
]
|
|
|
|
pkgg_requires = [ 'gio-2.0',
|
|
'gmodule-2.0',
|
|
'gobject-2.0',
|
|
'fwupd',
|
|
'json-glib-1.0',
|
|
'libarchive',
|
|
'libgcab-1.0',
|
|
'xmlb',
|
|
'jcat',
|
|
]
|
|
|
|
if get_option('gusb')
|
|
introspection_deps += gusb
|
|
pkgg_requires += 'gusb'
|
|
endif
|
|
|
|
if get_option('gudev')
|
|
introspection_deps += gudev
|
|
endif
|
|
|
|
library_deps = [
|
|
introspection_deps,
|
|
gmodule,
|
|
libjsonglib,
|
|
libgcab,
|
|
valgrind,
|
|
libjcat,
|
|
platform_deps,
|
|
]
|
|
|
|
if get_option('libarchive')
|
|
library_deps += libarchive
|
|
endif
|
|
|
|
if get_option('lzma')
|
|
library_deps += lzma
|
|
endif
|
|
|
|
fwupdplugin_mapfile = 'fwupdplugin.map'
|
|
vflag = '-Wl,--version-script,@0@/@1@'.format(meson.current_source_dir(), fwupdplugin_mapfile)
|
|
fwupdplugin = library(
|
|
'fwupdplugin',
|
|
sources : [
|
|
fwupdplugin_src,
|
|
fwupdplugin_headers,
|
|
fwupdplugin_headers_private,
|
|
],
|
|
soversion : libfwupdplugin_lt_current,
|
|
version : libfwupdplugin_lt_version,
|
|
include_directories : [
|
|
root_incdir,
|
|
fwupd_incdir,
|
|
],
|
|
dependencies : [
|
|
library_deps
|
|
],
|
|
link_with : [
|
|
fwupd,
|
|
],
|
|
link_args : vflag,
|
|
link_depends : fwupdplugin_mapfile,
|
|
install : true
|
|
)
|
|
|
|
fwupdplugin_pkgg = import('pkgconfig')
|
|
fwupdplugin_pkgg.generate(
|
|
libraries : fwupdplugin,
|
|
requires : pkgg_requires,
|
|
subdirs : 'fwupd-1',
|
|
version : meson.project_version(),
|
|
name : 'fwupdplugin',
|
|
filebase : 'fwupdplugin',
|
|
description : 'library for plugins to use to interact with fwupd daemon',
|
|
)
|
|
|
|
if get_option('introspection')
|
|
gir_dep = declare_dependency(sources: fwupd_gir)
|
|
girtargets = []
|
|
extra_args = []
|
|
if get_option('gusb')
|
|
if gusb.type_name() == 'internal'
|
|
girtargets += subproject('gusb').get_variable('libgusb_girtarget')[0]
|
|
else
|
|
girtargets += 'GUsb-1.0'
|
|
endif
|
|
extra_args += '-DHAVE_GUSB'
|
|
endif
|
|
if libxmlb.type_name() == 'internal'
|
|
girtargets += subproject('libxmlb').get_variable('gir')[0]
|
|
elif libxmlb.version().version_compare ('>= 0.3.2')
|
|
girtargets += 'Xmlb-2.0'
|
|
endif
|
|
fwupdplugin_gir = gnome.generate_gir(fwupd,
|
|
sources : [
|
|
fwupdplugin_src,
|
|
fwupdplugin_headers,
|
|
fwupdplugin_headers_private,
|
|
],
|
|
nsversion : '1.0',
|
|
namespace : 'FwupdPlugin',
|
|
symbol_prefix : 'fu',
|
|
identifier_prefix : 'Fu',
|
|
export_packages : 'fwupdplugin',
|
|
extra_args : extra_args,
|
|
include_directories : [
|
|
fwupd_incdir,
|
|
],
|
|
header : 'fwupdplugin.h',
|
|
dependencies : [
|
|
gir_dep,
|
|
introspection_deps
|
|
],
|
|
link_with : [
|
|
fwupdplugin,
|
|
],
|
|
includes : [
|
|
'Gio-2.0',
|
|
'GObject-2.0',
|
|
girtargets,
|
|
fwupd_gir[0],
|
|
],
|
|
install : true
|
|
)
|
|
|
|
# Verify the map file is correct -- note we can't actually use the generated
|
|
# file for two reasons:
|
|
#
|
|
# 1. We don't hard depend on GObject Introspection
|
|
# 2. The map file is required to build the lib that the GIR is built from
|
|
#
|
|
# To avoid the circular dep, and to ensure we don't change exported API
|
|
# accidentally actually check in a version of the version script to git.
|
|
fwupdplugin_mapfile_target = custom_target('fwupdplugin_mapfile',
|
|
input: fwupdplugin_gir[0],
|
|
output: 'fwupdplugin.map',
|
|
command: [
|
|
python3,
|
|
join_paths(meson.source_root(), 'contrib', 'generate-version-script.py'),
|
|
'LIBFWUPDPLUGIN',
|
|
'@INPUT@',
|
|
'@OUTPUT@',
|
|
'--override', 'fu_chunk_get_type', '1.5.6',
|
|
'--override', 'fu_srec_firmware_record_get_type', '1.6.1',
|
|
],
|
|
)
|
|
|
|
test('fwupdplugin-exported-api', diffcmd,
|
|
args : [
|
|
'-urNp',
|
|
join_paths(meson.current_source_dir(), 'fwupdplugin.map'),
|
|
fwupdplugin_mapfile_target,
|
|
],
|
|
)
|
|
endif
|
|
|
|
if get_option('tests')
|
|
test_deps = [
|
|
colorhug_test_firmware,
|
|
builder_test_firmware,
|
|
hwid_test_firmware,
|
|
multiple_rels_test_firmware,
|
|
noreqs_test_firmware,
|
|
fu_hash,
|
|
]
|
|
testdatadir_src = join_paths(meson.source_root(), 'data', 'tests')
|
|
testdatadir_dst = join_paths(meson.build_root(), 'data', 'tests')
|
|
pluginbuilddir = join_paths(meson.build_root(), 'plugins', 'test')
|
|
e = executable(
|
|
'fwupdplugin-self-test',
|
|
test_deps,
|
|
sources : [
|
|
fwupdplugin_src,
|
|
'fu-self-test.c'
|
|
],
|
|
include_directories : [
|
|
root_incdir,
|
|
fwupd_incdir,
|
|
],
|
|
dependencies : [
|
|
library_deps
|
|
],
|
|
link_with : [
|
|
fwupd,
|
|
fwupdplugin
|
|
],
|
|
c_args : [
|
|
'-DTESTDATADIR_SRC="' + testdatadir_src + '"',
|
|
'-DTESTDATADIR_DST="' + testdatadir_dst + '"',
|
|
],
|
|
)
|
|
test('fwupdplugin-self-test', e, is_parallel:false, timeout:180)
|
|
endif
|
|
|
|
fwupdplugin_incdir = include_directories('.')
|