xref: /OK3568_Linux_fs/buildroot/package/systemd/systemd.mk (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun################################################################################
2*4882a593Smuzhiyun#
3*4882a593Smuzhiyun# systemd
4*4882a593Smuzhiyun#
5*4882a593Smuzhiyun################################################################################
6*4882a593Smuzhiyun
7*4882a593Smuzhiyun# When updating systemd, take care of the following:
8*4882a593Smuzhiyun# - Check if the requirements have changed (see README), in particular
9*4882a593Smuzhiyun#   arch and headers
10*4882a593Smuzhiyun# - If yes, propagate the dependencies to BR2_INIT_SYSTEMD
11*4882a593Smuzhiyun# - If the required kernel options have changed, update the Config.in
12*4882a593Smuzhiyun#   help text and the list of KCONFIG_ENABLE_OPT.
13*4882a593Smuzhiyun# - Check if there are new meson_options. Make sure all options are set
14*4882a593Smuzhiyun#   explicitly (usually to default value).
15*4882a593Smuzhiyun# - If there are new services:
16*4882a593Smuzhiyun#   - create new options for them (if they really are optional);
17*4882a593Smuzhiyun#   - create a new _USER if necessary;
18*4882a593Smuzhiyun#   - create new directory (with _PERMISSIONS) if necessary.
19*4882a593Smuzhiyun# - Diff sysusers.d with the previous version
20*4882a593Smuzhiyun# - Diff factory/etc/nsswitch.conf with the previous version
21*4882a593Smuzhiyun#   (details are often sprinkled around in README and manpages)
22*4882a593SmuzhiyunSYSTEMD_VERSION = 250.4
23*4882a593SmuzhiyunSYSTEMD_SITE = $(call github,systemd,systemd-stable,v$(SYSTEMD_VERSION))
24*4882a593SmuzhiyunSYSTEMD_LICENSE = \
25*4882a593Smuzhiyun	LGPL-2.1+, \
26*4882a593Smuzhiyun	GPL-2.0+ (udev), \
27*4882a593Smuzhiyun	Public Domain (few source files, see LICENSES/README.md), \
28*4882a593Smuzhiyun	BSD-2-Clause (eBPF instruction mini library), \
29*4882a593Smuzhiyun	BSD-3-Clause (tools/chromiumos), \
30*4882a593Smuzhiyun	CC0-1.0 (few source files, see LICENSES/README.md), \
31*4882a593Smuzhiyun	GPL-2.0 with Linux-syscall-note (linux kernel headers), \
32*4882a593Smuzhiyun	MIT (few source files, see LICENSES/README.md), \
33*4882a593Smuzhiyun	OFL-1.1 (Heebo fonts)
34*4882a593SmuzhiyunSYSTEMD_LICENSE_FILES = \
35*4882a593Smuzhiyun	LICENSE.GPL2 \
36*4882a593Smuzhiyun	LICENSE.LGPL2.1 \
37*4882a593Smuzhiyun	LICENSES/BSD-2-Clause.txt \
38*4882a593Smuzhiyun	LICENSES/BSD-3-Clause.txt \
39*4882a593Smuzhiyun	LICENSES/CC0-1.0.txt \
40*4882a593Smuzhiyun	LICENSES/LGPL-2.0-or-later.txt \
41*4882a593Smuzhiyun	LICENSES/Linux-syscall-note.txt \
42*4882a593Smuzhiyun	LICENSES/lookup3-public-domain.txt \
43*4882a593Smuzhiyun	LICENSES/MIT.txt \
44*4882a593Smuzhiyun	LICENSES/murmurhash2-public-domain.txt \
45*4882a593Smuzhiyun	LICENSES/OFL-1.1.txt \
46*4882a593Smuzhiyun	LICENSES/README.md
47*4882a593SmuzhiyunSYSTEMD_CPE_ID_VENDOR = systemd_project
48*4882a593SmuzhiyunSYSTEMD_INSTALL_STAGING = YES
49*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES = \
50*4882a593Smuzhiyun	$(BR2_COREUTILS_HOST_DEPENDENCY) \
51*4882a593Smuzhiyun	$(if $(BR2_PACKAGE_BASH_COMPLETION),bash-completion) \
52*4882a593Smuzhiyun	host-gperf \
53*4882a593Smuzhiyun	host-python-jinja2 \
54*4882a593Smuzhiyun	kmod \
55*4882a593Smuzhiyun	libcap \
56*4882a593Smuzhiyun	util-linux-libs \
57*4882a593Smuzhiyun	$(TARGET_NLS_DEPENDENCIES)
58*4882a593Smuzhiyun
59*4882a593SmuzhiyunSYSTEMD_SELINUX_MODULES = systemd udev xdg
60*4882a593Smuzhiyun
61*4882a593SmuzhiyunSYSTEMD_PROVIDES = udev
62*4882a593Smuzhiyun
63*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += \
64*4882a593Smuzhiyun	-Ddefault-hierarchy=unified \
65*4882a593Smuzhiyun	-Didn=true \
66*4882a593Smuzhiyun	-Dima=false \
67*4882a593Smuzhiyun	-Dkexec-path=/usr/sbin/kexec \
68*4882a593Smuzhiyun	-Dkmod-path=/usr/bin/kmod \
69*4882a593Smuzhiyun	-Dldconfig=false \
70*4882a593Smuzhiyun	-Dlink-boot-shared=true \
71*4882a593Smuzhiyun	-Dloadkeys-path=/usr/bin/loadkeys \
72*4882a593Smuzhiyun	-Dman=false \
73*4882a593Smuzhiyun	-Dmount-path=/usr/bin/mount \
74*4882a593Smuzhiyun	-Dmode=release \
75*4882a593Smuzhiyun	-Dnss-systemd=true \
76*4882a593Smuzhiyun	-Dquotacheck-path=/usr/sbin/quotacheck \
77*4882a593Smuzhiyun	-Dquotaon-path=/usr/sbin/quotaon \
78*4882a593Smuzhiyun	-Drootlibdir='/usr/lib' \
79*4882a593Smuzhiyun	-Dsetfont-path=/usr/bin/setfont \
80*4882a593Smuzhiyun	-Dsplit-bin=true \
81*4882a593Smuzhiyun	-Dsplit-usr=false \
82*4882a593Smuzhiyun	-Dsulogin-path=/usr/sbin/sulogin \
83*4882a593Smuzhiyun	-Dsystem-gid-max=999 \
84*4882a593Smuzhiyun	-Dsystem-uid-max=999 \
85*4882a593Smuzhiyun	-Dsysvinit-path= \
86*4882a593Smuzhiyun	-Dsysvrcnd-path= \
87*4882a593Smuzhiyun	-Dtelinit-path= \
88*4882a593Smuzhiyun	-Dtests=false \
89*4882a593Smuzhiyun	-Dtmpfiles=true \
90*4882a593Smuzhiyun	-Dumount-path=/usr/bin/umount \
91*4882a593Smuzhiyun	-Dutmp=false
92*4882a593Smuzhiyun
93*4882a593Smuzhiyunifeq ($(BR2_nios2),y)
94*4882a593Smuzhiyun# Nios2 ld emits warnings, make warnings not to be treated as errors
95*4882a593SmuzhiyunSYSTEMD_LDFLAGS = $(TARGET_LDFLAGS) -Wl,--no-fatal-warnings
96*4882a593Smuzhiyunendif
97*4882a593Smuzhiyun
98*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_ACL),y)
99*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += acl
100*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dacl=true
101*4882a593Smuzhiyunelse
102*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dacl=false
103*4882a593Smuzhiyunendif
104*4882a593Smuzhiyun
105*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LESS),y)
106*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Durlify=true
107*4882a593Smuzhiyunelse
108*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Durlify=false
109*4882a593Smuzhiyunendif
110*4882a593Smuzhiyun
111*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBAPPARMOR),y)
112*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += libapparmor
113*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dapparmor=true
114*4882a593Smuzhiyunelse
115*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dapparmor=false
116*4882a593Smuzhiyunendif
117*4882a593Smuzhiyun
118*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_AUDIT),y)
119*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += audit
120*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Daudit=true
121*4882a593Smuzhiyunelse
122*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Daudit=false
123*4882a593Smuzhiyunendif
124*4882a593Smuzhiyun
125*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_CRYPTSETUP),y)
126*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += cryptsetup
127*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dlibcryptsetup=true -Dlibcryptsetup-plugins=true
128*4882a593Smuzhiyunelse
129*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dlibcryptsetup=false -Dlibcryptsetup-plugins=false
130*4882a593Smuzhiyunendif
131*4882a593Smuzhiyun
132*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_ELFUTILS),y)
133*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += elfutils
134*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Delfutils=true
135*4882a593Smuzhiyunelse
136*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Delfutils=false
137*4882a593Smuzhiyunendif
138*4882a593Smuzhiyun
139*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_IPTABLES),y)
140*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += iptables
141*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dlibiptc=true
142*4882a593Smuzhiyunelse
143*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dlibiptc=false
144*4882a593Smuzhiyunendif
145*4882a593Smuzhiyun
146*4882a593Smuzhiyun# Both options can't be selected at the same time so prefer libidn2
147*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBIDN2),y)
148*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += libidn2
149*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dlibidn2=true -Dlibidn=false
150*4882a593Smuzhiyunelse ifeq ($(BR2_PACKAGE_LIBIDN),y)
151*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += libidn
152*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dlibidn=true -Dlibidn2=false
153*4882a593Smuzhiyunelse
154*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dlibidn=false -Dlibidn2=false
155*4882a593Smuzhiyunendif
156*4882a593Smuzhiyun
157*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBSECCOMP),y)
158*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += libseccomp
159*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dseccomp=true
160*4882a593Smuzhiyunelse
161*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dseccomp=false
162*4882a593Smuzhiyunendif
163*4882a593Smuzhiyun
164*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBXKBCOMMON),y)
165*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += libxkbcommon
166*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dxkbcommon=true
167*4882a593Smuzhiyunelse
168*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dxkbcommon=false
169*4882a593Smuzhiyunendif
170*4882a593Smuzhiyun
171*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_BZIP2),y)
172*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += bzip2
173*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dbzip2=true
174*4882a593Smuzhiyunelse
175*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dbzip2=false
176*4882a593Smuzhiyunendif
177*4882a593Smuzhiyun
178*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_ZSTD),y)
179*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += zstd
180*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dzstd=true
181*4882a593Smuzhiyunelse
182*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dzstd=false
183*4882a593Smuzhiyunendif
184*4882a593Smuzhiyun
185*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LZ4),y)
186*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += lz4
187*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dlz4=true
188*4882a593Smuzhiyunelse
189*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dlz4=false
190*4882a593Smuzhiyunendif
191*4882a593Smuzhiyun
192*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LINUX_PAM),y)
193*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += linux-pam
194*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dpam=true
195*4882a593Smuzhiyunelse
196*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dpam=false
197*4882a593Smuzhiyunendif
198*4882a593Smuzhiyun
199*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBFDISK),y)
200*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dfdisk=true
201*4882a593Smuzhiyunelse
202*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dfdisk=false
203*4882a593Smuzhiyunendif
204*4882a593Smuzhiyun
205*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_VALGRIND),y)
206*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += valgrind
207*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dvalgrind=true
208*4882a593Smuzhiyunelse
209*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dvalgrind=false
210*4882a593Smuzhiyunendif
211*4882a593Smuzhiyun
212*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_XZ),y)
213*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += xz
214*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dxz=true
215*4882a593Smuzhiyunelse
216*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dxz=false
217*4882a593Smuzhiyunendif
218*4882a593Smuzhiyun
219*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_ZLIB),y)
220*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += zlib
221*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dzlib=true
222*4882a593Smuzhiyunelse
223*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dzlib=false
224*4882a593Smuzhiyunendif
225*4882a593Smuzhiyun
226*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBCURL),y)
227*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += libcurl
228*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dlibcurl=true
229*4882a593Smuzhiyunelse
230*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dlibcurl=false
231*4882a593Smuzhiyunendif
232*4882a593Smuzhiyun
233*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBGCRYPT),y)
234*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += libgcrypt
235*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Ddefault-dnssec=allow-downgrade -Dgcrypt=true
236*4882a593Smuzhiyunelse
237*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Ddefault-dnssec=no -Dgcrypt=false
238*4882a593Smuzhiyunendif
239*4882a593Smuzhiyun
240*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_P11_KIT),y)
241*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += p11-kit
242*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dp11kit=true
243*4882a593Smuzhiyunelse
244*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dp11kit=false
245*4882a593Smuzhiyunendif
246*4882a593Smuzhiyun
247*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_PCRE2),y)
248*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += pcre2
249*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dpcre2=true
250*4882a593Smuzhiyunelse
251*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dpcre2=false
252*4882a593Smuzhiyunendif
253*4882a593Smuzhiyun
254*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBBLKID),y)
255*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dblkid=true
256*4882a593Smuzhiyunelse
257*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dblkid=false
258*4882a593Smuzhiyunendif
259*4882a593Smuzhiyun
260*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_UTIL_LINUX_NOLOGIN),y)
261*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dnologin-path=/sbin/nologin
262*4882a593Smuzhiyunelse
263*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dnologin-path=/bin/false
264*4882a593Smuzhiyunendif
265*4882a593Smuzhiyun
266*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_INITRD),y)
267*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dinitrd=true
268*4882a593Smuzhiyunelse
269*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dinitrd=false
270*4882a593Smuzhiyunendif
271*4882a593Smuzhiyun
272*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_KERNELINSTALL),y)
273*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dkernel-install=true
274*4882a593Smuzhiyunelse
275*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dkernel-install=false
276*4882a593Smuzhiyunendif
277*4882a593Smuzhiyun
278*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_ANALYZE),y)
279*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Danalyze=true
280*4882a593Smuzhiyunelse
281*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Danalyze=false
282*4882a593Smuzhiyunendif
283*4882a593Smuzhiyun
284*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_JOURNAL_REMOTE),y)
285*4882a593Smuzhiyun# remote also depends on libcurl, this is already added above.
286*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += libmicrohttpd
287*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dremote=true -Dmicrohttpd=true
288*4882a593SmuzhiyunSYSTEMD_REMOTE_USER = systemd-journal-remote -1 systemd-journal-remote -1 * - - - systemd Journal Remote
289*4882a593Smuzhiyunelse
290*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dremote=false -Dmicrohttpd=false
291*4882a593Smuzhiyunendif
292*4882a593Smuzhiyun
293*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBQRENCODE),y)
294*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += libqrencode
295*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dqrencode=true
296*4882a593Smuzhiyunelse
297*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dqrencode=false
298*4882a593Smuzhiyunendif
299*4882a593Smuzhiyun
300*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBSELINUX),y)
301*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += libselinux
302*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dselinux=true
303*4882a593Smuzhiyunelse
304*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dselinux=false
305*4882a593Smuzhiyunendif
306*4882a593Smuzhiyun
307*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_HWDB),y)
308*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dhwdb=true
309*4882a593Smuzhiyundefine SYSTEMD_BUILD_HWDB
310*4882a593Smuzhiyun	$(HOST_DIR)/bin/udevadm hwdb --update --root $(TARGET_DIR)
311*4882a593Smuzhiyunendef
312*4882a593SmuzhiyunSYSTEMD_TARGET_FINALIZE_HOOKS += SYSTEMD_BUILD_HWDB
313*4882a593Smuzhiyundefine SYSTEMD_RM_HWDB_SRV
314*4882a593Smuzhiyun	rm -rf $(TARGET_DIR)/$(HOST_EUDEV_SYSCONFDIR)/udev/hwdb.d/
315*4882a593Smuzhiyunendef
316*4882a593SmuzhiyunSYSTEMD_ROOTFS_PRE_CMD_HOOKS += SYSTEMD_RM_HWDB_SRV
317*4882a593Smuzhiyunelse
318*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dhwdb=false
319*4882a593Smuzhiyunendif
320*4882a593Smuzhiyun
321*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_BINFMT),y)
322*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dbinfmt=true
323*4882a593Smuzhiyunelse
324*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dbinfmt=false
325*4882a593Smuzhiyunendif
326*4882a593Smuzhiyun
327*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_VCONSOLE),y)
328*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dvconsole=true
329*4882a593Smuzhiyunelse
330*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dvconsole=false
331*4882a593Smuzhiyunendif
332*4882a593Smuzhiyun
333*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_QUOTACHECK),y)
334*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dquotacheck=true
335*4882a593Smuzhiyunelse
336*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dquotacheck=false
337*4882a593Smuzhiyunendif
338*4882a593Smuzhiyun
339*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_SYSUSERS),y)
340*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dsysusers=true
341*4882a593Smuzhiyunelse
342*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dsysusers=false
343*4882a593Smuzhiyunendif
344*4882a593Smuzhiyun
345*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_FIRSTBOOT),y)
346*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dfirstboot=true
347*4882a593Smuzhiyunelse
348*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dfirstboot=false
349*4882a593Smuzhiyunendif
350*4882a593Smuzhiyun
351*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_RANDOMSEED),y)
352*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Drandomseed=true
353*4882a593Smuzhiyunelse
354*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Drandomseed=false
355*4882a593Smuzhiyunendif
356*4882a593Smuzhiyun
357*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_BACKLIGHT),y)
358*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dbacklight=true
359*4882a593Smuzhiyunelse
360*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dbacklight=false
361*4882a593Smuzhiyunendif
362*4882a593Smuzhiyun
363*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_RFKILL),y)
364*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Drfkill=true
365*4882a593Smuzhiyunelse
366*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Drfkill=false
367*4882a593Smuzhiyunendif
368*4882a593Smuzhiyun
369*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_LOGIND),y)
370*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dlogind=true
371*4882a593SmuzhiyunSYSTEMD_LOGIND_PERMISSIONS = /var/lib/systemd/linger d 755 0 0 - - - - -
372*4882a593Smuzhiyunelse
373*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dlogind=false
374*4882a593Smuzhiyunendif
375*4882a593Smuzhiyun
376*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_MACHINED),y)
377*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dmachined=true -Dnss-mymachines=true
378*4882a593SmuzhiyunSYSTEMD_MACHINED_PERMISSIONS = /var/lib/machines d 700 0 0 - - - - -
379*4882a593Smuzhiyunelse
380*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dmachined=false -Dnss-mymachines=false
381*4882a593Smuzhiyunendif
382*4882a593Smuzhiyun
383*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_IMPORTD),y)
384*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dimportd=true
385*4882a593Smuzhiyunelse
386*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dimportd=false
387*4882a593Smuzhiyunendif
388*4882a593Smuzhiyun
389*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_HOMED),y)
390*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dhomed=true
391*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += cryptsetup openssl
392*4882a593SmuzhiyunSYSTEMD_HOMED_PERMISSIONS = /var/lib/systemd/home d 755 0 0 - - - - -
393*4882a593Smuzhiyunelse
394*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dhomed=false
395*4882a593Smuzhiyunendif
396*4882a593Smuzhiyun
397*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_HOSTNAMED),y)
398*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dhostnamed=true
399*4882a593Smuzhiyunelse
400*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dhostnamed=false
401*4882a593Smuzhiyunendif
402*4882a593Smuzhiyun
403*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_MYHOSTNAME),y)
404*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dnss-myhostname=true
405*4882a593Smuzhiyunelse
406*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dnss-myhostname=false
407*4882a593Smuzhiyunendif
408*4882a593Smuzhiyun
409*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_TIMEDATED),y)
410*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dtimedated=true
411*4882a593Smuzhiyunelse
412*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dtimedated=false
413*4882a593Smuzhiyunendif
414*4882a593Smuzhiyun
415*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_LOCALED),y)
416*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dlocaled=true
417*4882a593Smuzhiyunelse
418*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dlocaled=false
419*4882a593Smuzhiyunendif
420*4882a593Smuzhiyun
421*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_REPART),y)
422*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Drepart=true
423*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += openssl
424*4882a593Smuzhiyunelse
425*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Drepart=false
426*4882a593Smuzhiyunendif
427*4882a593Smuzhiyun
428*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_USERDB),y)
429*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Duserdb=true
430*4882a593Smuzhiyunelse
431*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Duserdb=false
432*4882a593Smuzhiyunendif
433*4882a593Smuzhiyun
434*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_COREDUMP),y)
435*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dcoredump=true
436*4882a593SmuzhiyunSYSTEMD_COREDUMP_USER = systemd-coredump -1 systemd-coredump -1 * - - - systemd core dump processing
437*4882a593SmuzhiyunSYSTEMD_COREDUMP_PERMISSIONS = /var/lib/systemd/coredump d 755 0 0 - - - - -
438*4882a593Smuzhiyunelse
439*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dcoredump=false
440*4882a593Smuzhiyunendif
441*4882a593Smuzhiyun
442*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_PSTORE),y)
443*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dpstore=true
444*4882a593SmuzhiyunSYSTEMD_PSTORE_PERMISSIONS = /var/lib/systemd/pstore d 755 0 0 - - - - -
445*4882a593Smuzhiyunelse
446*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dpstore=false
447*4882a593Smuzhiyunendif
448*4882a593Smuzhiyun
449*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_OOMD),y)
450*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Doomd=true
451*4882a593SmuzhiyunSYSTEMD_OOMD_USER = systemd-oom -1 systemd-oom -1 * - - - systemd Userspace OOM Killer
452*4882a593Smuzhiyunelse
453*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Doomd=false
454*4882a593Smuzhiyunendif
455*4882a593Smuzhiyun
456*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_POLKIT),y)
457*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dpolkit=true
458*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += polkit
459*4882a593Smuzhiyunelse
460*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dpolkit=false
461*4882a593Smuzhiyunendif
462*4882a593Smuzhiyun
463*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_PORTABLED),y)
464*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dportabled=true
465*4882a593Smuzhiyunelse
466*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dportabled=false
467*4882a593Smuzhiyunendif
468*4882a593Smuzhiyun
469*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_SYSEXT),y)
470*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dsysext=true
471*4882a593Smuzhiyunelse
472*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dsysext=false
473*4882a593Smuzhiyunendif
474*4882a593Smuzhiyun
475*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_NETWORKD),y)
476*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dnetworkd=true
477*4882a593SmuzhiyunSYSTEMD_NETWORKD_USER = systemd-network -1 systemd-network -1 * - - - systemd Network Management
478*4882a593SmuzhiyunSYSTEMD_NETWORKD_DHCP_IFACE = $(call qstrip,$(BR2_SYSTEM_DHCP))
479*4882a593Smuzhiyunifneq ($(SYSTEMD_NETWORKD_DHCP_IFACE),)
480*4882a593Smuzhiyundefine SYSTEMD_INSTALL_NETWORK_CONFS
481*4882a593Smuzhiyun	sed s/SYSTEMD_NETWORKD_DHCP_IFACE/$(SYSTEMD_NETWORKD_DHCP_IFACE)/ \
482*4882a593Smuzhiyun		$(SYSTEMD_PKGDIR)/dhcp.network > \
483*4882a593Smuzhiyun		$(TARGET_DIR)/etc/systemd/network/$(SYSTEMD_NETWORKD_DHCP_IFACE).network
484*4882a593Smuzhiyunendef
485*4882a593Smuzhiyunendif
486*4882a593Smuzhiyunelse
487*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dnetworkd=false
488*4882a593Smuzhiyunendif
489*4882a593Smuzhiyun
490*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_RESOLVED),y)
491*4882a593Smuzhiyundefine SYSTEMD_INSTALL_RESOLVCONF_HOOK
492*4882a593Smuzhiyun	ln -sf ../run/systemd/resolve/resolv.conf \
493*4882a593Smuzhiyun		$(TARGET_DIR)/etc/resolv.conf
494*4882a593Smuzhiyunendef
495*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dnss-resolve=true -Dresolve=true
496*4882a593SmuzhiyunSYSTEMD_RESOLVED_USER = systemd-resolve -1 systemd-resolve -1 * - - - systemd Resolver
497*4882a593Smuzhiyunelse
498*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dnss-resolve=false -Dresolve=false
499*4882a593Smuzhiyunendif
500*4882a593Smuzhiyun
501*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBOPENSSL),y)
502*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += \
503*4882a593Smuzhiyun	-Dgnutls=false \
504*4882a593Smuzhiyun	-Dopenssl=true \
505*4882a593Smuzhiyun	-Ddns-over-tls=openssl \
506*4882a593Smuzhiyun	-Ddefault-dns-over-tls=opportunistic
507*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += openssl
508*4882a593Smuzhiyunelse ifeq ($(BR2_PACKAGE_GNUTLS),y)
509*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += \
510*4882a593Smuzhiyun	-Dgnutls=true \
511*4882a593Smuzhiyun	-Dopenssl=false \
512*4882a593Smuzhiyun	-Ddns-over-tls=gnutls \
513*4882a593Smuzhiyun	-Ddefault-dns-over-tls=opportunistic
514*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += gnutls
515*4882a593Smuzhiyunelse
516*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += \
517*4882a593Smuzhiyun	-Dgnutls=false \
518*4882a593Smuzhiyun	-Dopenssl=false \
519*4882a593Smuzhiyun	-Ddns-over-tls=false \
520*4882a593Smuzhiyun	-Ddefault-dns-over-tls=no
521*4882a593Smuzhiyunendif
522*4882a593Smuzhiyun
523*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_TIMESYNCD),y)
524*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dtimesyncd=true
525*4882a593SmuzhiyunSYSTEMD_TIMESYNCD_USER = systemd-timesync -1 systemd-timesync -1 * - - - systemd Time Synchronization
526*4882a593SmuzhiyunSYSTEMD_TIMESYNCD_PERMISSIONS = /var/lib/systemd/timesync d 755 systemd-timesync systemd-timesync - - - - -
527*4882a593Smuzhiyunelse
528*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dtimesyncd=false
529*4882a593Smuzhiyunendif
530*4882a593Smuzhiyun
531*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT),y)
532*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dsmack=true
533*4882a593Smuzhiyunelse
534*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dsmack=false
535*4882a593Smuzhiyunendif
536*4882a593Smuzhiyun
537*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_HIBERNATE),y)
538*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dhibernate=true
539*4882a593Smuzhiyunelse
540*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dhibernate=false
541*4882a593Smuzhiyunendif
542*4882a593Smuzhiyun
543*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_BOOT),y)
544*4882a593SmuzhiyunSYSTEMD_INSTALL_IMAGES = YES
545*4882a593SmuzhiyunSYSTEMD_DEPENDENCIES += gnu-efi
546*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += \
547*4882a593Smuzhiyun	-Defi=true \
548*4882a593Smuzhiyun	-Dgnu-efi=true \
549*4882a593Smuzhiyun	-Defi-cc=$(TARGET_CC) \
550*4882a593Smuzhiyun	-Defi-ld=bfd \
551*4882a593Smuzhiyun	-Defi-libdir=$(STAGING_DIR)/usr/lib \
552*4882a593Smuzhiyun	-Defi-includedir=$(STAGING_DIR)/usr/include/efi
553*4882a593Smuzhiyun
554*4882a593SmuzhiyunSYSTEMD_BOOT_EFI_ARCH = $(call qstrip,$(BR2_PACKAGE_SYSTEMD_BOOT_EFI_ARCH))
555*4882a593Smuzhiyundefine SYSTEMD_INSTALL_BOOT_FILES
556*4882a593Smuzhiyun	$(INSTALL) -D -m 0644 $(@D)/build/src/boot/efi/systemd-boot$(SYSTEMD_BOOT_EFI_ARCH).efi \
557*4882a593Smuzhiyun		$(BINARIES_DIR)/efi-part/EFI/BOOT/boot$(SYSTEMD_BOOT_EFI_ARCH).efi
558*4882a593Smuzhiyun	$(INSTALL) -D -m 0644 $(SYSTEMD_PKGDIR)/boot-files/loader.conf \
559*4882a593Smuzhiyun		$(BINARIES_DIR)/efi-part/loader/loader.conf
560*4882a593Smuzhiyun	$(INSTALL) -D -m 0644 $(SYSTEMD_PKGDIR)/boot-files/buildroot.conf \
561*4882a593Smuzhiyun		$(BINARIES_DIR)/efi-part/loader/entries/buildroot.conf
562*4882a593Smuzhiyunendef
563*4882a593Smuzhiyun
564*4882a593Smuzhiyunelse
565*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Defi=false -Dgnu-efi=false
566*4882a593Smuzhiyunendif # BR2_PACKAGE_SYSTEMD_BOOT == y
567*4882a593Smuzhiyun
568*4882a593SmuzhiyunSYSTEMD_FALLBACK_HOSTNAME = $(call qstrip,$(BR2_TARGET_GENERIC_HOSTNAME))
569*4882a593Smuzhiyunifneq ($(SYSTEMD_FALLBACK_HOSTNAME),)
570*4882a593SmuzhiyunSYSTEMD_CONF_OPTS += -Dfallback-hostname=$(SYSTEMD_FALLBACK_HOSTNAME)
571*4882a593Smuzhiyunendif
572*4882a593Smuzhiyun
573*4882a593Smuzhiyundefine SYSTEMD_INSTALL_INIT_HOOK
574*4882a593Smuzhiyun	ln -fs "$(call qstrip,$(BR2_PACKAGE_SYSTEMD_DEFAULT_TARGET))" \
575*4882a593Smuzhiyun		$(TARGET_DIR)/usr/lib/systemd/system/default.target
576*4882a593Smuzhiyunendef
577*4882a593Smuzhiyun
578*4882a593Smuzhiyundefine SYSTEMD_INSTALL_MACHINEID_HOOK
579*4882a593Smuzhiyun	touch $(TARGET_DIR)/etc/machine-id
580*4882a593Smuzhiyunendef
581*4882a593Smuzhiyun
582*4882a593SmuzhiyunSYSTEMD_POST_INSTALL_TARGET_HOOKS += \
583*4882a593Smuzhiyun	SYSTEMD_INSTALL_INIT_HOOK \
584*4882a593Smuzhiyun	SYSTEMD_INSTALL_MACHINEID_HOOK
585*4882a593Smuzhiyun
586*4882a593Smuzhiyundefine SYSTEMD_INSTALL_IMAGES_CMDS
587*4882a593Smuzhiyun	$(SYSTEMD_INSTALL_BOOT_FILES)
588*4882a593Smuzhiyunendef
589*4882a593Smuzhiyun
590*4882a593Smuzhiyundefine SYSTEMD_PERMISSIONS
591*4882a593Smuzhiyun	/var/spool d 755 0 0 - - - - -
592*4882a593Smuzhiyun	/var/lib d 755 0 0 - - - - -
593*4882a593Smuzhiyun	/var/lib/private d 700 0 0 - - - - -
594*4882a593Smuzhiyun	/var/log/private d 700 0 0 - - - - -
595*4882a593Smuzhiyun	/var/cache/private d 700 0 0 - - - - -
596*4882a593Smuzhiyun	$(SYSTEMD_LOGIND_PERMISSIONS)
597*4882a593Smuzhiyun	$(SYSTEMD_MACHINED_PERMISSIONS)
598*4882a593Smuzhiyun	$(SYSTEMD_HOMED_PERMISSIONS)
599*4882a593Smuzhiyun	$(SYSTEMD_COREDUMP_PERMISSIONS)
600*4882a593Smuzhiyun	$(SYSTEMD_PSTORE_PERMISSIONS)
601*4882a593Smuzhiyun	$(SYSTEMD_TIMESYNCD_PERMISSIONS)
602*4882a593Smuzhiyunendef
603*4882a593Smuzhiyun
604*4882a593Smuzhiyundefine SYSTEMD_USERS
605*4882a593Smuzhiyun	# udev user groups
606*4882a593Smuzhiyun	- - render -1 * - - - DRI rendering nodes
607*4882a593Smuzhiyun	- - sgx -1 * - - - SGX device nodes
608*4882a593Smuzhiyun	# systemd user groups
609*4882a593Smuzhiyun	- - systemd-journal -1 * - - - Journal
610*4882a593Smuzhiyun	$(SYSTEMD_REMOTE_USER)
611*4882a593Smuzhiyun	$(SYSTEMD_COREDUMP_USER)
612*4882a593Smuzhiyun	$(SYSTEMD_OOMD_USER)
613*4882a593Smuzhiyun	$(SYSTEMD_NETWORKD_USER)
614*4882a593Smuzhiyun	$(SYSTEMD_RESOLVED_USER)
615*4882a593Smuzhiyun	$(SYSTEMD_TIMESYNCD_USER)
616*4882a593Smuzhiyunendef
617*4882a593Smuzhiyun
618*4882a593Smuzhiyundefine SYSTEMD_INSTALL_NSSCONFIG_HOOK
619*4882a593Smuzhiyun	$(SED) '/^passwd:/ {/systemd/! s/$$/ systemd/}' \
620*4882a593Smuzhiyun		-e '/^group:/ {/systemd/! s/$$/ [SUCCESS=merge] systemd/}' \
621*4882a593Smuzhiyun		-e '/^shadow:/ {/systemd/! s/$$/ systemd/}' \
622*4882a593Smuzhiyun		-e '/^gshadow:/ {/systemd/! s/$$/ systemd/}' \
623*4882a593Smuzhiyun		$(if $(BR2_PACKAGE_SYSTEMD_RESOLVED), \
624*4882a593Smuzhiyun			-e '/^hosts:/ s/[[:space:]]*mymachines//' \
625*4882a593Smuzhiyun			-e '/^hosts:/ {/resolve/! s/files/resolve [!UNAVAIL=return] files/}' ) \
626*4882a593Smuzhiyun		$(if $(BR2_PACKAGE_SYSTEMD_MYHOSTNAME), \
627*4882a593Smuzhiyun			-e '/^hosts:/ {/myhostname/! s/files/files myhostname/}' ) \
628*4882a593Smuzhiyun		$(if $(BR2_PACKAGE_SYSTEMD_MACHINED), \
629*4882a593Smuzhiyun			-e '/^hosts:/ {/mymachines/! s/^\(hosts:[[:space:]]*\)/\1mymachines /}' ) \
630*4882a593Smuzhiyun		$(TARGET_DIR)/etc/nsswitch.conf
631*4882a593Smuzhiyunendef
632*4882a593Smuzhiyun
633*4882a593SmuzhiyunSYSTEMD_TARGET_FINALIZE_HOOKS += \
634*4882a593Smuzhiyun	SYSTEMD_INSTALL_NSSCONFIG_HOOK \
635*4882a593Smuzhiyun	SYSTEMD_INSTALL_RESOLVCONF_HOOK
636*4882a593Smuzhiyun
637*4882a593Smuzhiyunifneq ($(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT)),)
638*4882a593Smuzhiyun# systemd provides multiple units to autospawn getty as neede
639*4882a593Smuzhiyun# * getty@.service to start a getty on normal TTY
640*4882a593Smuzhiyun# * sertial-getty@.service to start a getty on serial lines
641*4882a593Smuzhiyun# * console-getty.service for generic /dev/console
642*4882a593Smuzhiyun# * container-getty@.service for a getty on /dev/pts/*
643*4882a593Smuzhiyun#
644*4882a593Smuzhiyun# the generator systemd-getty-generator will
645*4882a593Smuzhiyun# * read the console= kernel command line parameter
646*4882a593Smuzhiyun# * enable one of the above units depending on what it finds
647*4882a593Smuzhiyun#
648*4882a593Smuzhiyun# Systemd defaults to enablinb getty@tty1.service
649*4882a593Smuzhiyun#
650*4882a593Smuzhiyun# What we want to do
651*4882a593Smuzhiyun# * Enable a getty on $BR2_TARGET_GENERIC_TTY_PATH
652*4882a593Smuzhiyun# * Set the baudrate for all units according to BR2_TARGET_GENERIC_GETTY_BAUDRATE
653*4882a593Smuzhiyun# * Always enable a getty on the console using systemd-getty-generator
654*4882a593Smuzhiyun#   (backward compatibility with previous releases of buildroot)
655*4882a593Smuzhiyun#
656*4882a593Smuzhiyun# What we do
657*4882a593Smuzhiyun# * disable getty@tty1 (enabled by upstream systemd)
658*4882a593Smuzhiyun# * enable getty@xxx if  $BR2_TARGET_GENERIC_TTY_PATH is a tty
659*4882a593Smuzhiyun# * enable serial-getty@xxx for other $BR2_TARGET_GENERIC_TTY_PATH
660*4882a593Smuzhiyun# * rewrite baudrates if a baudrate is provided
661*4882a593Smuzhiyundefine SYSTEMD_INSTALL_SERVICE_TTY
662*4882a593Smuzhiyun	mkdir -p $(TARGET_DIR)/usr/lib/systemd/system/getty@.service.d; \
663*4882a593Smuzhiyun	printf '[Install]\nDefaultInstance=\n' \
664*4882a593Smuzhiyun		>$(TARGET_DIR)/usr/lib/systemd/system/getty@.service.d/buildroot-console.conf; \
665*4882a593Smuzhiyun	if [ $(BR2_TARGET_GENERIC_GETTY_PORT) = "console" ]; \
666*4882a593Smuzhiyun	then \
667*4882a593Smuzhiyun		: ; \
668*4882a593Smuzhiyun	elif echo $(BR2_TARGET_GENERIC_GETTY_PORT) | egrep -q 'tty[0-9]*$$'; \
669*4882a593Smuzhiyun	then \
670*4882a593Smuzhiyun		printf '[Install]\nDefaultInstance=%s\n' \
671*4882a593Smuzhiyun			$(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT)) \
672*4882a593Smuzhiyun			>$(TARGET_DIR)/usr/lib/systemd/system/getty@.service.d/buildroot-console.conf; \
673*4882a593Smuzhiyun	else \
674*4882a593Smuzhiyun		mkdir -p $(TARGET_DIR)/usr/lib/systemd/system/serial-getty@.service.d;\
675*4882a593Smuzhiyun		printf '[Install]\nDefaultInstance=%s\n' \
676*4882a593Smuzhiyun			$(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT)) \
677*4882a593Smuzhiyun			>$(TARGET_DIR)/usr/lib/systemd/system/serial-getty@.service.d/buildroot-console.conf;\
678*4882a593Smuzhiyun	fi; \
679*4882a593Smuzhiyun	if [ $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_BAUDRATE)) -gt 0 ] ; \
680*4882a593Smuzhiyun	then \
681*4882a593Smuzhiyun		$(SED) 's/115200/$(BR2_TARGET_GENERIC_GETTY_BAUDRATE),115200/' $(TARGET_DIR)/lib/systemd/system/getty@.service; \
682*4882a593Smuzhiyun		$(SED) 's/115200/$(BR2_TARGET_GENERIC_GETTY_BAUDRATE),115200/' $(TARGET_DIR)/lib/systemd/system/serial-getty@.service; \
683*4882a593Smuzhiyun		$(SED) 's/115200/$(BR2_TARGET_GENERIC_GETTY_BAUDRATE),115200/' $(TARGET_DIR)/lib/systemd/system/console-getty@.service; \
684*4882a593Smuzhiyun		$(SED) 's/115200/$(BR2_TARGET_GENERIC_GETTY_BAUDRATE),115200/' $(TARGET_DIR)/lib/systemd/system/container-getty@.service; \
685*4882a593Smuzhiyun	fi
686*4882a593Smuzhiyunendef
687*4882a593Smuzhiyunendif
688*4882a593Smuzhiyun
689*4882a593Smuzhiyundefine SYSTEMD_INSTALL_PRESET
690*4882a593Smuzhiyun	$(INSTALL) -D -m 644 $(SYSTEMD_PKGDIR)/80-buildroot.preset $(TARGET_DIR)/usr/lib/systemd/system-preset/80-buildroot.preset
691*4882a593Smuzhiyunendef
692*4882a593Smuzhiyun
693*4882a593Smuzhiyundefine SYSTEMD_INSTALL_INIT_SYSTEMD
694*4882a593Smuzhiyun	$(SYSTEMD_INSTALL_PRESET)
695*4882a593Smuzhiyun	$(SYSTEMD_INSTALL_SERVICE_TTY)
696*4882a593Smuzhiyun	$(SYSTEMD_INSTALL_NETWORK_CONFS)
697*4882a593Smuzhiyunendef
698*4882a593Smuzhiyun
699*4882a593Smuzhiyunifeq ($(BR2_ENABLE_LOCALE_PURGE),y)
700*4882a593Smuzhiyun# Go through all files with scheme <basename>.<langext>.catalog
701*4882a593Smuzhiyun# and remove those where <langext> is not in LOCALE_NOPURGE
702*4882a593Smuzhiyundefine SYSTEMD_LOCALE_PURGE_CATALOGS
703*4882a593Smuzhiyun	for cfile in `find $(TARGET_DIR)/usr/lib/systemd/catalog -name '*.*.catalog'`; \
704*4882a593Smuzhiyun	do \
705*4882a593Smuzhiyun		basename=$${cfile##*/}; \
706*4882a593Smuzhiyun		basename=$${basename%.catalog}; \
707*4882a593Smuzhiyun		langext=$${basename#*.}; \
708*4882a593Smuzhiyun		[ "$$langext" = "$${basename}" ] && continue; \
709*4882a593Smuzhiyun		expr '$(LOCALE_NOPURGE)' : ".*\b$${langext}\b" >/dev/null && continue; \
710*4882a593Smuzhiyun		rm -f "$$cfile"; \
711*4882a593Smuzhiyun	done
712*4882a593Smuzhiyunendef
713*4882a593SmuzhiyunSYSTEMD_ROOTFS_PRE_CMD_HOOKS += SYSTEMD_LOCALE_PURGE_CATALOGS
714*4882a593Smuzhiyunendif
715*4882a593Smuzhiyun
716*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD_CATALOGDB),y)
717*4882a593Smuzhiyundefine SYSTEMD_UPDATE_CATALOGS
718*4882a593Smuzhiyun	$(HOST_DIR)/bin/journalctl --root=$(TARGET_DIR) --update-catalog
719*4882a593Smuzhiyun	install -D $(TARGET_DIR)/var/lib/systemd/catalog/database \
720*4882a593Smuzhiyun		$(TARGET_DIR)/usr/share/factory/var/lib/systemd/catalog/database
721*4882a593Smuzhiyun	rm $(TARGET_DIR)/var/lib/systemd/catalog/database
722*4882a593Smuzhiyun	ln -sf /usr/share/factory/var/lib/systemd/catalog/database \
723*4882a593Smuzhiyun		$(TARGET_DIR)/var/lib/systemd/catalog/database
724*4882a593Smuzhiyun	grep -q '^L /var/lib/systemd/catalog/database' $(TARGET_DIR)/usr/lib/tmpfiles.d/var.conf || \
725*4882a593Smuzhiyun		printf "\nL /var/lib/systemd/catalog/database\n" >> $(TARGET_DIR)/usr/lib/tmpfiles.d/var.conf
726*4882a593Smuzhiyunendef
727*4882a593SmuzhiyunSYSTEMD_ROOTFS_PRE_CMD_HOOKS += SYSTEMD_UPDATE_CATALOGS
728*4882a593Smuzhiyunendif
729*4882a593Smuzhiyun
730*4882a593Smuzhiyundefine SYSTEMD_RM_CATALOG_UPDATE_SERVICE
731*4882a593Smuzhiyun	rm -rf $(TARGET_DIR)/usr/lib/systemd/catalog \
732*4882a593Smuzhiyun		$(TARGET_DIR)/usr/lib/systemd/system/systemd-journal-catalog-update.service \
733*4882a593Smuzhiyun		$(TARGET_DIR)/usr/lib/systemd/system/*/systemd-journal-catalog-update.service
734*4882a593Smuzhiyunendef
735*4882a593SmuzhiyunSYSTEMD_ROOTFS_PRE_CMD_HOOKS += SYSTEMD_RM_CATALOG_UPDATE_SERVICE
736*4882a593Smuzhiyun
737*4882a593Smuzhiyundefine SYSTEMD_CREATE_TMPFILES_HOOK
738*4882a593Smuzhiyun	HOST_SYSTEMD_TMPFILES=$(HOST_DIR)/bin/systemd-tmpfiles \
739*4882a593Smuzhiyun		$(SYSTEMD_PKGDIR)/fakeroot_tmpfiles.sh $(TARGET_DIR)
740*4882a593Smuzhiyunendef
741*4882a593SmuzhiyunSYSTEMD_ROOTFS_PRE_CMD_HOOKS += SYSTEMD_CREATE_TMPFILES_HOOK
742*4882a593Smuzhiyun
743*4882a593Smuzhiyundefine SYSTEMD_PRESET_ALL
744*4882a593Smuzhiyun	$(HOST_DIR)/bin/systemctl --root=$(TARGET_DIR) preset-all
745*4882a593Smuzhiyunendef
746*4882a593SmuzhiyunSYSTEMD_ROOTFS_PRE_CMD_HOOKS += SYSTEMD_PRESET_ALL
747*4882a593Smuzhiyun
748*4882a593SmuzhiyunSYSTEMD_CONF_ENV = $(HOST_UTF8_LOCALE_ENV)
749*4882a593SmuzhiyunSYSTEMD_NINJA_ENV = $(HOST_UTF8_LOCALE_ENV)
750*4882a593Smuzhiyun
751*4882a593Smuzhiyundefine SYSTEMD_LINUX_CONFIG_FIXUPS
752*4882a593Smuzhiyun	$(call KCONFIG_ENABLE_OPT,CONFIG_DEVTMPFS)
753*4882a593Smuzhiyun	$(call KCONFIG_ENABLE_OPT,CONFIG_CGROUPS)
754*4882a593Smuzhiyun	$(call KCONFIG_ENABLE_OPT,CONFIG_INOTIFY_USER)
755*4882a593Smuzhiyun	$(call KCONFIG_ENABLE_OPT,CONFIG_SIGNALFD)
756*4882a593Smuzhiyun	$(call KCONFIG_ENABLE_OPT,CONFIG_TIMERFD)
757*4882a593Smuzhiyun	$(call KCONFIG_ENABLE_OPT,CONFIG_EPOLL)
758*4882a593Smuzhiyun	$(call KCONFIG_ENABLE_OPT,CONFIG_UNIX)
759*4882a593Smuzhiyun	$(call KCONFIG_ENABLE_OPT,CONFIG_SYSFS)
760*4882a593Smuzhiyun	$(call KCONFIG_ENABLE_OPT,CONFIG_PROC_FS)
761*4882a593Smuzhiyun	$(call KCONFIG_ENABLE_OPT,CONFIG_FHANDLE)
762*4882a593Smuzhiyun
763*4882a593Smuzhiyun	$(call KCONFIG_ENABLE_OPT,CONFIG_NET_NS)
764*4882a593Smuzhiyun
765*4882a593Smuzhiyun	$(call KCONFIG_DISABLE_OPT,CONFIG_SYSFS_DEPRECATED)
766*4882a593Smuzhiyun
767*4882a593Smuzhiyun	$(call KCONFIG_ENABLE_OPT,CONFIG_AUTOFS_FS)
768*4882a593Smuzhiyun	$(call KCONFIG_ENABLE_OPT,CONFIG_AUTOFS4_FS)
769*4882a593Smuzhiyun	$(call KCONFIG_ENABLE_OPT,CONFIG_TMPFS_POSIX_ACL)
770*4882a593Smuzhiyun	$(call KCONFIG_ENABLE_OPT,CONFIG_TMPFS_XATTR)
771*4882a593Smuzhiyunendef
772*4882a593Smuzhiyun
773*4882a593Smuzhiyun# We need a very minimal host variant, so we disable as much as possible.
774*4882a593SmuzhiyunHOST_SYSTEMD_CONF_OPTS = \
775*4882a593Smuzhiyun	-Dsplit-bin=true \
776*4882a593Smuzhiyun	-Dsplit-usr=false \
777*4882a593Smuzhiyun	--prefix=/usr \
778*4882a593Smuzhiyun	--libdir=lib \
779*4882a593Smuzhiyun	--sysconfdir=/etc \
780*4882a593Smuzhiyun	--localstatedir=/var \
781*4882a593Smuzhiyun	-Dmode=release \
782*4882a593Smuzhiyun	-Dutmp=false \
783*4882a593Smuzhiyun	-Dhibernate=false \
784*4882a593Smuzhiyun	-Dldconfig=false \
785*4882a593Smuzhiyun	-Dresolve=false \
786*4882a593Smuzhiyun	-Defi=false \
787*4882a593Smuzhiyun	-Dtpm=false \
788*4882a593Smuzhiyun	-Denvironment-d=false \
789*4882a593Smuzhiyun	-Dbinfmt=false \
790*4882a593Smuzhiyun	-Drepart=false \
791*4882a593Smuzhiyun	-Dcoredump=false \
792*4882a593Smuzhiyun	-Dpstore=false \
793*4882a593Smuzhiyun	-Doomd=false \
794*4882a593Smuzhiyun	-Dlogind=false \
795*4882a593Smuzhiyun	-Dhostnamed=false \
796*4882a593Smuzhiyun	-Dlocaled=false \
797*4882a593Smuzhiyun	-Dmachined=false \
798*4882a593Smuzhiyun	-Dportabled=false \
799*4882a593Smuzhiyun	-Dsysext=false \
800*4882a593Smuzhiyun	-Duserdb=false \
801*4882a593Smuzhiyun	-Dhomed=false \
802*4882a593Smuzhiyun	-Dnetworkd=false \
803*4882a593Smuzhiyun	-Dtimedated=false \
804*4882a593Smuzhiyun	-Dtimesyncd=false \
805*4882a593Smuzhiyun	-Dremote=false \
806*4882a593Smuzhiyun	-Dcreate-log-dirs=false \
807*4882a593Smuzhiyun	-Dnss-myhostname=false \
808*4882a593Smuzhiyun	-Dnss-mymachines=false \
809*4882a593Smuzhiyun	-Dnss-resolve=false \
810*4882a593Smuzhiyun	-Dnss-systemd=false \
811*4882a593Smuzhiyun	-Dfirstboot=false \
812*4882a593Smuzhiyun	-Drandomseed=false \
813*4882a593Smuzhiyun	-Dbacklight=false \
814*4882a593Smuzhiyun	-Dvconsole=false \
815*4882a593Smuzhiyun	-Dquotacheck=false \
816*4882a593Smuzhiyun	-Dsysusers=false \
817*4882a593Smuzhiyun	-Dtmpfiles=true \
818*4882a593Smuzhiyun	-Dimportd=false \
819*4882a593Smuzhiyun	-Dhwdb=false \
820*4882a593Smuzhiyun	-Drfkill=false \
821*4882a593Smuzhiyun	-Dman=false \
822*4882a593Smuzhiyun	-Dhtml=false \
823*4882a593Smuzhiyun	-Dsmack=false \
824*4882a593Smuzhiyun	-Dpolkit=false \
825*4882a593Smuzhiyun	-Dblkid=false \
826*4882a593Smuzhiyun	-Didn=false \
827*4882a593Smuzhiyun	-Dadm-group=false \
828*4882a593Smuzhiyun	-Dwheel-group=false \
829*4882a593Smuzhiyun	-Dzlib=false \
830*4882a593Smuzhiyun	-Dgshadow=false \
831*4882a593Smuzhiyun	-Dima=false \
832*4882a593Smuzhiyun	-Dtests=false \
833*4882a593Smuzhiyun	-Dglib=false \
834*4882a593Smuzhiyun	-Dacl=false \
835*4882a593Smuzhiyun	-Dsysvinit-path='' \
836*4882a593Smuzhiyun	-Dinitrd=false \
837*4882a593Smuzhiyun	-Dxdg-autostart=false \
838*4882a593Smuzhiyun	-Dkernel-install=false \
839*4882a593Smuzhiyun	-Danalyze=false \
840*4882a593Smuzhiyun	-Dlibcryptsetup=false \
841*4882a593Smuzhiyun	-Daudit=false \
842*4882a593Smuzhiyun	-Dzstd=false
843*4882a593Smuzhiyun
844*4882a593SmuzhiyunHOST_SYSTEMD_DEPENDENCIES = \
845*4882a593Smuzhiyun	$(BR2_COREUTILS_HOST_DEPENDENCY) \
846*4882a593Smuzhiyun	host-util-linux \
847*4882a593Smuzhiyun	host-patchelf \
848*4882a593Smuzhiyun	host-libcap \
849*4882a593Smuzhiyun	host-gperf \
850*4882a593Smuzhiyun	host-python-jinja2
851*4882a593Smuzhiyun
852*4882a593SmuzhiyunHOST_SYSTEMD_NINJA_ENV = DESTDIR=$(HOST_DIR)
853*4882a593Smuzhiyun
854*4882a593Smuzhiyun# Fix RPATH After installation
855*4882a593Smuzhiyun# * systemd provides a install_rpath instruction to meson because the binaries
856*4882a593Smuzhiyun#   need to link with libsystemd which is not in a standard path
857*4882a593Smuzhiyun# * meson can only replace the RPATH, not append to it
858*4882a593Smuzhiyun# * the original rpath is thus lost.
859*4882a593Smuzhiyun# * the original path had been tweaked by buildroot via LDFLAGS to add
860*4882a593Smuzhiyun#   $(HOST_DIR)/lib
861*4882a593Smuzhiyun# * thus re-tweak rpath after the installation for all binaries that need it
862*4882a593SmuzhiyunHOST_SYSTEMD_HOST_TOOLS = busctl journalctl systemctl systemd-* udevadm
863*4882a593Smuzhiyun
864*4882a593Smuzhiyundefine HOST_SYSTEMD_FIX_RPATH
865*4882a593Smuzhiyun	for f in $(addprefix $(HOST_DIR)/bin/,$(HOST_SYSTEMD_HOST_TOOLS)); do \
866*4882a593Smuzhiyun		[ -e $$f ] || continue; \
867*4882a593Smuzhiyun		$(HOST_DIR)/bin/patchelf --set-rpath $(HOST_DIR)/lib:$(HOST_DIR)/lib/systemd $${f} \
868*4882a593Smuzhiyun		|| exit 1; \
869*4882a593Smuzhiyun	done
870*4882a593Smuzhiyunendef
871*4882a593SmuzhiyunHOST_SYSTEMD_POST_INSTALL_HOOKS += HOST_SYSTEMD_FIX_RPATH
872*4882a593Smuzhiyun
873*4882a593Smuzhiyun$(eval $(meson-package))
874*4882a593Smuzhiyun$(eval $(host-meson-package))
875