1project( 2 'phosphor-gpio-monitor', 3 'cpp', 4 default_options: [ 5 'warning_level=3', 6 'werror=true', 7 'cpp_std=c++23', 8 'buildtype=debugoptimized' 9 ], 10 license: 'Apache-2.0', 11 version: '1.0', 12 meson_version: '>=1.1.1', 13) 14 15cxx = meson.get_compiler('cpp') 16 17build_tests = get_option('tests') 18 19libevdev = dependency('libevdev') 20libsystemd = dependency('libsystemd') 21libgpiod = dependency('libgpiod') 22phosphor_dbus_interfaces = dependency('phosphor-dbus-interfaces') 23phosphor_logging = dependency('phosphor-logging') 24sdbusplus = dependency('sdbusplus') 25systemd = dependency('systemd') 26 27if cxx.has_header('nlohmann/json.hpp') 28 nlohmann_json_dep = declare_dependency() 29else 30 subproject('nlohmann', required: false) 31 nlohmann_json_dep = declare_dependency( 32 include_directories: [ 33 'subprojects/nlohmann-json/single_include', 34 'subprojects/nlohmann-json/single_include/nlohmann', 35 ] 36 ) 37endif 38 39if cxx.has_header('CLI/CLI.hpp') 40 cli11_dep = declare_dependency() 41else 42 cli11_dep = dependency('CLI11') 43endif 44 45boost_args = ['-DBOOST_ASIO_DISABLE_THREADS', 46 '-DBOOST_ERROR_CODE_HEADER_ONLY', 47 '-DBOOST_SYSTEM_NO_DEPRECATED'] 48 49systemd_system_unit_dir = systemd.get_variable( 50 'systemdsystemunitdir', 51 pkgconfig_define: ['prefix', get_option('prefix')]) 52 53configure_file( 54 copy: true, 55 input: 'phosphor-gpio-monitor@.service', 56 install: true, 57 install_dir: systemd_system_unit_dir, 58 output: 'phosphor-gpio-monitor@.service' 59) 60 61configure_file( 62 copy: true, 63 input: 'phosphor-multi-gpio-monitor.service', 64 install: true, 65 install_dir: systemd_system_unit_dir, 66 output: 'phosphor-multi-gpio-monitor.service' 67) 68 69configure_file( 70 copy: true, 71 input: 'phosphor-gpio-presence@.service', 72 install: true, 73 install_dir: systemd_system_unit_dir, 74 output: 'phosphor-gpio-presence@.service' 75) 76 77udev = dependency('udev') 78udev_rules_dir = join_paths( 79 udev.get_variable( 80 'udevdir', 81 pkgconfig_define: ['prefix', get_option('prefix')], 82 ), 83 'rules.d', 84) 85 86configure_file( 87 copy: true, 88 input: '99-gpio-keys.rules', 89 install: true, 90 install_dir: udev_rules_dir, 91 output: '99-gpio-keys.rules' 92) 93 94 95configure_file( 96 copy: true, 97 input: 'phosphor-multi-gpio-monitor.json', 98 install: true, 99 install_dir: '/usr/share/phosphor-gpio-monitor', 100 output: 'phosphor-multi-gpio-monitor.json' 101) 102 103libevdev_o = static_library( 104 'libevdev_o', 105 'evdev.cpp', 106 dependencies: [ 107 libevdev, 108 phosphor_dbus_interfaces, 109 phosphor_logging, 110 sdbusplus, 111 ] 112) 113 114libmonitor_o = static_library( 115 'libmonitor_o', 116 'monitor.cpp', 117 dependencies: [ 118 libevdev, 119 libsystemd, 120 phosphor_logging, 121 ], 122 link_with: [ 123 libevdev_o, 124 ], 125) 126 127phosphor_gpio_monitor = executable( 128 'phosphor-gpio-monitor', 129 'mainapp.cpp', 130 dependencies: [ 131 libevdev, 132 libsystemd, 133 phosphor_logging, 134 ], 135 install: true, 136 link_with: [ 137 libevdev_o, 138 libmonitor_o, 139 ], 140) 141 142executable( 143 'phosphor-multi-gpio-monitor', 144 'gpioMonMain.cpp', 145 'gpioMon.cpp', 146 dependencies: [ 147 cli11_dep, 148 libgpiod, 149 nlohmann_json_dep, 150 phosphor_logging, 151 sdbusplus, 152 ], 153 cpp_args: boost_args, 154 install: true, 155) 156 157subdir('gpio-util') 158subdir('presence') 159subdir('test') 160