1project('phosphor-logging', 'cpp', 2 meson_version: '>= 0.57.0', 3 default_options: [ 4 'buildtype=debugoptimized', 5 'cpp_std=c++20', 6 'warning_level=3', 7 'werror=true', 8 ], 9 version: '1.0.0', 10) 11 12python_prog = find_program('python3') 13 14# Get sdbusplus dependency. 15sdbusplus_dep = dependency('sdbusplus', required: false) 16if sdbusplus_dep.found() 17 sdbusplusplus_prog = find_program('sdbus++') 18 sdbuspp_gen_meson_prog = find_program('sdbus++-gen-meson') 19else 20 sdbusplus_proj = subproject('sdbusplus', required: true) 21 sdbusplus_dep = sdbusplus_proj.get_variable('sdbusplus_dep') 22 sdbusplusplus_prog = sdbusplus_proj.get_variable('sdbusplusplus_prog') 23 sdbuspp_gen_meson_prog = sdbusplus_proj.get_variable( 24 'sdbuspp_gen_meson_prog' 25 ) 26endif 27 28# Get PDI and sdeventplus dependency. 29pdi_dep = dependency( 30 'phosphor-dbus-interfaces', 31 fallback: ['phosphor-dbus-interfaces', 'phosphor_dbus_interfaces_dep'], 32) 33sdeventplus_dep = dependency( 34 'sdeventplus', 35 fallback: ['sdeventplus', 'sdeventplus_dep' ], 36) 37 38# Find the installed YAML directory, either from a configure option or 39# by pulling it from the PDI dependency. 40yamldir = get_option('yamldir') 41if yamldir == '' 42 yamldir = pdi_dep.get_variable(pkgconfig: 'yamldir', internal: 'yamldir') 43endif 44 45# Create config.h with constants that use to come from autoconf. 46conf_data = configuration_data() 47configure_file( 48 input: 'config.h.meson', 49 output: 'config.h', 50 configuration: conf_data, 51) 52 53# Generate callouts-gen.hpp. 54callouts_gen = custom_target('callouts-gen.hpp'.underscorify(), 55 input: [ 56 'callouts/callouts.py', 57 'callouts/callouts-gen.mako.hpp', 58 get_option('callout_yaml'), 59 ], 60 output: 'callouts-gen.hpp', 61 command: [ python_prog, '@INPUT0@', '-i', '@INPUT2@', '-o', '@OUTPUT0@' ], 62) 63 64subdir('phosphor-logging') 65 66# Build libphosphor-logging. 67libphosphor_logging = library( 68 'phosphor_logging', 69 files( 70 'elog.cpp', 71 'elog_meta.cpp', 72 'sdjournal.cpp', 73 ), 74 callouts_gen, 75 elog_errors_gen, 76 dependencies: [ sdbusplus_dep, pdi_dep, sdeventplus_dep ], 77 version: meson.project_version(), 78 install: true, 79) 80 81import('pkgconfig').generate( 82 libphosphor_logging, 83 name: meson.project_name(), 84 version: meson.project_version(), 85 requires: [ 86 'libsystemd', 87 'phosphor-dbus-interfaces', 88 'sdbusplus', 89 ], 90 description: 'Phosphor logging utilities', 91) 92 93# Create dependency for use as subproject. 94phosphor_logging_dep = declare_dependency( 95 include_directories: include_directories('.'), 96 link_with: libphosphor_logging, 97 sources: [ callouts_gen, elog_errors_gen ], 98 dependencies: [ sdbusplus_dep, pdi_dep, sdeventplus_dep], 99) 100