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