xref: /openbmc/ipmbbridge/meson.build (revision 43d840e7efaaf313755aa867b7600f8777321c47)
1f254b06fSPatrick Williamsproject(
2f254b06fSPatrick Williams    'ipmbbridge',
3f254b06fSPatrick Williams    'cpp',
4f254b06fSPatrick Williams    version: '0.1',
5e6b07fafSPatrick Williams    meson_version: '>=1.1.1',
6f254b06fSPatrick Williams    default_options: [
7f254b06fSPatrick Williams        'warning_level=3',
8f254b06fSPatrick Williams        'werror=true',
9e6b07fafSPatrick Williams        'cpp_std=c++23',
10dcd3037bSKonstantin Aladyshev        'b_lto=true',
11f254b06fSPatrick Williams    ],
12f254b06fSPatrick Williams)
13f254b06fSPatrick Williams
14f254b06fSPatrick Williamscpp = meson.get_compiler('cpp')
15f254b06fSPatrick Williamsadd_project_arguments(
16*43d840e7SPatrick Williams    cpp.get_supported_arguments(
17*43d840e7SPatrick Williams        [
18f254b06fSPatrick Williams            '-DBOOST_ERROR_CODE_HEADER_ONLY',
19f254b06fSPatrick Williams            '-DBOOST_SYSTEM_NO_DEPRECATED',
20f254b06fSPatrick Williams            '-DBOOST_ALL_NO_LIB',
21f254b06fSPatrick Williams            '-DBOOST_NO_RTTI',
22f254b06fSPatrick Williams            '-DBOOST_NO_TYPEID',
23f254b06fSPatrick Williams            '-DBOOST_ASIO_DISABLE_THREADS',
24*43d840e7SPatrick Williams        ],
25*43d840e7SPatrick Williams    ),
26f254b06fSPatrick Williams    language: 'cpp',
27f254b06fSPatrick Williams)
28f254b06fSPatrick Williams
29f254b06fSPatrick Williams
30f254b06fSPatrick Williamsboost_dep = dependency(
31f254b06fSPatrick Williams    'boost',
32f254b06fSPatrick Williams    modules: ['coroutine'],
33f254b06fSPatrick Williams    include_type: 'system',
34dcd3037bSKonstantin Aladyshev    required: false,
35f254b06fSPatrick Williams)
36dcd3037bSKonstantin Aladyshev
37dcd3037bSKonstantin Aladyshevif not boost_dep.found()
38dcd3037bSKonstantin Aladyshev    cmake = import('cmake')
39dcd3037bSKonstantin Aladyshev    opt = cmake.subproject_options()
40*43d840e7SPatrick Williams    opt.add_cmake_defines(
41*43d840e7SPatrick Williams        {'BOOST_INCLUDE_LIBRARIES': 'asio;callable_traits;context;coroutine'},
42*43d840e7SPatrick Williams    )
43dcd3037bSKonstantin Aladyshev    boost_cmake = cmake.subproject('boost', required: true, options: opt)
44dcd3037bSKonstantin Aladyshev    boost_asio = boost_cmake.dependency('boost_asio').as_system()
45dcd3037bSKonstantin Aladyshev    boost_callable_traits = boost_cmake.dependency('boost_callable_traits').as_system()
46dcd3037bSKonstantin Aladyshev    boost_context = boost_cmake.dependency('boost_context').as_system()
47dcd3037bSKonstantin Aladyshev    boost_coroutine = boost_cmake.dependency('boost_coroutine').as_system()
48*43d840e7SPatrick Williams    boost_dep = [
49*43d840e7SPatrick Williams        boost_asio,
50*43d840e7SPatrick Williams        boost_callable_traits,
51*43d840e7SPatrick Williams        boost_context,
52*43d840e7SPatrick Williams        boost_coroutine,
53*43d840e7SPatrick Williams    ]
54dcd3037bSKonstantin Aladyshevendif
55dcd3037bSKonstantin Aladyshev
56f254b06fSPatrick Williamsi2c_dep = cpp.find_library('i2c')
570afdd8ccSPatrick Williamsnlohmann_json_dep = dependency('nlohmann_json', include_type: 'system')
58f254b06fSPatrick Williamsphosphor_logging_dep = dependency('phosphor-logging')
59f254b06fSPatrick Williamssdbusplus_dep = dependency('sdbusplus')
60f254b06fSPatrick Williamssystemd_dep = dependency('systemd')
61f254b06fSPatrick Williams
62f254b06fSPatrick Williamsexecutable(
63315002a0SJorge Cisneros    'ipmbbridged',
64f254b06fSPatrick Williams    'ipmbbridged.cpp',
65f254b06fSPatrick Williams    'ipmbutils.cpp',
66f254b06fSPatrick Williams    dependencies: [
67f254b06fSPatrick Williams        boost_dep,
68f254b06fSPatrick Williams        i2c_dep,
69f254b06fSPatrick Williams        nlohmann_json_dep,
70f254b06fSPatrick Williams        phosphor_logging_dep,
71f254b06fSPatrick Williams        sdbusplus_dep,
72f254b06fSPatrick Williams    ],
73f254b06fSPatrick Williams    install: true,
74f254b06fSPatrick Williams)
75f254b06fSPatrick Williams
76f254b06fSPatrick Williamsinstall_data(
77f254b06fSPatrick Williams    'ipmb.service',
783e9bd93cSPatrick Williams    install_dir: systemd_dep.get_variable('systemdsystemunitdir'),
79f254b06fSPatrick Williams)
80f254b06fSPatrick Williams
81f254b06fSPatrick Williamsinstall_data(
82f254b06fSPatrick Williams    'ipmb-channels.json',
83f254b06fSPatrick Williams    install_dir: get_option('datadir') / 'ipmbbridge',
84f254b06fSPatrick Williams)
85