xref: /openbmc/phosphor-objmgr/meson.build (revision d6aa5525)
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')
18
19
20if get_option('buildtype').startswith('debug')
21    add_project_arguments('-DMAPPER_ENABLE_DEBUG', language : 'cpp')
22endif
23
24if get_option('tests').enabled()
25    gtest = dependency('gtest', main: true, disabler: true, required: false)
26    gmock = dependency('gmock', disabler: true, required: false)
27    if not gtest.found() or not gmock.found()
28        gtest_proj = import('cmake').subproject('googletest', required: false)
29        if gtest_proj.found()
30            gtest = declare_dependency(
31                dependencies: [
32                    dependency('threads'),
33                    gtest_proj.dependency('gtest'),
34                    gtest_proj.dependency('gtest_main'),
35                ]
36            )
37            gmock = gtest_proj.dependency('gmock')
38        else
39            assert(
40                not get_option('tests').enabled(),
41                'Googletest is required if tests are enabled'
42            )
43        endif
44    endif
45    subdir('src/test')
46    subdir('libmapper/test')
47endif
48
49install_headers('libmapper/mapper.h')
50
51libmapper = library(
52    'mapper',
53    'libmapper/mapper.c',
54    dependencies: [ dependency('libsystemd') ],
55    gnu_symbol_visibility: 'hidden',
56    version: meson.project_version(),
57    install: true)
58
59import('pkgconfig').generate(
60    name: 'libmapper',
61    description: 'OpenBMC service discovery utility library',
62    version: meson.project_version(),
63    libraries: libmapper)
64
65executable(
66    'mapper',
67    'libmapper/app.c',
68    link_with: libmapper,
69    dependencies: [ dependency('libsystemd') ],
70    install: true)
71
72executable(
73    'mapperx',
74    [
75        'src/main.cpp',
76        'src/argument.cpp',
77        'src/processing.cpp',
78        'src/associations.cpp',
79    ],
80    dependencies: [
81        dependency('boost'),
82        dependency('libsystemd'),
83        phosphor_dbus_interfaces,
84        phosphor_logging,
85        sdbusplus,
86        dependency('systemd'),
87        dependency('threads'),
88        dependency('tinyxml2'),
89    ],
90    install: true
91)
92
93executable(
94    'phosphor-unit-failure-monitor',
95    [
96        'fail-monitor/argument.cpp',
97        'fail-monitor/main.cpp',
98        'fail-monitor/monitor.cpp',
99    ],
100    dependencies: [
101        phosphor_logging,
102    ],
103    install: true
104)
105