]> git.ipfire.org Git - thirdparty/util-linux.git/blob - configure.ac
buildsys: warn on usage of VLAs
[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
161 AC_ARG_ENABLE([werror],
162 AS_HELP_STRING([--enable-werror], [make all compiler warnings into errors]),
163 [], [enable_werror=no]
164 )
165 AS_IF([test "x$enable_werror" = xyes], [
166 UL_WARN_ADD([-Werror])
167 ],[
168 UL_WARN_ADD([-Werror=sequence-point])
169 ])
170
171 AC_SUBST([WARN_CFLAGS])
172
173
174 UL_WARN_ADD([-Wno-clobbered], [BSD_WARN_CFLAGS])
175 AC_SUBST([BSD_WARN_CFLAGS])
176
177 UL_WARN_ADD([-Wno-cast-function-type], [PYTHON_WARN_CFLAGS])
178 AC_SUBST([PYTHON_WARN_CFLAGS])
179
180 UL_WARN_ADD([-Wno-unused-parameter], [NO_UNUSED_WARN_CFLAGS])
181 AC_SUBST([NO_UNUSED_WARN_CFLAGS])
182
183
184 AC_ARG_ENABLE([asan],
185 AS_HELP_STRING([--enable-asan], [compile with Address Sanitizer]),
186 [], [enable_asan=no]
187 )
188 AS_IF([test "x$enable_asan" = xyes], [
189 UL_WARN_ADD([-fsanitize=address])
190 ASAN_LDFLAGS="-fsanitize=address"
191 ])
192 AC_SUBST([ASAN_LDFLAGS])
193
194 AC_ARG_ENABLE([ubsan],
195 AS_HELP_STRING([--enable-ubsan], [compile with UBsan]),
196 [], [enable_ubsan=no]
197 )
198 AS_IF([test "x$enable_ubsan" = xyes], [
199 UL_WARN_ADD([-fsanitize=undefined])
200 UBSAN_LDFLAGS="-fsanitize=undefined"
201 ])
202 AC_SUBST([UBSAN_LDFLAGS])
203
204 AC_ARG_ENABLE([fuzzing-engine],
205 AS_HELP_STRING([--enable-fuzzing-engine], [compile with fuzzing engine]),
206 [], [enable_fuzzing_engine=no]
207 )
208 AS_IF([test "x$enable_fuzzing_engine" = xyes && test "x$LIB_FUZZING_ENGINE" = x], [
209 UL_WARN_ADD([-fno-omit-frame-pointer])
210 UL_WARN_ADD([-gline-tables-only])
211 UL_WARN_ADD([-fsanitize=fuzzer-no-link])
212 FUZZING_ENGINE_LDFLAGS="-fsanitize=fuzzer-no-link"
213 ])
214 AC_SUBST([FUZZING_ENGINE_LDFLAGS])
215 AC_PROG_CXX
216 AM_CONDITIONAL([FUZZING_ENGINE], [test "x$enable_fuzzing_engine" = xyes])
217 AM_CONDITIONAL([OSS_FUZZ], [test "x$LIB_FUZZING_ENGINE" != x])
218
219 AC_ARG_ENABLE([coverage],
220 AS_HELP_STRING([--enable-coverage], [compile with gcov]),
221 [], [enable_coverage=no]
222 )
223 AS_IF([test "x$enable_coverage" = xyes], [
224 UL_WARN_ADD([--coverage])
225 COVERAGE_LDFLAGS="--coverage"
226 ])
227 AC_SUBST([COVERAGE_LDFLAGS])
228 AM_CONDITIONAL([WITH_COVERAGE], [test "x$enable_coverage" = xyes])
229
230 dnl libtool-2
231 LT_INIT
232
233 dnl check supported linker flags
234 AX_CHECK_VSCRIPT
235
236 m4_ifndef([PKG_PROG_PKG_CONFIG],
237 [m4_fatal([Could not locate the pkg-config autoconf
238 macros. These are usually located in /usr/share/aclocal/pkg.m4.
239 If your macros are in a different location, try setting the
240 environment variable AL_OPTS="-I/other/macro/dir" before running
241 ./autogen.sh or autoreconf again. Make sure pkg-config is installed.])])
242 PKG_PROG_PKG_CONFIG
243 PKG_INSTALLDIR(['${usrlib_execdir}/pkgconfig'])
244
245 GTK_DOC_CHECK([1.10])
246 AC_PATH_PROG([XSLTPROC], [xsltproc])
247
248
249 linux_os=no
250 bsd_os=no
251 AS_CASE([${host_os}],
252 [*linux*],
253 [linux_os=yes],
254 [*darwin*],
255 [darwin_os=yes],
256 [*bsd*],
257 [bsd_os=yes])
258 AM_CONDITIONAL([LINUX], [test "x$linux_os" = xyes])
259 AM_CONDITIONAL([DARWIN], [test "x$darwin_os" = xyes])
260 AM_CONDITIONAL([BSD], [test "x$bsd_os" = xyes])
261
262 AS_IF([test "x$darwin_os" = xyes], [
263 AC_DEFINE([_DARWIN_C_SOURCE], [1], [Enable MAP_ANON in sys/mman.h on Mac OS X])
264 ])
265
266 dnl define ARCH_<NAME> conditionals
267 UL_SET_ARCH([I86], [i?86-*])
268 UL_SET_ARCH([86_64], [x86_64*])
269 UL_SET_ARCH([IA64], [ia64*])
270 UL_SET_ARCH([S390], [s390*])
271 UL_SET_ARCH([SPARC], [sparc*])
272 UL_SET_ARCH([PPC], [ppc*|powerpc*])
273 UL_SET_ARCH([M68K], [m68*])
274 UL_SET_ARCH([MIPS], [mips*])
275 UL_SET_ARCH([HPPA], [hppa*|parisc*])
276
277 AC_SYS_LARGEFILE
278 AC_HEADER_ASSERT
279 AC_STRUCT_TIMEZONE
280
281 dnl Don't forget to maintain alternatively allowed versions in autogen.sh!
282 AM_GNU_GETTEXT_VERSION([0.18.3])
283 AM_GNU_GETTEXT([external])
284
285 AS_IF([test -d "$srcdir/po"], [
286 ALL_LINGUAS=`cd $srcdir/po > /dev/null && echo *.po | sed 's/\.po//g'`
287 ], [dnl echo $ALL_LINGUAS | sed 's/ /\n/g' | sort -u | column -xc 72 -o ' ' | sed 's/^/\t/'
288 ALL_LINGUAS="
289 af am ar as be bg bn bn_IN ca
290 cs cy da de el en_GB es et eu_ES
291 fa fi fr gl gu he hi hr hu
292 hy id is it ja ka kn ko ku
293 lo lt lv mk ml mr ms my nb
294 nl nn no nso or pa pl pt pt_BR
295 ro ru si sk sl sq sr sr@Latn sv
296 ta te th tr uk ur vi zh_CN zh_TW
297 zu
298 "])
299
300 AC_CHECK_HEADERS([linux/compiler.h linux/blkpg.h linux/major.h], [], [], [
301 #ifdef HAVE_LINUX_COMPILER_H
302 #include <linux/compiler.h>
303 #endif
304 ])
305 AC_CHECK_HEADERS([ \
306 asm-generic/fcntl.h \
307 asm/fcntl.h \
308 asm/io.h \
309 byteswap.h \
310 endian.h \
311 err.h \
312 errno.h \
313 fcntl.h \
314 getopt.h \
315 inttypes.h \
316 lastlog.h \
317 libutil.h \
318 linux/blkzoned.h \
319 linux/btrfs.h \
320 linux/capability.h \
321 linux/cdrom.h \
322 linux/falloc.h \
323 linux/fd.h \
324 linux/fiemap.h \
325 linux/kcmp.h \
326 linux/net_namespace.h \
327 linux/nsfs.h \
328 linux/pr.h \
329 linux/raw.h \
330 linux/securebits.h \
331 linux/tiocl.h \
332 linux/version.h \
333 linux/watchdog.h \
334 linux/if_alg.h \
335 locale.h \
336 mntent.h \
337 net/if_dl.h \
338 net/if.h \
339 netinet/in.h \
340 paths.h \
341 pty.h \
342 security/pam_appl.h \
343 shadow.h \
344 stdint.h \
345 stdio_ext.h \
346 stdlib.h \
347 sys/disk.h \
348 sys/disklabel.h \
349 sys/endian.h \
350 sys/file.h \
351 sys/ioccom.h \
352 sys/ioctl.h \
353 sys/io.h \
354 sys/mkdev.h \
355 sys/mount.h \
356 sys/param.h \
357 sys/pidfd.h \
358 sys/prctl.h \
359 sys/resource.h \
360 sys/sendfile.h \
361 sys/signalfd.h \
362 sys/socket.h \
363 sys/sockio.h \
364 sys/stat.h \
365 sys/statfs.h \
366 sys/swap.h \
367 sys/syscall.h \
368 sys/sysmacros.h \
369 sys/time.h \
370 sys/timex.h \
371 sys/ttydefaults.h \
372 sys/types.h \
373 sys/ucred.h \
374 sys/un.h \
375 sys/vfs.h \
376 sys/xattr.h \
377 unistd.h \
378 utmp.h \
379 utmpx.h \
380 ])
381
382 # There is a collision in old kernel-headers. The both files mount.h and fs.h
383 # define MS_* macros. Fixed by kernel commit e462ec50cb5fad19f6003a3d8087f4a0945dd2b1.
384 #
385 AC_CHECK_HEADERS([linux/fs.h ], [], [],
386 [#ifdef HAVE_SYS_MOUNT_H
387 # include <linux/fs.h>
388 # include <sys/mount.h>
389 #endif
390 ])
391
392 AC_CHECK_HEADERS([linux/mount.h ], [], [],
393 [#ifdef HAVE_LINUX_MOUNT_H
394 # include <linux/mount.h>
395 #endif
396 ])
397
398 AC_CHECK_HEADERS([linux/gsmmux.h ], [], [],
399 [#ifdef LINUX_GSMMUX_H
400 # include <linux/gsmmux.h>
401 #endif
402 ])
403
404 AC_CHECK_HEADERS([security/pam_misc.h],
405 [AM_CONDITIONAL([HAVE_LINUXPAM], [true])],
406 [AM_CONDITIONAL([HAVE_LINUXPAM], [false])], [
407 #ifdef HAVE_SECURITY_PAM_APPL_H
408 #include <security/pam_appl.h>
409 #endif
410 ])
411
412 AC_CHECK_DECLS([BLK_ZONE_REP_CAPACITY], [], [], [
413 #include <linux/blkzoned.h>
414 ])
415
416 AC_CHECK_DECLS([PR_REP_CAPACITY], [], [], [
417 #include <linux/pr.h>
418 ])
419
420 AC_CHECK_HEADERS([security/openpam.h], [], [], [
421 #ifdef HAVE_SECURITY_PAM_APPL_H
422 #include <security/pam_appl.h>
423 #endif
424 ])
425
426 AC_CHECK_HEADERS([langinfo.h],
427 [AM_CONDITIONAL([HAVE_LANGINFO_H], [true])],
428 [AM_CONDITIONAL([HAVE_LANGINFO_H], [false])])
429
430 AC_MSG_CHECKING([whether langinfo.h defines ALTMON_x constants])
431 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
432 #include <langinfo.h>
433 ]], [[
434 char *str;
435 str = nl_langinfo (ALTMON_1);
436 str = nl_langinfo (ALTMON_2);
437 str = nl_langinfo (ALTMON_3);
438 str = nl_langinfo (ALTMON_4);
439 str = nl_langinfo (ALTMON_5);
440 str = nl_langinfo (ALTMON_6);
441 str = nl_langinfo (ALTMON_7);
442 str = nl_langinfo (ALTMON_8);
443 str = nl_langinfo (ALTMON_9);
444 str = nl_langinfo (ALTMON_10);
445 str = nl_langinfo (ALTMON_11);
446 str = nl_langinfo (ALTMON_12);
447 ]])], [
448 AC_MSG_RESULT([yes])
449 AC_DEFINE([HAVE_LANGINFO_ALTMON], [1],
450 [Define if langinfo.h defines ALTMON_x constants])
451 ], [
452 AC_MSG_RESULT([no])
453 ])
454
455
456 AC_MSG_CHECKING([whether langinfo.h defines _NL_ABALTMON_x constants])
457 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
458 #include <langinfo.h>
459 ]], [[
460 char *str;
461 str = nl_langinfo (_NL_ABALTMON_1);
462 str = nl_langinfo (_NL_ABALTMON_2);
463 str = nl_langinfo (_NL_ABALTMON_3);
464 str = nl_langinfo (_NL_ABALTMON_4);
465 str = nl_langinfo (_NL_ABALTMON_5);
466 str = nl_langinfo (_NL_ABALTMON_6);
467 str = nl_langinfo (_NL_ABALTMON_7);
468 str = nl_langinfo (_NL_ABALTMON_8);
469 str = nl_langinfo (_NL_ABALTMON_9);
470 str = nl_langinfo (_NL_ABALTMON_10);
471 str = nl_langinfo (_NL_ABALTMON_11);
472 str = nl_langinfo (_NL_ABALTMON_12);
473 ]])], [
474 AC_MSG_RESULT([yes])
475 AC_DEFINE([HAVE_LANGINFO_NL_ABALTMON], [1],
476 [Define if langinfo.h defines _NL_ABALTMON_x constants])
477 ], [
478 AC_MSG_RESULT([no])
479 ])
480
481
482 dnl Convert some ac_cv_header_* variables to have_*
483 dnl
484 have_linux_blkzoned_h=$ac_cv_header_linux_blkzoned_h
485 have_linux_btrfs_h=$ac_cv_header_linux_btrfs_h
486 have_linux_capability_h=$ac_cv_header_linux_capability_h
487 have_linux_kcmp_h=$ac_cv_header_linux_kcmp_h
488 have_linux_mount_h=$ac_cv_header_linux_mount_h
489 have_linux_pr_h=$ac_cv_header_linux_pr_h
490 have_linux_raw_h=$ac_cv_header_linux_raw_h
491 have_linux_securebits_h=$ac_cv_header_linux_securebits_h
492 have_linux_version_h=$ac_cv_header_linux_version_h
493 have_linux_watchdog_h=$ac_cv_header_linux_watchdog_h
494 have_pty_h=$ac_cv_header_pty_h
495 have_security_openpam_h=$ac_cv_header_security_openpam_h
496 have_security_pam_appl_h=$ac_cv_header_security_pam_appl_h
497 have_security_pam_misc_h=$ac_cv_header_security_pam_misc_h
498 have_shadow_h=$ac_cv_header_shadow_h
499 have_sys_signalfd_h=$ac_cv_header_sys_signalfd_h
500 have_utmpx_h=$ac_cv_header_utmpx_h
501 have_mntent_h=$ac_cv_header_mntent_h
502
503 AS_CASE([$linux_os:$have_linux_version_h],
504 [yes:no],
505 [AC_MSG_ERROR([kernel headers required on Linux])]
506 )
507
508 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
509 #include <time.h>
510 #include <unistd.h>
511 ]], [[
512 int a = 0;
513 struct tm *tm = localtime(0);
514 if (a == -1) /* false */
515 sleep(tm->tm_gmtoff);
516 ]])],
517 [AC_DEFINE([HAVE_TM_GMTOFF], [1], [Does struct tm have a field tm_gmtoff?])
518 ])
519
520 AC_CHECK_TYPES([struct mount_attr], [], [], [[#include <linux/mount.h>]])
521 AC_CHECK_TYPES([enum fsconfig_command], [], [], [[#include <linux/mount.h>]])
522
523 AC_CHECK_MEMBERS([struct termios.c_line],,,
524 [[#include <termios.h>]])
525
526 AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec],,,
527 [[#include <sys/stat.h>]])
528
529 AC_CHECK_TYPES([struct statx], [], [], [[#include <sys/stat.h>]])
530 AC_CHECK_MEMBERS([struct statx.stx_mnt_id],,,
531 [[#include <sys/stat.h>]])
532
533 AC_CHECK_DECLS([_NL_TIME_WEEK_1STDAY],[],[],[[#include <langinfo.h>]])
534
535 AC_CHECK_DECL([environ],
536 [AC_DEFINE([HAVE_ENVIRON_DECL], [1],
537 [Define to 1 if have **environ prototype])],
538 )
539
540 AC_CHECK_DECL([strsignal],
541 [AC_DEFINE([HAVE_STRSIGNAL_DECL], [1],
542 [Define to 1 if have strsignal function prototype])],
543 )
544
545 AC_CHECK_DECL([TIOCGLCKTRMIOS],
546 [have_tiocglcktrmios=yes], [have_tiocglcktrmios=no],
547 [#include <sys/ioctl.h>])
548 AC_CHECK_DECL([SOCK_CLOEXEC],
549 [have_sock_cloexec=yes], [have_sock_cloexec=no],
550 [#include <sys/types.h>
551 #include <sys/socket.h>])
552 AC_CHECK_DECL([SOCK_NONBLOCK],
553 [have_sock_nonblock=yes], [have_sock_nonblock=no],
554 [#include <sys/types.h>
555 #include <sys/socket.h>])
556 AC_CHECK_DECL([SO_PASSCRED],
557 [have_so_passcred=yes], [have_so_passcred=no],
558 [#include <sys/types.h>
559 #include <sys/socket.h>])
560
561 AC_CHECK_FUNCS([ \
562 cachestat \
563 clearenv \
564 close_range \
565 eaccess \
566 err \
567 errx \
568 explicit_bzero \
569 __fpending \
570 __fpurge \
571 fpurge \
572 fnmatch \
573 fsconfig \
574 fsmount \
575 fsopen \
576 fspick \
577 fsync \
578 getdomainname \
579 getdtablesize \
580 getexecname \
581 getmntinfo \
582 getrandom \
583 getrlimit \
584 getsgnam \
585 getttynam \
586 inotify_init \
587 jrand48 \
588 lchown \
589 lgetxattr \
590 llistxattr \
591 llseek \
592 newlocale \
593 mempcpy \
594 mkostemp \
595 move_mount \
596 mount_setattr \
597 nanosleep \
598 ntp_gettime \
599 open_tree \
600 personality \
601 pidfd_open \
602 pidfd_send_signal \
603 posix_fadvise \
604 prctl \
605 qsort_r \
606 rpmatch \
607 scandirat \
608 sched_setattr \
609 sched_setscheduler \
610 __secure_getenv \
611 secure_getenv \
612 sendfile \
613 setprogname \
614 setresgid \
615 setresuid \
616 sigqueue \
617 srandom \
618 statx \
619 strnchr \
620 strndup \
621 strnlen \
622 strtod_l \
623 sysconf \
624 sysinfo \
625 timegm \
626 usleep \
627 uselocale \
628 utimensat \
629 vwarnx \
630 warn \
631 warnx \
632 ])
633 AC_FUNC_FSEEKO
634
635 AC_CHECK_FUNCS([futimens], [have_futimens=yes])
636 AC_CHECK_FUNCS([getusershell], [have_getusershell=yes],[have_getusershell=no])
637 AC_CHECK_FUNCS([inotify_init1], [have_inotify_init1=yes])
638 AC_CHECK_FUNCS([ioperm iopl], [have_io=yes])
639 AC_CHECK_FUNCS([openat fstatat unlinkat], [have_openat=yes], [have_openat=no])
640 AC_CHECK_FUNCS([open_memstream], [have_open_memstream=yes],[have_open_memstream=no])
641 AC_CHECK_FUNCS([reboot], [have_reboot=yes],[have_reboot=no])
642 AC_CHECK_FUNCS([updwtmpx updwtmpx], [have_gnu_utmpx=yes], [have_gnu_utmpx=no])
643
644 AM_CONDITIONAL([HAVE_OPENAT], [test "x$have_openat" = xyes])
645
646 have_setns_syscall="yes"
647 UL_CHECK_SYSCALL([setns])
648 AS_IF([test "x$ul_cv_syscall_setns" = xno], [
649 have_setns_syscall="no"
650 ])
651
652 UL_CHECK_SYSCALL([pidfd_open])
653 UL_CHECK_SYSCALL([pidfd_send_signal])
654 UL_CHECK_SYSCALL([close_range])
655
656 UL_CHECK_SYSCALL([fsconfig])
657 UL_CHECK_SYSCALL([fsmount])
658 UL_CHECK_SYSCALL([fsopen])
659 UL_CHECK_SYSCALL([fspick])
660 UL_CHECK_SYSCALL([mount_setattr])
661 UL_CHECK_SYSCALL([move_mount])
662 UL_CHECK_SYSCALL([open_tree])
663
664 AS_IF([test "x$ul_cv_syscall_fsconfig" = xno ||
665 test "x$ul_cv_syscall_fsmount" = xno ||
666 test "x$ul_cv_syscall_fsopen" = xno ||
667 test "x$ul_cv_syscall_fspick" = xno ||
668 test "x$ul_cv_syscall_mount_setattr" = xno ||
669 test "x$ul_cv_syscall_move_mount" = xno ||
670 test "x$ul_cv_syscall_open_tree" = xno],
671 [
672 have_mountfd_api="no"
673 ],[
674 have_mountfd_api="yes"
675 AC_DEFINE([HAVE_MOUNTFD_API], [1], [Define to 1 if you want mount API based on FDs.])
676 ])
677
678
679 AC_CHECK_FUNCS([isnan], [],
680 [AC_CHECK_LIB([m], [isnan], [MATH_LIBS="-lm"])]
681 [AC_CHECK_LIB([m], [__isnan], [MATH_LIBS="-lm"])]
682 )
683 AC_SUBST([MATH_LIBS])
684
685
686 dnl lib/mononotic.c may require -lrt
687 AC_CHECK_FUNCS([clock_gettime], [],
688 [AC_CHECK_LIB([rt], [clock_gettime], [REALTIME_LIBS="-lrt"])]
689 )
690
691 have_timer="no"
692 AC_CHECK_FUNCS([timer_create],
693 [have_timer="yes"],
694 [AC_CHECK_LIB([rt], [timer_create], [
695 have_timer="yes"
696 REALTIME_LIBS="-lrt"
697 AC_DEFINE_UNQUOTED([HAVE_TIMER_CREATE], [1], [Define if timer_create exist in -lrt])
698 ],[
699 AC_SEARCH_LIBS([timer_create], [rt], [
700 AC_MSG_RESULT(yes)
701 have_timer="yes"
702 REALTIME_LIBS="-lrt -lpthread"
703 AC_DEFINE_UNQUOTED([HAVE_TIMER_CREATE], [1], [Define if timer_create exist in -lrt -lpthread])
704 ],[], [-lpthread]
705 )
706 ])]
707 )
708
709 AC_SUBST([REALTIME_LIBS])
710
711 AS_IF([test x"$have_timer" = xno], [
712 AC_CHECK_FUNCS([setitimer], [have_timer="yes"], [have_timer="no"])
713 ])
714
715
716 AC_CHECK_LIB([rtas], [rtas_get_sysparm], [
717 RTAS_LIBS="-lrtas"
718 AC_DEFINE_UNQUOTED([HAVE_LIBRTAS], [1], [Define if librtas exists]), [],
719 ])
720 AC_SUBST([RTAS_LIBS])
721
722
723 AC_CHECK_MEMBER([struct sockaddr.sa_len],
724 AC_DEFINE_UNQUOTED([HAVE_SA_LEN], [1], [Define if struct sockaddr contains sa_len]), [],
725 [#include <sys/types.h>
726 #include <sys/socket.h>])
727
728 SOCKET_LIBS=
729 AC_SEARCH_LIBS([socket], [socket],
730 [AS_IF([test x"$ac_cv_search_socket" != x"none required"],
731 [SOCKET_LIBS="$SOCKET_LIBS -lsocket"])
732 ])
733 AC_SUBST([SOCKET_LIBS])
734
735
736 have_dirfd=no
737 AC_CHECK_FUNCS([dirfd], [have_dirfd=yes], [have_dirfd=no])
738 AS_IF([test x"$have_dirfd" = xno], [
739 AC_CHECK_DECLS([dirfd],
740 [have_dirfd=yes], [have_dirfd=no],
741 [#include <sys/types.h>
742 #include <dirent.h>])
743 ])
744
745 have_ddfd=no
746 AS_IF([test x"$have_dirfd" = xno], [
747 AC_CHECK_MEMBERS([DIR.dd_fd],
748 [have_ddfd=yes], [have_ddfd=no],
749 [#include <sys/types.h>
750 #include <dirent.h>])
751 ])
752
753 AM_CONDITIONAL([HAVE_DIRFD], [test "x$have_dirfd" = xyes || test "x$have_ddfd" = xyes])
754
755 MQ_LIBS=
756 AC_CHECK_LIB([rt], [mq_open], [MQ_LIBS="-lrt"])
757 AC_SUBST([MQ_LIBS])
758
759 AC_MSG_CHECKING([whether program_invocation_short_name is defined])
760 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
761 #include <errno.h>
762 ]], [[
763 program_invocation_short_name = "test";
764 ]])], [
765 AC_MSG_RESULT([yes])
766 AC_DEFINE([HAVE_PROGRAM_INVOCATION_SHORT_NAME], [1],
767 [Define if program_invocation_short_name is defined])
768 ], [
769 AC_MSG_RESULT([no])
770 ])
771
772
773 AC_MSG_CHECKING([whether __progname is defined])
774 AC_LINK_IFELSE([AC_LANG_PROGRAM([extern char *__progname;],
775 [if (*__progname == 0) return 1;])],
776 AC_DEFINE([HAVE___PROGNAME], [1], [Define if __progname is defined])
777 AC_MSG_RESULT([yes]),
778 AC_MSG_RESULT([no]))
779
780 AC_CHECK_DECL([IOC_OPAL_GET_STATUS],
781 [AC_DEFINE([HAVE_OPAL_GET_STATUS], [1],
782 [Define to 1 if OPAL status ioctl is defined])],,
783 [#include <linux/sed-opal.h>])
784
785 dnl Static compilation
786 m4_define([UL_STATIC_PROGRAMS], [blkid, fdisk, losetup, mount, nsenter, sfdisk, umount, unshare])
787
788 AC_ARG_ENABLE([static-programs],
789 [AS_HELP_STRING([--enable-static-programs=LIST],
790 [link static the programs in LIST (comma-separated,
791 supported for ]m4_defn([UL_STATIC_PROGRAMS])[)])])
792
793 AS_CASE([$enable_static_programs],
794 [yes],
795 [enable_static_programs=m4_quote(UL_STATIC_PROGRAMS)],
796 [no],
797 [enable_static_programs=]
798 )
799
800 dnl Set all the individual AM_CONDITIONALs
801 m4_foreach([UL_PRG], m4_defn([UL_STATIC_PROGRAMS]), [
802 AS_CASE([,$enable_static_programs,],
803 [*,UL_PRG,*], [static_[]UL_PRG=yes]
804 )
805 AS_IF([test "x$static_[]UL_PRG" = xyes], [AC_MSG_NOTICE([enable static build: UL_PRG.])])
806 AM_CONDITIONAL([HAVE_STATIC_]m4_toupper(UL_PRG),
807 [test "x$static_[]UL_PRG" = xyes])
808 ])
809
810
811 AC_ARG_ENABLE([all-programs],
812 AS_HELP_STRING([--disable-all-programs], [disable everything, might be overridden by --enable-<name>]),
813 [], [enable_all_programs=undefined]
814 )
815
816 AS_CASE([$enable_all_programs],
817 [yes], [AC_MSG_WARN([force to build all programs by default])
818 ul_default_estate=check],
819 [no], [AC_MSG_WARN([disable all programs and man pages by default])
820 ul_default_estate=no]
821 )
822
823
824 AC_ARG_ENABLE([asciidoc],
825 AS_HELP_STRING([--disable-asciidoc], [do not generate man pages from asciidoc]),
826 [], [UL_DEFAULT_ENABLE([asciidoc], [check])]
827 )
828 UL_BUILD_INIT([asciidoc])
829 UL_REQUIRES_PROGRAM([asciidoc], [ASCIIDOCTOR], [asciidoctor], [man pages])
830 AM_CONDITIONAL([ENABLE_ASCIIDOC], [test "x$build_asciidoc" = xyes])
831 have_asciidoctor_failure_level=no
832 AS_IF([test "x$build_asciidoc" = xyes], [
833 AC_MSG_CHECKING([whether ${ASCIIDOCTOR} supports --failure-level])
834 AS_IF([${ASCIIDOCTOR} --help | grep failure-level >/dev/null 2>&1 ], [
835 AC_MSG_RESULT([yes])
836 have_asciidoctor_failure_level=yes
837 ], [
838 AC_MSG_RESULT([no])
839 ])
840 ])
841 AM_CONDITIONAL([HAVE_ASCIIDOCTOR_FAILURE_LEVEL], [test "x$have_asciidoctor_failure_level" = xyes])
842
843 have_manpages=no
844 AS_IF([test -f "$srcdir/sys-utils/mount.8"], [
845 AC_MSG_NOTICE([re-use already generated man-pages.])
846 have_manpages=yes]
847 )
848 AM_CONDITIONAL([HAVE_MANPAGES], [test "x$have_manpages" = xyes])
849
850
851 AC_ARG_ENABLE([poman],
852 AS_HELP_STRING([--disable-poman], [generate translated man pages]),
853 [], [UL_DEFAULT_ENABLE([poman], [check])]
854 )
855 UL_BUILD_INIT([poman])
856 UL_REQUIRES_PROGRAM([poman], [PO4A], [po4a], [translated man pages])
857 AM_CONDITIONAL([ENABLE_POMAN], [test "x$build_poman" = xyes])
858
859
860 AX_CHECK_TLS
861
862 have_pty=no
863 AC_ARG_WITH([util], AS_HELP_STRING([--without-util], [compile without libutil]),
864 [], [with_util=auto]
865 )
866 AS_IF([test "x$with_util" = xno], [
867 AM_CONDITIONAL([HAVE_UTIL], [false])
868 have_util=no
869 ], [
870 UL_CHECK_LIB([util], [openpty])
871 ])
872
873 AS_IF([test "x$have_pty_h" = xyes && test "x$have_sys_signalfd_h" = xyes && test "x$have_util" = xyes], [
874 AM_CONDITIONAL([HAVE_PTY], [true])
875 AC_DEFINE([HAVE_PTY], [1], [have PTY support])
876 have_pty=yes
877 ], [
878 AM_CONDITIONAL([HAVE_PTY], [false])
879 ])
880
881 AC_CHECK_TYPES([union semun], [], [], [[
882 #include <sys/sem.h>
883 ]])
884 AC_CHECK_TYPES([loff_t])
885
886
887 AC_ARG_ENABLE([widechar],
888 AS_HELP_STRING([--disable-widechar], [do not compile wide character support]),
889 [], [enable_widechar=check]
890 )
891 UL_BUILD_INIT([widechar])
892 UL_REQUIRES_COMPILE([widechar], [[
893 #include <wchar.h>
894 #include <wctype.h>
895 #include <stdio.h>
896 #include <stdlib.h>
897 ]], [[
898 wchar_t wc;
899 wint_t w;
900 w = fgetwc(stdin);
901 if (w == WEOF) exit(1);
902 wc = w;
903 fputwc(wc,stdout);
904 ]],
905 [wchar_t support])
906
907 AS_IF([test "x$build_widechar" = xyes ], [
908 AC_DEFINE([HAVE_WIDECHAR], [1], [Do we have wide character support?])
909 ])
910
911
912 AC_CHECK_TYPES([cpu_set_t], [have_cpu_set_t=yes], [], [[
913 #include <sched.h>
914 ]])
915
916 AM_CONDITIONAL([HAVE_CPU_SET_T], [test "x$have_cpu_set_t" = xyes])
917
918 AC_CHECK_TYPES([sighandler_t], [], [], [[
919 #include <signal.h>
920 ]])
921
922 AC_CHECK_DECLS([CPU_ALLOC], [], [], [[
923 #include <sched.h>
924 ]])
925
926 # on Solaris, you can't mix and match standards, since we use c99
927 # apparently at this stage, XOPEN_SOURCE will conflict. As workaround,
928 # check for crypt.h and use that without XOPEN_SOURCE.
929 have_crypt=no
930 AC_CHECK_HEADERS([crypt.h])
931 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
932 #ifdef HAVE_CRYPT_H
933 #include <crypt.h>
934 #else
935 #define _XOPEN_SOURCE
936 #include <unistd.h>
937 #endif
938 ]], [[
939 char *c = crypt("abc","pw");
940 ]])],[
941 have_libcrypt=no
942 have_crypt=yes
943 ],[
944 UL_SET_LIBS([-lcrypt])
945 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
946 #ifdef HAVE_CRYPT_H
947 #include <crypt.h>
948 #else
949 #define _XOPEN_SOURCE
950 #include <unistd.h>
951 #endif
952 ]], [[
953 char *c = crypt("abc","pw");
954 ]])],[
955 have_libcrypt=yes
956 have_crypt=yes
957 ],[
958 AC_MSG_WARN([crypt() is not available])
959 ])
960 UL_RESTORE_LIBS
961 ])
962 AM_CONDITIONAL([HAVE_LIBCRYPT], [test "x$have_libcrypt" = xyes])
963
964
965 AC_ARG_WITH([selinux],
966 AS_HELP_STRING([--with-selinux], [compile with SELinux support]),
967 [], [with_selinux=no]
968 )
969
970 AS_IF([test "x$with_selinux" = xno], [
971 AM_CONDITIONAL([HAVE_SELINUX], [false])
972 ], [
973 PKG_CHECK_MODULES([SELINUX], [libselinux >= 2.5], [have_selinux=yes], [have_selinux=no])
974 AS_CASE([$with_selinux:$have_selinux],
975 [yes:no], [AC_MSG_ERROR([SELinux selected but libselinux not found or too old])]
976 )
977 AS_IF([test "x$have_selinux" = xyes], [
978 AC_DEFINE([HAVE_LIBSELINUX], [1], [Define if SELinux is available])
979 UL_PKG_STATIC([SELINUX_LIBS_STATIC], [libselinux])
980 AM_CONDITIONAL([HAVE_SELINUX], [true])
981
982 UL_SET_LIBS([$SELINUX_LIBS])
983 # This function is missing in old libselinux 1.xx versions
984 AC_CHECK_FUNCS([security_get_initial_context])
985 UL_RESTORE_LIBS
986 ])
987 ])
988 AC_SUBST([SELINUX_LIBS])
989 AC_SUBST([SELINUX_LIBS_STATIC])
990
991
992 AC_ARG_WITH([audit],
993 AS_HELP_STRING([--with-audit], [compile with audit support]),
994 [], [with_audit=no]
995 )
996
997 AS_IF([test "x$with_audit" = xno], [
998 AM_CONDITIONAL([HAVE_AUDIT], [false])
999 ], [
1000 UL_CHECK_LIB([audit], [audit_log_user_message])
1001 AS_CASE([$with_audit:$have_audit],
1002 [yes:no],
1003 [AC_MSG_ERROR([Audit selected but libaudit not found (or does not support audit_log_user_message())])]
1004 )
1005 ])
1006
1007 AC_ARG_WITH([udev], AS_HELP_STRING([--without-udev], [compile without udev support]),
1008 [], [with_udev=auto]
1009 )
1010
1011 AS_IF([test "x$with_udev" = xno], [
1012 AM_CONDITIONAL([HAVE_UDEV], [false])
1013 ], [
1014 UL_CHECK_LIB([udev], [udev_new])
1015 AS_CASE([$with_udev:$have_udev],
1016 [yes:no],
1017 [AC_MSG_ERROR([udev selected but libudev not found])]
1018 )
1019 ])
1020
1021
1022 dnl wide-char ncurses
1023 AC_ARG_WITH([ncursesw],
1024 AS_HELP_STRING([--without-ncursesw], [do not build with wide-char ncurses]),
1025 [], [with_ncursesw=auto]
1026 )
1027 have_ncursesw=no
1028 have_ncursesw_header=no
1029 AS_IF([test "x$with_ncursesw" != xno], [
1030 UL_NCURSES_CHECK([ncursesw])
1031 AS_IF([test "x$have_ncursesw" = xyes], [
1032 AC_CHECK_HEADERS([ncursesw/ncurses.h], [have_ncursesw_header=yes])
1033 AC_CHECK_HEADERS([ncursesw/term.h])
1034
1035 # Define HAVE_NCURSES_H only if check for HAVE_NCURSESW_NCURSES_H is
1036 # unsuccessful to avoid too many *_H permitations in config.h
1037 AS_IF([test "x$have_ncursesw_header" = xno], [
1038 AC_CHECK_HEADERS([ncurses.h], [have_ncursesw_header=yes])
1039 AC_CHECK_HEADERS([term.h])
1040 ])
1041 AS_IF([test "x$have_ncursesw_header" = xno], [have_ncursesw=no])
1042 ])
1043 AS_IF([test "x$have_ncursesw" = xyes], [
1044 CURSES_LIB_NAME="ncursesw"
1045 AC_DEFINE([HAVE_LIBNCURSESW], [1], [Define if ncursesw library available])
1046 ])
1047 ])
1048 AS_CASE([$with_ncursesw:$have_ncursesw],
1049 [yes:no], [AC_MSG_ERROR([ncursesw selected, but library not found])])
1050
1051
1052 dnl non-wide ncurses
1053 AC_ARG_WITH([ncurses],
1054 AS_HELP_STRING([--with-ncurses], [build with non-wide ncurses]),
1055 [], [with_ncurses=auto]
1056 )
1057 have_ncurses=no
1058 have_ncurses_header=no
1059 AS_CASE([$with_ncurses:$build_widechar],
1060 [yes:yes], [AC_MSG_ERROR([wide-char support enabled, but non-wide ncurses selects])])
1061
1062 AS_IF([test "x$have_ncursesw" = xno && test "x$with_ncurses" != xno ], [
1063 UL_NCURSES_CHECK([ncurses])
1064 AS_IF([test "x$have_ncurses" = xyes], [
1065 AC_CHECK_HEADERS([ncurses/ncurses.h], [have_ncurses_header=yes])
1066 AC_CHECK_HEADERS([ncurses/term.h])
1067
1068 # Define HAVE_NCURSES_H only if check for HAVE_NCURSES_NCURSES_H is
1069 # unsuccessful to avoid too many *_H permitations in config.h
1070 AS_IF([test "x$have_ncurses_header" = xno], [
1071 AC_CHECK_HEADERS([ncurses.h], [have_ncurses_header=yes])
1072 AC_CHECK_HEADERS([term.h])
1073 ])
1074 AS_IF([test "x$have_ncurses_header" = xno], [have_ncurses=no])
1075 ])
1076 AS_IF([test "x$have_ncurses" = xyes], [
1077 CURSES_LIB_NAME="ncurses"
1078 AC_DEFINE([HAVE_LIBNCURSES], [1], [Define if ncurses library available])
1079 ])
1080 ])
1081 AS_CASE([$with_ncurses:$have_ncurses],
1082 [yes:no], [AC_MSG_ERROR([ncurses selected, but library not found])])
1083
1084 AC_SUBST([NCURSES_CFLAGS])
1085 AC_SUBST([NCURSES_LIBS])
1086 AM_CONDITIONAL([HAVE_NCURSES], [test "x$have_ncursesw" = xyes || test "x$have_ncurses" = xyes])
1087
1088
1089 AC_ARG_WITH([slang],
1090 AS_HELP_STRING([--with-slang], [compile cfdisk with slang rather than ncurses]),
1091 [], [with_slang=no]
1092 )
1093 have_slang=no
1094 AS_IF([test "x$with_slang" = xyes], [
1095 AC_CHECK_HEADERS([slang.h slang/slang.h])
1096 AC_CHECK_HEADERS([slcurses.h slang/slcurses.h],
1097 [have_slang=yes], [], [
1098 #ifdef HAVE_SLANG_H
1099 #include <slang.h>
1100 #elif defined(HAVE_SLANG_SLANG_H)
1101 #include <slang/slang.h>
1102 #endif
1103 ])
1104 AS_IF([test "x$have_slang" = xno], [
1105 AC_MSG_ERROR([slang selected but slcurses.h not found])],
1106 [CURSES_LIB_NAME=slang
1107 ])
1108 ])
1109 AM_CONDITIONAL([HAVE_SLANG], [test "x$have_slang" = xyes])
1110
1111
1112 AS_IF([test "x$have_slang" = xyes || test "x$have_ncursesw" = xyes || test "x$have_ncurses" = xyes], [
1113 AC_CHECK_LIB([$CURSES_LIB_NAME], use_default_colors, [
1114 AC_DEFINE(HAVE_USE_DEFAULT_COLORS, 1,
1115 [Define if curses library has the use_default_colors().])
1116 ])
1117 AC_CHECK_LIB([$CURSES_LIB_NAME], resizeterm, [
1118 AC_DEFINE(HAVE_RESIZETERM, 1,
1119 [Define if curses library has the resizeterm().])
1120 ])
1121 ])
1122
1123
1124 AC_ARG_WITH([tinfo], AS_HELP_STRING([--without-tinfo], [compile without libtinfo]),
1125 [], [with_tinfo=auto]
1126 )
1127 have_tinfo=no
1128 have_tinfow=no
1129 AS_IF([test "x$with_tinfo" != xno], [
1130 AS_IF([test "x$have_ncursesw" = xyes], [
1131 UL_TINFO_CHECK([tinfow])
1132 ])
1133 AS_IF([test "x$have_tinfow" = xno], [
1134 UL_TINFO_CHECK([tinfo])
1135 ])
1136 ])
1137 AC_SUBST([TINFO_LIBS])
1138 AC_SUBST([TINFO_LIBS_STATIC])
1139 AC_SUBST([TINFO_CFLAGS])
1140 AM_CONDITIONAL([HAVE_TINFO], [test "x$have_tinfo" = xyes || test "x$have_tinfow" = xyes])
1141 AS_IF([test "x$have_tinfo" = xyes || test "x$have_tinfow" = xyes], [
1142 AC_DEFINE(HAVE_LIBTINFO, 1, [Define if libtinfo or libtinfow available.])
1143 ])
1144
1145
1146 AC_ARG_WITH([readline],
1147 AS_HELP_STRING([--without-readline], [do not build with GNU Readline support]),
1148 [], [with_readline=auto]
1149 )
1150
1151 AS_IF([test "x$with_readline" = xno], [
1152 AM_CONDITIONAL([HAVE_READLINE], [false])
1153 ], [
1154 UL_CHECK_LIB([readline], [readline])
1155 AS_CASE([$with_readline:$have_readline],
1156 [yes:no],
1157 [AC_MSG_ERROR([readline selected but libreadline not found ])],
1158 [*:yes],
1159 [READLINE_LIBS="-lreadline"
1160 READLINE_LIBS_STATIC="-lreadline $TINFO_LIBS_STATIC"]
1161 )
1162 ])
1163 AC_SUBST([READLINE_LIBS])
1164 AC_SUBST([READLINE_LIBS_STATIC])
1165
1166
1167 AC_ARG_WITH([utempter],
1168 AS_HELP_STRING([--with-utempter], [compile script(1) with libutempter]),
1169 [], [with_utempter=no]
1170 )
1171
1172 AS_IF([test "x$with_utempter" = xyes], [
1173 UL_CHECK_LIB([utempter], [utempter_add_record])
1174 AS_IF([test "x$have_utempter" = xno], [
1175 AC_MSG_ERROR([utempter selected but libutempter not found])
1176 ])
1177 ], [
1178 AM_CONDITIONAL([HAVE_UTEMPTER], [false])
1179 ])
1180
1181
1182 dnl
1183 dnl libuuid
1184 dnl
1185 AC_ARG_ENABLE([libuuid],
1186 AS_HELP_STRING([--disable-libuuid], [do not build libuuid and uuid utilities]),
1187 [], [UL_DEFAULT_ENABLE([libuuid], [yes])]
1188 )
1189 UL_BUILD_INIT([libuuid])
1190 AC_SUBST([LIBUUID_VERSION])
1191 AC_SUBST([LIBUUID_VERSION_INFO])
1192 AM_CONDITIONAL(BUILD_LIBUUID, test "x$build_libuuid" = xyes)
1193
1194 AC_ARG_ENABLE([libuuid-force-uuidd],
1195 AS_HELP_STRING([--enable-libuuid-force-uuidd], [support uuidd even though the daemon is not built]),
1196 [], [enable_libuuid_force_uuidd=no]
1197 )
1198
1199 AS_IF([test "x$build_libuuid" = xyes], [
1200 AC_DEFINE(HAVE_LIBUUID, 1, [Define to 1 if you have the -luuid.])
1201 ])
1202
1203 dnl
1204 dnl libblkid
1205 dnl
1206 AC_ARG_ENABLE([libblkid],
1207 AS_HELP_STRING([--disable-libblkid], [do not build libblkid and many related utilities]),
1208 [], [UL_DEFAULT_ENABLE([libblkid], [check])]
1209 )
1210 UL_BUILD_INIT([libblkid])
1211 UL_REQUIRES_HAVE([libblkid], [openat], [openat functions])
1212 UL_REQUIRES_HAVE([libblkid], [dirfd,ddfd], [dirfd or ddfd function])
1213 AC_SUBST([LIBBLKID_DATE])
1214 AC_SUBST([LIBBLKID_VERSION])
1215 AC_SUBST([LIBBLKID_VERSION_INFO])
1216 AC_DEFINE_UNQUOTED([LIBBLKID_VERSION], ["$LIBBLKID_VERSION"], [libblkid version string])
1217 AC_DEFINE_UNQUOTED([LIBBLKID_DATE], ["$LIBBLKID_DATE"], [libblkid date string])
1218 AS_IF([test "x$build_libblkid" = xyes], [
1219 AC_DEFINE([HAVE_LIBBLKID], [1], [Define to 1 if you have the -lblkid.])
1220 ])
1221 AM_CONDITIONAL([BUILD_LIBBLKID], [test "x$build_libblkid" = xyes])
1222 AM_CONDITIONAL([BUILD_LIBBLKID_TESTS], [test "x$build_libblkid" = xyes && test "x$enable_static" = xyes])
1223
1224 dnl
1225 dnl libmount
1226 dnl
1227 AC_ARG_ENABLE([libmount],
1228 AS_HELP_STRING([--disable-libmount], [do not build libmount]),
1229 [], [UL_DEFAULT_ENABLE([libmount], [check])]
1230 )
1231 UL_BUILD_INIT([libmount])
1232 UL_REQUIRES_BUILD([libmount], [libblkid])
1233 UL_REQUIRES_HAVE([libmount], [dirfd,ddfd], [dirfd or ddfd function])
1234 UL_REQUIRES_HAVE([libmount], [mntent_h], [mntent.h header file])
1235 AM_CONDITIONAL([BUILD_LIBMOUNT], [test "x$build_libmount" = xyes])
1236 AM_CONDITIONAL([BUILD_LIBMOUNT_TESTS], [test "x$build_libmount" = xyes && test "x$enable_static" = xyes])
1237 AS_IF([test "x$build_libmount" = xyes], [
1238 AC_DEFINE(HAVE_LIBMOUNT, 1, [Define if libmount available.])
1239 AS_IF([test "x$have_setns_syscall" = "xyes"], [
1240 AC_DEFINE([USE_LIBMOUNT_SUPPORT_NAMESPACES], [1], [Define to 1 if want to support namepaces.])
1241 ],[
1242 AC_MSG_WARN([libmount will be compiled without namespaces support])
1243 ])
1244 ])
1245
1246 AC_SUBST([LIBMOUNT_VERSION])
1247 AC_SUBST([LIBMOUNT_MAJOR_VERSION], $PACKAGE_VERSION_MAJOR)
1248 AC_SUBST([LIBMOUNT_MINOR_VERSION], $PACKAGE_VERSION_MINOR)
1249 AC_SUBST([LIBMOUNT_PATCH_VERSION], $PACKAGE_VERSION_RELEASE)
1250 AC_SUBST([LIBMOUNT_VERSION_INFO])
1251 AC_DEFINE_UNQUOTED([LIBMOUNT_VERSION], ["$LIBMOUNT_VERSION"], [libmount version string])
1252
1253 AC_ARG_ENABLE([libmount-mountfd-support],
1254 AS_HELP_STRING([--disable-libmount-mountfd-support], [do not use new mount API based on FDs]),
1255 [], [enable_libmount_mountfd_support=check]
1256 )
1257 UL_BUILD_INIT([libmount_mountfd_support])
1258 UL_REQUIRES_BUILD([libmount_mountfd_support], [libmount])
1259 UL_REQUIRES_LINUX([libmount_mountfd_support])
1260 UL_REQUIRES_HAVE([libmount_mountfd_support], [mountfd_api], [mount FDs based API])
1261 UL_REQUIRES_HAVE([libmount_mountfd_support], [linux_mount_h], [linux/mount.h])
1262 AS_IF([test "x$build_libmount_mountfd_support" = xyes ], [
1263 AC_DEFINE([USE_LIBMOUNT_MOUNTFD_SUPPORT], [1], [Enable support for new mount FD based kernel API])
1264 ])
1265
1266
1267 dnl
1268 dnl libsmartcols
1269 dnl
1270 AC_ARG_ENABLE([libsmartcols],
1271 AS_HELP_STRING([--disable-libsmartcols], [do not build libsmartcols]),
1272 [], [UL_DEFAULT_ENABLE([libsmartcols], [yes])]
1273 )
1274 UL_BUILD_INIT([libsmartcols])
1275 AM_CONDITIONAL([BUILD_LIBSMARTCOLS], [test "x$build_libsmartcols" = xyes])
1276
1277 AC_SUBST([LIBSMARTCOLS_VERSION])
1278 AC_SUBST([LIBSMARTCOLS_VERSION_INFO])
1279 AC_DEFINE_UNQUOTED([LIBSMARTCOLS_VERSION], ["$LIBSMARTCOLS_VERSION"], [libsmartcols version string])
1280
1281
1282 dnl
1283 dnl libfdisk
1284 dnl
1285 AC_ARG_ENABLE([libfdisk],
1286 AS_HELP_STRING([--disable-libfdisk], [do not build libfdisk]),
1287 [], [UL_DEFAULT_ENABLE([libfdisk], [check])]
1288 )
1289 UL_BUILD_INIT([libfdisk])
1290 UL_REQUIRES_BUILD([libfdisk], [libuuid])
1291 AM_CONDITIONAL([BUILD_LIBFDISK], [test "x$build_libfdisk" = xyes])
1292 AM_CONDITIONAL([BUILD_LIBFDISK_TESTS], [test "x$build_libfdisk" = xyes && test "x$enable_static" = xyes])
1293
1294 AS_IF([test "x$build_libblkid" = xyes],
1295 [LIBFDISK_PC_REQUIRES="uuid blkid"],[LIBFDISK_PC_REQUIRES="uuid"])
1296 AC_SUBST([LIBFDISK_PC_REQUIRES])
1297
1298 AC_SUBST([LIBFDISK_VERSION])
1299 AC_SUBST([LIBFDISK_MAJOR_VERSION], $PACKAGE_VERSION_MAJOR)
1300 AC_SUBST([LIBFDISK_MINOR_VERSION], $PACKAGE_VERSION_MINOR)
1301 AC_SUBST([LIBFDISK_PATCH_VERSION], $PACKAGE_VERSION_RELEASE)
1302 AC_SUBST([LIBFDISK_VERSION_INFO])
1303 AC_DEFINE_UNQUOTED([LIBFDISK_VERSION], ["$LIBFDISK_VERSION"], [libfdisk version string])
1304
1305
1306 AC_ARG_ENABLE([fdisks],
1307 AS_HELP_STRING([--disable-fdisks], [do not build fdisk(8), sfdisk(8) and cfdisk(8)]),
1308 [], [UL_DEFAULT_ENABLE([fdisks], [check])]
1309 )
1310 enable_fdisk=$enable_fdisks
1311 enable_sfdisk=$enable_fdisks
1312 enable_cfdisk=$enable_fdisks
1313
1314 UL_BUILD_INIT([fdisk])
1315 UL_REQUIRES_HAVE([fdisk], [openat], [openat functions])
1316 UL_REQUIRES_HAVE([fdisk], [dirfd,ddfd], [dirfd or ddfd function])
1317 UL_REQUIRES_BUILD([fdisk], [libfdisk])
1318 UL_REQUIRES_BUILD([fdisk], [libsmartcols])
1319 AM_CONDITIONAL([BUILD_FDISK], [test "x$build_fdisk" = xyes])
1320
1321
1322 UL_BUILD_INIT([sfdisk])
1323 UL_REQUIRES_HAVE([sfdisk], [openat], [openat functions])
1324 UL_REQUIRES_HAVE([sfdisk], [dirfd,ddfd], [dirfd or ddfd function])
1325 UL_REQUIRES_BUILD([sfdisk], [libfdisk])
1326 UL_REQUIRES_BUILD([sfdisk], [libsmartcols])
1327 AM_CONDITIONAL([BUILD_SFDISK], [test "x$build_sfdisk" = xyes])
1328
1329
1330 UL_BUILD_INIT([cfdisk])
1331 UL_REQUIRES_BUILD([cfdisk], [libfdisk])
1332 UL_REQUIRES_BUILD([cfdisk], [libsmartcols])
1333 UL_REQUIRES_HAVE([cfdisk], [open_memstream], [open_memstream function])
1334 UL_REQUIRES_HAVE([cfdisk], [ncursesw,slang,ncurses], [ncursesw, ncurses or slang library])
1335 AM_CONDITIONAL([BUILD_CFDISK], [test "x$build_cfdisk" = xyes])
1336
1337
1338 AC_ARG_ENABLE([mount],
1339 AS_HELP_STRING([--disable-mount], [do not build mount(8) and umount(8)]),
1340 [], [UL_DEFAULT_ENABLE([mount], [check])]
1341 )
1342 UL_BUILD_INIT([mount])
1343 UL_REQUIRES_LINUX([mount])
1344 UL_REQUIRES_BUILD([mount], [libmount])
1345 AM_CONDITIONAL([BUILD_MOUNT], [test "x$build_mount" = xyes])
1346
1347
1348 AC_ARG_ENABLE([losetup],
1349 AS_HELP_STRING([--disable-losetup], [do not build losetup]),
1350 [], [UL_DEFAULT_ENABLE([losetup], [check])]
1351 )
1352 UL_BUILD_INIT([losetup])
1353 UL_REQUIRES_LINUX([losetup])
1354 UL_REQUIRES_BUILD([losetup], [libsmartcols])
1355 AM_CONDITIONAL([BUILD_LOSETUP], [test "x$build_losetup" = xyes])
1356
1357 AC_ARG_ENABLE([zramctl],
1358 AS_HELP_STRING([--disable-zramctl], [do not build zramctl]),
1359 [], [UL_DEFAULT_ENABLE([zramctl], [check])]
1360 )
1361 UL_BUILD_INIT([zramctl])
1362 UL_REQUIRES_LINUX([zramctl])
1363 UL_REQUIRES_BUILD([zramctl], [libsmartcols])
1364 AM_CONDITIONAL([BUILD_ZRAMCTL], [test "x$build_zramctl" = xyes])
1365
1366 AC_ARG_ENABLE([fsck],
1367 AS_HELP_STRING([--disable-fsck], [do not build fsck]),
1368 [], [UL_DEFAULT_ENABLE([fsck], [check])]
1369 )
1370 UL_BUILD_INIT([fsck])
1371 UL_REQUIRES_BUILD([fsck], [libmount])
1372 AM_CONDITIONAL([BUILD_FSCK], [test "x$build_fsck" = xyes])
1373
1374
1375 AC_ARG_ENABLE([partx],
1376 AS_HELP_STRING([--disable-partx], [do not build addpart, delpart, partx]),
1377 [], [UL_DEFAULT_ENABLE([partx], [check])]
1378 )
1379 UL_BUILD_INIT([partx])
1380 UL_REQUIRES_LINUX([partx])
1381 UL_REQUIRES_BUILD([partx], [libblkid])
1382 UL_REQUIRES_BUILD([partx], [libsmartcols])
1383 AM_CONDITIONAL([BUILD_PARTX], [test "x$build_partx" = xyes])
1384
1385
1386 AC_ARG_ENABLE([uuidd],
1387 AS_HELP_STRING([--disable-uuidd], [do not build the uuid daemon]),
1388 [], [UL_DEFAULT_ENABLE([uuidd], [check])]
1389 )
1390 UL_BUILD_INIT([uuidd])
1391 UL_REQUIRES_BUILD([uuidd], [libuuid])
1392 UL_REQUIRES_HAVE([uuidd], [timer], [timer_create function])
1393 UL_REQUIRES_HAVE([uuidd], [sys_signalfd_h], [sys/signalfd.h header])
1394 AS_IF([test "x$build_uuidd" = xyes || test "x$enable_libuuid_force_uuidd" = xyes], [
1395 AC_DEFINE([HAVE_UUIDD], [1], [Define to 1 if you want to use uuid daemon.])
1396 ])
1397 AM_CONDITIONAL([BUILD_UUIDD], [test "x$build_uuidd" = xyes])
1398
1399
1400 AC_ARG_ENABLE([uuidgen],
1401 AS_HELP_STRING([--disable-uuidgen], [do not build uuidgen]),
1402 [], [UL_DEFAULT_ENABLE([uuidgen], [check])]
1403 )
1404 UL_BUILD_INIT([uuidgen])
1405 UL_REQUIRES_BUILD([uuidgen], [libuuid])
1406 AM_CONDITIONAL([BUILD_UUIDGEN], [test "x$build_uuidgen" = xyes])
1407
1408 UL_BUILD_INIT([uuidparse], [check])
1409 UL_REQUIRES_BUILD([uuidparse], [libuuid])
1410 UL_REQUIRES_BUILD([uuidparse], [libsmartcols])
1411 AM_CONDITIONAL([BUILD_UUIDPARSE], [test "x$build_uuidparse" = xyes])
1412
1413 AC_ARG_ENABLE([blkid],
1414 AS_HELP_STRING([--disable-blkid], [do not build blkid(8)]),
1415 [], [UL_DEFAULT_ENABLE([blkid], [check])]
1416 )
1417 UL_BUILD_INIT([blkid])
1418 UL_REQUIRES_BUILD([blkid], [libblkid])
1419 AM_CONDITIONAL([BUILD_BLKID], [test "x$build_blkid" = xyes])
1420
1421 UL_BUILD_INIT([findfs], [check])
1422 UL_REQUIRES_BUILD([findfs], [libblkid])
1423 AM_CONDITIONAL([BUILD_FINDFS], [test "x$build_findfs" = xyes])
1424
1425 AC_ARG_ENABLE([wipefs],
1426 AS_HELP_STRING([--disable-wipefs], [do not build wipefs]),
1427 [], [UL_DEFAULT_ENABLE([wipefs], [check])]
1428 )
1429 UL_BUILD_INIT([wipefs])
1430 UL_REQUIRES_BUILD([wipefs], [libblkid])
1431 UL_REQUIRES_BUILD([wipefs], [libsmartcols])
1432 AM_CONDITIONAL([BUILD_WIPEFS], [test "x$build_wipefs" = xyes])
1433
1434 UL_BUILD_INIT([findmnt], [check])
1435 UL_REQUIRES_BUILD([findmnt], [libmount])
1436 UL_REQUIRES_BUILD([findmnt], [libblkid])
1437 UL_REQUIRES_BUILD([findmnt], [libsmartcols])
1438 AM_CONDITIONAL([BUILD_FINDMNT], [test "x$build_findmnt" = xyes])
1439
1440
1441 AC_ARG_ENABLE([mountpoint],
1442 AS_HELP_STRING([--disable-mountpoint], [do not build mountpoint]),
1443 [], [UL_DEFAULT_ENABLE([mountpoint], [check])]
1444 )
1445 UL_BUILD_INIT([mountpoint])
1446 UL_REQUIRES_BUILD([mountpoint], [libmount])
1447 AM_CONDITIONAL([BUILD_MOUNTPOINT], [test "x$build_mountpoint" = xyes])
1448
1449
1450 AC_ARG_ENABLE([fallocate],
1451 AS_HELP_STRING([--disable-fallocate], [do not build fallocate]),
1452 [], [UL_DEFAULT_ENABLE([fallocate], [check])]
1453 )
1454 UL_BUILD_INIT([fallocate])
1455 UL_REQUIRES_LINUX([fallocate])
1456 UL_REQUIRES_SYSCALL_CHECK([fallocate], [UL_CHECK_SYSCALL([fallocate])])
1457 AM_CONDITIONAL([BUILD_FALLOCATE], [test "x$build_fallocate" = xyes])
1458
1459 AS_IF([test "x$build_fallocate" = xyes], [
1460 dnl check for valid fallocate() function
1461 dnl with 32 bits glibc 2.10, fallocate() exists but not fallocate64()
1462 dnl when _FILE_OFFSET_BITS==64, fallocate() is redirect to fallocate64()
1463 dnl and program can't be linked.
1464 dnl AC_CHECK_FUNC can't catch such errors since it's redefining
1465 dnl function prototype.
1466 AC_MSG_CHECKING([for valid fallocate() function])
1467 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1468 #ifdef HAVE_UNISTD_H
1469 # include <unistd.h>
1470 #endif
1471 #ifdef HAVE_SYS_TYPES_H
1472 # include <sys/types.h>
1473 #endif
1474 #ifdef HAVE_LINUX_FALLOC_H
1475 # include <linux/falloc.h>
1476 #endif
1477 #ifdef HAVE_FCNTL_H
1478 # include <fcntl.h>
1479 #endif
1480 ]],[[
1481 long ret;
1482 ret = fallocate(0, FALLOC_FL_KEEP_SIZE, 0xfffffffful, 0xfffffffful);
1483 if (ret != 0) {
1484 return 1;
1485 }
1486 ]])],[
1487 AC_MSG_RESULT([yes])
1488 AC_DEFINE([HAVE_FALLOCATE], [1], [Have valid fallocate() function])],[
1489 AC_MSG_RESULT([no])])
1490 ])
1491
1492 AS_IF([test "x$build_fallocate" = xyes], [
1493 dnl check for valid posix_fallocate() function
1494 AC_MSG_CHECKING([for valid posix_fallocate() function])
1495 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1496 #ifdef HAVE_UNISTD_H
1497 # include <unistd.h>
1498 #endif
1499 #ifdef HAVE_SYS_TYPES_H
1500 # include <sys/types.h>
1501 #endif
1502 #ifdef HAVE_LINUX_FALLOC_H
1503 # include <linux/falloc.h>
1504 #endif
1505 #ifdef HAVE_FCNTL_H
1506 # include <fcntl.h>
1507 #endif
1508 ]],[[
1509 long ret;
1510 ret = posix_fallocate(0, 0xfffffffful, 0xfffffffful);
1511 if (ret != 0) {
1512 return 1;
1513 }
1514 ]])],[
1515 AC_MSG_RESULT([yes])
1516 AC_DEFINE([HAVE_POSIX_FALLOCATE], [1], [Have valid posix_fallocate() function])],[
1517 AC_MSG_RESULT([no])])
1518 ])
1519
1520
1521 AC_ARG_ENABLE([unshare],
1522 AS_HELP_STRING([--disable-unshare], [do not build unshare]),
1523 [], [UL_DEFAULT_ENABLE([unshare], [check])]
1524 )
1525 UL_BUILD_INIT([unshare])
1526 UL_REQUIRES_LINUX([unshare])
1527 UL_REQUIRES_SYSCALL_CHECK([unshare], [UL_CHECK_SYSCALL([unshare])])
1528 UL_REQUIRES_HAVE([unshare], [linux_capability_h], [linux/capability.h header file])
1529 AM_CONDITIONAL([BUILD_UNSHARE], [test "x$build_unshare" = xyes])
1530
1531 AC_MSG_CHECKING([for valid unshare() function])
1532 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1533 #include <sched.h>
1534 ]],[[
1535 int ret;
1536 ret = unshare(0);
1537 if (ret != 0) {
1538 return 1;
1539 }
1540 ]])],[
1541 AC_MSG_RESULT([yes])
1542 AC_DEFINE([HAVE_UNSHARE], [1], [Have valid unshare() function])],
1543 [
1544 AC_MSG_RESULT([no])
1545 ])
1546
1547
1548 AC_ARG_ENABLE([nsenter],
1549 AS_HELP_STRING([--disable-nsenter], [do not build nsenter]),
1550 [], [UL_DEFAULT_ENABLE([nsenter], [check])]
1551 )
1552 UL_BUILD_INIT([nsenter])
1553 UL_REQUIRES_LINUX([nsenter])
1554 UL_REQUIRES_HAVE([nsenter], [setns_syscall], [setns syscall])
1555 AM_CONDITIONAL([BUILD_NSENTER], [test "x$build_nsenter" = xyes])
1556
1557 AC_MSG_CHECKING([for valid setns() function])
1558 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1559 #include <sched.h>
1560 #include <errno.h>
1561 ]],[[
1562 int ret;
1563 ret = setns(0, 0);
1564 if (ret != EINVAL && ret != EBADF && ret != EPERM) {
1565 return 1;
1566 }
1567 ]])],[
1568 AC_MSG_RESULT([yes])
1569 AC_DEFINE([HAVE_SETNS], [1], [Have valid setns() function])],
1570 [
1571 AC_MSG_RESULT([no])
1572 ])
1573
1574
1575 AC_ARG_WITH([cap_ng],
1576 AS_HELP_STRING([--without-cap-ng], [compile without libcap-ng]),
1577 [], [with_cap_ng=auto]
1578 )
1579 AS_IF([test "x$with_cap_ng" = xno], [
1580 AM_CONDITIONAL([HAVE_CAP_NG], [false])
1581 have_cap_ng=no
1582 ],[
1583 UL_CHECK_LIB([cap-ng], [capng_apply], [cap_ng])
1584 ])
1585
1586
1587 AC_ARG_ENABLE([setpriv],
1588 AS_HELP_STRING([--disable-setpriv], [do not build setpriv]),
1589 [], [UL_DEFAULT_ENABLE([setpriv], [check])]
1590 )
1591 UL_BUILD_INIT([setpriv])
1592 UL_REQUIRES_LINUX([setpriv])
1593 UL_REQUIRES_HAVE([setpriv], [linux_securebits_h], [linux/securebits.h header file])
1594 UL_REQUIRES_HAVE([setpriv], [linux_capability_h], [linux/capability.h header file])
1595 UL_REQUIRES_HAVE([setpriv], [cap_ng], [libcap-ng library])
1596 AM_CONDITIONAL([BUILD_SETPRIV], [test "x$build_setpriv" = xyes])
1597
1598 AC_ARG_ENABLE([hardlink],
1599 AS_HELP_STRING([--disable-hardlink], [do not build hardlink]),
1600 [], [UL_DEFAULT_ENABLE([hardlink], [check])]
1601 )
1602 UL_BUILD_INIT([hardlink])
1603 AM_CONDITIONAL([BUILD_HARDLINK], [test "x$build_hardlink" = xyes])
1604
1605
1606 AC_ARG_ENABLE([eject],
1607 AS_HELP_STRING([--disable-eject], [do not build eject]),
1608 [], [UL_DEFAULT_ENABLE([eject], [check])]
1609 )
1610 UL_BUILD_INIT([eject])
1611 UL_REQUIRES_LINUX([eject])
1612 UL_REQUIRES_BUILD([eject], [libmount])
1613 AM_CONDITIONAL([BUILD_EJECT], [test "x$build_eject" = xyes])
1614
1615
1616 AC_ARG_ENABLE([agetty],
1617 AS_HELP_STRING([--disable-agetty], [do not build agetty]),
1618 [], [UL_DEFAULT_ENABLE([agetty], [check])]
1619 )
1620 UL_BUILD_INIT([agetty])
1621 UL_REQUIRES_HAVE([agetty], [utmpx_h], [utmpx.h header])
1622 UL_REQUIRES_HAVE([agetty], [gnu_utmpx], [GNU utmpx functions])
1623 AM_CONDITIONAL([BUILD_AGETTY], [test "x$build_agetty" = xyes])
1624 AS_IF([test "x$have_futimens" = xyes && test "x$have_inotify_init1" = xyes ], [
1625 AC_DEFINE([AGETTY_RELOAD], [1], [Enable agetty --reload feature])
1626 ],[
1627 AC_MSG_WARN([futimens or inotify_init1 not found; agetty(8) will not provide ---reload functionality])
1628 ])
1629
1630
1631 AC_ARG_ENABLE([plymouth_support],
1632 AS_HELP_STRING([--disable-plymouth_support], [do not care about plymouth in sulogin(8) and agetty(8)]),
1633 [], [enable_plymouth_support=check]
1634 )
1635 UL_BUILD_INIT([plymouth_support])
1636 UL_REQUIRES_HAVE([plymouth_support], [tiocglcktrmios], [TIOCGLCKTRMIOS flag])
1637 UL_REQUIRES_HAVE([plymouth_support], [sock_cloexec], [SOCK_CLOEXEC flag])
1638 UL_REQUIRES_HAVE([plymouth_support], [sock_nonblock], [SOCK_NONBLOCK flag])
1639 UL_REQUIRES_HAVE([plymouth_support], [so_passcred], [SO_PASSCRED flag])
1640 AM_CONDITIONAL([USE_PLYMOUTH_SUPPORT], [test "x$build_plymouth_support" = xyes])
1641 AS_IF([test "x$build_plymouth_support" = xyes ], [
1642 AC_DEFINE([USE_PLYMOUTH_SUPPORT], [1], [Enable plymouth support feature for sulogin and agetty])
1643 ])
1644
1645
1646 AC_ARG_WITH([libz],
1647 AS_HELP_STRING([--without-libz], [compile without libz]),
1648 [], [with_libz=auto]
1649 )
1650 AS_IF([test "x$with_libz" = xno], [have_z=no], [
1651 AC_CHECK_LIB([z], [crc32], [have_z=yes], [have_z=no])
1652 ])
1653
1654 AC_ARG_WITH([libmagic],
1655 AS_HELP_STRING([--without-libmagic], [compile without libmagic]),
1656 [], [with_libmagic=auto]
1657 )
1658 AS_IF([test "x$with_libmagic" = xno], [have_magic=no], [
1659 AC_CHECK_LIB([magic], [magic_open], [
1660 AC_CHECK_HEADER(magic.h, [
1661 AC_DEFINE([HAVE_MAGIC], [1], [Define to 1 if you have the libmagic present.])
1662 MAGIC_LIBS="-lmagic"
1663 ])
1664 ])
1665 ])
1666 AC_SUBST([MAGIC_LIBS])
1667
1668
1669 AC_ARG_ENABLE([cramfs],
1670 AS_HELP_STRING([--disable-cramfs], [do not build fsck.cramfs, mkfs.cramfs]),
1671 [], [UL_DEFAULT_ENABLE([cramfs], [check])]
1672 )
1673 UL_BUILD_INIT([cramfs])
1674 UL_REQUIRES_HAVE([cramfs], [z], [z library])
1675 AM_CONDITIONAL([BUILD_CRAMFS], [test "x$build_cramfs" = xyes])
1676
1677
1678 AC_ARG_ENABLE([bfs],
1679 AS_HELP_STRING([--disable-bfs], [do not build mkfs.bfs]),
1680 [], [UL_DEFAULT_ENABLE([bfs], [yes])]
1681 )
1682 UL_BUILD_INIT([bfs])
1683 AM_CONDITIONAL([BUILD_BFS], [test "x$build_bfs" = xyes])
1684
1685
1686 AC_ARG_ENABLE([minix],
1687 AS_HELP_STRING([--disable-minix], [do not build fsck.minix, mkfs.minix]),
1688 [], [UL_DEFAULT_ENABLE([minix], [yes])]
1689 )
1690 UL_BUILD_INIT([minix])
1691 AM_CONDITIONAL([BUILD_MINIX], [test "x$build_minix" = xyes])
1692
1693
1694 AC_ARG_ENABLE([fdformat],
1695 AS_HELP_STRING([--enable-fdformat], [build fdformat]),
1696 [], [UL_DEFAULT_ENABLE([fdformat], [no])]
1697 )
1698 UL_BUILD_INIT([fdformat])
1699 UL_REQUIRES_LINUX([fdformat])
1700 AM_CONDITIONAL([BUILD_FDFORMAT], [test "x$build_fdformat" = xyes])
1701
1702
1703 AC_ARG_ENABLE([hwclock],
1704 AS_HELP_STRING([--disable-hwclock], [do not build hwclock]),
1705 [], [UL_DEFAULT_ENABLE([hwclock], [check])]
1706 )
1707 have_linuxdummy=$linux_os
1708
1709 UL_BUILD_INIT([hwclock])
1710 UL_REQUIRES_HAVE([hwclock], [io, linuxdummy], [ioperm iopl function or Linux])
1711 AM_CONDITIONAL([BUILD_HWCLOCK], [test "x$build_hwclock" = xyes])
1712
1713 AC_ARG_ENABLE([hwclock_cmos],
1714 AS_HELP_STRING([--disable-hwclock-cmos], [do not use CMOS clock]),
1715 [], [enable_hwclock_cmos=check]
1716 )
1717 UL_BUILD_INIT([hwclock_cmos])
1718 UL_REQUIRES_BUILD([hwclock_cmos], [hwclock])
1719 UL_REQUIRES_ARCH([hwclock_cmos], [i?86-*,x86_64*])
1720 AM_CONDITIONAL([USE_HWCLOCK_CMOS], [test "x$build_hwclock_cmos" = xyes])
1721 AS_IF([test "x$build_hwclock_cmos" = xyes ], [
1722 AC_DEFINE([USE_HWCLOCK_CMOS], [1], [Define to 1 if want to use CMOS clock.])
1723 ])
1724
1725 AC_ARG_ENABLE([hwclock_gplv3],
1726 AS_HELP_STRING([--disable-hwclock-gplv3], [do not use datetime parsing GPLv3 code]),
1727 [], [enable_hwclock_gplv3=yes]
1728 )
1729 AM_CONDITIONAL([USE_HWCLOCK_GPLv3_DATETIME], [test "x$enable_hwclock_gplv3" = xyes])
1730 AS_IF([test "x$enable_hwclock_gplv3" = xyes ], [
1731 AC_DEFINE([USE_HWCLOCK_GPLv3_DATETIME], [1], [use datetime parsing GPLv3 code to hwclock])
1732 ])
1733
1734
1735 AC_ARG_ENABLE([mkfs],
1736 AS_HELP_STRING([--disable-mkfs], [do not build mkfs(8)]),
1737 [], [UL_DEFAULT_ENABLE([mkfs], [check])]
1738 )
1739 UL_BUILD_INIT([mkfs])
1740 AM_CONDITIONAL([BUILD_MKFS], [test "x$build_mkfs" = xyes])
1741
1742 UL_BUILD_INIT([isosize], [yes])
1743 AM_CONDITIONAL([BUILD_ISOSIZE], [test "x$build_isosize" = xyes])
1744
1745
1746 AC_ARG_ENABLE([fstrim],
1747 AS_HELP_STRING([--disable-fstrim], [do not build fstrim(8)]),
1748 [], [UL_DEFAULT_ENABLE([fstrim], [check])]
1749 )
1750 UL_BUILD_INIT([fstrim])
1751 UL_REQUIRES_LINUX([fstrim])
1752 UL_REQUIRES_BUILD([fstrim], [libmount])
1753 AM_CONDITIONAL([BUILD_FSTRIM], [test "x$build_fstrim" = xyes])
1754
1755
1756 AC_ARG_ENABLE([swapon],
1757 AS_HELP_STRING([--disable-swapon], [do not build swapon(8) and swapoff(8)]),
1758 [], [UL_DEFAULT_ENABLE([swapon], [check])]
1759 )
1760 UL_BUILD_INIT([swapon])
1761 UL_REQUIRES_LINUX([swapon])
1762 UL_REQUIRES_SYSCALL_CHECK([swapon], [UL_CHECK_SYSCALL([swapon])], [swapon])
1763 UL_REQUIRES_SYSCALL_CHECK([swapon], [UL_CHECK_SYSCALL([swapoff])], [swapoff])
1764 UL_REQUIRES_BUILD([swapon], [libblkid])
1765 UL_REQUIRES_BUILD([swapon], [libmount])
1766 UL_REQUIRES_BUILD([swapon], [libsmartcols])
1767 AM_CONDITIONAL([BUILD_SWAPON], [test "x$build_swapon" = xyes])
1768 AC_CHECK_FUNCS([swapon])
1769 AC_CHECK_FUNCS([swapoff])
1770
1771
1772 UL_BUILD_INIT([lsblk], [check])
1773 UL_REQUIRES_LINUX([lsblk])
1774 UL_REQUIRES_BUILD([lsblk], [libblkid])
1775 UL_REQUIRES_BUILD([lsblk], [libmount])
1776 UL_REQUIRES_BUILD([lsblk], [libsmartcols])
1777 AM_CONDITIONAL([BUILD_LSBLK], [test "x$build_lsblk" = xyes])
1778
1779
1780 AC_ARG_ENABLE([lscpu],
1781 AS_HELP_STRING([--disable-lscpu], [do not build lscpu]),
1782 [], [UL_DEFAULT_ENABLE([lscpu], [check])]
1783 )
1784 UL_BUILD_INIT([lscpu])
1785 UL_REQUIRES_LINUX([lscpu])
1786 UL_REQUIRES_BUILD([lscpu], [libsmartcols])
1787 UL_REQUIRES_HAVE([lscpu], [cpu_set_t], [cpu_set_t type])
1788 AM_CONDITIONAL([BUILD_LSCPU], [test "x$build_lscpu" = xyes])
1789
1790 AC_ARG_ENABLE([lsfd],
1791 AS_HELP_STRING([--disable-lsfd], [do not build lsfd]),
1792 [], [UL_DEFAULT_ENABLE([lsfd], [check])]
1793 )
1794 UL_BUILD_INIT([lsfd])
1795 UL_REQUIRES_LINUX([lsfd])
1796 UL_REQUIRES_BUILD([lsfd], [libsmartcols])
1797 UL_REQUIRES_HAVE([lsfd], [linux_kcmp_h], [linux/kcmp.h header file])
1798 AM_CONDITIONAL([BUILD_LSFD], [test "x$build_lsfd" = xyes])
1799
1800 AC_ARG_ENABLE([lslogins],
1801 AS_HELP_STRING([--disable-lslogins], [do not build lslogins]),
1802 [], [UL_DEFAULT_ENABLE([lslogins], [check])]
1803 )
1804 UL_BUILD_INIT([lslogins])
1805 UL_REQUIRES_BUILD([lslogins], [libsmartcols])
1806 UL_REQUIRES_HAVE([lslogins], [shadow_h], [shadow.h header])
1807 UL_REQUIRES_HAVE([lslogins], [utmpx_h], [utmpx.h header])
1808 UL_REQUIRES_HAVE([lslogins], [gnu_utmpx], [GNU utmpx functions])
1809 AM_CONDITIONAL([BUILD_LSLOGINS], [test "x$build_lslogins" = xyes])
1810
1811
1812 UL_BUILD_INIT([chcpu], [check])
1813 UL_REQUIRES_LINUX([chcpu])
1814 UL_REQUIRES_HAVE([chcpu], [cpu_set_t], [cpu_set_t type])
1815 AM_CONDITIONAL([BUILD_CHCPU], [test "x$build_chcpu" = xyes])
1816
1817
1818 AC_ARG_ENABLE([wdctl],
1819 AS_HELP_STRING([--disable-wdctl], [do not build wdctl]),
1820 [], [UL_DEFAULT_ENABLE([wdctl], [check])]
1821 )
1822 UL_BUILD_INIT([wdctl])
1823 UL_REQUIRES_LINUX([wdctl])
1824 UL_REQUIRES_BUILD([wdctl], [libsmartcols])
1825 UL_REQUIRES_HAVE([wdctl], [linux_watchdog_h], [linux/watchdog.h header file])
1826 AM_CONDITIONAL([BUILD_WDCTL], [test "x$build_wdctl" = xyes])
1827
1828
1829 UL_BUILD_INIT([swaplabel], [check])
1830 UL_REQUIRES_BUILD([swaplabel], [libblkid])
1831 AM_CONDITIONAL([BUILD_SWAPLABEL], [test "x$build_swaplabel" = xyes])
1832
1833
1834 UL_BUILD_INIT([mkswap], [yes])
1835 AM_CONDITIONAL([BUILD_MKSWAP], [test "x$build_mkswap" = xyes])
1836 AS_IF([test "x$build_mkswap" = xyes && test "x$build_libuuid" != xyes], [
1837 AC_MSG_WARN([uuid library is not found; mkswap(8) will not generate UUIDs])
1838 ])
1839
1840
1841 AC_ARG_ENABLE([cal],
1842 AS_HELP_STRING([--disable-cal], [do not build cal]),
1843 [], [UL_DEFAULT_ENABLE([cal], [check])]
1844 )
1845 UL_BUILD_INIT([cal])
1846 AM_CONDITIONAL([BUILD_CAL], [test "x$build_cal" = xyes])
1847
1848 AC_ARG_ENABLE([logger],
1849 AS_HELP_STRING([--disable-logger], [do not build logger]),
1850 [], [UL_DEFAULT_ENABLE([logger], [check])]
1851 )
1852 UL_BUILD_INIT([logger])
1853 AM_CONDITIONAL([BUILD_LOGGER], [test "x$build_logger" = xyes])
1854
1855 UL_BUILD_INIT([look], [yes])
1856 AM_CONDITIONAL([BUILD_LOOK], [test "x$build_look" = xyes])
1857
1858 UL_BUILD_INIT([mcookie], [yes])
1859 AM_CONDITIONAL([BUILD_MCOOKIE], [test "x$build_mcookie" = xyes])
1860
1861 UL_BUILD_INIT([namei], [yes])
1862 AM_CONDITIONAL([BUILD_NAMEI], [test "x$build_namei" = xyes])
1863
1864 matriplet="$($CC -print-multiarch 2>/dev/null || true)"
1865 if test "x$matriplet" != "x"; then
1866 AC_DEFINE_UNQUOTED([MULTIARCHTRIPLET], ["$matriplet"],
1867 ["Multi-arch triplet for whereis library search path"])
1868 fi
1869 AC_ARG_ENABLE([whereis],
1870 AS_HELP_STRING([--disable-whereis], [do not build whereis]),
1871 [], [UL_DEFAULT_ENABLE([whereis], [check])]
1872 )
1873 UL_BUILD_INIT([whereis])
1874 AM_CONDITIONAL([BUILD_WHEREIS], [test "x$build_whereis" = xyes])
1875
1876 AC_ARG_ENABLE([pipesz],
1877 AS_HELP_STRING([--disable-pipesz], [do not build pipesz]),
1878 [], [UL_DEFAULT_ENABLE([pipesz], [check])]
1879 )
1880 UL_BUILD_INIT([pipesz])
1881 UL_REQUIRES_LINUX([pipesz])
1882 AM_CONDITIONAL([BUILD_PIPESZ], [test "x$build_pipesz" = xyes])
1883
1884 UL_BUILD_INIT([fadvise], [check])
1885 UL_REQUIRES_LINUX([fadvise])
1886 AM_CONDITIONAL([BUILD_FADVISE], [test "x$build_fadvise" = xyes])
1887
1888 AC_ARG_ENABLE([waitpid],
1889 AS_HELP_STRING([--disable-waitpid], [do not build waitpid]),
1890 [], [UL_DEFAULT_ENABLE([waitpid], [check])]
1891 )
1892 UL_BUILD_INIT([waitpid])
1893 UL_REQUIRES_LINUX([waitpid])
1894 UL_REQUIRES_SYSCALL_CHECK([waitpid], [UL_CHECK_SYSCALL([pidfd_open])], [pidfd_open])
1895 AM_CONDITIONAL([BUILD_WAITPID], [test "x$build_waitpid" = xyes])
1896
1897 UL_BUILD_INIT([enosys], [check])
1898 UL_REQUIRES_LINUX([enosys])
1899 AS_IF([test "x$build_enosys" = xyes], [
1900 AC_MSG_CHECKING([for valid audit arch])
1901 AC_COMPILE_IFELSE(
1902 [AC_LANG_PROGRAM([[#include "${srcdir}/include/audit-arch.h"]])],
1903 [AC_MSG_RESULT([yes])],
1904 [AC_MSG_RESULT([no])
1905 build_enosys=no
1906 ])
1907 ])
1908 AM_CONDITIONAL([BUILD_ENOSYS], [test "x$build_enosys" = xyes])
1909
1910 UL_BUILD_INIT([lsclocks], [yes])
1911 AM_CONDITIONAL([BUILD_LSCLOCKS], [test "x$build_lsclocks" = xyes])
1912
1913 UL_BUILD_INIT([getopt], [yes])
1914 AM_CONDITIONAL([BUILD_GETOPT], [test "x$build_getopt" = xyes])
1915
1916
1917 UL_BUILD_INIT([blockdev], [check])
1918 UL_REQUIRES_LINUX([blockdev])
1919 AM_CONDITIONAL([BUILD_BLOCKDEV], [test "x$build_blockdev" = xyes])
1920
1921
1922 UL_BUILD_INIT([prlimit], [check])
1923 UL_REQUIRES_LINUX([prlimit])
1924 UL_REQUIRES_BUILD([prlimit], [libsmartcols])
1925 UL_REQUIRES_SYSCALL_CHECK([prlimit], [UL_CHECK_SYSCALL([prlimit64])], [prlimit64])
1926 AM_CONDITIONAL([BUILD_PRLIMIT], [test "x$build_prlimit" = xyes])
1927 AS_IF([test "x$build_prlimit" = xyes], [
1928 dnl check for valid prlimit() function
1929 AC_MSG_CHECKING([for valid prlimit() function])
1930 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1931 #include <sys/types.h>
1932 #include <sys/time.h>
1933 #include <sys/resource.h>
1934 #include <stddef.h>
1935 ]],[[
1936 int ret;
1937 ret = prlimit(0, RLIMIT_AS, NULL, NULL);
1938 if (ret != 0) {
1939 return 1;
1940 }
1941 ]])],[
1942 AC_MSG_RESULT([yes])
1943 AC_DEFINE([HAVE_PRLIMIT], [1], [Have valid prlimit() function])],[
1944 AC_MSG_RESULT([no])])
1945 ])
1946
1947
1948
1949 UL_BUILD_INIT([lslocks], [check])
1950 UL_REQUIRES_LINUX([lslocks])
1951 UL_REQUIRES_BUILD([lslocks], [libmount])
1952 UL_REQUIRES_BUILD([lslocks], [libsmartcols])
1953 AM_CONDITIONAL([BUILD_LSLOCKS], [test "x$build_lslocks" = xyes])
1954
1955
1956 AC_ARG_ENABLE([switch_root],
1957 AS_HELP_STRING([--disable-switch_root], [do not build switch_root]),
1958 [], [UL_DEFAULT_ENABLE([switch_root], [check])]
1959 )
1960 UL_BUILD_INIT([switch_root])
1961 UL_REQUIRES_LINUX([switch_root])
1962 UL_REQUIRES_HAVE([switch_root], [openat], [openat function])
1963 UL_REQUIRES_HAVE([switch_root], [dirfd,ddfd], [dirfd or ddfd function])
1964 AM_CONDITIONAL([BUILD_SWITCH_ROOT], [test "x$build_switch_root" = xyes])
1965
1966
1967 AC_ARG_ENABLE([pivot_root],
1968 AS_HELP_STRING([--disable-pivot_root], [do not build pivot_root]),
1969 [], [UL_DEFAULT_ENABLE([pivot_root], [check])]
1970 )
1971 UL_BUILD_INIT([pivot_root])
1972 UL_REQUIRES_LINUX([pivot_root])
1973 UL_REQUIRES_SYSCALL_CHECK([pivot_root], [UL_CHECK_SYSCALL([pivot_root])])
1974 AM_CONDITIONAL([BUILD_PIVOT_ROOT], [test "x$build_pivot_root" = xyes])
1975
1976
1977 UL_BUILD_INIT([flock], [check])
1978 UL_REQUIRES_HAVE([flock], [timer], [timer_create/setitimer function])
1979 AM_CONDITIONAL([BUILD_FLOCK], [test "x$build_flock" = xyes])
1980
1981
1982 AC_ARG_ENABLE([lsmem],
1983 AS_HELP_STRING([--disable-lsmem], [do not build lsmem]),
1984 [], [UL_DEFAULT_ENABLE([lsmem], [check])]
1985 )
1986 UL_BUILD_INIT([lsmem])
1987 UL_REQUIRES_LINUX([lsmem])
1988 UL_REQUIRES_BUILD([lsmem], [libsmartcols])
1989 AM_CONDITIONAL([BUILD_LSMEM], [test "x$build_lsmem" = xyes])
1990
1991
1992 AC_ARG_ENABLE([chmem],
1993 AS_HELP_STRING([--disable-chmem], [do not build chmem]),
1994 [], [UL_DEFAULT_ENABLE([chmem], [check])]
1995 )
1996 UL_BUILD_INIT([chmem])
1997 UL_REQUIRES_LINUX([chmem])
1998 AM_CONDITIONAL([BUILD_CHMEM], [test "x$build_chmem" = xyes])
1999
2000
2001 AC_ARG_ENABLE([ipcmk],
2002 AS_HELP_STRING([--disable-ipcmk], [do not build ipcmk]),
2003 [], [UL_DEFAULT_ENABLE([ipcmk], [check])]
2004 )
2005 UL_BUILD_INIT([ipcmk])
2006 UL_EXCLUDE_ARCH([ipcmk], [*darwin*])
2007 AM_CONDITIONAL([BUILD_IPCMK], [test "x$build_ipcmk" = xyes])
2008
2009 AC_ARG_ENABLE([ipcrm],
2010 AS_HELP_STRING([--disable-ipcrm], [do not build ipcrm]),
2011 [], [UL_DEFAULT_ENABLE([ipcrm], [check])]
2012 )
2013 UL_BUILD_INIT([ipcrm])
2014 UL_EXCLUDE_ARCH([ipcrm], [*darwin*])
2015 AM_CONDITIONAL([BUILD_IPCRM], [test "x$build_ipcrm" = xyes])
2016
2017 AC_ARG_ENABLE([ipcs],
2018 AS_HELP_STRING([--disable-ipcs], [do not build ipcs]),
2019 [], [UL_DEFAULT_ENABLE([ipcs], [check])]
2020 )
2021 UL_BUILD_INIT([ipcs])
2022 UL_EXCLUDE_ARCH([ipcs], [*darwin*])
2023 AM_CONDITIONAL([BUILD_IPCS], [test "x$build_ipcs" = xyes])
2024
2025
2026 AC_ARG_ENABLE([irqtop],
2027 AS_HELP_STRING([--disable-irqtop], [do not build irqtop]),
2028 [], [UL_DEFAULT_ENABLE([irqtop], [check])]
2029 )
2030 UL_BUILD_INIT([irqtop])
2031 UL_REQUIRES_LINUX([irqtop])
2032 UL_REQUIRES_BUILD([irqtop], [libsmartcols])
2033 UL_REQUIRES_HAVE([irqtop], [open_memstream], [open_memstream function])
2034 UL_REQUIRES_HAVE([irqtop], [ncursesw,slang,ncurses], [ncursesw, ncurses or slang library])
2035 AM_CONDITIONAL([BUILD_IRQTOP], [test "x$build_irqtop" = xyes])
2036
2037 AC_ARG_ENABLE([lsirq],
2038 AS_HELP_STRING([--disable-lsirq], [do not build lsirq]),
2039 [], [UL_DEFAULT_ENABLE([lsirq], [check])]
2040 )
2041 UL_BUILD_INIT([lsirq])
2042 UL_REQUIRES_LINUX([lsirq])
2043 UL_REQUIRES_BUILD([lsirq], [libsmartcols])
2044 AM_CONDITIONAL([BUILD_LSIRQ], [test "x$build_lsirq" = xyes])
2045
2046
2047 UL_BUILD_INIT([choom], [check])
2048 UL_REQUIRES_LINUX([choom])
2049 AM_CONDITIONAL([BUILD_CHOOM], [test "x$build_choom" = xyes])
2050
2051 UL_BUILD_INIT([lsipc], [check])
2052 UL_REQUIRES_LINUX([lsipc])
2053 UL_REQUIRES_BUILD([lsipc], [libsmartcols])
2054 AM_CONDITIONAL([BUILD_LSIPC], [test "x$build_lsipc" = xyes])
2055
2056 AC_ARG_ENABLE([lsns],
2057 AS_HELP_STRING([--disable-lsns], [do not build lsns]),
2058 [], [UL_DEFAULT_ENABLE([lsns], [check])]
2059 )
2060 UL_BUILD_INIT([lsns])
2061 UL_REQUIRES_LINUX([lsns])
2062 UL_REQUIRES_BUILD([lsns], [libsmartcols])
2063 UL_REQUIRES_BUILD([lsns], [libmount])
2064 AM_CONDITIONAL([BUILD_LSNS], [test "x$build_lsns" = xyes])
2065
2066 UL_BUILD_INIT([renice], [yes])
2067 AM_CONDITIONAL([BUILD_RENICE], [test "x$build_renice" = xyes])
2068
2069
2070 AC_ARG_ENABLE([rfkill],
2071 AS_HELP_STRING([--disable-rfkill], [do not build rfkill]),
2072 [], [UL_DEFAULT_ENABLE([rfkill], [check])]
2073 )
2074 UL_BUILD_INIT([rfkill])
2075 UL_REQUIRES_LINUX([rfkill])
2076 UL_REQUIRES_BUILD([rfkill], [libsmartcols])
2077 AM_CONDITIONAL([BUILD_RFKILL], [test "x$build_rfkill" = xyes])
2078
2079
2080 UL_BUILD_INIT([setpgid], [yes])
2081 AM_CONDITIONAL([BUILD_SETPGID], [test "x$build_setpgid" = xyes])
2082
2083 UL_BUILD_INIT([setsid], [yes])
2084 AM_CONDITIONAL([BUILD_SETSID], [test "x$build_setsid" = xyes])
2085
2086 UL_BUILD_INIT([readprofile], [check])
2087 UL_REQUIRES_LINUX([readprofile])
2088 AM_CONDITIONAL([BUILD_READPROFILE], [test "x$build_readprofile" = xyes])
2089
2090 UL_BUILD_INIT([dmesg], [check])
2091 UL_REQUIRES_LINUX([dmesg])
2092 AM_CONDITIONAL([BUILD_DMESG], [test "x$build_dmesg" = xyes])
2093
2094 UL_BUILD_INIT([ctrlaltdel], [check])
2095 UL_REQUIRES_LINUX([ctrlaltdel])
2096 dnl we assume reboot() to be the 1-argument variant, because even considering
2097 dnl widely used alternative C libraries like uclibc, dietlibc and musl,
2098 dnl reboot() with multiple arguments is yet only found in glibc versions
2099 dnl earlier than 2.x.
2100 UL_REQUIRES_HAVE([ctrlaltdel], [reboot], [reboot function])
2101 AM_CONDITIONAL([BUILD_CTRLALTDEL], [test "x$build_ctrlaltdel" = xyes])
2102
2103 UL_BUILD_INIT([fincore], [check])
2104 UL_REQUIRES_LINUX([fincore])
2105 UL_REQUIRES_BUILD([fincore], [libsmartcols])
2106 AM_CONDITIONAL([BUILD_FINCORE], [test "x$build_fincore" = xyes])
2107
2108 UL_BUILD_INIT([fsfreeze], [check])
2109 UL_REQUIRES_LINUX([fsfreeze])
2110 AM_CONDITIONAL([BUILD_FSFREEZE], [test "x$build_fsfreeze" = xyes])
2111
2112 UL_BUILD_INIT([blkdiscard], [check])
2113 UL_REQUIRES_LINUX([blkdiscard])
2114 AM_CONDITIONAL([BUILD_BLKDISCARD], [test "x$build_blkdiscard" = xyes])
2115
2116 UL_BUILD_INIT([blkzone], [check])
2117 UL_REQUIRES_LINUX([blkzone])
2118 UL_REQUIRES_HAVE([blkzone], [linux_blkzoned_h], [linux/blkzoned.h header])
2119 AM_CONDITIONAL([BUILD_BLKZONE], [test "x$build_blkzone" = xyes])
2120
2121 UL_BUILD_INIT([blkpr], [check])
2122 UL_REQUIRES_LINUX([blkpr])
2123 UL_REQUIRES_HAVE([blkpr], [linux_pr_h], [linux/pr.h header])
2124 AM_CONDITIONAL([BUILD_BLKPR], [test "x$build_blkpr" = xyes])
2125
2126 UL_BUILD_INIT([ldattach], [check])
2127 UL_REQUIRES_LINUX([ldattach])
2128 AM_CONDITIONAL([BUILD_LDATTACH], [test "x$build_ldattach" = xyes])
2129
2130 UL_BUILD_INIT([rtcwake], [check])
2131 UL_REQUIRES_LINUX([rtcwake])
2132 AM_CONDITIONAL([BUILD_RTCWAKE], [test "x$build_rtcwake" = xyes])
2133
2134 UL_BUILD_INIT([setarch], [check])
2135 UL_REQUIRES_LINUX([setarch])
2136 AM_CONDITIONAL([BUILD_SETARCH], [test "x$build_setarch" = xyes])
2137
2138
2139 # build_scriptutils= is just configure-only variable to control
2140 # script, scriptreplay and scriptlive
2141 AC_ARG_ENABLE([scriptutils],
2142 AS_HELP_STRING([--disable-scriptutils], [do not build script, scriptreplay and scriptlive]),
2143 [], [UL_DEFAULT_ENABLE([scriptutils], [check])]
2144 )
2145
2146 UL_ENABLE_ALIAS([script], [scriptutils])
2147 UL_BUILD_INIT([script])
2148 UL_REQUIRES_HAVE([script], [pty], [openpty function (libutil)])
2149 AM_CONDITIONAL([BUILD_SCRIPT], [test "x$build_script" = xyes])
2150
2151 UL_ENABLE_ALIAS([scriptreplay], [scriptutils])
2152 UL_BUILD_INIT([scriptreplay])
2153 AM_CONDITIONAL([BUILD_SCRIPTREPLAY], [test "x$build_scriptreplay" = xyes])
2154
2155 UL_ENABLE_ALIAS([scriptlive], [scriptutils])
2156 UL_BUILD_INIT([scriptlive])
2157 UL_REQUIRES_HAVE([scriptlive], [pty], [openpty function (libutil)])
2158 AM_CONDITIONAL([BUILD_SCRIPTLIVE], [test "x$build_scriptlive" = xyes])
2159
2160
2161 UL_BUILD_INIT([col], [yes])
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_UNQUOTED([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 ])