xref: /openbmc/telemetry/meson.build (revision 4444a13c)
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(
171b03c8d6SSzymon Dompke    cxx.get_supported_arguments([
1864b75a5bSKrzysztof Grobelny        '-DBOOST_ASIO_DISABLE_THREADS',
1964b75a5bSKrzysztof Grobelny        '-DBOOST_ALL_NO_LIB',
2064b75a5bSKrzysztof Grobelny        '-DBOOST_SYSTEM_NO_DEPRECATED',
2164b75a5bSKrzysztof Grobelny        '-DBOOST_ASIO_NO_DEPRECATED',
2264b75a5bSKrzysztof Grobelny        '-DBOOST_NO_RTTI',
2364b75a5bSKrzysztof Grobelny        '-DBOOST_NO_TYPEID',
2464b75a5bSKrzysztof Grobelny        '-Wno-unused-parameter',
2564b75a5bSKrzysztof Grobelny    ]),
2664b75a5bSKrzysztof Grobelny    language: 'cpp'
2764b75a5bSKrzysztof Grobelny)
2864b75a5bSKrzysztof Grobelny
291b03c8d6SSzymon Dompkeboost_version = '>=1.79.0'
301b03c8d6SSzymon Dompkeboost_modules = ['coroutine', 'context']
311b03c8d6SSzymon Dompkeboost = dependency('boost',
321b03c8d6SSzymon Dompke    version: boost_version,
331b03c8d6SSzymon Dompke    modules: boost_modules)
3464b75a5bSKrzysztof Grobelny
35*4444a13cSPatrick 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(),
42596a9945SWludzik, Jozef    '-DTELEMETRY_MAX_READING_PARAMS=' +
43596a9945SWludzik, Jozef        get_option('max-reading-parameters').to_string(),
44503c1589SWludzik, Jozef    '-DTELEMETRY_MIN_INTERVAL=' + get_option('min-interval').to_string(),
4576833cb5SWludzik, Jozef    '-DTELEMETRY_MAX_TRIGGERS=' + get_option('max-triggers').to_string(),
46e28aa53dSSzymon Dompke    '-DTELEMETRY_MAX_DBUS_PATH_LENGTH=' +
47e28aa53dSSzymon Dompke        get_option('max-dbus-path-length').to_string(),
48cd5b0b7eSAnkita Vilas Gawade    '-DTELEMETRY_MAX_APPEND_LIMIT=' +
49cd5b0b7eSAnkita Vilas Gawade        get_option('max-append-limit').to_string(),
5032305f14SSzymon Dompke    '-DTELEMETRY_MAX_ID_NAME_LENGTH=' + get_option('max-id-name-length').to_string(),
5132305f14SSzymon Dompke    '-DTELEMETRY_MAX_PREFIX_LENGTH=' + get_option('max-prefix-length').to_string(),
52503c1589SWludzik, Jozef    language: 'cpp'
53503c1589SWludzik, Jozef)
54503c1589SWludzik, Jozef
5564b75a5bSKrzysztof Grobelnyexecutable(
5664b75a5bSKrzysztof Grobelny    'telemetry',
5764b75a5bSKrzysztof Grobelny    [
58f763c9e3SSzymon Dompke        'src/discrete_threshold.cpp',
5964b75a5bSKrzysztof Grobelny        'src/main.cpp',
60c8e3a64aSKrzysztof Grobelny        'src/metric.cpp',
6162c08e9bSKrzysztof Grobelny        'src/errors.cpp',
62f7ea2997SKrzysztof Grobelny        'src/metrics/collection_data.cpp',
63f7ea2997SKrzysztof Grobelny        'src/metrics/collection_function.cpp',
641477fe6aSWludzik, Jozef        'src/numeric_threshold.cpp',
65f763c9e3SSzymon Dompke        'src/on_change_threshold.cpp',
667f06f613SKrzysztof Grobelny        'src/persistent_json_storage.cpp',
67cb88cfdfSWludzik, Jozef        'src/report.cpp',
682f9f9b87SWludzik, Jozef        'src/report_factory.cpp',
6964b75a5bSKrzysztof Grobelny        'src/report_manager.cpp',
70b5645947SKrzysztof Grobelny        'src/sensor.cpp',
717f06f613SKrzysztof Grobelny        'src/sensor_cache.cpp',
7276833cb5SWludzik, Jozef        'src/trigger.cpp',
73d960e1f3SWludzik, Jozef        'src/trigger_actions.cpp',
7476833cb5SWludzik, Jozef        'src/trigger_factory.cpp',
7576833cb5SWludzik, Jozef        'src/trigger_manager.cpp',
76493e62ebSKrzysztof Grobelny        'src/types/readings.cpp',
77dcc4e193SKrzysztof Grobelny        'src/types/report_types.cpp',
784416fce6SCezary Zwolak        'src/utils/conversion_trigger.cpp',
791cdd7e4fSSzymon Dompke        'src/utils/dbus_path_utils.cpp',
8032305f14SSzymon Dompke        'src/utils/make_id_name.cpp',
81e6d48874SKrzysztof Grobelny        'src/utils/messanger_service.cpp',
8264b75a5bSKrzysztof Grobelny    ],
8364b75a5bSKrzysztof Grobelny    dependencies: [
8464b75a5bSKrzysztof Grobelny        boost,
85*4444a13cSPatrick Williams        nlohmann_json_dep,
8664b75a5bSKrzysztof Grobelny        sdbusplus,
8764b75a5bSKrzysztof Grobelny        phosphor_logging,
8864b75a5bSKrzysztof Grobelny    ],
8964b75a5bSKrzysztof Grobelny    include_directories: 'src',
9064b75a5bSKrzysztof Grobelny    install: true,
9164b75a5bSKrzysztof Grobelny    install_dir: get_option('prefix') / get_option('bindir'),
9264b75a5bSKrzysztof Grobelny    pie: true,
9364b75a5bSKrzysztof Grobelny)
9464b75a5bSKrzysztof Grobelny
95458a37d1SSzymon Dompkeservice_wants = ''
96458a37d1SSzymon Dompkeif get_option('service-wants').length() > 0
97458a37d1SSzymon Dompke    service_wants = '\nWants=' + ' '.join(get_option('service-wants'))
98458a37d1SSzymon Dompkeendif
99458a37d1SSzymon Dompke
100458a37d1SSzymon Dompkeservice_requires = ''
101458a37d1SSzymon Dompkeif get_option('service-requires').length() > 0
102458a37d1SSzymon Dompke    service_requires = '\nRequires=' + ' '.join(get_option('service-requires'))
103458a37d1SSzymon Dompkeendif
104458a37d1SSzymon Dompke
105458a37d1SSzymon Dompkeservice_before = ''
106458a37d1SSzymon Dompkeif get_option('service-before').length() > 0
107458a37d1SSzymon Dompke    service_before = '\nBefore=' + ' '.join(get_option('service-before'))
108458a37d1SSzymon Dompkeendif
109458a37d1SSzymon Dompke
110458a37d1SSzymon Dompkeservice_after = ''
111458a37d1SSzymon Dompkeif get_option('service-after').length() > 0
112458a37d1SSzymon Dompke    service_after = ' ' + ' '.join(get_option('service-after'))
113458a37d1SSzymon Dompkeendif
114458a37d1SSzymon Dompke
11564b75a5bSKrzysztof Grobelnyconfigure_file(
11664b75a5bSKrzysztof Grobelny    input: 'xyz.openbmc_project.Telemetry.service.in',
11764b75a5bSKrzysztof Grobelny    output: 'xyz.openbmc_project.Telemetry.service',
11864b75a5bSKrzysztof Grobelny    configuration: {
11964b75a5bSKrzysztof Grobelny        'bindir': get_option('prefix') / get_option('bindir'),
120458a37d1SSzymon Dompke        'wants': service_wants,
121458a37d1SSzymon Dompke        'requires': service_requires,
122458a37d1SSzymon Dompke        'before': service_before,
123458a37d1SSzymon Dompke        'after': service_after
12464b75a5bSKrzysztof Grobelny    },
12564b75a5bSKrzysztof Grobelny    install: true,
12697c20e2eSPatrick Williams    install_dir: systemd.get_variable('systemdsystemunitdir'),
12764b75a5bSKrzysztof Grobelny)
12873da6906SKrzysztof Grobelny
12973da6906SKrzysztof Grobelnyif get_option('buildtest')
13073da6906SKrzysztof Grobelny    subdir('tests')
13173da6906SKrzysztof Grobelnyendif
132