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