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