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 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 4764b75a5bSKrzysztof Grobelnyphosphor_logging = dependency('phosphor-logging', required: false) 4864b75a5bSKrzysztof Grobelnyif not phosphor_logging.found() 4964b75a5bSKrzysztof Grobelny subproject('phosphor-logging', required: false) 5064b75a5bSKrzysztof Grobelny phosphor_logging = declare_dependency( 5164b75a5bSKrzysztof Grobelny include_directories: 'subprojects/phosphor-logging' 5264b75a5bSKrzysztof Grobelny ) 5364b75a5bSKrzysztof Grobelnyendif 5464b75a5bSKrzysztof Grobelny 55596a9945SWludzik, Jozefsdbusplus = dependency('sdbusplus', fallback: ['sdbusplus', 'sdbusplus_dep']) 5664b75a5bSKrzysztof Grobelnysystemd = dependency('systemd') 5764b75a5bSKrzysztof Grobelny 5873da6906SKrzysztof Grobelnyif cpp.has_header('nlohmann/json.hpp') 5973da6906SKrzysztof Grobelny nlohmann_json = declare_dependency() 6073da6906SKrzysztof Grobelnyelse 61596a9945SWludzik, Jozef nlohmann_json = dependency('nlohmann_json', 62596a9945SWludzik, Jozef fallback: ['nlohmann', 'nlohmann_json_dep']) 6373da6906SKrzysztof Grobelnyendif 6473da6906SKrzysztof Grobelny 65503c1589SWludzik, Jozefadd_project_arguments( 66503c1589SWludzik, Jozef '-DTELEMETRY_MAX_REPORTS=' + get_option('max-reports').to_string(), 67596a9945SWludzik, Jozef '-DTELEMETRY_MAX_READING_PARAMS=' + 68596a9945SWludzik, Jozef get_option('max-reading-parameters').to_string(), 69503c1589SWludzik, Jozef '-DTELEMETRY_MIN_INTERVAL=' + get_option('min-interval').to_string(), 7076833cb5SWludzik, Jozef '-DTELEMETRY_MAX_TRIGGERS=' + get_option('max-triggers').to_string(), 7132859b63SKarol Niczyj '-DTELEMETRY_MAX_REPORT_NAME_LENGTH=' + 7232859b63SKarol Niczyj get_option('max-report-name-length').to_string(), 73503c1589SWludzik, Jozef language: 'cpp' 74503c1589SWludzik, Jozef) 75503c1589SWludzik, Jozef 7664b75a5bSKrzysztof Grobelnyexecutable( 7764b75a5bSKrzysztof Grobelny 'telemetry', 7864b75a5bSKrzysztof Grobelny [ 79*8069771cSKrzysztof Grobelny 'src/details/collection_function.cpp', 80f763c9e3SSzymon Dompke 'src/discrete_threshold.cpp', 8164b75a5bSKrzysztof Grobelny 'src/main.cpp', 82c8e3a64aSKrzysztof Grobelny 'src/metric.cpp', 831477fe6aSWludzik, Jozef 'src/numeric_threshold.cpp', 84f763c9e3SSzymon Dompke 'src/on_change_threshold.cpp', 857f06f613SKrzysztof Grobelny 'src/persistent_json_storage.cpp', 86cb88cfdfSWludzik, Jozef 'src/report.cpp', 872f9f9b87SWludzik, Jozef 'src/report_factory.cpp', 8864b75a5bSKrzysztof Grobelny 'src/report_manager.cpp', 89b5645947SKrzysztof Grobelny 'src/sensor.cpp', 907f06f613SKrzysztof Grobelny 'src/sensor_cache.cpp', 9176833cb5SWludzik, Jozef 'src/trigger.cpp', 92d960e1f3SWludzik, Jozef 'src/trigger_actions.cpp', 9376833cb5SWludzik, Jozef 'src/trigger_factory.cpp', 9476833cb5SWludzik, Jozef 'src/trigger_manager.cpp', 95dcc4e193SKrzysztof Grobelny 'src/types/report_types.cpp', 964416fce6SCezary Zwolak 'src/utils/conversion_trigger.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, 11764b75a5bSKrzysztof Grobelny install_dir: systemd.get_pkgconfig_variable('systemdsystemunitdir'), 11864b75a5bSKrzysztof Grobelny) 11973da6906SKrzysztof Grobelny 12073da6906SKrzysztof Grobelnyif get_option('buildtest') 12173da6906SKrzysztof Grobelny subdir('tests') 12273da6906SKrzysztof Grobelnyendif 123