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