xref: /openbmc/telemetry/meson.build (revision 97c20e2e)
164b75a5bSKrzysztof Grobelnyproject(
264b75a5bSKrzysztof Grobelny    'Telemetry',
364b75a5bSKrzysztof Grobelny    'cpp',
4*97c20e2eSPatrick Williams    meson_version: '>=0.58.0',
564b75a5bSKrzysztof Grobelny    default_options: [
664b75a5bSKrzysztof Grobelny        'buildtype=debugoptimized',
7934201f7SPatrick Williams        'cpp_std=c++20',
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
35f8ae65caSPatrick Williamsphosphor_logging = dependency('phosphor-logging')
36f8ae65caSPatrick Williamssdbusplus = dependency('sdbusplus')
3764b75a5bSKrzysztof Grobelnysystemd = dependency('systemd')
3864b75a5bSKrzysztof Grobelny
391b03c8d6SSzymon Dompkeif cxx.has_header('nlohmann/json.hpp')
4073da6906SKrzysztof Grobelny    nlohmann_json = declare_dependency()
4173da6906SKrzysztof Grobelnyelse
42f8ae65caSPatrick Williams    nlohmann_json = dependency('nlohmann_json')
4373da6906SKrzysztof Grobelnyendif
4473da6906SKrzysztof Grobelny
45503c1589SWludzik, Jozefadd_project_arguments(
46503c1589SWludzik, Jozef    '-DTELEMETRY_MAX_REPORTS=' + get_option('max-reports').to_string(),
47596a9945SWludzik, Jozef    '-DTELEMETRY_MAX_READING_PARAMS=' +
48596a9945SWludzik, Jozef        get_option('max-reading-parameters').to_string(),
49503c1589SWludzik, Jozef    '-DTELEMETRY_MIN_INTERVAL=' + get_option('min-interval').to_string(),
5076833cb5SWludzik, Jozef    '-DTELEMETRY_MAX_TRIGGERS=' + get_option('max-triggers').to_string(),
51e28aa53dSSzymon Dompke    '-DTELEMETRY_MAX_DBUS_PATH_LENGTH=' +
52e28aa53dSSzymon Dompke        get_option('max-dbus-path-length').to_string(),
53cd5b0b7eSAnkita Vilas Gawade    '-DTELEMETRY_MAX_APPEND_LIMIT=' +
54cd5b0b7eSAnkita Vilas Gawade        get_option('max-append-limit').to_string(),
5532305f14SSzymon Dompke    '-DTELEMETRY_MAX_ID_NAME_LENGTH=' + get_option('max-id-name-length').to_string(),
5632305f14SSzymon Dompke    '-DTELEMETRY_MAX_PREFIX_LENGTH=' + get_option('max-prefix-length').to_string(),
57503c1589SWludzik, Jozef    language: 'cpp'
58503c1589SWludzik, Jozef)
59503c1589SWludzik, Jozef
6064b75a5bSKrzysztof Grobelnyexecutable(
6164b75a5bSKrzysztof Grobelny    'telemetry',
6264b75a5bSKrzysztof Grobelny    [
63f763c9e3SSzymon Dompke        'src/discrete_threshold.cpp',
6464b75a5bSKrzysztof Grobelny        'src/main.cpp',
65c8e3a64aSKrzysztof Grobelny        'src/metric.cpp',
6662c08e9bSKrzysztof Grobelny        'src/errors.cpp',
67f7ea2997SKrzysztof Grobelny        'src/metrics/collection_data.cpp',
68f7ea2997SKrzysztof Grobelny        'src/metrics/collection_function.cpp',
691477fe6aSWludzik, Jozef        'src/numeric_threshold.cpp',
70f763c9e3SSzymon Dompke        'src/on_change_threshold.cpp',
717f06f613SKrzysztof Grobelny        'src/persistent_json_storage.cpp',
72cb88cfdfSWludzik, Jozef        'src/report.cpp',
732f9f9b87SWludzik, Jozef        'src/report_factory.cpp',
7464b75a5bSKrzysztof Grobelny        'src/report_manager.cpp',
75b5645947SKrzysztof Grobelny        'src/sensor.cpp',
767f06f613SKrzysztof Grobelny        'src/sensor_cache.cpp',
7776833cb5SWludzik, Jozef        'src/trigger.cpp',
78d960e1f3SWludzik, Jozef        'src/trigger_actions.cpp',
7976833cb5SWludzik, Jozef        'src/trigger_factory.cpp',
8076833cb5SWludzik, Jozef        'src/trigger_manager.cpp',
81493e62ebSKrzysztof Grobelny        'src/types/readings.cpp',
82dcc4e193SKrzysztof Grobelny        'src/types/report_types.cpp',
834416fce6SCezary Zwolak        'src/utils/conversion_trigger.cpp',
841cdd7e4fSSzymon Dompke        'src/utils/dbus_path_utils.cpp',
8532305f14SSzymon Dompke        'src/utils/make_id_name.cpp',
86e6d48874SKrzysztof Grobelny        'src/utils/messanger_service.cpp',
8764b75a5bSKrzysztof Grobelny    ],
8864b75a5bSKrzysztof Grobelny    dependencies: [
8964b75a5bSKrzysztof Grobelny        boost,
9073da6906SKrzysztof Grobelny        nlohmann_json,
9164b75a5bSKrzysztof Grobelny        sdbusplus,
9264b75a5bSKrzysztof Grobelny        phosphor_logging,
9364b75a5bSKrzysztof Grobelny    ],
9464b75a5bSKrzysztof Grobelny    include_directories: 'src',
9564b75a5bSKrzysztof Grobelny    install: true,
9664b75a5bSKrzysztof Grobelny    install_dir: get_option('prefix') / get_option('bindir'),
9764b75a5bSKrzysztof Grobelny    pie: true,
9864b75a5bSKrzysztof Grobelny)
9964b75a5bSKrzysztof Grobelny
100458a37d1SSzymon Dompkeservice_wants = ''
101458a37d1SSzymon Dompkeif get_option('service-wants').length() > 0
102458a37d1SSzymon Dompke    service_wants = '\nWants=' + ' '.join(get_option('service-wants'))
103458a37d1SSzymon Dompkeendif
104458a37d1SSzymon Dompke
105458a37d1SSzymon Dompkeservice_requires = ''
106458a37d1SSzymon Dompkeif get_option('service-requires').length() > 0
107458a37d1SSzymon Dompke    service_requires = '\nRequires=' + ' '.join(get_option('service-requires'))
108458a37d1SSzymon Dompkeendif
109458a37d1SSzymon Dompke
110458a37d1SSzymon Dompkeservice_before = ''
111458a37d1SSzymon Dompkeif get_option('service-before').length() > 0
112458a37d1SSzymon Dompke    service_before = '\nBefore=' + ' '.join(get_option('service-before'))
113458a37d1SSzymon Dompkeendif
114458a37d1SSzymon Dompke
115458a37d1SSzymon Dompkeservice_after = ''
116458a37d1SSzymon Dompkeif get_option('service-after').length() > 0
117458a37d1SSzymon Dompke    service_after = ' ' + ' '.join(get_option('service-after'))
118458a37d1SSzymon Dompkeendif
119458a37d1SSzymon Dompke
12064b75a5bSKrzysztof Grobelnyconfigure_file(
12164b75a5bSKrzysztof Grobelny    input: 'xyz.openbmc_project.Telemetry.service.in',
12264b75a5bSKrzysztof Grobelny    output: 'xyz.openbmc_project.Telemetry.service',
12364b75a5bSKrzysztof Grobelny    configuration: {
12464b75a5bSKrzysztof Grobelny        'bindir': get_option('prefix') / get_option('bindir'),
125458a37d1SSzymon Dompke        'wants': service_wants,
126458a37d1SSzymon Dompke        'requires': service_requires,
127458a37d1SSzymon Dompke        'before': service_before,
128458a37d1SSzymon Dompke        'after': service_after
12964b75a5bSKrzysztof Grobelny    },
13064b75a5bSKrzysztof Grobelny    install: true,
131*97c20e2eSPatrick Williams    install_dir: systemd.get_variable('systemdsystemunitdir'),
13264b75a5bSKrzysztof Grobelny)
13373da6906SKrzysztof Grobelny
13473da6906SKrzysztof Grobelnyif get_option('buildtest')
13573da6906SKrzysztof Grobelny    subdir('tests')
13673da6906SKrzysztof Grobelnyendif
137