xref: /openbmc/sdbusplus/meson.build (revision 97c31c82)
1project('sdbusplus', 'cpp', 'c',
2    default_options: [
3      'buildtype=debugoptimized',
4      'cpp_std=c++20',
5      'warning_level=3',
6      'werror=true',
7      'tests=' + (meson.is_subproject() ? 'disabled' : 'auto'),
8      'examples=' + (meson.is_subproject() ? 'disabled' : 'auto'),
9    ],
10    version: '1.0.0',
11    meson_version: '>=0.57.0',
12)
13
14libsystemd_pkg = dependency('libsystemd')
15
16python = import('python')
17python_bin = python.find_installation('python3', modules:['inflection', 'yaml', 'mako'])
18
19if not python_bin.found()
20  error('No valid python3 installation found')
21endif
22
23
24root_inc = include_directories('include')
25
26libsdbusplus_src = files(
27    'src/async/context.cpp',
28    'src/async/match.cpp',
29    'src/bus.cpp',
30    'src/event.cpp',
31    'src/exception.cpp',
32    'src/message/native_types.cpp',
33    'src/sdbus.cpp',
34    'src/server/interface.cpp',
35    'src/server/transaction.cpp',
36)
37
38libsdbusplus = library(
39    'sdbusplus',
40    libsdbusplus_src,
41    include_directories: root_inc,
42    dependencies: libsystemd_pkg,
43    version: meson.project_version(),
44    install: true,
45)
46
47boost_compile_args = [
48    '-DBOOST_ASIO_DISABLE_THREADS',
49    '-DBOOST_ALL_NO_LIB',
50    '-DBOOST_SYSTEM_NO_DEPRECATED',
51    '-DBOOST_ERROR_CODE_HEADER_ONLY',
52    '-DBOOST_COROUTINES_NO_DEPRECATION_WARNING',
53]
54
55boost_dep = declare_dependency(
56    dependencies: dependency('boost', required: false),
57    compile_args: boost_compile_args)
58
59sdbusplus_dep = declare_dependency(
60    include_directories: root_inc,
61    link_with: libsdbusplus,
62    dependencies: [ libsystemd_pkg, boost_dep ],
63)
64
65subdir('tools')
66
67if not get_option('examples').disabled()
68  subdir('example')
69endif
70if not get_option('tests').disabled()
71  subdir('test')
72endif
73
74install_subdir(
75    'include/sdbusplus',
76    install_dir: get_option('includedir'),
77    strip_directory: false,
78)
79
80import('pkgconfig').generate(
81    libsdbusplus,
82    name: meson.project_name(),
83    version: meson.project_version(),
84    requires: libsystemd_pkg,
85    extra_cflags: boost_compile_args,
86    description: 'C++ bindings for sdbus',
87)
88