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