xref: /openbmc/sdbusplus/meson.build (revision da8574d5888b2c1622f5482a47adc7a12ffa0d0e)
1dd6efd17SPatrick Williamsproject(
2dd6efd17SPatrick Williams    'sdbusplus',
3dd6efd17SPatrick Williams    'cpp',
4dd6efd17SPatrick Williams    'c',
598d71080SPatrick Williams    default_options: [
6feb48472SPatrick Williams        'buildtype=debugoptimized',
7798848deSPatrick Williams        'cpp_std=c++23',
8601d975bSPatrick Williams        'warning_level=3',
998d71080SPatrick Williams        'werror=true',
10f05b4ca2SWilliam A. Kennington III        'tests=' + (meson.is_subproject() ? 'disabled' : 'auto'),
11f05b4ca2SWilliam A. Kennington III        'examples=' + (meson.is_subproject() ? 'disabled' : 'auto'),
1298d71080SPatrick Williams    ],
1398d71080SPatrick Williams    version: '1.0.0',
14798848deSPatrick Williams    meson_version: '>=1.1.1',
1598d71080SPatrick Williams)
16*da8574d5SEd Tanouscxx = meson.get_compiler('cpp')
17*da8574d5SEd Tanousif (cxx.get_id() == 'clang')
18*da8574d5SEd Tanous    add_project_arguments(['-Wno-c++26-extensions'], language: 'cpp')
19*da8574d5SEd Tanousendif
2098d71080SPatrick Williams
2198d71080SPatrick Williamslibsystemd_pkg = dependency('libsystemd')
2214c4797cSPatrick Williamsnlohmann_json_dep = dependency('nlohmann_json', include_type: 'system')
2322a03e31SManojkiran Eda
2422a03e31SManojkiran Edapython = import('python')
25dd6efd17SPatrick Williamspython_bin = python.find_installation(
26dd6efd17SPatrick Williams    'python3',
27dd6efd17SPatrick Williams    modules: ['inflection', 'yaml', 'mako'],
28dd6efd17SPatrick Williams)
2922a03e31SManojkiran Eda
3022a03e31SManojkiran Edaif not python_bin.found()
3122a03e31SManojkiran Eda    error('No valid python3 installation found')
3222a03e31SManojkiran Edaendif
3322a03e31SManojkiran Eda
347f664254SPatrick Williamsroot_inc = include_directories('include')
3598d71080SPatrick Williams
3698d71080SPatrick Williamslibsdbusplus_src = files(
3774187667SPatrick Williams    'src/async/context.cpp',
382a12ae12SJagpal Singh Gill    'src/async/fdio.cpp',
39dd6efd17SPatrick Williams    'src/async/match.cpp',
4032ffb03dSPatrick Williams    'src/bus.cpp',
41fc73b395SWillam A. Kennington III    'src/bus/match.cpp',
42d2b00440SPatrick Williams    'src/event.cpp',
4374187667SPatrick Williams    'src/exception.cpp',
44226bc42aSWilliam A. Kennington III    'src/message/native_types.cpp',
457f664254SPatrick Williams    'src/sdbus.cpp',
4632ffb03dSPatrick Williams    'src/server/interface.cpp',
477f664254SPatrick Williams    'src/server/transaction.cpp',
4898d71080SPatrick Williams)
4998d71080SPatrick Williams
50f69a8b7aSWilliam A. Kennington IIIlibsdbusplus = library(
5198d71080SPatrick Williams    'sdbusplus',
5298d71080SPatrick Williams    libsdbusplus_src,
537f664254SPatrick Williams    include_directories: root_inc,
54dd6efd17SPatrick Williams    dependencies: [libsystemd_pkg, nlohmann_json_dep],
5598d71080SPatrick Williams    version: meson.project_version(),
5698d71080SPatrick Williams    install: true,
5798d71080SPatrick Williams)
5898d71080SPatrick Williams
59270f242cSWilliam A. Kennington IIIboost_compile_args = [
60270f242cSWilliam A. Kennington III    '-DBOOST_ASIO_DISABLE_THREADS',
61270f242cSWilliam A. Kennington III    '-DBOOST_ALL_NO_LIB',
62270f242cSWilliam A. Kennington III    '-DBOOST_SYSTEM_NO_DEPRECATED',
63270f242cSWilliam A. Kennington III    '-DBOOST_ERROR_CODE_HEADER_ONLY',
64270f242cSWilliam A. Kennington III    '-DBOOST_COROUTINES_NO_DEPRECATION_WARNING',
65270f242cSWilliam A. Kennington III]
66270f242cSWilliam A. Kennington III
67270f242cSWilliam A. Kennington IIIboost_dep = declare_dependency(
68270f242cSWilliam A. Kennington III    dependencies: dependency('boost', required: false),
69dd6efd17SPatrick Williams    compile_args: boost_compile_args,
70dd6efd17SPatrick Williams)
71270f242cSWilliam A. Kennington III
72d0285b92SPatrick Williamssdbusplus_dep = declare_dependency(
73d0285b92SPatrick Williams    include_directories: root_inc,
74d0285b92SPatrick Williams    link_with: libsdbusplus,
75dd6efd17SPatrick Williams    dependencies: [boost_dep, libsystemd_pkg, nlohmann_json_dep],
76d0285b92SPatrick Williams)
77d0285b92SPatrick Williams
7874eea519SPatrick Williamsshould_generate_cpp = true
7974eea519SPatrick Williamsshould_generate_markdown = false
8074eea519SPatrick Williamsshould_generate_registry = false
8174eea519SPatrick Williams
82ad145e09SPatrick Williamssubdir('tools')
83ad145e09SPatrick Williams
84892a23a9SPatrick Williamsif get_option('examples').allowed()
85ad145e09SPatrick Williams    subdir('example')
865e893b9dSWilliam A. Kennington IIIendif
87892a23a9SPatrick Williamsif get_option('tests').allowed()
88ad145e09SPatrick Williams    subdir('test')
895e893b9dSWilliam A. Kennington IIIendif
90ad145e09SPatrick Williams
9198d71080SPatrick Williamsinstall_subdir(
927f664254SPatrick Williams    'include/sdbusplus',
9398d71080SPatrick Williams    install_dir: get_option('includedir'),
9498d71080SPatrick Williams    strip_directory: false,
9598d71080SPatrick Williams)
9698d71080SPatrick Williams
9798d71080SPatrick Williamsimport('pkgconfig').generate(
98fe0edaa5SPatrick Williams    libsdbusplus,
9998d71080SPatrick Williams    name: meson.project_name(),
10098d71080SPatrick Williams    version: meson.project_version(),
101fa3137a7SPatrick Williams    requires: libsystemd_pkg,
102270f242cSWilliam A. Kennington III    extra_cflags: boost_compile_args,
10398d71080SPatrick Williams    description: 'C++ bindings for sdbus',
10498d71080SPatrick Williams)
105