xref: /openbmc/phosphor-objmgr/meson.build (revision 2a1ef0138c33036c82793104287e72d41f778108)
10aa15907SBrad Bishopproject(
20aa15907SBrad Bishop    'phosphor-objmgr',
3*2a1ef013SPatrick Williams    'c',
4*2a1ef013SPatrick Williams    'cpp',
50aa15907SBrad Bishop    default_options: [
6d6aa5525SBrad Bishop        'buildtype=debugoptimized',
726ed9805SPatrick Williams        'cpp_std=c++23',
80aa15907SBrad Bishop        'warning_level=3',
90aa15907SBrad Bishop        'werror=true',
100aa15907SBrad Bishop    ],
110aa15907SBrad Bishop    license: 'Apache-2.0',
1226ed9805SPatrick Williams    meson_version: '>=1.1.1',
130aa15907SBrad Bishop    version: '1.0',
140aa15907SBrad Bishop)
150aa15907SBrad Bishop
168c243629SBrad Bishopcxx = meson.get_compiler('cpp')
178c243629SBrad Bishop
188c243629SBrad Bishopif cxx.has_header('CLI/CLI.hpp')
198c243629SBrad Bishop    cli11_dep = declare_dependency()
208c243629SBrad Bishopelse
218c243629SBrad Bishop    cli11_dep = dependency('cli11')
228c243629SBrad Bishopendif
23f814e5b3SPatrick Williamsphosphor_logging = dependency('phosphor-logging')
245962db5aSBrad Bishopphosphor_dbus_interfaces = dependency('phosphor-dbus-interfaces')
25f814e5b3SPatrick Williamssdbusplus = dependency('sdbusplus')
26*2a1ef013SPatrick Williamsboost = dependency(
27*2a1ef013SPatrick Williams    'boost',
28*2a1ef013SPatrick Williams    version: '>=1.79.0',
29*2a1ef013SPatrick Williams    required: false,
30*2a1ef013SPatrick Williams    include_type: 'system',
31*2a1ef013SPatrick Williams)
3226ed4a1eSEd Tanousif not boost.found()
3326ed4a1eSEd Tanous    subproject('boost', required: false)
3426ed4a1eSEd Tanous    boost_inc = include_directories('subprojects/boost_1_79_0/', is_system: true)
3526ed4a1eSEd Tanous    boost = declare_dependency(include_directories: boost_inc)
3626ed4a1eSEd Tanous    boost = boost.as_system('system')
3726ed4a1eSEd Tanousendif
3841ad8380SEd Tanousadd_project_arguments(
39*2a1ef013SPatrick Williams    ['-DBOOST_ASIO_DISABLE_THREADS', '-DBOOST_ASIO_NO_DEPRECATED'],
4041ad8380SEd Tanous    language: 'cpp',
4141ad8380SEd Tanous)
42d6aa5525SBrad Bishop
43d6aa5525SBrad Bishopif get_option('buildtype').startswith('debug')
44d6aa5525SBrad Bishop    add_project_arguments('-DMAPPER_ENABLE_DEBUG', language: 'cpp')
45d6aa5525SBrad Bishopendif
46d6aa5525SBrad Bishop
47ec87407cSPatrick Williamsif get_option('tests').allowed()
480aa15907SBrad Bishop    gtest = dependency('gtest', main: true, disabler: true, required: false)
490aa15907SBrad Bishop    gmock = dependency('gmock', disabler: true, required: false)
500aa15907SBrad Bishop    if not gtest.found() or not gmock.found()
510aa15907SBrad Bishop        gtest_proj = import('cmake').subproject('googletest', required: false)
520aa15907SBrad Bishop        if gtest_proj.found()
530aa15907SBrad Bishop            gtest = declare_dependency(
540aa15907SBrad Bishop                dependencies: [
550aa15907SBrad Bishop                    dependency('threads'),
560aa15907SBrad Bishop                    gtest_proj.dependency('gtest'),
570aa15907SBrad Bishop                    gtest_proj.dependency('gtest_main'),
58*2a1ef013SPatrick Williams                ],
590aa15907SBrad Bishop            )
600aa15907SBrad Bishop            gmock = gtest_proj.dependency('gmock')
610aa15907SBrad Bishop        else
620aa15907SBrad Bishop            assert(
63ec87407cSPatrick Williams                not get_option('tests').allowed(),
64*2a1ef013SPatrick Williams                'Googletest is required if tests are enabled',
650aa15907SBrad Bishop            )
660aa15907SBrad Bishop        endif
670aa15907SBrad Bishop    endif
680aa15907SBrad Bishop    subdir('src/test')
690aa15907SBrad Bishop    subdir('libmapper/test')
700aa15907SBrad Bishopendif
710aa15907SBrad Bishop
720aa15907SBrad Bishopinstall_headers('libmapper/mapper.h')
730aa15907SBrad Bishop
740aa15907SBrad Bishoplibmapper = library(
750aa15907SBrad Bishop    'mapper',
760aa15907SBrad Bishop    'libmapper/mapper.c',
770aa15907SBrad Bishop    dependencies: [dependency('libsystemd')],
780aa15907SBrad Bishop    gnu_symbol_visibility: 'hidden',
790aa15907SBrad Bishop    version: meson.project_version(),
80*2a1ef013SPatrick Williams    install: true,
81*2a1ef013SPatrick Williams)
820aa15907SBrad Bishop
83d4887757SPatrick Williamsmapper_dep = declare_dependency(
84d4887757SPatrick Williams    link_with: libmapper,
85d4887757SPatrick Williams    include_directories: include_directories('libmapper'),
86d4887757SPatrick Williams    dependencies: [dependency('libsystemd')],
87d4887757SPatrick Williams)
88d4887757SPatrick Williams
890aa15907SBrad Bishopimport('pkgconfig').generate(
900aa15907SBrad Bishop    name: 'libmapper',
910aa15907SBrad Bishop    description: 'OpenBMC service discovery utility library',
920aa15907SBrad Bishop    version: meson.project_version(),
93*2a1ef013SPatrick Williams    libraries: libmapper,
94*2a1ef013SPatrick Williams)
950aa15907SBrad Bishop
960aa15907SBrad Bishopexecutable(
970aa15907SBrad Bishop    'mapper',
980aa15907SBrad Bishop    'libmapper/app.c',
990aa15907SBrad Bishop    link_with: libmapper,
1000aa15907SBrad Bishop    dependencies: [dependency('libsystemd')],
101*2a1ef013SPatrick Williams    install: true,
102*2a1ef013SPatrick Williams)
1030aa15907SBrad Bishop
104fb853663SAndrew Jefferymapperx = executable(
1050aa15907SBrad Bishop    'mapperx',
1060aa15907SBrad Bishop    [
1070aa15907SBrad Bishop        'src/main.cpp',
1080aa15907SBrad Bishop        'src/processing.cpp',
1090aa15907SBrad Bishop        'src/associations.cpp',
110aba14d3dSWilly Tu        'src/handler.cpp',
1110aa15907SBrad Bishop    ],
1120aa15907SBrad Bishop    dependencies: [
11326ed4a1eSEd Tanous        boost,
1140aa15907SBrad Bishop        dependency('libsystemd'),
1155962db5aSBrad Bishop        phosphor_dbus_interfaces,
1160aa15907SBrad Bishop        phosphor_logging,
1170aa15907SBrad Bishop        sdbusplus,
1180aa15907SBrad Bishop        dependency('threads'),
119883d91d7SKonstantin Aladyshev        dependency('tinyxml2', default_options: ['tests=false']),
1200aa15907SBrad Bishop    ],
1212ec9157fSBrad Bishop    install: true,
1222ec9157fSBrad Bishop    install_dir: join_paths(
123*2a1ef013SPatrick Williams        get_option('prefix'),
124*2a1ef013SPatrick Williams        get_option('libexecdir'),
125*2a1ef013SPatrick Williams        meson.project_name(),
126*2a1ef013SPatrick Williams    ),
1270aa15907SBrad Bishop)
128fb853663SAndrew Jefferymeson.override_find_program('mapperx', mapperx)
1290aa15907SBrad Bishop
1302ec9157fSBrad Bishopsystemd_system_unit_dir = dependency('systemd').get_variable(
131*2a1ef013SPatrick Williams    'systemdsystemunitdir',
1322ec9157fSBrad Bishop)
1332ec9157fSBrad Bishop
1342ec9157fSBrad Bishopconf = configuration_data()
1352ec9157fSBrad Bishopconf.set('BINDIR', join_paths(get_option('prefix'), get_option('bindir')))
136*2a1ef013SPatrick Williamsconf.set(
137*2a1ef013SPatrick Williams    'LIBEXECDIR',
138*2a1ef013SPatrick Williams    join_paths(get_option('prefix'), get_option('libexecdir')),
139*2a1ef013SPatrick Williams)
1402ec9157fSBrad Bishop
1412ec9157fSBrad Bishopunit_files = [
1422ec9157fSBrad Bishop    'xyz.openbmc_project.ObjectMapper.service',
1432ec9157fSBrad Bishop    'mapper-subtree-remove@.service',
144*2a1ef013SPatrick Williams    'mapper-wait@.service',
1452ec9157fSBrad Bishop]
1462ec9157fSBrad Bishop
1472ec9157fSBrad Bishopforeach u : unit_files
1482ec9157fSBrad Bishop    configure_file(
1492ec9157fSBrad Bishop        configuration: conf,
1502ec9157fSBrad Bishop        input: join_paths('src/systemd', u) + '.in',
1512ec9157fSBrad Bishop        install: true,
1522ec9157fSBrad Bishop        install_dir: systemd_system_unit_dir,
153*2a1ef013SPatrick Williams        output: u,
1542ec9157fSBrad Bishop    )
1552ec9157fSBrad Bishopendforeach
1562ec9157fSBrad Bishop
1572ec9157fSBrad Bishopdbus_system_bus_services_dir = dependency('dbus-1').get_variable(
15840302742SPatrick Williams    'system_bus_services_dir',
159*2a1ef013SPatrick Williams    pkgconfig_define: ['prefix', get_option('prefix')],
1602ec9157fSBrad Bishop)
1612ec9157fSBrad Bishop
1622ec9157fSBrad Bishopinstall_data(
1632ec9157fSBrad Bishop    'src/dbus/xyz.openbmc_project.ObjectMapper.service',
164*2a1ef013SPatrick Williams    install_dir: dbus_system_bus_services_dir,
165*2a1ef013SPatrick Williams)
1662ec9157fSBrad Bishop
1672ec9157fSBrad Bishopinstall_data(
1682ec9157fSBrad Bishop    'src/dbus/xyz.openbmc_project.ObjectMapper.conf',
169*2a1ef013SPatrick Williams    install_dir: get_option('datadir') / 'dbus-1' / 'system.d',
170*2a1ef013SPatrick Williams)
1712ec9157fSBrad Bishop
17242e5aee2SBrad Bishopif not get_option('unit-failure-monitor').disabled()
1730aa15907SBrad Bishop    executable(
1740aa15907SBrad Bishop        'phosphor-unit-failure-monitor',
175*2a1ef013SPatrick Williams        ['fail-monitor/main.cpp', 'fail-monitor/monitor.cpp'],
176*2a1ef013SPatrick Williams        dependencies: [cli11_dep, phosphor_logging],
177*2a1ef013SPatrick Williams        install: true,
1780aa15907SBrad Bishop    )
17942e5aee2SBrad Bishopendif
180