1project(
2    'phosphor-health-monitor',
3    'cpp',
4    version: '1.0',
5    default_options: [
6        'cpp_std=c++20',
7    ],
8    meson_version: '>=0.57.0',
9)
10
11cpp = meson.get_compiler('cpp')
12
13if cpp.has_header('nlohmann/json.hpp')
14    nlohmann_json = declare_dependency()
15else
16    subproject('nlohmann-json')
17    nlohmann_json = declare_dependency(
18        include_directories: [
19            'subprojects/nlohmann-json/single_include',
20            'subprojects/nlohmann-json/single_include/nlohmann',
21        ]
22    )
23endif
24
25executable(
26    'health-monitor',
27    [
28        'healthMonitor.cpp',
29    ],
30    dependencies: [
31        dependency(
32            'phosphor-dbus-interfaces',
33            fallback: [
34                'phosphor-dbus-interfaces',
35                'phosphor_dbus_interfaces_dep',
36            ],
37        ),
38        dependency(
39            'phosphor-logging',
40            fallback: [ 'phosphor-logging', 'phosphor_logging_dep' ],
41        ),
42        dependency(
43            'sdbusplus',
44            fallback: [ 'sdbusplus', 'sdbusplus_dep' ],
45        ),
46        dependency(
47            'sdeventplus',
48            fallback: [ 'sdeventplus', 'sdeventplus_dep' ],
49        ),
50        nlohmann_json,
51    ],
52    install: true,
53    install_dir: get_option('bindir')
54)
55
56install_data(sources : 'bmc_health_config.json', install_dir : '/etc/healthMon')
57
58conf_data = configuration_data()
59conf_data.set('HEALTH_CONFIG_FILE', '"/etc/healthMon/bmc_health_config.json"')
60conf_data.set('HEALTH_BUS_NAME', '"xyz.openbmc_project.HealthMon"')
61conf_data.set('HEALTH_SENSOR_PATH', '"/xyz/openbmc_project/sensors/utilization/"')
62conf_data.set('SENSOR_OBJPATH', '"/xyz/openbmc_project/sensors"')
63
64configure_file(output : 'config.h',
65               configuration : conf_data)
66
67systemd = dependency('systemd')
68conf_data = configuration_data()
69conf_data.set('bindir', get_option('prefix') / get_option('bindir'))
70configure_file(
71  input: 'phosphor-health-monitor.service.in',
72  output: 'phosphor-health-monitor.service',
73  configuration: conf_data,
74  install: true,
75  install_dir: systemd.get_pkgconfig_variable('systemdsystemunitdir'))
76