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