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