xref: /openbmc/phosphor-objmgr/meson.build (revision cc8070ba)
1project(
2    'phosphor-objmgr',
3    'c', 'cpp',
4    default_options: [
5        'buildtype=debugoptimized',
6        'cpp_std=c++20',
7        'warning_level=3',
8        'werror=true',
9    ],
10    license: 'Apache-2.0',
11    meson_version: '>=0.57.0',
12    version: '1.0',
13)
14
15phosphor_logging = dependency('phosphor-logging')
16phosphor_dbus_interfaces = dependency('phosphor-dbus-interfaces')
17sdbusplus = dependency('sdbusplus')
18boost = dependency('boost', version : '>=1.79.0', required: false, include_type: 'system')
19if not boost.found()
20  subproject('boost', required: false)
21  boost_inc = include_directories('subprojects/boost_1_79_0/', is_system:true)
22  boost  = declare_dependency(include_directories : boost_inc)
23  boost = boost.as_system('system')
24endif
25
26if get_option('buildtype').startswith('debug')
27    add_project_arguments('-DMAPPER_ENABLE_DEBUG', language : 'cpp')
28endif
29
30if get_option('tests').enabled()
31    gtest = dependency('gtest', main: true, disabler: true, required: false)
32    gmock = dependency('gmock', disabler: true, required: false)
33    if not gtest.found() or not gmock.found()
34        gtest_proj = import('cmake').subproject('googletest', required: false)
35        if gtest_proj.found()
36            gtest = declare_dependency(
37                dependencies: [
38                    dependency('threads'),
39                    gtest_proj.dependency('gtest'),
40                    gtest_proj.dependency('gtest_main'),
41                ]
42            )
43            gmock = gtest_proj.dependency('gmock')
44        else
45            assert(
46                not get_option('tests').enabled(),
47                'Googletest is required if tests are enabled'
48            )
49        endif
50    endif
51    subdir('src/test')
52    subdir('libmapper/test')
53endif
54
55install_headers('libmapper/mapper.h')
56
57libmapper = library(
58    'mapper',
59    'libmapper/mapper.c',
60    dependencies: [ dependency('libsystemd') ],
61    gnu_symbol_visibility: 'hidden',
62    version: meson.project_version(),
63    install: true)
64
65mapper_dep = declare_dependency(
66    link_with: libmapper,
67    include_directories: include_directories('libmapper'),
68    dependencies: [ dependency('libsystemd') ],
69)
70
71import('pkgconfig').generate(
72    name: 'libmapper',
73    description: 'OpenBMC service discovery utility library',
74    version: meson.project_version(),
75    libraries: libmapper)
76
77executable(
78    'mapper',
79    'libmapper/app.c',
80    link_with: libmapper,
81    dependencies: [ dependency('libsystemd') ],
82    install: true)
83
84executable(
85    'mapperx',
86    [
87        'src/main.cpp',
88        'src/argument.cpp',
89        'src/processing.cpp',
90        'src/associations.cpp',
91    ],
92    dependencies: [
93        boost,
94        dependency('libsystemd'),
95        phosphor_dbus_interfaces,
96        phosphor_logging,
97        sdbusplus,
98        dependency('systemd'),
99        dependency('threads'),
100        dependency('tinyxml2'),
101    ],
102    install: true
103)
104
105executable(
106    'phosphor-unit-failure-monitor',
107    [
108        'fail-monitor/argument.cpp',
109        'fail-monitor/main.cpp',
110        'fail-monitor/monitor.cpp',
111    ],
112    dependencies: [
113        phosphor_logging,
114    ],
115    install: true
116)
117