1f06056bcSPatrick Williamsproject('phosphor-logging', 'cpp', 2f06056bcSPatrick Williams meson_version: '>= 0.57.0', 3f06056bcSPatrick Williams default_options: [ 4f06056bcSPatrick Williams 'buildtype=debugoptimized', 5f06056bcSPatrick Williams 'cpp_std=c++20', 6f06056bcSPatrick Williams 'warning_level=3', 7f06056bcSPatrick Williams 'werror=true', 8e0538848SWilliam A. Kennington III 'libonly=' + (meson.is_subproject() ? 'true' : 'false'), 9515653b4SWilliam A. Kennington III 'tests=' + (meson.is_subproject() ? 'disabled' : 'auto'), 10f06056bcSPatrick Williams ], 11f06056bcSPatrick Williams version: '1.0.0', 12f06056bcSPatrick Williams) 13f06056bcSPatrick Williams 14e0538848SWilliam A. Kennington IIIpython_prog = find_program('python3', native: true) 15e0538848SWilliam A. Kennington IIIsystemd_dep = dependency('systemd') 16f06056bcSPatrick Williams 17f06056bcSPatrick Williamssdbusplus_dep = dependency('sdbusplus', required: false) 18e0538848SWilliam A. Kennington IIIsdbusplus_proj = dependency('', required: false) 19e0538848SWilliam A. Kennington IIIif not sdbusplus_dep.found() or sdbusplus_dep.type_name() == 'internal' 20e0538848SWilliam A. Kennington III sdbusplus_proj = subproject('sdbusplus') 21e0538848SWilliam A. Kennington IIIendif 22e0538848SWilliam A. Kennington IIIif not sdbusplus_dep.found() 23f06056bcSPatrick Williams sdbusplus_dep = sdbusplus_proj.get_variable('sdbusplus_dep') 24f06056bcSPatrick Williamsendif 25f06056bcSPatrick Williams 26d9f0d646SPatrick Williamspdi_vars = [] 27d9f0d646SPatrick Williamsif not get_option('openpower-pel-extension').disabled() 28d9f0d646SPatrick Williams pdi_vars += ['data_org_open_power=true'] 29d9f0d646SPatrick Williamsendif 30f06056bcSPatrick Williamspdi_dep = dependency( 31f06056bcSPatrick Williams 'phosphor-dbus-interfaces', 32f06056bcSPatrick Williams fallback: ['phosphor-dbus-interfaces', 'phosphor_dbus_interfaces_dep'], 33d9f0d646SPatrick Williams default_options: pdi_vars, 34f06056bcSPatrick Williams) 35e0538848SWilliam A. Kennington III 36e0538848SWilliam A. Kennington III# Find the installed YAML directory, either from a configure option or 37e0538848SWilliam A. Kennington III# by pulling it from the PDI dependency. 38e0538848SWilliam A. Kennington IIIyamldir = get_option('yamldir') 39e0538848SWilliam A. Kennington IIIif yamldir == '' 40e0538848SWilliam A. Kennington III yamldir = pdi_dep.get_variable(pkgconfig: 'yamldir', internal: 'yamldir') 41e0538848SWilliam A. Kennington IIIendif 42e0538848SWilliam A. Kennington III 43e0538848SWilliam A. Kennington IIIsubdir('config') 44e0538848SWilliam A. Kennington IIIsubdir('tools') 45e0538848SWilliam A. Kennington IIIsubdir('lib') 46e0538848SWilliam A. Kennington III 47e0538848SWilliam A. Kennington IIIif get_option('libonly') 48e0538848SWilliam A. Kennington III subdir_done() 49e0538848SWilliam A. Kennington IIIendif 50e0538848SWilliam A. Kennington III 51e0538848SWilliam A. Kennington IIIcpp = meson.get_compiler('cpp') 52e0538848SWilliam A. Kennington III 53e0538848SWilliam A. Kennington IIIif sdbusplus_proj.found() 54e0538848SWilliam A. Kennington III sdbusplusplus_prog = sdbusplus_proj.get_variable('sdbusplusplus_prog') 55e0538848SWilliam A. Kennington III sdbuspp_gen_meson_prog = sdbusplus_proj.get_variable( 56e0538848SWilliam A. Kennington III 'sdbuspp_gen_meson_prog') 57e0538848SWilliam A. Kennington IIIelse 58e0538848SWilliam A. Kennington III sdbusplusplus_prog = find_program('sdbus++', native: true) 59e0538848SWilliam A. Kennington III sdbuspp_gen_meson_prog = find_program('sdbus++-gen-meson', native: true) 60e0538848SWilliam A. Kennington IIIendif 61e0538848SWilliam A. Kennington III 62f06056bcSPatrick Williamssdeventplus_dep = dependency( 63f06056bcSPatrick Williams 'sdeventplus', 64f06056bcSPatrick Williams fallback: ['sdeventplus', 'sdeventplus_dep' ], 65f06056bcSPatrick Williams) 66f06056bcSPatrick Williams 670bb89f8aSPatrick Williams# Get Cereal dependency. 680b08776aSWilliam A. Kennington IIIcereal_dep = dependency('cereal', required: false) 690b08776aSWilliam A. Kennington IIIhas_cereal = cpp.has_header_symbol( 700b08776aSWilliam A. Kennington III 'cereal/cereal.hpp', 710b08776aSWilliam A. Kennington III 'cereal::specialize', 720b08776aSWilliam A. Kennington III dependencies: cereal_dep, 730b08776aSWilliam A. Kennington III required: false) 740b08776aSWilliam A. Kennington IIIif not has_cereal 750b08776aSWilliam A. Kennington III cereal_opts = import('cmake').subproject_options() 760b08776aSWilliam A. Kennington III cereal_opts.add_cmake_defines({'BUILD_TESTS': 'OFF'}) 770b08776aSWilliam A. Kennington III cereal_proj = import('cmake').subproject( 780b08776aSWilliam A. Kennington III 'cereal', 790b08776aSWilliam A. Kennington III options: cereal_opts, 800b08776aSWilliam A. Kennington III required: false) 810b08776aSWilliam A. Kennington III assert(cereal_proj.found(), 'cereal is required') 820b08776aSWilliam A. Kennington III cereal_dep = cereal_proj.get_variable('cm_cereal_dep') 830bb89f8aSPatrick Williamsendif 840bb89f8aSPatrick Williams 850bb89f8aSPatrick Williams# Generate sdbus++ files. 860bb89f8aSPatrick Williamsgenerated_sources = [] 870bb89f8aSPatrick Williamsgenerated_others = [] 880bb89f8aSPatrick Williamssubdir('gen') 890bb89f8aSPatrick Williamssubdir('gen/xyz') 900bb89f8aSPatrick Williams 91f06056bcSPatrick Williams# Generate callouts-gen.hpp. 92f06056bcSPatrick Williamscallouts_gen = custom_target('callouts-gen.hpp'.underscorify(), 93f06056bcSPatrick Williams input: [ 94f06056bcSPatrick Williams 'callouts/callouts.py', 95f06056bcSPatrick Williams 'callouts/callouts-gen.mako.hpp', 96f06056bcSPatrick Williams get_option('callout_yaml'), 97f06056bcSPatrick Williams ], 98f06056bcSPatrick Williams output: 'callouts-gen.hpp', 99f06056bcSPatrick Williams command: [ python_prog, '@INPUT0@', '-i', '@INPUT2@', '-o', '@OUTPUT0@' ], 100f06056bcSPatrick Williams) 1010bb89f8aSPatrick Williams# Generate elog-lookup.cpp 1020bb89f8aSPatrick Williamselog_lookup_gen = custom_target('elog-lookup.cpp'.underscorify(), 1030bb89f8aSPatrick Williams input: files( 1040bb89f8aSPatrick Williams 'tools/elog-gen.py', 1050bb89f8aSPatrick Williams 'tools/phosphor-logging/templates/elog-lookup-template.mako.cpp', 1060bb89f8aSPatrick Williams ), 1070bb89f8aSPatrick Williams output: 'elog-lookup.cpp', 1080bb89f8aSPatrick Williams command: [ 1090bb89f8aSPatrick Williams python_prog, '@INPUT0@', 1100bb89f8aSPatrick Williams '-t', '', 1110bb89f8aSPatrick Williams '-m', '@INPUT1@', 1120bb89f8aSPatrick Williams '-y', yamldir, 11347c77342STim Lee '-u', meson.current_source_dir() / 'tools/', 1140bb89f8aSPatrick Williams '-o', '@OUTPUT0@', 1150bb89f8aSPatrick Williams ], 1160bb89f8aSPatrick Williams) 1170bb89f8aSPatrick Williams# Generate elog-process-metadata.cpp 1180bb89f8aSPatrick Williamselog_process_gen = custom_target('elog-process-metadata.cpp'.underscorify(), 1190bb89f8aSPatrick Williams input: files( 1200bb89f8aSPatrick Williams 'tools/elog-gen.py', 1210bb89f8aSPatrick Williams 'tools/phosphor-logging/templates/elog-process-metadata.mako.cpp', 1220bb89f8aSPatrick Williams ), 1230bb89f8aSPatrick Williams output: 'elog-process-metadata.cpp', 1240bb89f8aSPatrick Williams command: [ 1250bb89f8aSPatrick Williams python_prog, '@INPUT0@', 1260bb89f8aSPatrick Williams '-t', '', 1270bb89f8aSPatrick Williams '-m', '@INPUT1@', 1280bb89f8aSPatrick Williams '-y', yamldir, 12947c77342STim Lee '-u', meson.current_source_dir() / 'tools/', 1300bb89f8aSPatrick Williams '-o', '@OUTPUT0@', 1310bb89f8aSPatrick Williams ], 1320bb89f8aSPatrick Williams) 133f06056bcSPatrick Williams 134d9f0d646SPatrick Williamslog_manager_ext_sources = [] 135d9f0d646SPatrick Williamslog_manager_ext_deps = [] 136*8fd187e4SWilliam A. Kennington IIIlog_manager_ext_args = [] 137d9f0d646SPatrick Williams 138d9f0d646SPatrick Williamssubdir('extensions') 139b2b27085SPatrick Williamssubdir('phosphor-rsyslog-config') 140f06056bcSPatrick Williams 1410bb89f8aSPatrick Williams# Generate daemon. 142a517197dSPatrick Williamslog_manager_sources = [ 1430bb89f8aSPatrick Williams generated_sources, 144e0538848SWilliam A. Kennington III callouts_gen, 1450bb89f8aSPatrick Williams elog_lookup_gen, 1460bb89f8aSPatrick Williams elog_process_gen, 147a517197dSPatrick Williams files( 1480bb89f8aSPatrick Williams 'elog_entry.cpp', 1490bb89f8aSPatrick Williams 'elog_meta.cpp', 1500bb89f8aSPatrick Williams 'elog_serialize.cpp', 1510bb89f8aSPatrick Williams 'extensions.cpp', 1520bb89f8aSPatrick Williams 'log_manager.cpp', 1530bb89f8aSPatrick Williams 'util.cpp', 154a517197dSPatrick Williams ) 155a517197dSPatrick Williams] 156d9f0d646SPatrick Williamslog_manager_deps = [ 157d9f0d646SPatrick Williams cereal_dep, 158e0538848SWilliam A. Kennington III conf_h_dep, 159d9f0d646SPatrick Williams pdi_dep, 160e0538848SWilliam A. Kennington III phosphor_logging_dep, 161d9f0d646SPatrick Williams sdbusplus_dep, 162d9f0d646SPatrick Williams sdeventplus_dep, 163d9f0d646SPatrick Williams] 164a517197dSPatrick Williamsexecutable('phosphor-log-manager', 165a517197dSPatrick Williams log_manager_sources, 166d9f0d646SPatrick Williams log_manager_ext_sources, 167a517197dSPatrick Williams 'log_manager_main.cpp', 1680bb89f8aSPatrick Williams include_directories: include_directories('gen'), 169*8fd187e4SWilliam A. Kennington III cpp_args: log_manager_ext_args, 1700bb89f8aSPatrick Williams dependencies: [ 171d9f0d646SPatrick Williams log_manager_deps, 172d9f0d646SPatrick Williams log_manager_ext_deps, 1730bb89f8aSPatrick Williams ], 1740bb89f8aSPatrick Williams install: true, 1750bb89f8aSPatrick Williams) 176ddd4fac0SPatrick Williams# Generate test executables which run in obmc env (qemu, real hardware). 177ddd4fac0SPatrick Williamsexecutable('logging-test', 178ddd4fac0SPatrick Williams 'logging_test.cpp', 179ddd4fac0SPatrick Williams dependencies: [ 180ddd4fac0SPatrick Williams pdi_dep, 181e0538848SWilliam A. Kennington III phosphor_logging_dep, 182ddd4fac0SPatrick Williams sdbusplus_dep, 183ddd4fac0SPatrick Williams ], 184ddd4fac0SPatrick Williams install: true, 185ddd4fac0SPatrick Williams) 186ddd4fac0SPatrick Williamsexecutable('callout-test', 187ddd4fac0SPatrick Williams 'callouts/callout_test.cpp', 188ddd4fac0SPatrick Williams dependencies: [ 189e0538848SWilliam A. Kennington III conf_h_dep, 190ddd4fac0SPatrick Williams pdi_dep, 191e0538848SWilliam A. Kennington III phosphor_logging_dep, 192ddd4fac0SPatrick Williams sdbusplus_dep, 193ddd4fac0SPatrick Williams sdeventplus_dep, 194ddd4fac0SPatrick Williams ], 195ddd4fac0SPatrick Williams install: true, 196ddd4fac0SPatrick Williams) 197a517197dSPatrick Williams 198271408b5SAnton D. Kachalovsubdir('dist') 199271408b5SAnton D. Kachalov 200a517197dSPatrick Williamsif not get_option('tests').disabled() 201a517197dSPatrick Williams subdir('test') 202a517197dSPatrick Williamsendif 203