blob: 64e887f70990783e708d8c7cff72e49d0bef211d [file] [log] [blame]
Patrick Williamsdd6efd12025-02-01 08:36:20 -05001project(
2 'sdbusplus',
3 'cpp',
4 'c',
Patrick Williams98d71082020-05-15 18:55:16 -05005 default_options: [
Patrick Williamsdd6efd12025-02-01 08:36:20 -05006 'buildtype=debugoptimized',
7 'cpp_std=c++23',
8 'warning_level=3',
9 'werror=true',
10 'tests=' + (meson.is_subproject() ? 'disabled' : 'auto'),
11 'examples=' + (meson.is_subproject() ? 'disabled' : 'auto'),
Patrick Williams98d71082020-05-15 18:55:16 -050012 ],
13 version: '1.0.0',
Patrick Williams798848d2023-07-12 18:33:46 -050014 meson_version: '>=1.1.1',
Patrick Williams98d71082020-05-15 18:55:16 -050015)
Ed Tanousda8574d2025-03-03 14:29:59 -080016cxx = meson.get_compiler('cpp')
17if (cxx.get_id() == 'clang')
18 add_project_arguments(['-Wno-c++26-extensions'], language: 'cpp')
19endif
Patrick Williams98d71082020-05-15 18:55:16 -050020
21libsystemd_pkg = dependency('libsystemd')
Patrick Williams14c47972024-09-24 22:10:38 -040022nlohmann_json_dep = dependency('nlohmann_json', include_type: 'system')
Manojkiran Eda22a03e32022-06-17 09:14:41 +053023
24python = import('python')
Patrick Williamsdd6efd12025-02-01 08:36:20 -050025python_bin = python.find_installation(
26 'python3',
27 modules: ['inflection', 'yaml', 'mako'],
28)
Manojkiran Eda22a03e32022-06-17 09:14:41 +053029
30if not python_bin.found()
Patrick Williamsdd6efd12025-02-01 08:36:20 -050031 error('No valid python3 installation found')
Manojkiran Eda22a03e32022-06-17 09:14:41 +053032endif
33
Patrick Williams7f664252020-06-04 10:20:56 -050034root_inc = include_directories('include')
Patrick Williams98d71082020-05-15 18:55:16 -050035
36libsdbusplus_src = files(
Patrick Williams74187662022-08-26 19:28:24 -050037 'src/async/context.cpp',
Jagpal Singh Gill2a12ae12024-10-23 11:20:25 -070038 'src/async/fdio.cpp',
Patrick Williamsdd6efd12025-02-01 08:36:20 -050039 'src/async/match.cpp',
Jagpal Singh Gillbd04c3b2025-07-07 16:34:20 -070040 'src/async/mutex.cpp',
Patrick Williams32ffb032020-10-12 12:17:48 -050041 'src/bus.cpp',
Willam A. Kennington IIIfc73b392022-09-07 15:00:21 -070042 'src/bus/match.cpp',
Patrick Williamsd2b00442022-09-16 08:28:07 -050043 'src/event.cpp',
Patrick Williams74187662022-08-26 19:28:24 -050044 'src/exception.cpp',
William A. Kennington III226bc422021-05-05 17:08:36 -070045 'src/message/native_types.cpp',
Patrick Williams7f664252020-06-04 10:20:56 -050046 'src/sdbus.cpp',
Patrick Williams32ffb032020-10-12 12:17:48 -050047 'src/server/interface.cpp',
Patrick Williams7f664252020-06-04 10:20:56 -050048 'src/server/transaction.cpp',
Patrick Williams98d71082020-05-15 18:55:16 -050049)
50
William A. Kennington IIIf69a8b72020-05-28 12:59:40 -070051libsdbusplus = library(
Patrick Williams98d71082020-05-15 18:55:16 -050052 'sdbusplus',
53 libsdbusplus_src,
Patrick Williams7f664252020-06-04 10:20:56 -050054 include_directories: root_inc,
Patrick Williamsdd6efd12025-02-01 08:36:20 -050055 dependencies: [libsystemd_pkg, nlohmann_json_dep],
Patrick Williams98d71082020-05-15 18:55:16 -050056 version: meson.project_version(),
57 install: true,
58)
59
William A. Kennington III270f2422021-06-04 16:07:43 -070060boost_compile_args = [
61 '-DBOOST_ASIO_DISABLE_THREADS',
62 '-DBOOST_ALL_NO_LIB',
63 '-DBOOST_SYSTEM_NO_DEPRECATED',
64 '-DBOOST_ERROR_CODE_HEADER_ONLY',
65 '-DBOOST_COROUTINES_NO_DEPRECATION_WARNING',
66]
67
68boost_dep = declare_dependency(
69 dependencies: dependency('boost', required: false),
Patrick Williamsdd6efd12025-02-01 08:36:20 -050070 compile_args: boost_compile_args,
71)
William A. Kennington III270f2422021-06-04 16:07:43 -070072
Patrick Williamsd0285b92020-06-01 09:43:47 -050073sdbusplus_dep = declare_dependency(
74 include_directories: root_inc,
75 link_with: libsdbusplus,
Patrick Williamsdd6efd12025-02-01 08:36:20 -050076 dependencies: [boost_dep, libsystemd_pkg, nlohmann_json_dep],
Patrick Williamsd0285b92020-06-01 09:43:47 -050077)
78
Brad Bishop63190dd2025-07-29 17:14:40 -040079if meson.is_subproject()
80 sdbusplus_dep = sdbusplus_dep.as_system()
81endif
82
Patrick Williams74eea512025-01-03 10:03:49 -050083should_generate_cpp = true
84should_generate_markdown = false
85should_generate_registry = false
86
Patrick Williamsad145e02020-05-19 16:45:15 -050087subdir('tools')
88
Patrick Williams892a23a2025-01-30 17:47:12 -050089if get_option('examples').allowed()
Patrick Williamsdd6efd12025-02-01 08:36:20 -050090 subdir('example')
William A. Kennington III5e893b92020-06-04 02:47:29 -070091endif
Patrick Williams892a23a2025-01-30 17:47:12 -050092if get_option('tests').allowed()
Patrick Williamsdd6efd12025-02-01 08:36:20 -050093 subdir('test')
William A. Kennington III5e893b92020-06-04 02:47:29 -070094endif
Patrick Williamsad145e02020-05-19 16:45:15 -050095
Patrick Williams98d71082020-05-15 18:55:16 -050096install_subdir(
Patrick Williams7f664252020-06-04 10:20:56 -050097 'include/sdbusplus',
Patrick Williams98d71082020-05-15 18:55:16 -050098 install_dir: get_option('includedir'),
99 strip_directory: false,
Patrick Williams98d71082020-05-15 18:55:16 -0500100)
101
102import('pkgconfig').generate(
Patrick Williamsfe0edaa2021-04-15 13:30:16 -0500103 libsdbusplus,
Patrick Williams98d71082020-05-15 18:55:16 -0500104 name: meson.project_name(),
105 version: meson.project_version(),
Patrick Williamsfa3137a2020-05-28 14:49:15 -0500106 requires: libsystemd_pkg,
William A. Kennington III270f2422021-06-04 16:07:43 -0700107 extra_cflags: boost_compile_args,
Patrick Williams98d71082020-05-15 18:55:16 -0500108 description: 'C++ bindings for sdbus',
109)