mirror of
https://git.proxmox.com/git/fwupd
synced 2025-05-17 22:24:21 +00:00

This allows us to binary patch firmware images. The diff generation is implemented with a forwards-only algorithm; this allows a vendor to remove non-free code without shipping a "reversed" version of the non-redistributable code.
156 lines
3.0 KiB
Meson
156 lines
3.0 KiB
Meson
cargs = [
|
|
'-DG_LOG_DOMAIN="Dfu"',
|
|
]
|
|
|
|
install_headers('dfu.h')
|
|
install_headers([
|
|
'dfu-common.h',
|
|
'dfu-context.h',
|
|
'dfu-device.h',
|
|
'dfu-element.h',
|
|
'dfu-error.h',
|
|
'dfu-firmware.h',
|
|
'dfu-image.h',
|
|
'dfu-patch.h',
|
|
'dfu-sector.h',
|
|
'dfu-target.h',
|
|
],
|
|
subdir : 'libdfu'
|
|
)
|
|
|
|
deps = [
|
|
appstream_glib,
|
|
giounix,
|
|
libm,
|
|
gusb,
|
|
]
|
|
|
|
if get_option('enable-libelf')
|
|
deps += libelf
|
|
endif
|
|
|
|
mapfile = 'dfu.map'
|
|
vflag = '-Wl,--version-script,@0@/@1@'.format(meson.current_source_dir(), mapfile)
|
|
dfu = shared_library(
|
|
'dfu',
|
|
sources : [
|
|
'dfu-cipher-devo.c',
|
|
'dfu-cipher-xtea.c',
|
|
'dfu-common.c',
|
|
'dfu-context.c',
|
|
'dfu-device.c',
|
|
'dfu-element.c',
|
|
'dfu-error.c',
|
|
'dfu-firmware.c',
|
|
'dfu-format-dfu.c',
|
|
'dfu-format-dfuse.c',
|
|
'dfu-format-elf.c',
|
|
'dfu-format-ihex.c',
|
|
'dfu-format-metadata.c',
|
|
'dfu-format-raw.c',
|
|
'dfu-image.c',
|
|
'dfu-patch.c',
|
|
'dfu-sector.c',
|
|
'dfu-target.c',
|
|
],
|
|
soversion : lt_current,
|
|
version : lt_version,
|
|
dependencies : deps,
|
|
c_args : cargs,
|
|
include_directories : include_directories('..'),
|
|
link_args : vflag,
|
|
link_depends : mapfile,
|
|
install : true
|
|
)
|
|
|
|
pkgg = import('pkgconfig')
|
|
pkgg.generate(
|
|
libraries : dfu,
|
|
requires : [ 'gio-2.0', 'gusb' ],
|
|
requires_private : [ 'libelf', 'appstream-glib' ],
|
|
subdirs : 'libdfu',
|
|
version : meson.project_version(),
|
|
name : 'dfu',
|
|
filebase : 'dfu',
|
|
description : 'libdfu is a library for reading and writing USB device firmware',
|
|
)
|
|
|
|
executable(
|
|
'dfu-tool',
|
|
sources : [
|
|
'dfu-progress-bar.c',
|
|
'dfu-tool.c',
|
|
],
|
|
include_directories : [
|
|
include_directories('..'),
|
|
],
|
|
dependencies : deps,
|
|
link_with : dfu,
|
|
c_args : cargs,
|
|
install : true,
|
|
install_dir : get_option('bindir')
|
|
)
|
|
|
|
if get_option('enable-introspection')
|
|
gnome.generate_gir(dfu,
|
|
sources : [
|
|
'dfu-common.c',
|
|
'dfu-common.h',
|
|
'dfu-context.c',
|
|
'dfu-context.h',
|
|
'dfu-device.c',
|
|
'dfu-device.h',
|
|
'dfu-element.c',
|
|
'dfu-element.h',
|
|
'dfu-error.c',
|
|
'dfu-error.h',
|
|
'dfu-firmware.c',
|
|
'dfu-firmware.h',
|
|
'dfu-image.c',
|
|
'dfu-image.h',
|
|
'dfu-patch.c',
|
|
'dfu-patch.h',
|
|
'dfu-sector.c',
|
|
'dfu-sector.h',
|
|
'dfu-target.c',
|
|
'dfu-target.h',
|
|
],
|
|
nsversion : '1.0',
|
|
namespace : 'Dfu',
|
|
symbol_prefix : 'dfu',
|
|
identifier_prefix : 'Dfu',
|
|
export_packages : 'dfu',
|
|
dependencies : deps,
|
|
includes : [
|
|
'AppStreamGlib-1.0',
|
|
'Gio-2.0',
|
|
'GObject-2.0',
|
|
'GUsb-1.0',
|
|
],
|
|
install : true
|
|
)
|
|
endif
|
|
|
|
if get_option('enable-tests')
|
|
testdatadir = join_paths(meson.current_source_dir(), 'tests')
|
|
cargs += '-DTESTDATADIR="' + testdatadir + '"'
|
|
e = executable(
|
|
'dfu-self-test',
|
|
sources : [
|
|
'dfu-self-test.c'
|
|
],
|
|
include_directories : [
|
|
include_directories('..'),
|
|
],
|
|
dependencies : [
|
|
appstream_glib,
|
|
gio,
|
|
gusb,
|
|
libm,
|
|
],
|
|
link_with : dfu,
|
|
c_args : cargs
|
|
)
|
|
test('dfu-self-test', e)
|
|
endif
|