1project( 2 'phosphor-objmgr', 3 'c', 'cpp', 4 default_options: [ 5 'buildtype=debugoptimized', 6 'cpp_std=c++20', 7 'warning_level=3', 8 'werror=true', 9 ], 10 license: 'Apache-2.0', 11 meson_version: '>=0.57.0', 12 version: '1.0', 13) 14 15phosphor_logging = dependency('phosphor-logging') 16phosphor_dbus_interfaces = dependency('phosphor-dbus-interfaces') 17sdbusplus = dependency('sdbusplus') 18boost = dependency('boost', version : '>=1.79.0', required: false, include_type: 'system') 19if not boost.found() 20 subproject('boost', required: false) 21 boost_inc = include_directories('subprojects/boost_1_79_0/', is_system:true) 22 boost = declare_dependency(include_directories : boost_inc) 23 boost = boost.as_system('system') 24endif 25 26if get_option('buildtype').startswith('debug') 27 add_project_arguments('-DMAPPER_ENABLE_DEBUG', language : 'cpp') 28endif 29 30if get_option('tests').enabled() 31 gtest = dependency('gtest', main: true, disabler: true, required: false) 32 gmock = dependency('gmock', disabler: true, required: false) 33 if not gtest.found() or not gmock.found() 34 gtest_proj = import('cmake').subproject('googletest', required: false) 35 if gtest_proj.found() 36 gtest = declare_dependency( 37 dependencies: [ 38 dependency('threads'), 39 gtest_proj.dependency('gtest'), 40 gtest_proj.dependency('gtest_main'), 41 ] 42 ) 43 gmock = gtest_proj.dependency('gmock') 44 else 45 assert( 46 not get_option('tests').enabled(), 47 'Googletest is required if tests are enabled' 48 ) 49 endif 50 endif 51 subdir('src/test') 52 subdir('libmapper/test') 53endif 54 55install_headers('libmapper/mapper.h') 56 57libmapper = library( 58 'mapper', 59 'libmapper/mapper.c', 60 dependencies: [ dependency('libsystemd') ], 61 gnu_symbol_visibility: 'hidden', 62 version: meson.project_version(), 63 install: true) 64 65mapper_dep = declare_dependency( 66 link_with: libmapper, 67 include_directories: include_directories('libmapper'), 68 dependencies: [ dependency('libsystemd') ], 69) 70 71import('pkgconfig').generate( 72 name: 'libmapper', 73 description: 'OpenBMC service discovery utility library', 74 version: meson.project_version(), 75 libraries: libmapper) 76 77executable( 78 'mapper', 79 'libmapper/app.c', 80 link_with: libmapper, 81 dependencies: [ dependency('libsystemd') ], 82 install: true) 83 84executable( 85 'mapperx', 86 [ 87 'src/main.cpp', 88 'src/argument.cpp', 89 'src/processing.cpp', 90 'src/associations.cpp', 91 ], 92 dependencies: [ 93 boost, 94 dependency('libsystemd'), 95 phosphor_dbus_interfaces, 96 phosphor_logging, 97 sdbusplus, 98 dependency('systemd'), 99 dependency('threads'), 100 dependency('tinyxml2'), 101 ], 102 install: true 103) 104 105executable( 106 'phosphor-unit-failure-monitor', 107 [ 108 'fail-monitor/argument.cpp', 109 'fail-monitor/main.cpp', 110 'fail-monitor/monitor.cpp', 111 ], 112 dependencies: [ 113 phosphor_logging, 114 ], 115 install: true 116) 117