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