xref: /openbmc/phosphor-buttons/meson.build (revision 3e30b7a6)
1d6a1bae7SGeorge Liuproject(
2d6a1bae7SGeorge Liu    'phosphor-buttons', 'cpp',
3d6a1bae7SGeorge Liu    version: '1.0.0',
410bc3aebSPatrick Williams    meson_version: '>=1.1.1',
5d6a1bae7SGeorge Liu    default_options: [
6d6a1bae7SGeorge Liu        'warning_level=3',
7d6a1bae7SGeorge Liu        'werror=true',
810bc3aebSPatrick Williams        'cpp_std=c++23',
9d6a1bae7SGeorge Liu    ]
10d6a1bae7SGeorge Liu)
11d6a1bae7SGeorge Liu
12d6a1bae7SGeorge Liuconf_data = configuration_data()
13d6a1bae7SGeorge Liuconf_data.set_quoted('ID_LED_GROUP', get_option('id-led-group'))
141a309f77SMatt Spinlerconf_data.set_quoted('POWER_BUTTON_PROFILE', get_option('power-button-profile'))
15f756f8b0SGeorge Liuconf_data.set('LONG_PRESS_TIME_MS', get_option('long-press-time-ms'))
1688f20387SPatrick Williamsconf_data.set('LOOKUP_GPIO_BASE', get_option('lookup-gpio-base').allowed())
1788f20387SPatrick Williamsconf_data.set('ENABLE_RESET_BUTTON_DO_WARM_REBOOT', get_option('reset-button-do-warm-reboot').allowed())
18d6a1bae7SGeorge Liu
19*3e30b7a6SDelphine CC Chiuconfigure_file(
20*3e30b7a6SDelphine CC Chiu    input: 'meson_config.hpp.in',
21*3e30b7a6SDelphine CC Chiu    output: 'config.hpp',
22d6a1bae7SGeorge Liu    configuration: conf_data
23d6a1bae7SGeorge Liu)
24d6a1bae7SGeorge Liu
257824da46SPatrick Williamsgpioplus_dep = dependency('gpioplus')
267824da46SPatrick Williamsnlohmann_json_dep = dependency('nlohmann_json', include_type: 'system')
27d6a1bae7SGeorge Liuphosphor_dbus_interfaces_dep = dependency('phosphor-dbus-interfaces')
28d6a1bae7SGeorge Liuphosphor_logging_dep = dependency('phosphor-logging')
297824da46SPatrick Williamssdbusplus_dep = dependency('sdbusplus')
307824da46SPatrick Williamssdeventplus_dep = dependency('sdeventplus')
31d6a1bae7SGeorge Liu
32d6a1bae7SGeorge Liudeps = [
33d6a1bae7SGeorge Liu    sdbusplus_dep,
34d6a1bae7SGeorge Liu    phosphor_dbus_interfaces_dep,
35d6a1bae7SGeorge Liu    phosphor_logging_dep,
36d6a1bae7SGeorge Liu    nlohmann_json_dep,
37d6a1bae7SGeorge Liu    gpioplus_dep,
389479b06cSMatt Spinler    sdeventplus_dep,
39d6a1bae7SGeorge Liu]
40d6a1bae7SGeorge Liu
41d6a1bae7SGeorge Liusources_buttons = [
42d6a1bae7SGeorge Liu    'src/gpio.cpp',
43ccd7db05SDelphine CC Chiu    'src/cpld.cpp',
44d6a1bae7SGeorge Liu    'src/hostSelector_switch.cpp',
45a6d4e65dSNaveen Moses    'src/debugHostSelector_button.cpp',
46d219fa3cSNaveen Moses    'src/serial_uart_mux.cpp',
47d6a1bae7SGeorge Liu    'src/id_button.cpp',
48d6a1bae7SGeorge Liu    'src/main.cpp',
49d6a1bae7SGeorge Liu    'src/power_button.cpp',
50d6a1bae7SGeorge Liu    'src/reset_button.cpp',
51d6a1bae7SGeorge Liu]
52d6a1bae7SGeorge Liu
53d6a1bae7SGeorge Liusources_handler = [
54d6a1bae7SGeorge Liu    'src/button_handler_main.cpp',
55d6a1bae7SGeorge Liu    'src/button_handler.cpp',
561a309f77SMatt Spinler    'src/host_then_chassis_poweroff.cpp',
57d6a1bae7SGeorge Liu]
58d6a1bae7SGeorge Liu
59d6a1bae7SGeorge Liuexecutable(
60d6a1bae7SGeorge Liu    'buttons',
61d6a1bae7SGeorge Liu    sources_buttons,
62d6a1bae7SGeorge Liu    implicit_include_directories: true,
63d6a1bae7SGeorge Liu    include_directories: ['inc'],
64d6a1bae7SGeorge Liu    dependencies: deps,
65d6a1bae7SGeorge Liu    install: true,
66d6a1bae7SGeorge Liu    install_dir: get_option('bindir')
67d6a1bae7SGeorge Liu)
68d6a1bae7SGeorge Liu
69d6a1bae7SGeorge Liuexecutable(
70d6a1bae7SGeorge Liu    'button-handler',
71d6a1bae7SGeorge Liu    sources_handler,
72d6a1bae7SGeorge Liu    implicit_include_directories: true,
73d6a1bae7SGeorge Liu    include_directories: ['inc'],
74d6a1bae7SGeorge Liu    dependencies: deps,
75d6a1bae7SGeorge Liu    install: true,
76d6a1bae7SGeorge Liu    install_dir: get_option('bindir')
77d6a1bae7SGeorge Liu)
78d6a1bae7SGeorge Liu
79d6a1bae7SGeorge Liusystemd = dependency('systemd')
80d6a1bae7SGeorge Liusystemd_system_unit_dir = systemd.get_variable(
8106b10603SPatrick Williams        'systemdsystemunitdir',
82d6a1bae7SGeorge Liu        pkgconfig_define: ['prefix', get_option('prefix')])
83d6a1bae7SGeorge Liu
8470a0dc8bSGeorge Liufs = import('fs')
8570a0dc8bSGeorge Liufs.copyfile(
8670a0dc8bSGeorge Liu    'service_files/phosphor-button-handler.service',
8770a0dc8bSGeorge Liu    install: true,
8870a0dc8bSGeorge Liu    install_dir: systemd_system_unit_dir
8970a0dc8bSGeorge Liu)
9070a0dc8bSGeorge Liufs.copyfile(
9170a0dc8bSGeorge Liu    'service_files/xyz.openbmc_project.Chassis.Buttons.service',
9270a0dc8bSGeorge Liu    install: true,
9370a0dc8bSGeorge Liu    install_dir: systemd_system_unit_dir
9470a0dc8bSGeorge Liu)
95