xref: /openbmc/telemetry/meson.build (revision 7d24aa23641cb8894744800df25a5b95c61f3dc4)
164b75a5bSKrzysztof Grobelnyproject(
264b75a5bSKrzysztof Grobelny    'Telemetry',
364b75a5bSKrzysztof Grobelny    'cpp',
4359b7664SPatrick Williams    meson_version: '>=1.1.1',
564b75a5bSKrzysztof Grobelny    default_options: [
664b75a5bSKrzysztof Grobelny        'buildtype=debugoptimized',
7359b7664SPatrick Williams        'cpp_std=c++23',
864b75a5bSKrzysztof Grobelny        'warning_level=3',
964b75a5bSKrzysztof Grobelny        'werror=true',
1064b75a5bSKrzysztof Grobelny        'b_lto=true',
1164b75a5bSKrzysztof Grobelny    ],
1264b75a5bSKrzysztof Grobelny    license: 'Apache-2.0',
1364b75a5bSKrzysztof Grobelny)
1464b75a5bSKrzysztof Grobelny
151b03c8d6SSzymon Dompkecxx = meson.get_compiler('cpp')
1664b75a5bSKrzysztof Grobelnyadd_project_arguments(
17*7d24aa23SPatrick Williams    cxx.get_supported_arguments(
18*7d24aa23SPatrick Williams        [
1964b75a5bSKrzysztof Grobelny            '-DBOOST_ASIO_DISABLE_THREADS',
2064b75a5bSKrzysztof Grobelny            '-DBOOST_ALL_NO_LIB',
2164b75a5bSKrzysztof Grobelny            '-DBOOST_SYSTEM_NO_DEPRECATED',
2264b75a5bSKrzysztof Grobelny            '-DBOOST_ASIO_NO_DEPRECATED',
2364b75a5bSKrzysztof Grobelny            '-DBOOST_NO_RTTI',
2464b75a5bSKrzysztof Grobelny            '-DBOOST_NO_TYPEID',
2564b75a5bSKrzysztof Grobelny            '-Wno-unused-parameter',
26*7d24aa23SPatrick Williams        ],
27*7d24aa23SPatrick Williams    ),
28*7d24aa23SPatrick Williams    language: 'cpp',
2964b75a5bSKrzysztof Grobelny)
3064b75a5bSKrzysztof Grobelny
311b03c8d6SSzymon Dompkeboost_version = '>=1.79.0'
321b03c8d6SSzymon Dompkeboost_modules = ['coroutine', 'context']
33*7d24aa23SPatrick Williamsboost = dependency('boost', version: boost_version, modules: boost_modules)
3464b75a5bSKrzysztof Grobelny
354444a13cSPatrick Williamsnlohmann_json_dep = dependency('nlohmann_json', include_type: 'system')
36f8ae65caSPatrick Williamsphosphor_logging = dependency('phosphor-logging')
37f8ae65caSPatrick Williamssdbusplus = dependency('sdbusplus')
3864b75a5bSKrzysztof Grobelnysystemd = dependency('systemd')
3964b75a5bSKrzysztof Grobelny
40503c1589SWludzik, Jozefadd_project_arguments(
41503c1589SWludzik, Jozef    '-DTELEMETRY_MAX_REPORTS=' + get_option('max-reports').to_string(),
42*7d24aa23SPatrick Williams    '-DTELEMETRY_MAX_READING_PARAMS=' + get_option('max-reading-parameters').to_string(),
43503c1589SWludzik, Jozef    '-DTELEMETRY_MIN_INTERVAL=' + get_option('min-interval').to_string(),
4476833cb5SWludzik, Jozef    '-DTELEMETRY_MAX_TRIGGERS=' + get_option('max-triggers').to_string(),
45*7d24aa23SPatrick Williams    '-DTELEMETRY_MAX_DBUS_PATH_LENGTH=' + get_option('max-dbus-path-length').to_string(),
46*7d24aa23SPatrick Williams    '-DTELEMETRY_MAX_APPEND_LIMIT=' + get_option('max-append-limit').to_string(),
4732305f14SSzymon Dompke    '-DTELEMETRY_MAX_ID_NAME_LENGTH=' + get_option('max-id-name-length').to_string(),
4832305f14SSzymon Dompke    '-DTELEMETRY_MAX_PREFIX_LENGTH=' + get_option('max-prefix-length').to_string(),
49*7d24aa23SPatrick Williams    language: 'cpp',
50503c1589SWludzik, Jozef)
51503c1589SWludzik, Jozef
5264b75a5bSKrzysztof Grobelnyexecutable(
5364b75a5bSKrzysztof Grobelny    'telemetry',
5464b75a5bSKrzysztof Grobelny    [
55f763c9e3SSzymon Dompke        'src/discrete_threshold.cpp',
5664b75a5bSKrzysztof Grobelny        'src/main.cpp',
57c8e3a64aSKrzysztof Grobelny        'src/metric.cpp',
5862c08e9bSKrzysztof Grobelny        'src/errors.cpp',
59f7ea2997SKrzysztof Grobelny        'src/metrics/collection_data.cpp',
60f7ea2997SKrzysztof Grobelny        'src/metrics/collection_function.cpp',
611477fe6aSWludzik, Jozef        'src/numeric_threshold.cpp',
62f763c9e3SSzymon Dompke        'src/on_change_threshold.cpp',
637f06f613SKrzysztof Grobelny        'src/persistent_json_storage.cpp',
64cb88cfdfSWludzik, Jozef        'src/report.cpp',
652f9f9b87SWludzik, Jozef        'src/report_factory.cpp',
6664b75a5bSKrzysztof Grobelny        'src/report_manager.cpp',
67b5645947SKrzysztof Grobelny        'src/sensor.cpp',
687f06f613SKrzysztof Grobelny        'src/sensor_cache.cpp',
6976833cb5SWludzik, Jozef        'src/trigger.cpp',
70d960e1f3SWludzik, Jozef        'src/trigger_actions.cpp',
7176833cb5SWludzik, Jozef        'src/trigger_factory.cpp',
7276833cb5SWludzik, Jozef        'src/trigger_manager.cpp',
73493e62ebSKrzysztof Grobelny        'src/types/readings.cpp',
74dcc4e193SKrzysztof Grobelny        'src/types/report_types.cpp',
754416fce6SCezary Zwolak        'src/utils/conversion_trigger.cpp',
761cdd7e4fSSzymon Dompke        'src/utils/dbus_path_utils.cpp',
7732305f14SSzymon Dompke        'src/utils/make_id_name.cpp',
78e6d48874SKrzysztof Grobelny        'src/utils/messanger_service.cpp',
7964b75a5bSKrzysztof Grobelny    ],
80*7d24aa23SPatrick Williams    dependencies: [boost, nlohmann_json_dep, sdbusplus, phosphor_logging],
8164b75a5bSKrzysztof Grobelny    include_directories: 'src',
8264b75a5bSKrzysztof Grobelny    install: true,
8364b75a5bSKrzysztof Grobelny    install_dir: get_option('prefix') / get_option('bindir'),
8464b75a5bSKrzysztof Grobelny    pie: true,
8564b75a5bSKrzysztof Grobelny)
8664b75a5bSKrzysztof Grobelny
87458a37d1SSzymon Dompkeservice_wants = ''
88458a37d1SSzymon Dompkeif get_option('service-wants').length() > 0
89458a37d1SSzymon Dompke    service_wants = '\nWants=' + ' '.join(get_option('service-wants'))
90458a37d1SSzymon Dompkeendif
91458a37d1SSzymon Dompke
92458a37d1SSzymon Dompkeservice_requires = ''
93458a37d1SSzymon Dompkeif get_option('service-requires').length() > 0
94458a37d1SSzymon Dompke    service_requires = '\nRequires=' + ' '.join(get_option('service-requires'))
95458a37d1SSzymon Dompkeendif
96458a37d1SSzymon Dompke
97458a37d1SSzymon Dompkeservice_before = ''
98458a37d1SSzymon Dompkeif get_option('service-before').length() > 0
99458a37d1SSzymon Dompke    service_before = '\nBefore=' + ' '.join(get_option('service-before'))
100458a37d1SSzymon Dompkeendif
101458a37d1SSzymon Dompke
102458a37d1SSzymon Dompkeservice_after = ''
103458a37d1SSzymon Dompkeif get_option('service-after').length() > 0
104458a37d1SSzymon Dompke    service_after = ' ' + ' '.join(get_option('service-after'))
105458a37d1SSzymon Dompkeendif
106458a37d1SSzymon Dompke
10764b75a5bSKrzysztof Grobelnyconfigure_file(
10864b75a5bSKrzysztof Grobelny    input: 'xyz.openbmc_project.Telemetry.service.in',
10964b75a5bSKrzysztof Grobelny    output: 'xyz.openbmc_project.Telemetry.service',
11064b75a5bSKrzysztof Grobelny    configuration: {
11164b75a5bSKrzysztof Grobelny        'bindir': get_option('prefix') / get_option('bindir'),
112458a37d1SSzymon Dompke        'wants': service_wants,
113458a37d1SSzymon Dompke        'requires': service_requires,
114458a37d1SSzymon Dompke        'before': service_before,
115*7d24aa23SPatrick Williams        'after': service_after,
11664b75a5bSKrzysztof Grobelny    },
11764b75a5bSKrzysztof Grobelny    install: true,
11897c20e2eSPatrick Williams    install_dir: systemd.get_variable('systemdsystemunitdir'),
11964b75a5bSKrzysztof Grobelny)
12073da6906SKrzysztof Grobelny
12173da6906SKrzysztof Grobelnyif get_option('buildtest')
12273da6906SKrzysztof Grobelny    subdir('tests')
12373da6906SKrzysztof Grobelnyendif
124