xref: /openbmc/phosphor-bmc-code-mgmt/meson.build (revision 01ba956256e45b953c78591319a5f25ff4ba618d)
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() or get_option('bios-software-update').allowed() or get_option(
72    'i2cvr-software-update',
73).allowed() or get_option(
74    'eepromdevice-software-update',
75).allowed()
76
77if common_build
78    libpldm_dep = dependency('libpldm')
79
80    libgpiod = dependency(
81        'libgpiodcxx',
82        default_options: ['bindings=cxx'],
83        version: '>=1.1.2',
84    )
85
86    subdir('common')
87endif
88
89if get_option('bios-software-update').allowed()
90    subdir('bios')
91endif
92
93if get_option('i2cvr-software-update').allowed()
94    subdir('common/i2c/')
95    subdir('i2c-vr')
96endif
97
98if get_option('eepromdevice-software-update').allowed()
99    subdir('eeprom-device')
100endif
101
102if build_tests.allowed()
103    subdir('test')
104endif
105