xref: /openbmc/telemetry/meson.build (revision dcc4e193)
164b75a5bSKrzysztof Grobelnyproject(
264b75a5bSKrzysztof Grobelny    'Telemetry',
364b75a5bSKrzysztof Grobelny    'cpp',
40e29f439SWludzik, Jozef    meson_version: '>=0.54.3',
564b75a5bSKrzysztof Grobelny    default_options: [
664b75a5bSKrzysztof Grobelny        'buildtype=debugoptimized',
764b75a5bSKrzysztof Grobelny        'cpp_std=c++17',
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
1864b75a5bSKrzysztof Grobelnycpp = meson.get_compiler('cpp')
1964b75a5bSKrzysztof Grobelnyadd_project_arguments(
2064b75a5bSKrzysztof Grobelny    cpp.get_supported_arguments([
2164b75a5bSKrzysztof Grobelny        '-DBOOST_ASIO_DISABLE_THREADS',
2264b75a5bSKrzysztof Grobelny        '-DBOOST_ALL_NO_LIB',
2364b75a5bSKrzysztof Grobelny        '-DBOOST_SYSTEM_NO_DEPRECATED',
2464b75a5bSKrzysztof Grobelny        '-DBOOST_ASIO_NO_DEPRECATED',
2564b75a5bSKrzysztof Grobelny        '-DBOOST_NO_RTTI',
2664b75a5bSKrzysztof Grobelny        '-DBOOST_NO_TYPEID',
27596a9945SWludzik, Jozef        # TODO: Removed below arg after upgrade to Boost 1.75
28596a9945SWludzik, Jozef        '-DBOOST_ALLOW_DEPRECATED_HEADERS',
2964b75a5bSKrzysztof Grobelny        '-Wno-unused-parameter',
3064b75a5bSKrzysztof Grobelny    ]),
3164b75a5bSKrzysztof Grobelny    language: 'cpp'
3264b75a5bSKrzysztof Grobelny)
3364b75a5bSKrzysztof Grobelny
34b5645947SKrzysztof Grobelnyboost = dependency(
35b5645947SKrzysztof Grobelny    'boost',
36b5645947SKrzysztof Grobelny    version: '>=1.74.0',
37b5645947SKrzysztof Grobelny    required: false,
38b5645947SKrzysztof Grobelny    modules: ['coroutine'])
39596a9945SWludzik, Jozefassert(boost.found(),
40596a9945SWludzik, Jozef       'Missing Boost 1.74.0 or higher, as WA you can set BOOST_ROOT ' +
41596a9945SWludzik, Jozef       'environemt to point at boost build. To build a boost you can use ' +
42596a9945SWludzik, Jozef       'script ./scripts/boost_build_1.74.0.sh')
4364b75a5bSKrzysztof Grobelny
4464b75a5bSKrzysztof Grobelnyphosphor_logging = dependency('phosphor-logging', required: false)
4564b75a5bSKrzysztof Grobelnyif not phosphor_logging.found()
4664b75a5bSKrzysztof Grobelny    subproject('phosphor-logging', required: false)
4764b75a5bSKrzysztof Grobelny    phosphor_logging = declare_dependency(
4864b75a5bSKrzysztof Grobelny        include_directories: 'subprojects/phosphor-logging'
4964b75a5bSKrzysztof Grobelny    )
5064b75a5bSKrzysztof Grobelnyendif
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(),
6832859b63SKarol Niczyj    '-DTELEMETRY_MAX_REPORT_NAME_LENGTH=' +
6932859b63SKarol Niczyj        get_option('max-report-name-length').to_string(),
70503c1589SWludzik, Jozef    language: 'cpp'
71503c1589SWludzik, Jozef)
72503c1589SWludzik, Jozef
7364b75a5bSKrzysztof Grobelnyexecutable(
7464b75a5bSKrzysztof Grobelny    'telemetry',
7564b75a5bSKrzysztof Grobelny    [
76f763c9e3SSzymon Dompke        'src/discrete_threshold.cpp',
7764b75a5bSKrzysztof Grobelny        'src/main.cpp',
78c8e3a64aSKrzysztof Grobelny        'src/metric.cpp',
791477fe6aSWludzik, Jozef        'src/numeric_threshold.cpp',
80f763c9e3SSzymon Dompke        'src/on_change_threshold.cpp',
817f06f613SKrzysztof Grobelny        'src/persistent_json_storage.cpp',
82cb88cfdfSWludzik, Jozef        'src/report.cpp',
832f9f9b87SWludzik, Jozef        'src/report_factory.cpp',
8464b75a5bSKrzysztof Grobelny        'src/report_manager.cpp',
85b5645947SKrzysztof Grobelny        'src/sensor.cpp',
867f06f613SKrzysztof Grobelny        'src/sensor_cache.cpp',
8776833cb5SWludzik, Jozef        'src/trigger.cpp',
88d960e1f3SWludzik, Jozef        'src/trigger_actions.cpp',
8976833cb5SWludzik, Jozef        'src/trigger_factory.cpp',
9076833cb5SWludzik, Jozef        'src/trigger_manager.cpp',
91*dcc4e193SKrzysztof Grobelny        'src/types/report_types.cpp',
924416fce6SCezary Zwolak        'src/utils/conversion_trigger.cpp',
9364b75a5bSKrzysztof Grobelny    ],
9464b75a5bSKrzysztof Grobelny    dependencies: [
9564b75a5bSKrzysztof Grobelny        boost,
9673da6906SKrzysztof Grobelny        nlohmann_json,
9764b75a5bSKrzysztof Grobelny        sdbusplus,
9864b75a5bSKrzysztof Grobelny        phosphor_logging,
9964b75a5bSKrzysztof Grobelny    ],
10064b75a5bSKrzysztof Grobelny    include_directories: 'src',
10164b75a5bSKrzysztof Grobelny    install: true,
10264b75a5bSKrzysztof Grobelny    install_dir: get_option('prefix') / get_option('bindir'),
10364b75a5bSKrzysztof Grobelny    pie: true,
10464b75a5bSKrzysztof Grobelny)
10564b75a5bSKrzysztof Grobelny
10664b75a5bSKrzysztof Grobelnyconfigure_file(
10764b75a5bSKrzysztof Grobelny    input: 'xyz.openbmc_project.Telemetry.service.in',
10864b75a5bSKrzysztof Grobelny    output: 'xyz.openbmc_project.Telemetry.service',
10964b75a5bSKrzysztof Grobelny    configuration: {
11064b75a5bSKrzysztof Grobelny        'bindir': get_option('prefix') / get_option('bindir'),
11164b75a5bSKrzysztof Grobelny    },
11264b75a5bSKrzysztof Grobelny    install: true,
11364b75a5bSKrzysztof Grobelny    install_dir: systemd.get_pkgconfig_variable('systemdsystemunitdir'),
11464b75a5bSKrzysztof Grobelny)
11573da6906SKrzysztof Grobelny
11673da6906SKrzysztof Grobelnyif get_option('buildtest')
11773da6906SKrzysztof Grobelny    subdir('tests')
11873da6906SKrzysztof Grobelnyendif
119