blob: 4e1cc6040eb5e14561206850f8a357a4fbf6beb0 [file] [log] [blame]
Brad Bishop2d66b512019-09-19 16:36:47 -04001project(
2 'phosphor-gpio-monitor',
3 'cpp',
4 default_options: [
5 'warning_level=3',
6 'werror=true',
Patrick Williamsee1663c2023-07-12 11:15:43 -05007 'cpp_std=c++23',
Brandon Wymanca2637e2021-03-04 12:41:21 -06008 'buildtype=debugoptimized'
Brad Bishop2d66b512019-09-19 16:36:47 -04009 ],
10 license: 'Apache-2.0',
11 version: '1.0',
Patrick Williamsee1663c2023-07-12 11:15:43 -050012 meson_version: '>=1.1.1',
Brad Bishop2d66b512019-09-19 16:36:47 -040013)
14
Patrick Williams01729692023-06-01 09:11:32 -050015cxx = meson.get_compiler('cpp')
16
Brad Bishop2d66b512019-09-19 16:36:47 -040017build_tests = get_option('tests')
18
Brad Bishop2d66b512019-09-19 16:36:47 -040019libevdev = dependency('libevdev')
20libsystemd = dependency('libsystemd')
Vijay Khemka939a6432019-10-09 17:45:45 -070021libgpiod = dependency('libgpiod')
Brad Bishop2d66b512019-09-19 16:36:47 -040022phosphor_dbus_interfaces = dependency('phosphor-dbus-interfaces')
23phosphor_logging = dependency('phosphor-logging')
24sdbusplus = dependency('sdbusplus')
Brad Bishop26373ab2019-09-19 17:18:57 -040025systemd = dependency('systemd')
26
Patrick Williams01729692023-06-01 09:11:32 -050027if 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
Vijay Khemka939a6432019-10-09 17:45:45 -070045boost_args = ['-DBOOST_ASIO_DISABLE_THREADS',
46 '-DBOOST_ERROR_CODE_HEADER_ONLY',
47 '-DBOOST_SYSTEM_NO_DEPRECATED']
48
Patrick Williams0c60faa2023-04-12 08:05:56 -050049systemd_system_unit_dir = systemd.get_variable(
Brad Bishop26373ab2019-09-19 17:18:57 -040050 'systemdsystemunitdir',
Patrick Williams0c60faa2023-04-12 08:05:56 -050051 pkgconfig_define: ['prefix', get_option('prefix')])
Brad Bishop26373ab2019-09-19 17:18:57 -040052
George Liu1c0e4ea2023-08-03 11:11:13 +080053fs = import('fs')
54fs.copyfile(
55 'phosphor-gpio-monitor@.service',
Brad Bishop26373ab2019-09-19 17:18:57 -040056 install: true,
George Liu1c0e4ea2023-08-03 11:11:13 +080057 install_dir: systemd_system_unit_dir
Brad Bishop26373ab2019-09-19 17:18:57 -040058)
59
George Liu1c0e4ea2023-08-03 11:11:13 +080060fs.copyfile(
61 'phosphor-multi-gpio-monitor.service',
Vijay Khemkad34bd962019-10-29 12:28:07 -070062 install: true,
George Liu1c0e4ea2023-08-03 11:11:13 +080063 install_dir: systemd_system_unit_dir
Vijay Khemkad34bd962019-10-29 12:28:07 -070064)
65
George Liu1c0e4ea2023-08-03 11:11:13 +080066fs.copyfile(
67 'phosphor-gpio-presence@.service',
Brad Bishop26373ab2019-09-19 17:18:57 -040068 install: true,
George Liu1c0e4ea2023-08-03 11:11:13 +080069 install_dir: systemd_system_unit_dir
Brad Bishop26373ab2019-09-19 17:18:57 -040070)
Brad Bishop2d66b512019-09-19 16:36:47 -040071
Alvin Wang58dc2772019-11-06 13:35:13 +080072udev = dependency('udev')
73udev_rules_dir = join_paths(
Patrick Williams0c60faa2023-04-12 08:05:56 -050074 udev.get_variable(
Alvin Wang58dc2772019-11-06 13:35:13 +080075 'udevdir',
Patrick Williams0c60faa2023-04-12 08:05:56 -050076 pkgconfig_define: ['prefix', get_option('prefix')],
Alvin Wang58dc2772019-11-06 13:35:13 +080077 ),
78 'rules.d',
79)
80
George Liu1c0e4ea2023-08-03 11:11:13 +080081fs.copyfile(
82 '99-gpio-keys.rules',
Alvin Wang58dc2772019-11-06 13:35:13 +080083 install: true,
George Liu1c0e4ea2023-08-03 11:11:13 +080084 install_dir: udev_rules_dir
Alvin Wang58dc2772019-11-06 13:35:13 +080085)
86
George Liu1c0e4ea2023-08-03 11:11:13 +080087fs.copyfile(
88 'phosphor-multi-gpio-monitor.json',
Vijay Khemkad34bd962019-10-29 12:28:07 -070089 install: true,
George Liu1c0e4ea2023-08-03 11:11:13 +080090 install_dir: get_option('datadir') / 'phosphor-gpio-monitor'
Vijay Khemkad34bd962019-10-29 12:28:07 -070091)
92
Brad Bishop2d66b512019-09-19 16:36:47 -040093libevdev_o = static_library(
94 'libevdev_o',
95 'evdev.cpp',
96 dependencies: [
97 libevdev,
98 phosphor_dbus_interfaces,
99 phosphor_logging,
100 sdbusplus,
101 ]
102)
103
104libmonitor_o = static_library(
105 'libmonitor_o',
106 'monitor.cpp',
107 dependencies: [
108 libevdev,
109 libsystemd,
110 phosphor_logging,
111 ],
112 link_with: [
113 libevdev_o,
114 ],
115)
116
117phosphor_gpio_monitor = executable(
118 'phosphor-gpio-monitor',
Brad Bishop2d66b512019-09-19 16:36:47 -0400119 'mainapp.cpp',
120 dependencies: [
121 libevdev,
122 libsystemd,
123 phosphor_logging,
124 ],
125 install: true,
126 link_with: [
127 libevdev_o,
128 libmonitor_o,
129 ],
130)
131
Vijay Khemka939a6432019-10-09 17:45:45 -0700132executable(
133 'phosphor-multi-gpio-monitor',
134 'gpioMonMain.cpp',
135 'gpioMon.cpp',
136 dependencies: [
Patrick Williams01729692023-06-01 09:11:32 -0500137 cli11_dep,
138 libgpiod,
139 nlohmann_json_dep,
Vijay Khemka939a6432019-10-09 17:45:45 -0700140 phosphor_logging,
141 sdbusplus,
Vijay Khemka939a6432019-10-09 17:45:45 -0700142 ],
143 cpp_args: boost_args,
144 install: true,
145)
146
Brad Bishop2d66b512019-09-19 16:36:47 -0400147subdir('presence')
148subdir('test')