1project( 2 'openpower-debug-collector', 3 'cpp', 4 meson_version: '>= 0.58.0', 5 default_options: [ 6 'warning_level=3', 7 'werror=true', 8 'cpp_std=c++20' 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 32fmt_dep = dependency('fmt', required: false) 33if not fmt_dep.found() 34 fmt_proj = import('cmake').subproject( 35 'fmt', 36 cmake_options: [ 37 '-DCMAKE_POSITION_INDEPENDENT_CODE=ON', 38 '-DMASTER_PROJECT=OFF' 39 ], 40 required: false) 41 assert(fmt_proj.found(), 'fmtlib is required') 42 fmt_dep = fmt_proj.dependency('fmt') 43endif 44 45realpath_prog = find_program('realpath') 46 47selected_subdirs = [] 48selected_subdirs += 'org/open_power' 49 50generated_root = meson.current_build_dir() / 'gen' 51generated_others = [] 52generated_sources = [] 53 54# Source the generated meson files 55subdir('gen') 56foreach d : selected_subdirs 57 subdir('gen' / d) 58endforeach 59 60# Parse through the list from sdbus++-gendir and put into sets. 61generated_headers = [] 62generated_cpp = [] 63generated_others_files = [] 64 65foreach g : generated_sources generated_others 66 foreach f : g.to_list() 67 rel_path = run_command( 68 realpath_prog, 69 '--relative-to', generated_root, 70 f.full_path(), 71 ).stdout().strip().split('\n')[-1] 72 73 if rel_path.endswith('.hpp') 74 generated_headers += rel_path 75 elif rel_path.endswith('.cpp') 76 generated_cpp += rel_path 77 else 78 generated_others_files += rel_path 79 endif 80 endforeach 81endforeach 82 83cxx = meson.get_compiler('cpp') 84conf_data = configuration_data() 85if get_option('hostboot-dump-collection').enabled() 86 conf_data.set('WATCHDOG_DUMP_COLLECTION', true) 87 extra_deps = [ 88 cxx.find_library('pdbg'), 89 cxx.find_library('libdt-api'), 90 cxx.find_library('phal') 91 ] 92 subdir('watchdog') 93else 94 conf_data.set('WATCHDOG_DUMP_COLLECTION', false) 95 watchdog_lib = [] 96 extra_deps = [] 97endif 98 99configure_file(output: 'config.h', configuration: conf_data) 100 101deps = [ 102 systemd, 103 sdbusplus_dep, 104 phosphorlogging, 105 fmt_dep, 106 extra_deps 107] 108 109executable('watchdog_timeout', 110 'watchdog_timeout.cpp', 111 generated_sources, 112 dependencies: deps, 113 link_with: watchdog_lib, 114 include_directories: include_directories('gen'), 115 implicit_include_directories: true, 116 install: true 117) 118 119executable('checkstop_app', 120 'checkstop_app.cpp', 121 generated_sources, 122 dependencies: deps, 123 include_directories: include_directories('gen'), 124 implicit_include_directories: true, 125 install: true 126) 127