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