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