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