blob: e962d95c212cbee2fe25f7c0152b2b7eed9d2812 [file] [log] [blame]
Patrick Williams3c3319a2025-02-01 08:36:35 -05001project(
2 'phosphor-settingsd',
3 'cpp',
4 version: '1.0',
5 meson_version: '>=1.1.1',
6 default_options: ['warning_level=3', 'werror=true', 'cpp_std=c++23'],
Jagpal Singh Gill4d28bcd2023-04-23 23:34:05 -07007)
8cpp = meson.get_compiler('cpp')
9
10python_prog = find_program('python3', native: true)
11
12# Define dependencies
Patrick Williams3c3319a2025-02-01 08:36:35 -050013sdbusplus_dep = dependency('sdbusplus', required: false)
Jagpal Singh Gill4d28bcd2023-04-23 23:34:05 -070014phosphor_dbus_interfaces_dep = dependency('phosphor-dbus-interfaces')
15phosphor_logging_dep = dependency('phosphor-logging')
16cereal_dep = dependency('cereal', required: false)
17has_cereal = cpp.has_header_symbol(
18 'cereal/cereal.hpp',
19 'cereal::specialize',
20 dependencies: cereal_dep,
Patrick Williams3c3319a2025-02-01 08:36:35 -050021 required: false,
22)
Jagpal Singh Gill4d28bcd2023-04-23 23:34:05 -070023if not has_cereal
24 cereal_opts = import('cmake').subproject_options()
Patrick Williams3c3319a2025-02-01 08:36:35 -050025 cereal_opts.add_cmake_defines(
26 {'BUILD_TESTS': 'OFF', 'SKIP_PERFORMANCE_COMPARISON': 'ON'},
27 )
Jagpal Singh Gill4d28bcd2023-04-23 23:34:05 -070028 cereal_proj = import('cmake').subproject(
29 'cereal',
30 options: cereal_opts,
Patrick Williams3c3319a2025-02-01 08:36:35 -050031 required: false,
32 )
Jagpal Singh Gill4d28bcd2023-04-23 23:34:05 -070033 assert(cereal_proj.found(), 'cereal is required')
34 cereal_dep = cereal_proj.dependency('cereal')
35endif
36
37# Generate settings_manager.hpp
Konstantin Aladyshevef9bd932024-04-04 17:17:52 +030038settings_gen_env = {}
39if not sdbusplus_dep.found()
40 sdbusplus_proj = subproject('sdbusplus')
41 sdbusplus_dep = sdbusplus_proj.get_variable('sdbusplus_dep')
Patrick Williams3c3319a2025-02-01 08:36:35 -050042 settings_gen_env = {
43 'PYTHONPATH': meson.current_source_dir() / 'subprojects' / 'sdbusplus' / 'tools',
44 }
Konstantin Aladyshevef9bd932024-04-04 17:17:52 +030045endif
46
Jagpal Singh Gill4d28bcd2023-04-23 23:34:05 -070047settings_gen = custom_target(
48 'settings_manager.hpp'.underscorify(),
49 input: [
50 'settings.py',
51 'settings_manager.mako.hpp',
52 get_option('settings_yaml'),
53 ],
54 output: 'settings_manager.hpp',
Patrick Williams3c3319a2025-02-01 08:36:35 -050055 command: [python_prog, '@INPUT0@', '-i', '@INPUT2@'],
Konstantin Aladyshevef9bd932024-04-04 17:17:52 +030056 env: settings_gen_env,
Jagpal Singh Gill4d28bcd2023-04-23 23:34:05 -070057)
58
59# Generate daemon
Patrick Williams3c3319a2025-02-01 08:36:35 -050060settings_manager_sources = [settings_gen]
Jagpal Singh Gill4d28bcd2023-04-23 23:34:05 -070061
62settings_manager_deps = [
Patrick Williams3c3319a2025-02-01 08:36:35 -050063 cereal_dep,
64 sdbusplus_dep,
65 phosphor_dbus_interfaces_dep,
66 phosphor_logging_dep,
Jagpal Singh Gill4d28bcd2023-04-23 23:34:05 -070067]
68
69executable(
70 'phosphor-settings-manager',
71 'settings_main.cpp',
72 settings_manager_sources,
Patrick Williams3c3319a2025-02-01 08:36:35 -050073 dependencies: [settings_manager_deps],
Jagpal Singh Gill4d28bcd2023-04-23 23:34:05 -070074 install: true,
75)