1project(
2    'phosphor-virtual-sensor',
3    'cpp',
4    version: '1.0',
5    default_options: [
6        'buildtype=debugoptimized',
7        'cpp_std=c++20',
8        'warning_level=3',
9        'werror=true',
10    ],
11    meson_version: '>=0.57.0',
12)
13
14cpp = meson.get_compiler('cpp')
15if cpp.has_header('exprtk.hpp')
16    exprtk = declare_dependency()
17else
18    subproject('exprtk', required: false)
19    exprtk = declare_dependency(
20        include_directories: 'subprojects/exprtk'
21    )
22endif
23
24if cpp.has_header('nlohmann/json.hpp')
25    nlohmann_json = declare_dependency()
26else
27    subproject('nlohmann-json')
28    nlohmann_json = declare_dependency(
29        include_directories: [
30            'subprojects/nlohmann-json/single_include',
31            'subprojects/nlohmann-json/single_include/nlohmann',
32        ]
33    )
34endif
35
36executable(
37    'virtual-sensor',
38    [
39        'virtualSensor.cpp',
40    ],
41    dependencies: [
42        dependency('phosphor-dbus-interfaces'),
43        dependency('phosphor-logging'),
44        dependency('sdbusplus'),
45        dependency('sdeventplus'),
46        exprtk,
47        nlohmann_json,
48    ],
49    install: true,
50    install_dir: get_option('bindir')
51)
52
53packagedir = join_paths(
54    get_option('prefix'),
55    get_option('datadir'),
56    meson.project_name(),
57)
58
59configfile = 'virtual_sensor_config.json'
60confpath = '"' + join_paths(
61    packagedir,
62    configfile,
63) + '"'
64
65install_data(sources : configfile, install_dir : packagedir)
66
67conf_data = configuration_data()
68conf_data.set('VIRTUAL_SENSOR_CONFIG_FILE', confpath)
69
70configure_file(output : 'config.hpp',
71               configuration : conf_data)
72
73systemd = dependency('systemd')
74conf_data = configuration_data()
75conf_data.set('bindir', get_option('prefix') / get_option('bindir'))
76configure_file(
77  input: 'phosphor-virtual-sensor.service.in',
78  output: 'phosphor-virtual-sensor.service',
79  configuration: conf_data,
80  install: true,
81  install_dir: systemd.get_variable(pkgconfig: 'systemdsystemunitdir'))
82