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) 13*62bc968dSPatrick Williamscpp = meson.get_compiler('cpp') 14f06056bcSPatrick Williams 15e0538848SWilliam A. Kennington IIIpython_prog = find_program('python3', native: true) 16e0538848SWilliam A. Kennington IIIsystemd_dep = dependency('systemd') 17f06056bcSPatrick Williams 18*62bc968dSPatrick Williamssdbusplus_dep = dependency('sdbusplus') 19*62bc968dSPatrick Williamssdbusplusplus_prog = find_program('sdbus++', native: true) 20*62bc968dSPatrick Williamssdbuspp_gen_meson_prog = find_program('sdbus++-gen-meson', native: true) 21f06056bcSPatrick Williams 22*62bc968dSPatrick Williamspdi_dep = dependency('phosphor-dbus-interfaces') 23e0538848SWilliam A. Kennington III 24e0538848SWilliam A. Kennington III# Find the installed YAML directory, either from a configure option or 25e0538848SWilliam A. Kennington III# by pulling it from the PDI dependency. 26e0538848SWilliam A. Kennington IIIyamldir = get_option('yamldir') 27e0538848SWilliam A. Kennington IIIif yamldir == '' 28e0538848SWilliam A. Kennington III yamldir = pdi_dep.get_variable(pkgconfig: 'yamldir', internal: 'yamldir') 29e0538848SWilliam A. Kennington IIIendif 30e0538848SWilliam A. Kennington III 31e0538848SWilliam A. Kennington IIIsubdir('config') 32e0538848SWilliam A. Kennington IIIsubdir('tools') 33e0538848SWilliam A. Kennington IIIsubdir('lib') 34e0538848SWilliam A. Kennington III 35e0538848SWilliam A. Kennington IIIif get_option('libonly') 36e0538848SWilliam A. Kennington III subdir_done() 37e0538848SWilliam A. Kennington IIIendif 38e0538848SWilliam A. Kennington III 39*62bc968dSPatrick Williamssdeventplus_dep = dependency('sdeventplus') 40f06056bcSPatrick Williams 410bb89f8aSPatrick Williams# Get Cereal dependency. 420b08776aSWilliam A. Kennington IIIcereal_dep = dependency('cereal', required: false) 430b08776aSWilliam A. Kennington IIIhas_cereal = cpp.has_header_symbol( 440b08776aSWilliam A. Kennington III 'cereal/cereal.hpp', 450b08776aSWilliam A. Kennington III 'cereal::specialize', 460b08776aSWilliam A. Kennington III dependencies: cereal_dep, 470b08776aSWilliam A. Kennington III required: false) 480b08776aSWilliam A. Kennington IIIif not has_cereal 490b08776aSWilliam A. Kennington III cereal_opts = import('cmake').subproject_options() 500b08776aSWilliam A. Kennington III cereal_opts.add_cmake_defines({'BUILD_TESTS': 'OFF'}) 510b08776aSWilliam A. Kennington III cereal_proj = import('cmake').subproject( 520b08776aSWilliam A. Kennington III 'cereal', 530b08776aSWilliam A. Kennington III options: cereal_opts, 540b08776aSWilliam A. Kennington III required: false) 550b08776aSWilliam A. Kennington III assert(cereal_proj.found(), 'cereal is required') 563e55d4dbSPatrick Williams cereal_dep = cereal_proj.dependency('cereal') 570bb89f8aSPatrick Williamsendif 580bb89f8aSPatrick Williams 590bb89f8aSPatrick Williams# Generate sdbus++ files. 600bb89f8aSPatrick Williamsgenerated_sources = [] 610bb89f8aSPatrick Williamsgenerated_others = [] 620bb89f8aSPatrick Williamssubdir('gen') 630bb89f8aSPatrick Williamssubdir('gen/xyz') 640bb89f8aSPatrick Williams 65f06056bcSPatrick Williams# Generate callouts-gen.hpp. 66f06056bcSPatrick Williamscallouts_gen = custom_target('callouts-gen.hpp'.underscorify(), 67f06056bcSPatrick Williams input: [ 68f06056bcSPatrick Williams 'callouts/callouts.py', 69f06056bcSPatrick Williams 'callouts/callouts-gen.mako.hpp', 70f06056bcSPatrick Williams get_option('callout_yaml'), 71f06056bcSPatrick Williams ], 72f06056bcSPatrick Williams output: 'callouts-gen.hpp', 73f06056bcSPatrick Williams command: [ python_prog, '@INPUT0@', '-i', '@INPUT2@', '-o', '@OUTPUT0@' ], 74f06056bcSPatrick Williams) 750bb89f8aSPatrick Williams# Generate elog-lookup.cpp 760bb89f8aSPatrick Williamselog_lookup_gen = custom_target('elog-lookup.cpp'.underscorify(), 770bb89f8aSPatrick Williams input: files( 780bb89f8aSPatrick Williams 'tools/elog-gen.py', 790bb89f8aSPatrick Williams 'tools/phosphor-logging/templates/elog-lookup-template.mako.cpp', 800bb89f8aSPatrick Williams ), 810bb89f8aSPatrick Williams output: 'elog-lookup.cpp', 820bb89f8aSPatrick Williams command: [ 830bb89f8aSPatrick Williams python_prog, '@INPUT0@', 840bb89f8aSPatrick Williams '-t', '', 850bb89f8aSPatrick Williams '-m', '@INPUT1@', 860bb89f8aSPatrick Williams '-y', yamldir, 8747c77342STim Lee '-u', meson.current_source_dir() / 'tools/', 880bb89f8aSPatrick Williams '-o', '@OUTPUT0@', 890bb89f8aSPatrick Williams ], 900bb89f8aSPatrick Williams) 910bb89f8aSPatrick Williams# Generate elog-process-metadata.cpp 920bb89f8aSPatrick Williamselog_process_gen = custom_target('elog-process-metadata.cpp'.underscorify(), 930bb89f8aSPatrick Williams input: files( 940bb89f8aSPatrick Williams 'tools/elog-gen.py', 950bb89f8aSPatrick Williams 'tools/phosphor-logging/templates/elog-process-metadata.mako.cpp', 960bb89f8aSPatrick Williams ), 970bb89f8aSPatrick Williams output: 'elog-process-metadata.cpp', 980bb89f8aSPatrick Williams command: [ 990bb89f8aSPatrick Williams python_prog, '@INPUT0@', 1000bb89f8aSPatrick Williams '-t', '', 1010bb89f8aSPatrick Williams '-m', '@INPUT1@', 1020bb89f8aSPatrick Williams '-y', yamldir, 10347c77342STim Lee '-u', meson.current_source_dir() / 'tools/', 1040bb89f8aSPatrick Williams '-o', '@OUTPUT0@', 1050bb89f8aSPatrick Williams ], 1060bb89f8aSPatrick Williams) 107f06056bcSPatrick Williams 108d9f0d646SPatrick Williamslog_manager_ext_sources = [] 109d9f0d646SPatrick Williamslog_manager_ext_deps = [] 1108fd187e4SWilliam A. Kennington IIIlog_manager_ext_args = [] 111d9f0d646SPatrick Williams 112d9f0d646SPatrick Williamssubdir('extensions') 113b2b27085SPatrick Williamssubdir('phosphor-rsyslog-config') 114f06056bcSPatrick Williams 1150bb89f8aSPatrick Williams# Generate daemon. 116a517197dSPatrick Williamslog_manager_sources = [ 1170bb89f8aSPatrick Williams generated_sources, 118e0538848SWilliam A. Kennington III callouts_gen, 1190bb89f8aSPatrick Williams elog_lookup_gen, 1200bb89f8aSPatrick Williams elog_process_gen, 121a517197dSPatrick Williams files( 1220bb89f8aSPatrick Williams 'elog_entry.cpp', 1230bb89f8aSPatrick Williams 'elog_meta.cpp', 1240bb89f8aSPatrick Williams 'elog_serialize.cpp', 1250bb89f8aSPatrick Williams 'extensions.cpp', 1260bb89f8aSPatrick Williams 'log_manager.cpp', 1270bb89f8aSPatrick Williams 'util.cpp', 128a517197dSPatrick Williams ) 129a517197dSPatrick Williams] 130d9f0d646SPatrick Williamslog_manager_deps = [ 131d9f0d646SPatrick Williams cereal_dep, 132e0538848SWilliam A. Kennington III conf_h_dep, 133d9f0d646SPatrick Williams pdi_dep, 134e0538848SWilliam A. Kennington III phosphor_logging_dep, 135d9f0d646SPatrick Williams sdbusplus_dep, 136d9f0d646SPatrick Williams sdeventplus_dep, 137d9f0d646SPatrick Williams] 138a517197dSPatrick Williamsexecutable('phosphor-log-manager', 139a517197dSPatrick Williams log_manager_sources, 140d9f0d646SPatrick Williams log_manager_ext_sources, 141a517197dSPatrick Williams 'log_manager_main.cpp', 1420bb89f8aSPatrick Williams include_directories: include_directories('gen'), 1438fd187e4SWilliam A. Kennington III cpp_args: log_manager_ext_args, 1440bb89f8aSPatrick Williams dependencies: [ 145d9f0d646SPatrick Williams log_manager_deps, 146d9f0d646SPatrick Williams log_manager_ext_deps, 1470bb89f8aSPatrick Williams ], 1480bb89f8aSPatrick Williams install: true, 1490bb89f8aSPatrick Williams) 150ddd4fac0SPatrick Williams# Generate test executables which run in obmc env (qemu, real hardware). 151ddd4fac0SPatrick Williamsexecutable('logging-test', 152ddd4fac0SPatrick Williams 'logging_test.cpp', 153ddd4fac0SPatrick Williams dependencies: [ 154ddd4fac0SPatrick Williams pdi_dep, 155e0538848SWilliam A. Kennington III phosphor_logging_dep, 156ddd4fac0SPatrick Williams sdbusplus_dep, 157ddd4fac0SPatrick Williams ], 158ddd4fac0SPatrick Williams install: true, 159ddd4fac0SPatrick Williams) 160ddd4fac0SPatrick Williamsexecutable('callout-test', 161ddd4fac0SPatrick Williams 'callouts/callout_test.cpp', 162ddd4fac0SPatrick Williams dependencies: [ 163e0538848SWilliam A. Kennington III conf_h_dep, 164ddd4fac0SPatrick Williams pdi_dep, 165e0538848SWilliam A. Kennington III phosphor_logging_dep, 166ddd4fac0SPatrick Williams sdbusplus_dep, 167ddd4fac0SPatrick Williams sdeventplus_dep, 168ddd4fac0SPatrick Williams ], 169ddd4fac0SPatrick Williams install: true, 170ddd4fac0SPatrick Williams) 171a517197dSPatrick Williams 172271408b5SAnton D. Kachalovsubdir('dist') 173271408b5SAnton D. Kachalov 174a517197dSPatrick Williamsif not get_option('tests').disabled() 175a517197dSPatrick Williams subdir('test') 176a517197dSPatrick Williamsendif 177