blob: 55e7edbe8e31d7293c2c84cc666239036f1f11ca [file] [log] [blame]
Brad Bishop59061732019-10-07 15:48:37 -04001project(
2 'phosphor-hwmon',
3 'cpp',
Patrick Williamsa385d892025-02-01 08:37:40 -05004 default_options: ['warning_level=3', 'werror=true', 'cpp_std=c++23'],
Brad Bishop59061732019-10-07 15:48:37 -04005 license: 'Apache-2.0',
6 version: '1.0',
Patrick Williams64b90bf2023-07-12 11:15:51 -05007 meson_version: '>=1.1.1',
Brad Bishop59061732019-10-07 15:48:37 -04008)
9
Brad Bishop59061732019-10-07 15:48:37 -040010conf = configuration_data()
11conf.set_quoted('BUSNAME_PREFIX', get_option('busname-prefix'))
12conf.set_quoted('SENSOR_ROOT', get_option('sensor-root'))
13conf.set10('NEGATIVE_ERRNO_ON_FAIL', get_option('negative-errno-on-fail'))
14conf.set10('UPDATE_FUNCTIONAL_ON_FAIL', get_option('update-functional-on-fail'))
15
William A. Kennington IIIf9aff802021-05-05 12:06:24 -070016sysfs_headers = include_directories('.')
Brad Bishop59061732019-10-07 15:48:37 -040017
Patrick Williamsa385d892025-02-01 08:37:40 -050018sysfs_deps = [dependency('stdplus')]
Brad Bishop59061732019-10-07 15:48:37 -040019
William A. Kennington IIIf9aff802021-05-05 12:06:24 -070020sysfs_lib = static_library(
Brad Bishop59061732019-10-07 15:48:37 -040021 'sysfs',
22 'sysfs.cpp',
William A. Kennington IIIf9aff802021-05-05 12:06:24 -070023 include_directories: sysfs_headers,
Patrick Williams64129932024-02-13 21:10:17 -060024 dependencies: sysfs_deps,
25)
Brad Bishop59061732019-10-07 15:48:37 -040026
William A. Kennington IIIf9aff802021-05-05 12:06:24 -070027sysfs_dep = declare_dependency(
28 dependencies: sysfs_deps,
29 include_directories: sysfs_headers,
Patrick Williamsa385d892025-02-01 08:37:40 -050030 link_with: sysfs_lib,
31)
William A. Kennington IIIf9aff802021-05-05 12:06:24 -070032
33hwmon_headers = include_directories('.')
34
35hwmon_deps = [
William A. Kennington IIIf9aff802021-05-05 12:06:24 -070036 dependency('gpioplus'),
37 dependency('phosphor-dbus-interfaces'),
38 dependency('phosphor-logging'),
39 dependency('sdbusplus'),
40 dependency('sdeventplus'),
41 dependency('stdplus'),
Brandon Kim6d50c3e2019-08-09 15:38:53 -070042 dependency('threads'),
William A. Kennington IIIf9aff802021-05-05 12:06:24 -070043 sysfs_dep,
44]
45
46hwmon_lib = static_library(
47 'hwmon',
48 'average.cpp',
49 configure_file(output: 'config.h', configuration: conf),
Brad Bishop59061732019-10-07 15:48:37 -040050 'env.cpp',
William A. Kennington IIIf9aff802021-05-05 12:06:24 -070051 'fan_pwm.cpp',
Brad Bishop59061732019-10-07 15:48:37 -040052 'fan_speed.cpp',
53 'gpio_handle.cpp',
William A. Kennington IIIf9aff802021-05-05 12:06:24 -070054 'hwmon.cpp',
55 'hwmonio.cpp',
Brad Bishop59061732019-10-07 15:48:37 -040056 'mainloop.cpp',
William A. Kennington IIIf9aff802021-05-05 12:06:24 -070057 'sensor.cpp',
Brad Bishop59061732019-10-07 15:48:37 -040058 'sensorset.cpp',
William A. Kennington IIIf9aff802021-05-05 12:06:24 -070059 dependencies: hwmon_deps,
Patrick Williamsa385d892025-02-01 08:37:40 -050060 include_directories: hwmon_headers,
61)
William A. Kennington IIIf9aff802021-05-05 12:06:24 -070062
63hwmon_dep = declare_dependency(
64 dependencies: hwmon_deps,
65 include_directories: hwmon_headers,
Patrick Williamsa385d892025-02-01 08:37:40 -050066 link_with: hwmon_lib,
67)
Brad Bishop59061732019-10-07 15:48:37 -040068
William A. Kennington IIId3e87942021-05-05 12:26:53 -070069# CLI11 might not have a pkg-config. It is header only so just make
70# sure we can access the needed symbols from the header.
71cli11_dep = dependency('cli11', required: false)
72has_cli11 = meson.get_compiler('cpp').has_header_symbol(
73 'CLI/CLI.hpp',
74 'CLI::App',
75 dependencies: cli11_dep,
Patrick Williamsa385d892025-02-01 08:37:40 -050076 required: false,
77)
William A. Kennington IIId3e87942021-05-05 12:26:53 -070078if not has_cli11
79 cli11_proj = subproject('cli11', required: false)
80 assert(cli11_proj.found(), 'CLI11 is required')
81 cli11_dep = cli11_proj.get_variable('CLI11_dep')
82endif
83
Brad Bishop59061732019-10-07 15:48:37 -040084executable(
85 'phosphor-hwmon-readd',
86 'readd.cpp',
Patrick Williamsa385d892025-02-01 08:37:40 -050087 dependencies: [cli11_dep, hwmon_dep],
88 install: true,
89)
Brad Bishop59061732019-10-07 15:48:37 -040090
Patrick Williams6b5af742023-04-12 08:05:49 -050091systemd_system_unit_dir = dependency('systemd').get_variable(
Anton D. Kachalov5b520cf2021-02-03 23:19:39 +010092 'systemdsystemunitdir',
Patrick Williamsa385d892025-02-01 08:37:40 -050093 pkgconfig_define: ['prefix', get_option('prefix')],
94)
Patrick Williams6b5af742023-04-12 08:05:49 -050095udev_dir = dependency('udev').get_variable(
Anton D. Kachalov5b520cf2021-02-03 23:19:39 +010096 'udev_dir',
Patrick Williamsa385d892025-02-01 08:37:40 -050097 pkgconfig_define: ['prefix', get_option('prefix')],
98)
Anton D. Kachalov5b520cf2021-02-03 23:19:39 +010099
100install_data(
101 'xyz.openbmc_project.Hwmon@.service',
Patrick Williamsa385d892025-02-01 08:37:40 -0500102 install_dir: systemd_system_unit_dir,
Anton D. Kachalov5b520cf2021-02-03 23:19:39 +0100103)
104
105install_data(
106 'phosphor-hwmon.conf',
Patrick Williamsa385d892025-02-01 08:37:40 -0500107 install_dir: get_option('sysconfdir') / 'dbus-1/system.d',
Anton D. Kachalov5b520cf2021-02-03 23:19:39 +0100108)
109
110install_data(
111 ['70-hwmon.rules', '70-iio.rules'],
Patrick Williamsa385d892025-02-01 08:37:40 -0500112 install_dir: udev_dir / 'rules.d',
Anton D. Kachalov5b520cf2021-02-03 23:19:39 +0100113)
114
Matt Spinler670d92a2024-07-22 15:52:02 -0500115force_devpath = ''
Patrick Williamsc1c5bcf2025-01-30 17:47:58 -0500116if get_option('always-use-devpath').allowed()
Matt Spinler670d92a2024-07-22 15:52:02 -0500117 force_devpath = ' || true'
118endif
119
Willy Tu24b8b4b2023-08-07 17:49:37 -0700120configure_file(
Patrick Williamsa385d892025-02-01 08:37:40 -0500121 input: 'start_hwmon.sh.in',
122 output: 'start_hwmon.sh',
Matt Spinler670d92a2024-07-22 15:52:02 -0500123 configuration: {
Patrick Williamsa385d892025-02-01 08:37:40 -0500124 'OVERRIDE_WITH_DEVPATH': ' '.join(get_option('override-with-devpath')),
125 'FORCE_DEVPATH': force_devpath,
126 },
Anton D. Kachalov5b520cf2021-02-03 23:19:39 +0100127 install_dir: get_option('bindir'),
Willy Tu24b8b4b2023-08-07 17:49:37 -0700128 install_mode: 'rwxr-xr-x',
129 install: true,
Anton D. Kachalov5b520cf2021-02-03 23:19:39 +0100130)
131
Brad Bishop59061732019-10-07 15:48:37 -0400132subdir('msl')
Patrick Williamsc1c5bcf2025-01-30 17:47:58 -0500133if get_option('tests').allowed()
Patrick Williamsa385d892025-02-01 08:37:40 -0500134 subdir('test')
William A. Kennington IIIbb259732021-05-05 12:35:01 -0700135endif
Brad Bishop59061732019-10-07 15:48:37 -0400136subdir('tools')