1AC_INIT([util-linux],
2	m4_esyscmd([tools/git-version-gen .tarball-version]),
3	[kzak@redhat.com],,
4	[http://www.kernel.org/pub/linux/utils/util-linux/])
5
6
7AC_PREREQ([2.60])
8
9AC_CONFIG_AUX_DIR([config])
10AC_CONFIG_MACRO_DIR([m4])
11dnl AC_USE_SYSTEM_EXTENSIONS must be called before any macros that run
12dnl the compiler (like AC_PROG_LIBTOOL) to avoid autoconf errors.
13AC_USE_SYSTEM_EXTENSIONS
14AM_INIT_AUTOMAKE([-Wall foreign 1.10 tar-pax no-dist-gzip dist-xz subdir-objects])
15
16m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
17			    [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
18m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
19
20AC_CONFIG_SRCDIR([sys-utils/mount.c])
21AC_PREFIX_DEFAULT([/usr])
22
23dnl version details from <major>.<minor>[-<suffix>]
24PACKAGE_VERSION_MAJOR=$(echo $PACKAGE_VERSION | awk -F. '{print $1}')
25PACKAGE_VERSION_MINOR=$(echo $PACKAGE_VERSION | awk -F. '{
26                                                   sub("-.*","",$2); print $2}')
27PACKAGE_VERSION_RELEASE=$(echo $PACKAGE_VERSION | awk -F. '{
28                     sub("-.*","",$3); print $3 ~ /^@<:@0-9@:>@+$/ ? $3 : 0}')
29
30dnl libblkid version
31LIBBLKID_VERSION="$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_RELEASE"
32LIBBLKID_DATE="23-Jul-2020"
33LIBBLKID_LT_MAJOR=1
34LIBBLKID_LT_MINOR=1
35LIBBLKID_LT_MICRO=0
36LIBBLKID_VERSION_INFO=`expr $LIBBLKID_LT_MAJOR + $LIBBLKID_LT_MINOR`:$LIBBLKID_LT_MICRO:$LIBBLKID_LT_MINOR
37
38dnl libuuid version
39LIBUUID_VERSION="$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_RELEASE"
40LIBUUID_LT_MAJOR=1
41LIBUUID_LT_MINOR=3
42LIBUUID_LT_MICRO=0
43LIBUUID_VERSION_INFO=`expr $LIBUUID_LT_MAJOR + $LIBUUID_LT_MINOR`:$LIBUUID_LT_MICRO:$LIBUUID_LT_MINOR
44
45dnl libmount version
46LIBMOUNT_VERSION="$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_RELEASE"
47LIBMOUNT_LT_MAJOR=1
48LIBMOUNT_LT_MINOR=1
49LIBMOUNT_LT_MICRO=0
50LIBMOUNT_VERSION_INFO=`expr $LIBMOUNT_LT_MAJOR + $LIBMOUNT_LT_MINOR`:$LIBMOUNT_LT_MICRO:$LIBMOUNT_LT_MINOR
51
52dnl libsmartcols version
53LIBSMARTCOLS_VERSION="$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_RELEASE"
54LIBSMARTCOLS_LT_MAJOR=1
55LIBSMARTCOLS_LT_MINOR=1
56LIBSMARTCOLS_LT_MICRO=0
57LIBSMARTCOLS_VERSION_INFO=`expr $LIBSMARTCOLS_LT_MAJOR + $LIBSMARTCOLS_LT_MINOR`:$LIBSMARTCOLS_LT_MICRO:$LIBSMARTCOLS_LT_MINOR
58
59dnl libfdisk version
60LIBFDISK_VERSION="$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_RELEASE"
61LIBFDISK_LT_MAJOR=1
62LIBFDISK_LT_MINOR=1
63LIBFDISK_LT_MICRO=0
64LIBFDISK_VERSION_INFO=`expr $LIBFDISK_LT_MAJOR + $LIBFDISK_LT_MINOR`:$LIBFDISK_LT_MICRO:$LIBFDISK_LT_MINOR
65
66# Check whether exec_prefix=/usr:
67AS_CASE([$exec_prefix:$prefix],
68[NONE:NONE | NONE:/usr | /usr:*],
69  [AC_MSG_NOTICE([Default --exec-prefix detected.])
70   AS_CASE([$bindir],  ['${exec_prefix}/bin'],  [bindir=/bin;   AC_MSG_NOTICE([  --bindir defaults to /bin])  ])
71   AS_CASE([$sbindir], ['${exec_prefix}/sbin'], [sbindir=/sbin; AC_MSG_NOTICE([  --sbindir defaults to /sbin])])
72   AS_CASE([$libdir],  ['${exec_prefix}/lib'],  [libdir=/lib;   AC_MSG_NOTICE([  --libdir defaults to /lib])  ])
73   AS_CASE([$libdir],  ['${exec_prefix}/lib64'],[libdir=/lib64; AC_MSG_NOTICE([  --libdir defaults to /lib64])  ])
74  ]
75)
76
77
78# default for old versions without $runstatedir
79AS_IF([test x"$runstatedir" = x], [runstatedir='${localstatedir}/run'])
80
81# our default if $localstatedir unchanged
82AS_CASE([$localstatedir:$runstatedir],
83 [NONE:'${localstatedir}/run' | /var:'${localstatedir}/run' | NONE:'/run' ],
84   [runstatedir=/run; AC_MSG_NOTICE([  --runstatedir defaults to /run])]
85)
86
87AC_SUBST([runstatedir])
88
89
90# The original default values of {bin,sbin,lib}dir
91usrbin_execdir='${exec_prefix}/bin'
92AC_SUBST([usrbin_execdir])
93
94usrsbin_execdir='${exec_prefix}/sbin'
95AC_SUBST([usrsbin_execdir])
96
97AS_CASE([$libdir],
98 ['${exec_prefix}/'* | '${prefix}/'* | /usr/* | "${prefix}"/* ],
99   [usrlib_execdir=$libdir],
100 [usrlib_execdir='${exec_prefix}'$libdir]
101)
102AC_SUBST([usrlib_execdir])
103
104# static configuration maintaned by packages (e.g. /usr/lib)
105AC_ARG_VAR([SYSCONFSTATICDIR],
106	   [Path to static system configuration, default ${prefix}/lib])
107AS_IF([test "x$SYSCONFSTATICDIR" = x],
108      [sysconfstaticdir='${prefix}/lib'],
109      [sysconfstaticdir=$SYSCONFSTATICDIR])
110AC_SUBST([sysconfstaticdir])
111
112
113AM_PROG_CC_C_O
114AC_PROG_MKDIR_P
115AC_PROG_CC_STDC
116AC_PROG_YACC
117AC_CANONICAL_HOST
118AC_C_CONST
119AC_C_VOLATILE
120AC_C_BIGENDIAN
121
122dnl Compiler warnings
123UL_WARN_ADD([-fno-common])
124UL_WARN_ADD([-Wall])
125UL_WARN_ADD([-Wextra])
126UL_WARN_ADD([-Wextra-semi])
127UL_WARN_ADD([-Wembedded-directive])
128UL_WARN_ADD([-Wmissing-declarations])
129UL_WARN_ADD([-Wmissing-parameter-type])
130UL_WARN_ADD([-Wmissing-prototypes])
131UL_WARN_ADD([-Wno-missing-field-initializers])
132UL_WARN_ADD([-Wredundant-decls])
133UL_WARN_ADD([-Wsign-compare])
134UL_WARN_ADD([-Wtype-limits])
135UL_WARN_ADD([-Wuninitialized])
136UL_WARN_ADD([-Wunused-but-set-parameter])
137UL_WARN_ADD([-Wunused-but-set-variable])
138UL_WARN_ADD([-Wunused-parameter])
139UL_WARN_ADD([-Wunused-result])
140UL_WARN_ADD([-Wunused-variable])
141UL_WARN_ADD([-Wnested-externs])
142UL_WARN_ADD([-Wpointer-arith])
143UL_WARN_ADD([-Wstrict-prototypes])
144UL_WARN_ADD([-Wformat-security])
145UL_WARN_ADD([-Wimplicit-function-declaration])
146UL_WARN_ADD([-Wdiscarded-qualifiers])
147UL_WARN_ADD([-Waddress-of-packed-member])
148
149AC_ARG_ENABLE([werror],
150  AS_HELP_STRING([--enable-werror], [make all compiler warnings into errors]),
151  [], [enable_werror=no]
152)
153AS_IF([test "x$enable_werror" = xyes], [
154  UL_WARN_ADD([-Werror])
155],[
156  UL_WARN_ADD([-Werror=sequence-point])
157])
158
159AC_SUBST([WARN_CFLAGS])
160
161
162UL_WARN_ADD([-Wno-clobbered], [BSD_WARN_CFLAGS])
163AC_SUBST([BSD_WARN_CFLAGS])
164
165UL_WARN_ADD([-Wno-cast-function-type], [PYTHON_WARN_CFLAGS])
166AC_SUBST([PYTHON_WARN_CFLAGS])
167
168UL_WARN_ADD([-Wno-unused-parameter], [NO_UNUSED_WARN_CFLAGS])
169AC_SUBST([NO_UNUSED_WARN_CFLAGS])
170
171
172AC_ARG_ENABLE([asan],
173  AS_HELP_STRING([--enable-asan], [compile with Address Sanitizer]),
174  [], [enable_asan=no]
175)
176AS_IF([test "x$enable_asan" = xyes], [
177  UL_WARN_ADD([-fsanitize=address])
178  ASAN_LDFLAGS="-fsanitize=address"
179])
180AC_SUBST([ASAN_LDFLAGS])
181
182AC_ARG_ENABLE([ubsan],
183  AS_HELP_STRING([--enable-ubsan], [compile with UBsan]),
184  [], [enable_ubsan=no]
185)
186AS_IF([test "x$enable_ubsan" = xyes], [
187  UL_WARN_ADD([-fsanitize=undefined])
188  UBSAN_LDFLAGS="-fsanitize=undefined"
189])
190AC_SUBST([UBSAN_LDFLAGS])
191
192dnl libtool-2
193LT_INIT
194
195dnl check supported linker flags
196AX_CHECK_VSCRIPT
197
198m4_ifndef([PKG_PROG_PKG_CONFIG],
199  [m4_fatal([Could not locate the pkg-config autoconf
200    macros. These are usually located in /usr/share/aclocal/pkg.m4.
201    If your macros are in a different location, try setting the
202    environment variable AL_OPTS="-I/other/macro/dir" before running
203    ./autogen.sh or autoreconf again. Make sure pkg-config is installed.])])
204PKG_PROG_PKG_CONFIG
205PKG_INSTALLDIR(['${usrlib_execdir}/pkgconfig'])
206
207GTK_DOC_CHECK([1.10])
208AC_PATH_PROG([XSLTPROC], [xsltproc])
209
210linux_os=no
211bsd_os=no
212AS_CASE([${host_os}],
213  [*linux*],
214     [linux_os=yes],
215  [*darwin*],
216     [darwin_os=yes],
217  [*bsd*|*dragonfly*],
218     [bsd_os=yes])
219AM_CONDITIONAL([LINUX], [test "x$linux_os" = xyes])
220AM_CONDITIONAL([DARWIN], [test "x$darwin_os" = xyes])
221AM_CONDITIONAL([BSD], [test "x$bsd_os" = xyes])
222
223AS_IF([test  "x$darwin_os" = xyes], [
224  AC_DEFINE([_DARWIN_C_SOURCE], [1], [Enable MAP_ANON in sys/mman.h on Mac OS X])
225])
226
227dnl define ARCH_<NAME> conditionals
228UL_SET_ARCH([I86], [i?86-*])
229UL_SET_ARCH([86_64], [x86_64*])
230UL_SET_ARCH([IA64], [ia64*])
231UL_SET_ARCH([S390], [s390*])
232UL_SET_ARCH([SPARC], [sparc*])
233UL_SET_ARCH([PPC], [ppc*|powerpc*])
234UL_SET_ARCH([M68K], [m68*])
235UL_SET_ARCH([MIPS], [mips*])
236UL_SET_ARCH([HPPA], [hppa*|parisc*])
237
238AC_SYS_LARGEFILE
239AC_HEADER_ASSERT
240AC_STRUCT_TIMEZONE
241
242dnl Don't forget to maintain alternatively allowed versions in autogen.sh!
243AM_GNU_GETTEXT_VERSION([0.18.3])
244AM_GNU_GETTEXT([external])
245
246AS_IF([test -d "$srcdir/po"], [
247  ALL_LINGUAS=`cd $srcdir/po > /dev/null && echo *.po | sed 's/\.po//g'`
248], [
249  ALL_LINGUAS="af am ar as be bg bn_IN bn ca cs cy da de el en_GB es et eu_ES fa fi fr gl gu he hi hr hu hy id is it ja ka kn ko ku lo lt lv mk ml mr ms my nb nl nn no nso or pa pl pt_BR pt ro ru si sk sl sq sr@Latn sr sv ta te th tr uk ur vi zh_CN zh_TW zu"
250])
251
252AC_CHECK_HEADERS([linux/compiler.h linux/blkpg.h linux/major.h], [], [], [
253#ifdef HAVE_LINUX_COMPILER_H
254#include <linux/compiler.h>
255#endif
256])
257AC_CHECK_HEADERS([ \
258	asm/io.h \
259	err.h \
260	errno.h \
261	fcntl.h \
262	getopt.h \
263	inttypes.h \
264	lastlog.h \
265	libutil.h \
266	linux/btrfs.h \
267	linux/cdrom.h \
268	linux/falloc.h \
269	linux/watchdog.h \
270	linux/fd.h \
271	linux/raw.h \
272	linux/tiocl.h \
273	linux/version.h \
274	linux/securebits.h \
275	linux/net_namespace.h \
276	linux/capability.h \
277	locale.h \
278	mntent.h \
279	net/if.h \
280	net/if_dl.h \
281	netinet/in.h \
282	paths.h \
283	pty.h \
284	security/pam_appl.h \
285	stdint.h \
286	stdio_ext.h \
287	stdlib.h \
288	endian.h \
289	byteswap.h \
290	sys/endian.h \
291	sys/disk.h \
292	sys/disklabel.h \
293	sys/file.h \
294	sys/io.h \
295	sys/ioccom.h \
296	sys/ioctl.h \
297	sys/mkdev.h \
298	sys/mount.h \
299	sys/param.h \
300	sys/prctl.h \
301	sys/resource.h \
302	sys/signalfd.h \
303	sys/socket.h \
304	sys/sockio.h \
305	sys/stat.h \
306	sys/sysmacros.h \
307	sys/swap.h \
308	sys/syscall.h \
309	sys/time.h \
310	sys/timex.h \
311	sys/ttydefaults.h \
312	sys/types.h \
313	sys/ucred.h \
314	sys/un.h \
315	unistd.h \
316	shadow.h \
317	utmp.h \
318	utmpx.h \
319])
320
321# There is a collision in old kernel-headers. The both files mount.h and fs.h
322# define MS_* macros. Fixed by kernel commit e462ec50cb5fad19f6003a3d8087f4a0945dd2b1.
323#
324AC_CHECK_HEADERS([linux/fs.h ], [], [],
325 [#ifdef HAVE_SYS_MOUNT_H
326   # include <linux/fs.h>
327   # include <sys/mount.h>
328  #endif
329])
330
331AC_CHECK_HEADERS([linux/gsmmux.h ], [], [],
332 [#ifdef LINUX_GSMMUX_H
333   # include <linux/gsmmux.h>
334   #endif
335])
336
337AC_CHECK_HEADERS([security/pam_misc.h],
338		[AM_CONDITIONAL([HAVE_LINUXPAM], [true])],
339		[AM_CONDITIONAL([HAVE_LINUXPAM], [false])], [
340#ifdef HAVE_SECURITY_PAM_APPL_H
341#include <security/pam_appl.h>
342#endif
343])
344
345AC_CHECK_HEADERS([linux/blkzoned.h])
346
347AC_CHECK_HEADERS([security/openpam.h], [], [], [
348#ifdef HAVE_SECURITY_PAM_APPL_H
349#include <security/pam_appl.h>
350#endif
351])
352
353AC_CHECK_HEADERS([langinfo.h],
354		[AM_CONDITIONAL([HAVE_LANGINFO_H], [true])],
355		[AM_CONDITIONAL([HAVE_LANGINFO_H], [false])])
356
357AC_MSG_CHECKING([whether langinfo.h defines ALTMON_x constants])
358AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
359	#include <langinfo.h>
360]], [[
361	char *str;
362	str = nl_langinfo (ALTMON_1);
363	str = nl_langinfo (ALTMON_2);
364	str = nl_langinfo (ALTMON_3);
365	str = nl_langinfo (ALTMON_4);
366	str = nl_langinfo (ALTMON_5);
367	str = nl_langinfo (ALTMON_6);
368	str = nl_langinfo (ALTMON_7);
369	str = nl_langinfo (ALTMON_8);
370	str = nl_langinfo (ALTMON_9);
371	str = nl_langinfo (ALTMON_10);
372	str = nl_langinfo (ALTMON_11);
373	str = nl_langinfo (ALTMON_12);
374]])], [
375	AC_MSG_RESULT([yes])
376	AC_DEFINE([HAVE_LANGINFO_ALTMON], [1],
377		[Define if langinfo.h defines ALTMON_x constants])
378], [
379	AC_MSG_RESULT([no])
380])
381
382
383AC_MSG_CHECKING([whether langinfo.h defines _NL_ABALTMON_x constants])
384AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
385	#include <langinfo.h>
386]], [[
387	char *str;
388	str = nl_langinfo (_NL_ABALTMON_1);
389	str = nl_langinfo (_NL_ABALTMON_2);
390	str = nl_langinfo (_NL_ABALTMON_3);
391	str = nl_langinfo (_NL_ABALTMON_4);
392	str = nl_langinfo (_NL_ABALTMON_5);
393	str = nl_langinfo (_NL_ABALTMON_6);
394	str = nl_langinfo (_NL_ABALTMON_7);
395	str = nl_langinfo (_NL_ABALTMON_8);
396	str = nl_langinfo (_NL_ABALTMON_9);
397	str = nl_langinfo (_NL_ABALTMON_10);
398	str = nl_langinfo (_NL_ABALTMON_11);
399	str = nl_langinfo (_NL_ABALTMON_12);
400]])], [
401	AC_MSG_RESULT([yes])
402	AC_DEFINE([HAVE_LANGINFO_NL_ABALTMON], [1],
403		[Define if langinfo.h defines _NL_ABALTMON_x constants])
404], [
405	AC_MSG_RESULT([no])
406])
407
408
409dnl Convert some ac_cv_header_* variables to have_*
410dnl
411have_linux_version_h=$ac_cv_header_linux_version_h
412have_linux_blkzoned_h=$ac_cv_header_linux_blkzoned_h
413have_linux_btrfs_h=$ac_cv_header_linux_btrfs_h
414have_linux_raw_h=$ac_cv_header_linux_raw_h
415have_linux_securebits_h=$ac_cv_header_linux_securebits_h
416have_linux_capability_h=$ac_cv_header_linux_capability_h
417have_linux_watchdog_h=$ac_cv_header_linux_watchdog_h
418have_security_pam_appl_h=$ac_cv_header_security_pam_appl_h
419have_security_pam_misc_h=$ac_cv_header_security_pam_misc_h
420have_security_openpam_h=$ac_cv_header_security_openpam_h
421have_shadow_h=$ac_cv_header_shadow_h
422have_sys_signalfd_h=$ac_cv_header_sys_signalfd_h
423have_utmpx_h=$ac_cv_header_utmpx_h
424have_pty_h=$ac_cv_header_pty_h
425
426AS_CASE([$linux_os:$have_linux_version_h],
427  [yes:no],
428    [AC_MSG_ERROR([kernel headers required on Linux])]
429)
430
431AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
432#include <time.h>
433#include <unistd.h>
434]], [[
435    int a = 0;
436    struct tm *tm = localtime(0);
437    if (a == -1)  /* false */
438	sleep(tm->tm_gmtoff);
439]])],
440[AC_DEFINE([HAVE_TM_GMTOFF], [1], [Does struct tm have a field tm_gmtoff?])
441])
442
443AC_CHECK_MEMBERS([struct termios.c_line],,,
444    [[#include <termios.h>]])
445
446AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec],,,
447	[#include <sys/stat.h>])
448
449AC_CHECK_DECLS([_NL_TIME_WEEK_1STDAY],[],[],[[#include <langinfo.h>]])
450
451AC_CHECK_DECL([environ],
452	[AC_DEFINE([HAVE_ENVIRON_DECL], [1],
453		[Define to 1 if have **environ prototype])],
454)
455
456AC_CHECK_DECL([strsignal],
457	[AC_DEFINE([HAVE_STRSIGNAL_DECL], [1],
458		[Define to 1 if have strsignal function prototype])],
459)
460
461AC_CHECK_DECL([TIOCGLCKTRMIOS],
462	      [have_tiocglcktrmios=yes], [have_tiocglcktrmios=no],
463              [#include <sys/ioctl.h>])
464AC_CHECK_DECL([SOCK_CLOEXEC],
465	      [have_sock_cloexec=yes], [have_sock_cloexec=no],
466	      [#include <sys/types.h>
467               #include <sys/socket.h>])
468AC_CHECK_DECL([SOCK_NONBLOCK],
469	      [have_sock_nonblock=yes], [have_sock_nonblock=no],
470	      [#include <sys/types.h>
471               #include <sys/socket.h>])
472AC_CHECK_DECL([SO_PASSCRED],
473	      [have_so_passcred=yes], [have_so_passcred=no],
474	      [#include <sys/types.h>
475               #include <sys/socket.h>])
476
477AC_CHECK_FUNCS([ \
478	clearenv \
479	__fpurge \
480	fpurge \
481	__fpending \
482	secure_getenv \
483	__secure_getenv \
484	eaccess \
485	err \
486	errx \
487	explicit_bzero \
488	fmemopen \
489	fsync \
490	utimensat \
491	getdomainname \
492	getdtablesize \
493	getexecname \
494	getmntinfo \
495	getrandom \
496	getrlimit \
497	getsgnam \
498	inotify_init \
499	jrand48 \
500	lchown \
501	llseek \
502	mempcpy \
503	mkostemp \
504	nanosleep \
505	ntp_gettime \
506	personality \
507	pidfd_open \
508	pidfd_send_signal \
509	posix_fadvise \
510	prctl \
511	qsort_r \
512	rpmatch \
513	scandirat \
514	setprogname \
515	setresgid \
516	setresuid \
517	sched_setattr \
518	sched_setscheduler \
519	sigqueue \
520	srandom \
521	strnchr \
522	strndup \
523	strnlen \
524	sysconf \
525	sysinfo \
526	timegm \
527	usleep \
528	vwarnx \
529	warn \
530	warnx \
531])
532AC_FUNC_FSEEKO
533
534AC_CHECK_FUNCS([openat fstatat unlinkat], [have_openat=yes], [have_openat=no])
535AC_CHECK_FUNCS([ioperm iopl], [have_io=yes])
536AC_CHECK_FUNCS([futimens], [have_futimens=yes])
537AC_CHECK_FUNCS([inotify_init1], [have_inotify_init1=yes])
538AC_CHECK_FUNCS([open_memstream], [have_open_memstream=yes],[have_open_memstream=no])
539AC_CHECK_FUNCS([reboot], [have_reboot=yes],[have_reboot=no])
540AC_CHECK_FUNCS([updwtmpx updwtmpx], [have_gnu_utmpx=yes], [have_gnu_utmpx=no])
541AC_CHECK_FUNCS([getusershell], [have_getusershell=yes],[have_getusershell=no])
542
543AM_CONDITIONAL([HAVE_OPENAT], [test "x$have_openat" = xyes])
544
545have_setns_syscall="yes"
546UL_CHECK_SYSCALL([setns])
547AS_IF([test "x$ul_cv_syscall_setns" = xno], [
548   have_setns_syscall="no"
549])
550
551UL_CHECK_SYSCALL([pidfd_open])
552UL_CHECK_SYSCALL([pidfd_send_signal])
553
554AC_CHECK_FUNCS([isnan], [],
555	[AC_CHECK_LIB([m], [isnan], [MATH_LIBS="-lm"])]
556	[AC_CHECK_LIB([m], [__isnan], [MATH_LIBS="-lm"])]
557)
558AC_SUBST([MATH_LIBS])
559
560
561dnl lib/mononotic.c may require -lrt
562AC_CHECK_FUNCS([clock_gettime], [],
563	[AC_CHECK_LIB([rt], [clock_gettime], [REALTIME_LIBS="-lrt"])]
564)
565
566have_timer="no"
567AC_CHECK_FUNCS([timer_create],
568	[have_timer="yes"],
569	[AC_CHECK_LIB([rt], [timer_create], [
570		have_timer="yes"
571		REALTIME_LIBS="-lrt"
572		AC_DEFINE_UNQUOTED([HAVE_TIMER_CREATE], [1], [Define if timer_create exist in -lrt])
573	],[
574		AC_SEARCH_LIBS([timer_create], [rt], [
575			AC_MSG_RESULT(yes)
576			have_timer="yes"
577			REALTIME_LIBS="-lrt -lpthread"
578			AC_DEFINE_UNQUOTED([HAVE_TIMER_CREATE], [1], [Define if timer_create exist in -lrt -lpthread])
579		],[], [-lpthread]
580		)
581	])]
582)
583
584AC_SUBST([REALTIME_LIBS])
585
586AS_IF([test x"$have_timer" = xno], [
587       AC_CHECK_FUNCS([setitimer], [have_timer="yes"], [have_timer="no"])
588])
589
590
591AC_CHECK_LIB([rtas], [rtas_get_sysparm], [
592	RTAS_LIBS="-lrtas"
593	AC_DEFINE_UNQUOTED([HAVE_LIBRTAS], [1], [Define if librtas exists]), [],
594])
595AC_SUBST([RTAS_LIBS])
596
597
598AC_CHECK_MEMBER([struct sockaddr.sa_len],
599		AC_DEFINE_UNQUOTED([HAVE_SA_LEN], [1], [Define if struct sockaddr contains sa_len]), [],
600	[#include <sys/types.h>
601	 #include <sys/socket.h>])
602
603SOCKET_LIBS=
604AC_SEARCH_LIBS([socket], [socket],
605	[AS_IF([test x"$ac_cv_search_socket" != x"none required"],
606		[SOCKET_LIBS="$SOCKET_LIBS -lsocket"])
607])
608AC_SUBST([SOCKET_LIBS])
609
610
611have_dirfd=no
612AC_CHECK_FUNCS([dirfd], [have_dirfd=yes], [have_dirfd=no])
613AS_IF([test x"$have_dirfd" = xno], [
614	AC_CHECK_DECLS([dirfd],
615		[have_dirfd=yes], [have_dirfd=no],
616		[#include <sys/types.h>
617		 #include <dirent.h>])
618])
619
620have_ddfd=no
621AS_IF([test x"$have_dirfd" = xno], [
622	AC_CHECK_MEMBERS([DIR.dd_fd],
623		[have_ddfd=yes], [have_ddfd=no],
624		[#include <sys/types.h>
625		 #include <dirent.h>])
626])
627
628AM_CONDITIONAL([HAVE_DIRFD], [test "x$have_dirfd" = xyes -o "x$have_ddfd" = xyes])
629
630
631AC_MSG_CHECKING([whether program_invocation_short_name is defined])
632AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
633	#include <errno.h>
634]], [[
635	program_invocation_short_name = "test";
636]])], [
637	AC_MSG_RESULT([yes])
638	AC_DEFINE([HAVE_PROGRAM_INVOCATION_SHORT_NAME], [1],
639		[Define if program_invocation_short_name is defined])
640], [
641	AC_MSG_RESULT([no])
642])
643
644
645AC_MSG_CHECKING([whether __progname is defined])
646AC_LINK_IFELSE([AC_LANG_PROGRAM([extern char *__progname;],
647	   [if (*__progname == 0) return 1;])],
648	   AC_DEFINE([HAVE___PROGNAME], [1], [Define if __progname is defined])
649	   AC_MSG_RESULT([yes]),
650	   AC_MSG_RESULT([no]))
651
652dnl Static compilation
653m4_define([UL_STATIC_PROGRAMS], [losetup, mount, umount, fdisk, sfdisk, blkid, nsenter, unshare])
654
655AC_ARG_ENABLE([static-programs],
656  [AS_HELP_STRING([--enable-static-programs=LIST],
657      [link static the programs in LIST (comma-separated,
658      supported for ]m4_defn([UL_STATIC_PROGRAMS])[)])])
659
660AS_CASE([$enable_static_programs],
661  [yes],
662    [enable_static_programs=m4_quote(UL_STATIC_PROGRAMS)],
663  [no],
664    [enable_static_programs=]
665)
666
667dnl Set all the individual AM_CONDITIONALs
668m4_foreach([UL_PRG], m4_defn([UL_STATIC_PROGRAMS]), [
669  AS_CASE([,$enable_static_programs,],
670   [*,UL_PRG,*], [static_[]UL_PRG=yes]
671  )
672  AS_IF([test "x$static_[]UL_PRG" = xyes], [AC_MSG_NOTICE([enable static build: UL_PRG.])])
673  AM_CONDITIONAL([HAVE_STATIC_]m4_toupper(UL_PRG),
674    [test "x$static_[]UL_PRG" = xyes])
675])
676
677
678AC_ARG_ENABLE([all-programs],
679  AS_HELP_STRING([--disable-all-programs], [disable everything, might be overridden by --enable-<name>]),
680  [], [enable_all_programs=undefined]
681)
682
683AS_CASE([$enable_all_programs],
684  [yes], [AC_MSG_WARN([force to build all programs by default])
685          ul_default_estate=check],
686  [no],  [AC_MSG_WARN([disable all programs by default])
687          ul_default_estate=no]
688)
689
690
691AX_CHECK_TLS
692
693AC_DEFUN([UL_SCANF_TYPE_MODIFIER], [dnl
694# include <stdio.h>
695# include <stdlib.h>
696int main()
697{
698	int i;
699	int rc = 1;
700	char *s;
701	i = sscanf("x", $1, &s);
702	if (i == 1  && *s == 'x')
703		rc = 0;
704	free(s);
705	return rc;
706}])
707
708AC_CACHE_VAL([scanf_cv_alloc_modifier],
709  AC_RUN_IFELSE([AC_LANG_SOURCE([UL_SCANF_TYPE_MODIFIER(["%ms"])])],
710    [scanf_cv_alloc_modifier=ms],
711    AC_RUN_IFELSE([AC_LANG_SOURCE([UL_SCANF_TYPE_MODIFIER(["%as"])])],
712      [scanf_cv_alloc_modifier=as],
713      [scanf_cv_alloc_modifier=no]
714    )
715    ,
716
717    [AC_COMPILE_IFELSE([AC_LANG_SOURCE([
718     #include <stdio.h>
719     #include <unistd.h>
720
721     #if defined(__GLIBC__) && !defined(__UCLIBC__)
722
723     #if !(__GLIBC_PREREQ(2, 7))
724     #error %m is not available
725     #endif
726
727     #elif defined(_POSIX_VERSION)
728
729     #if _POSIX_VERSION < 200809L
730     #error %m is not available
731     #endif
732
733     #else
734     #error Your C-library is not supported.
735     #endif
736     ])],
737    [scanf_cv_alloc_modifier=ms],
738    [scanf_cv_alloc_modifier=no])]
739  )
740)
741
742AC_MSG_CHECKING([scanf string alloc modifiers])
743AS_CASE([$scanf_cv_alloc_modifier],
744  [ms],
745    [AC_MSG_RESULT([(%ms) yes])
746     AC_DEFINE([HAVE_SCANF_MS_MODIFIER], [1], [scanf %ms modifier])
747     have_scanf_alloc_modifier=yes],
748  [as],
749    [AC_MSG_RESULT([(%as) yes])
750     have_scanf_alloc_modifier=yes
751     AC_DEFINE([HAVE_SCANF_AS_MODIFIER], [1], [scanf %as modifier])],
752  [AC_MSG_RESULT([no])
753   have_scanf_alloc_modifier=no]
754)
755
756have_pty=no
757AC_ARG_WITH([util], AS_HELP_STRING([--without-util], [compile without libutil]),
758  [], [with_util=auto]
759)
760AS_IF([test "x$with_util" = xno], [
761  AM_CONDITIONAL([HAVE_UTIL], [false])
762  have_util=no
763], [
764  UL_CHECK_LIB([util], [openpty])
765])
766
767AS_IF([test "x$have_pty_h" = xyes -a "x$have_sys_signalfd_h" = xyes -a "x$have_util" = xyes], [
768   AM_CONDITIONAL([HAVE_PTY], [true])
769   AC_DEFINE([HAVE_PTY], [1], [have PTY support])
770   have_pty=yes
771], [
772   AM_CONDITIONAL([HAVE_PTY], [false])
773])
774
775AC_CHECK_TYPES([union semun], [], [], [[
776#include <sys/sem.h>
777]])
778AC_CHECK_TYPES([loff_t])
779
780
781AC_ARG_ENABLE([widechar],
782  AS_HELP_STRING([--disable-widechar], [do not compile wide character support]),
783  [], [enable_widechar=check]
784)
785UL_BUILD_INIT([widechar])
786UL_REQUIRES_COMPILE([widechar], [[
787  #include <wchar.h>
788  #include <wctype.h>
789  #include <stdio.h>
790  #include <stdlib.h>
791  ]], [[
792    wchar_t wc;
793    wint_t w;
794    w = fgetwc(stdin);
795    if (w == WEOF) exit(1);
796    wc = w;
797    fputwc(wc,stdout);
798  ]],
799  [wchar_t support])
800
801AS_IF([test "x$build_widechar" = xyes ], [
802  AC_DEFINE([HAVE_WIDECHAR], [1], [Do we have wide character support?])
803])
804
805
806AC_CHECK_TYPES([cpu_set_t], [have_cpu_set_t=yes], [], [[
807#include <sched.h__>
808]])
809
810AM_CONDITIONAL([HAVE_CPU_SET_T], [test "x$have_cpu_set_t" = xyes])
811
812AC_CHECK_TYPES([sighandler_t], [], [], [[
813#include <signal.h>
814]])
815
816AC_CHECK_DECLS([CPU_ALLOC], [], [], [[
817#include <sched.h__>
818]])
819
820# on Solaris, you can't mix and match standards, since we use c99
821# apparently at this stage, XOPEN_SOURCE will conflict.  As workaround,
822# check for crypt.h and use that without XOPEN_SOURCE.
823have_crypt=no
824AC_CHECK_HEADERS([crypt.h])
825AC_LINK_IFELSE([AC_LANG_PROGRAM([[
826#ifdef HAVE_CRYPT_H
827#include <crypt.h>
828#else
829#define _XOPEN_SOURCE
830#include <unistd.h>
831#endif
832]], [[
833char *c = crypt("abc","pw");
834]])],[
835  have_libcrypt=no
836  have_crypt=yes
837],[
838  LIBS="$LIBS -lcrypt"
839  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
840  #ifdef HAVE_CRYPT_H
841  #include <crypt.h>
842  #else
843  #define _XOPEN_SOURCE
844  #include <unistd.h>
845  #endif
846  ]], [[
847  char *c = crypt("abc","pw");
848  ]])],[
849  AC_DEFINE([HAVE_LIBCRYPT], [1], [Do we need -lcrypt?])
850  have_libcrypt=yes
851  have_crypt=yes
852  ],[
853  AC_MSG_WARN([crypt() is not available])
854  ])
855])
856AM_CONDITIONAL([HAVE_LIBCRYPT], [test "x$have_libcrypt" = xyes])
857
858
859AC_ARG_WITH([selinux],
860  AS_HELP_STRING([--with-selinux], [compile with SELinux support]),
861  [], [with_selinux=no]
862)
863
864AS_IF([test "x$with_selinux" = xno], [
865  AM_CONDITIONAL([HAVE_SELINUX], [false])
866], [
867  PKG_CHECK_MODULES([SELINUX], [libselinux >= 2.0],
868	[AC_DEFINE([HAVE_LIBSELINUX], [1], [Define if SELinux is available])
869	 UL_PKG_STATIC([SELINUX_LIBS_STATIC], [libselinux])
870	 AM_CONDITIONAL([HAVE_SELINUX], [true])
871	 have_selinux=yes],
872	[have_selinux=no])
873
874  AS_CASE([$with_selinux:$have_selinux],
875    [yes:no], [AC_MSG_ERROR([SELinux selected but libselinux not found or too old])]
876  )
877
878  AS_IF([test "x$have_selinux" = xyes], [
879    UL_SET_FLAGS([], [], [$SELINUX_LIBS])
880    # This function is missing in old libselinux 1.xx versions
881    AC_CHECK_FUNCS([security_get_initial_context])
882    UL_RESTORE_FLAGS
883  ])
884])
885AC_SUBST([SELINUX_LIBS])
886AC_SUBST([SELINUX_LIBS_STATIC])
887
888
889AC_ARG_WITH([audit],
890  AS_HELP_STRING([--with-audit], [compile with audit support]),
891  [], [with_audit=no]
892)
893
894AS_IF([test "x$with_audit" = xno], [
895  AM_CONDITIONAL([HAVE_AUDIT], [false])
896], [
897  UL_CHECK_LIB([audit], [audit_log_user_message])
898  AS_CASE([$with_audit:$have_audit],
899    [yes:no],
900      [AC_MSG_ERROR([Audit selected but libaudit not found (or does not support audit_log_user_message())])]
901  )
902])
903
904AC_ARG_WITH([udev], AS_HELP_STRING([--without-udev], [compile without udev support]),
905  [], [with_udev=auto]
906)
907
908AS_IF([test "x$with_udev" = xno], [
909  AM_CONDITIONAL([HAVE_UDEV], [false])
910], [
911  UL_CHECK_LIB([udev], [udev_new])
912  AS_CASE([$with_udev:$have_udev],
913    [yes:no],
914      [AC_MSG_ERROR([udev selected but libudev not found])]
915  )
916])
917
918
919dnl wide-char ncurses
920AC_ARG_WITH([ncursesw],
921  AS_HELP_STRING([--without-ncursesw], [do not build with wide-char ncurses]),
922  [], [with_ncursesw=auto]
923)
924have_ncursesw=no
925have_ncursesw_header=no
926AS_IF([test "x$with_ncursesw" != xno], [
927  UL_NCURSES_CHECK([ncursesw])
928  AS_IF([test "x$have_ncursesw" = xyes], [
929    AC_CHECK_HEADERS([ncursesw/ncurses.h], [have_ncursesw_header=yes])
930    AC_CHECK_HEADERS([ncursesw/term.h])
931
932    # Define HAVE_NCURSES_H only if check for HAVE_NCURSESW_NCURSES_H is
933    # unsuccessful to avoid too many *_H permitations in config.h
934    AS_IF([test "x$have_ncursesw_header" = xno], [
935	   AC_CHECK_HEADERS([ncurses.h], [have_ncursesw_header=yes])
936	   AC_CHECK_HEADERS([term.h])
937    ])
938    AS_IF([test "x$have_ncursesw_header" = xno], [have_ncursesw=no])
939  ])
940  AS_IF([test "x$have_ncursesw" = xyes], [
941    CURSES_LIB_NAME="ncursesw"
942    AC_DEFINE([HAVE_LIBNCURSESW], [1], [Define if ncursesw library available])
943  ])
944])
945AS_CASE([$with_ncursesw:$have_ncursesw],
946  [yes:no], [AC_MSG_ERROR([ncursesw selected, but library not found])])
947
948
949dnl non-wide ncurses
950AC_ARG_WITH([ncurses],
951  AS_HELP_STRING([--with-ncurses], [build with non-wide ncurses]),
952  [], [with_ncurses=auto]
953)
954have_ncurses=no
955have_ncurses_header=no
956AS_CASE([$with_ncurses:$build_widechar],
957  [yes:yes], [AC_MSG_ERROR([wide-char support enabled, but non-wide ncurses selects])])
958
959AS_IF([test "x$have_ncursesw" = xno -a "x$with_ncurses" != xno ], [
960  UL_NCURSES_CHECK([ncurses])
961  AS_IF([test "x$have_ncurses" = xyes], [
962    AC_CHECK_HEADERS([ncurses/ncurses.h], [have_ncurses_header=yes])
963    AC_CHECK_HEADERS([ncurses/term.h])
964
965    # Define HAVE_NCURSES_H only if check for HAVE_NCURSES_NCURSES_H is
966    # unsuccessful to avoid too many *_H permitations in config.h
967    AS_IF([test "x$have_ncurses_header" = xno], [
968	   AC_CHECK_HEADERS([ncurses.h], [have_ncurses_header=yes])
969	   AC_CHECK_HEADERS([term.h])
970    ])
971    AS_IF([test "x$have_ncurses_header" = xno], [have_ncurses=no])
972  ])
973  AS_IF([test "x$have_ncurses" = xyes], [
974    CURSES_LIB_NAME="ncurses"
975    AC_DEFINE([HAVE_LIBNCURSES], [1], [Define if ncurses library available])
976  ])
977])
978AS_CASE([$with_ncurses:$have_ncurses],
979  [yes:no], [AC_MSG_ERROR([ncurses selected, but library not found])])
980
981AC_SUBST([NCURSES_CFLAGS])
982AC_SUBST([NCURSES_LIBS])
983AM_CONDITIONAL([HAVE_NCURSES], [test "x$have_ncursesw" = xyes -o  "x$have_ncurses" = xyes])
984
985
986AC_ARG_WITH([slang],
987  AS_HELP_STRING([--with-slang], [compile cfdisk with slang rather than ncurses]),
988  [], [with_slang=no]
989)
990have_slang=no
991AS_IF([test "x$with_slang" = xyes], [
992  AC_CHECK_HEADERS([slang.h slang/slang.h])
993  AC_CHECK_HEADERS([slcurses.h slang/slcurses.h],
994		   [have_slang=yes], [], [
995#ifdef HAVE_SLANG_H
996#include <slang.h>
997#elif defined(HAVE_SLANG_SLANG_H)
998#include <slang/slang.h>
999#endif
1000])
1001  AS_IF([test "x$have_slang" = xno], [
1002    AC_MSG_ERROR([slang selected but slcurses.h not found])],
1003    [CURSES_LIB_NAME=slang
1004  ])
1005])
1006AM_CONDITIONAL([HAVE_SLANG], [test "x$have_slang" = xyes])
1007
1008
1009AS_IF([test "x$have_slang" = xyes -o "x$have_ncursesw" = xyes -o "x$have_ncurses" = xyes], [
1010	AC_CHECK_LIB([$CURSES_LIB_NAME], use_default_colors, [
1011		     AC_DEFINE(HAVE_USE_DEFAULT_COLORS, 1,
1012			       [Define if curses library has the use_default_colors().])
1013	])
1014	AC_CHECK_LIB([$CURSES_LIB_NAME], resizeterm, [
1015		     AC_DEFINE(HAVE_RESIZETERM, 1,
1016			       [Define if curses library has the resizeterm().])
1017	])
1018])
1019
1020
1021AC_ARG_WITH([tinfo], AS_HELP_STRING([--without-tinfo], [compile without libtinfo]),
1022  [], [with_tinfo=auto]
1023)
1024have_tinfo=no
1025have_tinfow=no
1026AS_IF([test "x$with_tinfo" != xno], [
1027  AS_IF([test "x$have_ncursesw" = xyes], [
1028    UL_TINFO_CHECK([tinfow])
1029  ])
1030  AS_IF([test "x$have_tinfow" = xno], [
1031    UL_TINFO_CHECK([tinfo])
1032  ])
1033])
1034AC_SUBST([TINFO_LIBS])
1035AC_SUBST([TINFO_LIBS_STATIC])
1036AC_SUBST([TINFO_CFLAGS])
1037AM_CONDITIONAL([HAVE_TINFO], [test "x$have_tinfo" = xyes -o "x$have_tinfow" = xyes])
1038AS_IF([test "x$have_tinfo" = xyes -o "x$have_tinfow" = xyes], [
1039  AC_DEFINE(HAVE_LIBTINFO, 1, [Define if libtinfo or libtinfow available.])
1040])
1041
1042
1043AC_ARG_WITH([readline],
1044  AS_HELP_STRING([--without-readline], [do not build with GNU Readline support]),
1045  [], [with_readline=auto]
1046)
1047
1048AS_IF([test "x$with_readline" = xno], [
1049  AM_CONDITIONAL([HAVE_READLINE], [false])
1050], [
1051  UL_CHECK_LIB([readline], [readline])
1052  AS_CASE([$with_readline:$have_readline],
1053    [yes:no],
1054      [AC_MSG_ERROR([readline selected but libreadline not found ])],
1055    [*:yes],
1056      [READLINE_LIBS="-lreadline"
1057       READLINE_LIBS_STATIC="-lreadline $TINFO_LIBS_STATIC"]
1058  )
1059])
1060AC_SUBST([READLINE_LIBS])
1061AC_SUBST([READLINE_LIBS_STATIC])
1062
1063
1064AC_ARG_WITH([utempter],
1065  AS_HELP_STRING([--with-utempter], [compile script(1) with libutempter]),
1066  [], [with_utempter=no]
1067)
1068
1069AS_IF([test "x$with_utempter" = xyes], [
1070  UL_CHECK_LIB([utempter], [utempter_add_record])
1071  AS_IF([test "x$have_utempter" = xno], [
1072    AC_MSG_ERROR([utempter selected but libutempter not found])
1073  ])
1074], [
1075  AM_CONDITIONAL([HAVE_UTEMPTER], [false])
1076])
1077
1078
1079dnl
1080dnl libuuid
1081dnl
1082AC_ARG_ENABLE([libuuid],
1083  AS_HELP_STRING([--disable-libuuid], [do not build libuuid and uuid utilities]),
1084  [], [UL_DEFAULT_ENABLE([libuuid], [yes])]
1085)
1086UL_BUILD_INIT([libuuid])
1087AC_SUBST([LIBUUID_VERSION])
1088AC_SUBST([LIBUUID_VERSION_INFO])
1089AM_CONDITIONAL(BUILD_LIBUUID, test "x$build_libuuid" = xyes)
1090
1091AC_ARG_ENABLE([libuuid-force-uuidd],
1092  AS_HELP_STRING([--enable-libuuid-force-uuidd], [support uuidd even though the daemon is not built]),
1093  [], [enable_libuuid_force_uuidd=no]
1094)
1095
1096AS_IF([test "x$build_libuuid" = xyes], [
1097  AC_DEFINE(HAVE_LIBUUID, 1, [Define to 1 if you have the -luuid.])
1098])
1099
1100dnl
1101dnl libblkid
1102dnl
1103AC_ARG_ENABLE([libblkid],
1104  AS_HELP_STRING([--disable-libblkid], [do not build libblkid and many related utilities]),
1105  [], [UL_DEFAULT_ENABLE([libblkid], [check])]
1106)
1107UL_BUILD_INIT([libblkid])
1108UL_REQUIRES_HAVE([libblkid], [openat], [openat functions])
1109UL_REQUIRES_HAVE([libblkid], [dirfd,ddfd], [dirfd or ddfd function])
1110AC_SUBST([LIBBLKID_DATE])
1111AC_SUBST([LIBBLKID_VERSION])
1112AC_SUBST([LIBBLKID_VERSION_INFO])
1113AC_DEFINE_UNQUOTED([LIBBLKID_VERSION], ["$LIBBLKID_VERSION"], [libblkid version string])
1114AC_DEFINE_UNQUOTED([LIBBLKID_DATE], ["$LIBBLKID_DATE"], [libblkid date string])
1115AS_IF([test "x$build_libblkid" = xyes], [
1116  AC_DEFINE([HAVE_LIBBLKID], [1], [Define to 1 if you have the -lblkid.])
1117])
1118AM_CONDITIONAL([BUILD_LIBBLKID], [test "x$build_libblkid" = xyes])
1119AM_CONDITIONAL([BUILD_LIBBLKID_TESTS], [test "x$build_libblkid" = xyes -a "x$enable_static" = xyes])
1120
1121dnl
1122dnl libmount
1123dnl
1124AC_ARG_ENABLE([libmount],
1125  AS_HELP_STRING([--disable-libmount], [do not build libmount]),
1126  [], [UL_DEFAULT_ENABLE([libmount], [check])]
1127)
1128UL_BUILD_INIT([libmount])
1129UL_REQUIRES_BUILD([libmount], [libblkid])
1130UL_REQUIRES_HAVE([libmount], [scanf_alloc_modifier], [scanf string alloc modifier])
1131UL_REQUIRES_HAVE([libmount], [dirfd,ddfd], [dirfd or ddfd function])
1132AM_CONDITIONAL([BUILD_LIBMOUNT], [test "x$build_libmount" = xyes])
1133AM_CONDITIONAL([BUILD_LIBMOUNT_TESTS], [test "x$build_libmount" = xyes -a "x$enable_static" = xyes])
1134AS_IF([test "x$build_libmount" = xyes], [
1135  AC_DEFINE(HAVE_LIBMOUNT, 1, [Define if libmount available.])
1136  AS_IF([test "x$have_setns_syscall" = "xyes"], [
1137    AC_DEFINE([USE_LIBMOUNT_SUPPORT_NAMESPACES], [1], [Define to 1 if want to support namepaces.])
1138  ],[
1139    AC_MSG_WARN([libmount will be compiled without namespaces support])
1140  ])
1141])
1142
1143AC_SUBST([LIBMOUNT_VERSION])
1144AC_SUBST([LIBMOUNT_MAJOR_VERSION], $PACKAGE_VERSION_MAJOR)
1145AC_SUBST([LIBMOUNT_MINOR_VERSION], $PACKAGE_VERSION_MINOR)
1146AC_SUBST([LIBMOUNT_PATCH_VERSION], $PACKAGE_VERSION_RELEASE)
1147AC_SUBST([LIBMOUNT_VERSION_INFO])
1148AC_DEFINE_UNQUOTED([LIBMOUNT_VERSION], ["$LIBMOUNT_VERSION"], [libmount version string])
1149
1150AC_ARG_ENABLE([libmount-support-mtab],
1151  AS_HELP_STRING([--enable-libmount-support-mtab], [support /etc/mtab (default is use /proc/self/mountinfo)]),
1152  [], [enable_libmount_support_mtab=no]
1153)
1154
1155AS_IF([test "x$enable_libmount_support_mtab" = xyes], [
1156  AC_DEFINE([USE_LIBMOUNT_SUPPORT_MTAB], [1], [Define to 1 if want to support mtab.])
1157])
1158
1159dnl
1160dnl libsmartcols
1161dnl
1162AC_ARG_ENABLE([libsmartcols],
1163  AS_HELP_STRING([--disable-libsmartcols], [do not build libsmartcols]),
1164  [], [UL_DEFAULT_ENABLE([libsmartcols], [yes])]
1165)
1166UL_BUILD_INIT([libsmartcols])
1167AM_CONDITIONAL([BUILD_LIBSMARTCOLS], [test "x$build_libsmartcols" = xyes])
1168
1169AC_SUBST([LIBSMARTCOLS_VERSION])
1170AC_SUBST([LIBSMARTCOLS_VERSION_INFO])
1171AC_DEFINE_UNQUOTED([LIBSMARTCOLS_VERSION], ["$LIBSMARTCOLS_VERSION"], [libsmartcols version string])
1172
1173
1174dnl
1175dnl libfdisk
1176dnl
1177AC_ARG_ENABLE([libfdisk],
1178  AS_HELP_STRING([--disable-libfdisk], [do not build libfdisk]),
1179  [], [UL_DEFAULT_ENABLE([libfdisk], [check])]
1180)
1181UL_BUILD_INIT([libfdisk])
1182UL_REQUIRES_BUILD([libfdisk], [libuuid])
1183AM_CONDITIONAL([BUILD_LIBFDISK], [test "x$build_libfdisk" = xyes])
1184AM_CONDITIONAL([BUILD_LIBFDISK_TESTS], [test "x$build_libfdisk" = xyes -a "x$enable_static" = xyes])
1185
1186AS_IF([test "x$build_libblkid" = xyes],
1187  [LIBFDISK_PC_REQUIRES="uuid blkid"],[LIBFDISK_PC_REQUIRES="uuid"])
1188AC_SUBST([LIBFDISK_PC_REQUIRES])
1189
1190AC_SUBST([LIBFDISK_VERSION])
1191AC_SUBST([LIBFDISK_MAJOR_VERSION], $PACKAGE_VERSION_MAJOR)
1192AC_SUBST([LIBFDISK_MINOR_VERSION], $PACKAGE_VERSION_MINOR)
1193AC_SUBST([LIBFDISK_PATCH_VERSION], $PACKAGE_VERSION_RELEASE)
1194AC_SUBST([LIBFDISK_VERSION_INFO])
1195AC_DEFINE_UNQUOTED([LIBFDISK_VERSION], ["$LIBFDISK_VERSION"], [libfdisk version string])
1196
1197
1198AC_ARG_ENABLE([fdisks],
1199  AS_HELP_STRING([--disable-fdisks], [do not build fdisk(8), sfdisk(8) and cfdisk(8)]),
1200  [], [UL_DEFAULT_ENABLE([fdisks], [check])]
1201)
1202enable_fdisk=$enable_fdisks
1203enable_sfdisk=$enable_fdisks
1204enable_cfdisk=$enable_fdisks
1205
1206UL_BUILD_INIT([fdisk])
1207UL_REQUIRES_HAVE([fdisk], [openat], [openat functions])
1208UL_REQUIRES_HAVE([fdisk], [dirfd,ddfd], [dirfd or ddfd function])
1209UL_REQUIRES_BUILD([fdisk], [libfdisk])
1210UL_REQUIRES_BUILD([fdisk], [libsmartcols])
1211AM_CONDITIONAL([BUILD_FDISK], [test "x$build_fdisk" = xyes])
1212
1213
1214UL_BUILD_INIT([sfdisk])
1215UL_REQUIRES_HAVE([sfdisk], [openat], [openat functions])
1216UL_REQUIRES_HAVE([sfdisk], [dirfd,ddfd], [dirfd or ddfd function])
1217UL_REQUIRES_BUILD([sfdisk], [libfdisk])
1218UL_REQUIRES_BUILD([sfdisk], [libsmartcols])
1219AM_CONDITIONAL([BUILD_SFDISK], [test "x$build_sfdisk" = xyes])
1220
1221
1222UL_BUILD_INIT([cfdisk])
1223UL_REQUIRES_BUILD([cfdisk], [libfdisk])
1224UL_REQUIRES_BUILD([cfdisk], [libsmartcols])
1225UL_REQUIRES_HAVE([cfdisk], [open_memstream], [open_memstream function])
1226UL_REQUIRES_HAVE([cfdisk], [ncursesw,slang,ncurses], [ncursesw, ncurses or slang library])
1227AM_CONDITIONAL([BUILD_CFDISK], [test "x$build_cfdisk" = xyes])
1228
1229
1230AC_ARG_ENABLE([mount],
1231  AS_HELP_STRING([--disable-mount], [do not build mount(8) and umount(8)]),
1232  [], [UL_DEFAULT_ENABLE([mount], [check])]
1233)
1234UL_BUILD_INIT([mount])
1235UL_REQUIRES_LINUX([mount])
1236UL_REQUIRES_BUILD([mount], [libmount])
1237AM_CONDITIONAL([BUILD_MOUNT], [test "x$build_mount" = xyes])
1238
1239
1240AC_ARG_ENABLE([losetup],
1241  AS_HELP_STRING([--disable-losetup], [do not build losetup]),
1242  [], [UL_DEFAULT_ENABLE([losetup], [check])]
1243)
1244UL_BUILD_INIT([losetup])
1245UL_REQUIRES_LINUX([losetup])
1246UL_REQUIRES_BUILD([losetup], [libsmartcols])
1247AM_CONDITIONAL([BUILD_LOSETUP], [test "x$build_losetup" = xyes])
1248
1249AC_ARG_ENABLE([zramctl],
1250  AS_HELP_STRING([--disable-zramctl], [do not build zramctl]),
1251  [], [UL_DEFAULT_ENABLE([zramctl], [check])]
1252)
1253UL_BUILD_INIT([zramctl])
1254UL_REQUIRES_LINUX([zramctl])
1255UL_REQUIRES_BUILD([zramctl], [libsmartcols])
1256AM_CONDITIONAL([BUILD_ZRAMCTL], [test "x$build_zramctl" = xyes])
1257
1258AC_ARG_ENABLE([fsck],
1259  AS_HELP_STRING([--disable-fsck], [do not build fsck]),
1260  [], [UL_DEFAULT_ENABLE([fsck], [check])]
1261)
1262UL_BUILD_INIT([fsck])
1263UL_REQUIRES_BUILD([fsck], [libmount])
1264AM_CONDITIONAL([BUILD_FSCK], [test "x$build_fsck" = xyes])
1265
1266
1267AC_ARG_ENABLE([partx],
1268  AS_HELP_STRING([--disable-partx], [do not build addpart, delpart, partx]),
1269  [], [UL_DEFAULT_ENABLE([partx], [check])]
1270)
1271UL_BUILD_INIT([partx])
1272UL_REQUIRES_LINUX([partx])
1273UL_REQUIRES_BUILD([partx], [libblkid])
1274UL_REQUIRES_BUILD([partx], [libsmartcols])
1275AM_CONDITIONAL([BUILD_PARTX], [test "x$build_partx" = xyes])
1276
1277
1278AC_ARG_ENABLE([uuidd],
1279  AS_HELP_STRING([--disable-uuidd], [do not build the uuid daemon]),
1280  [], [UL_DEFAULT_ENABLE([uuidd], [check])]
1281)
1282UL_BUILD_INIT([uuidd])
1283UL_REQUIRES_BUILD([uuidd], [libuuid])
1284UL_REQUIRES_HAVE([uuidd], [timer], [timer_create function])
1285UL_REQUIRES_HAVE([uuidd], [sys_signalfd_h], [sys/signalfd.h header])
1286AS_IF([test "x$build_uuidd" = xyes || test "x$enable_libuuid_force_uuidd" = xyes], [
1287  AC_DEFINE([HAVE_UUIDD], [1], [Define to 1 if you want to use uuid daemon.])
1288])
1289AM_CONDITIONAL([BUILD_UUIDD], [test "x$build_uuidd" = xyes])
1290
1291
1292UL_BUILD_INIT([uuidgen], [check])
1293UL_REQUIRES_BUILD([uuidgen], [libuuid])
1294AM_CONDITIONAL([BUILD_UUIDGEN], [test "x$build_uuidgen" = xyes])
1295
1296UL_BUILD_INIT([uuidparse], [check])
1297UL_REQUIRES_BUILD([uuidparse], [libuuid])
1298UL_REQUIRES_BUILD([uuidparse], [libsmartcols])
1299AM_CONDITIONAL([BUILD_UUIDPARSE], [test "x$build_uuidparse" = xyes])
1300
1301UL_BUILD_INIT([blkid], [check])
1302UL_REQUIRES_BUILD([blkid], [libblkid])
1303AM_CONDITIONAL([BUILD_BLKID], [test "x$build_blkid" = xyes])
1304
1305UL_BUILD_INIT([findfs], [check])
1306UL_REQUIRES_BUILD([findfs], [libblkid])
1307AM_CONDITIONAL([BUILD_FINDFS], [test "x$build_findfs" = xyes])
1308
1309AC_ARG_ENABLE([wipefs],
1310  AS_HELP_STRING([--disable-wipefs], [do not build wipefs]),
1311  [], [UL_DEFAULT_ENABLE([wipefs], [check])]
1312)
1313UL_BUILD_INIT([wipefs])
1314UL_REQUIRES_BUILD([wipefs], [libblkid])
1315UL_REQUIRES_BUILD([wipefs], [libsmartcols])
1316AM_CONDITIONAL([BUILD_WIPEFS], [test "x$build_wipefs" = xyes])
1317
1318UL_BUILD_INIT([findmnt], [check])
1319UL_REQUIRES_BUILD([findmnt], [libmount])
1320UL_REQUIRES_BUILD([findmnt], [libblkid])
1321UL_REQUIRES_BUILD([findmnt], [libsmartcols])
1322AM_CONDITIONAL([BUILD_FINDMNT], [test "x$build_findmnt" = xyes])
1323
1324
1325AC_ARG_ENABLE([mountpoint],
1326  AS_HELP_STRING([--disable-mountpoint], [do not build mountpoint]),
1327  [], [UL_DEFAULT_ENABLE([mountpoint], [check])]
1328)
1329UL_BUILD_INIT([mountpoint])
1330UL_REQUIRES_BUILD([mountpoint], [libmount])
1331AM_CONDITIONAL([BUILD_MOUNTPOINT], [test "x$build_mountpoint" = xyes])
1332
1333
1334AC_ARG_ENABLE([fallocate],
1335  AS_HELP_STRING([--disable-fallocate], [do not build fallocate]),
1336  [], [UL_DEFAULT_ENABLE([fallocate], [check])]
1337)
1338UL_BUILD_INIT([fallocate])
1339UL_REQUIRES_LINUX([fallocate])
1340UL_REQUIRES_SYSCALL_CHECK([fallocate], [UL_CHECK_SYSCALL([fallocate])])
1341AM_CONDITIONAL([BUILD_FALLOCATE], [test "x$build_fallocate" = xyes])
1342
1343AS_IF([test "x$build_fallocate" = xyes], [
1344  dnl check for valid fallocate() function
1345  dnl with 32 bits glibc 2.10, fallocate() exists but not fallocate64()
1346  dnl when _FILE_OFFSET_BITS==64, fallocate() is redirect to fallocate64()
1347  dnl and program can't be linked.
1348  dnl AC_CHECK_FUNC can't catch such errors since it's redefining
1349  dnl function prototype.
1350  AC_MSG_CHECKING([for valid fallocate() function])
1351  AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1352#ifdef HAVE_UNISTD_H
1353# include <unistd.h>
1354#endif
1355#ifdef HAVE_SYS_TYPES_H
1356# include <sys/types.h>
1357#endif
1358#ifdef HAVE_LINUX_FALLOC_H
1359# include <linux/falloc.h>
1360#endif
1361#ifdef HAVE_FCNTL_H
1362# include <fcntl.h>
1363#endif
1364]],[[
1365   long ret;
1366   ret = fallocate(0, FALLOC_FL_KEEP_SIZE, 0xfffffffful, 0xfffffffful);
1367   if (ret != 0) {
1368      return 1;
1369   }
1370   ]])],[
1371  AC_MSG_RESULT([yes])
1372  AC_DEFINE([HAVE_FALLOCATE], [1], [Have valid fallocate() function])],[
1373  AC_MSG_RESULT([no])])
1374])
1375
1376AS_IF([test "x$build_fallocate" = xyes], [
1377  dnl check for valid posix_fallocate() function
1378  AC_MSG_CHECKING([for valid posix_fallocate() function])
1379  AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1380#ifdef HAVE_UNISTD_H
1381# include <unistd.h>
1382#endif
1383#ifdef HAVE_SYS_TYPES_H
1384# include <sys/types.h>
1385#endif
1386#ifdef HAVE_LINUX_FALLOC_H
1387# include <linux/falloc.h>
1388#endif
1389#ifdef HAVE_FCNTL_H
1390# include <fcntl.h>
1391#endif
1392]],[[
1393   long ret;
1394   ret = posix_fallocate(0, 0xfffffffful, 0xfffffffful);
1395   if (ret != 0) {
1396      return 1;
1397   }
1398   ]])],[
1399  AC_MSG_RESULT([yes])
1400  AC_DEFINE([HAVE_POSIX_FALLOCATE], [1], [Have valid posix_fallocate() function])],[
1401  AC_MSG_RESULT([no])])
1402])
1403
1404
1405AC_ARG_ENABLE([unshare],
1406  AS_HELP_STRING([--disable-unshare], [do not build unshare]),
1407  [], [UL_DEFAULT_ENABLE([unshare], [check])]
1408)
1409UL_BUILD_INIT([unshare])
1410UL_REQUIRES_LINUX([unshare])
1411UL_REQUIRES_SYSCALL_CHECK([unshare], [UL_CHECK_SYSCALL([unshare])])
1412UL_REQUIRES_HAVE([unshare], [linux_capability_h], [linux/capability.h header file])
1413AM_CONDITIONAL([BUILD_UNSHARE], [test "x$build_unshare" = xyes])
1414AC_CHECK_FUNCS([unshare])
1415
1416AC_ARG_ENABLE([nsenter],
1417  AS_HELP_STRING([--disable-nsenter], [do not build nsenter]),
1418  [], [UL_DEFAULT_ENABLE([nsenter], [check])]
1419)
1420UL_BUILD_INIT([nsenter])
1421UL_REQUIRES_LINUX([nsenter])
1422UL_REQUIRES_HAVE([nsenter], [setns_syscall], [setns syscall])
1423AM_CONDITIONAL([BUILD_NSENTER], [test "x$build_nsenter" = xyes])
1424AC_CHECK_FUNCS([setns])
1425
1426
1427AC_ARG_WITH([cap_ng],
1428  AS_HELP_STRING([--without-cap-ng], [compile without libcap-ng]),
1429  [], [with_cap_ng=auto]
1430)
1431AS_IF([test "x$with_cap_ng" = xno], [
1432  AM_CONDITIONAL([HAVE_CAP_NG], [false])
1433  have_cap_ng=no
1434],[
1435  UL_CHECK_LIB([cap-ng], [capng_apply], [cap_ng])
1436])
1437
1438
1439AC_ARG_ENABLE([setpriv],
1440  AS_HELP_STRING([--disable-setpriv], [do not build setpriv]),
1441  [], [UL_DEFAULT_ENABLE([setpriv], [check])]
1442)
1443UL_BUILD_INIT([setpriv])
1444UL_REQUIRES_LINUX([setpriv])
1445UL_REQUIRES_HAVE([setpriv], [linux_securebits_h], [linux/securebits.h header file])
1446UL_REQUIRES_HAVE([setpriv], [linux_capability_h], [linux/capability.h header file])
1447UL_REQUIRES_HAVE([setpriv], [cap_ng], [libcap-ng library])
1448AM_CONDITIONAL([BUILD_SETPRIV], [test "x$build_setpriv" = xyes])
1449
1450PKG_CHECK_MODULES([PCRE], [libpcre2-8], [have_pcre=yes], [have_pcre=no])
1451AS_IF([test "x$have_pcre" = xyes ], [
1452    AC_DEFINE([HAVE_PCRE], [1], [Define if libpcre2 is available])
1453])
1454AM_CONDITIONAL([HAVE_PCRE], [test "x$have_pcre" = xyes])
1455
1456AC_ARG_ENABLE([hardlink],
1457  AS_HELP_STRING([--disable-hardlink], [do not build hardlink]),
1458  [], [UL_DEFAULT_ENABLE([hardlink], [check])]
1459)
1460UL_BUILD_INIT([hardlink])
1461AM_CONDITIONAL([BUILD_HARDLINK], [test "x$build_hardlink" = xyes])
1462
1463AC_ARG_ENABLE([eject],
1464  AS_HELP_STRING([--disable-eject], [do not build eject]),
1465  [], [UL_DEFAULT_ENABLE([eject], [check])]
1466)
1467UL_BUILD_INIT([eject])
1468UL_REQUIRES_LINUX([eject])
1469UL_REQUIRES_BUILD([eject], [libmount])
1470AM_CONDITIONAL([BUILD_EJECT], [test "x$build_eject" = xyes])
1471
1472
1473AC_ARG_ENABLE([agetty],
1474  AS_HELP_STRING([--disable-agetty], [do not build agetty]),
1475  [], [UL_DEFAULT_ENABLE([agetty], [check])]
1476)
1477UL_BUILD_INIT([agetty])
1478UL_REQUIRES_HAVE([agetty], [utmpx_h], [utmpx.h header])
1479UL_REQUIRES_HAVE([agetty], [gnu_utmpx], [GNU utmpx functions])
1480AM_CONDITIONAL([BUILD_AGETTY], [test "x$build_agetty" = xyes])
1481AS_IF([test "x$have_futimens" = xyes -a "x$have_inotify_init1" = xyes ], [
1482  AC_DEFINE([AGETTY_RELOAD], [1], [Enable agetty --reload feature])
1483],[
1484  AC_MSG_WARN([futimens or inotify_init1 not found; agetty(8) will not provide ---reload functionality])
1485])
1486
1487
1488AC_ARG_ENABLE([plymouth_support],
1489  AS_HELP_STRING([--disable-plymouth_support], [do not care about plymouth in sylogin(8) and agetty(8)]),
1490  [], [enable_plymouth_support=check]
1491)
1492UL_BUILD_INIT([plymouth_support])
1493UL_REQUIRES_HAVE([plymouth_support], [tiocglcktrmios], [TIOCGLCKTRMIOS flag])
1494UL_REQUIRES_HAVE([plymouth_support], [sock_cloexec], [SOCK_CLOEXEC flag])
1495UL_REQUIRES_HAVE([plymouth_support], [sock_nonblock], [SOCK_NONBLOCK flag])
1496UL_REQUIRES_HAVE([plymouth_support], [so_passcred], [SO_PASSCRED flag])
1497AM_CONDITIONAL([USE_PLYMOUTH_SUPPORT], [test "x$build_plymouth_support" = xyes])
1498AS_IF([test "x$build_plymouth_support" = xyes ], [
1499    AC_DEFINE([USE_PLYMOUTH_SUPPORT], [1], [Enable plymouth support feature for sulogin and aggety])
1500])
1501
1502
1503AC_ARG_WITH([libz],
1504  AS_HELP_STRING([--without-libz], [compile without libz]),
1505  [], [with_libz=auto]
1506)
1507AS_IF([test "x$with_libz" = xno], [have_z=no], [
1508  AC_CHECK_LIB([z], [crc32], [have_z=yes], [have_z=no])
1509])
1510
1511AC_ARG_WITH([libmagic],
1512  AS_HELP_STRING([--without-libmagic], [compile without libmagic]),
1513  [], [with_libmagic=auto]
1514)
1515AS_IF([test "x$with_libmagic" = xno], [have_magic=no], [
1516  AC_CHECK_LIB([magic], [magic_open], [
1517    AC_DEFINE([HAVE_MAGIC], [1], [Define to 1 if you have the libmagic present.])
1518    MAGIC_LIBS="-lmagic"
1519  ])
1520])
1521AC_SUBST([MAGIC_LIBS])
1522
1523
1524AC_ARG_ENABLE([cramfs],
1525  AS_HELP_STRING([--disable-cramfs], [do not build fsck.cramfs, mkfs.cramfs]),
1526  [], [UL_DEFAULT_ENABLE([cramfs], [check])]
1527)
1528UL_BUILD_INIT([cramfs])
1529UL_REQUIRES_HAVE([cramfs], [z], [z library])
1530AM_CONDITIONAL([BUILD_CRAMFS], [test "x$build_cramfs" = xyes])
1531
1532
1533AC_ARG_ENABLE([bfs],
1534  AS_HELP_STRING([--disable-bfs], [do not build mkfs.bfs]),
1535  [], [UL_DEFAULT_ENABLE([bfs], [yes])]
1536)
1537UL_BUILD_INIT([bfs])
1538AM_CONDITIONAL([BUILD_BFS], [test "x$build_bfs" = xyes])
1539
1540
1541AC_ARG_ENABLE([minix],
1542  AS_HELP_STRING([--disable-minix], [do not build fsck.minix, mkfs.minix]),
1543  [], [UL_DEFAULT_ENABLE([minix], [yes])]
1544)
1545UL_BUILD_INIT([minix])
1546AM_CONDITIONAL([BUILD_MINIX], [test "x$build_minix" = xyes])
1547
1548
1549AC_ARG_ENABLE([fdformat],
1550  AS_HELP_STRING([--disable-fdformat], [do not build fdformat]),
1551  [], [UL_DEFAULT_ENABLE([fdformat], [check])]
1552)
1553UL_BUILD_INIT([fdformat])
1554UL_REQUIRES_LINUX([fdformat])
1555AM_CONDITIONAL([BUILD_FDFORMAT], [test "x$build_fdformat" = xyes])
1556
1557
1558AC_ARG_ENABLE([hwclock],
1559  AS_HELP_STRING([--disable-hwclock], [do not build hwclock]),
1560  [], [UL_DEFAULT_ENABLE([hwclock], [check])]
1561)
1562have_linuxdummy=$linux_os
1563
1564UL_BUILD_INIT([hwclock])
1565UL_REQUIRES_HAVE([hwclock], [io, linuxdummy], [ioperm iopl function or Linux])
1566AM_CONDITIONAL([BUILD_HWCLOCK], [test "x$build_hwclock" = xyes])
1567
1568AC_ARG_ENABLE([hwclock_cmos],
1569  AS_HELP_STRING([--disable-hwclock-cmos], [do not use CMOS clock]),
1570  [], [enable_hwclock_cmos=check]
1571)
1572UL_BUILD_INIT([hwclock_cmos])
1573UL_REQUIRES_BUILD([hwclock_cmos], [hwclock])
1574UL_REQUIRES_ARCH([hwclock_cmos], [i?86-*,x86_64*])
1575AM_CONDITIONAL([USE_HWCLOCK_CMOS], [test "x$build_hwclock_cmos" = xyes])
1576AS_IF([test "x$build_hwclock_cmos" = xyes ], [
1577    AC_DEFINE([USE_HWCLOCK_CMOS], [1], [Define to 1 if want to use CMOS clock.])
1578])
1579
1580AC_ARG_ENABLE([hwclock_gplv3],
1581  AS_HELP_STRING([--disable-hwclock-gplv3], [do not use datetime parsing GPLv3 code]),
1582  [], [enable_hwclock_gplv3=yes]
1583)
1584AM_CONDITIONAL([USE_HWCLOCK_GPLv3_DATETIME], [test "x$enable_hwclock_gplv3" = xyes])
1585AS_IF([test "x$enable_hwclock_gplv3" = xyes ], [
1586    AC_DEFINE([USE_HWCLOCK_GPLv3_DATETIME], [1], [use datetime parsing GPLv3 code to hwclock])
1587])
1588
1589
1590UL_BUILD_INIT([mkfs], [yes])
1591AM_CONDITIONAL([BUILD_MKFS], [test "x$build_mkfs" = xyes])
1592
1593UL_BUILD_INIT([isosize], [yes])
1594AM_CONDITIONAL([BUILD_ISOSIZE], [test "x$build_isosize" = xyes])
1595
1596
1597UL_BUILD_INIT([fstrim], [check])
1598UL_REQUIRES_LINUX([fstrim])
1599UL_REQUIRES_BUILD([fstrim], [libmount])
1600AM_CONDITIONAL([BUILD_FSTRIM], [test "x$build_fstrim" = xyes])
1601
1602
1603UL_BUILD_INIT([swapon], [check])
1604UL_REQUIRES_LINUX([swapon])
1605UL_REQUIRES_SYSCALL_CHECK([swapon], [UL_CHECK_SYSCALL([swapon])], [swapon])
1606UL_REQUIRES_SYSCALL_CHECK([swapon], [UL_CHECK_SYSCALL([swapoff])], [swapoff])
1607UL_REQUIRES_BUILD([swapon], [libblkid])
1608UL_REQUIRES_BUILD([swapon], [libmount])
1609UL_REQUIRES_BUILD([swapon], [libsmartcols])
1610AM_CONDITIONAL([BUILD_SWAPON], [test "x$build_swapon" = xyes])
1611AC_CHECK_FUNCS([swapon])
1612AC_CHECK_FUNCS([swapoff])
1613
1614
1615UL_BUILD_INIT([lsblk], [check])
1616UL_REQUIRES_LINUX([lsblk])
1617UL_REQUIRES_BUILD([lsblk], [libblkid])
1618UL_REQUIRES_BUILD([lsblk], [libmount])
1619UL_REQUIRES_BUILD([lsblk], [libsmartcols])
1620AM_CONDITIONAL([BUILD_LSBLK], [test "x$build_lsblk" = xyes])
1621
1622
1623UL_BUILD_INIT([lscpu], [check])
1624UL_REQUIRES_LINUX([lscpu])
1625UL_REQUIRES_BUILD([lscpu], [libsmartcols])
1626UL_REQUIRES_HAVE([lscpu], [cpu_set_t], [cpu_set_t type])
1627AM_CONDITIONAL([BUILD_LSCPU], [test "x$build_lscpu" = xyes])
1628
1629
1630AC_ARG_ENABLE([lslogins],
1631  AS_HELP_STRING([--disable-lslogins], [do not build lslogins]),
1632  [], [UL_DEFAULT_ENABLE([lslogins], [check])]
1633)
1634UL_BUILD_INIT([lslogins])
1635UL_REQUIRES_BUILD([lslogins], [libsmartcols])
1636UL_REQUIRES_HAVE([lslogins], [shadow_h], [shadow.h header])
1637UL_REQUIRES_HAVE([lslogins], [utmpx_h], [utmpx.h header])
1638UL_REQUIRES_HAVE([lslogins], [gnu_utmpx], [GNU utmpx functions])
1639AM_CONDITIONAL([BUILD_LSLOGINS], [test "x$build_lslogins" = xyes])
1640
1641
1642UL_BUILD_INIT([chcpu], [check])
1643UL_REQUIRES_LINUX([chcpu])
1644UL_REQUIRES_HAVE([chcpu], [cpu_set_t], [cpu_set_t type])
1645AM_CONDITIONAL([BUILD_CHCPU], [test "x$build_chcpu" = xyes])
1646
1647
1648AC_ARG_ENABLE([wdctl],
1649  AS_HELP_STRING([--disable-wdctl], [do not build wdctl]),
1650  [], [UL_DEFAULT_ENABLE([wdctl], [check])]
1651)
1652UL_BUILD_INIT([wdctl])
1653UL_REQUIRES_LINUX([wdctl])
1654UL_REQUIRES_BUILD([wdctl], [libsmartcols])
1655UL_REQUIRES_HAVE([wdctl], [linux_watchdog_h], [linux/watchdog.h header file])
1656AM_CONDITIONAL([BUILD_WDCTL], [test "x$build_wdctl" = xyes])
1657
1658
1659UL_BUILD_INIT([swaplabel], [check])
1660UL_REQUIRES_BUILD([swaplabel], [libblkid])
1661AM_CONDITIONAL([BUILD_SWAPLABEL], [test "x$build_swaplabel" = xyes])
1662
1663
1664UL_BUILD_INIT([mkswap], [yes])
1665AM_CONDITIONAL([BUILD_MKSWAP], [test "x$build_mkswap" = xyes])
1666AS_IF([test "x$build_mkswap" = xyes -a "x$build_libuuid" != xyes], [
1667  AC_MSG_WARN([uuid library is not found; mkswap(8) will not generate UUIDs])
1668])
1669
1670
1671AC_ARG_ENABLE([cal],
1672  AS_HELP_STRING([--disable-cal], [do not build cal]),
1673  [], [UL_DEFAULT_ENABLE([cal], [check])]
1674)
1675UL_BUILD_INIT([cal])
1676AM_CONDITIONAL([BUILD_CAL], [test "x$build_cal" = xyes])
1677
1678AC_ARG_ENABLE([logger],
1679  AS_HELP_STRING([--disable-logger], [do not build logger]),
1680  [], [UL_DEFAULT_ENABLE([logger], [check])]
1681)
1682UL_BUILD_INIT([logger])
1683AM_CONDITIONAL([BUILD_LOGGER], [test "x$build_logger" = xyes])
1684
1685UL_BUILD_INIT([look], [yes])
1686AM_CONDITIONAL([BUILD_LOOK], [test "x$build_look" = xyes])
1687
1688UL_BUILD_INIT([mcookie], [yes])
1689AM_CONDITIONAL([BUILD_MCOOKIE], [test "x$build_mcookie" = xyes])
1690
1691UL_BUILD_INIT([namei], [yes])
1692AM_CONDITIONAL([BUILD_NAMEI], [test "x$build_namei" = xyes])
1693
1694matriplet="$($CC -print-multiarch 2>/dev/null || true)"
1695if test "x$matriplet" != "x"; then
1696  AC_DEFINE_UNQUOTED([MULTIARCHTRIPLET], ["$matriplet"],
1697  ["Multi-arch triplet for whereis library search path"])
1698fi
1699UL_BUILD_INIT([whereis], [yes])
1700AM_CONDITIONAL([BUILD_WHEREIS], [test "x$build_whereis" = xyes])
1701
1702UL_BUILD_INIT([getopt], [yes])
1703AM_CONDITIONAL([BUILD_GETOPT], [test "x$build_getopt" = xyes])
1704
1705
1706UL_BUILD_INIT([blockdev], [check])
1707UL_REQUIRES_LINUX([blockdev])
1708AM_CONDITIONAL([BUILD_BLOCKDEV], [test "x$build_blockdev" = xyes])
1709
1710
1711UL_BUILD_INIT([prlimit], [check])
1712UL_REQUIRES_LINUX([prlimit])
1713UL_REQUIRES_BUILD([prlimit], [libsmartcols])
1714UL_REQUIRES_SYSCALL_CHECK([prlimit], [UL_CHECK_SYSCALL([prlimit64])], [prlimit64])
1715AM_CONDITIONAL([BUILD_PRLIMIT], [test "x$build_prlimit" = xyes])
1716AS_IF([test "x$build_prlimit" = xyes], [
1717  AC_CHECK_FUNCS([prlimit])
1718])
1719
1720
1721UL_BUILD_INIT([lslocks], [check])
1722UL_REQUIRES_LINUX([lslocks])
1723UL_REQUIRES_BUILD([lslocks], [libmount])
1724UL_REQUIRES_BUILD([lslocks], [libsmartcols])
1725AM_CONDITIONAL([BUILD_LSLOCKS], [test "x$build_lslocks" = xyes])
1726
1727
1728AC_ARG_ENABLE([switch_root],
1729  AS_HELP_STRING([--disable-switch_root], [do not build switch_root]),
1730  [], [UL_DEFAULT_ENABLE([switch_root], [check])]
1731)
1732UL_BUILD_INIT([switch_root])
1733UL_REQUIRES_LINUX([switch_root])
1734UL_REQUIRES_HAVE([switch_root], [openat], [openat function])
1735UL_REQUIRES_HAVE([switch_root], [dirfd,ddfd], [dirfd or ddfd function])
1736AM_CONDITIONAL([BUILD_SWITCH_ROOT], [test "x$build_switch_root" = xyes])
1737
1738
1739AC_ARG_ENABLE([pivot_root],
1740  AS_HELP_STRING([--disable-pivot_root], [do not build pivot_root]),
1741  [], [UL_DEFAULT_ENABLE([pivot_root], [check])]
1742)
1743UL_BUILD_INIT([pivot_root])
1744UL_REQUIRES_LINUX([pivot_root])
1745UL_REQUIRES_SYSCALL_CHECK([pivot_root], [UL_CHECK_SYSCALL([pivot_root])])
1746AM_CONDITIONAL([BUILD_PIVOT_ROOT], [test "x$build_pivot_root" = xyes])
1747
1748
1749UL_BUILD_INIT([flock], [check])
1750UL_REQUIRES_HAVE([flock], [timer], [timer_create/setitimer function])
1751AM_CONDITIONAL([BUILD_FLOCK], [test "x$build_flock" = xyes])
1752
1753
1754AC_ARG_ENABLE([lsmem],
1755  AS_HELP_STRING([--disable-lsmem], [do not build lsmem]),
1756  [], [UL_DEFAULT_ENABLE([lsmem], [check])]
1757)
1758UL_BUILD_INIT([lsmem])
1759UL_REQUIRES_LINUX([lsmem])
1760UL_REQUIRES_BUILD([lsmem], [libsmartcols])
1761AM_CONDITIONAL([BUILD_LSMEM], [test "x$build_lsmem" = xyes])
1762
1763
1764AC_ARG_ENABLE([chmem],
1765  AS_HELP_STRING([--disable-chmem], [do not build chmem]),
1766  [], [UL_DEFAULT_ENABLE([chmem], [check])]
1767)
1768UL_BUILD_INIT([chmem])
1769UL_REQUIRES_LINUX([chmem])
1770AM_CONDITIONAL([BUILD_CHMEM], [test "x$build_chmem" = xyes])
1771
1772UL_BUILD_INIT([ipcmk], [yes])
1773AM_CONDITIONAL([BUILD_IPCMK], [test "x$build_ipcmk" = xyes])
1774
1775
1776AC_ARG_ENABLE([ipcrm],
1777  AS_HELP_STRING([--disable-ipcrm], [do not build ipcrm]),
1778  [], [UL_DEFAULT_ENABLE([ipcrm], [yes])]
1779)
1780UL_BUILD_INIT([ipcrm])
1781AM_CONDITIONAL([BUILD_IPCRM], [test "x$build_ipcrm" = xyes])
1782
1783AC_ARG_ENABLE([ipcs],
1784  AS_HELP_STRING([--disable-ipcs], [do not build ipcs]),
1785  [], [UL_DEFAULT_ENABLE([ipcs], [yes])]
1786)
1787UL_BUILD_INIT([ipcs])
1788AM_CONDITIONAL([BUILD_IPCS], [test "x$build_ipcs" = xyes])
1789
1790
1791AC_ARG_ENABLE([irqtop],
1792  AS_HELP_STRING([--disable-irqtop], [do not build irqtop]),
1793  [], [UL_DEFAULT_ENABLE([irqtop], [check])]
1794)
1795UL_BUILD_INIT([irqtop])
1796UL_REQUIRES_LINUX([irqtop])
1797UL_REQUIRES_BUILD([irqtop], [libsmartcols])
1798UL_REQUIRES_HAVE([irqtop], [open_memstream], [open_memstream function])
1799UL_REQUIRES_HAVE([irqtop], [ncursesw,slang,ncurses], [ncursesw, ncurses or slang library])
1800AM_CONDITIONAL([BUILD_IRQTOP], [test "x$build_irqtop" = xyes])
1801
1802AC_ARG_ENABLE([lsirq],
1803  AS_HELP_STRING([--disable-lsirq], [do not build lsirq]),
1804  [], [UL_DEFAULT_ENABLE([lsirq], [check])]
1805)
1806UL_BUILD_INIT([lsirq])
1807UL_REQUIRES_LINUX([lsirq])
1808UL_REQUIRES_BUILD([lsirq], [libsmartcols])
1809AM_CONDITIONAL([BUILD_LSIRQ], [test "x$build_lsirq" = xyes])
1810
1811
1812UL_BUILD_INIT([choom], [check])
1813UL_REQUIRES_LINUX([choom])
1814AM_CONDITIONAL([BUILD_CHOOM], [test "x$build_choom" = xyes])
1815
1816UL_BUILD_INIT([lsipc], [check])
1817UL_REQUIRES_LINUX([lsipc])
1818UL_REQUIRES_BUILD([lsipc], [libsmartcols])
1819AM_CONDITIONAL([BUILD_LSIPC], [test "x$build_lsipc" = xyes])
1820
1821UL_BUILD_INIT([lsns], [check])
1822UL_REQUIRES_LINUX([lsns])
1823UL_REQUIRES_BUILD([lsns], [libsmartcols])
1824UL_REQUIRES_BUILD([lsns], [libmount])
1825AM_CONDITIONAL([BUILD_LSNS], [test "x$build_lsns" = xyes])
1826
1827UL_BUILD_INIT([renice], [yes])
1828AM_CONDITIONAL([BUILD_RENICE], [test "x$build_renice" = xyes])
1829
1830
1831AC_ARG_ENABLE([rfkill],
1832  AS_HELP_STRING([--disable-rfkill], [do not build rfkill]),
1833  [], [UL_DEFAULT_ENABLE([rfkill], [check])]
1834)
1835UL_BUILD_INIT([rfkill])
1836UL_REQUIRES_LINUX([rfkill])
1837UL_REQUIRES_BUILD([rfkill], [libsmartcols])
1838AM_CONDITIONAL([BUILD_RFKILL], [test "x$build_rfkill" = xyes])
1839
1840
1841UL_BUILD_INIT([setsid], [yes])
1842AM_CONDITIONAL([BUILD_SETSID], [test "x$build_setsid" = xyes])
1843
1844UL_BUILD_INIT([readprofile], [check])
1845UL_REQUIRES_LINUX([readprofile])
1846AM_CONDITIONAL([BUILD_READPROFILE], [test "x$build_readprofile" = xyes])
1847
1848UL_BUILD_INIT([dmesg], [check])
1849UL_REQUIRES_LINUX([dmesg])
1850AM_CONDITIONAL([BUILD_DMESG], [test "x$build_dmesg" = xyes])
1851
1852UL_BUILD_INIT([ctrlaltdel], [check])
1853UL_REQUIRES_LINUX([ctrlaltdel])
1854dnl we assume reboot() to be the 1-argument variant, because even considering
1855dnl widely used alternative C libraries like uclibc, dietlibc and musl,
1856dnl reboot() with multiple arguments is yet only found in glibc versions
1857dnl earlier than 2.x.
1858UL_REQUIRES_HAVE([ctrlaltdel], [reboot], [reboot function])
1859AM_CONDITIONAL([BUILD_CTRLALTDEL], [test "x$build_ctrlaltdel" = xyes])
1860
1861UL_BUILD_INIT([fincore], [check])
1862UL_REQUIRES_LINUX([fincore])
1863UL_REQUIRES_BUILD([fincore], [libsmartcols])
1864AM_CONDITIONAL([BUILD_FINCORE], [test "x$build_fincore" = xyes])
1865
1866UL_BUILD_INIT([fsfreeze], [check])
1867UL_REQUIRES_LINUX([fsfreeze])
1868AM_CONDITIONAL([BUILD_FSFREEZE], [test "x$build_fsfreeze" = xyes])
1869
1870UL_BUILD_INIT([blkdiscard], [check])
1871UL_REQUIRES_LINUX([blkdiscard])
1872AM_CONDITIONAL([BUILD_BLKDISCARD], [test "x$build_blkdiscard" = xyes])
1873
1874UL_BUILD_INIT([blkzone], [check])
1875UL_REQUIRES_LINUX([blkzone])
1876UL_REQUIRES_HAVE([blkzone], [linux_blkzoned_h], [linux/blkzoned.h header])
1877AM_CONDITIONAL([BUILD_BLKZONE], [test "x$build_blkzone" = xyes])
1878
1879UL_BUILD_INIT([ldattach], [check])
1880UL_REQUIRES_LINUX([ldattach])
1881AM_CONDITIONAL([BUILD_LDATTACH], [test "x$build_ldattach" = xyes])
1882
1883UL_BUILD_INIT([rtcwake], [check])
1884UL_REQUIRES_LINUX([rtcwake])
1885AM_CONDITIONAL([BUILD_RTCWAKE], [test "x$build_rtcwake" = xyes])
1886
1887UL_BUILD_INIT([setarch], [check])
1888UL_REQUIRES_LINUX([setarch])
1889AM_CONDITIONAL([BUILD_SETARCH], [test "x$build_setarch" = xyes])
1890
1891UL_BUILD_INIT([script], [check])
1892UL_REQUIRES_HAVE([script], [pty])
1893AM_CONDITIONAL([BUILD_SCRIPT], [test "x$build_script" = xyes])
1894
1895UL_BUILD_INIT([scriptreplay], [yes])
1896AM_CONDITIONAL([BUILD_SCRIPTREPLAY], [test "x$build_scriptreplay" = xyes])
1897
1898UL_BUILD_INIT([scriptlive], [check])
1899UL_REQUIRES_HAVE([scriptlive], [pty])
1900AM_CONDITIONAL([BUILD_SCRIPTLIVE], [test "x$build_scriptlive" = xyes])
1901
1902UL_BUILD_INIT([col], [yes])
1903AM_CONDITIONAL([BUILD_COL], [test "x$build_col" = xyes])
1904
1905UL_BUILD_INIT([colcrt], [yes])
1906AM_CONDITIONAL([BUILD_COLCRT], [test "x$build_colcrt" = xyes])
1907
1908UL_BUILD_INIT([colrm], [yes])
1909AM_CONDITIONAL([BUILD_COLRM], [test "x$build_colrm" = xyes])
1910
1911UL_BUILD_INIT([column], [check])
1912UL_REQUIRES_BUILD([column], [libsmartcols])
1913AM_CONDITIONAL([BUILD_COLUMN], [test "x$build_column" = xyes])
1914
1915UL_BUILD_INIT([hexdump], [yes])
1916AM_CONDITIONAL([BUILD_HEXDUMP], [test "x$build_hexdump" = xyes])
1917
1918UL_BUILD_INIT([rev], [yes])
1919AM_CONDITIONAL([BUILD_REV], [test "x$build_rev" = xyes])
1920
1921
1922AC_ARG_ENABLE([tunelp],
1923  AS_HELP_STRING([--enable-tunelp], [build tunelp]),
1924  [], [UL_DEFAULT_ENABLE([tunelp], [no])]
1925)
1926UL_BUILD_INIT([tunelp])
1927UL_REQUIRES_LINUX([tunelp])
1928AM_CONDITIONAL([BUILD_TUNELP], [test "x$build_tunelp" = xyes])
1929
1930
1931AC_ARG_ENABLE([kill],
1932  AS_HELP_STRING([--disable-kill], [do not build kill]),
1933  [], [UL_DEFAULT_ENABLE([kill], [check])]
1934)
1935UL_BUILD_INIT([kill])
1936UL_REQUIRES_LINUX([kill])
1937AM_CONDITIONAL([BUILD_KILL], [test "x$build_kill" = xyes])
1938
1939
1940AC_ARG_ENABLE([last],
1941  AS_HELP_STRING([--disable-last], [do not build last]),
1942  [], [UL_DEFAULT_ENABLE([last], [check])]
1943)
1944UL_BUILD_INIT([last])
1945UL_REQUIRES_HAVE([last], [utmpx_h], [utmpx.h header])
1946UL_REQUIRES_HAVE([last], [gnu_utmpx], [GNU utmpx functions])
1947AM_CONDITIONAL([BUILD_LAST], [test "x$build_last" = xyes])
1948
1949
1950AC_ARG_ENABLE([utmpdump],
1951  AS_HELP_STRING([--disable-utmpdump], [do not build utmpdump]),
1952  [], [UL_DEFAULT_ENABLE([utmpdump], [check])]
1953)
1954UL_BUILD_INIT([utmpdump])
1955UL_REQUIRES_HAVE([utmpdump], [utmpx_h], [utmpx.h header])
1956UL_REQUIRES_HAVE([utmpdump], [gnu_utmpx], [GNU utmpx functions])
1957AM_CONDITIONAL([BUILD_UTMPDUMP], [test "x$build_utmpdump" = xyes])
1958
1959
1960AC_ARG_ENABLE([line],
1961  AS_HELP_STRING([--enable-line], [build line]),
1962  [], [UL_DEFAULT_ENABLE([line], [no])]
1963)
1964UL_BUILD_INIT([line])
1965AM_CONDITIONAL([BUILD_LINE], [test "x$build_line" = xyes])
1966
1967
1968AC_ARG_ENABLE([mesg],
1969  AS_HELP_STRING([--disable-mesg], [do not build mesg]),
1970  [], [UL_DEFAULT_ENABLE([mesg], [yes])]
1971)
1972UL_BUILD_INIT([mesg])
1973AM_CONDITIONAL([BUILD_MESG], [test "x$build_mesg" = xyes])
1974
1975
1976AC_ARG_ENABLE([raw],
1977  AS_HELP_STRING([--disable-raw], [do not build raw]),
1978  [], [UL_DEFAULT_ENABLE([raw], [check])]
1979)
1980UL_BUILD_INIT([raw])
1981UL_REQUIRES_LINUX([raw])
1982UL_REQUIRES_HAVE([raw], [linux_raw_h], [raw.h header file])
1983AM_CONDITIONAL([BUILD_RAW], [test "x$build_raw" = xyes])
1984
1985
1986AC_ARG_ENABLE([rename],
1987  AS_HELP_STRING([--disable-rename], [do not build rename]),
1988  [], [UL_DEFAULT_ENABLE([rename], [yes])]
1989)
1990UL_BUILD_INIT([rename])
1991AM_CONDITIONAL([BUILD_RENAME], [test "x$build_rename" = xyes])
1992
1993
1994AC_ARG_ENABLE([vipw],
1995  AS_HELP_STRING([--enable-vipw], [build vipw]),
1996  [], [UL_DEFAULT_ENABLE([vipw], [no])]
1997)
1998UL_BUILD_INIT([vipw])
1999UL_REQUIRES_HAVE([vipw], [shadow_h], [shadow.h header])
2000AM_CONDITIONAL([BUILD_VIPW], [test "x$build_vipw" = xyes])
2001
2002
2003AC_ARG_ENABLE([newgrp],
2004  AS_HELP_STRING([--enable-newgrp], [build newgrp]),
2005  [], [UL_DEFAULT_ENABLE([newgrp], [no])]
2006)
2007UL_BUILD_INIT([newgrp])
2008UL_REQUIRES_HAVE([newgrp], [crypt], [crypt function])
2009AM_CONDITIONAL([BUILD_NEWGRP], [test "x$build_newgrp" = xyes])
2010
2011
2012AC_ARG_WITH([user], AS_HELP_STRING([--without-user], [compile without libuser (remote chsh)]),
2013  [], [with_user=check]
2014)
2015have_user=no
2016AS_IF([test "x$with_user" != xno], [
2017  PKG_CHECK_MODULES(LIBUSER,[libuser >= 0.58], [have_user=yes], [have_user=no])
2018  AS_CASE([$with_user:$have_user],
2019    [yes:no],
2020      [AC_MSG_ERROR([user selected but libuser not found])],
2021    [*:yes],
2022      [AC_DEFINE([HAVE_LIBUSER], [1], [Define if libuser is available])]
2023  )
2024  # temporary solution, libuser has stupid .pc where are exported all
2025  # private dependencies to Requires: instead of Requires.private:
2026  AS_IF([test "x$have_user" = xyes], [
2027    LIBUSER_LIBS=-luser
2028  ])
2029])
2030AM_CONDITIONAL([HAVE_USER], [test "x$have_user" = xyes])
2031
2032AC_ARG_ENABLE([chfn-chsh-password],
2033  AS_HELP_STRING([--disable-chfn-chsh-password], [do not require the user to enter the password in chfn and chsh]),
2034  [], [enable_chfn_chsh_password=yes]
2035)
2036
2037AC_ARG_ENABLE([chfn-chsh],
2038  AS_HELP_STRING([--disable-chfn-chsh], [do not build chfn and chsh]),
2039  [], [UL_DEFAULT_ENABLE([chfn_chsh], [check])]
2040)
2041UL_BUILD_INIT([chfn_chsh])
2042UL_REQUIRES_HAVE([chfn_chsh], [shadow_h], [shadow.h header])
2043UL_REQUIRES_HAVE([chfn_chsh], [getusershell], [getusershell function])
2044
2045AS_IF([test "x$enable_chfn_chsh_password" = xyes -o "x$have_user" = xyes], [
2046  UL_REQUIRES_HAVE([chfn_chsh], [security_pam_appl_h], [PAM header file])
2047  AC_DEFINE([CHFN_CHSH_PASSWORD], [1], [Should chfn and chsh require the user to enter the password?])
2048])
2049AM_CONDITIONAL([BUILD_CHFN_CHSH], [test "x$build_chfn_chsh" = xyes])
2050AM_CONDITIONAL([CHFN_CHSH_PASSWORD], [test "x$enable_chfn_chsh_password" = xyes])
2051
2052AC_ARG_ENABLE([chsh-only-listed],
2053  AS_HELP_STRING([--disable-chsh-only-listed], [chsh: allow shells not in /etc/shells]),
2054  [], enable_chsh_only_listed=yes
2055)
2056
2057AS_IF([test "x$enable_chsh_only_listed" = xyes], [
2058  AC_DEFINE([ONLY_LISTED_SHELLS], [1], [Should chsh allow only shells in /etc/shells?])
2059])
2060
2061
2062AC_ARG_ENABLE([login],
2063  AS_HELP_STRING([--disable-login], [do not build login]),
2064  [], [UL_DEFAULT_ENABLE([login], [check])]
2065)
2066UL_BUILD_INIT([login])
2067UL_REQUIRES_HAVE([login], [security_pam_appl_h], [PAM header file])
2068UL_REQUIRES_HAVE([login], [security_pam_misc_h, security_openpam_h], [PAM conversation functions])
2069UL_REQUIRES_HAVE([login], [utmpx_h], [utmpx.h header])
2070UL_REQUIRES_HAVE([login], [gnu_utmpx], [GNU utmpx functions])
2071AM_CONDITIONAL([BUILD_LOGIN], [test "x$build_login" = xyes])
2072
2073AC_ARG_ENABLE([login-chown-vcs],
2074  AS_HELP_STRING([--enable-login-chown-vcs], [let login chown /dev/vcsN]),
2075  [], [enable_login_chown_vcs=no]
2076)
2077
2078AS_IF([test "x$enable_login_chown_vcs" = xyes], [
2079  AC_DEFINE([LOGIN_CHOWN_VCS], [1], [Should login chown /dev/vcsN?])
2080])
2081
2082AC_ARG_ENABLE([login-stat-mail],
2083  AS_HELP_STRING([--enable-login-stat-mail], [let login stat() the mailbox]),
2084  [], [enable_login_stat_mail=no]
2085)
2086
2087AS_IF([test "x$enable_login_stat_mail" = xyes], [
2088  AC_DEFINE([LOGIN_STAT_MAIL], [1], [Should login stat() the mailbox?])
2089])
2090
2091
2092AC_ARG_ENABLE([nologin],
2093  AS_HELP_STRING([--disable-nologin], [do not build nologin]),
2094  [], [UL_DEFAULT_ENABLE([nologin], [yes])]
2095)
2096UL_BUILD_INIT([nologin])
2097AM_CONDITIONAL([BUILD_NOLOGIN], [test "x$build_nologin" = xyes])
2098
2099
2100AC_ARG_ENABLE([sulogin],
2101  AS_HELP_STRING([--disable-sulogin], [do not build sulogin]),
2102  [], [UL_DEFAULT_ENABLE([sulogin], [check])]
2103)
2104UL_BUILD_INIT([sulogin])
2105UL_REQUIRES_HAVE([sulogin], [crypt], [crypt function])
2106UL_REQUIRES_HAVE([sulogin], [shadow_h], [shadow.h header])
2107AM_CONDITIONAL([BUILD_SULOGIN], [test "x$build_sulogin" = xyes])
2108
2109
2110AC_ARG_ENABLE([su],
2111  AS_HELP_STRING([--disable-su], [do not build su]),
2112  [], [UL_DEFAULT_ENABLE([su], [check])]
2113)
2114UL_BUILD_INIT([su])
2115UL_REQUIRES_HAVE([su], [security_pam_appl_h], [PAM header file])
2116UL_REQUIRES_HAVE([su], [utmpx_h], [utmpx.h header])
2117UL_REQUIRES_HAVE([su], [gnu_utmpx], [GNU utmpx functions])
2118AM_CONDITIONAL([BUILD_SU], [test "x$build_su" = xyes])
2119
2120
2121AC_ARG_ENABLE([runuser],
2122  AS_HELP_STRING([--disable-runuser], [do not build runuser]),
2123  [], [UL_DEFAULT_ENABLE([runuser], [check])]
2124)
2125UL_BUILD_INIT([runuser])
2126UL_REQUIRES_HAVE([runuser], [security_pam_appl_h], [PAM header file])
2127UL_REQUIRES_HAVE([runuser], [utmpx_h], [utmpx.h header])
2128UL_REQUIRES_HAVE([runuser], [gnu_utmpx], [GNU utmpx functions])
2129AM_CONDITIONAL([BUILD_RUNUSER], [test "x$build_runuser" = xyes])
2130
2131
2132AC_ARG_ENABLE([ul],
2133  AS_HELP_STRING([--disable-ul], [do not build ul]),
2134  [], [UL_DEFAULT_ENABLE([ul], [check])]
2135)
2136UL_BUILD_INIT([ul])
2137UL_REQUIRES_HAVE([ul], [ncursesw, ncurses], [ncursesw or ncurses libraries])
2138AM_CONDITIONAL([BUILD_UL], [test "x$build_ul" = xyes])
2139
2140
2141AC_ARG_ENABLE([more],
2142  AS_HELP_STRING([--disable-more], [do not build more]),
2143  [], [UL_DEFAULT_ENABLE([more], [check])]
2144)
2145UL_BUILD_INIT([more])
2146UL_REQUIRES_HAVE([more], [ncursesw, ncurses], [ncursesw or ncurses libraries])
2147UL_REQUIRES_LINUX([more])
2148AM_CONDITIONAL([BUILD_MORE], [test "x$build_more" = xyes])
2149
2150
2151AC_ARG_ENABLE([pg],
2152  AS_HELP_STRING([--enable-pg], [build pg]),
2153  [], [UL_DEFAULT_ENABLE([pg], [no])]
2154)
2155UL_BUILD_INIT([pg])
2156UL_REQUIRES_HAVE([pg], [ncursesw, ncurses], [ncursesw or ncurses library])
2157AM_CONDITIONAL([BUILD_PG], [test "x$build_pg" = xyes])
2158
2159
2160AC_ARG_ENABLE([setterm],
2161  AS_HELP_STRING([--disable-setterm], [do not build setterm]),
2162  [], [UL_DEFAULT_ENABLE([setterm], [check])]
2163)
2164UL_BUILD_INIT([setterm])
2165UL_REQUIRES_LINUX([setterm])
2166UL_REQUIRES_HAVE([setterm], [ncursesw, ncurses], [ncursesw or ncurses library])
2167AM_CONDITIONAL([BUILD_SETTERM], [test "x$build_setterm" = xyes])
2168
2169# build_schedutils= is just configure-only variable to control
2170# ionice, taskset and chrt
2171AC_ARG_ENABLE([schedutils],
2172  AS_HELP_STRING([--disable-schedutils], [do not build chrt, ionice, taskset]),
2173  [], [UL_DEFAULT_ENABLE([schedutils], [check])]
2174)
2175
2176
2177UL_ENABLE_ALIAS([ionice], [schedutils])
2178UL_BUILD_INIT([ionice])
2179UL_REQUIRES_SYSCALL_CHECK([ionice],
2180	[UL_CHECK_SYSCALL([ioprio_set],
2181	  [alpha],	[442],
2182	  [i*86],	[289],
2183	  [ia64*],	[1274],
2184	  [powerpc*],	[273],
2185	  [s390*],	[282],
2186	  [sparc*],	[196],
2187	  [sh*],	[288],
2188	  [x86_64*],	[251])],
2189	[ioprio_set])
2190
2191UL_REQUIRES_SYSCALL_CHECK([ionice],
2192	[UL_CHECK_SYSCALL([ioprio_get],
2193	  [alpha],	[443],
2194	  [i*86],	[290],
2195	  [ia64*],	[1275],
2196	  [powerpc*],	[274],
2197	  [s390*],	[283],
2198	  [sparc*],	[218],
2199	  [sh*],	[289],
2200	  [x86_64*],	[252])],
2201	[ioprio_get])
2202
2203AM_CONDITIONAL([BUILD_IONICE], [test "x$build_ionice" = xyes])
2204
2205
2206UL_ENABLE_ALIAS([taskset], [schedutils])
2207UL_BUILD_INIT([taskset])
2208UL_REQUIRES_HAVE([taskset], [cpu_set_t], [cpu_set_t type])
2209UL_REQUIRES_SYSCALL_CHECK([taskset],
2210	[UL_CHECK_SYSCALL([sched_getaffinity])],
2211	[sched_getaffinity])
2212AM_CONDITIONAL([BUILD_TASKSET], [test "x$build_taskset" = xyes])
2213
2214
2215have_schedsetter=no
2216AS_IF([test "x$ac_cv_func_sched_setscheduler" = xyes], [have_schedsetter=yes],
2217      [test "x$ac_cv_func_sched_setattr" = xyes], [have_schedsetter=yes])
2218
2219UL_ENABLE_ALIAS([chrt], [schedutils])
2220UL_BUILD_INIT([chrt])
2221UL_REQUIRES_HAVE([chrt], [schedsetter], [sched_set functions])
2222AM_CONDITIONAL([BUILD_CHRT], [test "x$build_chrt" = xyes])
2223
2224AS_IF([test "x$build_chrt" = xyes], [
2225	UL_CHECK_SYSCALL([sched_setattr])
2226])
2227
2228
2229AC_ARG_ENABLE([wall],
2230  AS_HELP_STRING([--disable-wall], [do not build wall]),
2231  [], [UL_DEFAULT_ENABLE([wall], [check])]
2232)
2233UL_BUILD_INIT([wall])
2234UL_REQUIRES_HAVE([wall], [utmpx_h], [utmpx.h header])
2235AM_CONDITIONAL([BUILD_WALL], [test "x$build_wall" = xyes])
2236
2237
2238AC_ARG_ENABLE([write],
2239  AS_HELP_STRING([--enable-write], [build write]),
2240  [], [UL_DEFAULT_ENABLE([write], [no])]
2241)
2242UL_BUILD_INIT([write])
2243UL_REQUIRES_HAVE([write], [utmpx_h], [utmpx.h header])
2244UL_REQUIRES_HAVE([write], [gnu_utmpx], [GNU utmpx functions])
2245AM_CONDITIONAL([BUILD_WRITE], [test "x$build_write" = xyes])
2246
2247
2248AC_ARG_WITH([btrfs],
2249  AS_HELP_STRING([--without-btrfs], [do not build with btrfs support]),
2250  [], [with_btrfs=check]
2251)
2252have_btrfs=no
2253AS_IF([test "x$with_btrfs" != xno], [
2254  AS_CASE([$with_btrfs:$have_linux_btrfs_h],
2255    [yes:no],
2256    [AC_MSG_ERROR([btrfs selected but linux/btrfs.h not found])],
2257    [check:no],
2258       [AC_MSG_WARN([linux/btrfs.h not found, do not build with btrfs support])],
2259    [*:yes],
2260       [have_btrfs=yes
2261	AC_DEFINE([HAVE_BTRFS_SUPPORT], [1], [Define if btrfs stuff is available])]
2262  )
2263])
2264AM_CONDITIONAL([HAVE_BTRFS], [test "x$have_btrfs" = xyes])
2265
2266
2267AC_ARG_WITH([systemd],
2268  AS_HELP_STRING([--without-systemd], [do not build with systemd support]),
2269  [], [with_systemd=check]
2270)
2271
2272have_systemd=no
2273AS_IF([test "x$with_systemd" != xno], [
2274  # new version -- all libsystemd-* libs merged into libsystemd
2275  PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [have_systemd=yes], [have_systemd=no])
2276  # old versions
2277  AS_IF([test "x$have_systemd" != "xyes"], [
2278    PKG_CHECK_MODULES([SYSTEMD_DAEMON], [libsystemd-daemon],
2279		      [have_systemd_daemon=yes], [have_systemd_daemon=no])
2280    PKG_CHECK_MODULES([SYSTEMD_JOURNAL], [libsystemd-journal],
2281		      [have_systemd_journal=yes], [have_systemd_journal=no])
2282    AS_IF([test "x$have_systemd_daemon" = "xyes" -a "x$have_systemd_journal" = "xyes" ],[
2283	   have_systemd=yes])
2284  ])
2285  AS_CASE([$with_systemd:$have_systemd],
2286    [yes:no],
2287      [AC_MSG_ERROR([systemd expected but libsystemd not found])],
2288    [*:yes],
2289       AC_DEFINE([HAVE_LIBSYSTEMD], [1], [Define if libsystemd is available])
2290  )
2291])
2292AM_CONDITIONAL([HAVE_SYSTEMD], [test "x$have_systemd" = xyes])
2293
2294
2295AC_ARG_WITH([systemdsystemunitdir],
2296  AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [directory for systemd unit files (requires systemd support)]),
2297  [], [with_systemdsystemunitdir=check]
2298)
2299AS_IF([test "x$with_systemdsystemunitdir" = xcheck], [
2300  AS_IF([test "x$have_systemd" = xyes], [
2301    with_systemdsystemunitdir=`$PKG_CONFIG --variable=systemdsystemunitdir systemd`
2302  ],[
2303    with_systemdsystemunitdir=no
2304  ])
2305])
2306AS_IF([test "x$with_systemdsystemunitdir" != "xno"], [
2307  AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
2308])
2309
2310
2311AC_ARG_WITH([smack],
2312  AS_HELP_STRING([--with-smack], [build with SMACK support]),
2313  [], [with_smack=no]
2314)
2315AS_IF([test "x$with_smack" = xyes], [
2316  AC_DEFINE([HAVE_SMACK], [1], [Add SMACK support])
2317])
2318
2319AC_ARG_WITH([econf],
2320  AS_HELP_STRING([--without-econf], [do not use libeconf]),
2321  [], [with_econf=check]
2322)
2323
2324have_econf=no
2325AS_IF([test "x$with_econf" != xno], [
2326  PKG_CHECK_MODULES([ECONF], [libeconf], [have_econf=yes], [have_econf=no])
2327    AS_CASE([$with_econf:$have_econf],
2328    [yes:no],
2329      [AC_MSG_ERROR([libeconf expected but libeconf not found])],
2330    [*:yes],
2331       AC_DEFINE([HAVE_LIBECONF], [1], [Define if libeconf is available])
2332  )
2333])
2334AM_CONDITIONAL([HAVE_ECONF], [test "x$have_econf" = xyes])
2335
2336AC_ARG_WITH([vendordir],
2337  AS_HELP_STRING([--with-vendordir=DIR], [Direcotry for distribution provided configuration files]),
2338  [], []
2339)
2340AC_SUBST([vendordir], [$with_vendordir])
2341AM_CONDITIONAL([USE_VENDORDIR], [test "x$with_vendordir" != x])
2342AS_IF([test "x$with_vendordir" != x], [
2343  AC_DEFINE([USE_VENDORDIR], [1], [Define to 1 to use vendordir])
2344])
2345
2346
2347AC_ARG_WITH([bashcompletiondir],
2348  AS_HELP_STRING([--with-bashcompletiondir=DIR], [Bash completions directory]),
2349  [],
2350  [AS_IF([`$PKG_CONFIG --exists bash-completion`], [
2351    with_bashcompletiondir=`$PKG_CONFIG --variable=completionsdir bash-completion`
2352  ], [
2353    with_bashcompletiondir=${datadir}/bash-completion/completions
2354  ])
2355])
2356AC_SUBST([bashcompletiondir], [$with_bashcompletiondir])
2357
2358AC_ARG_ENABLE([bash-completion],
2359  AS_HELP_STRING([--disable-bash-completion], [do not install bash completion files]),
2360  [], [enable_bash_completion=yes]
2361)
2362
2363AM_CONDITIONAL([BUILD_BASH_COMPLETION], [test "x$enable_bash_completion" = xyes])
2364
2365
2366AC_ARG_WITH([python],
2367  AS_HELP_STRING([--without-python], [do not build python bindings, use --with-python={2,3} to force version]),
2368  [], [with_python=check withval=check]
2369)
2370
2371have_python=no
2372have_libpython=no
2373AS_IF([test "x$with_python" != xno], [
2374  # We follow distributions default and look for PKG module name "python"
2375  # (minimal version is 2) but if major version is explicitly specified by
2376  # --with-python=2 or --with-python=3 then we look for PKG module "python2" or
2377  # "python3".
2378  AS_IF([test "x$withval" != xno -a "x$withval" != xyes -a "x$withval" != xcheck],
2379	[pymajor="$withval"; PYTHON=python${pymajor}], [pymajor="2"])
2380
2381  # check for python interpreter
2382  AM_PATH_PYTHON([$pymajor], [have_python=yes], [have_python=no])
2383  AS_CASE([$with_python:$have_python],
2384    [yes:no],
2385      [AC_MSG_ERROR([python selected but python interpreter not found])],
2386    [check:no],
2387       [AC_MSG_WARN([python interpreter not found, do not build python bindings])],
2388    [*:yes],
2389       # check for python development stuff
2390       [PKG_CHECK_MODULES([PYTHON], [python-$PYTHON_VERSION],
2391			  [have_libpython=yes], [have_libpython=no])]
2392  )
2393])
2394
2395
2396AC_ARG_ENABLE([pylibmount],
2397  AS_HELP_STRING([--disable-pylibmount], [do not build pylibmount]),
2398  [], [UL_DEFAULT_ENABLE([pylibmount], [check])]
2399)
2400UL_BUILD_INIT([pylibmount])
2401UL_REQUIRES_HAVE([pylibmount], [libpython], [libpython])
2402UL_REQUIRES_BUILD([pylibmount], [libmount])
2403AM_CONDITIONAL([BUILD_PYLIBMOUNT], [test "x$build_pylibmount" = "xyes"])
2404
2405# We need to introduce a verbatim dependency into the Makefile, without automake
2406# trying to interpret it, so push it as a AM_SUBST_NOTMAKE variable.
2407verbatim_pylibmount_dependency='
2408
2409# pylibmountexec module must be installed after usrlib_exec libraries,
2410# otherwise the libtool relink step will fail to find libmount.la and
2411# will try -lmount which is possibly not available.
2412install-pylibmountexecLTLIBRARIES: install-usrlib_execLTLIBRARIES
2413
2414'
2415AC_SUBST([verbatim_pylibmount_dependency])
2416AM_SUBST_NOTMAKE([verbatim_pylibmount_dependency])
2417
2418AC_ARG_ENABLE([pg-bell],
2419  AS_HELP_STRING([--disable-pg-bell], [let pg not ring the bell on invalid keys]),
2420  [], [enable_pg_bell=yes]
2421)
2422
2423AS_IF([test "x$enable_pg_bell" = xyes], [
2424  AC_DEFINE([PG_BELL], [1], [Should pg ring the bell on invalid keys?])
2425])
2426
2427
2428AC_DEFUN([FS_PATHS_DEFAULT], [/sbin:/sbin/fs.d:/sbin/fs])
2429AC_ARG_ENABLE([fs-paths-default],
2430  AS_HELP_STRING([--enable-fs-paths-default=paths], [default search path for fs helpers @<:@FS_PATHS_DEFAULT@:>@]),
2431  [AS_CASE([$enableval],
2432    [yes], [fs_paths_defaults="FS_PATHS_DEFAULT"],
2433    [no],  [fs_paths_defaults=""],
2434    [fs_paths_defaults="$enableval"]
2435  )],
2436  [fs_paths_defaults="FS_PATHS_DEFAULT"]
2437)
2438AC_ARG_ENABLE([fs-paths-extra],
2439  AS_HELP_STRING([--enable-fs-paths-extra=paths], [additional search paths for fs helpers]),
2440  [AS_CASE([$enableval],
2441     [yes|no], [fs_paths_extra=""],
2442     [fs_paths_extra="$enableval"]
2443  )],
2444  [fs_paths_extra=""]
2445)
2446fs_paths="$fs_paths_defaults"
2447AS_IF([test "x$fs_paths_extra" != "x"], [
2448  AS_IF([test "x$fs_paths" != "x"], [
2449    fs_paths="${fs_paths}:"
2450  ])
2451  fs_paths="${fs_paths}${fs_paths_extra}"
2452])
2453AC_DEFINE_UNQUOTED([FS_SEARCH_PATH], "$fs_paths", [search path for fs helpers])
2454
2455
2456AC_ARG_ENABLE([use-tty-group],
2457  AS_HELP_STRING([--disable-use-tty-group], [do not install wall and write setgid tty]),
2458  [], [enable_use_tty_group=yes]
2459)
2460AM_CONDITIONAL([USE_TTY_GROUP], [test "x$enable_use_tty_group" = xyes])
2461
2462AS_IF([test "x$enable_use_tty_group" = xyes], [
2463  AC_DEFINE([USE_TTY_GROUP], [1], [Should wall and write be installed setgid tty?])
2464])
2465
2466
2467AC_ARG_ENABLE([sulogin-emergency-mount],
2468  AS_HELP_STRING([--enable-sulogin-emergency-mount],
2469		 [use emergency mount of /dev and /proc for sulogin]),
2470  [], [enable_sulogin_emergency_mount=no]
2471)
2472
2473AS_IF([test "x$enable_sulogin_emergency_mount" = xyes], [
2474  AC_DEFINE([USE_SULOGIN_EMERGENCY_MOUNT], [1],
2475	    [Should sulogin use a emergency mount of /dev and /proc?])
2476])
2477
2478
2479AC_ARG_ENABLE([usrdir-path],
2480  AS_HELP_STRING([--enable-usrdir-path], [use only /usr paths in PATH env. variable (recommended on systems with /bin -> /usr/bin symlinks)]),
2481  [], [enable_usrdir_path=no]
2482)
2483
2484AS_IF([test "x$enable_usrdir_path" = xyes], [
2485  AC_DEFINE([USE_USRDIR_PATHS_ONLY], [1], [Define to 1 to remove /bin and /sbin from PATH env.variable])
2486])
2487
2488
2489AC_ARG_ENABLE([makeinstall-chown],
2490  AS_HELP_STRING([--disable-makeinstall-chown], [do not do chown-like operations during "make install"]),
2491  [], [enable_makeinstall_chown=yes]
2492)
2493AM_CONDITIONAL([MAKEINSTALL_DO_CHOWN], [test "x$enable_makeinstall_chown" = xyes])
2494
2495
2496AC_ARG_ENABLE([makeinstall-setuid],
2497  AS_HELP_STRING([--disable-makeinstall-setuid], [do not do setuid chmod operations during "make install"]),
2498  [], [enable_makeinstall_setuid=yes]
2499)
2500AM_CONDITIONAL([MAKEINSTALL_DO_SETUID], [test "x$enable_makeinstall_setuid" = xyes])
2501
2502
2503AC_ARG_ENABLE([colors-default],
2504  AS_HELP_STRING([--disable-colors-default], [do not colorize output from utils by default]),
2505  [], [enable_colors_default=yes]
2506)
2507AS_IF([test "x$enable_colors_default" = xyes], [
2508  AC_DEFINE([USE_COLORS_BY_DEFAULT], [1], [Enables colorized output from utils by default])
2509])
2510
2511
2512AC_ARG_WITH([cryptsetup],
2513  AS_HELP_STRING([--with-cryptsetup], [compile with cryptsetup support]),
2514  [], [with_cryptsetup=no]
2515)
2516
2517AS_IF([test "x$with_cryptsetup" = xno], [
2518  AM_CONDITIONAL([HAVE_CRYPTSETUP], [false])
2519  AM_CONDITIONAL([CRYPTSETUP_VIA_DLOPEN], [false])
2520], [
2521  PKG_CHECK_MODULES([CRYPTSETUP], [libcryptsetup],
2522	[AC_DEFINE([HAVE_CRYPTSETUP], [1], [Define if cryptsetup is available])
2523	 UL_PKG_STATIC([CRYPTSETUP_LIBS_STATIC], [libcryptsetup])
2524	 AM_CONDITIONAL([HAVE_CRYPTSETUP], [true])
2525	 SAVE_CFLAGS="$CFLAGS"
2526	 CFLAGS="$CRYPTSETUP_CFLAGS $CFLAGS"
2527	 SAVE_LIBS="$LIBS"
2528	 LIBS="$CRYPTSETUP_LIBS $LIBS"
2529	 AC_CHECK_LIB([cryptsetup], [crypt_activate_by_signed_key], [
2530	  AC_DEFINE_UNQUOTED([HAVE_CRYPT_ACTIVATE_BY_SIGNED_KEY], [1], [Define if crypt_activate_by_signed_key exist in -lcryptsetup])
2531	 ])
2532	 AS_IF([test "x$with_cryptsetup" = xdlopen], [
2533	  LIBS="-ldl $LIBS"
2534	  AC_CHECK_LIB([dl], [dlsym], [
2535	    AC_DEFINE([CRYPTSETUP_VIA_DLOPEN], [1], [Define if cryptsetup is to be loaded via dlopen])
2536	    AM_CONDITIONAL([CRYPTSETUP_VIA_DLOPEN], [true])
2537	   ], [AC_MSG_ERROR([libdl required to build with cryptsetup support])])
2538	 ], [
2539	  AM_CONDITIONAL([CRYPTSETUP_VIA_DLOPEN], [false])
2540	 ])
2541	 CFLAGS="$SAVE_CFLAGS"
2542	 LIBS="$SAVE_LIBS"
2543	 have_cryptsetup=yes],
2544	[have_cryptsetup=no
2545   AM_CONDITIONAL([HAVE_CRYPTSETUP], [false])
2546   AM_CONDITIONAL([CRYPTSETUP_VIA_DLOPEN], [false])
2547  ])
2548
2549  AS_CASE([$with_cryptsetup:$have_cryptsetup],
2550    [yes:no], [AC_MSG_WARN([cryptsetup selected but libcryptsetup not found])]
2551  )
2552])
2553AC_SUBST([CRYPTSETUP_LIBS])
2554AC_SUBST([CRYPTSETUP_LIBS_STATIC])
2555
2556
2557AC_ARG_VAR([SUID_CFLAGS],
2558	   [CFLAGS used for binaries which are usually with the suid bit])
2559AC_ARG_VAR([SUID_LDFLAGS],
2560	   [LDFLAGS used for binaries which are usually with the suid bit])
2561
2562AC_ARG_VAR([DAEMON_CFLAGS],
2563	   [CFLAGS used for binaries which are usually executed as daemons])
2564AC_ARG_VAR([DAEMON_LDFLAGS],
2565	   [LDFLAGS used for binaries which are usually executed as daemons])
2566
2567AC_ARG_VAR([SOLIB_CFLAGS],
2568	   [CFLAGS used for shared libraries])
2569AC_ARG_VAR([SOLIB_LDFLAGS],
2570	   [LDFLAGS used for shared libraries])
2571
2572AC_ARG_VAR([ADJTIME_PATH],
2573	   [Path to hwclock adjtime file, default /etc/adjtime])
2574AS_IF([test "x$ADJTIME_PATH" = x], [ADJTIME_PATH="/etc/adjtime"])
2575AC_DEFINE_UNQUOTED([CONFIG_ADJTIME_PATH], "$ADJTIME_PATH", [Path to hwclock adjtime file])
2576
2577
2578LIBS=""
2579
2580
2581AC_CONFIG_HEADERS([config.h])
2582
2583#
2584# Don't use configure.ac to replace install paths! See Makefile PATHFILES for
2585# more details.
2586#
2587AC_CONFIG_FILES([
2588Makefile
2589libblkid/docs/Makefile
2590libblkid/docs/version.xml
2591libblkid/src/blkid.h
2592libfdisk/docs/Makefile
2593libfdisk/docs/version.xml
2594libfdisk/src/libfdisk.h
2595libmount/docs/Makefile
2596libmount/docs/version.xml
2597libmount/src/libmount.h
2598libsmartcols/docs/Makefile
2599libsmartcols/docs/version.xml
2600libsmartcols/src/libsmartcols.h
2601po/Makefile.in
2602])
2603
2604AC_OUTPUT
2605
2606AC_MSG_RESULT([
2607	${PACKAGE}  ${VERSION}
2608
2609	prefix:            ${prefix}
2610	exec prefix:       ${exec_prefix}
2611
2612	runstatedir:       ${runstatedir}
2613	bindir:            ${bindir}
2614	sbindir:           ${sbindir}
2615	libdir:            ${libdir}
2616	includedir:        ${includedir}
2617	usrbin_execdir:    ${usrbin_execdir}
2618	usrsbin_execdir:   ${usrsbin_execdir}
2619	usrlib_execdir:    ${usrlib_execdir}
2620        vendordir:         ${with_vendordir}
2621
2622	compiler:          ${CC}
2623	cflags:            ${CFLAGS}
2624	suid cflags:       ${SUID_CFLAGS}
2625	ldflags:           ${LDFLAGS}
2626	suid ldflags:      ${SUID_LDFLAGS}
2627	ASAN enabled:      ${enable_asan}
2628
2629	Python:            ${PYTHON}
2630	Python version:    ${PYTHON_VERSION}
2631	Python libs:       ${pyexecdir}
2632
2633	Bash completions:  ${with_bashcompletiondir}
2634	Systemd support:   ${have_systemd}
2635	Systemd unitdir:   ${with_systemdsystemunitdir}
2636	libeconf support:  ${have_econf}
2637	Btrfs support:     ${have_btrfs}
2638	Wide-char support: ${build_widechar}
2639
2640	warnings:
2641
2642${WARN_CFLAGS}
2643
2644	Type 'make' or 'make <utilname>' to compile.
2645])
2646