blob: ab9d2d91d83811814d793baa74fac86b299c64c8 [file] [log] [blame]
project('phosphor-user-manager',
'cpp',
version: '0.1', meson_version: '>=0.57.0',
default_options: [
'warning_level=3',
'werror=true',
'cpp_std=c++20',
'buildtype=debugoptimized',
]
)
conf_data = configuration_data()
conf_data.set_quoted('USER_MANAGER_BUSNAME', 'xyz.openbmc_project.User.Manager',
description : 'The DBus busname to own.')
conf_data.set_quoted('DEFAULT_CRYPT_ALGO', '1',
description : 'The default crypt algorithm if one not found in shadow.')
conf_data.set('CLASS_VERSION', 1,
description : 'Class version to register with Cereal.')
conf_data.set_quoted('LDAP_CONFIG_FILE', '/etc/nslcd.conf',
description : 'Path of LDAP configuration file.')
conf_data.set_quoted('TLS_CACERT_PATH', '/etc/ssl/certs/authority',
description : 'Path of LDAP server CA certificate.')
conf_data.set_quoted('TLS_CERT_FILE', '/etc/nslcd/certs/cert.pem',
description : 'Path of LDAP client certificate.')
conf_data.set_quoted('LDAP_CONFIG_ROOT', '/xyz/openbmc_project/user/ldap',
description : 'LDAP configuration root.')
conf_data.set_quoted('LDAP_CONFIG_DBUS_OBJ_PATH', '/xyz/openbmc_project/user/ldap/config',
description : 'D-Bus path of LDAP config object.')
conf_data.set_quoted('LDAP_CONFIG_BUSNAME', 'xyz.openbmc_project.Ldap.Config',
description : 'D-Bus busname of LDAP config service.')
conf_data.set_quoted('LDAP_CONF_PERSIST_PATH', '/var/lib/phosphor-ldap-conf',
description : 'path of directory having persisted LDAP configuration enabled property.')
conf_data.set_quoted('SYSTEMD_BUSNAME', 'org.freedesktop.systemd1',
description : 'systemd busname.')
conf_data.set_quoted('SYSTEMD_PATH', '/org/freedesktop/systemd1',
description : 'systemd path')
conf_data.set_quoted('SYSTEMD_INTERFACE', 'org.freedesktop.systemd1.Manager',
description : 'systemd interface.')
conf_header = configure_file(output: 'config.h',
configuration: conf_data)
phosphor_dbus_interfaces_dep = dependency('phosphor-dbus-interfaces')
sdbusplus_dep = dependency('sdbusplus')
phosphor_logging_dep = dependency('phosphor-logging')
systemd_dep = dependency('systemd')
cpp = meson.get_compiler('cpp')
# Get Cereal dependency.
cereal_dep = dependency('cereal', required: false)
has_cereal = cpp.has_header_symbol(
'cereal/cereal.hpp',
'cereal::specialize',
dependencies: cereal_dep,
required: false)
if not has_cereal
cereal_opts = import('cmake').subproject_options()
cereal_opts.add_cmake_defines({'BUILD_TESTS': 'OFF'})
cereal_proj = import('cmake').subproject(
'cereal',
options: cereal_opts,
required: false)
assert(cereal_proj.found(), 'cereal is required')
cereal_dep = cereal_proj.dependency('cereal')
endif
user_manager_src = [
'mainapp.cpp',
'user_mgr.cpp',
'users.cpp'
]
user_manager_deps = [
sdbusplus_dep,
phosphor_logging_dep,
phosphor_dbus_interfaces_dep
]
user_manager_lib = static_library(
'phosphor-user-manager',
[
'user_mgr.cpp',
'users.cpp',
],
dependencies: user_manager_deps,
)
user_manager_dep = declare_dependency(
link_with: user_manager_lib,
dependencies: user_manager_deps
)
executable(
'phosphor-user-manager',
'mainapp.cpp',
dependencies: user_manager_dep,
link_args: ['-lcrypt', '-lstdc++fs'],
cpp_args: ['-DBOOST_ALL_NO_LIB', '-DBOOST_SYSTEM_NO_DEPRECATED', '-DBOOST_ERROR_CODE_HEADER_ONLY'],
install: true,
)
systemd_system_unit_dir = systemd_dep.get_variable(
pkgconfig: 'systemdsystemunitdir'
)
busconfig_dir = get_option('datadir') / 'dbus-1' / 'system.d'
cert_manager_dir = get_option('datadir') / 'phosphor-certificate-manager'
certs = []
busconfig = []
systemd_alias = []
certs += 'nslcd'
busconfig += 'phosphor-nslcd-cert-config.conf'
systemd_alias += [[
'../phosphor-certificate-manager@.service',
'multi-user.target.wants/phosphor-certificate-manager@nslcd.service'
]]
install_data(
busconfig,
install_dir: busconfig_dir,
)
install_data(
certs,
install_dir: cert_manager_dir,
)
foreach service: systemd_alias
# Meson 0.61 will support this:
#install_symlink(
# service,
# install_dir: systemd_system_unit_dir,
# pointing_to: link,
# )
meson.add_install_script(
'sh', '-c',
'mkdir -p $(dirname $DESTDIR/@0@/@1@)'.format(systemd_system_unit_dir,
service[1]),
)
meson.add_install_script(
'sh', '-c',
'ln -s @0@ $DESTDIR/@1@/@2@'.format(service[0], systemd_system_unit_dir,
service[1]),
)
endforeach
subdir('phosphor-ldap-config')
if get_option('tests').enabled()
subdir('test')
endif