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