10aa15907SBrad Bishopproject( 20aa15907SBrad Bishop 'phosphor-objmgr', 3*2a1ef013SPatrick Williams 'c', 4*2a1ef013SPatrick Williams 'cpp', 50aa15907SBrad Bishop default_options: [ 6d6aa5525SBrad Bishop 'buildtype=debugoptimized', 726ed9805SPatrick Williams 'cpp_std=c++23', 80aa15907SBrad Bishop 'warning_level=3', 90aa15907SBrad Bishop 'werror=true', 100aa15907SBrad Bishop ], 110aa15907SBrad Bishop license: 'Apache-2.0', 1226ed9805SPatrick Williams meson_version: '>=1.1.1', 130aa15907SBrad Bishop version: '1.0', 140aa15907SBrad Bishop) 150aa15907SBrad Bishop 168c243629SBrad Bishopcxx = meson.get_compiler('cpp') 178c243629SBrad Bishop 188c243629SBrad Bishopif cxx.has_header('CLI/CLI.hpp') 198c243629SBrad Bishop cli11_dep = declare_dependency() 208c243629SBrad Bishopelse 218c243629SBrad Bishop cli11_dep = dependency('cli11') 228c243629SBrad Bishopendif 23f814e5b3SPatrick Williamsphosphor_logging = dependency('phosphor-logging') 245962db5aSBrad Bishopphosphor_dbus_interfaces = dependency('phosphor-dbus-interfaces') 25f814e5b3SPatrick Williamssdbusplus = dependency('sdbusplus') 26*2a1ef013SPatrick Williamsboost = dependency( 27*2a1ef013SPatrick Williams 'boost', 28*2a1ef013SPatrick Williams version: '>=1.79.0', 29*2a1ef013SPatrick Williams required: false, 30*2a1ef013SPatrick Williams include_type: 'system', 31*2a1ef013SPatrick Williams) 3226ed4a1eSEd Tanousif not boost.found() 3326ed4a1eSEd Tanous subproject('boost', required: false) 3426ed4a1eSEd Tanous boost_inc = include_directories('subprojects/boost_1_79_0/', is_system: true) 3526ed4a1eSEd Tanous boost = declare_dependency(include_directories: boost_inc) 3626ed4a1eSEd Tanous boost = boost.as_system('system') 3726ed4a1eSEd Tanousendif 3841ad8380SEd Tanousadd_project_arguments( 39*2a1ef013SPatrick Williams ['-DBOOST_ASIO_DISABLE_THREADS', '-DBOOST_ASIO_NO_DEPRECATED'], 4041ad8380SEd Tanous language: 'cpp', 4141ad8380SEd Tanous) 42d6aa5525SBrad Bishop 43d6aa5525SBrad Bishopif get_option('buildtype').startswith('debug') 44d6aa5525SBrad Bishop add_project_arguments('-DMAPPER_ENABLE_DEBUG', language: 'cpp') 45d6aa5525SBrad Bishopendif 46d6aa5525SBrad Bishop 47ec87407cSPatrick Williamsif get_option('tests').allowed() 480aa15907SBrad Bishop gtest = dependency('gtest', main: true, disabler: true, required: false) 490aa15907SBrad Bishop gmock = dependency('gmock', disabler: true, required: false) 500aa15907SBrad Bishop if not gtest.found() or not gmock.found() 510aa15907SBrad Bishop gtest_proj = import('cmake').subproject('googletest', required: false) 520aa15907SBrad Bishop if gtest_proj.found() 530aa15907SBrad Bishop gtest = declare_dependency( 540aa15907SBrad Bishop dependencies: [ 550aa15907SBrad Bishop dependency('threads'), 560aa15907SBrad Bishop gtest_proj.dependency('gtest'), 570aa15907SBrad Bishop gtest_proj.dependency('gtest_main'), 58*2a1ef013SPatrick Williams ], 590aa15907SBrad Bishop ) 600aa15907SBrad Bishop gmock = gtest_proj.dependency('gmock') 610aa15907SBrad Bishop else 620aa15907SBrad Bishop assert( 63ec87407cSPatrick Williams not get_option('tests').allowed(), 64*2a1ef013SPatrick Williams 'Googletest is required if tests are enabled', 650aa15907SBrad Bishop ) 660aa15907SBrad Bishop endif 670aa15907SBrad Bishop endif 680aa15907SBrad Bishop subdir('src/test') 690aa15907SBrad Bishop subdir('libmapper/test') 700aa15907SBrad Bishopendif 710aa15907SBrad Bishop 720aa15907SBrad Bishopinstall_headers('libmapper/mapper.h') 730aa15907SBrad Bishop 740aa15907SBrad Bishoplibmapper = library( 750aa15907SBrad Bishop 'mapper', 760aa15907SBrad Bishop 'libmapper/mapper.c', 770aa15907SBrad Bishop dependencies: [dependency('libsystemd')], 780aa15907SBrad Bishop gnu_symbol_visibility: 'hidden', 790aa15907SBrad Bishop version: meson.project_version(), 80*2a1ef013SPatrick Williams install: true, 81*2a1ef013SPatrick Williams) 820aa15907SBrad Bishop 83d4887757SPatrick Williamsmapper_dep = declare_dependency( 84d4887757SPatrick Williams link_with: libmapper, 85d4887757SPatrick Williams include_directories: include_directories('libmapper'), 86d4887757SPatrick Williams dependencies: [dependency('libsystemd')], 87d4887757SPatrick Williams) 88d4887757SPatrick Williams 890aa15907SBrad Bishopimport('pkgconfig').generate( 900aa15907SBrad Bishop name: 'libmapper', 910aa15907SBrad Bishop description: 'OpenBMC service discovery utility library', 920aa15907SBrad Bishop version: meson.project_version(), 93*2a1ef013SPatrick Williams libraries: libmapper, 94*2a1ef013SPatrick Williams) 950aa15907SBrad Bishop 960aa15907SBrad Bishopexecutable( 970aa15907SBrad Bishop 'mapper', 980aa15907SBrad Bishop 'libmapper/app.c', 990aa15907SBrad Bishop link_with: libmapper, 1000aa15907SBrad Bishop dependencies: [dependency('libsystemd')], 101*2a1ef013SPatrick Williams install: true, 102*2a1ef013SPatrick Williams) 1030aa15907SBrad Bishop 104fb853663SAndrew Jefferymapperx = executable( 1050aa15907SBrad Bishop 'mapperx', 1060aa15907SBrad Bishop [ 1070aa15907SBrad Bishop 'src/main.cpp', 1080aa15907SBrad Bishop 'src/processing.cpp', 1090aa15907SBrad Bishop 'src/associations.cpp', 110aba14d3dSWilly Tu 'src/handler.cpp', 1110aa15907SBrad Bishop ], 1120aa15907SBrad Bishop dependencies: [ 11326ed4a1eSEd Tanous boost, 1140aa15907SBrad Bishop dependency('libsystemd'), 1155962db5aSBrad Bishop phosphor_dbus_interfaces, 1160aa15907SBrad Bishop phosphor_logging, 1170aa15907SBrad Bishop sdbusplus, 1180aa15907SBrad Bishop dependency('threads'), 119883d91d7SKonstantin Aladyshev dependency('tinyxml2', default_options: ['tests=false']), 1200aa15907SBrad Bishop ], 1212ec9157fSBrad Bishop install: true, 1222ec9157fSBrad Bishop install_dir: join_paths( 123*2a1ef013SPatrick Williams get_option('prefix'), 124*2a1ef013SPatrick Williams get_option('libexecdir'), 125*2a1ef013SPatrick Williams meson.project_name(), 126*2a1ef013SPatrick Williams ), 1270aa15907SBrad Bishop) 128fb853663SAndrew Jefferymeson.override_find_program('mapperx', mapperx) 1290aa15907SBrad Bishop 1302ec9157fSBrad Bishopsystemd_system_unit_dir = dependency('systemd').get_variable( 131*2a1ef013SPatrick Williams 'systemdsystemunitdir', 1322ec9157fSBrad Bishop) 1332ec9157fSBrad Bishop 1342ec9157fSBrad Bishopconf = configuration_data() 1352ec9157fSBrad Bishopconf.set('BINDIR', join_paths(get_option('prefix'), get_option('bindir'))) 136*2a1ef013SPatrick Williamsconf.set( 137*2a1ef013SPatrick Williams 'LIBEXECDIR', 138*2a1ef013SPatrick Williams join_paths(get_option('prefix'), get_option('libexecdir')), 139*2a1ef013SPatrick Williams) 1402ec9157fSBrad Bishop 1412ec9157fSBrad Bishopunit_files = [ 1422ec9157fSBrad Bishop 'xyz.openbmc_project.ObjectMapper.service', 1432ec9157fSBrad Bishop 'mapper-subtree-remove@.service', 144*2a1ef013SPatrick Williams 'mapper-wait@.service', 1452ec9157fSBrad Bishop] 1462ec9157fSBrad Bishop 1472ec9157fSBrad Bishopforeach u : unit_files 1482ec9157fSBrad Bishop configure_file( 1492ec9157fSBrad Bishop configuration: conf, 1502ec9157fSBrad Bishop input: join_paths('src/systemd', u) + '.in', 1512ec9157fSBrad Bishop install: true, 1522ec9157fSBrad Bishop install_dir: systemd_system_unit_dir, 153*2a1ef013SPatrick Williams output: u, 1542ec9157fSBrad Bishop ) 1552ec9157fSBrad Bishopendforeach 1562ec9157fSBrad Bishop 1572ec9157fSBrad Bishopdbus_system_bus_services_dir = dependency('dbus-1').get_variable( 15840302742SPatrick Williams 'system_bus_services_dir', 159*2a1ef013SPatrick Williams pkgconfig_define: ['prefix', get_option('prefix')], 1602ec9157fSBrad Bishop) 1612ec9157fSBrad Bishop 1622ec9157fSBrad Bishopinstall_data( 1632ec9157fSBrad Bishop 'src/dbus/xyz.openbmc_project.ObjectMapper.service', 164*2a1ef013SPatrick Williams install_dir: dbus_system_bus_services_dir, 165*2a1ef013SPatrick Williams) 1662ec9157fSBrad Bishop 1672ec9157fSBrad Bishopinstall_data( 1682ec9157fSBrad Bishop 'src/dbus/xyz.openbmc_project.ObjectMapper.conf', 169*2a1ef013SPatrick Williams install_dir: get_option('datadir') / 'dbus-1' / 'system.d', 170*2a1ef013SPatrick Williams) 1712ec9157fSBrad Bishop 17242e5aee2SBrad Bishopif not get_option('unit-failure-monitor').disabled() 1730aa15907SBrad Bishop executable( 1740aa15907SBrad Bishop 'phosphor-unit-failure-monitor', 175*2a1ef013SPatrick Williams ['fail-monitor/main.cpp', 'fail-monitor/monitor.cpp'], 176*2a1ef013SPatrick Williams dependencies: [cli11_dep, phosphor_logging], 177*2a1ef013SPatrick Williams install: true, 1780aa15907SBrad Bishop ) 17942e5aee2SBrad Bishopendif 180