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