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