]> git.ipfire.org Git - thirdparty/util-linux.git/blob - configure.ac
whereis: include native multiarch path in lib search paths
[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 [http://www.kernel.org/pub/linux/utils/util-linux/])
5
6
7 AC_PREREQ([2.60])
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 AC_PROG_LIBTOOL) to avoid autoconf errors.
13 AC_USE_SYSTEM_EXTENSIONS
14 AM_INIT_AUTOMAKE([-Wall foreign 1.10 tar-pax dist-bzip2 no-dist-gzip dist-xz -Wno-portability subdir-objects])
15
16 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
17 [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
18
19 AC_CONFIG_SRCDIR([sys-utils/mount.c])
20 AC_PREFIX_DEFAULT([/usr])
21
22 dnl version details from <major>.<minor>[-<suffix>]
23 PACKAGE_VERSION_MAJOR=$(echo $PACKAGE_VERSION | awk -F. '{print $1}')
24 PACKAGE_VERSION_MINOR=$(echo $PACKAGE_VERSION | awk -F. '{
25 sub("-.*","",$2); print $2}')
26 PACKAGE_VERSION_RELEASE=$(echo $PACKAGE_VERSION | awk -F. '{
27 sub("-.*","",$3); print $3 ~ /^@<:@0-9@:>@+$/ ? $3 : 0}')
28
29 dnl libblkid version
30 LIBBLKID_VERSION="$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_RELEASE"
31 LIBBLKID_DATE="02-Jun-2017"
32 LIBBLKID_LT_MAJOR=1
33 LIBBLKID_LT_MINOR=1
34 LIBBLKID_LT_MICRO=0
35 LIBBLKID_VERSION_INFO=`expr $LIBBLKID_LT_MAJOR + $LIBBLKID_LT_MINOR`:$LIBBLKID_LT_MICRO:$LIBBLKID_LT_MINOR
36
37 dnl libuuid version
38 LIBUUID_VERSION="$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_RELEASE"
39 LIBUUID_LT_MAJOR=1
40 LIBUUID_LT_MINOR=3
41 LIBUUID_LT_MICRO=0
42 LIBUUID_VERSION_INFO=`expr $LIBUUID_LT_MAJOR + $LIBUUID_LT_MINOR`:$LIBUUID_LT_MICRO:$LIBUUID_LT_MINOR
43
44 dnl libmount version
45 LIBMOUNT_VERSION="$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_RELEASE"
46 LIBMOUNT_LT_MAJOR=1
47 LIBMOUNT_LT_MINOR=1
48 LIBMOUNT_LT_MICRO=0
49 LIBMOUNT_VERSION_INFO=`expr $LIBMOUNT_LT_MAJOR + $LIBMOUNT_LT_MINOR`:$LIBMOUNT_LT_MICRO:$LIBMOUNT_LT_MINOR
50
51 dnl libsmartcols version
52 LIBSMARTCOLS_VERSION="$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_RELEASE"
53 LIBSMARTCOLS_LT_MAJOR=1
54 LIBSMARTCOLS_LT_MINOR=1
55 LIBSMARTCOLS_LT_MICRO=0
56 LIBSMARTCOLS_VERSION_INFO=`expr $LIBSMARTCOLS_LT_MAJOR + $LIBSMARTCOLS_LT_MINOR`:$LIBSMARTCOLS_LT_MICRO:$LIBSMARTCOLS_LT_MINOR
57
58 dnl libfdisk version
59 LIBFDISK_VERSION="$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_RELEASE"
60 LIBFDISK_LT_MAJOR=1
61 LIBFDISK_LT_MINOR=1
62 LIBFDISK_LT_MICRO=0
63 LIBFDISK_VERSION_INFO=`expr $LIBFDISK_LT_MAJOR + $LIBFDISK_LT_MINOR`:$LIBFDISK_LT_MICRO:$LIBFDISK_LT_MINOR
64
65 # Check whether exec_prefix=/usr:
66 AS_CASE([$exec_prefix:$prefix],
67 [NONE:NONE | NONE:/usr | /usr:*],
68 [AC_MSG_NOTICE([Default --exec-prefix detected.])
69 AS_CASE([$bindir], ['${exec_prefix}/bin'], [bindir=/bin; AC_MSG_NOTICE([ --bindir defaults to /bin]) ])
70 AS_CASE([$sbindir], ['${exec_prefix}/sbin'], [sbindir=/sbin; AC_MSG_NOTICE([ --sbindir defaults to /sbin])])
71 AS_CASE([$libdir], ['${exec_prefix}/lib'], [libdir=/lib; AC_MSG_NOTICE([ --libdir defaults to /lib]) ])
72 ]
73 )
74
75 AS_CASE([$prefix:$localstatedir],
76 [NONE:'${prefix}/var' | /usr:'${prefix}/var'],
77 [localstatedir=/run
78 AC_MSG_NOTICE([ --localstatedir defaults to /run])
79 ]
80 )
81 AC_SUBST([localstatedir])
82
83
84 # The original default values of {bin,sbin,lib}dir
85 usrbin_execdir='${exec_prefix}/bin'
86 AC_SUBST([usrbin_execdir])
87
88 usrsbin_execdir='${exec_prefix}/sbin'
89 AC_SUBST([usrsbin_execdir])
90
91 AS_CASE([$libdir],
92 ['${exec_prefix}/'* | '${prefix}/'* | /usr/* | "${prefix}"/* ],
93 [usrlib_execdir=$libdir],
94 [usrlib_execdir='${exec_prefix}'$libdir]
95 )
96 AC_SUBST([usrlib_execdir])
97
98
99 AM_PROG_CC_C_O
100 AC_PROG_MKDIR_P
101 AC_PROG_CC_STDC
102 AC_PROG_YACC
103 AC_CANONICAL_HOST
104 AC_C_CONST
105 AC_C_VOLATILE
106 AC_C_BIGENDIAN
107
108 dnl Compiler warnings
109 UL_WARN_ADD([-fno-common])
110 UL_WARN_ADD([-Wall])
111 UL_WARN_ADD([-Werror=sequence-point])
112 UL_WARN_ADD([-Wextra])
113 UL_WARN_ADD([-Wextra-semi])
114 UL_WARN_ADD([-Wembedded-directive])
115 UL_WARN_ADD([-Wmissing-declarations])
116 UL_WARN_ADD([-Wmissing-parameter-type])
117 UL_WARN_ADD([-Wmissing-prototypes])
118 UL_WARN_ADD([-Wno-missing-field-initializers])
119 UL_WARN_ADD([-Wredundant-decls])
120 UL_WARN_ADD([-Wsign-compare])
121 UL_WARN_ADD([-Wtype-limits])
122 UL_WARN_ADD([-Wuninitialized])
123 UL_WARN_ADD([-Wunused-but-set-parameter])
124 UL_WARN_ADD([-Wunused-but-set-variable])
125 UL_WARN_ADD([-Wunused-parameter])
126 UL_WARN_ADD([-Wunused-result])
127 UL_WARN_ADD([-Wunused-variable])
128 UL_WARN_ADD([-Wnested-externs])
129 UL_WARN_ADD([-Wpointer-arith])
130 UL_WARN_ADD([-Wstrict-prototypes])
131 UL_WARN_ADD([-Wformat-security])
132 UL_WARN_ADD([-Wimplicit-function-declaration])
133 AC_SUBST([WARN_CFLAGS])
134
135 UL_WARN_ADD([-Wno-clobbered], [BSD_WARN_CFLAGS])
136 AC_SUBST([BSD_WARN_CFLAGS])
137 UL_WARN_ADD([-Wno-unused-parameter], [NO_UNUSED_WARN_CFLAGS])
138 AC_SUBST([NO_UNUSED_WARN_CFLAGS])
139
140 dnl libtool-2
141 LT_INIT
142
143 dnl check supported linker flags
144 AX_CHECK_VSCRIPT
145
146 m4_ifndef([PKG_PROG_PKG_CONFIG],
147 [m4_fatal([Could not locate the pkg-config autoconf
148 macros. These are usually located in /usr/share/aclocal/pkg.m4.
149 If your macros are in a different location, try setting the
150 environment variable AL_OPTS="-I/other/macro/dir" before running
151 ./autogen.sh or autoreconf again.])])
152 PKG_PROG_PKG_CONFIG
153
154 GTK_DOC_CHECK([1.10])
155 AC_PATH_PROG([XSLTPROC], [xsltproc])
156
157 linux_os=no
158 bsd_os=no
159 AS_CASE([${host_os}],
160 [*linux*],
161 [linux_os=yes],
162 [*darwin*],
163 [darwin_os=yes],
164 [*bsd*],
165 [bsd_os=yes])
166 AM_CONDITIONAL([LINUX], [test "x$linux_os" = xyes])
167 AM_CONDITIONAL([DARWIN], [test "x$darwin_os" = xyes])
168 AM_CONDITIONAL([BSD], [test "x$bsd_os" = xyes])
169
170 AS_IF([test "x$darwin_os" = xyes], [
171 AC_DEFINE([_DARWIN_C_SOURCE], [1], [Enable MAP_ANON in sys/mman.h on Mac OS X])
172 ])
173
174 dnl define ARCH_<NAME> conditionals
175 UL_SET_ARCH([I86], [i?86-*])
176 UL_SET_ARCH([86_64], [x86_64*])
177 UL_SET_ARCH([IA64], [ia64*])
178 UL_SET_ARCH([S390], [s390*])
179 UL_SET_ARCH([SPARC], [sparc*])
180 UL_SET_ARCH([PPC], [ppc*|powerpc*])
181 UL_SET_ARCH([M68K], [m68*])
182 UL_SET_ARCH([MIPS], [mips*])
183 UL_SET_ARCH([HPPA], [hppa*|parisc*])
184
185 AC_SYS_LARGEFILE
186 AC_HEADER_ASSERT
187 AC_STRUCT_TIMEZONE
188
189 dnl Don't forget to maintain alternatively allowed versions in autogen.sh!
190 AM_GNU_GETTEXT_VERSION([0.18.3])
191 AM_GNU_GETTEXT([external])
192
193 AS_IF([test -d "$srcdir/po"], [
194 ALL_LINGUAS=`cd $srcdir/po > /dev/null && echo *.po | sed 's/\.po//g'`
195 ], [
196 ALL_LINGUAS="af am ar as be bg bn_IN bn ca cs cy da de el en_GB es et eu_ES fa fi fr gl gu he hi hr hu hy id is it ja ka kn ko ku lo lt lv mk ml mr ms my nb nl nn no nso or pa pl pt_BR pt ro ru si sk sl sq sr@Latn sr sv ta te th tr uk ur vi zh_CN zh_TW zu"
197 ])
198
199 AC_CHECK_HEADERS([linux/compiler.h linux/blkpg.h linux/major.h], [], [], [
200 #ifdef HAVE_LINUX_COMPILER_H
201 #include <linux/compiler.h>
202 #endif
203 ])
204 AC_CHECK_HEADERS([ \
205 asm/io.h \
206 err.h \
207 errno.h \
208 fcntl.h \
209 getopt.h \
210 inttypes.h \
211 lastlog.h \
212 libutil.h \
213 linux/btrfs.h \
214 linux/cdrom.h \
215 linux/falloc.h \
216 linux/watchdog.h \
217 linux/fd.h \
218 linux/raw.h \
219 linux/tiocl.h \
220 linux/version.h \
221 linux/securebits.h \
222 locale.h \
223 mntent.h \
224 net/if.h \
225 net/if_dl.h \
226 netinet/in.h \
227 paths.h \
228 pty.h \
229 security/pam_appl.h \
230 stdint.h \
231 stdio_ext.h \
232 stdlib.h \
233 endian.h \
234 byteswap.h \
235 sys/endian.h \
236 sys/disk.h \
237 sys/disklabel.h \
238 sys/file.h \
239 sys/io.h \
240 sys/ioccom.h \
241 sys/ioctl.h \
242 sys/mkdev.h \
243 sys/mount.h \
244 sys/param.h \
245 sys/prctl.h \
246 sys/resource.h \
247 sys/signalfd.h \
248 sys/socket.h \
249 sys/sockio.h \
250 sys/stat.h \
251 sys/sysmacros.h \
252 sys/swap.h \
253 sys/syscall.h \
254 sys/time.h \
255 sys/timex.h \
256 sys/ttydefaults.h \
257 sys/types.h \
258 sys/ucred.h \
259 sys/un.h \
260 unistd.h \
261 shadow.h \
262 utmp.h \
263 utmpx.h \
264 ])
265
266 AC_CHECK_HEADERS([linux/gsmmux.h ], [], [],
267 [#ifdef LINUX_GSMMUX_H
268 # include <linux/gsmmux.h>
269 #endif
270 ])
271
272 AC_CHECK_HEADERS([security/pam_misc.h],
273 [AM_CONDITIONAL([HAVE_LINUXPAM], [true])],
274 [AM_CONDITIONAL([HAVE_LINUXPAM], [false])], [
275 #ifdef HAVE_SECURITY_PAM_APPL_H
276 #include <security/pam_appl.h>
277 #endif
278 ])
279
280 AC_CHECK_HEADERS([linux/blkzoned.h])
281
282 AC_CHECK_HEADERS([security/openpam.h], [], [], [
283 #ifdef HAVE_SECURITY_PAM_APPL_H
284 #include <security/pam_appl.h>
285 #endif
286 ])
287
288 AC_CHECK_HEADERS([langinfo.h],
289 [AM_CONDITIONAL([HAVE_LANGINFO], [true])],
290 [AM_CONDITIONAL([HAVE_LANGINFO], [false])])
291
292 dnl Convert some ac_cv_header_* variables to have_*
293 dnl
294 have_linux_version_h=$ac_cv_header_linux_version_h
295 have_linux_blkzoned_h=$ac_cv_header_linux_blkzoned_h
296 have_linux_btrfs_h=$ac_cv_header_linux_btrfs_h
297 have_linux_raw_h=$ac_cv_header_linux_raw_h
298 have_linux_securebits_h=$ac_cv_header_linux_securebits_h
299 have_linux_watchdog_h=$ac_cv_header_linux_watchdog_h
300 have_security_pam_appl_h=$ac_cv_header_security_pam_appl_h
301 have_security_pam_misc_h=$ac_cv_header_security_pam_misc_h
302 have_security_openpam_h=$ac_cv_header_security_openpam_h
303 have_shadow_h=$ac_cv_header_shadow_h
304 have_sys_signalfd_h=$ac_cv_header_sys_signalfd_h
305 have_utmpx_h=$ac_cv_header_utmpx_h
306
307 AS_CASE([$linux_os:$have_linux_version_h],
308 [yes:no],
309 [AC_MSG_ERROR([kernel headers required on Linux])]
310 )
311
312 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
313 #include <time.h>
314 #include <unistd.h>
315 ]], [[
316 int a = 0;
317 struct tm *tm = localtime(0);
318 if (a == -1) /* false */
319 sleep(tm->tm_gmtoff);
320 ]])],
321 [AC_DEFINE([HAVE_TM_GMTOFF], [1], [Does struct tm have a field tm_gmtoff?])
322 ])
323
324 AC_CHECK_MEMBERS([struct termios.c_line],,,
325 [[#include <termios.h>]])
326
327 AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec],,,
328 [#include <sys/stat.h>])
329
330 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
331 [[
332 #ifdef HAVE_SYS_SWAP_H
333 # include <sys/swap.h>
334 #endif
335 #include <unistd.h>
336 ]],
337 [[swapon("/dev/null", 0);]])],
338 [AC_DEFINE([SWAPON_HAS_TWO_ARGS], [1], [Is swapon() declared with two parameters?])
339 ],
340 [AC_MSG_NOTICE([Your libc thinks that swapon has 1 arg only.])
341 ])
342
343
344 AC_CHECK_DECLS([_NL_TIME_WEEK_1STDAY],[],[],[[#include <langinfo.h>]])
345
346 AC_CHECK_DECL([llseek],
347 [AC_DEFINE([HAVE_LLSEEK_PROTOTYPE], [1],
348 [Define to 1 if have llseek prototype])],
349 [],
350 [#include <unistd.h>])
351
352 AC_CHECK_DECL([lseek64],
353 [AC_DEFINE([HAVE_LSEEK64_PROTOTYPE], [1],
354 [Define to 1 if have lseek64 prototype])],
355 [],
356 [#define _LARGEFILE_SOURCE
357 #define _LARGEFILE64_SOURCE
358 #include <unistd.h>])
359
360 AC_CHECK_DECL([environ],
361 [AC_DEFINE([HAVE_ENVIRON_DECL], [1],
362 [Define to 1 if have **environ prototype])],
363 )
364
365 AC_CHECK_DECL([strsignal],
366 [AC_DEFINE([HAVE_STRSIGNAL_DECL], [1],
367 [Define to 1 if have strsignal function prototype])],
368 )
369
370 AC_CHECK_DECL([TIOCGLCKTRMIOS],
371 [have_tiocglcktrmios=yes], [have_tiocglcktrmios=no],
372 [#include <sys/ioctl.h>])
373 AC_CHECK_DECL([SOCK_CLOEXEC],
374 [have_sock_cloexec=yes], [have_sock_cloexec=no],
375 [#include <sys/types.h>
376 #include <sys/socket.h>])
377 AC_CHECK_DECL([SOCK_NONBLOCK],
378 [have_sock_nonblock=yes], [have_sock_nonblock=no],
379 [#include <sys/types.h>
380 #include <sys/socket.h>])
381 AC_CHECK_DECL([SO_PASSCRED],
382 [have_so_passcred=yes], [have_so_passcred=no],
383 [#include <sys/types.h>
384 #include <sys/socket.h>])
385
386 AC_CHECK_FUNCS([ \
387 __fpending \
388 secure_getenv \
389 __secure_getenv \
390 err \
391 errx \
392 explicit_bzero \
393 fsync \
394 utimensat \
395 getdomainname \
396 getdtablesize \
397 getexecname \
398 getmntinfo \
399 getrandom \
400 getrlimit \
401 getsgnam \
402 inotify_init \
403 jrand48 \
404 lchown \
405 llseek \
406 lseek64 \
407 mempcpy \
408 mkostemp \
409 nanosleep \
410 ntp_gettime \
411 personality \
412 posix_fadvise \
413 prctl \
414 qsort_r \
415 rpmatch \
416 scandirat \
417 setprogname \
418 setresgid \
419 setresuid \
420 sched_setattr \
421 sched_setscheduler \
422 sigqueue \
423 srandom \
424 strnchr \
425 strndup \
426 strnlen \
427 sysconf \
428 sysinfo \
429 timegm \
430 usleep \
431 vwarnx \
432 warn \
433 warnx \
434 ])
435 AC_FUNC_FSEEKO
436
437 AC_CHECK_FUNCS([openat fstatat unlinkat], [have_openat=yes], [have_openat=no])
438 AC_CHECK_FUNCS([ioperm iopl], [have_io=yes])
439 AC_CHECK_FUNCS([futimens], [have_futimens=yes])
440 AC_CHECK_FUNCS([inotify_init1], [have_inotify_init1=yes])
441 AC_CHECK_FUNCS([open_memstream], [have_open_memstream=yes],[have_open_memstream=no])
442 AC_CHECK_FUNCS([reboot], [have_reboot=yes],[have_reboot=no])
443 AC_CHECK_FUNCS([updwtmpx updwtmpx], [have_gnu_utmpx=yes], [have_gnu_utmpx=no])
444
445 AM_CONDITIONAL([HAVE_OPENAT], [test "x$have_openat" = xyes])
446
447
448 AC_CHECK_FUNCS([isnan], [],
449 [AC_CHECK_LIB([m], [isnan], [MATH_LIBS="-lm"])]
450 [AC_CHECK_LIB([m], [__isnan], [MATH_LIBS="-lm"])]
451 )
452 AC_SUBST([MATH_LIBS])
453
454
455 dnl lib/mononotic.c may require -lrt
456 AC_CHECK_FUNCS([clock_gettime], [],
457 [AC_CHECK_LIB([rt], [clock_gettime], [REALTIME_LIBS="-lrt"])]
458 )
459
460 have_timer="no"
461 AC_CHECK_FUNCS([timer_create],
462 [have_timer="yes"],
463 [AC_CHECK_LIB([rt], [timer_create], [
464 have_timer="yes"
465 REALTIME_LIBS="-lrt"
466 ],[
467 AC_SEARCH_LIBS([timer_create], [rt], [
468 AC_MSG_RESULT(yes)
469 have_timer="yes"
470 REALTIME_LIBS="-lrt -lpthread"
471 ],[], [-lpthread]
472 )
473 ])]
474 )
475
476 AC_SUBST([REALTIME_LIBS])
477
478
479 AC_CHECK_LIB([rtas], [rtas_get_sysparm], [
480 RTAS_LIBS="-lrtas"
481 AC_DEFINE_UNQUOTED([HAVE_LIBRTAS], [1], [Define if librtas exists]), [],
482 ])
483 AC_SUBST([RTAS_LIBS])
484
485
486 AC_CHECK_MEMBER([struct sockaddr.sa_len],
487 AC_DEFINE_UNQUOTED([HAVE_SA_LEN], [1], [Define if struct sockaddr contains sa_len]), [],
488 [#include <sys/types.h>
489 #include <sys/socket.h>])
490
491 SOCKET_LIBS=
492 AC_SEARCH_LIBS([socket], [socket],
493 [AS_IF([test x"$ac_cv_search_socket" != x"none required"],
494 [SOCKET_LIBS="$SOCKET_LIBS -lsocket"])
495 ])
496 AC_SUBST([SOCKET_LIBS])
497
498
499 have_dirfd=no
500 AC_CHECK_FUNCS([dirfd], [have_dirfd=yes], [have_dirfd=no])
501 AS_IF([test x"$have_dirfd" = xno], [
502 AC_CHECK_DECLS([dirfd],
503 [have_dirfd=yes], [have_dirfd=no],
504 [#include <sys/types.h>
505 #include <dirent.h>])
506 ])
507
508 have_ddfd=no
509 AS_IF([test x"$have_dirfd" = xno], [
510 AC_CHECK_MEMBERS([DIR.dd_fd],
511 [have_ddfd=yes], [have_ddfd=no],
512 [#include <sys/types.h>
513 #include <dirent.h>])
514 ])
515
516 AS_CASE([$have_dirfd:$have_ddfd],
517 [no:no],
518 [AC_MSG_ERROR([cannot find a method to get filedescriptor of directory])]
519 )
520
521
522 AC_MSG_CHECKING([whether program_invocation_short_name is defined])
523 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
524 #include <errno.h>
525 ]], [[
526 program_invocation_short_name = "test";
527 ]])], [
528 AC_MSG_RESULT([yes])
529 AC_DEFINE([HAVE_PROGRAM_INVOCATION_SHORT_NAME], [1],
530 [Define if program_invocation_short_name is defined])
531 ], [
532 AC_MSG_RESULT([no])
533 ])
534
535
536 AC_MSG_CHECKING([whether __progname is defined])
537 AC_LINK_IFELSE([AC_LANG_PROGRAM([extern char *__progname;],
538 [if (*__progname == 0) return 1;])],
539 AC_DEFINE([HAVE___PROGNAME], [1], [Define if __progname is defined])
540 AC_MSG_RESULT([yes]),
541 AC_MSG_RESULT([no]))
542
543 dnl Static compilation
544 m4_define([UL_STATIC_PROGRAMS], [losetup, mount, umount, fdisk, sfdisk, blkid, nsenter, unshare])
545
546 AC_ARG_ENABLE([static-programs],
547 [AS_HELP_STRING([--enable-static-programs=LIST],
548 [link static the programs in LIST (comma-separated,
549 supported for ]m4_defn([UL_STATIC_PROGRAMS])[)])])
550
551 AS_CASE([$enable_static_programs],
552 [yes],
553 [enable_static_programs=m4_quote(UL_STATIC_PROGRAMS)],
554 [no],
555 [enable_static_programs=]
556 )
557
558 dnl Set all the individual AM_CONDITIONALs
559 m4_foreach([UL_PRG], m4_defn([UL_STATIC_PROGRAMS]), [
560 AS_CASE([,$enable_static_programs,],
561 [*,UL_PRG,*], [static_[]UL_PRG=yes]
562 )
563 AS_IF([test "x$static_[]UL_PRG" = xyes], [AC_MSG_NOTICE([enable static build: UL_PRG.])])
564 AM_CONDITIONAL([HAVE_STATIC_]m4_toupper(UL_PRG),
565 [test "x$static_[]UL_PRG" = xyes])
566 ])
567
568
569 AC_ARG_ENABLE([all-programs],
570 AS_HELP_STRING([--disable-all-programs], [disable everything, might be overridden by --enable-<name>]),
571 [], [enable_all_programs=undefined]
572 )
573
574 AS_CASE([$enable_all_programs],
575 [yes], [AC_MSG_WARN([force to build all programs by default])
576 ul_default_estate=check],
577 [no], [AC_MSG_WARN([disable all programs by default])
578 ul_default_estate=no]
579 )
580
581
582 AX_CHECK_TLS
583
584 AC_DEFUN([UL_SCANF_TYPE_MODIFIER], [dnl
585 # include <stdio.h>
586 # include <stdlib.h>
587 int main()
588 {
589 int i;
590 int rc = 1;
591 char *s;
592 i = sscanf("x", $1, &s);
593 if (i == 1 && *s == 'x')
594 rc = 0;
595 free(s);
596 return rc;
597 }])
598
599 AC_CACHE_VAL([scanf_cv_alloc_modifier],
600 AC_RUN_IFELSE([AC_LANG_SOURCE([UL_SCANF_TYPE_MODIFIER(["%ms"])])],
601 [scanf_cv_alloc_modifier=ms],
602 AC_RUN_IFELSE([AC_LANG_SOURCE([UL_SCANF_TYPE_MODIFIER(["%as"])])],
603 [scanf_cv_alloc_modifier=as],
604 [scanf_cv_alloc_modifier=no]
605 )
606 ,
607
608 [AC_COMPILE_IFELSE([AC_LANG_SOURCE([
609 #include <stdio.h>
610 #include <unistd.h>
611
612 #if defined(__GLIBC__) && !defined(__UCLIBC__)
613
614 #if !(__GLIBC_PREREQ(2, 7))
615 #error %m is not available
616 #endif
617
618 #elif defined(_POSIX_VERSION)
619
620 #if _POSIX_VERSION < 200809L
621 #error %m is not available
622 #endif
623
624 #else
625 #error Your C-library is not supported.
626 #endif
627 ])],
628 [scanf_cv_alloc_modifier=ms],
629 [scanf_cv_alloc_modifier=no])]
630 )
631 )
632
633 AC_MSG_CHECKING([scanf string alloc modifiers])
634 AS_CASE([$scanf_cv_alloc_modifier],
635 [ms],
636 [AC_MSG_RESULT([(%ms) yes])
637 AC_DEFINE([HAVE_SCANF_MS_MODIFIER], [1], [scanf %ms modifier])
638 have_scanf_alloc_modifier=yes],
639 [as],
640 [AC_MSG_RESULT([(%as) yes])
641 have_scanf_alloc_modifier=yes
642 AC_DEFINE([HAVE_SCANF_AS_MODIFIER], [1], [scanf %as modifier])],
643 [AC_MSG_RESULT([no])
644 have_scanf_alloc_modifier=no]
645 )
646
647
648 AC_ARG_WITH([util], AS_HELP_STRING([--without-util], [compile without libutil]),
649 [], [with_util=auto]
650 )
651 AS_IF([test "x$with_util" = xno], [
652 AM_CONDITIONAL([HAVE_UTIL], [false])
653 have_util=no
654 ], [
655 UL_CHECK_LIB([util], [openpty])
656 ])
657
658
659 AC_CHECK_TYPES([union semun], [], [], [[
660 #include <sys/sem.h>
661 ]])
662 AC_CHECK_TYPES([loff_t])
663
664
665 AC_ARG_ENABLE([widechar],
666 AS_HELP_STRING([--disable-widechar], [do not compile wide character support]),
667 [], [enable_widechar=check]
668 )
669 UL_BUILD_INIT([widechar])
670 UL_REQUIRES_COMPILE([widechar], [[
671 #include <wchar.h>
672 #include <wctype.h>
673 #include <stdio.h>
674 ]], [[
675 wchar_t wc;
676 wint_t w;
677 w = fgetwc(stdin);
678 if (w == WEOF) exit(1);
679 wc = w;
680 fputwc(wc,stdout);
681 ]],
682 [wchar_t support])
683
684 AS_IF([test "x$build_widechar" = xyes ], [
685 AC_DEFINE([HAVE_WIDECHAR], [1], [Do we have wide character support?])
686 ])
687
688
689 AC_CHECK_TYPES([cpu_set_t], [have_cpu_set_t=yes], [], [[
690 #include <sched.h>
691 ]])
692
693 AM_CONDITIONAL([HAVE_CPU_SET_T], [test "x$have_cpu_set_t" = xyes])
694
695 AC_CHECK_TYPES([sighandler_t], [], [], [[
696 #include <signal.h>
697 ]])
698
699 AC_CHECK_DECLS([CPU_ALLOC], [], [], [[
700 #include <sched.h>
701 ]])
702
703 # on Solaris, you can't mix and match standards, since we use c99
704 # aparently at this stage, XOPEN_SOURCE will conflict. As workaround,
705 # check for crypt.h and use that without XOPEN_SOURCE.
706 AC_CHECK_HEADERS([crypt.h])
707 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
708 #ifdef HAVE_CRYPT_H
709 #include <crypt.h>
710 #else
711 #define _XOPEN_SOURCE
712 #include <unistd.h>
713 #endif
714 ]], [[
715 char *c = crypt("abc","pw");
716 ]])],[],[
717 LIBS="$LIBS -lcrypt"
718 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
719 #ifdef HAVE_CRYPT_H
720 #include <crypt.h>
721 #else
722 #define _XOPEN_SOURCE
723 #include <unistd.h>
724 #endif
725 ]], [[
726 char *c = crypt("abc","pw");
727 ]])],[
728 AC_DEFINE([HAVE_LIBCRYPT], [1], [Do we need -lcrypt?])
729 have_libcrypt=yes
730 ],[
731 AC_MSG_ERROR([crypt() is not available])
732 ])
733 ])
734 AM_CONDITIONAL([HAVE_LIBCRYPT], [test "x$have_libcrypt" = xyes])
735
736
737 AC_ARG_WITH([selinux],
738 AS_HELP_STRING([--with-selinux], [compile with SELinux support]),
739 [], [with_selinux=no]
740 )
741
742 AS_IF([test "x$with_selinux" = xno], [
743 AM_CONDITIONAL([HAVE_SELINUX], [false])
744 ], [
745 PKG_CHECK_MODULES([SELINUX], [libselinux >= 2.0],
746 [AC_DEFINE([HAVE_LIBSELINUX], [1], [Define if SELinux is available])
747 UL_PKG_STATIC([SELINUX_LIBS_STATIC], [libselinux])
748 AM_CONDITIONAL([HAVE_SELINUX], [true])
749 have_selinux=yes],
750 [have_selinux=no])
751
752 AS_CASE([$with_selinux:$have_selinux],
753 [yes:no], [AC_MSG_ERROR([SELinux selected but libselinux not found or too old])]
754 )
755
756 AS_IF([test "x$have_selinux" = xyes], [
757 UL_SET_FLAGS([], [], [$SELINUX_LIBS])
758 # This function is missing in old libselinux 1.xx versions
759 AC_CHECK_FUNCS([security_get_initial_context])
760 UL_RESTORE_FLAGS
761 ])
762 ])
763 AC_SUBST([SELINUX_LIBS])
764 AC_SUBST([SELINUX_LIBS_STATIC])
765
766
767 AC_ARG_WITH([audit],
768 AS_HELP_STRING([--with-audit], [compile with audit support]),
769 [], [with_audit=no]
770 )
771
772 AS_IF([test "x$with_audit" = xno], [
773 AM_CONDITIONAL([HAVE_AUDIT], [false])
774 ], [
775 UL_CHECK_LIB([audit], [audit_log_user_message])
776 AS_CASE([$with_audit:$have_audit],
777 [yes:no],
778 [AC_MSG_ERROR([Audit selected but libaudit not found (or does not support audit_log_user_message())])]
779 )
780 ])
781
782 AC_ARG_WITH([udev], AS_HELP_STRING([--without-udev], [compile without udev support]),
783 [], [with_udev=auto]
784 )
785
786 AS_IF([test "x$with_udev" = xno], [
787 AM_CONDITIONAL([HAVE_UDEV], [false])
788 ], [
789 UL_CHECK_LIB([udev], [udev_new])
790 AS_CASE([$with_udev:$have_udev],
791 [yes:no],
792 [AC_MSG_ERROR([udev selected but libudev not found])]
793 )
794 ])
795
796
797 dnl wide-char ncurses
798 AC_ARG_WITH([ncursesw],
799 AS_HELP_STRING([--with-ncursesw], [build with wide-char ncurses, enabled by default]),
800 [], [with_ncursesw=auto]
801 )
802 have_ncursesw=no
803 have_ncursesw_header=no
804 AS_IF([test "x$with_ncursesw" != xno], [
805 UL_NCURSES_CHECK([ncursesw])
806 AS_IF([test "x$have_ncursesw" = xyes], [
807 AC_CHECK_HEADERS([ncursesw/ncurses.h], [have_ncursesw_header=yes])
808 AC_CHECK_HEADERS([ncursesw/term.h])
809 AS_IF([test "x$have_ncursesw_header" = xno], [have_ncursesw=no])
810 ])
811 AS_IF([test "x$have_ncursesw" = xyes], [
812 CURSES_LIB_NAME="ncursesw"
813 AC_DEFINE([HAVE_LIBNCURSESW], [1], [Define if ncursesw library available])
814 ])
815 ])
816 AS_CASE([$with_ncursesw:$have_ncursesw],
817 [yes:no], [AC_MSG_ERROR([ncursesw selected, but library not found])])
818
819
820 dnl non-wide ncurses
821 AC_ARG_WITH([ncurses],
822 AS_HELP_STRING([--with-ncurses], [build with non-wide ncurses, disabled by default]),
823 [], [with_ncurses=auto]
824 )
825 have_ncurses=no
826 have_ncurses_header=no
827 AS_CASE([$with_ncurses:$build_widechar],
828 [yes:yes], [AC_MSG_ERROR([wide-char support enabled, but non-wide ncurses selects])])
829
830 AS_IF([test "x$have_ncursesw" = xno -a "x$with_ncurses" != xno ], [
831 UL_NCURSES_CHECK([ncurses])
832 AS_IF([test "x$have_ncurses" = xyes], [
833 AC_CHECK_HEADERS([ncurses/ncurses.h ncurses.h], [have_ncurses_header=yes])
834 AC_CHECK_HEADERS([ncurses/term.h term.h])
835 AS_IF([test "x$have_ncurses_header" = xno], [have_ncurses=no])
836 ])
837 AS_IF([test "x$have_ncurses" = xyes], [
838 CURSES_LIB_NAME="ncurses"
839 AC_DEFINE([HAVE_LIBNCURSES], [1], [Define if ncurses library available])
840 ])
841 ])
842 AS_CASE([$with_ncurses:$have_ncurses],
843 [yes:no], [AC_MSG_ERROR([ncurses selected, but library not found])])
844
845 AC_SUBST([NCURSES_CFLAGS])
846 AC_SUBST([NCURSES_LIBS])
847 AM_CONDITIONAL([HAVE_NCURSES], [test "x$have_ncursesw" = xyes -o "x$have_ncurses" = xyes])
848
849
850 AC_ARG_WITH([slang],
851 AS_HELP_STRING([--with-slang], [compile cfdisk with slang rather than ncurses]),
852 [], [with_slang=no]
853 )
854 have_slang=no
855 AS_IF([test "x$with_slang" = xyes], [
856 AC_CHECK_HEADERS([slang.h slang/slang.h])
857 AC_CHECK_HEADERS([slcurses.h slang/slcurses.h],
858 [have_slang=yes], [], [
859 #ifdef HAVE_SLANG_H
860 #include <slang.h>
861 #elif defined(HAVE_SLANG_SLANG_H)
862 #include <slang/slang.h>
863 #endif
864 ])
865 AS_IF([test "x$have_slang" = xno], [
866 AC_MSG_ERROR([slang selected but slcurses.h not found])],
867 [CURSES_LIB_NAME=slang
868 ])
869 ])
870 AM_CONDITIONAL([HAVE_SLANG], [test "x$have_slang" = xyes])
871
872
873 AS_IF([test "x$have_slang" = xyes -o "x$have_ncursesw" = xyes -o "x$have_ncurses" = xyes], [
874 AC_CHECK_LIB([$CURSES_LIB_NAME], use_default_colors, [
875 AC_DEFINE(HAVE_USE_DEFAULT_COLORS, 1,
876 [Define if curses library has the use_default_colors().])
877 ])
878 AC_CHECK_LIB([$CURSES_LIB_NAME], resizeterm, [
879 AC_DEFINE(HAVE_RESIZETERM, 1,
880 [Define if curses library has the resizeterm().])
881 ])
882 ])
883
884
885 AC_ARG_WITH([tinfo], AS_HELP_STRING([--without-tinfo], [compile without libtinfo]),
886 [], [with_tinfo=auto]
887 )
888 have_tinfo=no
889 AS_IF([test "x$with_tinfo" != xno], [
890 dnl Try pkg-config for libtinfo
891 PKG_CHECK_MODULES(TINFO, [tinfo], [
892 dnl pkg-config success
893 have_tinfo=yes
894 UL_PKG_STATIC([TINFO_LIBS_STATIC], [tinfo])], [
895
896 dnl If pkg-config failed, fall back to classic searching.
897 AC_CHECK_LIB([tinfo], [tgetent], [
898 have_tinfo=yes
899 TINFO_LIBS="-ltinfo"
900 TINFO_LIBS_STATIC="-ltinfo"
901 TINFO_CFLAGS=""])
902 ])
903 ])
904 AC_SUBST([TINFO_LIBS])
905 AC_SUBST([TINFO_LIBS_STATIC])
906 AC_SUBST([TINFO_CFLAGS])
907 AM_CONDITIONAL([HAVE_TINFO], [test "x$have_tinfo" = xyes])
908 AS_IF([test "x$have_tinfo" = xyes], [
909 AC_DEFINE(HAVE_LIBTINFO, 1, [Define if libtinfo available.])
910 ])
911
912
913 AC_ARG_WITH([readline],
914 AS_HELP_STRING([--with-readline], [compile with GNU Readline support]),
915 [], [with_readline=auto]
916 )
917
918 AS_IF([test "x$with_readline" = xno], [
919 AM_CONDITIONAL([HAVE_READLINE], [false])
920 ], [
921 UL_CHECK_LIB([readline], [readline])
922 AS_CASE([$with_readline:$have_readline],
923 [yes:no],
924 [AC_MSG_ERROR([readline selected but libreadline not found ])],
925 [*:yes],
926 [READLINE_LIBS="-lreadline"
927 READLINE_LIBS_STATIC="-lreadline $TINFO_LIBS_STATIC"]
928 )
929 ])
930 AC_SUBST([READLINE_LIBS])
931 AC_SUBST([READLINE_LIBS_STATIC])
932
933
934 AC_ARG_WITH([utempter],
935 AS_HELP_STRING([--with-utempter], [compile script(1) with libutempter]),
936 [], [with_utempter=no]
937 )
938
939 AS_IF([test "x$with_utempter" = xyes], [
940 UL_CHECK_LIB([utempter], [utempter_add_record])
941 AS_IF([test "x$have_utempter" = xno], [
942 AC_MSG_ERROR([utempter selected but libutempter not found])
943 ])
944 ], [
945 AM_CONDITIONAL([HAVE_UTEMPTER], [false])
946 ])
947
948
949 dnl
950 dnl libuuid
951 dnl
952 AC_ARG_ENABLE([libuuid],
953 AS_HELP_STRING([--disable-libuuid], [do not build libuuid and uuid utilities]),
954 [], [UL_DEFAULT_ENABLE([libuuid], [yes])]
955 )
956 UL_BUILD_INIT([libuuid])
957 AC_SUBST([LIBUUID_VERSION])
958 AC_SUBST([LIBUUID_VERSION_INFO])
959 AM_CONDITIONAL(BUILD_LIBUUID, test "x$build_libuuid" = xyes)
960
961 AC_ARG_ENABLE([libuuid-force-uuidd],
962 AS_HELP_STRING([--enable-libuuid-force-uuidd], [support uuidd even though the daemon is not built]),
963 [], [enable_libuuid_force_uuidd=no]
964 )
965
966 AS_IF([test "x$build_libuuid" = xyes], [
967 AC_DEFINE(HAVE_LIBUUID, 1, [Define to 1 if you have the -luuid.])
968 ])
969
970 dnl
971 dnl libblkid
972 dnl
973 AC_ARG_ENABLE([libblkid],
974 AS_HELP_STRING([--disable-libblkid], [do not build libblkid and many related utilities]),
975 [], [UL_DEFAULT_ENABLE([libblkid], [check])]
976 )
977 UL_BUILD_INIT([libblkid])
978 UL_REQUIRES_HAVE([libblkid], [openat], [openat functions])
979 AC_SUBST([LIBBLKID_DATE])
980 AC_SUBST([LIBBLKID_VERSION])
981 AC_SUBST([LIBBLKID_VERSION_INFO])
982 AC_DEFINE_UNQUOTED([LIBBLKID_VERSION], ["$LIBBLKID_VERSION"], [libblkid version string])
983 AC_DEFINE_UNQUOTED([LIBBLKID_DATE], ["$LIBBLKID_DATE"], [libblkid date string])
984 AS_IF([test "x$build_libblkid" = xyes], [
985 AC_DEFINE([HAVE_LIBBLKID], [1], [Define to 1 if you have the -lblkid.])
986 ])
987 AM_CONDITIONAL([BUILD_LIBBLKID], [test "x$build_libblkid" = xyes])
988 AM_CONDITIONAL([BUILD_LIBBLKID_TESTS], [test "x$build_libblkid" = xyes -a "x$enable_static" = xyes])
989
990 dnl
991 dnl libmount
992 dnl
993 AC_ARG_ENABLE([libmount],
994 AS_HELP_STRING([--disable-libmount], [do not build libmount]),
995 [], [UL_DEFAULT_ENABLE([libmount], [check])]
996 )
997 UL_BUILD_INIT([libmount])
998 UL_REQUIRES_BUILD([libmount], [libblkid])
999 UL_REQUIRES_HAVE([libmount], [scanf_alloc_modifier], [scanf string alloc modifier])
1000 AM_CONDITIONAL([BUILD_LIBMOUNT], [test "x$build_libmount" = xyes])
1001 AM_CONDITIONAL([BUILD_LIBMOUNT_TESTS], [test "x$build_libmount" = xyes -a "x$enable_static" = xyes])
1002 AS_IF([test "x$build_libmount" = xyes], [
1003 AC_DEFINE(HAVE_LIBMOUNT, 1, [Define if libmount available.])
1004 ])
1005
1006 AC_SUBST([LIBMOUNT_VERSION])
1007 AC_SUBST([LIBMOUNT_MAJOR_VERSION], $PACKAGE_VERSION_MAJOR)
1008 AC_SUBST([LIBMOUNT_MINOR_VERSION], $PACKAGE_VERSION_MINOR)
1009 AC_SUBST([LIBMOUNT_PATCH_VERSION], $PACKAGE_VERSION_RELEASE)
1010 AC_SUBST([LIBMOUNT_VERSION_INFO])
1011 AC_DEFINE_UNQUOTED([LIBMOUNT_VERSION], ["$LIBMOUNT_VERSION"], [libmount version string])
1012
1013 AC_ARG_ENABLE([libmount-support-mtab],
1014 AS_HELP_STRING([--enable-libmount-support-mtab], [support /etc/mtab (default is use /proc/self/mountinfo)]),
1015 [], [enable_libmount_support_mtab=no]
1016 )
1017
1018 AS_IF([test "x$enable_libmount_support_mtab" == xyes], [
1019 AC_DEFINE([USE_LIBMOUNT_SUPPORT_MTAB], [1], [Define to 1 if want to support mtab.])
1020 ])
1021
1022
1023 dnl
1024 dnl libsmartcols
1025 dnl
1026 AC_ARG_ENABLE([libsmartcols],
1027 AS_HELP_STRING([--disable-libsmartcols], [do not build libsmartcols]),
1028 [], [UL_DEFAULT_ENABLE([libsmartcols], [yes])]
1029 )
1030 UL_BUILD_INIT([libsmartcols])
1031 AM_CONDITIONAL([BUILD_LIBSMARTCOLS], [test "x$build_libsmartcols" = xyes])
1032
1033 AC_SUBST([LIBSMARTCOLS_VERSION])
1034 AC_SUBST([LIBSMARTCOLS_VERSION_INFO])
1035 AC_DEFINE_UNQUOTED([LIBSMARTCOLS_VERSION], ["$LIBSMARTCOLS_VERSION"], [libsmartcols version string])
1036
1037
1038 dnl
1039 dnl libfdisk
1040 dnl
1041 AC_ARG_ENABLE([libfdisk],
1042 AS_HELP_STRING([--disable-libfdisk], [do not build libfdisk]),
1043 [], [UL_DEFAULT_ENABLE([libfdisk], [check])]
1044 )
1045 UL_BUILD_INIT([libfdisk])
1046 UL_REQUIRES_BUILD([libfdisk], [libuuid])
1047 AM_CONDITIONAL([BUILD_LIBFDISK], [test "x$build_libfdisk" = xyes])
1048 AM_CONDITIONAL([BUILD_LIBFDISK_TESTS], [test "x$build_libfdisk" = xyes -a "x$enable_static" = xyes])
1049
1050 AS_IF([test "x$build_libblkid" = xyes],
1051 [LIBFDISK_PC_REQUIRES="uuid blkid"],[LIBFDISK_PC_REQUIRES="uuid"])
1052 AC_SUBST([LIBFDISK_PC_REQUIRES])
1053
1054 AC_SUBST([LIBFDISK_VERSION])
1055 AC_SUBST([LIBFDISK_MAJOR_VERSION], $PACKAGE_VERSION_MAJOR)
1056 AC_SUBST([LIBFDISK_MINOR_VERSION], $PACKAGE_VERSION_MINOR)
1057 AC_SUBST([LIBFDISK_PATCH_VERSION], $PACKAGE_VERSION_RELEASE)
1058 AC_SUBST([LIBFDISK_VERSION_INFO])
1059 AC_DEFINE_UNQUOTED([LIBFDISK_VERSION], ["$LIBFDISK_VERSION"], [libfdisk version string])
1060
1061
1062 UL_BUILD_INIT([fdisk], [check])
1063 UL_REQUIRES_HAVE([fdisk], [openat], [openat functions])
1064 UL_REQUIRES_BUILD([fdisk], [libfdisk])
1065 UL_REQUIRES_BUILD([fdisk], [libsmartcols])
1066 AM_CONDITIONAL([BUILD_FDISK], [test "x$build_fdisk" = xyes])
1067
1068
1069 UL_BUILD_INIT([sfdisk], [check])
1070 UL_REQUIRES_HAVE([sfdisk], [openat], [openat functions])
1071 UL_REQUIRES_BUILD([sfdisk], [libfdisk])
1072 UL_REQUIRES_BUILD([sfdisk], [libsmartcols])
1073 AM_CONDITIONAL([BUILD_SFDISK], [test "x$build_sfdisk" = xyes])
1074
1075
1076 UL_BUILD_INIT([cfdisk], [check])
1077 UL_REQUIRES_BUILD([cfdisk], [libfdisk])
1078 UL_REQUIRES_BUILD([cfdisk], [libsmartcols])
1079 UL_REQUIRES_HAVE([cfdisk], [open_memstream], [open_memstream function])
1080 UL_REQUIRES_HAVE([cfdisk], [ncursesw,slang,ncurses], [ncursesw, ncurses or slang library])
1081 AM_CONDITIONAL([BUILD_CFDISK], [test "x$build_cfdisk" = xyes])
1082
1083
1084 AC_ARG_ENABLE([mount],
1085 AS_HELP_STRING([--disable-mount], [do not build mount(8) and umount(8)]),
1086 [], [UL_DEFAULT_ENABLE([mount], [check])]
1087 )
1088 UL_BUILD_INIT([mount])
1089 UL_REQUIRES_LINUX([mount])
1090 UL_REQUIRES_BUILD([mount], [libmount])
1091 AM_CONDITIONAL([BUILD_MOUNT], [test "x$build_mount" = xyes])
1092
1093
1094 AC_ARG_ENABLE([losetup],
1095 AS_HELP_STRING([--disable-losetup], [do not build losetup]),
1096 [], [UL_DEFAULT_ENABLE([losetup], [check])]
1097 )
1098 UL_BUILD_INIT([losetup])
1099 UL_REQUIRES_LINUX([losetup])
1100 UL_REQUIRES_BUILD([losetup], [libsmartcols])
1101 AM_CONDITIONAL([BUILD_LOSETUP], [test "x$build_losetup" = xyes])
1102
1103 AC_ARG_ENABLE([zramctl],
1104 AS_HELP_STRING([--disable-zramctl], [do not build zramctl]),
1105 [], [UL_DEFAULT_ENABLE([zramctl], [check])]
1106 )
1107 UL_BUILD_INIT([zramctl])
1108 UL_REQUIRES_LINUX([zramctl])
1109 UL_REQUIRES_BUILD([zramctl], [libsmartcols])
1110 AM_CONDITIONAL([BUILD_ZRAMCTL], [test "x$build_zramctl" = xyes])
1111
1112 AC_ARG_ENABLE([fsck],
1113 AS_HELP_STRING([--disable-fsck], [do not build fsck]),
1114 [], [UL_DEFAULT_ENABLE([fsck], [check])]
1115 )
1116 UL_BUILD_INIT([fsck])
1117 UL_REQUIRES_BUILD([fsck], [libmount])
1118 AM_CONDITIONAL([BUILD_FSCK], [test "x$build_fsck" = xyes])
1119
1120
1121 AC_ARG_ENABLE([partx],
1122 AS_HELP_STRING([--disable-partx], [do not build addpart, delpart, partx]),
1123 [], [UL_DEFAULT_ENABLE([partx], [check])]
1124 )
1125 UL_BUILD_INIT([partx])
1126 UL_REQUIRES_LINUX([partx])
1127 UL_REQUIRES_BUILD([partx], [libblkid])
1128 UL_REQUIRES_BUILD([partx], [libsmartcols])
1129 AM_CONDITIONAL([BUILD_PARTX], [test "x$build_partx" = xyes])
1130
1131
1132 AC_ARG_ENABLE([uuidd],
1133 AS_HELP_STRING([--disable-uuidd], [do not build the uuid daemon]),
1134 [], [UL_DEFAULT_ENABLE([uuidd], [check])]
1135 )
1136 UL_BUILD_INIT([uuidd])
1137 UL_REQUIRES_BUILD([uuidd], [libuuid])
1138 UL_REQUIRES_HAVE([uuidd], [timer], [timer_create function])
1139 UL_REQUIRES_HAVE([uuidd], [sys_signalfd_h], [sys/signalfd.h header])
1140 AS_IF([test "x$build_uuidd" = xyes || test "x$enable_libuuid_force_uuidd" == xyes ], [
1141 AC_DEFINE([HAVE_UUIDD], [1], [Define to 1 if you want to use uuid daemon.])
1142 ])
1143 AM_CONDITIONAL([BUILD_UUIDD], [test "x$build_uuidd" = xyes])
1144
1145
1146 UL_BUILD_INIT([uuidgen], [check])
1147 UL_REQUIRES_BUILD([uuidgen], [libuuid])
1148 AM_CONDITIONAL([BUILD_UUIDGEN], [test "x$build_uuidgen" = xyes])
1149
1150 UL_BUILD_INIT([uuidparse], [check])
1151 UL_REQUIRES_BUILD([uuidparse], [libuuid])
1152 UL_REQUIRES_BUILD([uuidparse], [libsmartcols])
1153 AM_CONDITIONAL([BUILD_UUIDPARSE], [test "x$build_uuidparse" = xyes])
1154
1155 UL_BUILD_INIT([blkid], [check])
1156 UL_REQUIRES_BUILD([blkid], [libblkid])
1157 AM_CONDITIONAL([BUILD_BLKID], [test "x$build_blkid" = xyes])
1158
1159 UL_BUILD_INIT([findfs], [check])
1160 UL_REQUIRES_BUILD([findfs], [libblkid])
1161 AM_CONDITIONAL([BUILD_FINDFS], [test "x$build_findfs" = xyes])
1162
1163 UL_BUILD_INIT([wipefs], [check])
1164 UL_REQUIRES_BUILD([wipefs], [libblkid])
1165 UL_REQUIRES_BUILD([wipefs], [libsmartcols])
1166 AM_CONDITIONAL([BUILD_WIPEFS], [test "x$build_wipefs" = xyes])
1167
1168 UL_BUILD_INIT([findmnt], [check])
1169 UL_REQUIRES_BUILD([findmnt], [libmount])
1170 UL_REQUIRES_BUILD([findmnt], [libblkid])
1171 UL_REQUIRES_BUILD([findmnt], [libsmartcols])
1172 AM_CONDITIONAL([BUILD_FINDMNT], [test "x$build_findmnt" = xyes])
1173
1174
1175 AC_ARG_ENABLE([mountpoint],
1176 AS_HELP_STRING([--disable-mountpoint], [do not build mountpoint]),
1177 [], [UL_DEFAULT_ENABLE([mountpoint], [check])]
1178 )
1179 UL_BUILD_INIT([mountpoint])
1180 UL_REQUIRES_BUILD([mountpoint], [libmount])
1181 AM_CONDITIONAL([BUILD_MOUNTPOINT], [test "x$build_mountpoint" = xyes])
1182
1183
1184 AC_ARG_ENABLE([fallocate],
1185 AS_HELP_STRING([--disable-fallocate], [do not build fallocate]),
1186 [], [UL_DEFAULT_ENABLE([fallocate], [check])]
1187 )
1188 UL_BUILD_INIT([fallocate])
1189 UL_REQUIRES_LINUX([fallocate])
1190 UL_REQUIRES_SYSCALL_CHECK([fallocate], [UL_CHECK_SYSCALL([fallocate])])
1191 AM_CONDITIONAL([BUILD_FALLOCATE], [test "x$build_fallocate" = xyes])
1192
1193 AS_IF([test "x$build_fallocate" = xyes], [
1194 dnl check for valid fallocate() function
1195 dnl with 32 bits glibc 2.10, fallocate() exists but not fallocate64()
1196 dnl when _FILE_OFFSET_BITS==64, fallocate() is redirect to fallocate64()
1197 dnl and program can't be linked.
1198 dnl AC_CHECK_FUNC can't catch such errors since it's redefining
1199 dnl function prototype.
1200 AC_MSG_CHECKING([for valid fallocate() function])
1201 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1202 #ifdef HAVE_UNISTD_H
1203 # include <unistd.h>
1204 #endif
1205 #ifdef HAVE_SYS_TYPES_H
1206 # include <sys/types.h>
1207 #endif
1208 #ifdef HAVE_LINUX_FALLOC_H
1209 # include <linux/falloc.h>
1210 #endif
1211 #ifdef HAVE_FCNTL_H
1212 # include <fcntl.h>
1213 #endif
1214 ]],[[
1215 long ret;
1216 ret = fallocate(0, FALLOC_FL_KEEP_SIZE, 0xfffffffful, 0xfffffffful);
1217 if (ret != 0) {
1218 return 1;
1219 }
1220 ]])],[
1221 AC_MSG_RESULT([yes])
1222 AC_DEFINE([HAVE_FALLOCATE], [1], [Have valid fallocate() function])],[
1223 AC_MSG_RESULT([no])])
1224 ])
1225
1226 AS_IF([test "x$build_fallocate" = xyes], [
1227 dnl check for valid posix_fallocate() function
1228 AC_MSG_CHECKING([for valid posix_fallocate() function])
1229 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1230 #ifdef HAVE_UNISTD_H
1231 # include <unistd.h>
1232 #endif
1233 #ifdef HAVE_SYS_TYPES_H
1234 # include <sys/types.h>
1235 #endif
1236 #ifdef HAVE_LINUX_FALLOC_H
1237 # include <linux/falloc.h>
1238 #endif
1239 #ifdef HAVE_FCNTL_H
1240 # include <fcntl.h>
1241 #endif
1242 ]],[[
1243 long ret;
1244 ret = posix_fallocate(0, 0xfffffffful, 0xfffffffful);
1245 if (ret != 0) {
1246 return 1;
1247 }
1248 ]])],[
1249 AC_MSG_RESULT([yes])
1250 AC_DEFINE([HAVE_POSIX_FALLOCATE], [1], [Have valid posix_fallocate() function])],[
1251 AC_MSG_RESULT([no])])
1252 ])
1253
1254
1255 AC_ARG_ENABLE([unshare],
1256 AS_HELP_STRING([--disable-unshare], [do not build unshare]),
1257 [], [UL_DEFAULT_ENABLE([unshare], [check])]
1258 )
1259 UL_BUILD_INIT([unshare])
1260 UL_REQUIRES_LINUX([unshare])
1261 UL_REQUIRES_SYSCALL_CHECK([unshare], [UL_CHECK_SYSCALL([unshare])])
1262 AM_CONDITIONAL([BUILD_UNSHARE], [test "x$build_unshare" = xyes])
1263 AC_CHECK_FUNCS([unshare])
1264
1265 AC_ARG_ENABLE([nsenter],
1266 AS_HELP_STRING([--disable-nsenter], [do not build nsenter]),
1267 [], [UL_DEFAULT_ENABLE([nsenter], [check])]
1268 )
1269 UL_BUILD_INIT([nsenter])
1270 UL_REQUIRES_LINUX([nsenter])
1271 UL_REQUIRES_SYSCALL_CHECK([nsenter], [UL_CHECK_SYSCALL([setns])], [setns])
1272 AM_CONDITIONAL([BUILD_NSENTER], [test "x$build_nsenter" = xyes])
1273 AC_CHECK_FUNCS([setns])
1274
1275
1276 AC_ARG_WITH([cap_ng],
1277 AS_HELP_STRING([--without-cap-ng], [compile without libcap-ng]),
1278 [], [with_cap_ng=auto]
1279 )
1280 AS_IF([test "x$with_cap_ng" = xno], [
1281 AM_CONDITIONAL([HAVE_CAP_NG], [false])
1282 have_cap_ng=no
1283 ],[
1284 UL_CHECK_LIB([cap-ng], [capng_apply], [cap_ng])
1285 ])
1286
1287
1288 AC_ARG_ENABLE([setpriv],
1289 AS_HELP_STRING([--disable-setpriv], [do not build setpriv]),
1290 [], [UL_DEFAULT_ENABLE([setpriv], [check])]
1291 )
1292 UL_BUILD_INIT([setpriv])
1293 UL_REQUIRES_LINUX([setpriv])
1294 UL_REQUIRES_HAVE([setpriv], [linux_securebits_h], [securebits.h header file])
1295 UL_REQUIRES_HAVE([setpriv], [cap_ng], [libcap-ng library])
1296 AM_CONDITIONAL([BUILD_SETPRIV], [test "x$build_setpriv" = xyes])
1297
1298
1299 AC_ARG_ENABLE([eject],
1300 AS_HELP_STRING([--disable-eject], [do not build eject]),
1301 [], [UL_DEFAULT_ENABLE([eject], [check])]
1302 )
1303 UL_BUILD_INIT([eject])
1304 UL_REQUIRES_LINUX([eject])
1305 UL_REQUIRES_BUILD([eject], [libmount])
1306 AM_CONDITIONAL([BUILD_EJECT], [test "x$build_eject" = xyes])
1307
1308
1309 AC_ARG_ENABLE([agetty],
1310 AS_HELP_STRING([--disable-agetty], [do not build agetty]),
1311 [], [UL_DEFAULT_ENABLE([agetty], [check])]
1312 )
1313 UL_BUILD_INIT([agetty])
1314 UL_REQUIRES_HAVE([agetty], [utmpx_h], [utmpx.h header])
1315 UL_REQUIRES_HAVE([agetty], [gnu_utmpx], [GNU utmpx fucntions])
1316 AM_CONDITIONAL([BUILD_AGETTY], [test "x$build_agetty" = xyes])
1317 AS_IF([test "x$have_futimens" = xyes -a "x$have_inotify_init1" = xyes ], [
1318 AC_DEFINE([AGETTY_RELOAD], [1], [Enable agetty --reload feature])
1319 ],[
1320 AC_MSG_WARN([futimens or inotify_init1 not found; agetty(8) will not provide ---reload functionality])
1321 ])
1322
1323
1324 AC_ARG_ENABLE([plymouth_support],
1325 AS_HELP_STRING([--disable-plymouth_support], [don not care about plymouth in sylogin(8) and agetty(8)]),
1326 [], [enable_plymouth_support=check]
1327 )
1328 UL_BUILD_INIT([plymouth_support])
1329 UL_REQUIRES_HAVE([plymouth_support], [tiocglcktrmios], [TIOCGLCKTRMIOS flag])
1330 UL_REQUIRES_HAVE([plymouth_support], [sock_cloexec], [SOCK_CLOEXEC flag])
1331 UL_REQUIRES_HAVE([plymouth_support], [sock_nonblock], [SOCK_NONBLOCK flag])
1332 UL_REQUIRES_HAVE([plymouth_support], [so_passcred], [SO_PASSCRED flag])
1333 AM_CONDITIONAL([USE_PLYMOUTH_SUPPORT], [test "x$build_plymouth_support" = xyes])
1334 AS_IF([test "x$build_plymouth_support" = xyes ], [
1335 AC_DEFINE([USE_PLYMOUTH_SUPPORT], [1], [Enable plymouth support feature for sulogin and aggety])
1336 ])
1337
1338
1339 AC_ARG_WITH([libz],
1340 AS_HELP_STRING([--without-libz], [compile without libz]),
1341 [], [with_libz=auto]
1342 )
1343 AS_IF([test "x$with_libz" = xno], [have_z=no], [
1344 AC_CHECK_LIB([z], [crc32], [have_z=yes], [have_z=no])
1345 ])
1346
1347
1348 AC_ARG_ENABLE([cramfs],
1349 AS_HELP_STRING([--disable-cramfs], [do not build fsck.cramfs, mkfs.cramfs]),
1350 [], [UL_DEFAULT_ENABLE([cramfs], [check])]
1351 )
1352 UL_BUILD_INIT([cramfs])
1353 UL_REQUIRES_HAVE([cramfs], [z], [z library])
1354 AM_CONDITIONAL([BUILD_CRAMFS], [test "x$build_cramfs" = xyes])
1355
1356
1357 AC_ARG_ENABLE([bfs],
1358 AS_HELP_STRING([--disable-bfs], [do not build mkfs.bfs]),
1359 [], [UL_DEFAULT_ENABLE([bfs], [yes])]
1360 )
1361 UL_BUILD_INIT([bfs])
1362 AM_CONDITIONAL([BUILD_BFS], [test "x$build_bfs" = xyes])
1363
1364
1365 AC_ARG_ENABLE([minix],
1366 AS_HELP_STRING([--disable-minix], [do not build fsck.minix, mkfs.minix]),
1367 [], [UL_DEFAULT_ENABLE([minix], [yes])]
1368 )
1369 UL_BUILD_INIT([minix])
1370 AM_CONDITIONAL([BUILD_MINIX], [test "x$build_minix" = xyes])
1371
1372
1373 AC_ARG_ENABLE([fdformat],
1374 AS_HELP_STRING([--disable-fdformat], [do not build fdformat]),
1375 [], [UL_DEFAULT_ENABLE([fdformat], [check])]
1376 )
1377 UL_BUILD_INIT([fdformat])
1378 UL_REQUIRES_LINUX([fdformat])
1379 AM_CONDITIONAL([BUILD_FDFORMAT], [test "x$build_fdformat" = xyes])
1380
1381
1382 AC_ARG_ENABLE([hwclock],
1383 AS_HELP_STRING([--disable-hwclock], [do not build hwclock]),
1384 [], [UL_DEFAULT_ENABLE([hwclock], [check])]
1385 )
1386 have_linuxdummy=$linux_os
1387
1388 UL_BUILD_INIT([hwclock])
1389 UL_REQUIRES_HAVE([hwclock], [io, linuxdummy], [ioperm iopl function or Linux])
1390 AM_CONDITIONAL([BUILD_HWCLOCK], [test "x$build_hwclock" = xyes])
1391
1392
1393 UL_BUILD_INIT([mkfs], [yes])
1394 AM_CONDITIONAL([BUILD_MKFS], [test "x$build_mkfs" = xyes])
1395
1396 UL_BUILD_INIT([isosize], [yes])
1397 AM_CONDITIONAL([BUILD_ISOSIZE], [test "x$build_isosize" = xyes])
1398
1399
1400 UL_BUILD_INIT([fstrim], [check])
1401 UL_REQUIRES_LINUX([fstrim])
1402 UL_REQUIRES_BUILD([fstrim], [libmount])
1403 AM_CONDITIONAL([BUILD_FSTRIM], [test "x$build_fstrim" = xyes])
1404
1405
1406 UL_BUILD_INIT([swapon], [check])
1407 UL_REQUIRES_LINUX([swapon])
1408 UL_REQUIRES_BUILD([swapon], [libblkid])
1409 UL_REQUIRES_BUILD([swapon], [libmount])
1410 UL_REQUIRES_BUILD([swapon], [libsmartcols])
1411 AM_CONDITIONAL([BUILD_SWAPON], [test "x$build_swapon" = xyes])
1412
1413
1414 UL_BUILD_INIT([lsblk], [check])
1415 UL_REQUIRES_LINUX([lsblk])
1416 UL_REQUIRES_BUILD([lsblk], [libblkid])
1417 UL_REQUIRES_BUILD([lsblk], [libmount])
1418 UL_REQUIRES_BUILD([lsblk], [libsmartcols])
1419 AM_CONDITIONAL([BUILD_LSBLK], [test "x$build_lsblk" = xyes])
1420
1421
1422 UL_BUILD_INIT([lscpu], [check])
1423 UL_REQUIRES_LINUX([lscpu])
1424 UL_REQUIRES_BUILD([lscpu], [libsmartcols])
1425 UL_REQUIRES_HAVE([lscpu], [cpu_set_t], [cpu_set_t type])
1426 AM_CONDITIONAL([BUILD_LSCPU], [test "x$build_lscpu" = xyes])
1427
1428
1429 AC_ARG_ENABLE([lslogins],
1430 AS_HELP_STRING([--disable-lslogins], [do not build lslogins]),
1431 [], [UL_DEFAULT_ENABLE([lslogins], [check])]
1432 )
1433 UL_BUILD_INIT([lslogins])
1434 UL_REQUIRES_BUILD([lslogins], [libsmartcols])
1435 UL_REQUIRES_HAVE([lslogins], [shadow_h], [shadow.h header])
1436 UL_REQUIRES_HAVE([lslogins], [utmpx_h], [utmpx.h header])
1437 UL_REQUIRES_HAVE([lslogins], [gnu_utmpx], [GNU utmpx fucntions])
1438 AM_CONDITIONAL([BUILD_LSLOGINS], [test "x$build_lslogins" = xyes])
1439
1440
1441 UL_BUILD_INIT([chcpu], [check])
1442 UL_REQUIRES_LINUX([chcpu])
1443 UL_REQUIRES_HAVE([chcpu], [cpu_set_t], [cpu_set_t type])
1444 AM_CONDITIONAL([BUILD_CHCPU], [test "x$build_chcpu" = xyes])
1445
1446
1447 AC_ARG_ENABLE([wdctl],
1448 AS_HELP_STRING([--disable-wdctl], [do not build wdctl]),
1449 [], [UL_DEFAULT_ENABLE([wdctl], [check])]
1450 )
1451 UL_BUILD_INIT([wdctl])
1452 UL_REQUIRES_LINUX([wdctl])
1453 UL_REQUIRES_BUILD([wdctl], [libsmartcols])
1454 UL_REQUIRES_HAVE([wdctl], [linux_watchdog_h], [linux/watchdog.h header file])
1455 AM_CONDITIONAL([BUILD_WDCTL], [test "x$build_wdctl" = xyes])
1456
1457
1458 UL_BUILD_INIT([swaplabel], [check])
1459 UL_REQUIRES_BUILD([swaplabel], [libblkid])
1460 AM_CONDITIONAL([BUILD_SWAPLABEL], [test "x$build_swaplabel" = xyes])
1461
1462
1463 UL_BUILD_INIT([mkswap], [yes])
1464 AM_CONDITIONAL([BUILD_MKSWAP], [test "x$build_mkswap" = xyes])
1465 AS_IF([test "x$build_mkswap" = xyes -a "x$build_libuuid" != xyes], [
1466 AC_MSG_WARN([uuid library is not found; mkswap(8) will not generate UUIDs])
1467 ])
1468
1469
1470 AC_ARG_ENABLE([cal],
1471 AS_HELP_STRING([--disable-cal], [do not build cal]),
1472 [], [UL_DEFAULT_ENABLE([cal], [check])]
1473 )
1474 UL_BUILD_INIT([cal])
1475 AM_CONDITIONAL([BUILD_CAL], [test "x$build_cal" = xyes])
1476
1477 AC_ARG_ENABLE([logger],
1478 AS_HELP_STRING([--disable-logger], [do not build logger]),
1479 [], [UL_DEFAULT_ENABLE([logger], [check])]
1480 )
1481 UL_BUILD_INIT([logger])
1482 AM_CONDITIONAL([BUILD_LOGGER], [test "x$build_logger" = xyes])
1483
1484 UL_BUILD_INIT([look], [yes])
1485 AM_CONDITIONAL([BUILD_LOOK], [test "x$build_look" = xyes])
1486
1487 UL_BUILD_INIT([mcookie], [yes])
1488 AM_CONDITIONAL([BUILD_MCOOKIE], [test "x$build_mcookie" = xyes])
1489
1490 UL_BUILD_INIT([namei], [yes])
1491 AM_CONDITIONAL([BUILD_NAMEI], [test "x$build_namei" = xyes])
1492
1493 matriplet="$($CC -print-multiarch 2>/dev/null || true)"
1494 if test "x$matriplet" != "x"; then
1495 AC_DEFINE_UNQUOTED([MULTIARCHTRIPLET], ["$matriplet"],
1496 ["Multi-arch triplet for whereis library search path"])
1497 fi
1498 UL_BUILD_INIT([whereis], [yes])
1499 AM_CONDITIONAL([BUILD_WHEREIS], [test "x$build_whereis" = xyes])
1500
1501 UL_BUILD_INIT([getopt], [yes])
1502 AM_CONDITIONAL([BUILD_GETOPT], [test "x$build_getopt" = xyes])
1503
1504
1505 UL_BUILD_INIT([blockdev], [check])
1506 UL_REQUIRES_LINUX([blockdev])
1507 AM_CONDITIONAL([BUILD_BLOCKDEV], [test "x$build_blockdev" = xyes])
1508
1509
1510 UL_BUILD_INIT([prlimit], [check])
1511 UL_REQUIRES_LINUX([prlimit])
1512 UL_REQUIRES_BUILD([prlimit], [libsmartcols])
1513 UL_REQUIRES_SYSCALL_CHECK([prlimit], [UL_CHECK_SYSCALL([prlimit64])], [prlimit64])
1514 AM_CONDITIONAL([BUILD_PRLIMIT], [test "x$build_prlimit" = xyes])
1515 AS_IF([test "x$build_prlimit" = xyes], [
1516 AC_CHECK_FUNCS([prlimit])
1517 ])
1518
1519
1520 UL_BUILD_INIT([lslocks], [check])
1521 UL_REQUIRES_LINUX([lslocks])
1522 UL_REQUIRES_BUILD([lslocks], [libmount])
1523 UL_REQUIRES_BUILD([lslocks], [libsmartcols])
1524 AM_CONDITIONAL([BUILD_LSLOCKS], [test "x$build_lslocks" = xyes])
1525
1526
1527 AC_ARG_ENABLE([switch_root],
1528 AS_HELP_STRING([--disable-switch_root], [do not build switch_root]),
1529 [], [UL_DEFAULT_ENABLE([switch_root], [check])]
1530 )
1531 UL_BUILD_INIT([switch_root])
1532 UL_REQUIRES_LINUX([switch_root])
1533 UL_REQUIRES_HAVE([switch_root], [openat], [openat function])
1534 AM_CONDITIONAL([BUILD_SWITCH_ROOT], [test "x$build_switch_root" = xyes])
1535
1536
1537 AC_ARG_ENABLE([pivot_root],
1538 AS_HELP_STRING([--disable-pivot_root], [do not build pivot_root]),
1539 [], [UL_DEFAULT_ENABLE([pivot_root], [check])]
1540 )
1541 UL_BUILD_INIT([pivot_root])
1542 UL_REQUIRES_LINUX([pivot_root])
1543 UL_REQUIRES_SYSCALL_CHECK([pivot_root], [UL_CHECK_SYSCALL([pivot_root])])
1544 AM_CONDITIONAL([BUILD_PIVOT_ROOT], [test "x$build_pivot_root" = xyes])
1545
1546
1547 UL_BUILD_INIT([flock], [check])
1548 UL_REQUIRES_HAVE([flock], [timer], [timer_create function])
1549 AM_CONDITIONAL([BUILD_FLOCK], [test "x$build_flock" = xyes])
1550
1551
1552 AC_ARG_ENABLE([lsmem],
1553 AS_HELP_STRING([--disable-lsmem], [do not build lsmem]),
1554 [], [UL_DEFAULT_ENABLE([lsmem], [check])]
1555 )
1556 UL_BUILD_INIT([lsmem])
1557 UL_REQUIRES_LINUX([lsmem])
1558 UL_REQUIRES_BUILD([lsmem], [libsmartcols])
1559 AM_CONDITIONAL([BUILD_LSMEM], [test "x$build_lsmem" = xyes])
1560
1561
1562 AC_ARG_ENABLE([chmem],
1563 AS_HELP_STRING([--disable-chmem], [do not build chmem]),
1564 [], [UL_DEFAULT_ENABLE([chmem], [check])]
1565 )
1566 UL_BUILD_INIT([chmem])
1567 UL_REQUIRES_LINUX([chmem])
1568 AM_CONDITIONAL([BUILD_CHMEM], [test "x$build_chmem" = xyes])
1569
1570 UL_BUILD_INIT([ipcmk], [yes])
1571 AM_CONDITIONAL([BUILD_IPCMK], [test "x$build_ipcmk" = xyes])
1572
1573
1574 AC_ARG_ENABLE([ipcrm],
1575 AS_HELP_STRING([--disable-ipcrm], [do not build ipcrm]),
1576 [], [UL_DEFAULT_ENABLE([ipcrm], [yes])]
1577 )
1578 UL_BUILD_INIT([ipcrm])
1579 AM_CONDITIONAL([BUILD_IPCRM], [test "x$build_ipcrm" = xyes])
1580
1581 AC_ARG_ENABLE([ipcs],
1582 AS_HELP_STRING([--disable-ipcs], [do not build ipcs]),
1583 [], [UL_DEFAULT_ENABLE([ipcs], [yes])]
1584 )
1585 UL_BUILD_INIT([ipcs])
1586 AM_CONDITIONAL([BUILD_IPCS], [test "x$build_ipcs" = xyes])
1587
1588 UL_BUILD_INIT([lsipc], [check])
1589 UL_REQUIRES_LINUX([lsipc])
1590 UL_REQUIRES_BUILD([lsipc], [libsmartcols])
1591 AM_CONDITIONAL([BUILD_LSIPC], [test "x$build_lsipc" = xyes])
1592
1593 UL_BUILD_INIT([lsns], [check])
1594 UL_REQUIRES_LINUX([lsns])
1595 UL_REQUIRES_BUILD([lsns], [libsmartcols])
1596 AM_CONDITIONAL([BUILD_LSNS], [test "x$build_lsns" = xyes])
1597
1598 UL_BUILD_INIT([renice], [yes])
1599 AM_CONDITIONAL([BUILD_RENICE], [test "x$build_renice" = xyes])
1600
1601 UL_BUILD_INIT([setsid], [yes])
1602 AM_CONDITIONAL([BUILD_SETSID], [test "x$build_setsid" = xyes])
1603
1604 UL_BUILD_INIT([readprofile], [check])
1605 UL_REQUIRES_LINUX([readprofile])
1606 AM_CONDITIONAL([BUILD_READPROFILE], [test "x$build_readprofile" = xyes])
1607
1608 UL_BUILD_INIT([dmesg], [check])
1609 UL_REQUIRES_LINUX([dmesg])
1610 AM_CONDITIONAL([BUILD_DMESG], [test "x$build_dmesg" = xyes])
1611
1612 UL_BUILD_INIT([ctrlaltdel], [check])
1613 UL_REQUIRES_LINUX([ctrlaltdel])
1614 dnl we assume reboot() to be the 1-argument variant, because even considering
1615 dnl widely used alternative C libraries like uclibc, dietlibc and musl,
1616 dnl reboot() with multiple arguments is yet only found in glibc versions
1617 dnl earlier than 2.x.
1618 UL_REQUIRES_HAVE([ctrlaltdel], [reboot], [reboot function])
1619 AM_CONDITIONAL([BUILD_CTRLALTDEL], [test "x$build_ctrlaltdel" = xyes])
1620
1621 UL_BUILD_INIT([fincore], [check])
1622 UL_REQUIRES_LINUX([fincore])
1623 UL_REQUIRES_BUILD([fincore], [libsmartcols])
1624 AM_CONDITIONAL([BUILD_FINCORE], [test "x$build_fincore" = xyes])
1625
1626 UL_BUILD_INIT([fsfreeze], [check])
1627 UL_REQUIRES_LINUX([fsfreeze])
1628 AM_CONDITIONAL([BUILD_FSFREEZE], [test "x$build_fsfreeze" = xyes])
1629
1630 UL_BUILD_INIT([blkdiscard], [check])
1631 UL_REQUIRES_LINUX([blkdiscard])
1632 AM_CONDITIONAL([BUILD_BLKDISCARD], [test "x$build_blkdiscard" = xyes])
1633
1634 UL_BUILD_INIT([blkzone], [check])
1635 UL_REQUIRES_LINUX([blkzone])
1636 UL_REQUIRES_HAVE([blkzone], [linux_blkzoned_h], [linux/blkzoned.h header])
1637 AM_CONDITIONAL([BUILD_BLKZONE], [test "x$build_blkzone" = xyes])
1638
1639 UL_BUILD_INIT([ldattach], [check])
1640 UL_REQUIRES_LINUX([ldattach])
1641 AM_CONDITIONAL([BUILD_LDATTACH], [test "x$build_ldattach" = xyes])
1642
1643 UL_BUILD_INIT([rtcwake], [check])
1644 UL_REQUIRES_LINUX([rtcwake])
1645 AM_CONDITIONAL([BUILD_RTCWAKE], [test "x$build_rtcwake" = xyes])
1646
1647 UL_BUILD_INIT([setarch], [check])
1648 UL_REQUIRES_LINUX([setarch])
1649 AM_CONDITIONAL([BUILD_SETARCH], [test "x$build_setarch" = xyes])
1650
1651 UL_BUILD_INIT([script], [check])
1652 UL_REQUIRES_HAVE([script], [sys_signalfd_h], [sys/signalfd.h header])
1653 AM_CONDITIONAL([BUILD_SCRIPT], [test "x$build_script" = xyes])
1654
1655 UL_BUILD_INIT([scriptreplay], [yes])
1656 AM_CONDITIONAL([BUILD_SCRIPTREPLAY], [test "x$build_scriptreplay" = xyes])
1657
1658 UL_BUILD_INIT([col], [yes])
1659 AM_CONDITIONAL([BUILD_COL], [test "x$build_col" = xyes])
1660
1661 UL_BUILD_INIT([colcrt], [yes])
1662 AM_CONDITIONAL([BUILD_COLCRT], [test "x$build_colcrt" = xyes])
1663
1664 UL_BUILD_INIT([colrm], [yes])
1665 AM_CONDITIONAL([BUILD_COLRM], [test "x$build_colrm" = xyes])
1666
1667 UL_BUILD_INIT([column], [check])
1668 UL_REQUIRES_BUILD([column], [libsmartcols])
1669 AM_CONDITIONAL([BUILD_COLUMN], [test "x$build_column" = xyes])
1670
1671 UL_BUILD_INIT([hexdump], [yes])
1672 AM_CONDITIONAL([BUILD_HEXDUMP], [test "x$build_hexdump" = xyes])
1673
1674 UL_BUILD_INIT([rev], [yes])
1675 AM_CONDITIONAL([BUILD_REV], [test "x$build_rev" = xyes])
1676
1677
1678 AC_ARG_ENABLE([tunelp],
1679 AS_HELP_STRING([--enable-tunelp], [build tunelp]),
1680 [], [UL_DEFAULT_ENABLE([tunelp], [no])]
1681 )
1682 UL_BUILD_INIT([tunelp])
1683 UL_REQUIRES_LINUX([tunelp])
1684 AM_CONDITIONAL([BUILD_TUNELP], [test "x$build_tunelp" = xyes])
1685
1686
1687 AC_ARG_ENABLE([kill],
1688 AS_HELP_STRING([--disable-kill], [do not build kill]),
1689 [], [UL_DEFAULT_ENABLE([kill], [check])]
1690 )
1691 UL_BUILD_INIT([kill])
1692 UL_REQUIRES_LINUX([kill])
1693 AM_CONDITIONAL([BUILD_KILL], [test "x$build_kill" = xyes])
1694
1695
1696 AC_ARG_ENABLE([last],
1697 AS_HELP_STRING([--disable-last], [do not build last]),
1698 [], [UL_DEFAULT_ENABLE([last], [check])]
1699 )
1700 UL_BUILD_INIT([last])
1701 UL_REQUIRES_HAVE([last], [utmpx_h], [utmpx.h header])
1702 UL_REQUIRES_HAVE([last], [gnu_utmpx], [GNU utmpx fucntions])
1703 AM_CONDITIONAL([BUILD_LAST], [test "x$build_last" = xyes])
1704
1705
1706 AC_ARG_ENABLE([utmpdump],
1707 AS_HELP_STRING([--disable-utmpdump], [do not build utmpdump]),
1708 [], [UL_DEFAULT_ENABLE([utmpdump], [check])]
1709 )
1710 UL_BUILD_INIT([utmpdump])
1711 UL_REQUIRES_HAVE([utmpdump], [utmpx_h], [utmpx.h header])
1712 UL_REQUIRES_HAVE([utmpdump], [gnu_utmpx], [GNU utmpx fucntions])
1713 AM_CONDITIONAL([BUILD_UTMPDUMP], [test "x$build_utmpdump" = xyes])
1714
1715
1716 AC_ARG_ENABLE([line],
1717 AS_HELP_STRING([--enable-line], [build line]),
1718 [], [UL_DEFAULT_ENABLE([line], [no])]
1719 )
1720 UL_BUILD_INIT([line])
1721 AM_CONDITIONAL([BUILD_LINE], [test "x$build_line" = xyes])
1722
1723
1724 AC_ARG_ENABLE([mesg],
1725 AS_HELP_STRING([--disable-mesg], [do not build mesg]),
1726 [], [UL_DEFAULT_ENABLE([mesg], [yes])]
1727 )
1728 UL_BUILD_INIT([mesg])
1729 AM_CONDITIONAL([BUILD_MESG], [test "x$build_mesg" = xyes])
1730
1731
1732 AC_ARG_ENABLE([raw],
1733 AS_HELP_STRING([--disable-raw], [do not build raw]),
1734 [], [UL_DEFAULT_ENABLE([raw], [check])]
1735 )
1736 UL_BUILD_INIT([raw])
1737 UL_REQUIRES_LINUX([raw])
1738 UL_REQUIRES_HAVE([raw], [linux_raw_h], [raw.h header file])
1739 AM_CONDITIONAL([BUILD_RAW], [test "x$build_raw" = xyes])
1740
1741
1742 AC_ARG_ENABLE([rename],
1743 AS_HELP_STRING([--disable-rename], [do not build rename]),
1744 [], [UL_DEFAULT_ENABLE([rename], [yes])]
1745 )
1746 UL_BUILD_INIT([rename])
1747 AM_CONDITIONAL([BUILD_RENAME], [test "x$build_rename" = xyes])
1748
1749
1750 AC_ARG_ENABLE([vipw],
1751 AS_HELP_STRING([--enable-vipw], [build vipw]),
1752 [], [UL_DEFAULT_ENABLE([vipw], [no])]
1753 )
1754 UL_BUILD_INIT([vipw])
1755 UL_REQUIRES_HAVE([vipw], [shadow_h], [shadow.h header])
1756 AM_CONDITIONAL([BUILD_VIPW], [test "x$build_vipw" = xyes])
1757
1758
1759 AC_ARG_ENABLE([newgrp],
1760 AS_HELP_STRING([--enable-newgrp], [build newgrp]),
1761 [], [UL_DEFAULT_ENABLE([newgrp], [no])]
1762 )
1763 UL_BUILD_INIT([newgrp])
1764 AM_CONDITIONAL([BUILD_NEWGRP], [test "x$build_newgrp" = xyes])
1765
1766
1767 AC_ARG_WITH([user], AS_HELP_STRING([--without-user], [compile without libuser (remote chsh)]),
1768 [], [with_user=check]
1769 )
1770 have_user=no
1771 AS_IF([test "x$with_user" != xno], [
1772 PKG_CHECK_MODULES(LIBUSER,[libuser >= 0.58], [have_user=yes], [have_user=no])
1773 AS_CASE([$with_user:$have_user],
1774 [yes:no],
1775 [AC_MSG_ERROR([user selected but libuser not found])],
1776 [*:yes],
1777 [AC_DEFINE([HAVE_LIBUSER], [1], [Define if libuser is available])]
1778 )
1779 # temporary solution, libuser has stupid .pc where are exported all
1780 # private dependencies to Requires: instead of Requires.private:
1781 AS_IF([test "x$have_user" = xyes], [
1782 LIBUSER_LIBS=-luser
1783 ])
1784 ])
1785 AM_CONDITIONAL([HAVE_USER], [test "x$have_user" = xyes])
1786
1787 AC_ARG_ENABLE([chfn-chsh-password],
1788 AS_HELP_STRING([--disable-chfn-chsh-password], [do not require the user to enter the password in chfn and chsh]),
1789 [], [enable_chfn_chsh_password=yes]
1790 )
1791
1792 AC_ARG_ENABLE([chfn-chsh],
1793 AS_HELP_STRING([--enable-chfn-chsh], [build chfn and chsh]),
1794 [], [UL_DEFAULT_ENABLE([chfn_chsh], [check])]
1795 )
1796 UL_BUILD_INIT([chfn_chsh])
1797 UL_REQUIRES_HAVE([chfn_chsh], [shadow_h], [shadow.h header])
1798
1799 AS_IF([test "x$enable_chfn_chsh_password" = xyes -o "x$have_user" = xyes], [
1800 UL_REQUIRES_HAVE([chfn_chsh], [security_pam_appl_h], [PAM header file])
1801 AC_DEFINE([CHFN_CHSH_PASSWORD], [1], [Should chfn and chsh require the user to enter the password?])
1802 ])
1803 AM_CONDITIONAL([BUILD_CHFN_CHSH], [test "x$build_chfn_chsh" = xyes])
1804 AM_CONDITIONAL([CHFN_CHSH_PASSWORD], [test "x$enable_chfn_chsh_password" = xyes])
1805
1806 AC_ARG_ENABLE([chsh-only-listed],
1807 AS_HELP_STRING([--disable-chsh-only-listed], [chsh: allow shells not in /etc/shells]),
1808 [], enable_chsh_only_listed=yes
1809 )
1810
1811 AS_IF([test "x$enable_chsh_only_listed" = xyes], [
1812 AC_DEFINE([ONLY_LISTED_SHELLS], [1], [Should chsh allow only shells in /etc/shells?])
1813 ])
1814
1815
1816 AC_ARG_ENABLE([login],
1817 AS_HELP_STRING([--disable-login], [do not build login]),
1818 [], [UL_DEFAULT_ENABLE([login], [check])]
1819 )
1820 UL_BUILD_INIT([login])
1821 UL_REQUIRES_HAVE([login], [security_pam_appl_h], [PAM header file])
1822 UL_REQUIRES_HAVE([login], [security_pam_misc_h, security_openpam_h], [PAM conversation functions])
1823 UL_REQUIRES_HAVE([login], [utmpx_h], [utmpx.h header])
1824 UL_REQUIRES_HAVE([login], [gnu_utmpx], [GNU utmpx fucntions])
1825 AM_CONDITIONAL([BUILD_LOGIN], [test "x$build_login" = xyes])
1826
1827 AC_ARG_ENABLE([login-chown-vcs],
1828 AS_HELP_STRING([--enable-login-chown-vcs], [let login chown /dev/vcsN]),
1829 [], [enable_login_chown_vcs=no]
1830 )
1831
1832 AS_IF([test "x$enable_login_chown_vcs" = xyes], [
1833 AC_DEFINE([LOGIN_CHOWN_VCS], [1], [Should login chown /dev/vcsN?])
1834 ])
1835
1836 AC_ARG_ENABLE([login-stat-mail],
1837 AS_HELP_STRING([--enable-login-stat-mail], [let login stat() the mailbox]),
1838 [], [enable_login_stat_mail=no]
1839 )
1840
1841 AS_IF([test "x$enable_login_stat_mail" = xyes], [
1842 AC_DEFINE([LOGIN_STAT_MAIL], [1], [Should login stat() the mailbox?])
1843 ])
1844
1845
1846 AC_ARG_ENABLE([nologin],
1847 AS_HELP_STRING([--disable-nologin], [do not build nologin]),
1848 [], [UL_DEFAULT_ENABLE([nologin], [yes])]
1849 )
1850 UL_BUILD_INIT([nologin])
1851 AM_CONDITIONAL([BUILD_NOLOGIN], [test "x$build_nologin" = xyes])
1852
1853
1854 AC_ARG_ENABLE([sulogin],
1855 AS_HELP_STRING([--disable-sulogin], [do not build sulogin]),
1856 [], [UL_DEFAULT_ENABLE([sulogin], [check])]
1857 )
1858 UL_BUILD_INIT([sulogin])
1859 UL_REQUIRES_HAVE([sulogin], [shadow_h], [shadow.h header])
1860 AM_CONDITIONAL([BUILD_SULOGIN], [test "x$build_sulogin" = xyes])
1861
1862
1863 AC_ARG_ENABLE([su],
1864 AS_HELP_STRING([--disable-su], [do not build su]),
1865 [], [UL_DEFAULT_ENABLE([su], [check])]
1866 )
1867 UL_BUILD_INIT([su])
1868 UL_REQUIRES_HAVE([su], [security_pam_appl_h], [PAM header file])
1869 UL_REQUIRES_HAVE([su], [utmpx_h], [utmpx.h header])
1870 UL_REQUIRES_HAVE([su], [gnu_utmpx], [GNU utmpx fucntions])
1871 AM_CONDITIONAL([BUILD_SU], [test "x$build_su" = xyes])
1872
1873
1874 AC_ARG_ENABLE([runuser],
1875 AS_HELP_STRING([--disable-runuser], [do not build runuser]),
1876 [], [UL_DEFAULT_ENABLE([runuser], [check])]
1877 )
1878 UL_BUILD_INIT([runuser])
1879 UL_REQUIRES_HAVE([runuser], [security_pam_appl_h], [PAM header file])
1880 UL_REQUIRES_HAVE([runuser], [utmpx_h], [utmpx.h header])
1881 UL_REQUIRES_HAVE([runuser], [gnu_utmpx], [GNU utmpx fucntions])
1882 AM_CONDITIONAL([BUILD_RUNUSER], [test "x$build_runuser" = xyes])
1883
1884
1885 AC_ARG_ENABLE([ul],
1886 AS_HELP_STRING([--disable-ul], [do not build ul]),
1887 [], [UL_DEFAULT_ENABLE([ul], [check])]
1888 )
1889 UL_BUILD_INIT([ul])
1890 UL_REQUIRES_HAVE([ul], [ncursesw, ncurses], [ncursesw or ncurses libraries])
1891 AM_CONDITIONAL([BUILD_UL], [test "x$build_ul" = xyes])
1892
1893
1894 AC_ARG_ENABLE([more],
1895 AS_HELP_STRING([--disable-more], [do not build more]),
1896 [], [UL_DEFAULT_ENABLE([more], [check])]
1897 )
1898 UL_BUILD_INIT([more])
1899 UL_REQUIRES_HAVE([more], [ncursesw, ncurses], [ncursesw or ncurses libraries])
1900 AM_CONDITIONAL([BUILD_MORE], [test "x$build_more" = xyes])
1901
1902
1903 AC_ARG_ENABLE([pg],
1904 AS_HELP_STRING([--enable-pg], [build pg]),
1905 [], [UL_DEFAULT_ENABLE([pg], [no])]
1906 )
1907 UL_BUILD_INIT([pg])
1908 UL_REQUIRES_HAVE([pg], [ncursesw, ncurses], [ncursesw or ncurses library])
1909 AM_CONDITIONAL([BUILD_PG], [test "x$build_pg" = xyes])
1910
1911
1912 AC_ARG_ENABLE([setterm],
1913 AS_HELP_STRING([--disable-setterm], [do not build setterm]),
1914 [], [UL_DEFAULT_ENABLE([setterm], [check])]
1915 )
1916 UL_BUILD_INIT([setterm])
1917 UL_REQUIRES_LINUX([setterm])
1918 UL_REQUIRES_HAVE([setterm], [ncursesw, ncurses], [ncursesw or ncurses library])
1919 AM_CONDITIONAL([BUILD_SETTERM], [test "x$build_setterm" = xyes])
1920
1921 # build_schedutils= is just configure-only variable to control
1922 # ionice, taskset and chrt
1923 AC_ARG_ENABLE([schedutils],
1924 AS_HELP_STRING([--disable-schedutils], [do not build chrt, ionice, taskset]),
1925 [], [UL_DEFAULT_ENABLE([schedutils], [check])]
1926 )
1927
1928
1929 UL_ENABLE_ALIAS([ionice], [schedutils])
1930 UL_BUILD_INIT([ionice])
1931 UL_REQUIRES_SYSCALL_CHECK([ionice],
1932 [UL_CHECK_SYSCALL([ioprio_set],
1933 [alpha], [442],
1934 [i*86], [289],
1935 [ia64*], [1274],
1936 [powerpc*], [273],
1937 [s390*], [282],
1938 [sparc*], [196],
1939 [sh*], [288],
1940 [x86_64*], [251])],
1941 [ioprio_set])
1942
1943 UL_REQUIRES_SYSCALL_CHECK([ionice],
1944 [UL_CHECK_SYSCALL([ioprio_get],
1945 [alpha], [443],
1946 [i*86], [290],
1947 [ia64*], [1275],
1948 [powerpc*], [274],
1949 [s390*], [283],
1950 [sparc*], [218],
1951 [sh*], [289],
1952 [x86_64*], [252])],
1953 [ioprio_get])
1954
1955 AM_CONDITIONAL([BUILD_IONICE], [test "x$build_ionice" = xyes])
1956
1957
1958 UL_ENABLE_ALIAS([taskset], [schedutils])
1959 UL_BUILD_INIT([taskset])
1960 UL_REQUIRES_HAVE([taskset], [cpu_set_t], [cpu_set_t type])
1961 UL_REQUIRES_SYSCALL_CHECK([taskset],
1962 [UL_CHECK_SYSCALL([sched_getaffinity])],
1963 [sched_getaffinity])
1964 AM_CONDITIONAL([BUILD_TASKSET], [test "x$build_taskset" = xyes])
1965
1966
1967 have_schedsetter=no
1968 AS_IF([test "x$ac_cv_func_sched_setscheduler" = xyes], [have_schedsetter=yes],
1969 [test "x$ac_cv_func_sched_setattr" = xyes], [have_schedsetter=yes])
1970
1971 UL_ENABLE_ALIAS([chrt], [schedutils])
1972 UL_BUILD_INIT([chrt])
1973 UL_REQUIRES_HAVE([chrt], [schedsetter], [sched_set functions])
1974 AM_CONDITIONAL([BUILD_CHRT], [test "x$build_chrt" = xyes])
1975
1976 AS_IF([test "x$build_chrt" = xyes], [
1977 UL_CHECK_SYSCALL([sched_setattr])
1978 ])
1979
1980
1981 AC_ARG_ENABLE([wall],
1982 AS_HELP_STRING([--disable-wall], [do not build wall]),
1983 [], [UL_DEFAULT_ENABLE([wall], [check])]
1984 )
1985 UL_BUILD_INIT([wall])
1986 UL_REQUIRES_HAVE([wall], [utmpx_h], [utmpx.h header])
1987 AM_CONDITIONAL([BUILD_WALL], [test "x$build_wall" = xyes])
1988
1989
1990 AC_ARG_ENABLE([write],
1991 AS_HELP_STRING([--enable-write], [build write]),
1992 [], [UL_DEFAULT_ENABLE([write], [no])]
1993 )
1994 UL_BUILD_INIT([write])
1995 UL_REQUIRES_HAVE([write], [utmpx_h], [utmpx.h header])
1996 UL_REQUIRES_HAVE([write], [gnu_utmpx], [GNU utmpx fucntions])
1997 AM_CONDITIONAL([BUILD_WRITE], [test "x$build_write" = xyes])
1998
1999
2000 AC_ARG_WITH([btrfs],
2001 AS_HELP_STRING([--with-btrfs], [build with support for btrfs]),
2002 [], [with_btrfs=check]
2003 )
2004 have_btrfs=no
2005 AS_IF([test "x$with_btrfs" != xno], [
2006 AS_CASE([$with_btrfs:$have_linux_btrfs_h],
2007 [yes:no],
2008 [AC_MSG_ERROR([btrfs selected but linux/btrfs.h not found])],
2009 [check:no],
2010 [AC_MSG_WARN([linux/btrfs.h not found, do not build with btrfs support])],
2011 [*:yes],
2012 [have_btrfs=yes
2013 AC_DEFINE([HAVE_BTRFS_SUPPORT], [1], [Define if btrfs stuff is available])]
2014 )
2015 ])
2016 AM_CONDITIONAL([HAVE_BTRFS], [test "x$have_btrfs" = xyes])
2017
2018
2019 AC_ARG_WITH([systemd],
2020 AS_HELP_STRING([--with-systemd], [build with support for systemd]),
2021 [], [with_systemd=check]
2022 )
2023
2024 have_systemd=no
2025 AS_IF([test "x$with_systemd" != xno], [
2026 # new version -- all libsystemd-* libs merged into libsystemd
2027 PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [have_systemd=yes], [have_systemd=no])
2028 # old versions
2029 AS_IF([test "x$have_systemd" != "xyes"], [
2030 PKG_CHECK_MODULES([SYSTEMD_DAEMON], [libsystemd-daemon],
2031 [have_systemd_daemon=yes], [have_systemd_daemon=no])
2032 PKG_CHECK_MODULES([SYSTEMD_JOURNAL], [libsystemd-journal],
2033 [have_systemd_journal=yes], [have_systemd_journal=no])
2034 AS_IF([test "x$have_systemd_daemon" = "xyes" -a "x$have_systemd_journal" = "xyes" ],[
2035 have_systemd=yes])
2036 ])
2037 AS_CASE([$with_systemd:$have_systemd],
2038 [yes:no],
2039 [AC_MSG_ERROR([systemd expected but libsystemd not found])],
2040 [*:yes],
2041 AC_DEFINE([HAVE_LIBSYSTEMD], [1], [Define if libsystemd is available])
2042 )
2043 ])
2044 AM_CONDITIONAL([HAVE_SYSTEMD], [test "x$have_systemd" = xyes])
2045
2046
2047 AC_ARG_WITH([systemdsystemunitdir],
2048 AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [directory for systemd service files]),
2049 [], [with_systemdsystemunitdir=`$PKG_CONFIG --variable=systemdsystemunitdir systemd`])
2050
2051 AS_IF([test "x$with_systemdsystemunitdir" != "xno"], [
2052 AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
2053 ])
2054
2055
2056 AC_ARG_WITH([smack],
2057 AS_HELP_STRING([--with-smack], [build with SMACK support]),
2058 [], [with_smack=no]
2059 )
2060 AS_IF([test "x$with_smack" = xyes], [
2061 AC_DEFINE([HAVE_SMACK], [1], [Add SMACK support])
2062 ])
2063
2064
2065 AC_ARG_WITH([bashcompletiondir],
2066 AS_HELP_STRING([--with-bashcompletiondir=DIR], [Bash completions directory]),
2067 [],
2068 [AS_IF([`$PKG_CONFIG --exists bash-completion`], [
2069 with_bashcompletiondir=`$PKG_CONFIG --variable=completionsdir bash-completion`
2070 ], [
2071 with_bashcompletiondir=${datadir}/bash-completion/completions
2072 ])
2073 ])
2074 AC_SUBST([bashcompletiondir], [$with_bashcompletiondir])
2075
2076 AC_ARG_ENABLE([bash-completion],
2077 AS_HELP_STRING([--disable-bash-completion], [do not install bash completion files]),
2078 [], [enable_bash_completion=yes]
2079 )
2080
2081 AM_CONDITIONAL([BUILD_BASH_COMPLETION], [test "x$enable_bash_completion" = xyes])
2082
2083
2084 AC_ARG_WITH([python],
2085 AS_HELP_STRING([--without-python], [do not build python bindings, use --with-python={2,3} to force version]),
2086 [], [with_python=check withval=check]
2087 )
2088
2089 have_python=no
2090 have_libpython=no
2091 AS_IF([test "x$with_python" != xno], [
2092 # We follow distributions default and look for PKG module name "python"
2093 # (minimal version is 2) but if major version is explicitly specified by
2094 # --with-python=2 or --with-python=3 then we look for PKG module "python2" or
2095 # "python3".
2096 AS_IF([test "x$withval" != xno -a "x$withval" != xyes -a "x$withval" != xcheck],
2097 [pymajor="$withval"; PYTHON=python${pymajor}], [pymajor="2"])
2098
2099 # check for python interpreter
2100 AM_PATH_PYTHON([$pymajor], [have_python=yes], [have_python=no])
2101 AS_CASE([$with_python:$have_python],
2102 [yes:no],
2103 [AC_MSG_ERROR([python selected but python interpreter not found])],
2104 [check:no],
2105 [AC_MSG_WARN([python interpreter not found, do not build python bindings])],
2106 [*:yes],
2107 # check for python development stuff
2108 [PKG_CHECK_MODULES([PYTHON], [python-$PYTHON_VERSION],
2109 [have_libpython=yes], [have_libpython=no])]
2110 )
2111 ])
2112
2113
2114 AC_ARG_ENABLE([pylibmount],
2115 AS_HELP_STRING([--disable-pylibmount], [do not build pylibmount]),
2116 [], [UL_DEFAULT_ENABLE([pylibmount], [check])]
2117 )
2118 UL_BUILD_INIT([pylibmount])
2119 UL_REQUIRES_HAVE([pylibmount], [libpython], [libpython])
2120 UL_REQUIRES_BUILD([pylibmount], [libmount])
2121 AM_CONDITIONAL([BUILD_PYLIBMOUNT], [test "x$build_pylibmount" = "xyes"])
2122
2123 # We need to introduce a verbatim dependency into the Makefile, without automake
2124 # trying to interpret it, so push it as a AM_SUBST_NOTMAKE variable.
2125 verbatim_pylibmount_dependency='
2126
2127 # pylibmountexec module must be installed after usrlib_exec libraries,
2128 # otherwise the libtool relink step will fail to find libmount.la and
2129 # will try -lmount which is possibly not available.
2130 install-pylibmountexecLTLIBRARIES: install-usrlib_execLTLIBRARIES
2131
2132 '
2133 AC_SUBST([verbatim_pylibmount_dependency])
2134 AM_SUBST_NOTMAKE([verbatim_pylibmount_dependency])
2135
2136 AC_ARG_ENABLE([pg-bell],
2137 AS_HELP_STRING([--disable-pg-bell], [let pg not ring the bell on invalid keys]),
2138 [], [enable_pg_bell=yes]
2139 )
2140
2141 AS_IF([test "x$enable_pg_bell" = xyes], [
2142 AC_DEFINE([PG_BELL], [1], [Should pg ring the bell on invalid keys?])
2143 ])
2144
2145
2146 AC_DEFUN([FS_PATHS_DEFAULT], [/sbin:/sbin/fs.d:/sbin/fs])
2147 AC_ARG_ENABLE([fs-paths-default],
2148 AS_HELP_STRING([--enable-fs-paths-default=paths], [default search path for fs helpers @<:@FS_PATHS_DEFAULT@:>@]),
2149 [AS_CASE([$enableval],
2150 [yes], [fs_paths_defaults="FS_PATHS_DEFAULT"],
2151 [no], [fs_paths_defaults=""],
2152 [fs_paths_defaults="$enableval"]
2153 )],
2154 [fs_paths_defaults="FS_PATHS_DEFAULT"]
2155 )
2156 AC_ARG_ENABLE([fs-paths-extra],
2157 AS_HELP_STRING([--enable-fs-paths-extra=paths], [additional search paths for fs helpers]),
2158 [AS_CASE([$enableval],
2159 [yes|no], [fs_paths_extra=""],
2160 [fs_paths_extra="$enableval"]
2161 )],
2162 [fs_paths_extra=""]
2163 )
2164 fs_paths="$fs_paths_defaults"
2165 AS_IF([test "x$fs_paths_extra" != "x"], [
2166 AS_IF([test "x$fs_paths" != "x"], [
2167 fs_paths="${fs_paths}:"
2168 ])
2169 fs_paths="${fs_paths}${fs_paths_extra}"
2170 ])
2171 AC_DEFINE_UNQUOTED([FS_SEARCH_PATH], "$fs_paths", [search path for fs helpers])
2172
2173
2174 AC_ARG_ENABLE([use-tty-group],
2175 AS_HELP_STRING([--disable-use-tty-group], [do not install wall and write setgid tty]),
2176 [], [enable_use_tty_group=yes]
2177 )
2178 AM_CONDITIONAL([USE_TTY_GROUP], [test "x$enable_use_tty_group" = xyes])
2179
2180 AS_IF([test "x$enable_use_tty_group" = xyes], [
2181 AC_DEFINE([USE_TTY_GROUP], [1], [Should wall and write be installed setgid tty?])
2182 ])
2183
2184
2185 AC_ARG_ENABLE([sulogin-emergency-mount],
2186 AS_HELP_STRING([--enable-sulogin-emergency-mount],
2187 [use emergency mount of /dev and /proc for sulogin]),
2188 [], [enable_sulogin_emergency_mount=no]
2189 )
2190
2191 AS_IF([test "x$enable_sulogin_emergency_mount" = xyes], [
2192 AC_DEFINE([USE_SULOGIN_EMERGENCY_MOUNT], [1],
2193 [Should sulogin use a emergency mount of /dev and /proc?])
2194 ])
2195
2196
2197 AC_ARG_ENABLE([usrdir-path],
2198 AS_HELP_STRING([--enable-usrdir-path], [use only /usr paths in PATH env. variable (recommended on systems with /bin -> /usr/bin symlinks)]),
2199 [], [enable_usrdir_path=no]
2200 )
2201
2202 AS_IF([test "x$enable_usrdir_path" == xyes], [
2203 AC_DEFINE([USE_USRDIR_PATHS_ONLY], [1], [Define to 1 to remove /bin and /sbin from PATH env.variable])
2204 ])
2205
2206
2207 AC_ARG_ENABLE([makeinstall-chown],
2208 AS_HELP_STRING([--disable-makeinstall-chown], [do not do chown-like operations during "make install"]),
2209 [], [enable_makeinstall_chown=yes]
2210 )
2211 AM_CONDITIONAL([MAKEINSTALL_DO_CHOWN], [test "x$enable_makeinstall_chown" = xyes])
2212
2213
2214 AC_ARG_ENABLE([makeinstall-setuid],
2215 AS_HELP_STRING([--disable-makeinstall-setuid], [do not do setuid chmod operations during "make install"]),
2216 [], [enable_makeinstall_setuid=yes]
2217 )
2218 AM_CONDITIONAL([MAKEINSTALL_DO_SETUID], [test "x$enable_makeinstall_setuid" = xyes])
2219
2220
2221 AC_ARG_ENABLE([colors-default],
2222 AS_HELP_STRING([--disable-colors-default], [do not colorize output from utils by default]),
2223 [], [enable_colors_default=yes]
2224 )
2225 AS_IF([test "x$enable_colors_default" = xyes], [
2226 AC_DEFINE([USE_COLORS_BY_DEFAULT], [1], [Enables colorized output from utils by default])
2227 ])
2228
2229
2230 AC_ARG_VAR([SUID_CFLAGS],
2231 [CFLAGS used for binaries which are usually with the suid bit])
2232 AC_ARG_VAR([SUID_LDFLAGS],
2233 [LDFLAGS used for binaries which are usually with the suid bit])
2234
2235 AC_ARG_VAR([DAEMON_CFLAGS],
2236 [CFLAGS used for binaries which are usually executed as daemons])
2237 AC_ARG_VAR([DAEMON_LDFLAGS],
2238 [LDFLAGS used for binaries which are usually executed as daemons])
2239
2240 AC_ARG_VAR([SOLIB_CFLAGS],
2241 [CFLAGS used for shared libraries])
2242 AC_ARG_VAR([SOLIB_LDFLAGS],
2243 [LDFLAGS used for shared libraries])
2244
2245 AC_ARG_VAR([ADJTIME_PATH],
2246 [Path to hwclock adjtime file, default /etc/adjtime])
2247 AS_IF([test "x$ADJTIME_PATH" = x], [ADJTIME_PATH="/etc/adjtime"])
2248 AC_DEFINE_UNQUOTED([CONFIG_ADJTIME_PATH], "$ADJTIME_PATH", [Path to hwclock adjtime file])
2249
2250
2251 LIBS=""
2252
2253
2254 AC_CONFIG_HEADERS([config.h])
2255
2256 #
2257 # Don't use configure.ac to replace install paths! See Makefile PATHFILES for
2258 # more details.
2259 #
2260 AC_CONFIG_FILES([
2261 Makefile
2262 libblkid/docs/Makefile
2263 libblkid/docs/version.xml
2264 libblkid/src/blkid.h
2265 libfdisk/docs/Makefile
2266 libfdisk/docs/version.xml
2267 libfdisk/src/libfdisk.h
2268 libmount/docs/Makefile
2269 libmount/docs/version.xml
2270 libmount/src/libmount.h
2271 libsmartcols/docs/Makefile
2272 libsmartcols/docs/version.xml
2273 libsmartcols/src/libsmartcols.h
2274 po/Makefile.in
2275 ])
2276
2277 AC_OUTPUT
2278
2279 AC_MSG_RESULT([
2280 ${PACKAGE} ${VERSION}
2281
2282 prefix: ${prefix}
2283 exec prefix: ${exec_prefix}
2284
2285 localstatedir: ${localstatedir}
2286 bindir: ${bindir}
2287 sbindir: ${sbindir}
2288 libdir: ${libdir}
2289 includedir: ${includedir}
2290 usrbin_execdir: ${usrbin_execdir}
2291 usrsbin_execdir: ${usrsbin_execdir}
2292 usrlib_execdir: ${usrlib_execdir}
2293
2294 compiler: ${CC}
2295 cflags: ${CFLAGS}
2296 suid cflags: ${SUID_CFLAGS}
2297 ldflags: ${LDFLAGS}
2298 suid ldflags: ${SUID_LDFLAGS}
2299
2300 Python: ${PYTHON}
2301 Python version: ${PYTHON_VERSION}
2302 Python libs: ${pyexecdir}
2303
2304 Bash completions: ${with_bashcompletiondir}
2305 Systemd support: ${have_systemd}
2306 Btrfs support: ${have_btrfs}
2307 Wide-char support: ${build_widechar}
2308
2309 warnings:
2310
2311 ${WARN_CFLAGS}
2312
2313 Type 'make' or 'make <utilname>' to compile.
2314 ])