Skip to content

Commit fe39790

Browse files
authored
Merge pull request #95 from mgrzeschik/feature/meson
Use meson build system
2 parents 2e374d5 + 2a3a4ba commit fe39790

File tree

6 files changed

+182
-0
lines changed

6 files changed

+182
-0
lines changed

examples/meson.build

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
executable('show-gadgets', 'show-gadgets.c', dependencies: [ libusbgx_dep ], install: true)
2+
executable('gadget-acm-ecm', 'gadget-acm-ecm.c', dependencies: [ libusbgx_dep ], install: true)
3+
executable('gadget-vid-pid-remove', 'gadget-vid-pid-remove.c', dependencies: [ libusbgx_dep ], install: true)
4+
executable('gadget-ffs', 'gadget-ffs.c', dependencies: [ libusbgx_dep ], install: true)
5+
executable('gadget-export', 'gadget-export.c', dependencies: [ libusbgx_dep ], install: true)
6+
executable('gadget-import', 'gadget-import.c', dependencies: [ libusbgx_dep ], install: true)
7+
executable('gadget-rndis-os-desc', 'gadget-rndis-os-desc.c', dependencies: [ libusbgx_dep ], install: true)
8+
executable('gadget-printer', 'gadget-printer.c', dependencies: [ libusbgx_dep ], install: true)
9+
executable('gadget-ms', 'gadget-ms.c', dependencies: [ libusbgx_dep ], install: true)
10+
executable('gadget-midi', 'gadget-midi.c', dependencies: [ libusbgx_dep ], install: true)
11+
executable('gadget-hid', 'gadget-hid.c', dependencies: [ libusbgx_dep ], install: true)
12+
executable('gadget-uac2', 'gadget-uac2.c', dependencies: [ libusbgx_dep ], install: true)
13+
executable('gadget-uvc', 'gadget-uvc.c', dependencies: [ libusbgx_dep ], install: true)
14+
executable('show-udcs', 'show-udcs.c', dependencies: [ libusbgx_dep ], install: true)

install-headers.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#!/bin/sh
2+
3+
install -d "${DESTDIR}/${MESON_INSTALL_PREFIX}/include/usbg/function"
4+
install -m 0644 "${MESON_BUILD_ROOT}/usbg_version.h" "${DESTDIR}/${MESON_INSTALL_PREFIX}/include/usbg"
5+
install -m 0644 "${MESON_SOURCE_ROOT}/include/usbg/usbg.h" "${DESTDIR}/${MESON_INSTALL_PREFIX}/include/usbg"
6+
install -m 0644 "${MESON_SOURCE_ROOT}/include/usbg/function/"* "${DESTDIR}/${MESON_INSTALL_PREFIX}/include/usbg/function"

