blob: 9b0040f3345529e93d3ba26bf3b819a0817ec832 [file] [log] [blame]
Patrick Williamsf8ccac92025-02-01 08:37:15 -05001project(
2 'phosphor-user-manager',
3 'cpp',
4 version: '0.1',
5 meson_version: '>=1.1.1',
6 default_options: [
7 'warning_level=3',
8 'werror=true',
9 'cpp_std=c++23',
10 'buildtype=debugoptimized',
11 ],
Ratan Guptaca039ca2022-01-09 12:22:27 +053012)
13
Patrick Williams90b84ad2023-11-29 06:44:34 -060014if get_option('root_user_mgmt').allowed()
Patrick Williamsf8ccac92025-02-01 08:37:15 -050015 add_project_arguments('-DENABLE_ROOT_USER_MGMT', language: 'cpp')
Nan Zhou0076afe2022-08-29 17:52:10 +000016endif
17
Ratan Guptaca039ca2022-01-09 12:22:27 +053018conf_data = configuration_data()
19
Patrick Williamsf8ccac92025-02-01 08:37:15 -050020conf_data.set_quoted(
21 'USER_MANAGER_BUSNAME',
22 'xyz.openbmc_project.User.Manager',
23 description: 'The DBus busname to own.',
24)
Ratan Guptaca039ca2022-01-09 12:22:27 +053025
Patrick Williamsf8ccac92025-02-01 08:37:15 -050026conf_data.set(
27 'CLASS_VERSION',
28 1,
29 description: 'Class version to register with Cereal.',
30)
Ratan Guptaca039ca2022-01-09 12:22:27 +053031
Patrick Williamsf8ccac92025-02-01 08:37:15 -050032conf_data.set_quoted(
33 'LDAP_CONFIG_FILE',
34 '/etc/nslcd.conf',
35 description: 'Path of LDAP configuration file.',
36)
Ratan Guptaca039ca2022-01-09 12:22:27 +053037
Patrick Williamsf8ccac92025-02-01 08:37:15 -050038conf_data.set_quoted(
39 'TLS_CACERT_PATH',
40 '/etc/ssl/certs/authority',
41 description: 'Path of LDAP server CA certificate.',
42)
Ratan Guptaca039ca2022-01-09 12:22:27 +053043
Patrick Williamsf8ccac92025-02-01 08:37:15 -050044conf_data.set_quoted(
45 'TLS_CERT_FILE',
46 '/etc/nslcd/certs/cert.pem',
47 description: 'Path of LDAP client certificate.',
48)
Ratan Guptaca039ca2022-01-09 12:22:27 +053049
Patrick Williamsf8ccac92025-02-01 08:37:15 -050050conf_data.set_quoted(
51 'LDAP_CONFIG_ROOT',
52 '/xyz/openbmc_project/user/ldap',
53 description: 'LDAP configuration root.',
54)
Ratan Guptaca039ca2022-01-09 12:22:27 +053055
Patrick Williamsf8ccac92025-02-01 08:37:15 -050056conf_data.set_quoted(
57 'LDAP_CONFIG_DBUS_OBJ_PATH',
58 '/xyz/openbmc_project/user/ldap/config',
59 description: 'D-Bus path of LDAP config object.',
60)
Ratan Guptaca039ca2022-01-09 12:22:27 +053061
Patrick Williamsf8ccac92025-02-01 08:37:15 -050062conf_data.set_quoted(
63 'LDAP_CONFIG_BUSNAME',
64 'xyz.openbmc_project.Ldap.Config',
65 description: 'D-Bus busname of LDAP config service.',
66)
Ratan Guptaca039ca2022-01-09 12:22:27 +053067
Patrick Williamsf8ccac92025-02-01 08:37:15 -050068conf_data.set_quoted(
69 'LDAP_CONF_PERSIST_PATH',
70 '/var/lib/phosphor-ldap-conf',
71 description: 'path of directory having persisted LDAP configuration enabled property.',
72)
Ratan Guptaca039ca2022-01-09 12:22:27 +053073
Chandramohan Harkude9ca86922025-05-18 13:09:25 +053074conf_data.set(
75 'MAX_PASSWORD_LENGTH',
76 get_option('MAX_PASSWORD_LENGTH'),
77 description: 'Maximum password length',
78)
79
Patrick Williamsf8ccac92025-02-01 08:37:15 -050080conf_header = configure_file(output: 'config.h', configuration: conf_data)
Ratan Guptaca039ca2022-01-09 12:22:27 +053081
Ratan Guptaca039ca2022-01-09 12:22:27 +053082cpp = meson.get_compiler('cpp')
83
Konstantin Aladyshevc992c262024-04-02 16:54:35 +030084boost_dep = dependency('boost')
Patrick Williams0b5f1582025-07-09 18:08:12 -040085ldap_dep = cpp.find_library('ldap', required: get_option('ldap'))
Patrick Williams20712642025-07-02 15:51:19 -040086nlohmann_json_dep = dependency('nlohmann_json', include_type: 'system')
Patrick Williamsa3353112025-06-25 23:32:49 -040087pam_dep = dependency('pam')
88phosphor_dbus_interfaces_dep = dependency('phosphor-dbus-interfaces')
89phosphor_logging_dep = dependency('phosphor-logging')
90sdbusplus_dep = dependency('sdbusplus')
91systemd_dep = dependency('systemd')
Konstantin Aladyshevc992c262024-04-02 16:54:35 +030092
Patrick Williamscf53a942022-03-21 11:10:43 -050093# Get Cereal dependency.
94cereal_dep = dependency('cereal', required: false)
95has_cereal = cpp.has_header_symbol(
96 'cereal/cereal.hpp',
97 'cereal::specialize',
98 dependencies: cereal_dep,
Patrick Williamsf8ccac92025-02-01 08:37:15 -050099 required: false,
100)
Patrick Williamscf53a942022-03-21 11:10:43 -0500101if not has_cereal
102 cereal_opts = import('cmake').subproject_options()
Patrick Williamsf8ccac92025-02-01 08:37:15 -0500103 cereal_opts.add_cmake_defines(
104 {'BUILD_TESTS': 'OFF', 'SKIP_PERFORMANCE_COMPARISON': 'ON'},
105 )
Patrick Williamscf53a942022-03-21 11:10:43 -0500106 cereal_proj = import('cmake').subproject(
107 'cereal',
108 options: cereal_opts,
Patrick Williamsf8ccac92025-02-01 08:37:15 -0500109 required: false,
110 )
Patrick Williamscf53a942022-03-21 11:10:43 -0500111 assert(cereal_proj.found(), 'cereal is required')
112 cereal_dep = cereal_proj.dependency('cereal')
113endif
Patrick Williamsf8ccac92025-02-01 08:37:15 -0500114user_manager_src = ['mainapp.cpp', 'user_mgr.cpp', 'users.cpp']
Ratan Guptaca039ca2022-01-09 12:22:27 +0530115
Abhilash Rajua1a754c2024-07-25 05:43:40 -0500116
Ratan Guptaca039ca2022-01-09 12:22:27 +0530117user_manager_deps = [
Patrick Williamsf8ccac92025-02-01 08:37:15 -0500118 boost_dep,
Patrick Williams20712642025-07-02 15:51:19 -0400119 nlohmann_json_dep,
Abhilash Rajua1a754c2024-07-25 05:43:40 -0500120 pam_dep,
Patrick Williamsf8ccac92025-02-01 08:37:15 -0500121 phosphor_dbus_interfaces_dep,
Patrick Williams20712642025-07-02 15:51:19 -0400122 phosphor_logging_dep,
123 sdbusplus_dep,
Ratan Guptaca039ca2022-01-09 12:22:27 +0530124]
125
126user_manager_lib = static_library(
127 'phosphor-user-manager',
Patrick Williamsf8ccac92025-02-01 08:37:15 -0500128 ['user_mgr.cpp', 'users.cpp'],
Ratan Guptaca039ca2022-01-09 12:22:27 +0530129 dependencies: user_manager_deps,
130)
131
132user_manager_dep = declare_dependency(
133 link_with: user_manager_lib,
Patrick Williamsf8ccac92025-02-01 08:37:15 -0500134 dependencies: user_manager_deps,
Ratan Guptaca039ca2022-01-09 12:22:27 +0530135)
136
137executable(
138 'phosphor-user-manager',
139 'mainapp.cpp',
140 dependencies: user_manager_dep,
Patrick Williamsf8ccac92025-02-01 08:37:15 -0500141 link_args: ['-lcrypt'],
142 cpp_args: [
143 '-DBOOST_ALL_NO_LIB',
144 '-DBOOST_SYSTEM_NO_DEPRECATED',
145 '-DBOOST_ERROR_CODE_HEADER_ONLY',
146 ],
Ratan Guptaca039ca2022-01-09 12:22:27 +0530147 install: true,
148)
149
150
Patrick Williamsca3729a2025-07-09 11:27:12 -0400151systemd_system_unit_dir = systemd_dep.get_variable('systemd_system_unit_dir')
Ratan Guptaca039ca2022-01-09 12:22:27 +0530152
Ratan Guptaca039ca2022-01-09 12:22:27 +0530153install_data(
Nan Zhou0076afe2022-08-29 17:52:10 +0000154 'phosphor-nslcd-cert-config.conf',
155 install_dir: get_option('datadir') / 'dbus-1' / 'system.d',
Ratan Guptaca039ca2022-01-09 12:22:27 +0530156)
157
158install_data(
Nan Zhou0076afe2022-08-29 17:52:10 +0000159 'nslcd',
160 install_dir: get_option('datadir') / 'phosphor-certificate-manager',
Ratan Guptaca039ca2022-01-09 12:22:27 +0530161)
162
Abhilash Rajua1a754c2024-07-25 05:43:40 -0500163install_data('mfa_pam', install_dir: '/etc/pam.d/')
164
Nan Zhou0076afe2022-08-29 17:52:10 +0000165# Figure out how to use install_symlink to install symlink to a file of another
166# recipe
167#install_symlink(
168# 'phosphor-certificate-manager@nslcd.service',
169# install_dir: systemd_system_unit_dir / 'multi-user.target.wants',
170# pointing_to: systemd_system_unit_dir / 'phosphor-certificate-manager@.service',
171# )
172meson.add_install_script(
Patrick Williamsf8ccac92025-02-01 08:37:15 -0500173 'sh',
174 '-c',
175 'mkdir -p $(dirname $DESTDIR/@0@/@1@)'.format(
176 systemd_system_unit_dir,
177 'multi-user.target.wants/phosphor-certificate-manager@nslcd.service',
178 ),
Nan Zhou0076afe2022-08-29 17:52:10 +0000179)
180meson.add_install_script(
Patrick Williamsf8ccac92025-02-01 08:37:15 -0500181 'sh',
182 '-c',
183 'ln -s @0@ $DESTDIR/@1@/@2@'.format(
184 '../phosphor-certificate-manager@.service',
Nan Zhou0076afe2022-08-29 17:52:10 +0000185 systemd_system_unit_dir,
Patrick Williamsf8ccac92025-02-01 08:37:15 -0500186 'multi-user.target.wants/phosphor-certificate-manager@nslcd.service',
187 ),
Nan Zhou0076afe2022-08-29 17:52:10 +0000188)
Ratan Guptaca039ca2022-01-09 12:22:27 +0530189
Patrick Williams0b5f1582025-07-09 18:08:12 -0400190if get_option('ldap').allowed() and ldap_dep.found()
Patrick Williamsa3353112025-06-25 23:32:49 -0400191 subdir('phosphor-ldap-config')
192endif
Ratan Guptaca039ca2022-01-09 12:22:27 +0530193
Patrick Williams90b84ad2023-11-29 06:44:34 -0600194if get_option('tests').allowed()
Patrick Williamsf8ccac92025-02-01 08:37:15 -0500195 subdir('test')
Ratan Guptaca039ca2022-01-09 12:22:27 +0530196endif