xref: /openbmc/phosphor-bmc-code-mgmt/meson.build (revision 192bb5d91075f6dbaa9fd3ecdfc7bf6a0eca38fe)
1project(
2    'phosphor-bmc-code-mgmt',
3    'cpp',
4    default_options: [
5        'buildtype=debugoptimized',
6        'cpp_std=c++23',
7        'warning_level=3',
8        'werror=true',
9    ],
10    meson_version: '>=1.1.1',
11    license: 'Apache-2.0',
12    version: '1.0',
13)
14
15add_project_arguments(
16    '-DBOOST_SYSTEM_NO_DEPRECATED',
17    '-DBOOST_ERROR_CODE_HEADER_ONLY',
18    '-DBOOST_NO_RTTI',
19    '-DBOOST_NO_TYPEID',
20    '-DBOOST_ALL_NO_LIB',
21    '-DBOOST_ASIO_DISABLE_THREADS',
22    '-DBOOST_ASIO_NO_DEPRECATED',
23    language: 'cpp',
24)
25
26cpp = meson.get_compiler('cpp')
27
28boost_dep = dependency('boost')
29
30sdbusplus_dep = dependency('sdbusplus')
31sdbusplusplus_prog = find_program('sdbus++', native: true)
32sdbuspp_gen_meson_prog = find_program('sdbus++-gen-meson', native: true)
33
34pdi_dep = dependency('phosphor-dbus-interfaces')
35phosphor_logging_dep = dependency('phosphor-logging')
36
37cereal_dep = dependency('cereal', required: false)
38has_cereal = cpp.has_header_symbol(
39    'cereal/cereal.hpp',
40    'cereal::specialize',
41    dependencies: cereal_dep,
42    required: false,
43)
44if not has_cereal
45    cereal_opts = import('cmake').subproject_options()
46    cereal_opts.add_cmake_defines(
47        {'BUILD_TESTS': 'OFF', 'SKIP_PERFORMANCE_COMPARISON': 'ON'},
48    )
49    cereal_proj = import('cmake').subproject(
50        'cereal',
51        options: cereal_opts,
52        required: false,
53    )
54    assert(cereal_proj.found(), 'cereal is required')
55    cereal_dep = cereal_proj.dependency('cereal')
56endif
57
58deps = [cereal_dep, pdi_dep, phosphor_logging_dep, sdbusplus_dep]
59
60ssl = dependency('openssl')
61
62systemd = dependency('systemd')
63systemd_system_unit_dir = systemd.get_variable('systemdsystemunitdir')
64
65build_tests = get_option('tests')
66
67subdir('bmc')
68
69common_include = include_directories('.')
70
71common_build = build_tests.allowed()
72
73if common_build
74    libpldm_dep = dependency('libpldm')
75
76    subdir('common')
77endif
78
79if build_tests.allowed()
80    subdir('test')
81endif
82
83