xref: /openbmc/telemetry/meson.build (revision cd5b0b7e)
164b75a5bSKrzysztof Grobelnyproject(
264b75a5bSKrzysztof Grobelny    'Telemetry',
364b75a5bSKrzysztof Grobelny    'cpp',
4934201f7SPatrick Williams    meson_version: '>=0.57.0',
564b75a5bSKrzysztof Grobelny    default_options: [
664b75a5bSKrzysztof Grobelny        'buildtype=debugoptimized',
7934201f7SPatrick Williams        'cpp_std=c++20',
8a4bf740cSWludzik, Jozef        # TODO: Without RTTI telemetry does not build using Boost 1.74.0
9a4bf740cSWludzik, Jozef        # https://github.com/chriskohlhoff/asio/issues/533
10a4bf740cSWludzik, Jozef        #'cpp_rtti=false',
1164b75a5bSKrzysztof Grobelny        'warning_level=3',
1264b75a5bSKrzysztof Grobelny        'werror=true',
1364b75a5bSKrzysztof Grobelny        'b_lto=true',
1464b75a5bSKrzysztof Grobelny    ],
1564b75a5bSKrzysztof Grobelny    license: 'Apache-2.0',
1664b75a5bSKrzysztof Grobelny)
1764b75a5bSKrzysztof Grobelny
18a74e44f6SLukasz Kazmierczaksummary({'Fast build with link-time optimizer disabled':
19a74e44f6SLukasz Kazmierczak            not get_option('b_lto')}, section: 'General')
20a74e44f6SLukasz Kazmierczak
2164b75a5bSKrzysztof Grobelnycpp = meson.get_compiler('cpp')
2264b75a5bSKrzysztof Grobelnyadd_project_arguments(
2364b75a5bSKrzysztof Grobelny    cpp.get_supported_arguments([
2464b75a5bSKrzysztof Grobelny        '-DBOOST_ASIO_DISABLE_THREADS',
2564b75a5bSKrzysztof Grobelny        '-DBOOST_ALL_NO_LIB',
2664b75a5bSKrzysztof Grobelny        '-DBOOST_SYSTEM_NO_DEPRECATED',
2764b75a5bSKrzysztof Grobelny        '-DBOOST_ASIO_NO_DEPRECATED',
2864b75a5bSKrzysztof Grobelny        '-DBOOST_NO_RTTI',
2964b75a5bSKrzysztof Grobelny        '-DBOOST_NO_TYPEID',
30596a9945SWludzik, Jozef        # TODO: Removed below arg after upgrade to Boost 1.75
31596a9945SWludzik, Jozef        '-DBOOST_ALLOW_DEPRECATED_HEADERS',
3264b75a5bSKrzysztof Grobelny        '-Wno-unused-parameter',
3364b75a5bSKrzysztof Grobelny    ]),
3464b75a5bSKrzysztof Grobelny    language: 'cpp'
3564b75a5bSKrzysztof Grobelny)
3664b75a5bSKrzysztof Grobelny
37b5645947SKrzysztof Grobelnyboost = dependency(
38b5645947SKrzysztof Grobelny    'boost',
39b5645947SKrzysztof Grobelny    version: '>=1.74.0',
40b5645947SKrzysztof Grobelny    required: false,
41b5645947SKrzysztof Grobelny    modules: ['coroutine'])
42596a9945SWludzik, Jozefassert(boost.found(),
43596a9945SWludzik, Jozef       'Missing Boost 1.74.0 or higher, as WA you can set BOOST_ROOT ' +
44596a9945SWludzik, Jozef       'environemt to point at boost build. To build a boost you can use ' +
45596a9945SWludzik, Jozef       'script ./scripts/boost_build_1.74.0.sh')
4664b75a5bSKrzysztof Grobelny
47937eaaf8SPatrick Williamsphosphor_logging = dependency(
48937eaaf8SPatrick Williams    'phosphor-logging',
49937eaaf8SPatrick Williams    fallback: ['phosphor-logging', 'phosphor_logging_dep'],
5064b75a5bSKrzysztof Grobelny)
5164b75a5bSKrzysztof Grobelny
52596a9945SWludzik, Jozefsdbusplus = dependency('sdbusplus', fallback: ['sdbusplus', 'sdbusplus_dep'])
5364b75a5bSKrzysztof Grobelnysystemd = dependency('systemd')
5464b75a5bSKrzysztof Grobelny
5573da6906SKrzysztof Grobelnyif cpp.has_header('nlohmann/json.hpp')
5673da6906SKrzysztof Grobelny    nlohmann_json = declare_dependency()
5773da6906SKrzysztof Grobelnyelse
58596a9945SWludzik, Jozef    nlohmann_json = dependency('nlohmann_json',
59596a9945SWludzik, Jozef                               fallback: ['nlohmann', 'nlohmann_json_dep'])
6073da6906SKrzysztof Grobelnyendif
6173da6906SKrzysztof Grobelny
62503c1589SWludzik, Jozefadd_project_arguments(
63503c1589SWludzik, Jozef    '-DTELEMETRY_MAX_REPORTS=' + get_option('max-reports').to_string(),
64596a9945SWludzik, Jozef    '-DTELEMETRY_MAX_READING_PARAMS=' +
65596a9945SWludzik, Jozef        get_option('max-reading-parameters').to_string(),
66503c1589SWludzik, Jozef    '-DTELEMETRY_MIN_INTERVAL=' + get_option('min-interval').to_string(),
6776833cb5SWludzik, Jozef    '-DTELEMETRY_MAX_TRIGGERS=' + get_option('max-triggers').to_string(),
68e28aa53dSSzymon Dompke    '-DTELEMETRY_MAX_DBUS_PATH_LENGTH=' +
69e28aa53dSSzymon Dompke        get_option('max-dbus-path-length').to_string(),
70*cd5b0b7eSAnkita Vilas Gawade    '-DTELEMETRY_MAX_APPEND_LIMIT=' +
71*cd5b0b7eSAnkita Vilas Gawade        get_option('max-append-limit').to_string(),
72503c1589SWludzik, Jozef    language: 'cpp'
73503c1589SWludzik, Jozef)
74503c1589SWludzik, Jozef
7564b75a5bSKrzysztof Grobelnyexecutable(
7664b75a5bSKrzysztof Grobelny    'telemetry',
7764b75a5bSKrzysztof Grobelny    [
788069771cSKrzysztof Grobelny        'src/details/collection_function.cpp',
79f763c9e3SSzymon Dompke        'src/discrete_threshold.cpp',
8064b75a5bSKrzysztof Grobelny        'src/main.cpp',
81c8e3a64aSKrzysztof Grobelny        'src/metric.cpp',
821477fe6aSWludzik, Jozef        'src/numeric_threshold.cpp',
83f763c9e3SSzymon Dompke        'src/on_change_threshold.cpp',
847f06f613SKrzysztof Grobelny        'src/persistent_json_storage.cpp',
85cb88cfdfSWludzik, Jozef        'src/report.cpp',
862f9f9b87SWludzik, Jozef        'src/report_factory.cpp',
8764b75a5bSKrzysztof Grobelny        'src/report_manager.cpp',
88b5645947SKrzysztof Grobelny        'src/sensor.cpp',
897f06f613SKrzysztof Grobelny        'src/sensor_cache.cpp',
9076833cb5SWludzik, Jozef        'src/trigger.cpp',
91d960e1f3SWludzik, Jozef        'src/trigger_actions.cpp',
9276833cb5SWludzik, Jozef        'src/trigger_factory.cpp',
9376833cb5SWludzik, Jozef        'src/trigger_manager.cpp',
94dcc4e193SKrzysztof Grobelny        'src/types/report_types.cpp',
954416fce6SCezary Zwolak        'src/utils/conversion_trigger.cpp',
96b8cc78ddSKrzysztof Grobelny        'src/utils/generate_id.cpp',
9764b75a5bSKrzysztof Grobelny    ],
9864b75a5bSKrzysztof Grobelny    dependencies: [
9964b75a5bSKrzysztof Grobelny        boost,
10073da6906SKrzysztof Grobelny        nlohmann_json,
10164b75a5bSKrzysztof Grobelny        sdbusplus,
10264b75a5bSKrzysztof Grobelny        phosphor_logging,
10364b75a5bSKrzysztof Grobelny    ],
10464b75a5bSKrzysztof Grobelny    include_directories: 'src',
10564b75a5bSKrzysztof Grobelny    install: true,
10664b75a5bSKrzysztof Grobelny    install_dir: get_option('prefix') / get_option('bindir'),
10764b75a5bSKrzysztof Grobelny    pie: true,
10864b75a5bSKrzysztof Grobelny)
10964b75a5bSKrzysztof Grobelny
11064b75a5bSKrzysztof Grobelnyconfigure_file(
11164b75a5bSKrzysztof Grobelny    input: 'xyz.openbmc_project.Telemetry.service.in',
11264b75a5bSKrzysztof Grobelny    output: 'xyz.openbmc_project.Telemetry.service',
11364b75a5bSKrzysztof Grobelny    configuration: {
11464b75a5bSKrzysztof Grobelny        'bindir': get_option('prefix') / get_option('bindir'),
11564b75a5bSKrzysztof Grobelny    },
11664b75a5bSKrzysztof Grobelny    install: true,
117bdf8719fSPatrick Williams    install_dir: systemd.get_variable(pkgconfig: 'systemdsystemunitdir'),
11864b75a5bSKrzysztof Grobelny)
11973da6906SKrzysztof Grobelny
12073da6906SKrzysztof Grobelnyif get_option('buildtest')
12173da6906SKrzysztof Grobelny    subdir('tests')
12273da6906SKrzysztof Grobelnyendif
123