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