blob: 6bbea64ea4c28ed41666c32bca50a8e3f33a6e86 [file] [log] [blame]
project(
'phosphor-user-manager',
'cpp',
version: '0.1',
meson_version: '>=1.1.1',
default_options: [
'warning_level=3',
'werror=true',
'cpp_std=c++23',
'buildtype=debugoptimized',
],
)
if get_option('root_user_mgmt').allowed()
add_project_arguments('-DENABLE_ROOT_USER_MGMT', language: 'cpp')
endif
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(
'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_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')
boost_dep = dependency('boost')
# 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', 'SKIP_PERFORMANCE_COMPARISON': 'ON'},
)
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
pam_dep = dependency('pam')
user_manager_src = ['mainapp.cpp', 'user_mgr.cpp', 'users.cpp']
user_manager_deps = [
boost_dep,
pam_dep,
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'],
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('systemdsystemunitdir')
install_data(
'phosphor-nslcd-cert-config.conf',
install_dir: get_option('datadir') / 'dbus-1' / 'system.d',
)
install_data(
'nslcd',
install_dir: get_option('datadir') / 'phosphor-certificate-manager',
)
install_data('mfa_pam', install_dir: '/etc/pam.d/')
# Figure out how to use install_symlink to install symlink to a file of another
# recipe
#install_symlink(
# 'phosphor-certificate-manager@nslcd.service',
# install_dir: systemd_system_unit_dir / 'multi-user.target.wants',
# pointing_to: systemd_system_unit_dir / 'phosphor-certificate-manager@.service',
# )
meson.add_install_script(
'sh',
'-c',
'mkdir -p $(dirname $DESTDIR/@0@/@1@)'.format(
systemd_system_unit_dir,
'multi-user.target.wants/phosphor-certificate-manager@nslcd.service',
),
)
meson.add_install_script(
'sh',
'-c',
'ln -s @0@ $DESTDIR/@1@/@2@'.format(
'../phosphor-certificate-manager@.service',
systemd_system_unit_dir,
'multi-user.target.wants/phosphor-certificate-manager@nslcd.service',
),
)
subdir('phosphor-ldap-config')
if get_option('tests').allowed()
subdir('test')
endif