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