Brad Bishop | 5906173 | 2019-10-07 15:48:37 -0400 | [diff] [blame] | 1 | project( |
| 2 | 'phosphor-hwmon', |
| 3 | 'cpp', |
Patrick Williams | a385d89 | 2025-02-01 08:37:40 -0500 | [diff] [blame^] | 4 | default_options: ['warning_level=3', 'werror=true', 'cpp_std=c++23'], |
Brad Bishop | 5906173 | 2019-10-07 15:48:37 -0400 | [diff] [blame] | 5 | license: 'Apache-2.0', |
| 6 | version: '1.0', |
Patrick Williams | 64b90bf | 2023-07-12 11:15:51 -0500 | [diff] [blame] | 7 | meson_version: '>=1.1.1', |
Brad Bishop | 5906173 | 2019-10-07 15:48:37 -0400 | [diff] [blame] | 8 | ) |
| 9 | |
Brad Bishop | 5906173 | 2019-10-07 15:48:37 -0400 | [diff] [blame] | 10 | conf = configuration_data() |
| 11 | conf.set_quoted('BUSNAME_PREFIX', get_option('busname-prefix')) |
| 12 | conf.set_quoted('SENSOR_ROOT', get_option('sensor-root')) |
| 13 | conf.set10('NEGATIVE_ERRNO_ON_FAIL', get_option('negative-errno-on-fail')) |
| 14 | conf.set10('UPDATE_FUNCTIONAL_ON_FAIL', get_option('update-functional-on-fail')) |
| 15 | |
William A. Kennington III | f9aff80 | 2021-05-05 12:06:24 -0700 | [diff] [blame] | 16 | sysfs_headers = include_directories('.') |
Brad Bishop | 5906173 | 2019-10-07 15:48:37 -0400 | [diff] [blame] | 17 | |
Patrick Williams | a385d89 | 2025-02-01 08:37:40 -0500 | [diff] [blame^] | 18 | sysfs_deps = [dependency('stdplus')] |
Brad Bishop | 5906173 | 2019-10-07 15:48:37 -0400 | [diff] [blame] | 19 | |
William A. Kennington III | f9aff80 | 2021-05-05 12:06:24 -0700 | [diff] [blame] | 20 | sysfs_lib = static_library( |
Brad Bishop | 5906173 | 2019-10-07 15:48:37 -0400 | [diff] [blame] | 21 | 'sysfs', |
| 22 | 'sysfs.cpp', |
William A. Kennington III | f9aff80 | 2021-05-05 12:06:24 -0700 | [diff] [blame] | 23 | include_directories: sysfs_headers, |
Patrick Williams | 6412993 | 2024-02-13 21:10:17 -0600 | [diff] [blame] | 24 | dependencies: sysfs_deps, |
| 25 | ) |
Brad Bishop | 5906173 | 2019-10-07 15:48:37 -0400 | [diff] [blame] | 26 | |
William A. Kennington III | f9aff80 | 2021-05-05 12:06:24 -0700 | [diff] [blame] | 27 | sysfs_dep = declare_dependency( |
| 28 | dependencies: sysfs_deps, |
| 29 | include_directories: sysfs_headers, |
Patrick Williams | a385d89 | 2025-02-01 08:37:40 -0500 | [diff] [blame^] | 30 | link_with: sysfs_lib, |
| 31 | ) |
William A. Kennington III | f9aff80 | 2021-05-05 12:06:24 -0700 | [diff] [blame] | 32 | |
| 33 | hwmon_headers = include_directories('.') |
| 34 | |
| 35 | hwmon_deps = [ |
William A. Kennington III | f9aff80 | 2021-05-05 12:06:24 -0700 | [diff] [blame] | 36 | dependency('gpioplus'), |
| 37 | dependency('phosphor-dbus-interfaces'), |
| 38 | dependency('phosphor-logging'), |
| 39 | dependency('sdbusplus'), |
| 40 | dependency('sdeventplus'), |
| 41 | dependency('stdplus'), |
Brandon Kim | 6d50c3e | 2019-08-09 15:38:53 -0700 | [diff] [blame] | 42 | dependency('threads'), |
William A. Kennington III | f9aff80 | 2021-05-05 12:06:24 -0700 | [diff] [blame] | 43 | sysfs_dep, |
| 44 | ] |
| 45 | |
| 46 | hwmon_lib = static_library( |
| 47 | 'hwmon', |
| 48 | 'average.cpp', |
| 49 | configure_file(output: 'config.h', configuration: conf), |
Brad Bishop | 5906173 | 2019-10-07 15:48:37 -0400 | [diff] [blame] | 50 | 'env.cpp', |
William A. Kennington III | f9aff80 | 2021-05-05 12:06:24 -0700 | [diff] [blame] | 51 | 'fan_pwm.cpp', |
Brad Bishop | 5906173 | 2019-10-07 15:48:37 -0400 | [diff] [blame] | 52 | 'fan_speed.cpp', |
| 53 | 'gpio_handle.cpp', |
William A. Kennington III | f9aff80 | 2021-05-05 12:06:24 -0700 | [diff] [blame] | 54 | 'hwmon.cpp', |
| 55 | 'hwmonio.cpp', |
Brad Bishop | 5906173 | 2019-10-07 15:48:37 -0400 | [diff] [blame] | 56 | 'mainloop.cpp', |
William A. Kennington III | f9aff80 | 2021-05-05 12:06:24 -0700 | [diff] [blame] | 57 | 'sensor.cpp', |
Brad Bishop | 5906173 | 2019-10-07 15:48:37 -0400 | [diff] [blame] | 58 | 'sensorset.cpp', |
William A. Kennington III | f9aff80 | 2021-05-05 12:06:24 -0700 | [diff] [blame] | 59 | dependencies: hwmon_deps, |
Patrick Williams | a385d89 | 2025-02-01 08:37:40 -0500 | [diff] [blame^] | 60 | include_directories: hwmon_headers, |
| 61 | ) |
William A. Kennington III | f9aff80 | 2021-05-05 12:06:24 -0700 | [diff] [blame] | 62 | |
| 63 | hwmon_dep = declare_dependency( |
| 64 | dependencies: hwmon_deps, |
| 65 | include_directories: hwmon_headers, |
Patrick Williams | a385d89 | 2025-02-01 08:37:40 -0500 | [diff] [blame^] | 66 | link_with: hwmon_lib, |
| 67 | ) |
Brad Bishop | 5906173 | 2019-10-07 15:48:37 -0400 | [diff] [blame] | 68 | |
William A. Kennington III | d3e8794 | 2021-05-05 12:26:53 -0700 | [diff] [blame] | 69 | # 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. |
| 71 | cli11_dep = dependency('cli11', required: false) |
| 72 | has_cli11 = meson.get_compiler('cpp').has_header_symbol( |
| 73 | 'CLI/CLI.hpp', |
| 74 | 'CLI::App', |
| 75 | dependencies: cli11_dep, |
Patrick Williams | a385d89 | 2025-02-01 08:37:40 -0500 | [diff] [blame^] | 76 | required: false, |
| 77 | ) |
William A. Kennington III | d3e8794 | 2021-05-05 12:26:53 -0700 | [diff] [blame] | 78 | if 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') |
| 82 | endif |
| 83 | |
Brad Bishop | 5906173 | 2019-10-07 15:48:37 -0400 | [diff] [blame] | 84 | executable( |
| 85 | 'phosphor-hwmon-readd', |
| 86 | 'readd.cpp', |
Patrick Williams | a385d89 | 2025-02-01 08:37:40 -0500 | [diff] [blame^] | 87 | dependencies: [cli11_dep, hwmon_dep], |
| 88 | install: true, |
| 89 | ) |
Brad Bishop | 5906173 | 2019-10-07 15:48:37 -0400 | [diff] [blame] | 90 | |
Patrick Williams | 6b5af74 | 2023-04-12 08:05:49 -0500 | [diff] [blame] | 91 | systemd_system_unit_dir = dependency('systemd').get_variable( |
Anton D. Kachalov | 5b520cf | 2021-02-03 23:19:39 +0100 | [diff] [blame] | 92 | 'systemdsystemunitdir', |
Patrick Williams | a385d89 | 2025-02-01 08:37:40 -0500 | [diff] [blame^] | 93 | pkgconfig_define: ['prefix', get_option('prefix')], |
| 94 | ) |
Patrick Williams | 6b5af74 | 2023-04-12 08:05:49 -0500 | [diff] [blame] | 95 | udev_dir = dependency('udev').get_variable( |
Anton D. Kachalov | 5b520cf | 2021-02-03 23:19:39 +0100 | [diff] [blame] | 96 | 'udev_dir', |
Patrick Williams | a385d89 | 2025-02-01 08:37:40 -0500 | [diff] [blame^] | 97 | pkgconfig_define: ['prefix', get_option('prefix')], |
| 98 | ) |
Anton D. Kachalov | 5b520cf | 2021-02-03 23:19:39 +0100 | [diff] [blame] | 99 | |
| 100 | install_data( |
| 101 | 'xyz.openbmc_project.Hwmon@.service', |
Patrick Williams | a385d89 | 2025-02-01 08:37:40 -0500 | [diff] [blame^] | 102 | install_dir: systemd_system_unit_dir, |
Anton D. Kachalov | 5b520cf | 2021-02-03 23:19:39 +0100 | [diff] [blame] | 103 | ) |
| 104 | |
| 105 | install_data( |
| 106 | 'phosphor-hwmon.conf', |
Patrick Williams | a385d89 | 2025-02-01 08:37:40 -0500 | [diff] [blame^] | 107 | install_dir: get_option('sysconfdir') / 'dbus-1/system.d', |
Anton D. Kachalov | 5b520cf | 2021-02-03 23:19:39 +0100 | [diff] [blame] | 108 | ) |
| 109 | |
| 110 | install_data( |
| 111 | ['70-hwmon.rules', '70-iio.rules'], |
Patrick Williams | a385d89 | 2025-02-01 08:37:40 -0500 | [diff] [blame^] | 112 | install_dir: udev_dir / 'rules.d', |
Anton D. Kachalov | 5b520cf | 2021-02-03 23:19:39 +0100 | [diff] [blame] | 113 | ) |
| 114 | |
Matt Spinler | 670d92a | 2024-07-22 15:52:02 -0500 | [diff] [blame] | 115 | force_devpath = '' |
Patrick Williams | c1c5bcf | 2025-01-30 17:47:58 -0500 | [diff] [blame] | 116 | if get_option('always-use-devpath').allowed() |
Matt Spinler | 670d92a | 2024-07-22 15:52:02 -0500 | [diff] [blame] | 117 | force_devpath = ' || true' |
| 118 | endif |
| 119 | |
Willy Tu | 24b8b4b | 2023-08-07 17:49:37 -0700 | [diff] [blame] | 120 | configure_file( |
Patrick Williams | a385d89 | 2025-02-01 08:37:40 -0500 | [diff] [blame^] | 121 | input: 'start_hwmon.sh.in', |
| 122 | output: 'start_hwmon.sh', |
Matt Spinler | 670d92a | 2024-07-22 15:52:02 -0500 | [diff] [blame] | 123 | configuration: { |
Patrick Williams | a385d89 | 2025-02-01 08:37:40 -0500 | [diff] [blame^] | 124 | 'OVERRIDE_WITH_DEVPATH': ' '.join(get_option('override-with-devpath')), |
| 125 | 'FORCE_DEVPATH': force_devpath, |
| 126 | }, |
Anton D. Kachalov | 5b520cf | 2021-02-03 23:19:39 +0100 | [diff] [blame] | 127 | install_dir: get_option('bindir'), |
Willy Tu | 24b8b4b | 2023-08-07 17:49:37 -0700 | [diff] [blame] | 128 | install_mode: 'rwxr-xr-x', |
| 129 | install: true, |
Anton D. Kachalov | 5b520cf | 2021-02-03 23:19:39 +0100 | [diff] [blame] | 130 | ) |
| 131 | |
Brad Bishop | 5906173 | 2019-10-07 15:48:37 -0400 | [diff] [blame] | 132 | subdir('msl') |
Patrick Williams | c1c5bcf | 2025-01-30 17:47:58 -0500 | [diff] [blame] | 133 | if get_option('tests').allowed() |
Patrick Williams | a385d89 | 2025-02-01 08:37:40 -0500 | [diff] [blame^] | 134 | subdir('test') |
William A. Kennington III | bb25973 | 2021-05-05 12:35:01 -0700 | [diff] [blame] | 135 | endif |
Brad Bishop | 5906173 | 2019-10-07 15:48:37 -0400 | [diff] [blame] | 136 | subdir('tools') |