fwupd/libfwupdplugin/meson.build
2021-09-03 15:10:38 -05:00

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('.')