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