xref: /openbmc/sdbusplus/meson.build (revision 74187667)
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/bus.cpp',
29    'src/exception.cpp',
30    'src/message/native_types.cpp',
31    'src/sdbus.cpp',
32    'src/server/interface.cpp',
33    'src/server/transaction.cpp',
34)
35
36libsdbusplus = library(
37    'sdbusplus',
38    libsdbusplus_src,
39    include_directories: root_inc,
40    dependencies: libsystemd_pkg,
41    version: meson.project_version(),
42    install: true,
43)
44
45boost_compile_args = [
46    '-DBOOST_ASIO_DISABLE_THREADS',
47    '-DBOOST_ALL_NO_LIB',
48    '-DBOOST_SYSTEM_NO_DEPRECATED',
49    '-DBOOST_ERROR_CODE_HEADER_ONLY',
50    '-DBOOST_COROUTINES_NO_DEPRECATION_WARNING',
51]
52
53boost_dep = declare_dependency(
54    dependencies: dependency('boost', required: false),
55    compile_args: boost_compile_args)
56
57sdbusplus_dep = declare_dependency(
58    include_directories: root_inc,
59    link_with: libsdbusplus,
60    dependencies: [ libsystemd_pkg, boost_dep ],
61)
62
63subdir('tools')
64
65if not get_option('examples').disabled()
66  subdir('example')
67endif
68if not get_option('tests').disabled()
69  subdir('test')
70endif
71
72install_subdir(
73    'include/sdbusplus',
74    install_dir: get_option('includedir'),
75    strip_directory: false,
76)
77
78import('pkgconfig').generate(
79    libsdbusplus,
80    name: meson.project_name(),
81    version: meson.project_version(),
82    requires: libsystemd_pkg,
83    extra_cflags: boost_compile_args,
84    description: 'C++ bindings for sdbus',
85)
86