xref: /openbmc/telemetry/meson.build (revision 32305f14)
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
47f8ae65caSPatrick Williamsphosphor_logging = dependency('phosphor-logging')
48f8ae65caSPatrick Williamssdbusplus = dependency('sdbusplus')
4964b75a5bSKrzysztof Grobelnysystemd = dependency('systemd')
5064b75a5bSKrzysztof Grobelny
5173da6906SKrzysztof Grobelnyif cpp.has_header('nlohmann/json.hpp')
5273da6906SKrzysztof Grobelny    nlohmann_json = declare_dependency()
5373da6906SKrzysztof Grobelnyelse
54f8ae65caSPatrick Williams    nlohmann_json = dependency('nlohmann_json')
5573da6906SKrzysztof Grobelnyendif
5673da6906SKrzysztof Grobelny
57503c1589SWludzik, Jozefadd_project_arguments(
58503c1589SWludzik, Jozef    '-DTELEMETRY_MAX_REPORTS=' + get_option('max-reports').to_string(),
59596a9945SWludzik, Jozef    '-DTELEMETRY_MAX_READING_PARAMS=' +
60596a9945SWludzik, Jozef        get_option('max-reading-parameters').to_string(),
61503c1589SWludzik, Jozef    '-DTELEMETRY_MIN_INTERVAL=' + get_option('min-interval').to_string(),
6276833cb5SWludzik, Jozef    '-DTELEMETRY_MAX_TRIGGERS=' + get_option('max-triggers').to_string(),
63e28aa53dSSzymon Dompke    '-DTELEMETRY_MAX_DBUS_PATH_LENGTH=' +
64e28aa53dSSzymon Dompke        get_option('max-dbus-path-length').to_string(),
65cd5b0b7eSAnkita Vilas Gawade    '-DTELEMETRY_MAX_APPEND_LIMIT=' +
66cd5b0b7eSAnkita Vilas Gawade        get_option('max-append-limit').to_string(),
67*32305f14SSzymon Dompke    '-DTELEMETRY_MAX_ID_NAME_LENGTH=' + get_option('max-id-name-length').to_string(),
68*32305f14SSzymon Dompke    '-DTELEMETRY_MAX_PREFIX_LENGTH=' + get_option('max-prefix-length').to_string(),
69503c1589SWludzik, Jozef    language: 'cpp'
70503c1589SWludzik, Jozef)
71503c1589SWludzik, Jozef
7264b75a5bSKrzysztof Grobelnyexecutable(
7364b75a5bSKrzysztof Grobelny    'telemetry',
7464b75a5bSKrzysztof Grobelny    [
75f763c9e3SSzymon Dompke        'src/discrete_threshold.cpp',
7664b75a5bSKrzysztof Grobelny        'src/main.cpp',
77c8e3a64aSKrzysztof Grobelny        'src/metric.cpp',
78f7ea2997SKrzysztof Grobelny        'src/metrics/collection_data.cpp',
79f7ea2997SKrzysztof Grobelny        'src/metrics/collection_function.cpp',
801477fe6aSWludzik, Jozef        'src/numeric_threshold.cpp',
81f763c9e3SSzymon Dompke        'src/on_change_threshold.cpp',
827f06f613SKrzysztof Grobelny        'src/persistent_json_storage.cpp',
83cb88cfdfSWludzik, Jozef        'src/report.cpp',
842f9f9b87SWludzik, Jozef        'src/report_factory.cpp',
8564b75a5bSKrzysztof Grobelny        'src/report_manager.cpp',
86b5645947SKrzysztof Grobelny        'src/sensor.cpp',
877f06f613SKrzysztof Grobelny        'src/sensor_cache.cpp',
8876833cb5SWludzik, Jozef        'src/trigger.cpp',
89d960e1f3SWludzik, Jozef        'src/trigger_actions.cpp',
9076833cb5SWludzik, Jozef        'src/trigger_factory.cpp',
9176833cb5SWludzik, Jozef        'src/trigger_manager.cpp',
92493e62ebSKrzysztof Grobelny        'src/types/readings.cpp',
93dcc4e193SKrzysztof Grobelny        'src/types/report_types.cpp',
944416fce6SCezary Zwolak        'src/utils/conversion_trigger.cpp',
951cdd7e4fSSzymon Dompke        'src/utils/dbus_path_utils.cpp',
96*32305f14SSzymon Dompke        'src/utils/make_id_name.cpp',
97e6d48874SKrzysztof Grobelny        'src/utils/messanger_service.cpp',
9864b75a5bSKrzysztof Grobelny    ],
9964b75a5bSKrzysztof Grobelny    dependencies: [
10064b75a5bSKrzysztof Grobelny        boost,
10173da6906SKrzysztof Grobelny        nlohmann_json,
10264b75a5bSKrzysztof Grobelny        sdbusplus,
10364b75a5bSKrzysztof Grobelny        phosphor_logging,
10464b75a5bSKrzysztof Grobelny    ],
10564b75a5bSKrzysztof Grobelny    include_directories: 'src',
10664b75a5bSKrzysztof Grobelny    install: true,
10764b75a5bSKrzysztof Grobelny    install_dir: get_option('prefix') / get_option('bindir'),
10864b75a5bSKrzysztof Grobelny    pie: true,
10964b75a5bSKrzysztof Grobelny)
11064b75a5bSKrzysztof Grobelny
11164b75a5bSKrzysztof Grobelnyconfigure_file(
11264b75a5bSKrzysztof Grobelny    input: 'xyz.openbmc_project.Telemetry.service.in',
11364b75a5bSKrzysztof Grobelny    output: 'xyz.openbmc_project.Telemetry.service',
11464b75a5bSKrzysztof Grobelny    configuration: {
11564b75a5bSKrzysztof Grobelny        'bindir': get_option('prefix') / get_option('bindir'),
11664b75a5bSKrzysztof Grobelny    },
11764b75a5bSKrzysztof Grobelny    install: true,
118bdf8719fSPatrick Williams    install_dir: systemd.get_variable(pkgconfig: 'systemdsystemunitdir'),
11964b75a5bSKrzysztof Grobelny)
12073da6906SKrzysztof Grobelny
12173da6906SKrzysztof Grobelnyif get_option('buildtest')
12273da6906SKrzysztof Grobelny    subdir('tests')
12373da6906SKrzysztof Grobelnyendif
124