]> git.ipfire.org Git - thirdparty/util-linux.git/blame - configure.ac
lsfd: (man) document --list-columns as the way to list columns
[thirdparty/util-linux.git] / configure.ac
CommitLineData
034d378b 1AC_INIT([util-linux],
38c75b59 2 m4_esyscmd([tools/git-version-gen .tarball-version]),
4230b2d4 3 [kzak@redhat.com], [],
033b5a52 4 [https://www.kernel.org/pub/linux/utils/util-linux/])
baf39af1 5
b0e6b25e 6
4230b2d4 7AC_PREREQ([2.64])
48d7b13a 8
034d378b 9AC_CONFIG_AUX_DIR([config])
b12991dd 10AC_CONFIG_MACRO_DIR([m4])
eaf70198 11dnl AC_USE_SYSTEM_EXTENSIONS must be called before any macros that run
4230b2d4 12dnl the compiler (like LT_INIT) to avoid autoconf errors.
eaf70198 13AC_USE_SYSTEM_EXTENSIONS
a527a360 14AM_INIT_AUTOMAKE([-Wall -Wno-portability foreign 1.10 tar-pax no-dist-gzip dist-xz subdir-objects])
48d7b13a 15
eb35c251 16m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
f06b4328 17 [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
316795fc 18m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
eb35c251 19
034d378b 20AC_CONFIG_SRCDIR([sys-utils/mount.c])
15a9b48c
SK
21AC_PREFIX_DEFAULT([/usr])
22
33b0be6d
KZ
23dnl version details from <major>.<minor>[-<suffix>]
24PACKAGE_VERSION_MAJOR=$(echo $PACKAGE_VERSION | awk -F. '{print $1}')
0f0972ac 25PACKAGE_VERSION_MINOR=$(echo $PACKAGE_VERSION | awk -F. '{
c25b7d8a 26 sub("-.*","",$2); print $2}')
c42a6d4d 27PACKAGE_VERSION_RELEASE=$(echo $PACKAGE_VERSION | awk -F. '{
c25b7d8a 28 sub("-.*","",$3); print $3 ~ /^@<:@0-9@:>@+$/ ? $3 : 0}')
a0948ffe 29
33b0be6d
KZ
30dnl libblkid version
31LIBBLKID_VERSION="$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_RELEASE"
2dccaae4 32LIBBLKID_DATE="17-May-2023"
dc2b8d87
KZ
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
a0948ffe 37
f6076f55
KZ
38dnl libuuid version
39LIBUUID_VERSION="$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_RELEASE"
dc2b8d87
KZ
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
f6076f55 44
f1cde479
KZ
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
1a4d989e
OO
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
0bb4c979
KZ
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
15a9b48c 66# Check whether exec_prefix=/usr:
9f57e6e8
SK
67AS_CASE([$exec_prefix:$prefix],
68[NONE:NONE | NONE:/usr | /usr:*],
69 [AC_MSG_NOTICE([Default --exec-prefix detected.])
17794746
KZ
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]) ])
f40e316f 73 AS_CASE([$libdir], ['${exec_prefix}/lib64'],[libdir=/lib64; AC_MSG_NOTICE([ --libdir defaults to /lib64]) ])
9f57e6e8
SK
74 ]
75)
76
3d289965
KZ
77# Check whether prefix=/usr
78AS_CASE([$prefix],
79[NONE | /usr],
80 [AC_MSG_NOTICE([Default --prefix detected.])
81 AS_CASE([$localstatedir], [NONE | '${prefix}/var' | "${prefix}"/var ],
82 [localstatedir=/var; AC_MSG_NOTICE([ --localstatedir defaults to /var])])
83 AS_CASE([$sysconfdir], [NONE | '${prefix}/etc' | "${prefix}"/etc ],
84 [sysconfdir=/etc; AC_MSG_NOTICE([ --sysconfdir defaults to /etc])])
85
86 ]
87)
8df54559
AH
88
89# default for old versions without $runstatedir
90AS_IF([test x"$runstatedir" = x], [runstatedir='${localstatedir}/run'])
91
92# our default if $localstatedir unchanged
93AS_CASE([$localstatedir:$runstatedir],
94 [NONE:'${localstatedir}/run' | /var:'${localstatedir}/run' | NONE:'/run' ],
95 [runstatedir=/run; AC_MSG_NOTICE([ --runstatedir defaults to /run])]
9f57e6e8 96)
8df54559
AH
97
98AC_SUBST([runstatedir])
07a16b9d 99
b0a0d7d5 100
996fb358 101# The original default values of {bin,sbin,lib}dir
aaf3e8f5 102usrbin_execdir='${exec_prefix}/bin'
30688dde 103AC_SUBST([usrbin_execdir])
996fb358 104
aaf3e8f5 105usrsbin_execdir='${exec_prefix}/sbin'
30688dde 106AC_SUBST([usrsbin_execdir])
996fb358 107
9f57e6e8 108AS_CASE([$libdir],
b2b61efc 109 ['${exec_prefix}/'* | '${prefix}/'* | /usr/* | "${prefix}"/* ],
9f57e6e8
SK
110 [usrlib_execdir=$libdir],
111 [usrlib_execdir='${exec_prefix}'$libdir]
112)
30688dde 113AC_SUBST([usrlib_execdir])
996fb358 114
c2409b55
KZ
115# static configuration maintaned by packages (e.g. /usr/lib)
116AC_ARG_VAR([SYSCONFSTATICDIR],
117 [Path to static system configuration, default ${prefix}/lib])
118AS_IF([test "x$SYSCONFSTATICDIR" = x],
119 [sysconfstaticdir='${prefix}/lib'],
120 [sysconfstaticdir=$SYSCONFSTATICDIR])
121AC_SUBST([sysconfstaticdir])
122
4230b2d4 123AC_PROG_CC
31c9c1c4 124AM_PROG_CC_C_O
18336d16 125AC_PROG_MKDIR_P
30d7f61f 126AC_PROG_YACC
cf4f9ec8
KZ
127
128# Don't use autotools integrated LEX/YACC support for libsmartcols
129AC_PATH_PROG([FLEX], [flex])
130AC_PATH_PROG([BISON], [bison])
131
a6996860 132AC_CANONICAL_HOST
85b4c147 133AC_C_CONST
e79829db 134AC_C_VOLATILE
b12991dd 135
0e60bc9b 136dnl Compiler warnings
b1b54edf 137UL_WARN_ADD([-fno-common])
9dc72d0b 138UL_WARN_ADD([-Wall])
0e60bc9b 139UL_WARN_ADD([-Wextra])
c25b7d8a
SK
140
141UL_WARN_ADD([-Waddress-of-packed-member])
142UL_WARN_ADD([-Wdiscarded-qualifiers])
4230d576 143UL_WARN_ADD([-Wembedded-directive])
c25b7d8a
SK
144UL_WARN_ADD([-Wextra-semi])
145UL_WARN_ADD([-Wformat-security])
146UL_WARN_ADD([-Wimplicit-function-declaration])
b1b54edf
KZ
147UL_WARN_ADD([-Wmissing-declarations])
148UL_WARN_ADD([-Wmissing-parameter-type])
149UL_WARN_ADD([-Wmissing-prototypes])
c25b7d8a 150UL_WARN_ADD([-Wnested-externs])
0e60bc9b 151UL_WARN_ADD([-Wno-missing-field-initializers])
9df5ac34 152UL_WARN_ADD([-Wold-style-definition])
c25b7d8a 153UL_WARN_ADD([-Wpointer-arith])
b1b54edf 154UL_WARN_ADD([-Wredundant-decls])
0e60bc9b 155UL_WARN_ADD([-Wsign-compare])
c25b7d8a 156UL_WARN_ADD([-Wstrict-prototypes])
0e60bc9b
KZ
157UL_WARN_ADD([-Wtype-limits])
158UL_WARN_ADD([-Wuninitialized])
b1b54edf
KZ
159UL_WARN_ADD([-Wunused-but-set-parameter])
160UL_WARN_ADD([-Wunused-but-set-variable])
0e60bc9b 161UL_WARN_ADD([-Wunused-parameter])
0e60bc9b 162UL_WARN_ADD([-Wunused-result])
bec5c9db 163UL_WARN_ADD([-Wunused-variable])
a52f9bdd 164UL_WARN_ADD([-Wvla])
2a91b213 165UL_WARN_ADD([-Walloca])
63c80c4c
KZ
166
167AC_ARG_ENABLE([werror],
168 AS_HELP_STRING([--enable-werror], [make all compiler warnings into errors]),
169 [], [enable_werror=no]
170)
171AS_IF([test "x$enable_werror" = xyes], [
172 UL_WARN_ADD([-Werror])
173],[
174 UL_WARN_ADD([-Werror=sequence-point])
175])
176
0e60bc9b
KZ
177AC_SUBST([WARN_CFLAGS])
178
63c80c4c 179
034d378b 180UL_WARN_ADD([-Wno-clobbered], [BSD_WARN_CFLAGS])
7697771d 181AC_SUBST([BSD_WARN_CFLAGS])
4f9d999a
KZ
182
183UL_WARN_ADD([-Wno-cast-function-type], [PYTHON_WARN_CFLAGS])
184AC_SUBST([PYTHON_WARN_CFLAGS])
185
b97cc9a8
KZ
186
187AC_ARG_ENABLE([asan],
188 AS_HELP_STRING([--enable-asan], [compile with Address Sanitizer]),
189 [], [enable_asan=no]
190)
2afbcec5 191AS_IF([test "x$enable_asan" = xyes], [
b97cc9a8 192 UL_WARN_ADD([-fsanitize=address])
ef61c093 193 ASAN_LDFLAGS="-fsanitize=address"
b97cc9a8 194])
ef61c093 195AC_SUBST([ASAN_LDFLAGS])
b97cc9a8 196
e6a4d8cc
EV
197AC_ARG_ENABLE([ubsan],
198 AS_HELP_STRING([--enable-ubsan], [compile with UBsan]),
199 [], [enable_ubsan=no]
200)
201AS_IF([test "x$enable_ubsan" = xyes], [
202 UL_WARN_ADD([-fsanitize=undefined])
203 UBSAN_LDFLAGS="-fsanitize=undefined"
204])
205AC_SUBST([UBSAN_LDFLAGS])
206
ccdc47b7
EV
207AC_ARG_ENABLE([fuzzing-engine],
208 AS_HELP_STRING([--enable-fuzzing-engine], [compile with fuzzing engine]),
209 [], [enable_fuzzing_engine=no]
210)
948182f4 211AS_IF([test "x$enable_fuzzing_engine" = xyes && test "x$LIB_FUZZING_ENGINE" = x], [
75196cd8
EV
212 UL_WARN_ADD([-fno-omit-frame-pointer])
213 UL_WARN_ADD([-gline-tables-only])
214 UL_WARN_ADD([-fsanitize=fuzzer-no-link])
215 FUZZING_ENGINE_LDFLAGS="-fsanitize=fuzzer-no-link"
216])
217AC_SUBST([FUZZING_ENGINE_LDFLAGS])
ccdc47b7 218AC_PROG_CXX
75196cd8
EV
219AM_CONDITIONAL([FUZZING_ENGINE], [test "x$enable_fuzzing_engine" = xyes])
220AM_CONDITIONAL([OSS_FUZZ], [test "x$LIB_FUZZING_ENGINE" != x])
ccdc47b7 221
b4b8f8c2
FS
222AC_ARG_ENABLE([coverage],
223 AS_HELP_STRING([--enable-coverage], [compile with gcov]),
224 [], [enable_coverage=no]
225)
226AS_IF([test "x$enable_coverage" = xyes], [
227 UL_WARN_ADD([--coverage])
228 COVERAGE_LDFLAGS="--coverage"
229])
230AC_SUBST([COVERAGE_LDFLAGS])
231AM_CONDITIONAL([WITH_COVERAGE], [test "x$enable_coverage" = xyes])
232
b12991dd
KZ
233dnl libtool-2
234LT_INIT
48d7b13a 235
3719bf8d
RM
236dnl check supported linker flags
237AX_CHECK_VSCRIPT
238
fd0f4132
SK
239m4_ifndef([PKG_PROG_PKG_CONFIG],
240 [m4_fatal([Could not locate the pkg-config autoconf
241 macros. These are usually located in /usr/share/aclocal/pkg.m4.
242 If your macros are in a different location, try setting the
243 environment variable AL_OPTS="-I/other/macro/dir" before running
bf2603c7 244 ./autogen.sh or autoreconf again. Make sure pkg-config is installed.])])
d06d028a 245PKG_PROG_PKG_CONFIG
99f95a1e 246PKG_INSTALLDIR(['${usrlib_execdir}/pkgconfig'])
d06d028a 247
22aa5166
KZ
248GTK_DOC_CHECK([1.10])
249AC_PATH_PROG([XSLTPROC], [xsltproc])
236421a4
KZ
250
251
8c182554 252linux_os=no
8026fa9b
KZ
253bsd_os=no
254AS_CASE([${host_os}],
255 [*linux*],
256 [linux_os=yes],
40733239
RM
257 [*darwin*],
258 [darwin_os=yes],
8026fa9b
KZ
259 [*bsd*],
260 [bsd_os=yes])
034d378b 261AM_CONDITIONAL([LINUX], [test "x$linux_os" = xyes])
40733239 262AM_CONDITIONAL([DARWIN], [test "x$darwin_os" = xyes])
8026fa9b
KZ
263AM_CONDITIONAL([BSD], [test "x$bsd_os" = xyes])
264
40733239
RM
265AS_IF([test "x$darwin_os" = xyes], [
266 AC_DEFINE([_DARWIN_C_SOURCE], [1], [Enable MAP_ANON in sys/mman.h on Mac OS X])
267])
8c182554 268
3c6e292c 269dnl define ARCH_<NAME> conditionals
034d378b
SK
270UL_SET_ARCH([I86], [i?86-*])
271UL_SET_ARCH([86_64], [x86_64*])
272UL_SET_ARCH([IA64], [ia64*])
273UL_SET_ARCH([S390], [s390*])
274UL_SET_ARCH([SPARC], [sparc*])
275UL_SET_ARCH([PPC], [ppc*|powerpc*])
276UL_SET_ARCH([M68K], [m68*])
277UL_SET_ARCH([MIPS], [mips*])
f319e301 278UL_SET_ARCH([HPPA], [hppa*|parisc*])
3c6e292c 279
48d7b13a 280AC_SYS_LARGEFILE
2c656779 281AC_HEADER_ASSERT
f69eba17 282AC_STRUCT_TIMEZONE
48d7b13a 283
f8d75a66 284dnl Don't forget to maintain alternatively allowed versions in autogen.sh!
91c520bc 285AM_GNU_GETTEXT_VERSION([0.18.3])
09734b00 286AM_GNU_GETTEXT([external])
3013eb9d
SK
287
288AS_IF([test -d "$srcdir/po"], [
289 ALL_LINGUAS=`cd $srcdir/po > /dev/null && echo *.po | sed 's/\.po//g'`
c25b7d8a
SK
290], [dnl echo $ALL_LINGUAS | sed 's/ /\n/g' | sort -u | column -xc 72 -o ' ' | sed 's/^/\t/'
291 ALL_LINGUAS="
292 af am ar as be bg bn bn_IN ca
293 cs cy da de el en_GB es et eu_ES
294 fa fi fr gl gu he hi hr hu
295 hy id is it ja ka kn ko ku
296 lo lt lv mk ml mr ms my nb
297 nl nn no nso or pa pl pt pt_BR
298 ro ru si sk sl sq sr sr@Latn sv
299 ta te th tr uk ur vi zh_CN zh_TW
300 zu
301"])
09734b00 302
e460a5bf 303AC_CHECK_HEADERS([linux/compiler.h linux/blkpg.h linux/major.h], [], [], [
48d7b13a
KZ
304#ifdef HAVE_LINUX_COMPILER_H
305#include <linux/compiler.h>
306#endif
307])
f06b4328 308AC_CHECK_HEADERS([ \
908ac36f
MY
309 asm-generic/fcntl.h \
310 asm/fcntl.h \
f06b4328 311 asm/io.h \
c25b7d8a
SK
312 byteswap.h \
313 endian.h \
f06b4328 314 err.h \
a0948ffe 315 errno.h \
f06b4328 316 fcntl.h \
a0948ffe 317 getopt.h \
f06b4328 318 inttypes.h \
6578ced7 319 lastlog.h \
77835be2 320 libutil.h \
647f80e4 321 linux/blkzoned.h \
5a971329 322 linux/btrfs.h \
c25b7d8a 323 linux/capability.h \
f06b4328
SK
324 linux/cdrom.h \
325 linux/falloc.h \
a0948ffe 326 linux/fd.h \
c25b7d8a 327 linux/fiemap.h \
f4d700d7 328 linux/kcmp.h \
c25b7d8a 329 linux/net_namespace.h \
d652d4c6 330 linux/nsfs.h \
627428a9 331 linux/pr.h \
f06b4328 332 linux/raw.h \
c25b7d8a 333 linux/securebits.h \
a0948ffe
KZ
334 linux/tiocl.h \
335 linux/version.h \
c25b7d8a 336 linux/watchdog.h \
259bed15 337 linux/if_alg.h \
8b7f16fc 338 locale.h \
607c2a72 339 mntent.h \
754fed0c 340 net/if_dl.h \
c25b7d8a 341 net/if.h \
f06b4328
SK
342 netinet/in.h \
343 paths.h \
344 pty.h \
fe2c9909 345 security/pam_appl.h \
c25b7d8a 346 shadow.h \
f06b4328 347 stdint.h \
78288764 348 stdio_ext.h \
a0948ffe
KZ
349 stdlib.h \
350 sys/disk.h \
351 sys/disklabel.h \
c25b7d8a 352 sys/endian.h \
f06b4328 353 sys/file.h \
f06b4328
SK
354 sys/ioccom.h \
355 sys/ioctl.h \
c25b7d8a 356 sys/io.h \
a0948ffe 357 sys/mkdev.h \
ac1c53e4 358 sys/mount.h \
4ebac79f 359 sys/param.h \
84732a88 360 sys/pidfd.h \
a0948ffe 361 sys/prctl.h \
f06b4328 362 sys/resource.h \
c25b7d8a 363 sys/sendfile.h \
651b25cd 364 sys/signalfd.h \
2a7c1f70 365 sys/socket.h \
f06b4328 366 sys/sockio.h \
a0948ffe 367 sys/stat.h \
3671d4a8 368 sys/statfs.h \
f06b4328
SK
369 sys/swap.h \
370 sys/syscall.h \
c25b7d8a 371 sys/sysmacros.h \
f06b4328 372 sys/time.h \
87ee2658 373 sys/timex.h \
00c505d9 374 sys/ttydefaults.h \
a0948ffe 375 sys/types.h \
ac1c53e4 376 sys/ucred.h \
754fed0c 377 sys/un.h \
3671d4a8 378 sys/vfs.h \
40b119b9 379 sys/xattr.h \
f06b4328 380 unistd.h \
77835be2 381 utmp.h \
b4b919fe 382 utmpx.h \
f06b4328 383])
dc61d398 384
a0357292
KZ
385# There is a collision in old kernel-headers. The both files mount.h and fs.h
386# define MS_* macros. Fixed by kernel commit e462ec50cb5fad19f6003a3d8087f4a0945dd2b1.
387#
388AC_CHECK_HEADERS([linux/fs.h ], [], [],
389 [#ifdef HAVE_SYS_MOUNT_H
390 # include <linux/fs.h>
391 # include <sys/mount.h>
392 #endif
393])
394
5502e73d
MM
395AC_CHECK_HEADERS([linux/mount.h ], [], [],
396 [#ifdef HAVE_LINUX_MOUNT_H
397 # include <linux/mount.h>
398 #endif
399])
400
db4e2645
KZ
401AC_CHECK_HEADERS([linux/gsmmux.h ], [], [],
402 [#ifdef LINUX_GSMMUX_H
403 # include <linux/gsmmux.h>
404 #endif
405])
406
fe2c9909
WJ
407AC_CHECK_HEADERS([security/pam_misc.h],
408 [AM_CONDITIONAL([HAVE_LINUXPAM], [true])],
409 [AM_CONDITIONAL([HAVE_LINUXPAM], [false])], [
410#ifdef HAVE_SECURITY_PAM_APPL_H
411#include <security/pam_appl.h>
412#endif
413])
414
e5ad3a6a
SK
415AC_CHECK_DECLS([BLK_ZONE_REP_CAPACITY], [], [], [
416 #include <linux/blkzoned.h>
417])
418
627428a9 419AC_CHECK_DECLS([PR_REP_CAPACITY], [], [], [
420 #include <linux/pr.h>
421])
422
fe2c9909
WJ
423AC_CHECK_HEADERS([security/openpam.h], [], [], [
424#ifdef HAVE_SECURITY_PAM_APPL_H
425#include <security/pam_appl.h>
426#endif
427])
428
a67387b7 429AC_CHECK_HEADERS([langinfo.h],
ac660b80
ZJS
430 [AM_CONDITIONAL([HAVE_LANGINFO_H], [true])],
431 [AM_CONDITIONAL([HAVE_LANGINFO_H], [false])])
a67387b7 432
4e12a62e
RL
433AC_MSG_CHECKING([whether langinfo.h defines ALTMON_x constants])
434AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
435 #include <langinfo.h>
436]], [[
437 char *str;
438 str = nl_langinfo (ALTMON_1);
439 str = nl_langinfo (ALTMON_2);
440 str = nl_langinfo (ALTMON_3);
441 str = nl_langinfo (ALTMON_4);
442 str = nl_langinfo (ALTMON_5);
443 str = nl_langinfo (ALTMON_6);
444 str = nl_langinfo (ALTMON_7);
445 str = nl_langinfo (ALTMON_8);
446 str = nl_langinfo (ALTMON_9);
447 str = nl_langinfo (ALTMON_10);
448 str = nl_langinfo (ALTMON_11);
449 str = nl_langinfo (ALTMON_12);
450]])], [
451 AC_MSG_RESULT([yes])
452 AC_DEFINE([HAVE_LANGINFO_ALTMON], [1],
453 [Define if langinfo.h defines ALTMON_x constants])
454], [
455 AC_MSG_RESULT([no])
456])
457
458
459AC_MSG_CHECKING([whether langinfo.h defines _NL_ABALTMON_x constants])
460AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
461 #include <langinfo.h>
462]], [[
463 char *str;
464 str = nl_langinfo (_NL_ABALTMON_1);
465 str = nl_langinfo (_NL_ABALTMON_2);
466 str = nl_langinfo (_NL_ABALTMON_3);
467 str = nl_langinfo (_NL_ABALTMON_4);
468 str = nl_langinfo (_NL_ABALTMON_5);
469 str = nl_langinfo (_NL_ABALTMON_6);
470 str = nl_langinfo (_NL_ABALTMON_7);
471 str = nl_langinfo (_NL_ABALTMON_8);
472 str = nl_langinfo (_NL_ABALTMON_9);
473 str = nl_langinfo (_NL_ABALTMON_10);
474 str = nl_langinfo (_NL_ABALTMON_11);
475 str = nl_langinfo (_NL_ABALTMON_12);
476]])], [
477 AC_MSG_RESULT([yes])
478 AC_DEFINE([HAVE_LANGINFO_NL_ABALTMON], [1],
479 [Define if langinfo.h defines _NL_ABALTMON_x constants])
480], [
481 AC_MSG_RESULT([no])
482])
483
484
16ba8d58
KZ
485dnl Convert some ac_cv_header_* variables to have_*
486dnl
70bb5345 487have_linux_blkzoned_h=$ac_cv_header_linux_blkzoned_h
5a971329 488have_linux_btrfs_h=$ac_cv_header_linux_btrfs_h
c25b7d8a 489have_linux_capability_h=$ac_cv_header_linux_capability_h
f4d700d7 490have_linux_kcmp_h=$ac_cv_header_linux_kcmp_h
5502e73d 491have_linux_mount_h=$ac_cv_header_linux_mount_h
627428a9 492have_linux_pr_h=$ac_cv_header_linux_pr_h
16ba8d58 493have_linux_raw_h=$ac_cv_header_linux_raw_h
48469f90 494have_linux_securebits_h=$ac_cv_header_linux_securebits_h
c25b7d8a 495have_linux_version_h=$ac_cv_header_linux_version_h
5b0289b9 496have_linux_watchdog_h=$ac_cv_header_linux_watchdog_h
c25b7d8a
SK
497have_pty_h=$ac_cv_header_pty_h
498have_security_openpam_h=$ac_cv_header_security_openpam_h
fe2c9909 499have_security_pam_appl_h=$ac_cv_header_security_pam_appl_h
ff0cb84d 500have_security_pam_misc_h=$ac_cv_header_security_pam_misc_h
d00c10ed 501have_shadow_h=$ac_cv_header_shadow_h
651b25cd 502have_sys_signalfd_h=$ac_cv_header_sys_signalfd_h
b4b919fe 503have_utmpx_h=$ac_cv_header_utmpx_h
94c8821b 504have_mntent_h=$ac_cv_header_mntent_h
a67387b7 505
8a931412
KZ
506AS_CASE([$linux_os:$have_linux_version_h],
507 [yes:no],
508 [AC_MSG_ERROR([kernel headers required on Linux])]
509)
510
a67387b7
KZ
511AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
512#include <time.h>
513#include <unistd.h>
514]], [[
515 int a = 0;
516 struct tm *tm = localtime(0);
517 if (a == -1) /* false */
f06b4328 518 sleep(tm->tm_gmtoff);
a67387b7 519]])],
034d378b 520[AC_DEFINE([HAVE_TM_GMTOFF], [1], [Does struct tm have a field tm_gmtoff?])
a67387b7
KZ
521])
522
10efb9ea 523AC_CHECK_TYPES([struct mount_attr], [], [], [[#include <linux/mount.h>]])
0120be6f 524AC_CHECK_TYPES([enum fsconfig_command], [], [], [[#include <linux/mount.h>]])
013e0db4 525
a67387b7
KZ
526AC_CHECK_MEMBERS([struct termios.c_line],,,
527 [[#include <termios.h>]])
528
529AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec],,,
c0136ac0
KZ
530 [[#include <sys/stat.h>]])
531
7d679f29 532AC_CHECK_TYPES([struct statx], [], [], [[#include <sys/stat.h>]])
c0136ac0 533AC_CHECK_MEMBERS([struct statx.stx_mnt_id],,,
7d679f29 534 [[#include <sys/stat.h>]])
a67387b7 535
a88057d9
TP
536AC_CHECK_DECLS([_NL_TIME_WEEK_1STDAY],[],[],[[#include <langinfo.h>]])
537
0e9b73d3 538AC_CHECK_DECL([environ],
034d378b 539 [AC_DEFINE([HAVE_ENVIRON_DECL], [1],
0e9b73d3
SK
540 [Define to 1 if have **environ prototype])],
541)
542
543AC_CHECK_DECL([strsignal],
034d378b 544 [AC_DEFINE([HAVE_STRSIGNAL_DECL], [1],
0e9b73d3
SK
545 [Define to 1 if have strsignal function prototype])],
546)
547
1eb16fd7
KZ
548AC_CHECK_DECL([TIOCGLCKTRMIOS],
549 [have_tiocglcktrmios=yes], [have_tiocglcktrmios=no],
c25b7d8a 550 [#include <sys/ioctl.h>])
1eb16fd7
KZ
551AC_CHECK_DECL([SOCK_CLOEXEC],
552 [have_sock_cloexec=yes], [have_sock_cloexec=no],
553 [#include <sys/types.h>
c25b7d8a 554 #include <sys/socket.h>])
1eb16fd7
KZ
555AC_CHECK_DECL([SOCK_NONBLOCK],
556 [have_sock_nonblock=yes], [have_sock_nonblock=no],
557 [#include <sys/types.h>
c25b7d8a 558 #include <sys/socket.h>])
1eb16fd7
KZ
559AC_CHECK_DECL([SO_PASSCRED],
560 [have_so_passcred=yes], [have_so_passcred=no],
561 [#include <sys/types.h>
c25b7d8a 562 #include <sys/socket.h>])
1eb16fd7 563
f06b4328 564AC_CHECK_FUNCS([ \
c214cbeb 565 cachestat \
75efef98 566 clearenv \
f0649c0d 567 close_range \
c08396c7 568 eaccess \
eb76ca98
FG
569 err \
570 errx \
87583438 571 explicit_bzero \
c25b7d8a
SK
572 __fpending \
573 __fpurge \
574 fpurge \
d9b022bd 575 fnmatch \
0120be6f
KZ
576 fsconfig \
577 fsmount \
578 fsopen \
579 fspick \
bf962c0a
SK
580 fsync \
581 getdomainname \
f06b4328
SK
582 getdtablesize \
583 getexecname \
584 getmntinfo \
cc01c2dc 585 getrandom \
f06b4328 586 getrlimit \
c829aebc 587 getsgnam \
1cf6e936 588 getttynam \
f06b4328 589 inotify_init \
3ac22f7a 590 jrand48 \
bf962c0a 591 lchown \
3854515c
KZ
592 lgetxattr \
593 llistxattr \
a0948ffe 594 llseek \
670b10ae 595 newlocale \
02887b73 596 mempcpy \
4d751c00 597 mkostemp \
013e0db4
CB
598 move_mount \
599 mount_setattr \
f06b4328 600 nanosleep \
7d3a07d8 601 ntp_gettime \
013e0db4 602 open_tree \
f06b4328 603 personality \
6e6b9a1d
SK
604 pidfd_open \
605 pidfd_send_signal \
f06b4328
SK
606 posix_fadvise \
607 prctl \
9c7955da 608 qsort_r \
f06b4328 609 rpmatch \
485a8bfa 610 scandirat \
c25b7d8a
SK
611 sched_setattr \
612 sched_setscheduler \
613 __secure_getenv \
614 secure_getenv \
360cdaa6 615 sendfile \
30fbf2f6 616 setprogname \
69045d3d
KZ
617 setresgid \
618 setresuid \
f06b4328
SK
619 sigqueue \
620 srandom \
30c59d67 621 statx \
f06b4328 622 strnchr \
69b7e41e
KZ
623 strndup \
624 strnlen \
670b10ae 625 strtod_l \
f06b4328 626 sysconf \
88e0f3df 627 sysinfo \
b72a75e9 628 timegm \
f06b4328 629 usleep \
670b10ae 630 uselocale \
c25b7d8a 631 utimensat \
31f85fce 632 vwarnx \
eb76ca98
FG
633 warn \
634 warnx \
f06b4328 635])
48d7b13a 636AC_FUNC_FSEEKO
48d7b13a 637
90d5285d 638AC_CHECK_FUNCS([futimens], [have_futimens=yes])
c25b7d8a 639AC_CHECK_FUNCS([getusershell], [have_getusershell=yes],[have_getusershell=no])
90d5285d 640AC_CHECK_FUNCS([inotify_init1], [have_inotify_init1=yes])
c25b7d8a
SK
641AC_CHECK_FUNCS([ioperm iopl], [have_io=yes])
642AC_CHECK_FUNCS([openat fstatat unlinkat], [have_openat=yes], [have_openat=no])
f9c4d138 643AC_CHECK_FUNCS([open_memstream], [have_open_memstream=yes],[have_open_memstream=no])
e52b58e6 644AC_CHECK_FUNCS([reboot], [have_reboot=yes],[have_reboot=no])
227ebea7 645AC_CHECK_FUNCS([updwtmpx updwtmpx], [have_gnu_utmpx=yes], [have_gnu_utmpx=no])
465e9973 646
dc049516
RM
647AM_CONDITIONAL([HAVE_OPENAT], [test "x$have_openat" = xyes])
648
7a3b35b9
KZ
649have_setns_syscall="yes"
650UL_CHECK_SYSCALL([setns])
651AS_IF([test "x$ul_cv_syscall_setns" = xno], [
652 have_setns_syscall="no"
653])
feda4342 654
6e6b9a1d
SK
655UL_CHECK_SYSCALL([pidfd_open])
656UL_CHECK_SYSCALL([pidfd_send_signal])
f0649c0d 657UL_CHECK_SYSCALL([close_range])
6e6b9a1d 658
0120be6f
KZ
659UL_CHECK_SYSCALL([fsconfig])
660UL_CHECK_SYSCALL([fsmount])
661UL_CHECK_SYSCALL([fsopen])
662UL_CHECK_SYSCALL([fspick])
e087a188 663UL_CHECK_SYSCALL([mount_setattr])
0120be6f
KZ
664UL_CHECK_SYSCALL([move_mount])
665UL_CHECK_SYSCALL([open_tree])
666
9040c090
KZ
667AS_IF([test "x$ul_cv_syscall_fsconfig" = xno ||
668 test "x$ul_cv_syscall_fsmount" = xno ||
669 test "x$ul_cv_syscall_fsopen" = xno ||
670 test "x$ul_cv_syscall_fspick" = xno ||
671 test "x$ul_cv_syscall_mount_setattr" = xno ||
672 test "x$ul_cv_syscall_move_mount" = xno ||
673 test "x$ul_cv_syscall_open_tree" = xno],
674 [
675 have_mountfd_api="no"
676 ],[
677 have_mountfd_api="yes"
678 AC_DEFINE([HAVE_MOUNTFD_API], [1], [Define to 1 if you want mount API based on FDs.])
679 ])
680
e087a188 681
feda4342
KZ
682AC_CHECK_FUNCS([isnan], [],
683 [AC_CHECK_LIB([m], [isnan], [MATH_LIBS="-lm"])]
4953018e 684 [AC_CHECK_LIB([m], [__isnan], [MATH_LIBS="-lm"])]
feda4342
KZ
685)
686AC_SUBST([MATH_LIBS])
687
688
378543e1 689dnl lib/mononotic.c may require -lrt
254743e4
KZ
690AC_CHECK_FUNCS([clock_gettime], [],
691 [AC_CHECK_LIB([rt], [clock_gettime], [REALTIME_LIBS="-lrt"])]
692)
bd9b94d1 693
254743e4 694have_timer="no"
f07a82c9 695AC_CHECK_FUNCS([timer_create],
7944a03c 696 [have_timer="yes"],
254743e4
KZ
697 [AC_CHECK_LIB([rt], [timer_create], [
698 have_timer="yes"
699 REALTIME_LIBS="-lrt"
f2458cf9 700 AC_DEFINE([HAVE_TIMER_CREATE], [1], [Define if timer_create exist in -lrt])
bf6be9f5
LT
701 ],[
702 AC_SEARCH_LIBS([timer_create], [rt], [
703 AC_MSG_RESULT(yes)
704 have_timer="yes"
705 REALTIME_LIBS="-lrt -lpthread"
f2458cf9 706 AC_DEFINE([HAVE_TIMER_CREATE], [1], [Define if timer_create exist in -lrt -lpthread])
bf6be9f5
LT
707 ],[], [-lpthread]
708 )
9a558f9c 709 ])]
254743e4 710)
8fc4a886 711
f07a82c9
KZ
712AC_SUBST([REALTIME_LIBS])
713
6df5acf9
KZ
714AS_IF([test x"$have_timer" = xno], [
715 AC_CHECK_FUNCS([setitimer], [have_timer="yes"], [have_timer="no"])
716])
717
f07a82c9
KZ
718
719AC_CHECK_LIB([rtas], [rtas_get_sysparm], [
720 RTAS_LIBS="-lrtas"
f2458cf9 721 AC_DEFINE([HAVE_LIBRTAS], [1], [Define if librtas exists])
f07a82c9
KZ
722])
723AC_SUBST([RTAS_LIBS])
724
8fc4a886 725
034d378b 726AC_CHECK_MEMBER([struct sockaddr.sa_len],
f2458cf9 727 AC_DEFINE([HAVE_SA_LEN], [1], [Define if struct sockaddr contains sa_len]), [],
754fed0c
KZ
728 [#include <sys/types.h>
729 #include <sys/socket.h>])
730
60cc9f94 731SOCKET_LIBS=
60cc9f94 732AC_SEARCH_LIBS([socket], [socket],
3013eb9d
SK
733 [AS_IF([test x"$ac_cv_search_socket" != x"none required"],
734 [SOCKET_LIBS="$SOCKET_LIBS -lsocket"])
735])
60cc9f94
FG
736AC_SUBST([SOCKET_LIBS])
737
d58c47d9
FG
738
739have_dirfd=no
740AC_CHECK_FUNCS([dirfd], [have_dirfd=yes], [have_dirfd=no])
3013eb9d 741AS_IF([test x"$have_dirfd" = xno], [
d58c47d9
FG
742 AC_CHECK_DECLS([dirfd],
743 [have_dirfd=yes], [have_dirfd=no],
744 [#include <sys/types.h>
745 #include <dirent.h>])
3013eb9d 746])
d58c47d9
FG
747
748have_ddfd=no
3013eb9d 749AS_IF([test x"$have_dirfd" = xno], [
d58c47d9
FG
750 AC_CHECK_MEMBERS([DIR.dd_fd],
751 [have_ddfd=yes], [have_ddfd=no],
752 [#include <sys/types.h>
753 #include <dirent.h>])
3013eb9d 754])
d58c47d9 755
948182f4 756AM_CONDITIONAL([HAVE_DIRFD], [test "x$have_dirfd" = xyes || test "x$have_ddfd" = xyes])
d58c47d9 757
330555c4
MY
758MQ_LIBS=
759AC_CHECK_LIB([rt], [mq_open], [MQ_LIBS="-lrt"])
760AC_SUBST([MQ_LIBS])
d58c47d9 761
d6abf168
SK
762AC_MSG_CHECKING([whether program_invocation_short_name is defined])
763AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
37edac9a 764 #include <errno.h>
d6abf168
SK
765]], [[
766 program_invocation_short_name = "test";
767]])], [
768 AC_MSG_RESULT([yes])
769 AC_DEFINE([HAVE_PROGRAM_INVOCATION_SHORT_NAME], [1],
770 [Define if program_invocation_short_name is defined])
771], [
772 AC_MSG_RESULT([no])
773])
774
a804f444
FG
775
776AC_MSG_CHECKING([whether __progname is defined])
777AC_LINK_IFELSE([AC_LANG_PROGRAM([extern char *__progname;],
cf582a2e 778 [if (*__progname == 0) return 1;])],
034d378b
SK
779 AC_DEFINE([HAVE___PROGNAME], [1], [Define if __progname is defined])
780 AC_MSG_RESULT([yes]),
781 AC_MSG_RESULT([no]))
a804f444 782
a0cf9105
LB
783AC_CHECK_DECL([IOC_OPAL_GET_STATUS],
784 [AC_DEFINE([HAVE_OPAL_GET_STATUS], [1],
785 [Define to 1 if OPAL status ioctl is defined])],,
786 [#include <linux/sed-opal.h>])
787
8569410c 788dnl Static compilation
c25b7d8a 789m4_define([UL_STATIC_PROGRAMS], [blkid, fdisk, losetup, mount, nsenter, sfdisk, umount, unshare])
8569410c
SK
790
791AC_ARG_ENABLE([static-programs],
792 [AS_HELP_STRING([--enable-static-programs=LIST],
793 [link static the programs in LIST (comma-separated,
132ea941 794 supported for ]m4_defn([UL_STATIC_PROGRAMS])[)])])
8569410c 795
9f57e6e8
SK
796AS_CASE([$enable_static_programs],
797 [yes],
d924b10b 798 [enable_static_programs=m4_quote(UL_STATIC_PROGRAMS)],
9f57e6e8
SK
799 [no],
800 [enable_static_programs=]
801)
8569410c 802
8569410c 803dnl Set all the individual AM_CONDITIONALs
132ea941 804m4_foreach([UL_PRG], m4_defn([UL_STATIC_PROGRAMS]), [
9f57e6e8
SK
805 AS_CASE([,$enable_static_programs,],
806 [*,UL_PRG,*], [static_[]UL_PRG=yes]
807 )
d924b10b 808 AS_IF([test "x$static_[]UL_PRG" = xyes], [AC_MSG_NOTICE([enable static build: UL_PRG.])])
132ea941
KZ
809 AM_CONDITIONAL([HAVE_STATIC_]m4_toupper(UL_PRG),
810 [test "x$static_[]UL_PRG" = xyes])
8569410c
SK
811])
812
08b1c219
KZ
813
814AC_ARG_ENABLE([all-programs],
815 AS_HELP_STRING([--disable-all-programs], [disable everything, might be overridden by --enable-<name>]),
816 [], [enable_all_programs=undefined]
817)
818
819AS_CASE([$enable_all_programs],
7477f356 820 [yes], [AC_MSG_WARN([force to build all programs by default])
c25b7d8a 821 ul_default_estate=check],
22a900a9 822 [no], [AC_MSG_WARN([disable all programs and man pages by default])
c25b7d8a 823 ul_default_estate=no]
08b1c219
KZ
824)
825
826
22a900a9
KZ
827AC_ARG_ENABLE([asciidoc],
828 AS_HELP_STRING([--disable-asciidoc], [do not generate man pages from asciidoc]),
829 [], [UL_DEFAULT_ENABLE([asciidoc], [check])]
830)
831UL_BUILD_INIT([asciidoc])
832UL_REQUIRES_PROGRAM([asciidoc], [ASCIIDOCTOR], [asciidoctor], [man pages])
833AM_CONDITIONAL([ENABLE_ASCIIDOC], [test "x$build_asciidoc" = xyes])
a5b09369 834have_asciidoctor_failure_level=no
25a70dcb
TW
835AS_IF([test "x$build_asciidoc" = xyes], [
836 AC_MSG_CHECKING([whether ${ASCIIDOCTOR} supports --failure-level])
837 AS_IF([${ASCIIDOCTOR} --help | grep failure-level >/dev/null 2>&1 ], [
838 AC_MSG_RESULT([yes])
a5b09369 839 have_asciidoctor_failure_level=yes
25a70dcb
TW
840 ], [
841 AC_MSG_RESULT([no])
25a70dcb
TW
842 ])
843])
a5b09369 844AM_CONDITIONAL([HAVE_ASCIIDOCTOR_FAILURE_LEVEL], [test "x$have_asciidoctor_failure_level" = xyes])
22a900a9 845
1a30b2bd
KZ
846have_manpages=no
847AS_IF([test -f "$srcdir/sys-utils/mount.8"], [
848 AC_MSG_NOTICE([re-use already generated man-pages.])
849 have_manpages=yes]
850)
851AM_CONDITIONAL([HAVE_MANPAGES], [test "x$have_manpages" = xyes])
852
22a900a9 853
8f5fff53 854AC_ARG_ENABLE([poman],
9acfc349
KZ
855 AS_HELP_STRING([--disable-poman], [generate translated man pages]),
856 [], [UL_DEFAULT_ENABLE([poman], [check])]
8f5fff53
KZ
857)
858UL_BUILD_INIT([poman])
859UL_REQUIRES_PROGRAM([poman], [PO4A], [po4a], [translated man pages])
5e42ec32 860AM_CONDITIONAL([ENABLE_POMAN], [test "x$build_poman" = xyes])
8f5fff53
KZ
861
862
d7a01582 863AX_CHECK_TLS
3ac22f7a 864
37a11e1a 865have_pty=no
17d71034
KZ
866AC_ARG_WITH([util], AS_HELP_STRING([--without-util], [compile without libutil]),
867 [], [with_util=auto]
868)
869AS_IF([test "x$with_util" = xno], [
870 AM_CONDITIONAL([HAVE_UTIL], [false])
871 have_util=no
872], [
873 UL_CHECK_LIB([util], [openpty])
874])
875
948182f4 876AS_IF([test "x$have_pty_h" = xyes && test "x$have_sys_signalfd_h" = xyes && test "x$have_util" = xyes], [
6954895c
KZ
877 AM_CONDITIONAL([HAVE_PTY], [true])
878 AC_DEFINE([HAVE_PTY], [1], [have PTY support])
37a11e1a 879 have_pty=yes
6954895c
KZ
880], [
881 AM_CONDITIONAL([HAVE_PTY], [false])
882])
17d71034 883
3aecf79d
KZ
884AC_CHECK_TYPES([union semun], [], [], [[
885#include <sys/sem.h>
886]])
034d378b 887AC_CHECK_TYPES([loff_t])
3aecf79d 888
4cb6fea5
KZ
889
890AC_ARG_ENABLE([widechar],
891 AS_HELP_STRING([--disable-widechar], [do not compile wide character support]),
892 [], [enable_widechar=check]
893)
894UL_BUILD_INIT([widechar])
895UL_REQUIRES_COMPILE([widechar], [[
896 #include <wchar.h>
897 #include <wctype.h>
898 #include <stdio.h>
1632856e 899 #include <stdlib.h>
4cb6fea5
KZ
900 ]], [[
901 wchar_t wc;
902 wint_t w;
903 w = fgetwc(stdin);
904 if (w == WEOF) exit(1);
905 wc = w;
906 fputwc(wc,stdout);
907 ]],
908 [wchar_t support])
909
910AS_IF([test "x$build_widechar" = xyes ], [
911 AC_DEFINE([HAVE_WIDECHAR], [1], [Do we have wide character support?])
3aecf79d
KZ
912])
913
4cb6fea5 914
3aecf79d
KZ
915AC_CHECK_TYPES([cpu_set_t], [have_cpu_set_t=yes], [], [[
916#include <sched.h>
917]])
918
034d378b 919AM_CONDITIONAL([HAVE_CPU_SET_T], [test "x$have_cpu_set_t" = xyes])
3aecf79d 920
b09bc508
MF
921AC_CHECK_TYPES([sighandler_t], [], [], [[
922#include <signal.h>
923]])
924
3aecf79d
KZ
925AC_CHECK_DECLS([CPU_ALLOC], [], [], [[
926#include <sched.h>
927]])
928
8d35bdc9 929# on Solaris, you can't mix and match standards, since we use c99
218b1dd6 930# apparently at this stage, XOPEN_SOURCE will conflict. As workaround,
8d35bdc9 931# check for crypt.h and use that without XOPEN_SOURCE.
8229ed2f 932have_crypt=no
8d35bdc9
KZ
933AC_CHECK_HEADERS([crypt.h])
934AC_LINK_IFELSE([AC_LANG_PROGRAM([[
935#ifdef HAVE_CRYPT_H
936#include <crypt.h>
937#else
938#define _XOPEN_SOURCE
939#include <unistd.h>
940#endif
941]], [[
942char *c = crypt("abc","pw");
70c364b4
JN
943]])],[
944 have_libcrypt=no
945 have_crypt=yes
946],[
75cba8d5 947 UL_SET_LIBS([-lcrypt])
637cc045 948 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
8d35bdc9
KZ
949 #ifdef HAVE_CRYPT_H
950 #include <crypt.h>
951 #else
952 #define _XOPEN_SOURCE
953 #include <unistd.h>
954 #endif
955 ]], [[
956 char *c = crypt("abc","pw");
957 ]])],[
8d35bdc9 958 have_libcrypt=yes
8229ed2f 959 have_crypt=yes
8d35bdc9 960 ],[
8229ed2f 961 AC_MSG_WARN([crypt() is not available])
8d35bdc9 962 ])
75cba8d5 963 UL_RESTORE_LIBS
8d35bdc9 964])
034d378b 965AM_CONDITIONAL([HAVE_LIBCRYPT], [test "x$have_libcrypt" = xyes])
8d35bdc9 966
13f5473e 967
75ad4910
KZ
968AC_ARG_WITH([selinux],
969 AS_HELP_STRING([--with-selinux], [compile with SELinux support]),
034d378b 970 [], [with_selinux=no]
75ad4910
KZ
971)
972
3013eb9d 973AS_IF([test "x$with_selinux" = xno], [
034d378b 974 AM_CONDITIONAL([HAVE_SELINUX], [false])
3013eb9d 975], [
ca27216a 976 PKG_CHECK_MODULES([SELINUX], [libselinux >= 2.5], [have_selinux=yes], [have_selinux=no])
9f57e6e8
SK
977 AS_CASE([$with_selinux:$have_selinux],
978 [yes:no], [AC_MSG_ERROR([SELinux selected but libselinux not found or too old])]
979 )
3013eb9d 980 AS_IF([test "x$have_selinux" = xyes], [
1468eda6
KZ
981 AC_DEFINE([HAVE_LIBSELINUX], [1], [Define if SELinux is available])
982 UL_PKG_STATIC([SELINUX_LIBS_STATIC], [libselinux])
983 AM_CONDITIONAL([HAVE_SELINUX], [true])
984
75cba8d5 985 UL_SET_LIBS([$SELINUX_LIBS])
312f04f4
KZ
986 # This function is missing in old libselinux 1.xx versions
987 AC_CHECK_FUNCS([security_get_initial_context])
75cba8d5 988 UL_RESTORE_LIBS
3013eb9d
SK
989 ])
990])
75ad4910
KZ
991AC_SUBST([SELINUX_LIBS])
992AC_SUBST([SELINUX_LIBS_STATIC])
993
0273afda 994
75ad4910
KZ
995AC_ARG_WITH([audit],
996 AS_HELP_STRING([--with-audit], [compile with audit support]),
034d378b 997 [], [with_audit=no]
75ad4910
KZ
998)
999
3013eb9d 1000AS_IF([test "x$with_audit" = xno], [
034d378b 1001 AM_CONDITIONAL([HAVE_AUDIT], [false])
3013eb9d 1002], [
034d378b 1003 UL_CHECK_LIB([audit], [audit_log_user_message])
9f57e6e8
SK
1004 AS_CASE([$with_audit:$have_audit],
1005 [yes:no],
1006 [AC_MSG_ERROR([Audit selected but libaudit not found (or does not support audit_log_user_message())])]
1007 )
3013eb9d 1008])
75ad4910
KZ
1009
1010AC_ARG_WITH([udev], AS_HELP_STRING([--without-udev], [compile without udev support]),
034d378b 1011 [], [with_udev=auto]
75ad4910
KZ
1012)
1013
3013eb9d 1014AS_IF([test "x$with_udev" = xno], [
034d378b 1015 AM_CONDITIONAL([HAVE_UDEV], [false])
3013eb9d 1016], [
034d378b 1017 UL_CHECK_LIB([udev], [udev_new])
9f57e6e8
SK
1018 AS_CASE([$with_udev:$have_udev],
1019 [yes:no],
1020 [AC_MSG_ERROR([udev selected but libudev not found])]
1021 )
3013eb9d 1022])
75ad4910 1023
2b8f22bd 1024
4ffcc7a9
KZ
1025dnl wide-char ncurses
1026AC_ARG_WITH([ncursesw],
95a89bd3 1027 AS_HELP_STRING([--without-ncursesw], [do not build with wide-char ncurses]),
4ffcc7a9
KZ
1028 [], [with_ncursesw=auto]
1029)
1030have_ncursesw=no
3cc8a9f4 1031have_ncursesw_header=no
4ffcc7a9 1032AS_IF([test "x$with_ncursesw" != xno], [
e5cc93b5
KZ
1033 UL_NCURSES_CHECK([ncursesw])
1034 AS_IF([test "x$have_ncursesw" = xyes], [
3947ca4c
KZ
1035 AC_CHECK_HEADERS([ncursesw/ncurses.h], [have_ncursesw_header=yes])
1036 AC_CHECK_HEADERS([ncursesw/term.h])
87c26ce5
KZ
1037
1038 # Define HAVE_NCURSES_H only if check for HAVE_NCURSESW_NCURSES_H is
1039 # unsuccessful to avoid too many *_H permitations in config.h
1040 AS_IF([test "x$have_ncursesw_header" = xno], [
1041 AC_CHECK_HEADERS([ncurses.h], [have_ncursesw_header=yes])
1042 AC_CHECK_HEADERS([term.h])
1043 ])
3cc8a9f4
KZ
1044 AS_IF([test "x$have_ncursesw_header" = xno], [have_ncursesw=no])
1045 ])
1046 AS_IF([test "x$have_ncursesw" = xyes], [
f1512be8 1047 CURSES_LIB_NAME="ncursesw"
3cc8a9f4 1048 AC_DEFINE([HAVE_LIBNCURSESW], [1], [Define if ncursesw library available])
e5cc93b5 1049 ])
4ffcc7a9
KZ
1050])
1051AS_CASE([$with_ncursesw:$have_ncursesw],
1052 [yes:no], [AC_MSG_ERROR([ncursesw selected, but library not found])])
2b8f22bd 1053
43cc76e2 1054
4ffcc7a9
KZ
1055dnl non-wide ncurses
1056AC_ARG_WITH([ncurses],
95a89bd3 1057 AS_HELP_STRING([--with-ncurses], [build with non-wide ncurses]),
4ffcc7a9
KZ
1058 [], [with_ncurses=auto]
1059)
1060have_ncurses=no
3cc8a9f4 1061have_ncurses_header=no
18dae5d8
KZ
1062AS_CASE([$with_ncurses:$build_widechar],
1063 [yes:yes], [AC_MSG_ERROR([wide-char support enabled, but non-wide ncurses selects])])
1064
948182f4 1065AS_IF([test "x$have_ncursesw" = xno && test "x$with_ncurses" != xno ], [
e5cc93b5
KZ
1066 UL_NCURSES_CHECK([ncurses])
1067 AS_IF([test "x$have_ncurses" = xyes], [
87c26ce5
KZ
1068 AC_CHECK_HEADERS([ncurses/ncurses.h], [have_ncurses_header=yes])
1069 AC_CHECK_HEADERS([ncurses/term.h])
1070
1071 # Define HAVE_NCURSES_H only if check for HAVE_NCURSES_NCURSES_H is
1072 # unsuccessful to avoid too many *_H permitations in config.h
1073 AS_IF([test "x$have_ncurses_header" = xno], [
1074 AC_CHECK_HEADERS([ncurses.h], [have_ncurses_header=yes])
1075 AC_CHECK_HEADERS([term.h])
1076 ])
3cc8a9f4
KZ
1077 AS_IF([test "x$have_ncurses_header" = xno], [have_ncurses=no])
1078 ])
1079 AS_IF([test "x$have_ncurses" = xyes], [
4ffcc7a9 1080 CURSES_LIB_NAME="ncurses"
3cc8a9f4 1081 AC_DEFINE([HAVE_LIBNCURSES], [1], [Define if ncurses library available])
e5cc93b5 1082 ])
3013eb9d 1083])
4ffcc7a9
KZ
1084AS_CASE([$with_ncurses:$have_ncurses],
1085 [yes:no], [AC_MSG_ERROR([ncurses selected, but library not found])])
1086
2b8f22bd 1087AC_SUBST([NCURSES_CFLAGS])
75ad4910 1088AC_SUBST([NCURSES_LIBS])
948182f4 1089AM_CONDITIONAL([HAVE_NCURSES], [test "x$have_ncursesw" = xyes || test "x$have_ncurses" = xyes])
75ad4910
KZ
1090
1091
1092AC_ARG_WITH([slang],
4ffcc7a9 1093 AS_HELP_STRING([--with-slang], [compile cfdisk with slang rather than ncurses]),
034d378b 1094 [], [with_slang=no]
75ad4910 1095)
50ea6795 1096have_slang=no
3013eb9d 1097AS_IF([test "x$with_slang" = xyes], [
75ad4910
KZ
1098 AC_CHECK_HEADERS([slang.h slang/slang.h])
1099 AC_CHECK_HEADERS([slcurses.h slang/slcurses.h],
50ea6795 1100 [have_slang=yes], [], [
75ad4910
KZ
1101#ifdef HAVE_SLANG_H
1102#include <slang.h>
1103#elif defined(HAVE_SLANG_SLANG_H)
1104#include <slang/slang.h>
1105#endif
1106])
3013eb9d 1107 AS_IF([test "x$have_slang" = xno], [
f1512be8
KZ
1108 AC_MSG_ERROR([slang selected but slcurses.h not found])],
1109 [CURSES_LIB_NAME=slang
3013eb9d
SK
1110 ])
1111])
034d378b 1112AM_CONDITIONAL([HAVE_SLANG], [test "x$have_slang" = xyes])
50ea6795 1113
50ea6795 1114
948182f4 1115AS_IF([test "x$have_slang" = xyes || test "x$have_ncursesw" = xyes || test "x$have_ncurses" = xyes], [
f1512be8
KZ
1116 AC_CHECK_LIB([$CURSES_LIB_NAME], use_default_colors, [
1117 AC_DEFINE(HAVE_USE_DEFAULT_COLORS, 1,
7556c944
KZ
1118 [Define if curses library has the use_default_colors().])
1119 ])
1120 AC_CHECK_LIB([$CURSES_LIB_NAME], resizeterm, [
1121 AC_DEFINE(HAVE_RESIZETERM, 1,
1122 [Define if curses library has the resizeterm().])
f1512be8
KZ
1123 ])
1124])
1125
50ea6795 1126
17d71034
KZ
1127AC_ARG_WITH([tinfo], AS_HELP_STRING([--without-tinfo], [compile without libtinfo]),
1128 [], [with_tinfo=auto]
1129)
1130have_tinfo=no
ad442a81 1131have_tinfow=no
17d71034 1132AS_IF([test "x$with_tinfo" != xno], [
ad442a81
KZ
1133 AS_IF([test "x$have_ncursesw" = xyes], [
1134 UL_TINFO_CHECK([tinfow])
1135 ])
1136 AS_IF([test "x$have_tinfow" = xno], [
1137 UL_TINFO_CHECK([tinfo])
17d71034 1138 ])
2b8f22bd
MF
1139])
1140AC_SUBST([TINFO_LIBS])
0b28c2ec 1141AC_SUBST([TINFO_LIBS_STATIC])
ccf92e6d 1142AC_SUBST([TINFO_CFLAGS])
948182f4
IM
1143AM_CONDITIONAL([HAVE_TINFO], [test "x$have_tinfo" = xyes || test "x$have_tinfow" = xyes])
1144AS_IF([test "x$have_tinfo" = xyes || test "x$have_tinfow" = xyes], [
ad442a81 1145 AC_DEFINE(HAVE_LIBTINFO, 1, [Define if libtinfo or libtinfow available.])
4310faf9 1146])
75ad4910
KZ
1147
1148
0b28c2ec 1149AC_ARG_WITH([readline],
95a89bd3 1150 AS_HELP_STRING([--without-readline], [do not build with GNU Readline support]),
0b28c2ec
KZ
1151 [], [with_readline=auto]
1152)
1153
1154AS_IF([test "x$with_readline" = xno], [
1155 AM_CONDITIONAL([HAVE_READLINE], [false])
1156], [
1157 UL_CHECK_LIB([readline], [readline])
1158 AS_CASE([$with_readline:$have_readline],
1159 [yes:no],
1160 [AC_MSG_ERROR([readline selected but libreadline not found ])],
1161 [*:yes],
1162 [READLINE_LIBS="-lreadline"
1163 READLINE_LIBS_STATIC="-lreadline $TINFO_LIBS_STATIC"]
1164 )
1165])
1166AC_SUBST([READLINE_LIBS])
1167AC_SUBST([READLINE_LIBS_STATIC])
1168
1169
75ad4910
KZ
1170AC_ARG_WITH([utempter],
1171 AS_HELP_STRING([--with-utempter], [compile script(1) with libutempter]),
034d378b 1172 [], [with_utempter=no]
75ad4910
KZ
1173)
1174
3013eb9d 1175AS_IF([test "x$with_utempter" = xyes], [
034d378b 1176 UL_CHECK_LIB([utempter], [utempter_add_record])
3013eb9d 1177 AS_IF([test "x$have_utempter" = xno], [
75ad4910 1178 AC_MSG_ERROR([utempter selected but libutempter not found])
3013eb9d
SK
1179 ])
1180], [
034d378b 1181 AM_CONDITIONAL([HAVE_UTEMPTER], [false])
3013eb9d 1182])
75ad4910
KZ
1183
1184
1dbbde66
KZ
1185dnl
1186dnl libuuid
1187dnl
17afb032
KZ
1188AC_ARG_ENABLE([libuuid],
1189 AS_HELP_STRING([--disable-libuuid], [do not build libuuid and uuid utilities]),
08b1c219 1190 [], [UL_DEFAULT_ENABLE([libuuid], [yes])]
17afb032 1191)
fa7be20e 1192UL_BUILD_INIT([libuuid])
dc2b8d87
KZ
1193AC_SUBST([LIBUUID_VERSION])
1194AC_SUBST([LIBUUID_VERSION_INFO])
fa7be20e 1195AM_CONDITIONAL(BUILD_LIBUUID, test "x$build_libuuid" = xyes)
9dc801d2 1196
3e584e85
RM
1197AC_ARG_ENABLE([libuuid-force-uuidd],
1198 AS_HELP_STRING([--enable-libuuid-force-uuidd], [support uuidd even though the daemon is not built]),
1199 [], [enable_libuuid_force_uuidd=no]
1200)
1201
13985252 1202AS_IF([test "x$build_libuuid" = xyes], [
17afb032 1203 AC_DEFINE(HAVE_LIBUUID, 1, [Define to 1 if you have the -luuid.])
3013eb9d 1204])
48d7b13a 1205
1dbbde66
KZ
1206dnl
1207dnl libblkid
1208dnl
f910b559 1209AC_ARG_ENABLE([libblkid],
1d12ed57 1210 AS_HELP_STRING([--disable-libblkid], [do not build libblkid and many related utilities]),
dc049516 1211 [], [UL_DEFAULT_ENABLE([libblkid], [check])]
40f07ff7 1212)
61a074f7 1213UL_BUILD_INIT([libblkid])
dc049516 1214UL_REQUIRES_HAVE([libblkid], [openat], [openat functions])
a68ed87f 1215UL_REQUIRES_HAVE([libblkid], [dirfd,ddfd], [dirfd or ddfd function])
033cf439 1216AC_SUBST([LIBBLKID_DATE])
dc2b8d87
KZ
1217AC_SUBST([LIBBLKID_VERSION])
1218AC_SUBST([LIBBLKID_VERSION_INFO])
034d378b
SK
1219AC_DEFINE_UNQUOTED([LIBBLKID_VERSION], ["$LIBBLKID_VERSION"], [libblkid version string])
1220AC_DEFINE_UNQUOTED([LIBBLKID_DATE], ["$LIBBLKID_DATE"], [libblkid date string])
3013eb9d 1221AS_IF([test "x$build_libblkid" = xyes], [
034d378b 1222 AC_DEFINE([HAVE_LIBBLKID], [1], [Define to 1 if you have the -lblkid.])
3013eb9d 1223])
034d378b 1224AM_CONDITIONAL([BUILD_LIBBLKID], [test "x$build_libblkid" = xyes])
948182f4 1225AM_CONDITIONAL([BUILD_LIBBLKID_TESTS], [test "x$build_libblkid" = xyes && test "x$enable_static" = xyes])
f910b559 1226
1dbbde66
KZ
1227dnl
1228dnl libmount
1229dnl
f1cde479
KZ
1230AC_ARG_ENABLE([libmount],
1231 AS_HELP_STRING([--disable-libmount], [do not build libmount]),
08b1c219 1232 [], [UL_DEFAULT_ENABLE([libmount], [check])]
f1cde479 1233)
61a074f7 1234UL_BUILD_INIT([libmount])
13f5473e 1235UL_REQUIRES_BUILD([libmount], [libblkid])
a68ed87f 1236UL_REQUIRES_HAVE([libmount], [dirfd,ddfd], [dirfd or ddfd function])
94c8821b 1237UL_REQUIRES_HAVE([libmount], [mntent_h], [mntent.h header file])
034d378b 1238AM_CONDITIONAL([BUILD_LIBMOUNT], [test "x$build_libmount" = xyes])
948182f4 1239AM_CONDITIONAL([BUILD_LIBMOUNT_TESTS], [test "x$build_libmount" = xyes && test "x$enable_static" = xyes])
30c34afb 1240AS_IF([test "x$build_libmount" = xyes], [
7a3b35b9
KZ
1241 AC_DEFINE(HAVE_LIBMOUNT, 1, [Define if libmount available.])
1242 AS_IF([test "x$have_setns_syscall" = "xyes"], [
1243 AC_DEFINE([USE_LIBMOUNT_SUPPORT_NAMESPACES], [1], [Define to 1 if want to support namepaces.])
1244 ],[
1245 AC_MSG_WARN([libmount will be compiled without namespaces support])
1246 ])
30c34afb 1247])
8e368761 1248
f1cde479 1249AC_SUBST([LIBMOUNT_VERSION])
10e1d2e5
SH
1250AC_SUBST([LIBMOUNT_MAJOR_VERSION], $PACKAGE_VERSION_MAJOR)
1251AC_SUBST([LIBMOUNT_MINOR_VERSION], $PACKAGE_VERSION_MINOR)
1252AC_SUBST([LIBMOUNT_PATCH_VERSION], $PACKAGE_VERSION_RELEASE)
f1cde479 1253AC_SUBST([LIBMOUNT_VERSION_INFO])
034d378b 1254AC_DEFINE_UNQUOTED([LIBMOUNT_VERSION], ["$LIBMOUNT_VERSION"], [libmount version string])
13f5473e 1255
9040c090
KZ
1256AC_ARG_ENABLE([libmount-mountfd-support],
1257 AS_HELP_STRING([--disable-libmount-mountfd-support], [do not use new mount API based on FDs]),
1258 [], [enable_libmount_mountfd_support=check]
1259)
1260UL_BUILD_INIT([libmount_mountfd_support])
1261UL_REQUIRES_BUILD([libmount_mountfd_support], [libmount])
1262UL_REQUIRES_LINUX([libmount_mountfd_support])
1263UL_REQUIRES_HAVE([libmount_mountfd_support], [mountfd_api], [mount FDs based API])
5502e73d 1264UL_REQUIRES_HAVE([libmount_mountfd_support], [linux_mount_h], [linux/mount.h])
9040c090
KZ
1265AS_IF([test "x$build_libmount_mountfd_support" = xyes ], [
1266 AC_DEFINE([USE_LIBMOUNT_MOUNTFD_SUPPORT], [1], [Enable support for new mount FD based kernel API])
1267])
1268
1269
1a4d989e
OO
1270dnl
1271dnl libsmartcols
1272dnl
1273AC_ARG_ENABLE([libsmartcols],
1274 AS_HELP_STRING([--disable-libsmartcols], [do not build libsmartcols]),
08b1c219 1275 [], [UL_DEFAULT_ENABLE([libsmartcols], [yes])]
1a4d989e
OO
1276)
1277UL_BUILD_INIT([libsmartcols])
1a4d989e 1278AM_CONDITIONAL([BUILD_LIBSMARTCOLS], [test "x$build_libsmartcols" = xyes])
1a4d989e
OO
1279
1280AC_SUBST([LIBSMARTCOLS_VERSION])
1281AC_SUBST([LIBSMARTCOLS_VERSION_INFO])
1282AC_DEFINE_UNQUOTED([LIBSMARTCOLS_VERSION], ["$LIBSMARTCOLS_VERSION"], [libsmartcols version string])
1283
1284
eb6a03f3 1285dnl
0bb4c979 1286dnl libfdisk
eb6a03f3 1287dnl
0bb4c979
KZ
1288AC_ARG_ENABLE([libfdisk],
1289 AS_HELP_STRING([--disable-libfdisk], [do not build libfdisk]),
1290 [], [UL_DEFAULT_ENABLE([libfdisk], [check])]
1291)
1292UL_BUILD_INIT([libfdisk])
eb6a03f3 1293UL_REQUIRES_BUILD([libfdisk], [libuuid])
034d378b 1294AM_CONDITIONAL([BUILD_LIBFDISK], [test "x$build_libfdisk" = xyes])
948182f4 1295AM_CONDITIONAL([BUILD_LIBFDISK_TESTS], [test "x$build_libfdisk" = xyes && test "x$enable_static" = xyes])
0bb4c979 1296
ed79557e
KZ
1297AS_IF([test "x$build_libblkid" = xyes],
1298 [LIBFDISK_PC_REQUIRES="uuid blkid"],[LIBFDISK_PC_REQUIRES="uuid"])
1299AC_SUBST([LIBFDISK_PC_REQUIRES])
1300
0bb4c979 1301AC_SUBST([LIBFDISK_VERSION])
791da22d
KZ
1302AC_SUBST([LIBFDISK_MAJOR_VERSION], $PACKAGE_VERSION_MAJOR)
1303AC_SUBST([LIBFDISK_MINOR_VERSION], $PACKAGE_VERSION_MINOR)
1304AC_SUBST([LIBFDISK_PATCH_VERSION], $PACKAGE_VERSION_RELEASE)
0bb4c979
KZ
1305AC_SUBST([LIBFDISK_VERSION_INFO])
1306AC_DEFINE_UNQUOTED([LIBFDISK_VERSION], ["$LIBFDISK_VERSION"], [libfdisk version string])
1307
eb6a03f3 1308
9c7431fd
CS
1309AC_ARG_ENABLE([fdisks],
1310 AS_HELP_STRING([--disable-fdisks], [do not build fdisk(8), sfdisk(8) and cfdisk(8)]),
1311 [], [UL_DEFAULT_ENABLE([fdisks], [check])]
1312)
1313enable_fdisk=$enable_fdisks
1314enable_sfdisk=$enable_fdisks
1315enable_cfdisk=$enable_fdisks
1316
1317UL_BUILD_INIT([fdisk])
dc049516 1318UL_REQUIRES_HAVE([fdisk], [openat], [openat functions])
a68ed87f 1319UL_REQUIRES_HAVE([fdisk], [dirfd,ddfd], [dirfd or ddfd function])
eb6a03f3 1320UL_REQUIRES_BUILD([fdisk], [libfdisk])
d44115f3 1321UL_REQUIRES_BUILD([fdisk], [libsmartcols])
034d378b 1322AM_CONDITIONAL([BUILD_FDISK], [test "x$build_fdisk" = xyes])
eb6a03f3
KZ
1323
1324
9c7431fd 1325UL_BUILD_INIT([sfdisk])
dc049516 1326UL_REQUIRES_HAVE([sfdisk], [openat], [openat functions])
a68ed87f 1327UL_REQUIRES_HAVE([sfdisk], [dirfd,ddfd], [dirfd or ddfd function])
9c1f9dd3
KZ
1328UL_REQUIRES_BUILD([sfdisk], [libfdisk])
1329UL_REQUIRES_BUILD([sfdisk], [libsmartcols])
ecc6047e
KZ
1330AM_CONDITIONAL([BUILD_SFDISK], [test "x$build_sfdisk" = xyes])
1331
1332
9c7431fd 1333UL_BUILD_INIT([cfdisk])
08b1c219
KZ
1334UL_REQUIRES_BUILD([cfdisk], [libfdisk])
1335UL_REQUIRES_BUILD([cfdisk], [libsmartcols])
9dd55a04 1336UL_REQUIRES_HAVE([cfdisk], [open_memstream], [open_memstream function])
4ffcc7a9 1337UL_REQUIRES_HAVE([cfdisk], [ncursesw,slang,ncurses], [ncursesw, ncurses or slang library])
08b1c219
KZ
1338AM_CONDITIONAL([BUILD_CFDISK], [test "x$build_cfdisk" = xyes])
1339
1340
434b07a0
KZ
1341AC_ARG_ENABLE([mount],
1342 AS_HELP_STRING([--disable-mount], [do not build mount(8) and umount(8)]),
08b1c219 1343 [], [UL_DEFAULT_ENABLE([mount], [check])]
ecdba5dd 1344)
434b07a0 1345UL_BUILD_INIT([mount])
53e8c16e 1346UL_REQUIRES_LINUX([mount])
434b07a0 1347UL_REQUIRES_BUILD([mount], [libmount])
034d378b 1348AM_CONDITIONAL([BUILD_MOUNT], [test "x$build_mount" = xyes])
ecdba5dd
KZ
1349
1350
bafe1a75
KZ
1351AC_ARG_ENABLE([losetup],
1352 AS_HELP_STRING([--disable-losetup], [do not build losetup]),
08b1c219 1353 [], [UL_DEFAULT_ENABLE([losetup], [check])]
bafe1a75
KZ
1354)
1355UL_BUILD_INIT([losetup])
1356UL_REQUIRES_LINUX([losetup])
7477f356 1357UL_REQUIRES_BUILD([losetup], [libsmartcols])
034d378b 1358AM_CONDITIONAL([BUILD_LOSETUP], [test "x$build_losetup" = xyes])
bafe1a75 1359
0624d840
KZ
1360AC_ARG_ENABLE([zramctl],
1361 AS_HELP_STRING([--disable-zramctl], [do not build zramctl]),
1362 [], [UL_DEFAULT_ENABLE([zramctl], [check])]
1363)
1364UL_BUILD_INIT([zramctl])
1365UL_REQUIRES_LINUX([zramctl])
1366UL_REQUIRES_BUILD([zramctl], [libsmartcols])
1367AM_CONDITIONAL([BUILD_ZRAMCTL], [test "x$build_zramctl" = xyes])
bafe1a75 1368
1dbbde66
KZ
1369AC_ARG_ENABLE([fsck],
1370 AS_HELP_STRING([--disable-fsck], [do not build fsck]),
08b1c219 1371 [], [UL_DEFAULT_ENABLE([fsck], [check])]
1dbbde66 1372)
61a074f7 1373UL_BUILD_INIT([fsck])
a7b585ea 1374UL_REQUIRES_BUILD([fsck], [libmount])
034d378b 1375AM_CONDITIONAL([BUILD_FSCK], [test "x$build_fsck" = xyes])
1dbbde66
KZ
1376
1377
1378AC_ARG_ENABLE([partx],
1379 AS_HELP_STRING([--disable-partx], [do not build addpart, delpart, partx]),
08b1c219 1380 [], [UL_DEFAULT_ENABLE([partx], [check])]
1dbbde66 1381)
61a074f7 1382UL_BUILD_INIT([partx])
ecde2536
KZ
1383UL_REQUIRES_LINUX([partx])
1384UL_REQUIRES_BUILD([partx], [libblkid])
08b1c219 1385UL_REQUIRES_BUILD([partx], [libsmartcols])
034d378b 1386AM_CONDITIONAL([BUILD_PARTX], [test "x$build_partx" = xyes])
1dbbde66
KZ
1387
1388
1dbbde66
KZ
1389AC_ARG_ENABLE([uuidd],
1390 AS_HELP_STRING([--disable-uuidd], [do not build the uuid daemon]),
08b1c219 1391 [], [UL_DEFAULT_ENABLE([uuidd], [check])]
1dbbde66 1392)
61a074f7 1393UL_BUILD_INIT([uuidd])
bcdab497 1394UL_REQUIRES_BUILD([uuidd], [libuuid])
651b25cd
RM
1395UL_REQUIRES_HAVE([uuidd], [timer], [timer_create function])
1396UL_REQUIRES_HAVE([uuidd], [sys_signalfd_h], [sys/signalfd.h header])
2afbcec5 1397AS_IF([test "x$build_uuidd" = xyes || test "x$enable_libuuid_force_uuidd" = xyes], [
034d378b 1398 AC_DEFINE([HAVE_UUIDD], [1], [Define to 1 if you want to use uuid daemon.])
3013eb9d 1399])
034d378b 1400AM_CONDITIONAL([BUILD_UUIDD], [test "x$build_uuidd" = xyes])
1dbbde66
KZ
1401
1402
5ec1108c 1403AC_ARG_ENABLE([uuidgen],
1404 AS_HELP_STRING([--disable-uuidgen], [do not build uuidgen]),
1405 [], [UL_DEFAULT_ENABLE([uuidgen], [check])]
1406)
1407UL_BUILD_INIT([uuidgen])
1b15cbd1
KZ
1408UL_REQUIRES_BUILD([uuidgen], [libuuid])
1409AM_CONDITIONAL([BUILD_UUIDGEN], [test "x$build_uuidgen" = xyes])
1410
83893f26
SK
1411UL_BUILD_INIT([uuidparse], [check])
1412UL_REQUIRES_BUILD([uuidparse], [libuuid])
1413UL_REQUIRES_BUILD([uuidparse], [libsmartcols])
1414AM_CONDITIONAL([BUILD_UUIDPARSE], [test "x$build_uuidparse" = xyes])
1415
5ec1108c 1416AC_ARG_ENABLE([blkid],
1417 AS_HELP_STRING([--disable-blkid], [do not build blkid(8)]),
1418 [], [UL_DEFAULT_ENABLE([blkid], [check])]
1419)
1420UL_BUILD_INIT([blkid])
15a2c741
KZ
1421UL_REQUIRES_BUILD([blkid], [libblkid])
1422AM_CONDITIONAL([BUILD_BLKID], [test "x$build_blkid" = xyes])
1423
1424UL_BUILD_INIT([findfs], [check])
1425UL_REQUIRES_BUILD([findfs], [libblkid])
1426AM_CONDITIONAL([BUILD_FINDFS], [test "x$build_findfs" = xyes])
1427
a76cd5f6
SV
1428AC_ARG_ENABLE([wipefs],
1429 AS_HELP_STRING([--disable-wipefs], [do not build wipefs]),
1430 [], [UL_DEFAULT_ENABLE([wipefs], [check])]
1431)
1432UL_BUILD_INIT([wipefs])
15a2c741 1433UL_REQUIRES_BUILD([wipefs], [libblkid])
d9921b2a 1434UL_REQUIRES_BUILD([wipefs], [libsmartcols])
15a2c741
KZ
1435AM_CONDITIONAL([BUILD_WIPEFS], [test "x$build_wipefs" = xyes])
1436
1437UL_BUILD_INIT([findmnt], [check])
1438UL_REQUIRES_BUILD([findmnt], [libmount])
169b4a8c 1439UL_REQUIRES_BUILD([findmnt], [libblkid])
15a2c741
KZ
1440UL_REQUIRES_BUILD([findmnt], [libsmartcols])
1441AM_CONDITIONAL([BUILD_FINDMNT], [test "x$build_findmnt" = xyes])
1442
1b15cbd1 1443
0164c245 1444AC_ARG_ENABLE([mountpoint],
2023ccc4 1445 AS_HELP_STRING([--disable-mountpoint], [do not build mountpoint]),
08b1c219 1446 [], [UL_DEFAULT_ENABLE([mountpoint], [check])]
0164c245 1447)
61a074f7 1448UL_BUILD_INIT([mountpoint])
a9127bc1 1449UL_REQUIRES_BUILD([mountpoint], [libmount])
034d378b 1450AM_CONDITIONAL([BUILD_MOUNTPOINT], [test "x$build_mountpoint" = xyes])
0164c245
KZ
1451
1452
10e56b49
KZ
1453AC_ARG_ENABLE([fallocate],
1454 AS_HELP_STRING([--disable-fallocate], [do not build fallocate]),
08b1c219 1455 [], [UL_DEFAULT_ENABLE([fallocate], [check])]
10e56b49 1456)
61a074f7 1457UL_BUILD_INIT([fallocate])
10e56b49
KZ
1458UL_REQUIRES_LINUX([fallocate])
1459UL_REQUIRES_SYSCALL_CHECK([fallocate], [UL_CHECK_SYSCALL([fallocate])])
034d378b 1460AM_CONDITIONAL([BUILD_FALLOCATE], [test "x$build_fallocate" = xyes])
10e56b49 1461
3013eb9d 1462AS_IF([test "x$build_fallocate" = xyes], [
10e56b49
KZ
1463 dnl check for valid fallocate() function
1464 dnl with 32 bits glibc 2.10, fallocate() exists but not fallocate64()
1465 dnl when _FILE_OFFSET_BITS==64, fallocate() is redirect to fallocate64()
1466 dnl and program can't be linked.
1467 dnl AC_CHECK_FUNC can't catch such errors since it's redefining
1468 dnl function prototype.
1469 AC_MSG_CHECKING([for valid fallocate() function])
1470 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
b832c2fe
YD
1471#ifdef HAVE_UNISTD_H
1472# include <unistd.h>
1473#endif
1474#ifdef HAVE_SYS_TYPES_H
1475# include <sys/types.h>
1476#endif
1477#ifdef HAVE_LINUX_FALLOC_H
1478# include <linux/falloc.h>
1479#endif
1480#ifdef HAVE_FCNTL_H
1481# include <fcntl.h>
1482#endif
1483]],[[
1484 long ret;
b832c2fe 1485 ret = fallocate(0, FALLOC_FL_KEEP_SIZE, 0xfffffffful, 0xfffffffful);
b832c2fe
YD
1486 if (ret != 0) {
1487 return 1;
1488 }
1489 ]])],[
10e56b49 1490 AC_MSG_RESULT([yes])
034d378b 1491 AC_DEFINE([HAVE_FALLOCATE], [1], [Have valid fallocate() function])],[
10e56b49 1492 AC_MSG_RESULT([no])])
3013eb9d 1493])
10e56b49 1494
833f9a7a
DC
1495AS_IF([test "x$build_fallocate" = xyes], [
1496 dnl check for valid posix_fallocate() function
1497 AC_MSG_CHECKING([for valid posix_fallocate() function])
1498 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1499#ifdef HAVE_UNISTD_H
1500# include <unistd.h>
1501#endif
1502#ifdef HAVE_SYS_TYPES_H
1503# include <sys/types.h>
1504#endif
1505#ifdef HAVE_LINUX_FALLOC_H
1506# include <linux/falloc.h>
1507#endif
1508#ifdef HAVE_FCNTL_H
1509# include <fcntl.h>
1510#endif
1511]],[[
1512 long ret;
1513 ret = posix_fallocate(0, 0xfffffffful, 0xfffffffful);
1514 if (ret != 0) {
1515 return 1;
1516 }
1517 ]])],[
1518 AC_MSG_RESULT([yes])
1519 AC_DEFINE([HAVE_POSIX_FALLOCATE], [1], [Have valid posix_fallocate() function])],[
1520 AC_MSG_RESULT([no])])
1521])
1522
19a224ad 1523
a2ea6670
KZ
1524AC_ARG_ENABLE([unshare],
1525 AS_HELP_STRING([--disable-unshare], [do not build unshare]),
08b1c219 1526 [], [UL_DEFAULT_ENABLE([unshare], [check])]
a2ea6670 1527)
61a074f7 1528UL_BUILD_INIT([unshare])
a2ea6670
KZ
1529UL_REQUIRES_LINUX([unshare])
1530UL_REQUIRES_SYSCALL_CHECK([unshare], [UL_CHECK_SYSCALL([unshare])])
2c2ff2ed 1531UL_REQUIRES_HAVE([unshare], [linux_capability_h], [linux/capability.h header file])
034d378b 1532AM_CONDITIONAL([BUILD_UNSHARE], [test "x$build_unshare" = xyes])
01e94325
KZ
1533
1534AC_MSG_CHECKING([for valid unshare() function])
1535AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1536#include <sched.h>
1537]],[[
1538 int ret;
1539 ret = unshare(0);
1540 if (ret != 0) {
1541 return 1;
1542 }
1543 ]])],[
1544 AC_MSG_RESULT([yes])
1545 AC_DEFINE([HAVE_UNSHARE], [1], [Have valid unshare() function])],
1546[
1547 AC_MSG_RESULT([no])
1548])
1549
b3425806 1550
f8aa8e94
EB
1551AC_ARG_ENABLE([nsenter],
1552 AS_HELP_STRING([--disable-nsenter], [do not build nsenter]),
08b1c219 1553 [], [UL_DEFAULT_ENABLE([nsenter], [check])]
f8aa8e94
EB
1554)
1555UL_BUILD_INIT([nsenter])
1556UL_REQUIRES_LINUX([nsenter])
7a3b35b9 1557UL_REQUIRES_HAVE([nsenter], [setns_syscall], [setns syscall])
034d378b 1558AM_CONDITIONAL([BUILD_NSENTER], [test "x$build_nsenter" = xyes])
01e94325
KZ
1559
1560AC_MSG_CHECKING([for valid setns() function])
1561AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1562#include <sched.h>
1563#include <errno.h>
1564]],[[
1565 int ret;
1566 ret = setns(0, 0);
1567 if (ret != EINVAL && ret != EBADF && ret != EPERM) {
1568 return 1;
1569 }
1570 ]])],[
1571 AC_MSG_RESULT([yes])
1572 AC_DEFINE([HAVE_SETNS], [1], [Have valid setns() function])],
1573[
1574 AC_MSG_RESULT([no])
1575])
b3425806 1576
17d71034
KZ
1577
1578AC_ARG_WITH([cap_ng],
801afcb0 1579 AS_HELP_STRING([--without-cap-ng], [compile without libcap-ng]),
17d71034
KZ
1580 [], [with_cap_ng=auto]
1581)
801afcb0
MF
1582AS_IF([test "x$with_cap_ng" = xno], [
1583 AM_CONDITIONAL([HAVE_CAP_NG], [false])
1584 have_cap_ng=no
1585],[
17d71034
KZ
1586 UL_CHECK_LIB([cap-ng], [capng_apply], [cap_ng])
1587])
1588
1589
5600c405
AL
1590AC_ARG_ENABLE([setpriv],
1591 AS_HELP_STRING([--disable-setpriv], [do not build setpriv]),
08b1c219 1592 [], [UL_DEFAULT_ENABLE([setpriv], [check])]
5600c405
AL
1593)
1594UL_BUILD_INIT([setpriv])
1595UL_REQUIRES_LINUX([setpriv])
2c2ff2ed
KZ
1596UL_REQUIRES_HAVE([setpriv], [linux_securebits_h], [linux/securebits.h header file])
1597UL_REQUIRES_HAVE([setpriv], [linux_capability_h], [linux/capability.h header file])
e1b8ba20 1598UL_REQUIRES_HAVE([setpriv], [cap_ng], [libcap-ng library])
034d378b 1599AM_CONDITIONAL([BUILD_SETPRIV], [test "x$build_setpriv" = xyes])
5600c405 1600
04ae85a7
RM
1601AC_ARG_ENABLE([hardlink],
1602 AS_HELP_STRING([--disable-hardlink], [do not build hardlink]),
1603 [], [UL_DEFAULT_ENABLE([hardlink], [check])]
1604)
1605UL_BUILD_INIT([hardlink])
1606AM_CONDITIONAL([BUILD_HARDLINK], [test "x$build_hardlink" = xyes])
5600c405 1607
43989bad 1608
539feec1
ML
1609AC_ARG_ENABLE([eject],
1610 AS_HELP_STRING([--disable-eject], [do not build eject]),
08b1c219 1611 [], [UL_DEFAULT_ENABLE([eject], [check])]
539feec1
ML
1612)
1613UL_BUILD_INIT([eject])
1614UL_REQUIRES_LINUX([eject])
7770e7df 1615UL_REQUIRES_BUILD([eject], [libmount])
034d378b 1616AM_CONDITIONAL([BUILD_EJECT], [test "x$build_eject" = xyes])
539feec1
ML
1617
1618
48d7b13a 1619AC_ARG_ENABLE([agetty],
7fa4f112 1620 AS_HELP_STRING([--disable-agetty], [do not build agetty]),
d00c10ed 1621 [], [UL_DEFAULT_ENABLE([agetty], [check])]
48d7b13a 1622)
61a074f7 1623UL_BUILD_INIT([agetty])
b4b919fe 1624UL_REQUIRES_HAVE([agetty], [utmpx_h], [utmpx.h header])
73afd3f8 1625UL_REQUIRES_HAVE([agetty], [gnu_utmpx], [GNU utmpx functions])
034d378b 1626AM_CONDITIONAL([BUILD_AGETTY], [test "x$build_agetty" = xyes])
948182f4 1627AS_IF([test "x$have_futimens" = xyes && test "x$have_inotify_init1" = xyes ], [
90d5285d
KZ
1628 AC_DEFINE([AGETTY_RELOAD], [1], [Enable agetty --reload feature])
1629],[
1630 AC_MSG_WARN([futimens or inotify_init1 not found; agetty(8) will not provide ---reload functionality])
1631])
0fc74be1 1632
48d7b13a 1633
1eb16fd7 1634AC_ARG_ENABLE([plymouth_support],
c89edac5 1635 AS_HELP_STRING([--disable-plymouth_support], [do not care about plymouth in sulogin(8) and agetty(8)]),
d67f61c0 1636 [], [enable_plymouth_support=check]
1eb16fd7
KZ
1637)
1638UL_BUILD_INIT([plymouth_support])
1639UL_REQUIRES_HAVE([plymouth_support], [tiocglcktrmios], [TIOCGLCKTRMIOS flag])
1640UL_REQUIRES_HAVE([plymouth_support], [sock_cloexec], [SOCK_CLOEXEC flag])
1641UL_REQUIRES_HAVE([plymouth_support], [sock_nonblock], [SOCK_NONBLOCK flag])
1642UL_REQUIRES_HAVE([plymouth_support], [so_passcred], [SO_PASSCRED flag])
1643AM_CONDITIONAL([USE_PLYMOUTH_SUPPORT], [test "x$build_plymouth_support" = xyes])
1644AS_IF([test "x$build_plymouth_support" = xyes ], [
c89edac5 1645 AC_DEFINE([USE_PLYMOUTH_SUPPORT], [1], [Enable plymouth support feature for sulogin and agetty])
1eb16fd7
KZ
1646])
1647
1648
17d71034
KZ
1649AC_ARG_WITH([libz],
1650 AS_HELP_STRING([--without-libz], [compile without libz]),
1651 [], [with_libz=auto]
1652)
1653AS_IF([test "x$with_libz" = xno], [have_z=no], [
1654 AC_CHECK_LIB([z], [crc32], [have_z=yes], [have_z=no])
1655])
1656
09070e1a
SK
1657AC_ARG_WITH([libmagic],
1658 AS_HELP_STRING([--without-libmagic], [compile without libmagic]),
1659 [], [with_libmagic=auto]
1660)
1661AS_IF([test "x$with_libmagic" = xno], [have_magic=no], [
1662 AC_CHECK_LIB([magic], [magic_open], [
263381dd
MM
1663 AC_CHECK_HEADER(magic.h, [
1664 AC_DEFINE([HAVE_MAGIC], [1], [Define to 1 if you have the libmagic present.])
1665 MAGIC_LIBS="-lmagic"
1666 ])
09070e1a
SK
1667 ])
1668])
1669AC_SUBST([MAGIC_LIBS])
1670
17d71034 1671
9cb68977 1672AC_ARG_ENABLE([cramfs],
7fa4f112 1673 AS_HELP_STRING([--disable-cramfs], [do not build fsck.cramfs, mkfs.cramfs]),
08b1c219 1674 [], [UL_DEFAULT_ENABLE([cramfs], [check])]
9cb68977 1675)
61a074f7 1676UL_BUILD_INIT([cramfs])
d81b5a52 1677UL_REQUIRES_HAVE([cramfs], [z], [z library])
034d378b 1678AM_CONDITIONAL([BUILD_CRAMFS], [test "x$build_cramfs" = xyes])
9cb68977 1679
a13cdb7a 1680
8d6f0bae 1681AC_ARG_ENABLE([bfs],
834fc88c 1682 AS_HELP_STRING([--disable-bfs], [do not build mkfs.bfs]),
08b1c219 1683 [], [UL_DEFAULT_ENABLE([bfs], [yes])]
834fc88c
KZ
1684)
1685UL_BUILD_INIT([bfs])
034d378b 1686AM_CONDITIONAL([BUILD_BFS], [test "x$build_bfs" = xyes])
834fc88c
KZ
1687
1688
3d9fdac5
KZ
1689AC_ARG_ENABLE([minix],
1690 AS_HELP_STRING([--disable-minix], [do not build fsck.minix, mkfs.minix]),
08b1c219 1691 [], [UL_DEFAULT_ENABLE([minix], [yes])]
3d9fdac5
KZ
1692)
1693UL_BUILD_INIT([minix])
1694AM_CONDITIONAL([BUILD_MINIX], [test "x$build_minix" = xyes])
1695
1696
8d6f0bae 1697AC_ARG_ENABLE([fdformat],
13b26e3c
SK
1698 AS_HELP_STRING([--enable-fdformat], [build fdformat]),
1699 [], [UL_DEFAULT_ENABLE([fdformat], [no])]
8d6f0bae
KZ
1700)
1701UL_BUILD_INIT([fdformat])
1702UL_REQUIRES_LINUX([fdformat])
034d378b 1703AM_CONDITIONAL([BUILD_FDFORMAT], [test "x$build_fdformat" = xyes])
8d6f0bae
KZ
1704
1705
6acf31ac
KZ
1706AC_ARG_ENABLE([hwclock],
1707 AS_HELP_STRING([--disable-hwclock], [do not build hwclock]),
08b1c219 1708 [], [UL_DEFAULT_ENABLE([hwclock], [check])]
6acf31ac
KZ
1709)
1710have_linuxdummy=$linux_os
1711
1712UL_BUILD_INIT([hwclock])
1713UL_REQUIRES_HAVE([hwclock], [io, linuxdummy], [ioperm iopl function or Linux])
034d378b 1714AM_CONDITIONAL([BUILD_HWCLOCK], [test "x$build_hwclock" = xyes])
e09ebf22 1715
b1062292 1716AC_ARG_ENABLE([hwclock_cmos],
88bc304b 1717 AS_HELP_STRING([--disable-hwclock-cmos], [do not use CMOS clock]),
b1062292 1718 [], [enable_hwclock_cmos=check]
88bc304b 1719)
b1062292
KZ
1720UL_BUILD_INIT([hwclock_cmos])
1721UL_REQUIRES_BUILD([hwclock_cmos], [hwclock])
1722UL_REQUIRES_ARCH([hwclock_cmos], [i?86-*,x86_64*])
1723AM_CONDITIONAL([USE_HWCLOCK_CMOS], [test "x$build_hwclock_cmos" = xyes])
1724AS_IF([test "x$build_hwclock_cmos" = xyes ], [
1725 AC_DEFINE([USE_HWCLOCK_CMOS], [1], [Define to 1 if want to use CMOS clock.])
88bc304b
CS
1726])
1727
e8c21c89
KZ
1728AC_ARG_ENABLE([hwclock_gplv3],
1729 AS_HELP_STRING([--disable-hwclock-gplv3], [do not use datetime parsing GPLv3 code]),
1730 [], [enable_hwclock_gplv3=yes]
1731)
1732AM_CONDITIONAL([USE_HWCLOCK_GPLv3_DATETIME], [test "x$enable_hwclock_gplv3" = xyes])
1733AS_IF([test "x$enable_hwclock_gplv3" = xyes ], [
1734 AC_DEFINE([USE_HWCLOCK_GPLv3_DATETIME], [1], [use datetime parsing GPLv3 code to hwclock])
1735])
1736
88bc304b 1737
5ec1108c 1738AC_ARG_ENABLE([mkfs],
1739 AS_HELP_STRING([--disable-mkfs], [do not build mkfs(8)]),
1740 [], [UL_DEFAULT_ENABLE([mkfs], [check])]
1741)
1742UL_BUILD_INIT([mkfs])
ecc6047e
KZ
1743AM_CONDITIONAL([BUILD_MKFS], [test "x$build_mkfs" = xyes])
1744
1745UL_BUILD_INIT([isosize], [yes])
1746AM_CONDITIONAL([BUILD_ISOSIZE], [test "x$build_isosize" = xyes])
1747
3d9fdac5 1748
5ec1108c 1749AC_ARG_ENABLE([fstrim],
1750 AS_HELP_STRING([--disable-fstrim], [do not build fstrim(8)]),
1751 [], [UL_DEFAULT_ENABLE([fstrim], [check])]
1752)
1753UL_BUILD_INIT([fstrim])
7b040214
KZ
1754UL_REQUIRES_LINUX([fstrim])
1755UL_REQUIRES_BUILD([fstrim], [libmount])
1756AM_CONDITIONAL([BUILD_FSTRIM], [test "x$build_fstrim" = xyes])
1757
1758
5ec1108c 1759AC_ARG_ENABLE([swapon],
1760 AS_HELP_STRING([--disable-swapon], [do not build swapon(8) and swapoff(8)]),
1761 [], [UL_DEFAULT_ENABLE([swapon], [check])]
1762)
1763UL_BUILD_INIT([swapon])
143635c9 1764UL_REQUIRES_LINUX([swapon])
cf9b16f1
KZ
1765UL_REQUIRES_SYSCALL_CHECK([swapon], [UL_CHECK_SYSCALL([swapon])], [swapon])
1766UL_REQUIRES_SYSCALL_CHECK([swapon], [UL_CHECK_SYSCALL([swapoff])], [swapoff])
143635c9 1767UL_REQUIRES_BUILD([swapon], [libblkid])
7770e7df 1768UL_REQUIRES_BUILD([swapon], [libmount])
7477f356 1769UL_REQUIRES_BUILD([swapon], [libsmartcols])
034d378b 1770AM_CONDITIONAL([BUILD_SWAPON], [test "x$build_swapon" = xyes])
cf9b16f1
KZ
1771AC_CHECK_FUNCS([swapon])
1772AC_CHECK_FUNCS([swapoff])
143635c9
KZ
1773
1774
61a074f7 1775UL_BUILD_INIT([lsblk], [check])
a13cdb7a
KZ
1776UL_REQUIRES_LINUX([lsblk])
1777UL_REQUIRES_BUILD([lsblk], [libblkid])
9554f7ab 1778UL_REQUIRES_BUILD([lsblk], [libmount])
7477f356 1779UL_REQUIRES_BUILD([lsblk], [libsmartcols])
034d378b 1780AM_CONDITIONAL([BUILD_LSBLK], [test "x$build_lsblk" = xyes])
9cb68977 1781
a3d3b770 1782
5ec1108c 1783AC_ARG_ENABLE([lscpu],
1784 AS_HELP_STRING([--disable-lscpu], [do not build lscpu]),
1785 [], [UL_DEFAULT_ENABLE([lscpu], [check])]
1786)
1787UL_BUILD_INIT([lscpu])
da396d88 1788UL_REQUIRES_LINUX([lscpu])
7477f356 1789UL_REQUIRES_BUILD([lscpu], [libsmartcols])
da396d88 1790UL_REQUIRES_HAVE([lscpu], [cpu_set_t], [cpu_set_t type])
034d378b 1791AM_CONDITIONAL([BUILD_LSCPU], [test "x$build_lscpu" = xyes])
da396d88 1792
f2c3f2c7
AP
1793AC_ARG_ENABLE([lsfd],
1794 AS_HELP_STRING([--disable-lsfd], [do not build lsfd]),
1795 [], [UL_DEFAULT_ENABLE([lsfd], [check])]
1796)
1797UL_BUILD_INIT([lsfd])
128beb71
MY
1798UL_REQUIRES_LINUX([lsfd])
1799UL_REQUIRES_BUILD([lsfd], [libsmartcols])
f4d700d7 1800UL_REQUIRES_HAVE([lsfd], [linux_kcmp_h], [linux/kcmp.h header file])
128beb71 1801AM_CONDITIONAL([BUILD_LSFD], [test "x$build_lsfd" = xyes])
a3d3b770 1802
50e6f15b
RM
1803AC_ARG_ENABLE([lslogins],
1804 AS_HELP_STRING([--disable-lslogins], [do not build lslogins]),
1805 [], [UL_DEFAULT_ENABLE([lslogins], [check])]
1806)
1807UL_BUILD_INIT([lslogins])
ab1cfad5 1808UL_REQUIRES_BUILD([lslogins], [libsmartcols])
d00c10ed 1809UL_REQUIRES_HAVE([lslogins], [shadow_h], [shadow.h header])
b4b919fe 1810UL_REQUIRES_HAVE([lslogins], [utmpx_h], [utmpx.h header])
73afd3f8 1811UL_REQUIRES_HAVE([lslogins], [gnu_utmpx], [GNU utmpx functions])
ab1cfad5
OO
1812AM_CONDITIONAL([BUILD_LSLOGINS], [test "x$build_lslogins" = xyes])
1813
1814
61a074f7 1815UL_BUILD_INIT([chcpu], [check])
da396d88
KZ
1816UL_REQUIRES_LINUX([chcpu])
1817UL_REQUIRES_HAVE([chcpu], [cpu_set_t], [cpu_set_t type])
034d378b 1818AM_CONDITIONAL([BUILD_CHCPU], [test "x$build_chcpu" = xyes])
da396d88 1819
a13cdb7a 1820
7fcccbdf
KZ
1821AC_ARG_ENABLE([wdctl],
1822 AS_HELP_STRING([--disable-wdctl], [do not build wdctl]),
08b1c219 1823 [], [UL_DEFAULT_ENABLE([wdctl], [check])]
7fcccbdf
KZ
1824)
1825UL_BUILD_INIT([wdctl])
5b0289b9 1826UL_REQUIRES_LINUX([wdctl])
7477f356 1827UL_REQUIRES_BUILD([wdctl], [libsmartcols])
5b0289b9 1828UL_REQUIRES_HAVE([wdctl], [linux_watchdog_h], [linux/watchdog.h header file])
034d378b 1829AM_CONDITIONAL([BUILD_WDCTL], [test "x$build_wdctl" = xyes])
5b0289b9
KZ
1830
1831
54dbc8cf
KZ
1832UL_BUILD_INIT([swaplabel], [check])
1833UL_REQUIRES_BUILD([swaplabel], [libblkid])
034d378b 1834AM_CONDITIONAL([BUILD_SWAPLABEL], [test "x$build_swaplabel" = xyes])
54dbc8cf
KZ
1835
1836
ecc6047e
KZ
1837UL_BUILD_INIT([mkswap], [yes])
1838AM_CONDITIONAL([BUILD_MKSWAP], [test "x$build_mkswap" = xyes])
948182f4 1839AS_IF([test "x$build_mkswap" = xyes && test "x$build_libuuid" != xyes], [
08b1c219
KZ
1840 AC_MSG_WARN([uuid library is not found; mkswap(8) will not generate UUIDs])
1841])
ecc6047e 1842
328eb445
KZ
1843
1844AC_ARG_ENABLE([cal],
1845 AS_HELP_STRING([--disable-cal], [do not build cal]),
1846 [], [UL_DEFAULT_ENABLE([cal], [check])]
1847)
1848UL_BUILD_INIT([cal])
1b15cbd1
KZ
1849AM_CONDITIONAL([BUILD_CAL], [test "x$build_cal" = xyes])
1850
50e6f15b
RM
1851AC_ARG_ENABLE([logger],
1852 AS_HELP_STRING([--disable-logger], [do not build logger]),
1853 [], [UL_DEFAULT_ENABLE([logger], [check])]
1854)
1855UL_BUILD_INIT([logger])
1b15cbd1
KZ
1856AM_CONDITIONAL([BUILD_LOGGER], [test "x$build_logger" = xyes])
1857
4c838e6c 1858UL_BUILD_INIT([look], [yes])
1b15cbd1
KZ
1859AM_CONDITIONAL([BUILD_LOOK], [test "x$build_look" = xyes])
1860
1861UL_BUILD_INIT([mcookie], [yes])
1862AM_CONDITIONAL([BUILD_MCOOKIE], [test "x$build_mcookie" = xyes])
1863
1864UL_BUILD_INIT([namei], [yes])
1865AM_CONDITIONAL([BUILD_NAMEI], [test "x$build_namei" = xyes])
1866
c9ab7387
AH
1867matriplet="$($CC -print-multiarch 2>/dev/null || true)"
1868if test "x$matriplet" != "x"; then
1869 AC_DEFINE_UNQUOTED([MULTIARCHTRIPLET], ["$matriplet"],
1870 ["Multi-arch triplet for whereis library search path"])
1871fi
b7fc158a
SN
1872AC_ARG_ENABLE([whereis],
1873 AS_HELP_STRING([--disable-whereis], [do not build whereis]),
1874 [], [UL_DEFAULT_ENABLE([whereis], [check])]
1875)
1876UL_BUILD_INIT([whereis])
1b15cbd1
KZ
1877AM_CONDITIONAL([BUILD_WHEREIS], [test "x$build_whereis" = xyes])
1878
c221578e
NS
1879AC_ARG_ENABLE([pipesz],
1880 AS_HELP_STRING([--disable-pipesz], [do not build pipesz]),
62604365 1881 [], [UL_DEFAULT_ENABLE([pipesz], [check])]
c221578e
NS
1882)
1883UL_BUILD_INIT([pipesz])
1884UL_REQUIRES_LINUX([pipesz])
1885AM_CONDITIONAL([BUILD_PIPESZ], [test "x$build_pipesz" = xyes])
1886
642e1c69
MY
1887UL_BUILD_INIT([fadvise], [check])
1888UL_REQUIRES_LINUX([fadvise])
1889AM_CONDITIONAL([BUILD_FADVISE], [test "x$build_fadvise" = xyes])
1890
c0d75916
FS
1891AC_ARG_ENABLE([waitpid],
1892 AS_HELP_STRING([--disable-waitpid], [do not build waitpid]),
58c16c84 1893 [], [UL_DEFAULT_ENABLE([waitpid], [check])]
c0d75916
FS
1894)
1895UL_BUILD_INIT([waitpid])
550d32c4 1896UL_REQUIRES_LINUX([waitpid])
ffdd75cc 1897UL_REQUIRES_SYSCALL_CHECK([waitpid], [UL_CHECK_SYSCALL([pidfd_open])], [pidfd_open])
550d32c4
TW
1898AM_CONDITIONAL([BUILD_WAITPID], [test "x$build_waitpid" = xyes])
1899
cba52cc1
TW
1900UL_BUILD_INIT([enosys], [check])
1901UL_REQUIRES_LINUX([enosys])
3e0bbb12
TW
1902AS_IF([test "x$build_enosys" = xyes], [
1903 AC_MSG_CHECKING([for valid audit arch])
1904 AC_COMPILE_IFELSE(
1905 [AC_LANG_PROGRAM([[#include "${srcdir}/include/audit-arch.h"]])],
1906 [AC_MSG_RESULT([yes])],
1907 [AC_MSG_RESULT([no])
1908 build_enosys=no
1909 ])
1910])
cba52cc1
TW
1911AM_CONDITIONAL([BUILD_ENOSYS], [test "x$build_enosys" = xyes])
1912
22c41e99
KZ
1913UL_BUILD_INIT([lsclocks], [check])
1914UL_REQUIRES_LINUX([lsclocks])
e9ddea79
TW
1915AM_CONDITIONAL([BUILD_LSCLOCKS], [test "x$build_lsclocks" = xyes])
1916
3adaaa15
KZ
1917UL_BUILD_INIT([getopt], [yes])
1918AM_CONDITIONAL([BUILD_GETOPT], [test "x$build_getopt" = xyes])
1919
ecc6047e
KZ
1920
1921UL_BUILD_INIT([blockdev], [check])
1922UL_REQUIRES_LINUX([blockdev])
1923AM_CONDITIONAL([BUILD_BLOCKDEV], [test "x$build_blockdev" = xyes])
1924
1925
945ac250
KZ
1926UL_BUILD_INIT([prlimit], [check])
1927UL_REQUIRES_LINUX([prlimit])
7477f356 1928UL_REQUIRES_BUILD([prlimit], [libsmartcols])
945ac250 1929UL_REQUIRES_SYSCALL_CHECK([prlimit], [UL_CHECK_SYSCALL([prlimit64])], [prlimit64])
034d378b 1930AM_CONDITIONAL([BUILD_PRLIMIT], [test "x$build_prlimit" = xyes])
3013eb9d 1931AS_IF([test "x$build_prlimit" = xyes], [
01e94325
KZ
1932 dnl check for valid prlimit() function
1933 AC_MSG_CHECKING([for valid prlimit() function])
1934 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1935#include <sys/types.h>
1936#include <sys/time.h>
1937#include <sys/resource.h>
1938#include <stddef.h>
1939]],[[
1940 int ret;
1941 ret = prlimit(0, RLIMIT_AS, NULL, NULL);
1942 if (ret != 0) {
1943 return 1;
1944 }
1945 ]])],[
1946 AC_MSG_RESULT([yes])
1947 AC_DEFINE([HAVE_PRLIMIT], [1], [Have valid prlimit() function])],[
1948 AC_MSG_RESULT([no])])
3013eb9d 1949])
945ac250
KZ
1950
1951
01e94325 1952
3dc02ef4
DB
1953UL_BUILD_INIT([lslocks], [check])
1954UL_REQUIRES_LINUX([lslocks])
ec1204dc 1955UL_REQUIRES_BUILD([lslocks], [libmount])
7477f356 1956UL_REQUIRES_BUILD([lslocks], [libsmartcols])
034d378b 1957AM_CONDITIONAL([BUILD_LSLOCKS], [test "x$build_lslocks" = xyes])
3dc02ef4
DB
1958
1959
bd671347
KZ
1960AC_ARG_ENABLE([switch_root],
1961 AS_HELP_STRING([--disable-switch_root], [do not build switch_root]),
08b1c219 1962 [], [UL_DEFAULT_ENABLE([switch_root], [check])]
bd671347 1963)
61a074f7 1964UL_BUILD_INIT([switch_root])
a3d3b770
KZ
1965UL_REQUIRES_LINUX([switch_root])
1966UL_REQUIRES_HAVE([switch_root], [openat], [openat function])
a68ed87f 1967UL_REQUIRES_HAVE([switch_root], [dirfd,ddfd], [dirfd or ddfd function])
034d378b 1968AM_CONDITIONAL([BUILD_SWITCH_ROOT], [test "x$build_switch_root" = xyes])
bd671347
KZ
1969
1970
11125e7a
KZ
1971AC_ARG_ENABLE([pivot_root],
1972 AS_HELP_STRING([--disable-pivot_root], [do not build pivot_root]),
08b1c219 1973 [], [UL_DEFAULT_ENABLE([pivot_root], [check])]
11125e7a 1974)
61a074f7 1975UL_BUILD_INIT([pivot_root])
5cbbdfbf 1976UL_REQUIRES_LINUX([pivot_root])
9f632667 1977UL_REQUIRES_SYSCALL_CHECK([pivot_root], [UL_CHECK_SYSCALL([pivot_root])])
034d378b 1978AM_CONDITIONAL([BUILD_PIVOT_ROOT], [test "x$build_pivot_root" = xyes])
11125e7a
KZ
1979
1980
c12fc5e1 1981UL_BUILD_INIT([flock], [check])
3001923b 1982UL_REQUIRES_HAVE([flock], [timer], [timer_create/setitimer function])
205dbb7a
KZ
1983AM_CONDITIONAL([BUILD_FLOCK], [test "x$build_flock" = xyes])
1984
bdfe4601 1985
cad2d1ac
HC
1986AC_ARG_ENABLE([lsmem],
1987 AS_HELP_STRING([--disable-lsmem], [do not build lsmem]),
bdfe4601 1988 [], [UL_DEFAULT_ENABLE([lsmem], [check])]
cad2d1ac
HC
1989)
1990UL_BUILD_INIT([lsmem])
bdfe4601 1991UL_REQUIRES_LINUX([lsmem])
8b7f00a8 1992UL_REQUIRES_BUILD([lsmem], [libsmartcols])
cad2d1ac
HC
1993AM_CONDITIONAL([BUILD_LSMEM], [test "x$build_lsmem" = xyes])
1994
bdfe4601 1995
30e1ea8b
HC
1996AC_ARG_ENABLE([chmem],
1997 AS_HELP_STRING([--disable-chmem], [do not build chmem]),
bdfe4601 1998 [], [UL_DEFAULT_ENABLE([chmem], [check])]
30e1ea8b
HC
1999)
2000UL_BUILD_INIT([chmem])
bdfe4601 2001UL_REQUIRES_LINUX([chmem])
30e1ea8b
HC
2002AM_CONDITIONAL([BUILD_CHMEM], [test "x$build_chmem" = xyes])
2003
205dbb7a 2004
45020b67
KZ
2005AC_ARG_ENABLE([ipcmk],
2006 AS_HELP_STRING([--disable-ipcmk], [do not build ipcmk]),
2007 [], [UL_DEFAULT_ENABLE([ipcmk], [check])]
2008)
2009UL_BUILD_INIT([ipcmk])
2010UL_EXCLUDE_ARCH([ipcmk], [*darwin*])
2011AM_CONDITIONAL([BUILD_IPCMK], [test "x$build_ipcmk" = xyes])
bdfe4601 2012
42a4a152
RM
2013AC_ARG_ENABLE([ipcrm],
2014 AS_HELP_STRING([--disable-ipcrm], [do not build ipcrm]),
45020b67 2015 [], [UL_DEFAULT_ENABLE([ipcrm], [check])]
42a4a152
RM
2016)
2017UL_BUILD_INIT([ipcrm])
45020b67 2018UL_EXCLUDE_ARCH([ipcrm], [*darwin*])
205dbb7a
KZ
2019AM_CONDITIONAL([BUILD_IPCRM], [test "x$build_ipcrm" = xyes])
2020
42a4a152
RM
2021AC_ARG_ENABLE([ipcs],
2022 AS_HELP_STRING([--disable-ipcs], [do not build ipcs]),
45020b67 2023 [], [UL_DEFAULT_ENABLE([ipcs], [check])]
42a4a152
RM
2024)
2025UL_BUILD_INIT([ipcs])
45020b67 2026UL_EXCLUDE_ARCH([ipcs], [*darwin*])
205dbb7a
KZ
2027AM_CONDITIONAL([BUILD_IPCS], [test "x$build_ipcs" = xyes])
2028
a0f62b0b 2029
4f6610f5
SK
2030AC_ARG_ENABLE([irqtop],
2031 AS_HELP_STRING([--disable-irqtop], [do not build irqtop]),
c61470c7 2032 [], [UL_DEFAULT_ENABLE([irqtop], [check])]
4f6610f5
SK
2033)
2034UL_BUILD_INIT([irqtop])
fa8c5cd5 2035UL_REQUIRES_LINUX([irqtop])
a0f62b0b
KZ
2036UL_REQUIRES_BUILD([irqtop], [libsmartcols])
2037UL_REQUIRES_HAVE([irqtop], [open_memstream], [open_memstream function])
2038UL_REQUIRES_HAVE([irqtop], [ncursesw,slang,ncurses], [ncursesw, ncurses or slang library])
4f6610f5
SK
2039AM_CONDITIONAL([BUILD_IRQTOP], [test "x$build_irqtop" = xyes])
2040
a0f62b0b
KZ
2041AC_ARG_ENABLE([lsirq],
2042 AS_HELP_STRING([--disable-lsirq], [do not build lsirq]),
c61470c7 2043 [], [UL_DEFAULT_ENABLE([lsirq], [check])]
a0f62b0b
KZ
2044)
2045UL_BUILD_INIT([lsirq])
2046UL_REQUIRES_LINUX([lsirq])
2047UL_REQUIRES_BUILD([lsirq], [libsmartcols])
2048AM_CONDITIONAL([BUILD_LSIRQ], [test "x$build_lsirq" = xyes])
2049
2050
8fa223da
KZ
2051UL_BUILD_INIT([choom], [check])
2052UL_REQUIRES_LINUX([choom])
2053AM_CONDITIONAL([BUILD_CHOOM], [test "x$build_choom" = xyes])
2054
9d20ffda
KZ
2055UL_BUILD_INIT([lsipc], [check])
2056UL_REQUIRES_LINUX([lsipc])
2057UL_REQUIRES_BUILD([lsipc], [libsmartcols])
2058AM_CONDITIONAL([BUILD_LSIPC], [test "x$build_lsipc" = xyes])
2059
dcf8f3b4
FF
2060AC_ARG_ENABLE([lsns],
2061 AS_HELP_STRING([--disable-lsns], [do not build lsns]),
2062 [], [UL_DEFAULT_ENABLE([lsns], [check])]
2063)
2064UL_BUILD_INIT([lsns])
8a204562
KZ
2065UL_REQUIRES_LINUX([lsns])
2066UL_REQUIRES_BUILD([lsns], [libsmartcols])
4b328279 2067UL_REQUIRES_BUILD([lsns], [libmount])
8a204562
KZ
2068AM_CONDITIONAL([BUILD_LSNS], [test "x$build_lsns" = xyes])
2069
205dbb7a
KZ
2070UL_BUILD_INIT([renice], [yes])
2071AM_CONDITIONAL([BUILD_RENICE], [test "x$build_renice" = xyes])
2072
3d47ab05
KZ
2073
2074AC_ARG_ENABLE([rfkill],
2075 AS_HELP_STRING([--disable-rfkill], [do not build rfkill]),
271552c7 2076 [], [UL_DEFAULT_ENABLE([rfkill], [check])]
3d47ab05
KZ
2077)
2078UL_BUILD_INIT([rfkill])
367f4080 2079UL_REQUIRES_LINUX([rfkill])
b3849c66 2080UL_REQUIRES_BUILD([rfkill], [libsmartcols])
c0d78c90
SK
2081AM_CONDITIONAL([BUILD_RFKILL], [test "x$build_rfkill" = xyes])
2082
3d47ab05 2083
f092076f
DDM
2084UL_BUILD_INIT([setpgid], [yes])
2085AM_CONDITIONAL([BUILD_SETPGID], [test "x$build_setpgid" = xyes])
2086
205dbb7a
KZ
2087UL_BUILD_INIT([setsid], [yes])
2088AM_CONDITIONAL([BUILD_SETSID], [test "x$build_setsid" = xyes])
2089
2090UL_BUILD_INIT([readprofile], [check])
2091UL_REQUIRES_LINUX([readprofile])
2092AM_CONDITIONAL([BUILD_READPROFILE], [test "x$build_readprofile" = xyes])
2093
2094UL_BUILD_INIT([dmesg], [check])
2095UL_REQUIRES_LINUX([dmesg])
2096AM_CONDITIONAL([BUILD_DMESG], [test "x$build_dmesg" = xyes])
2097
2098UL_BUILD_INIT([ctrlaltdel], [check])
2099UL_REQUIRES_LINUX([ctrlaltdel])
e52b58e6
CTV
2100dnl we assume reboot() to be the 1-argument variant, because even considering
2101dnl widely used alternative C libraries like uclibc, dietlibc and musl,
2102dnl reboot() with multiple arguments is yet only found in glibc versions
2103dnl earlier than 2.x.
9dd55a04 2104UL_REQUIRES_HAVE([ctrlaltdel], [reboot], [reboot function])
205dbb7a
KZ
2105AM_CONDITIONAL([BUILD_CTRLALTDEL], [test "x$build_ctrlaltdel" = xyes])
2106
a921a7de
MY
2107UL_BUILD_INIT([fincore], [check])
2108UL_REQUIRES_LINUX([fincore])
3e37d7b7 2109UL_REQUIRES_BUILD([fincore], [libsmartcols])
a921a7de
MY
2110AM_CONDITIONAL([BUILD_FINCORE], [test "x$build_fincore" = xyes])
2111
205dbb7a
KZ
2112UL_BUILD_INIT([fsfreeze], [check])
2113UL_REQUIRES_LINUX([fsfreeze])
2114AM_CONDITIONAL([BUILD_FSFREEZE], [test "x$build_fsfreeze" = xyes])
2115
2116UL_BUILD_INIT([blkdiscard], [check])
2117UL_REQUIRES_LINUX([blkdiscard])
2118AM_CONDITIONAL([BUILD_BLKDISCARD], [test "x$build_blkdiscard" = xyes])
2119
1ad8ef91
KZ
2120UL_BUILD_INIT([blkzone], [check])
2121UL_REQUIRES_LINUX([blkzone])
2122UL_REQUIRES_HAVE([blkzone], [linux_blkzoned_h], [linux/blkzoned.h header])
2123AM_CONDITIONAL([BUILD_BLKZONE], [test "x$build_blkzone" = xyes])
2124
627428a9 2125UL_BUILD_INIT([blkpr], [check])
2126UL_REQUIRES_LINUX([blkpr])
2127UL_REQUIRES_HAVE([blkpr], [linux_pr_h], [linux/pr.h header])
2128AM_CONDITIONAL([BUILD_BLKPR], [test "x$build_blkpr" = xyes])
2129
205dbb7a
KZ
2130UL_BUILD_INIT([ldattach], [check])
2131UL_REQUIRES_LINUX([ldattach])
2132AM_CONDITIONAL([BUILD_LDATTACH], [test "x$build_ldattach" = xyes])
2133
2134UL_BUILD_INIT([rtcwake], [check])
2135UL_REQUIRES_LINUX([rtcwake])
2136AM_CONDITIONAL([BUILD_RTCWAKE], [test "x$build_rtcwake" = xyes])
2137
2138UL_BUILD_INIT([setarch], [check])
2139UL_REQUIRES_LINUX([setarch])
2140AM_CONDITIONAL([BUILD_SETARCH], [test "x$build_setarch" = xyes])
2141
d4b58873
KZ
2142
2143# build_scriptutils= is just configure-only variable to control
2144# script, scriptreplay and scriptlive
2145AC_ARG_ENABLE([scriptutils],
2146 AS_HELP_STRING([--disable-scriptutils], [do not build script, scriptreplay and scriptlive]),
2147 [], [UL_DEFAULT_ENABLE([scriptutils], [check])]
2148)
2149
2150UL_ENABLE_ALIAS([script], [scriptutils])
2151UL_BUILD_INIT([script])
870235d0 2152UL_REQUIRES_HAVE([script], [pty], [openpty function (libutil)])
3f91b990
KZ
2153AM_CONDITIONAL([BUILD_SCRIPT], [test "x$build_script" = xyes])
2154
d4b58873
KZ
2155UL_ENABLE_ALIAS([scriptreplay], [scriptutils])
2156UL_BUILD_INIT([scriptreplay])
3f91b990
KZ
2157AM_CONDITIONAL([BUILD_SCRIPTREPLAY], [test "x$build_scriptreplay" = xyes])
2158
d4b58873
KZ
2159UL_ENABLE_ALIAS([scriptlive], [scriptutils])
2160UL_BUILD_INIT([scriptlive])
870235d0 2161UL_REQUIRES_HAVE([scriptlive], [pty], [openpty function (libutil)])
33869e5a
KZ
2162AM_CONDITIONAL([BUILD_SCRIPTLIVE], [test "x$build_scriptlive" = xyes])
2163
d4b58873 2164
8886d84e
TW
2165UL_BUILD_INIT([col], [check])
2166UL_REQUIRES_COMPILE([col], [#include <limits.h>], [__GLIBC__], [building for glibc])
cb45354e
KZ
2167AM_CONDITIONAL([BUILD_COL], [test "x$build_col" = xyes])
2168
2169UL_BUILD_INIT([colcrt], [yes])
2170AM_CONDITIONAL([BUILD_COLCRT], [test "x$build_colcrt" = xyes])
2171
2172UL_BUILD_INIT([colrm], [yes])
2173AM_CONDITIONAL([BUILD_COLRM], [test "x$build_colrm" = xyes])
2174
38d69192
KZ
2175UL_BUILD_INIT([column], [check])
2176UL_REQUIRES_BUILD([column], [libsmartcols])
cb45354e
KZ
2177AM_CONDITIONAL([BUILD_COLUMN], [test "x$build_column" = xyes])
2178
2179UL_BUILD_INIT([hexdump], [yes])
2180AM_CONDITIONAL([BUILD_HEXDUMP], [test "x$build_hexdump" = xyes])
2181
2182UL_BUILD_INIT([rev], [yes])
2183AM_CONDITIONAL([BUILD_REV], [test "x$build_rev" = xyes])
2184
3f91b990 2185
1342ffcb
SK
2186AC_ARG_ENABLE([tunelp],
2187 AS_HELP_STRING([--enable-tunelp], [build tunelp]),
08b1c219 2188 [], [UL_DEFAULT_ENABLE([tunelp], [no])]
1342ffcb
SK
2189)
2190UL_BUILD_INIT([tunelp])
2191UL_REQUIRES_LINUX([tunelp])
034d378b 2192AM_CONDITIONAL([BUILD_TUNELP], [test "x$build_tunelp" = xyes])
1342ffcb
SK
2193
2194
48d7b13a 2195AC_ARG_ENABLE([kill],
4be753aa 2196 AS_HELP_STRING([--disable-kill], [do not build kill]),
08b1c219 2197 [], [UL_DEFAULT_ENABLE([kill], [check])]
48d7b13a 2198)
61a074f7 2199UL_BUILD_INIT([kill])
4be753aa 2200UL_REQUIRES_LINUX([kill])
034d378b 2201AM_CONDITIONAL([BUILD_KILL], [test "x$build_kill" = xyes])
48d7b13a 2202
ce602720 2203
48d7b13a 2204AC_ARG_ENABLE([last],
ce602720 2205 AS_HELP_STRING([--disable-last], [do not build last]),
08b1c219 2206 [], [UL_DEFAULT_ENABLE([last], [check])]
48d7b13a 2207)
61a074f7 2208UL_BUILD_INIT([last])
b4b919fe 2209UL_REQUIRES_HAVE([last], [utmpx_h], [utmpx.h header])
73afd3f8 2210UL_REQUIRES_HAVE([last], [gnu_utmpx], [GNU utmpx functions])
034d378b 2211AM_CONDITIONAL([BUILD_LAST], [test "x$build_last" = xyes])
2dc68529 2212
48d7b13a 2213
78d5ceac 2214AC_ARG_ENABLE([utmpdump],
c9b53461 2215 AS_HELP_STRING([--disable-utmpdump], [do not build utmpdump]),
d00c10ed 2216 [], [UL_DEFAULT_ENABLE([utmpdump], [check])]
78d5ceac
KZ
2217)
2218UL_BUILD_INIT([utmpdump])
b4b919fe 2219UL_REQUIRES_HAVE([utmpdump], [utmpx_h], [utmpx.h header])
73afd3f8 2220UL_REQUIRES_HAVE([utmpdump], [gnu_utmpx], [GNU utmpx functions])
034d378b 2221AM_CONDITIONAL([BUILD_UTMPDUMP], [test "x$build_utmpdump" = xyes])
78d5ceac
KZ
2222
2223
c135a8bd
SK
2224AC_ARG_ENABLE([line],
2225 AS_HELP_STRING([--enable-line], [build line]),
08b1c219 2226 [], [UL_DEFAULT_ENABLE([line], [no])]
c135a8bd 2227)
61a074f7 2228UL_BUILD_INIT([line])
034d378b 2229AM_CONDITIONAL([BUILD_LINE], [test "x$build_line" = xyes])
2dc68529 2230
48d7b13a
KZ
2231
2232AC_ARG_ENABLE([mesg],
5c0b406d 2233 AS_HELP_STRING([--disable-mesg], [do not build mesg]),
08b1c219 2234 [], [UL_DEFAULT_ENABLE([mesg], [yes])]
48d7b13a 2235)
61a074f7 2236UL_BUILD_INIT([mesg])
034d378b 2237AM_CONDITIONAL([BUILD_MESG], [test "x$build_mesg" = xyes])
48d7b13a
KZ
2238
2239
48d7b13a 2240AC_ARG_ENABLE([raw],
5c0b406d 2241 AS_HELP_STRING([--disable-raw], [do not build raw]),
08b1c219 2242 [], [UL_DEFAULT_ENABLE([raw], [check])]
48d7b13a 2243)
61a074f7 2244UL_BUILD_INIT([raw])
16ba8d58
KZ
2245UL_REQUIRES_LINUX([raw])
2246UL_REQUIRES_HAVE([raw], [linux_raw_h], [raw.h header file])
034d378b 2247AM_CONDITIONAL([BUILD_RAW], [test "x$build_raw" = xyes])
48d7b13a
KZ
2248
2249
48d7b13a 2250AC_ARG_ENABLE([rename],
7fa4f112 2251 AS_HELP_STRING([--disable-rename], [do not build rename]),
08b1c219 2252 [], [UL_DEFAULT_ENABLE([rename], [yes])]
48d7b13a 2253)
61a074f7 2254UL_BUILD_INIT([rename])
034d378b 2255AM_CONDITIONAL([BUILD_RENAME], [test "x$build_rename" = xyes])
48d7b13a
KZ
2256
2257
cc76731e
KZ
2258AC_ARG_ENABLE([vipw],
2259 AS_HELP_STRING([--enable-vipw], [build vipw]),
08b1c219 2260 [], [UL_DEFAULT_ENABLE([vipw], [no])]
48d7b13a 2261)
cc76731e 2262UL_BUILD_INIT([vipw])
d00c10ed 2263UL_REQUIRES_HAVE([vipw], [shadow_h], [shadow.h header])
034d378b 2264AM_CONDITIONAL([BUILD_VIPW], [test "x$build_vipw" = xyes])
9cb68977 2265
c94b3604 2266
aec9ecbd
KZ
2267AC_ARG_ENABLE([newgrp],
2268 AS_HELP_STRING([--enable-newgrp], [build newgrp]),
08b1c219 2269 [], [UL_DEFAULT_ENABLE([newgrp], [no])]
aec9ecbd
KZ
2270)
2271UL_BUILD_INIT([newgrp])
8229ed2f 2272UL_REQUIRES_HAVE([newgrp], [crypt], [crypt function])
034d378b 2273AM_CONDITIONAL([BUILD_NEWGRP], [test "x$build_newgrp" = xyes])
aec9ecbd
KZ
2274
2275
d86918b6 2276AC_ARG_WITH([user], AS_HELP_STRING([--without-user], [compile without libuser (remote chsh)]),
034d378b 2277 [], [with_user=check]
7e4714f2 2278)
6e93c52f 2279have_user=no
3013eb9d 2280AS_IF([test "x$with_user" != xno], [
2771954b 2281 PKG_CHECK_MODULES(LIBUSER,[libuser >= 0.58], [have_user=yes], [have_user=no])
9f57e6e8
SK
2282 AS_CASE([$with_user:$have_user],
2283 [yes:no],
2284 [AC_MSG_ERROR([user selected but libuser not found])],
2285 [*:yes],
2286 [AC_DEFINE([HAVE_LIBUSER], [1], [Define if libuser is available])]
2287 )
1f6ec24c
KZ
2288 # temporary solution, libuser has stupid .pc where are exported all
2289 # private dependencies to Requires: instead of Requires.private:
3013eb9d 2290 AS_IF([test "x$have_user" = xyes], [
1f6ec24c 2291 LIBUSER_LIBS=-luser
3013eb9d
SK
2292 ])
2293])
034d378b 2294AM_CONDITIONAL([HAVE_USER], [test "x$have_user" = xyes])
7e4714f2 2295
d86918b6
KZ
2296AC_ARG_ENABLE([chfn-chsh-password],
2297 AS_HELP_STRING([--disable-chfn-chsh-password], [do not require the user to enter the password in chfn and chsh]),
034d378b 2298 [], [enable_chfn_chsh_password=yes]
d86918b6
KZ
2299)
2300
2301AC_ARG_ENABLE([chfn-chsh],
f205a073 2302 AS_HELP_STRING([--disable-chfn-chsh], [do not build chfn and chsh]),
9a4e9c9d 2303 [], [UL_DEFAULT_ENABLE([chfn_chsh], [check])]
d86918b6
KZ
2304)
2305UL_BUILD_INIT([chfn_chsh])
d00c10ed 2306UL_REQUIRES_HAVE([chfn_chsh], [shadow_h], [shadow.h header])
49a3d609 2307UL_REQUIRES_HAVE([chfn_chsh], [getusershell], [getusershell function])
d86918b6 2308
948182f4 2309AS_IF([test "x$enable_chfn_chsh_password" = xyes || test "x$have_user" = xyes], [
fe2c9909 2310 UL_REQUIRES_HAVE([chfn_chsh], [security_pam_appl_h], [PAM header file])
034d378b 2311 AC_DEFINE([CHFN_CHSH_PASSWORD], [1], [Should chfn and chsh require the user to enter the password?])
3013eb9d 2312])
034d378b
SK
2313AM_CONDITIONAL([BUILD_CHFN_CHSH], [test "x$build_chfn_chsh" = xyes])
2314AM_CONDITIONAL([CHFN_CHSH_PASSWORD], [test "x$enable_chfn_chsh_password" = xyes])
d86918b6
KZ
2315
2316AC_ARG_ENABLE([chsh-only-listed],
5c0b406d
BS
2317 AS_HELP_STRING([--disable-chsh-only-listed], [chsh: allow shells not in /etc/shells]),
2318 [], enable_chsh_only_listed=yes
d86918b6 2319)
7e4714f2 2320
3013eb9d
SK
2321AS_IF([test "x$enable_chsh_only_listed" = xyes], [
2322 AC_DEFINE([ONLY_LISTED_SHELLS], [1], [Should chsh allow only shells in /etc/shells?])
2323])
71681ee5 2324
2c8a3e16 2325
e7614a07
KZ
2326AC_ARG_ENABLE([login],
2327 AS_HELP_STRING([--disable-login], [do not build login]),
08b1c219 2328 [], [UL_DEFAULT_ENABLE([login], [check])]
e7614a07
KZ
2329)
2330UL_BUILD_INIT([login])
fe2c9909
WJ
2331UL_REQUIRES_HAVE([login], [security_pam_appl_h], [PAM header file])
2332UL_REQUIRES_HAVE([login], [security_pam_misc_h, security_openpam_h], [PAM conversation functions])
b4b919fe 2333UL_REQUIRES_HAVE([login], [utmpx_h], [utmpx.h header])
73afd3f8 2334UL_REQUIRES_HAVE([login], [gnu_utmpx], [GNU utmpx functions])
034d378b 2335AM_CONDITIONAL([BUILD_LOGIN], [test "x$build_login" = xyes])
e7614a07 2336
71681ee5
KZ
2337AC_ARG_ENABLE([login-chown-vcs],
2338 AS_HELP_STRING([--enable-login-chown-vcs], [let login chown /dev/vcsN]),
034d378b 2339 [], [enable_login_chown_vcs=no]
71681ee5
KZ
2340)
2341
3013eb9d 2342AS_IF([test "x$enable_login_chown_vcs" = xyes], [
034d378b 2343 AC_DEFINE([LOGIN_CHOWN_VCS], [1], [Should login chown /dev/vcsN?])
3013eb9d 2344])
71681ee5
KZ
2345
2346AC_ARG_ENABLE([login-stat-mail],
2347 AS_HELP_STRING([--enable-login-stat-mail], [let login stat() the mailbox]),
034d378b 2348 [], [enable_login_stat_mail=no]
71681ee5
KZ
2349)
2350
3013eb9d 2351AS_IF([test "x$enable_login_stat_mail" = xyes], [
034d378b 2352 AC_DEFINE([LOGIN_STAT_MAIL], [1], [Should login stat() the mailbox?])
3013eb9d 2353])
71681ee5 2354
e7614a07 2355
88407b93
KZ
2356AC_ARG_ENABLE([nologin],
2357 AS_HELP_STRING([--disable-nologin], [do not build nologin]),
08b1c219 2358 [], [UL_DEFAULT_ENABLE([nologin], [yes])]
88407b93
KZ
2359)
2360UL_BUILD_INIT([nologin])
2361AM_CONDITIONAL([BUILD_NOLOGIN], [test "x$build_nologin" = xyes])
2362
2363
e7614a07
KZ
2364AC_ARG_ENABLE([sulogin],
2365 AS_HELP_STRING([--disable-sulogin], [do not build sulogin]),
d00c10ed 2366 [], [UL_DEFAULT_ENABLE([sulogin], [check])]
e7614a07
KZ
2367)
2368UL_BUILD_INIT([sulogin])
8229ed2f 2369UL_REQUIRES_HAVE([sulogin], [crypt], [crypt function])
d00c10ed 2370UL_REQUIRES_HAVE([sulogin], [shadow_h], [shadow.h header])
034d378b 2371AM_CONDITIONAL([BUILD_SULOGIN], [test "x$build_sulogin" = xyes])
e7614a07 2372
f17f5f48 2373
ff4c5555
KZ
2374AC_ARG_ENABLE([su],
2375 AS_HELP_STRING([--disable-su], [do not build su]),
08b1c219 2376 [], [UL_DEFAULT_ENABLE([su], [check])]
ff4c5555
KZ
2377)
2378UL_BUILD_INIT([su])
fe2c9909 2379UL_REQUIRES_HAVE([su], [security_pam_appl_h], [PAM header file])
b4b919fe 2380UL_REQUIRES_HAVE([su], [utmpx_h], [utmpx.h header])
73afd3f8 2381UL_REQUIRES_HAVE([su], [gnu_utmpx], [GNU utmpx functions])
034d378b 2382AM_CONDITIONAL([BUILD_SU], [test "x$build_su" = xyes])
ff4c5555
KZ
2383
2384
7ec6adb1
KZ
2385AC_ARG_ENABLE([runuser],
2386 AS_HELP_STRING([--disable-runuser], [do not build runuser]),
08b1c219 2387 [], [UL_DEFAULT_ENABLE([runuser], [check])]
7ec6adb1
KZ
2388)
2389UL_BUILD_INIT([runuser])
fe2c9909 2390UL_REQUIRES_HAVE([runuser], [security_pam_appl_h], [PAM header file])
b4b919fe 2391UL_REQUIRES_HAVE([runuser], [utmpx_h], [utmpx.h header])
73afd3f8 2392UL_REQUIRES_HAVE([runuser], [gnu_utmpx], [GNU utmpx functions])
034d378b 2393AM_CONDITIONAL([BUILD_RUNUSER], [test "x$build_runuser" = xyes])
7ec6adb1
KZ
2394
2395
53b22add
KZ
2396AC_ARG_ENABLE([ul],
2397 AS_HELP_STRING([--disable-ul], [do not build ul]),
08b1c219 2398 [], [UL_DEFAULT_ENABLE([ul], [check])]
53b22add
KZ
2399)
2400UL_BUILD_INIT([ul])
3cc8a9f4 2401UL_REQUIRES_HAVE([ul], [ncursesw, ncurses], [ncursesw or ncurses libraries])
034d378b 2402AM_CONDITIONAL([BUILD_UL], [test "x$build_ul" = xyes])
53b22add
KZ
2403
2404
2405AC_ARG_ENABLE([more],
2406 AS_HELP_STRING([--disable-more], [do not build more]),
08b1c219 2407 [], [UL_DEFAULT_ENABLE([more], [check])]
53b22add
KZ
2408)
2409UL_BUILD_INIT([more])
3cc8a9f4 2410UL_REQUIRES_HAVE([more], [ncursesw, ncurses], [ncursesw or ncurses libraries])
823ef319 2411UL_REQUIRES_LINUX([more])
034d378b 2412AM_CONDITIONAL([BUILD_MORE], [test "x$build_more" = xyes])
53b22add
KZ
2413
2414
2415AC_ARG_ENABLE([pg],
00971cca
SK
2416 AS_HELP_STRING([--enable-pg], [build pg]),
2417 [], [UL_DEFAULT_ENABLE([pg], [no])]
53b22add
KZ
2418)
2419UL_BUILD_INIT([pg])
4b439e2d 2420UL_REQUIRES_HAVE([pg], [ncursesw, ncurses], [ncursesw or ncurses library])
034d378b 2421AM_CONDITIONAL([BUILD_PG], [test "x$build_pg" = xyes])
53b22add
KZ
2422
2423
d78d0409
KZ
2424AC_ARG_ENABLE([setterm],
2425 AS_HELP_STRING([--disable-setterm], [do not build setterm]),
08b1c219 2426 [], [UL_DEFAULT_ENABLE([setterm], [check])]
d78d0409
KZ
2427)
2428UL_BUILD_INIT([setterm])
2429UL_REQUIRES_LINUX([setterm])
4b439e2d 2430UL_REQUIRES_HAVE([setterm], [ncursesw, ncurses], [ncursesw or ncurses library])
034d378b 2431AM_CONDITIONAL([BUILD_SETTERM], [test "x$build_setterm" = xyes])
d78d0409 2432
d6ace0b8
KZ
2433# build_schedutils= is just configure-only variable to control
2434# ionice, taskset and chrt
48d7b13a 2435AC_ARG_ENABLE([schedutils],
34228e69 2436 AS_HELP_STRING([--disable-schedutils], [do not build chrt, ionice, taskset]),
fc72f51e 2437 [], [UL_DEFAULT_ENABLE([schedutils], [check])]
48d7b13a 2438)
17d5e11b 2439
6f2eb034
KZ
2440
2441UL_ENABLE_ALIAS([ionice], [schedutils])
2442UL_BUILD_INIT([ionice])
17d5e11b
KZ
2443UL_REQUIRES_SYSCALL_CHECK([ionice],
2444 [UL_CHECK_SYSCALL([ioprio_set],
f06b4328
SK
2445 [alpha], [442],
2446 [i*86], [289],
2447 [ia64*], [1274],
2448 [powerpc*], [273],
2449 [s390*], [282],
2450 [sparc*], [196],
2451 [sh*], [288],
2452 [x86_64*], [251])],
17d5e11b
KZ
2453 [ioprio_set])
2454
2455UL_REQUIRES_SYSCALL_CHECK([ionice],
2456 [UL_CHECK_SYSCALL([ioprio_get],
f06b4328
SK
2457 [alpha], [443],
2458 [i*86], [290],
2459 [ia64*], [1275],
2460 [powerpc*], [274],
2461 [s390*], [283],
2462 [sparc*], [218],
2463 [sh*], [289],
2464 [x86_64*], [252])],
17d5e11b
KZ
2465 [ioprio_get])
2466
034d378b 2467AM_CONDITIONAL([BUILD_IONICE], [test "x$build_ionice" = xyes])
17d5e11b 2468
6f2eb034
KZ
2469
2470UL_ENABLE_ALIAS([taskset], [schedutils])
2471UL_BUILD_INIT([taskset])
e21e6d26 2472UL_REQUIRES_HAVE([taskset], [cpu_set_t], [cpu_set_t type])
17d5e11b
KZ
2473UL_REQUIRES_SYSCALL_CHECK([taskset],
2474 [UL_CHECK_SYSCALL([sched_getaffinity])],
2475 [sched_getaffinity])
034d378b 2476AM_CONDITIONAL([BUILD_TASKSET], [test "x$build_taskset" = xyes])
48d7b13a 2477
ee20c303
RM
2478
2479have_schedsetter=no
2480AS_IF([test "x$ac_cv_func_sched_setscheduler" = xyes], [have_schedsetter=yes],
2481 [test "x$ac_cv_func_sched_setattr" = xyes], [have_schedsetter=yes])
2482
6f2eb034
KZ
2483UL_ENABLE_ALIAS([chrt], [schedutils])
2484UL_BUILD_INIT([chrt])
ee20c303 2485UL_REQUIRES_HAVE([chrt], [schedsetter], [sched_set functions])
d6ace0b8
KZ
2486AM_CONDITIONAL([BUILD_CHRT], [test "x$build_chrt" = xyes])
2487
15167589
KZ
2488AS_IF([test "x$build_chrt" = xyes], [
2489 UL_CHECK_SYSCALL([sched_setattr])
2490])
2491
f59654bb
QY
2492UL_ENABLE_ALIAS([uclampset], [schedutils])
2493UL_BUILD_INIT([uclampset])
82643a9b
KZ
2494UL_REQUIRES_SYSCALL_CHECK([uclampset],
2495 [UL_CHECK_SYSCALL([sched_setattr])], [sched_setattr])
f59654bb
QY
2496AM_CONDITIONAL([BUILD_UCLAMPSET], [test "x$build_uclampset" = xyes])
2497
48d7b13a
KZ
2498
2499AC_ARG_ENABLE([wall],
7fa4f112 2500 AS_HELP_STRING([--disable-wall], [do not build wall]),
d00c10ed 2501 [], [UL_DEFAULT_ENABLE([wall], [check])]
48d7b13a 2502)
8fc8888b 2503UL_BUILD_INIT([wall])
b4b919fe 2504UL_REQUIRES_HAVE([wall], [utmpx_h], [utmpx.h header])
034d378b 2505AM_CONDITIONAL([BUILD_WALL], [test "x$build_wall" = xyes])
48d7b13a
KZ
2506
2507
2508AC_ARG_ENABLE([write],
7fa4f112 2509 AS_HELP_STRING([--enable-write], [build write]),
08b1c219 2510 [], [UL_DEFAULT_ENABLE([write], [no])]
48d7b13a 2511)
61a074f7 2512UL_BUILD_INIT([write])
b4b919fe 2513UL_REQUIRES_HAVE([write], [utmpx_h], [utmpx.h header])
73afd3f8 2514UL_REQUIRES_HAVE([write], [gnu_utmpx], [GNU utmpx functions])
034d378b 2515AM_CONDITIONAL([BUILD_WRITE], [test "x$build_write" = xyes])
48d7b13a
KZ
2516
2517
5a971329 2518AC_ARG_WITH([btrfs],
95a89bd3 2519 AS_HELP_STRING([--without-btrfs], [do not build with btrfs support]),
5a971329
KZ
2520 [], [with_btrfs=check]
2521)
2522have_btrfs=no
2523AS_IF([test "x$with_btrfs" != xno], [
2524 AS_CASE([$with_btrfs:$have_linux_btrfs_h],
2525 [yes:no],
2526 [AC_MSG_ERROR([btrfs selected but linux/btrfs.h not found])],
2527 [check:no],
2528 [AC_MSG_WARN([linux/btrfs.h not found, do not build with btrfs support])],
2529 [*:yes],
2530 [have_btrfs=yes
2531 AC_DEFINE([HAVE_BTRFS_SUPPORT], [1], [Define if btrfs stuff is available])]
2532 )
2533])
2534AM_CONDITIONAL([HAVE_BTRFS], [test "x$have_btrfs" = xyes])
2535
2536
ebff016a 2537AC_ARG_WITH([systemd],
95a89bd3 2538 AS_HELP_STRING([--without-systemd], [do not build with systemd support]),
ebff016a
KZ
2539 [], [with_systemd=check]
2540)
2541
2542have_systemd=no
2543AS_IF([test "x$with_systemd" != xno], [
2544 # new version -- all libsystemd-* libs merged into libsystemd
2545 PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [have_systemd=yes], [have_systemd=no])
2546 # old versions
2547 AS_IF([test "x$have_systemd" != "xyes"], [
2548 PKG_CHECK_MODULES([SYSTEMD_DAEMON], [libsystemd-daemon],
2549 [have_systemd_daemon=yes], [have_systemd_daemon=no])
2550 PKG_CHECK_MODULES([SYSTEMD_JOURNAL], [libsystemd-journal],
2551 [have_systemd_journal=yes], [have_systemd_journal=no])
948182f4 2552 AS_IF([test "x$have_systemd_daemon" = "xyes" && test "x$have_systemd_journal" = "xyes" ],[
ebff016a 2553 have_systemd=yes])
ea45d34c 2554 ])
ebff016a
KZ
2555 AS_CASE([$with_systemd:$have_systemd],
2556 [yes:no],
2557 [AC_MSG_ERROR([systemd expected but libsystemd not found])],
2558 [*:yes],
2559 AC_DEFINE([HAVE_LIBSYSTEMD], [1], [Define if libsystemd is available])
b66b5b97 2560 AC_DEFINE([USE_SYSTEMD], [1], [Define if systemd support is wanted ])
87fcd95a 2561 AC_CHECK_DECLS([sd_session_get_username], [], [], [#include <systemd/sd-login.h>])
ebff016a 2562 )
3013eb9d 2563])
ebff016a
KZ
2564AM_CONDITIONAL([HAVE_SYSTEMD], [test "x$have_systemd" = xyes])
2565
bbe289c4 2566
1b68c379 2567AC_ARG_WITH([systemdsystemunitdir],
95a89bd3 2568 AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [directory for systemd unit files (requires systemd support)]),
f6d3f34a 2569 [], [
7a95313c 2570 AS_IF([test "x$have_systemd" = xyes], [
f6d3f34a
KZ
2571 PKG_CHECK_VAR([with_systemdsystemunitdir], [systemd], [systemdsystemunitdir],
2572 [],
2573 [with_systemdsystemunitdir=no])
7a95313c
KZ
2574 ])
2575])
3013eb9d 2576AS_IF([test "x$with_systemdsystemunitdir" != "xno"], [
1b68c379 2577 AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
3013eb9d 2578])
1b68c379 2579
bbe289c4 2580
b8095d25
KZ
2581AC_ARG_WITH([smack],
2582 AS_HELP_STRING([--with-smack], [build with SMACK support]),
2583 [], [with_smack=no]
2584)
2585AS_IF([test "x$with_smack" = xyes], [
2586 AC_DEFINE([HAVE_SMACK], [1], [Add SMACK support])
2587])
2588
9e584ff3
TK
2589AC_ARG_WITH([econf],
2590 AS_HELP_STRING([--without-econf], [do not use libeconf]),
2591 [], [with_econf=check]
2592)
2593
2594have_econf=no
2595AS_IF([test "x$with_econf" != xno], [
9e584ff3
TK
2596 PKG_CHECK_MODULES([ECONF], [libeconf], [have_econf=yes], [have_econf=no])
2597 AS_CASE([$with_econf:$have_econf],
2598 [yes:no],
2599 [AC_MSG_ERROR([libeconf expected but libeconf not found])],
2600 [*:yes],
2601 AC_DEFINE([HAVE_LIBECONF], [1], [Define if libeconf is available])
2602 )
2603])
2604AM_CONDITIONAL([HAVE_ECONF], [test "x$have_econf" = xyes])
2605
fee99106 2606AC_ARG_WITH([vendordir],
cb776288 2607 AS_HELP_STRING([--with-vendordir=DIR], [Directory for distribution provided configuration files]),
fee99106 2608 [], []
9e584ff3 2609)
fee99106
KZ
2610AC_SUBST([vendordir], [$with_vendordir])
2611AM_CONDITIONAL([USE_VENDORDIR], [test "x$with_vendordir" != x])
2612AS_IF([test "x$with_vendordir" != x], [
2613 AC_DEFINE([USE_VENDORDIR], [1], [Define to 1 to use vendordir])
2614])
9e584ff3 2615
b8095d25 2616
ece777e9
KZ
2617AC_ARG_ENABLE([bash-completion],
2618 AS_HELP_STRING([--disable-bash-completion], [do not install bash completion files]),
034d378b 2619 [], [enable_bash_completion=yes]
ece777e9
KZ
2620)
2621
034d378b 2622AM_CONDITIONAL([BUILD_BASH_COMPLETION], [test "x$enable_bash_completion" = xyes])
ece777e9 2623
f6d3f34a
KZ
2624AC_ARG_WITH([bashcompletiondir],
2625 AS_HELP_STRING([--with-bashcompletiondir=DIR], [Bash completions directory]),
2626 [], [
2627 AS_IF([test "x$enable_bash_completion" = xyes], [
2628 PKG_CHECK_VAR([with_bashcompletiondir], [bash-completion], [completionsdir],
2629 [],
2630 [with_bashcompletiondir=${datadir}/bash-completion/completions])
2631 ])
2632])
140e4c7b
KZ
2633AS_IF([test "x$enable_bash_completion" = xyes], [
2634 AC_SUBST([bashcompletiondir], [$with_bashcompletiondir])
2635])
f6d3f34a 2636
9cc36e9f 2637
d78df0ac 2638AC_ARG_WITH([python],
4c54effb
KZ
2639 AS_HELP_STRING([--without-python], [do not build python bindings, use --with-python={2,3} to force version]),
2640 [], [with_python=check withval=check]
d78df0ac 2641)
8e5c4675 2642
d78df0ac 2643have_python=no
b2ae8c57 2644have_libpython=no
8e5c4675
KZ
2645AS_IF([test "x$with_python" != xno], [
2646 # We follow distributions default and look for PKG module name "python"
2647 # (minimal version is 2) but if major version is explicitly specified by
2648 # --with-python=2 or --with-python=3 then we look for PKG module "python2" or
2649 # "python3".
948182f4 2650 AS_IF([test "x$withval" != xno && test "x$withval" != xyes && test "x$withval" != xcheck],
0b567ae5 2651 [pymajor="$withval"; PYTHON=python${pymajor}], [pymajor="2"])
b2ae8c57
KZ
2652
2653 # check for python interpreter
0b567ae5 2654 AM_PATH_PYTHON([$pymajor], [have_python=yes], [have_python=no])
8e5c4675
KZ
2655 AS_CASE([$with_python:$have_python],
2656 [yes:no],
b2ae8c57 2657 [AC_MSG_ERROR([python selected but python interpreter not found])],
4c54effb 2658 [check:no],
b2ae8c57 2659 [AC_MSG_WARN([python interpreter not found, do not build python bindings])],
4c54effb 2660 [*:yes],
b2ae8c57 2661 # check for python development stuff
c6cdefd7
TW
2662 [
2663 PKG_CHECK_MODULES([PYTHON], [python-$PYTHON_VERSION], [have_libpython=yes], [have_libpython=no])
2664
2665 # https://github.com/util-linux/util-linux/issues/2366
2666 AX_COMPARE_VERSION([$PYTHON_VERSION], [ge], [3.12], [
2667 UL_WARN_ADD([-Wno-error=redundant-decls], [PYTHON_CFLAGS])
2668 ])
2669 ]
8e5c4675 2670 )
d78df0ac
KZ
2671])
2672
da0ec90b
KZ
2673
2674AC_ARG_ENABLE([pylibmount],
2675 AS_HELP_STRING([--disable-pylibmount], [do not build pylibmount]),
2676 [], [UL_DEFAULT_ENABLE([pylibmount], [check])]
2677)
2678UL_BUILD_INIT([pylibmount])
b2ae8c57 2679UL_REQUIRES_HAVE([pylibmount], [libpython], [libpython])
da0ec90b 2680UL_REQUIRES_BUILD([pylibmount], [libmount])
d78df0ac
KZ
2681AM_CONDITIONAL([BUILD_PYLIBMOUNT], [test "x$build_pylibmount" = "xyes"])
2682
324330ac
FB
2683# We need to introduce a verbatim dependency into the Makefile, without automake
2684# trying to interpret it, so push it as a AM_SUBST_NOTMAKE variable.
2685verbatim_pylibmount_dependency='
2686
2687# pylibmountexec module must be installed after usrlib_exec libraries,
2688# otherwise the libtool relink step will fail to find libmount.la and
2689# will try -lmount which is possibly not available.
2690install-pylibmountexecLTLIBRARIES: install-usrlib_execLTLIBRARIES
2691
2692'
2693AC_SUBST([verbatim_pylibmount_dependency])
2694AM_SUBST_NOTMAKE([verbatim_pylibmount_dependency])
d78df0ac 2695
48d7b13a 2696AC_ARG_ENABLE([pg-bell],
7fa4f112 2697 AS_HELP_STRING([--disable-pg-bell], [let pg not ring the bell on invalid keys]),
034d378b 2698 [], [enable_pg_bell=yes]
48d7b13a
KZ
2699)
2700
3013eb9d 2701AS_IF([test "x$enable_pg_bell" = xyes], [
034d378b 2702 AC_DEFINE([PG_BELL], [1], [Should pg ring the bell on invalid keys?])
3013eb9d 2703])
48d7b13a
KZ
2704
2705
bb4cb69d
MF
2706AC_DEFUN([FS_PATHS_DEFAULT], [/sbin:/sbin/fs.d:/sbin/fs])
2707AC_ARG_ENABLE([fs-paths-default],
2708 AS_HELP_STRING([--enable-fs-paths-default=paths], [default search path for fs helpers @<:@FS_PATHS_DEFAULT@:>@]),
9f57e6e8
SK
2709 [AS_CASE([$enableval],
2710 [yes], [fs_paths_defaults="FS_PATHS_DEFAULT"],
2711 [no], [fs_paths_defaults=""],
2712 [fs_paths_defaults="$enableval"]
2713 )],
bb4cb69d
MF
2714 [fs_paths_defaults="FS_PATHS_DEFAULT"]
2715)
2716AC_ARG_ENABLE([fs-paths-extra],
2717 AS_HELP_STRING([--enable-fs-paths-extra=paths], [additional search paths for fs helpers]),
9f57e6e8
SK
2718 [AS_CASE([$enableval],
2719 [yes|no], [fs_paths_extra=""],
2720 [fs_paths_extra="$enableval"]
2721 )],
bb4cb69d
MF
2722 [fs_paths_extra=""]
2723)
2724fs_paths="$fs_paths_defaults"
3013eb9d
SK
2725AS_IF([test "x$fs_paths_extra" != "x"], [
2726 AS_IF([test "x$fs_paths" != "x"], [
bb4cb69d 2727 fs_paths="${fs_paths}:"
3013eb9d 2728 ])
bb4cb69d 2729 fs_paths="${fs_paths}${fs_paths_extra}"
3013eb9d 2730])
bb4cb69d
MF
2731AC_DEFINE_UNQUOTED([FS_SEARCH_PATH], "$fs_paths", [search path for fs helpers])
2732
2733
48d7b13a 2734AC_ARG_ENABLE([use-tty-group],
7fa4f112 2735 AS_HELP_STRING([--disable-use-tty-group], [do not install wall and write setgid tty]),
034d378b 2736 [], [enable_use_tty_group=yes]
48d7b13a 2737)
034d378b 2738AM_CONDITIONAL([USE_TTY_GROUP], [test "x$enable_use_tty_group" = xyes])
48d7b13a 2739
3013eb9d 2740AS_IF([test "x$enable_use_tty_group" = xyes], [
034d378b 2741 AC_DEFINE([USE_TTY_GROUP], [1], [Should wall and write be installed setgid tty?])
3013eb9d 2742])
48d7b13a 2743
ab6478ef
WF
2744
2745AC_ARG_ENABLE([sulogin-emergency-mount],
479d50bd
DR
2746 AS_HELP_STRING([--enable-sulogin-emergency-mount],
2747 [use emergency mount of /dev and /proc for sulogin]),
034d378b 2748 [], [enable_sulogin_emergency_mount=no]
ab6478ef
WF
2749)
2750
3013eb9d 2751AS_IF([test "x$enable_sulogin_emergency_mount" = xyes], [
89c7c6ea
KZ
2752 AS_IF([test "x$linux_os" = xyes], [ ],
2753 [AC_MSG_ERROR([--enable-sulogin-emergency-mount selected for non-linux system])])
034d378b 2754 AC_DEFINE([USE_SULOGIN_EMERGENCY_MOUNT], [1],
3c560686 2755 [Should sulogin use an emergency mount of /dev and /proc?])
3013eb9d 2756])
ab6478ef
WF
2757
2758
f71d1104
KZ
2759AC_ARG_ENABLE([usrdir-path],
2760 AS_HELP_STRING([--enable-usrdir-path], [use only /usr paths in PATH env. variable (recommended on systems with /bin -> /usr/bin symlinks)]),
2761 [], [enable_usrdir_path=no]
2762)
2763
2afbcec5 2764AS_IF([test "x$enable_usrdir_path" = xyes], [
f71d1104
KZ
2765 AC_DEFINE([USE_USRDIR_PATHS_ONLY], [1], [Define to 1 to remove /bin and /sbin from PATH env.variable])
2766])
2767
2768
f3831bbd
KZ
2769AC_ARG_ENABLE([makeinstall-chown],
2770 AS_HELP_STRING([--disable-makeinstall-chown], [do not do chown-like operations during "make install"]),
034d378b 2771 [], [enable_makeinstall_chown=yes]
f3831bbd 2772)
034d378b 2773AM_CONDITIONAL([MAKEINSTALL_DO_CHOWN], [test "x$enable_makeinstall_chown" = xyes])
f3831bbd 2774
81f55ab9 2775
4c24a7ae
KZ
2776AC_ARG_ENABLE([makeinstall-setuid],
2777 AS_HELP_STRING([--disable-makeinstall-setuid], [do not do setuid chmod operations during "make install"]),
034d378b 2778 [], [enable_makeinstall_setuid=yes]
4c24a7ae 2779)
034d378b 2780AM_CONDITIONAL([MAKEINSTALL_DO_SETUID], [test "x$enable_makeinstall_setuid" = xyes])
4c24a7ae 2781
06bcee19 2782
81f55ab9
KZ
2783AC_ARG_ENABLE([colors-default],
2784 AS_HELP_STRING([--disable-colors-default], [do not colorize output from utils by default]),
2785 [], [enable_colors_default=yes]
2786)
2787AS_IF([test "x$enable_colors_default" = xyes], [
2788 AC_DEFINE([USE_COLORS_BY_DEFAULT], [1], [Enables colorized output from utils by default])
2789])
2790
2791
e6a49887
LB
2792AC_ARG_WITH([cryptsetup],
2793 AS_HELP_STRING([--with-cryptsetup], [compile with cryptsetup support]),
2794 [], [with_cryptsetup=no]
2795)
2796
2797AS_IF([test "x$with_cryptsetup" = xno], [
2798 AM_CONDITIONAL([HAVE_CRYPTSETUP], [false])
488fd4c3 2799 AM_CONDITIONAL([CRYPTSETUP_VIA_DLOPEN], [false])
e6a49887
LB
2800], [
2801 PKG_CHECK_MODULES([CRYPTSETUP], [libcryptsetup],
2802 [AC_DEFINE([HAVE_CRYPTSETUP], [1], [Define if cryptsetup is available])
2803 UL_PKG_STATIC([CRYPTSETUP_LIBS_STATIC], [libcryptsetup])
2804 AM_CONDITIONAL([HAVE_CRYPTSETUP], [true])
123b1a67
LB
2805 SAVE_CFLAGS="$CFLAGS"
2806 CFLAGS="$CRYPTSETUP_CFLAGS $CFLAGS"
2807 SAVE_LIBS="$LIBS"
2808 LIBS="$CRYPTSETUP_LIBS $LIBS"
2809 AC_CHECK_LIB([cryptsetup], [crypt_activate_by_signed_key], [
f2458cf9 2810 AC_DEFINE([HAVE_CRYPT_ACTIVATE_BY_SIGNED_KEY], [1], [Define if crypt_activate_by_signed_key exist in -lcryptsetup])
123b1a67 2811 ])
488fd4c3
LB
2812 AS_IF([test "x$with_cryptsetup" = xdlopen], [
2813 LIBS="-ldl $LIBS"
2814 AC_CHECK_LIB([dl], [dlsym], [
2815 AC_DEFINE([CRYPTSETUP_VIA_DLOPEN], [1], [Define if cryptsetup is to be loaded via dlopen])
2816 AM_CONDITIONAL([CRYPTSETUP_VIA_DLOPEN], [true])
2817 ], [AC_MSG_ERROR([libdl required to build with cryptsetup support])])
2818 ], [
2819 AM_CONDITIONAL([CRYPTSETUP_VIA_DLOPEN], [false])
2820 ])
123b1a67
LB
2821 CFLAGS="$SAVE_CFLAGS"
2822 LIBS="$SAVE_LIBS"
e6a49887
LB
2823 have_cryptsetup=yes],
2824 [have_cryptsetup=no
488fd4c3
LB
2825 AM_CONDITIONAL([HAVE_CRYPTSETUP], [false])
2826 AM_CONDITIONAL([CRYPTSETUP_VIA_DLOPEN], [false])
2827 ])
e6a49887
LB
2828
2829 AS_CASE([$with_cryptsetup:$have_cryptsetup],
2830 [yes:no], [AC_MSG_WARN([cryptsetup selected but libcryptsetup not found])]
2831 )
2832])
2833AC_SUBST([CRYPTSETUP_LIBS])
2834AC_SUBST([CRYPTSETUP_LIBS_STATIC])
2835
2836
1f10890f
SK
2837AC_ARG_VAR([SUID_CFLAGS],
2838 [CFLAGS used for binaries which are usually with the suid bit])
2839AC_ARG_VAR([SUID_LDFLAGS],
2840 [LDFLAGS used for binaries which are usually with the suid bit])
06bcee19 2841
03d00d49
KZ
2842AC_ARG_VAR([DAEMON_CFLAGS],
2843 [CFLAGS used for binaries which are usually executed as daemons])
2844AC_ARG_VAR([DAEMON_LDFLAGS],
2845 [LDFLAGS used for binaries which are usually executed as daemons])
2846
2847AC_ARG_VAR([SOLIB_CFLAGS],
2848 [CFLAGS used for shared libraries])
2849AC_ARG_VAR([SOLIB_LDFLAGS],
2850 [LDFLAGS used for shared libraries])
2851
2ad21963
KZ
2852AC_ARG_VAR([ADJTIME_PATH],
2853 [Path to hwclock adjtime file, default /etc/adjtime])
2854AS_IF([test "x$ADJTIME_PATH" = x], [ADJTIME_PATH="/etc/adjtime"])
2855AC_DEFINE_UNQUOTED([CONFIG_ADJTIME_PATH], "$ADJTIME_PATH", [Path to hwclock adjtime file])
2856
0cc63f0b
TW
2857if test "x${build_alias}" != "x${host_alias}"; then
2858 AC_MSG_NOTICE([setting link_all_deplibs=unknown for libtool])
2859 # work around Debian patch to libtool breaking cross-compiles
2860 # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=702737
2861 # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=297726
2862 link_all_deplibs=unknown
2863fi
2864
2ad21963 2865
9cb68977 2866LIBS=""
48d7b13a 2867
48d7b13a 2868
034d378b 2869AC_CONFIG_HEADERS([config.h])
48d7b13a 2870
d4baf92e
KZ
2871#
2872# Don't use configure.ac to replace install paths! See Makefile PATHFILES for
2873# more details.
2874#
8eeb575c 2875AC_CONFIG_FILES([
f06b4328 2876Makefile
31a938ac 2877libblkid/docs/Makefile
8fb4efae 2878libblkid/docs/version.xml
8fb4efae 2879libblkid/src/blkid.h
705854f3
KZ
2880libfdisk/docs/Makefile
2881libfdisk/docs/version.xml
2882libfdisk/src/libfdisk.h
31a938ac 2883libmount/docs/Makefile
2aefc0a8 2884libmount/docs/version.xml
f06b4328 2885libmount/src/libmount.h
1d90bcb1
OO
2886libsmartcols/docs/Makefile
2887libsmartcols/docs/version.xml
1a4d989e 2888libsmartcols/src/libsmartcols.h
f06b4328 2889po/Makefile.in
8f5fff53 2890po-man/Makefile
8eeb575c 2891])
48d7b13a
KZ
2892
2893AC_OUTPUT
4e1073c2
KZ
2894
2895AC_MSG_RESULT([
a73035dc 2896 ${PACKAGE} ${VERSION}
4e1073c2 2897
a73035dc
KZ
2898 prefix: ${prefix}
2899 exec prefix: ${exec_prefix}
4e1073c2 2900
a73035dc
KZ
2901 bindir: ${bindir}
2902 sbindir: ${sbindir}
2903 libdir: ${libdir}
2904 usrbin_execdir: ${usrbin_execdir}
2905 usrsbin_execdir: ${usrsbin_execdir}
2906 usrlib_execdir: ${usrlib_execdir}
3d289965 2907
a73035dc
KZ
2908 localstatedir: ${localstatedir}
2909 runstatedir: ${runstatedir}
2910 includedir: ${includedir}
2911 sysconfdir: ${sysconfdir}
2912 sysconfstaticdir: ${sysconfstaticdir}
3d289965 2913
a73035dc 2914 vendordir: ${with_vendordir}
4e1073c2 2915
a73035dc
KZ
2916 Python: ${PYTHON}
2917 Python version: ${PYTHON_VERSION}
2918 Python libs: ${pyexecdir}
8e5c4675 2919
a73035dc
KZ
2920 Bash completions: ${with_bashcompletiondir}
2921 Systemd support: ${have_systemd}
2922 Systemd unitdir: ${with_systemdsystemunitdir}
2923 libeconf support: ${have_econf}
2924 Btrfs support: ${have_btrfs}
2925 Wide-char support: ${build_widechar}
034ca748 2926 libcryptsetup support: ${have_cryptsetup}
3745d4a9 2927
a73035dc
KZ
2928 Manual pages: ${build_asciidoc}
2929 Manual pages translated: ${build_poman}
4e1073c2 2930
8519f4dd 2931 compiler: ${CC} / ${CXX}
a73035dc
KZ
2932 suid cflags: ${SUID_CFLAGS}
2933 ldflags: ${LDFLAGS}
2934 suid ldflags: ${SUID_LDFLAGS}
2935 ASAN enabled: ${enable_asan}
b4b8f8c2
FS
2936 Fuzzing enabled: ${enable_fuzzing_engine}
2937 Coverage enabled ${enable_coverage}
22a900a9 2938
a73035dc
KZ
2939 cflags: ${CFLAGS}
2940
2941 warnings:
4e1073c2
KZ
2942
2943${WARN_CFLAGS}
b4b84389 2944
a73035dc 2945 Type 'make' or 'make <utilname>' to compile.
4e1073c2 2946])