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