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