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