xref: /openbmc/phosphor-hwmon/meson.build (revision 9c405345)
1project(
2    'phosphor-hwmon',
3    'cpp',
4    default_options: [
5        'warning_level=3',
6        'werror=true',
7        'cpp_std=c++17'
8    ],
9    license: 'Apache-2.0',
10    version: '1.0',
11)
12
13fmt = dependency('fmt')
14
15conf = configuration_data()
16conf.set_quoted('BUSNAME_PREFIX', get_option('busname-prefix'))
17conf.set_quoted('SENSOR_ROOT', get_option('sensor-root'))
18conf.set10('NEGATIVE_ERRNO_ON_FAIL', get_option('negative-errno-on-fail'))
19conf.set10('UPDATE_FUNCTIONAL_ON_FAIL', get_option('update-functional-on-fail'))
20
21sysfs_headers = include_directories('.')
22
23sysfs_deps = [
24    fmt,
25]
26
27sysfs_lib = static_library(
28    'sysfs',
29    'sysfs.cpp',
30    include_directories: sysfs_headers,
31    dependencies: sysfs_deps)
32
33sysfs_dep = declare_dependency(
34    dependencies: sysfs_deps,
35    include_directories: sysfs_headers,
36    link_with: sysfs_lib)
37
38hwmon_headers = include_directories('.')
39
40hwmon_deps = [
41    fmt,
42    dependency('gpioplus'),
43    dependency('phosphor-dbus-interfaces'),
44    dependency('phosphor-logging'),
45    dependency('sdbusplus'),
46    dependency('sdeventplus'),
47    dependency('stdplus'),
48    dependency('threads'),
49    sysfs_dep,
50]
51
52hwmon_lib = static_library(
53    'hwmon',
54    'average.cpp',
55    configure_file(output: 'config.h', configuration: conf),
56    'env.cpp',
57    'fan_pwm.cpp',
58    'fan_speed.cpp',
59    'gpio_handle.cpp',
60    'hwmon.cpp',
61    'hwmonio.cpp',
62    'mainloop.cpp',
63    'sensor.cpp',
64    'sensorset.cpp',
65    dependencies: hwmon_deps,
66    include_directories: hwmon_headers)
67
68hwmon_dep = declare_dependency(
69    dependencies: hwmon_deps,
70    include_directories: hwmon_headers,
71    link_with: hwmon_lib)
72
73# CLI11 might not have a pkg-config. It is header only so just make
74# sure we can access the needed symbols from the header.
75cli11_dep = dependency('cli11', required: false)
76has_cli11 = meson.get_compiler('cpp').has_header_symbol(
77    'CLI/CLI.hpp',
78    'CLI::App',
79    dependencies: cli11_dep,
80    required: false)
81if not has_cli11
82    cli11_proj = subproject('cli11', required: false)
83    assert(cli11_proj.found(), 'CLI11 is required')
84    cli11_dep = cli11_proj.get_variable('CLI11_dep')
85endif
86
87executable(
88    'phosphor-hwmon-readd',
89    'readd.cpp',
90    dependencies: [
91        cli11_dep,
92        hwmon_dep,
93    ],
94    install: true)
95
96systemd_system_unit_dir = dependency('systemd').get_pkgconfig_variable(
97    'systemdsystemunitdir',
98    define_variable: ['prefix', get_option('prefix')])
99udev_dir = dependency('udev').get_pkgconfig_variable(
100    'udev_dir',
101    define_variable: ['prefix', get_option('prefix')])
102
103install_data(
104    'xyz.openbmc_project.Hwmon@.service',
105    install_dir: systemd_system_unit_dir
106)
107
108install_data(
109    'phosphor-hwmon.conf',
110    install_dir: get_option('sysconfdir') / 'dbus-1/system.d'
111)
112
113install_data(
114    ['70-hwmon.rules', '70-iio.rules'],
115    install_dir: udev_dir / 'rules.d'
116)
117
118install_data(
119    'start_hwmon.sh',
120    install_dir: get_option('bindir'),
121    install_mode: 'rwxr-xr-x'
122)
123
124subdir('msl')
125if not get_option('tests').disabled()
126  subdir('test')
127endif
128subdir('tools')
129