fwupd/libdfu/meson.build
Richard Hughes cef8042edc libdfu: Add DfuPatch
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.
2017-07-31 11:58:21 +01:00

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