meson.build

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
project(
2+
'libusbgx',
3+
[ 'c', 'cpp' ],
4+
version: '0.2.0',
5+
license: 'LGPL2.1',
6+
default_options: [
7+
'warning_level=1',
8+
'werror=true',
9+
]
10+
)
11+
12+
add_project_arguments([ '-D_GNU_SOURCE' ], language: 'c')
13+
14+
cc = meson.get_compiler('c')
15+
16+
config = configuration_data()
17+
18+
version = meson.project_version()
19+
version_hex = run_command('sh', '-c', 'printf "0x%02x%02x%04x" $(printf "%s" "@0@" | sed -e "s/\./ /g")'.format(version), check: true).stdout().strip()
20+
config.set('USBG_VERSION_HEX', version_hex)
21+
22+
dependencies = []
23+
sources = []
24+
c_flags = []
25+
26+
libconfig = dependency('libconfig', required: get_option('gadget-schemes'))
27+
libdl = cc.find_library('dl', required: get_option('tests'))
28+
cmocka = dependency('cmocka', required: get_option('tests'))
29+
doxygen = find_program('doxygen', required: get_option('doxygen'))
30+
31+
if libconfig.found()
32+
c_flags = ['-DHAS_GADGET_SCHEMES']
33+
dependencies += libconfig
34+
endif
35+
36+
inc = include_directories('include', '.')
37+
38+
subdir('src')
39+
40+
configure_file(
41+
input: 'include/usbg/usbg_version.h.in',
42+
output: 'usbg_version.h',
43+
configuration: config
44+
)
45+
meson.add_install_script('install-headers.sh')
46+
47+
libusbgx = library(
48+
'usbgx',
49+
sources,
50+
version: '2.0.0',
51+
dependencies: dependencies,
52+
include_directories: inc,
53+
c_args: c_flags,
54+
install: true,
55+
)
56+
57+
# For subproject:
58+
libusbgx_dep = declare_dependency(
59+
include_directories: inc,
60+
link_with: libusbgx,
61+
)
62+
63+
if get_option('examples')
64+
subdir('examples')
65+
endif
66+
67+
if cmocka.found()
68+
subdir('tests')
69+
endif
70+
71+
if doxygen.found()
72+
cfg = configuration_data()
73+
if cmocka.found()
74+
cfg.set('BUILD_TESTS_TRUE', '')
75+
else
76+
cfg.set('BUILD_TESTS_TRUE', 'X')
77+
endif
78+
configure_file(
79+
input: 'doxygen.cfg.in',
80+
output: 'doxygen.cfg',
81+
configuration: cfg
82+
)
83+
84+
env = environment()
85+
env.set('PROJECT', meson.project_name())
86+
env.set('VERSION', version)
87+
env.set('DOCDIR', meson.current_build_dir() + '/doc')
88+
env.set('SRCDIR', meson.current_source_dir())
89+
run_command(doxygen,
90+
meson.current_build_dir() + '/doxygen.cfg',
91+
env: env,
92+
check: true,
93+
)
94+
endif
95+
96+
pkgconfig = import('pkgconfig')
97+
pkgconfig.generate(
98+
libraries: libusbgx,
99+
version: meson.project_version(),
100+
filebase: meson.project_name(),
101+
name: meson.project_name(),
102+
description: 'USB gadget-configfs library',
103+
)
104+
105+
# TODO: install doxygen?
106+
# TODO: install cmake files

meson_options.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
option('examples', type: 'boolean', value: false, description: 'Build examples')
2+
option('tests', type: 'feature', value: 'auto', description: 'Build unit tests')
3+
option('gadget-schemes', type: 'feature', value: 'auto', description: 'Enable gadget schemes')
4+
option('doxygen', type: 'feature', value: 'auto', description: 'Build documentation')

src/meson.build

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
sources += files(
2+
'usbg.c',
3+
'usbg_error.c',
4+
'usbg_common.c',
5+
'function/ether.c',
6+
'function/ffs.c',
7+
'function/midi.c',
8+
'function/ms.c',
9+
'function/phonet.c',
10+
'function/serial.c',
11+
'function/loopback.c',
12+
'function/hid.c',
13+
'function/uac2.c',
14+
'function/uvc.c',
15+
'function/printer.c',
16+
'function/9pfs.c',
17+
)
18+
19+
if libconfig.found()
20+
sources += files(
21+
'usbg_schemes_libconfig.c',
22+
'usbg_common_libconfig.c'
23+
)
24+
else
25+
sources += files('usbg_schemes_none.c')
26+
endif

tests/meson.build

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
test_exe = executable('test_exe',
2+
[
3+
'test.c',
4+
'usbg-test.c',
5+
'usbg-io-wrappers.c',
6+
],
7+
dependencies: [
8+
libusbgx_dep,
9+
cmocka,
10+
],
11+
)
12+
13+
header_checker = executable('header_checker',
14+
[
15+
'header_checker.cpp',
16+
],
17+
dependencies: [
18+
libusbgx_dep,
19+
cmocka,
20+
],
21+
)
22+
23+
# TODO: also run with --generate-config or --use-config
24+
test('test_exe', test_exe)
25+
26+
test('header_checker', header_checker)

0 commit comments

Comments
 (0)