project( 'ipmbbridge', 'cpp', version: '0.1', meson_version: '>=1.1.1', default_options: [ 'warning_level=3', 'werror=true', 'cpp_std=c++23', 'b_lto=true', ], ) cpp = meson.get_compiler('cpp') add_project_arguments( cpp.get_supported_arguments( [ '-DBOOST_ERROR_CODE_HEADER_ONLY', '-DBOOST_SYSTEM_NO_DEPRECATED', '-DBOOST_ALL_NO_LIB', '-DBOOST_NO_RTTI', '-DBOOST_NO_TYPEID', '-DBOOST_ASIO_DISABLE_THREADS', ], ), language: 'cpp', ) boost_dep = dependency( 'boost', modules: ['coroutine'], include_type: 'system', required: false, ) if not boost_dep.found() cmake = import('cmake') opt = cmake.subproject_options() opt.add_cmake_defines( {'BOOST_INCLUDE_LIBRARIES': 'asio;callable_traits;context;coroutine'}, ) boost_cmake = cmake.subproject('boost', required: true, options: opt) boost_asio = boost_cmake.dependency('boost_asio').as_system() boost_callable_traits = boost_cmake.dependency('boost_callable_traits').as_system() boost_context = boost_cmake.dependency('boost_context').as_system() boost_coroutine = boost_cmake.dependency('boost_coroutine').as_system() boost_dep = [ boost_asio, boost_callable_traits, boost_context, boost_coroutine, ] endif i2c_dep = cpp.find_library('i2c') nlohmann_json_dep = dependency('nlohmann_json', include_type: 'system') phosphor_logging_dep = dependency('phosphor-logging') sdbusplus_dep = dependency('sdbusplus') systemd_dep = dependency('systemd') executable( 'ipmbbridged', 'ipmbbridged.cpp', 'ipmbutils.cpp', dependencies: [ boost_dep, i2c_dep, nlohmann_json_dep, phosphor_logging_dep, sdbusplus_dep, ], install: true, ) install_data( 'ipmb.service', install_dir: systemd_dep.get_variable('systemdsystemunitdir'), ) install_data( 'ipmb-channels.json', install_dir: get_option('datadir') / 'ipmbbridge', )