1project(
2    'openpower-debug-collector',
3    'cpp',
4    meson_version: '>=1.1.1',
5    default_options: [
6        'warning_level=3',
7        'werror=true',
8        'cpp_std=c++23'
9    ],
10    license: 'Apache-2.0',
11    version: '1.0.0',
12)
13
14systemd = dependency('systemd', required : true)
15
16sdbusplus_dep = dependency('sdbusplus')
17sdbusplusplus_prog = find_program('sdbus++')
18sdbuspp_gen_meson_prog = find_program('sdbus++-gen-meson')
19sdbusplusplus_depfiles = files()
20if sdbusplus_dep.type_name() == 'internal'
21    sdbusplusplus_depfiles = subproject('sdbusplus').get_variable('sdbusplusplus_depfiles')
22endif
23
24phosphorlogging = dependency(
25    'phosphor-logging',
26    fallback: [
27        'phosphor-logging',
28        'phosphor_logging_dep'
29    ]
30)
31
32realpath_prog = find_program('realpath')
33
34selected_subdirs = []
35selected_subdirs += 'org/open_power'
36
37generated_root = meson.current_build_dir() / 'gen'
38generated_others = []
39generated_sources = []
40
41# Source the generated meson files
42subdir('gen')
43foreach d : selected_subdirs
44    subdir('gen' / d)
45endforeach
46
47# Parse through the list from sdbus++-gendir and put into sets.
48generated_headers = []
49generated_cpp = []
50generated_others_files = []
51
52foreach g : generated_sources generated_others
53    foreach f : g.to_list()
54        rel_path = run_command(
55            realpath_prog,
56            '--relative-to', generated_root,
57            f.full_path(),
58        ).stdout().strip().split('\n')[-1]
59
60        if rel_path.endswith('.hpp')
61            generated_headers += rel_path
62        elif rel_path.endswith('.cpp')
63            generated_cpp += rel_path
64        else
65            generated_others_files += rel_path
66        endif
67    endforeach
68endforeach
69
70cxx = meson.get_compiler('cpp')
71conf_data = configuration_data()
72if get_option('hostboot-dump-collection').enabled()
73    conf_data.set('WATCHDOG_DUMP_COLLECTION', true)
74    extra_deps = [
75        cxx.find_library('pdbg'),
76        cxx.find_library('libdt-api'),
77        cxx.find_library('phal')
78    ]
79    subdir('watchdog')
80else
81    conf_data.set('WATCHDOG_DUMP_COLLECTION', false)
82    watchdog_lib = []
83    extra_deps = []
84endif
85
86configure_file(output: 'config.h', configuration: conf_data)
87
88deps = [
89    systemd,
90    sdbusplus_dep,
91    phosphorlogging,
92    extra_deps
93]
94
95executable('watchdog_timeout',
96    'watchdog_timeout.cpp',
97    generated_sources,
98    dependencies: deps,
99    link_with: watchdog_lib,
100    include_directories: include_directories('gen'),
101    implicit_include_directories: true,
102    install: true
103)
104
105executable('checkstop_app',
106    'checkstop_app.cpp',
107    generated_sources,
108    dependencies: deps,
109    include_directories: include_directories('gen'),
110    implicit_include_directories: true,
111    install: true
112)
113