]> git.ipfire.org Git - thirdparty/util-linux.git/blob - configure.ac
Merge branch 'usage-part2' of https://github.com/rudimeier/util-linux
[thirdparty/util-linux.git] / configure.ac
1 AC_INIT([util-linux],
2 m4_esyscmd([tools/git-version-gen .tarball-version]),
3 [kzak@redhat.com],,
4 [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 warn \
432 warnx \
433 ])
434 AC_FUNC_FSEEKO
435
436 AC_CHECK_FUNCS([openat fstatat unlinkat], [have_openat=yes], [have_openat=no])
437 AC_CHECK_FUNCS([ioperm iopl], [have_io=yes])
438 AC_CHECK_FUNCS([futimens], [have_futimens=yes])
439 AC_CHECK_FUNCS([inotify_init1], [have_inotify_init1=yes])
440 AC_CHECK_FUNCS([open_memstream], [have_open_memstream=yes],[have_open_memstream=no])
441 AC_CHECK_FUNCS([reboot], [have_reboot=yes],[have_reboot=no])
442 AC_CHECK_FUNCS([updwtmpx updwtmpx], [have_gnu_utmpx=yes], [have_gnu_utmpx=no])
443
444 AM_CONDITIONAL([HAVE_OPENAT], [test "x$have_openat" = xyes])
445
446
447 AC_CHECK_FUNCS([isnan], [],
448 [AC_CHECK_LIB([m], [isnan], [MATH_LIBS="-lm"])]
449 [AC_CHECK_LIB([m], [__isnan], [MATH_LIBS="-lm"])]
450 )
451 AC_SUBST([MATH_LIBS])
452
453
454 dnl lib/mononotic.c may require -lrt
455 AC_CHECK_FUNCS([clock_gettime], [],
456 [AC_CHECK_LIB([rt], [clock_gettime], [REALTIME_LIBS="-lrt"])]
457 )
458
459 have_timer="no"
460 AC_CHECK_FUNCS([timer_create],
461 [have_timer="yes"],
462 [AC_CHECK_LIB([rt], [timer_create], [
463 have_timer="yes"
464 REALTIME_LIBS="-lrt"
465 ],[
466 AC_SEARCH_LIBS([timer_create], [rt], [
467 AC_MSG_RESULT(yes)
468 have_timer="yes"
469 REALTIME_LIBS="-lrt -lpthread"
470 ],[], [-lpthread]
471 )
472 ])]
473 )
474
475 AC_SUBST([REALTIME_LIBS])
476
477
478 AC_CHECK_LIB([rtas], [rtas_get_sysparm], [
479 RTAS_LIBS="-lrtas"
480 AC_DEFINE_UNQUOTED([HAVE_LIBRTAS], [1], [Define if librtas exists]), [],
481 ])
482 AC_SUBST([RTAS_LIBS])
483
484
485 AC_CHECK_MEMBER([struct sockaddr.sa_len],
486 AC_DEFINE_UNQUOTED([HAVE_SA_LEN], [1], [Define if struct sockaddr contains sa_len]), [],
487 [#include <sys/types.h>
488 #include <sys/socket.h>])
489
490 SOCKET_LIBS=
491 AC_SEARCH_LIBS([socket], [socket],
492 [AS_IF([test x"$ac_cv_search_socket" != x"none required"],
493 [SOCKET_LIBS="$SOCKET_LIBS -lsocket"])
494 ])
495 AC_SUBST([SOCKET_LIBS])
496
497
498 have_dirfd=no
499 AC_CHECK_FUNCS([dirfd], [have_dirfd=yes], [have_dirfd=no])
500 AS_IF([test x"$have_dirfd" = xno], [
501 AC_CHECK_DECLS([dirfd],
502 [have_dirfd=yes], [have_dirfd=no],
503 [#include <sys/types.h>
504 #include <dirent.h>])
505 ])
506
507 have_ddfd=no
508 AS_IF([test x"$have_dirfd" = xno], [
509 AC_CHECK_MEMBERS([DIR.dd_fd],
510 [have_ddfd=yes], [have_ddfd=no],
511 [#include <sys/types.h>
512 #include <dirent.h>])
513 ])
514
515 AS_CASE([$have_dirfd:$have_ddfd],
516 [no:no],
517 [AC_MSG_ERROR([cannot find a method to get filedescriptor of directory])]
518 )
519
520
521 AC_MSG_CHECKING([whether program_invocation_short_name is defined])
522 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
523 #include <errno.h>
524 ]], [[
525 program_invocation_short_name = "test";
526 ]])], [
527 AC_MSG_RESULT([yes])
528 AC_DEFINE([HAVE_PROGRAM_INVOCATION_SHORT_NAME], [1],
529 [Define if program_invocation_short_name is defined])
530 ], [
531 AC_MSG_RESULT([no])
532 ])
533
534
535 AC_MSG_CHECKING([whether __progname is defined])
536 AC_LINK_IFELSE([AC_LANG_PROGRAM([extern char *__progname;],
537 [if (*__progname == 0) return 1;])],
538 AC_DEFINE([HAVE___PROGNAME], [1], [Define if __progname is defined])
539 AC_MSG_RESULT([yes]),
540 AC_MSG_RESULT([no]))
541
542 dnl Static compilation
543 m4_define([UL_STATIC_PROGRAMS], [losetup, mount, umount, fdisk, sfdisk, blkid, nsenter, unshare])
544
545 AC_ARG_ENABLE([static-programs],
546 [AS_HELP_STRING([--enable-static-programs=LIST],
547 [link static the programs in LIST (comma-separated,
548 supported for ]m4_defn([UL_STATIC_PROGRAMS])[)])])
549
550 AS_CASE([$enable_static_programs],
551 [yes],
552 [enable_static_programs=m4_quote(UL_STATIC_PROGRAMS)],
553 [no],
554 [enable_static_programs=]
555 )
556
557 dnl Set all the individual AM_CONDITIONALs
558 m4_foreach([UL_PRG], m4_defn([UL_STATIC_PROGRAMS]), [
559 AS_CASE([,$enable_static_programs,],
560 [*,UL_PRG,*], [static_[]UL_PRG=yes]
561 )
562 AS_IF([test "x$static_[]UL_PRG" = xyes], [AC_MSG_NOTICE([enable static build: UL_PRG.])])
563 AM_CONDITIONAL([HAVE_STATIC_]m4_toupper(UL_PRG),
564 [test "x$static_[]UL_PRG" = xyes])
565 ])
566
567
568 AC_ARG_ENABLE([all-programs],
569 AS_HELP_STRING([--disable-all-programs], [disable everything, might be overridden by --enable-<name>]),
570 [], [enable_all_programs=undefined]
571 )
572
573 AS_CASE([$enable_all_programs],
574 [yes], [AC_MSG_WARN([force to build all programs by default])
575 ul_default_estate=check],
576 [no], [AC_MSG_WARN([disable all programs by default])
577 ul_default_estate=no]
578 )
579
580
581 AX_CHECK_TLS
582
583 AC_DEFUN([UL_SCANF_TYPE_MODIFIER], [dnl
584 # include <stdio.h>
585 # include <stdlib.h>
586 int main()
587 {
588 int i;
589 int rc = 1;
590 char *s;
591 i = sscanf("x", $1, &s);
592 if (i == 1 && *s == 'x')
593 rc = 0;
594 free(s);
595 return rc;
596 }])
597
598 AC_CACHE_VAL([scanf_cv_alloc_modifier],
599 AC_RUN_IFELSE([AC_LANG_SOURCE([UL_SCANF_TYPE_MODIFIER(["%ms"])])],
600 [scanf_cv_alloc_modifier=ms],
601 AC_RUN_IFELSE([AC_LANG_SOURCE([UL_SCANF_TYPE_MODIFIER(["%as"])])],
602 [scanf_cv_alloc_modifier=as],
603 [scanf_cv_alloc_modifier=no]
604 )
605 ,
606
607 [AC_COMPILE_IFELSE([AC_LANG_SOURCE([
608 #include <stdio.h>
609 #include <unistd.h>
610
611 #if defined(__GLIBC__) && !defined(__UCLIBC__)
612
613 #if !(__GLIBC_PREREQ(2, 7))
614 #error %m is not available
615 #endif
616
617 #elif defined(_POSIX_VERSION)
618
619 #if _POSIX_VERSION < 200809L
620 #error %m is not available
621 #endif
622
623 #else
624 #error Your C-library is not supported.
625 #endif
626 ])],
627 [scanf_cv_alloc_modifier=ms],
628 [scanf_cv_alloc_modifier=no])]
629 )
630 )
631
632 AC_MSG_CHECKING([scanf string alloc modifiers])
633 AS_CASE([$scanf_cv_alloc_modifier],
634 [ms],
635 [AC_MSG_RESULT([(%ms) yes])
636 AC_DEFINE([HAVE_SCANF_MS_MODIFIER], [1], [scanf %ms modifier])
637 have_scanf_alloc_modifier=yes],
638 [as],
639 [AC_MSG_RESULT([(%as) yes])
640 have_scanf_alloc_modifier=yes
641 AC_DEFINE([HAVE_SCANF_AS_MODIFIER], [1], [scanf %as modifier])],
642 [AC_MSG_RESULT([no])
643 have_scanf_alloc_modifier=no]
644 )
645
646
647 AC_ARG_WITH([util], AS_HELP_STRING([--without-util], [compile without libutil]),
648 [], [with_util=auto]
649 )
650 AS_IF([test "x$with_util" = xno], [
651 AM_CONDITIONAL([HAVE_UTIL], [false])
652 have_util=no
653 ], [
654 UL_CHECK_LIB([util], [openpty])
655 ])
656
657
658 AC_CHECK_TYPES([union semun], [], [], [[
659 #include <sys/sem.h>
660 ]])
661 AC_CHECK_TYPES([loff_t])
662
663
664 AC_ARG_ENABLE([widechar],
665 AS_HELP_STRING([--disable-widechar], [do not compile wide character support]),
666 [], [enable_widechar=check]
667 )
668 UL_BUILD_INIT([widechar])
669 UL_REQUIRES_COMPILE([widechar], [[
670 #include <wchar.h>
671 #include <wctype.h>
672 #include <stdio.h>
673 ]], [[
674 wchar_t wc;
675 wint_t w;
676 w = fgetwc(stdin);
677 if (w == WEOF) exit(1);
678 wc = w;
679 fputwc(wc,stdout);
680 ]],
681 [wchar_t support])
682
683 AS_IF([test "x$build_widechar" = xyes ], [
684 AC_DEFINE([HAVE_WIDECHAR], [1], [Do we have wide character support?])
685 ])
686
687
688 AC_CHECK_TYPES([cpu_set_t], [have_cpu_set_t=yes], [], [[
689 #include <sched.h>
690 ]])
691
692 AM_CONDITIONAL([HAVE_CPU_SET_T], [test "x$have_cpu_set_t" = xyes])
693
694 AC_CHECK_TYPES([sighandler_t], [], [], [[
695 #include <signal.h>
696 ]])
697
698 AC_CHECK_DECLS([CPU_ALLOC], [], [], [[
699 #include <sched.h>
700 ]])
701
702 # on Solaris, you can't mix and match standards, since we use c99
703 # aparently at this stage, XOPEN_SOURCE will conflict. As workaround,
704 # check for crypt.h and use that without XOPEN_SOURCE.
705 AC_CHECK_HEADERS([crypt.h])
706 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
707 #ifdef HAVE_CRYPT_H
708 #include <crypt.h>
709 #else
710 #define _XOPEN_SOURCE
711 #include <unistd.h>
712 #endif
713 ]], [[
714 char *c = crypt("abc","pw");
715 ]])],[],[
716 LIBS="$LIBS -lcrypt"
717 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
718 #ifdef HAVE_CRYPT_H
719 #include <crypt.h>
720 #else
721 #define _XOPEN_SOURCE
722 #include <unistd.h>
723 #endif
724 ]], [[
725 char *c = crypt("abc","pw");
726 ]])],[
727 AC_DEFINE([HAVE_LIBCRYPT], [1], [Do we need -lcrypt?])
728 have_libcrypt=yes
729 ],[
730 AC_MSG_ERROR([crypt() is not available])
731 ])
732 ])
733 AM_CONDITIONAL([HAVE_LIBCRYPT], [test "x$have_libcrypt" = xyes])
734
735
736 AC_ARG_WITH([selinux],
737 AS_HELP_STRING([--with-selinux], [compile with SELinux support]),
738 [], [with_selinux=no]
739 )
740
741 AS_IF([test "x$with_selinux" = xno], [
742 AM_CONDITIONAL([HAVE_SELINUX], [false])
743 ], [
744 PKG_CHECK_MODULES([SELINUX], [libselinux >= 2.0],
745 [AC_DEFINE([HAVE_LIBSELINUX], [1], [Define if SELinux is available])
746 UL_PKG_STATIC([SELINUX_LIBS_STATIC], [libselinux])
747 AM_CONDITIONAL([HAVE_SELINUX], [true])
748 have_selinux=yes],
749 [have_selinux=no])
750
751 AS_CASE([$with_selinux:$have_selinux],
752 [yes:no], [AC_MSG_ERROR([SELinux selected but libselinux not found or too old])]
753 )
754
755 AS_IF([test "x$have_selinux" = xyes], [
756 UL_SET_FLAGS([], [], [$SELINUX_LIBS])
757 # This function is missing in old libselinux 1.xx versions
758 AC_CHECK_FUNCS([security_get_initial_context])
759 UL_RESTORE_FLAGS
760 ])
761 ])
762 AC_SUBST([SELINUX_LIBS])
763 AC_SUBST([SELINUX_LIBS_STATIC])
764
765
766 AC_ARG_WITH([audit],
767 AS_HELP_STRING([--with-audit], [compile with audit support]),
768 [], [with_audit=no]
769 )
770
771 AS_IF([test "x$with_audit" = xno], [
772 AM_CONDITIONAL([HAVE_AUDIT], [false])
773 ], [
774 UL_CHECK_LIB([audit], [audit_log_user_message])
775 AS_CASE([$with_audit:$have_audit],
776 [yes:no],
777 [AC_MSG_ERROR([Audit selected but libaudit not found (or does not support audit_log_user_message())])]
778 )
779 ])
780
781 AC_ARG_WITH([udev], AS_HELP_STRING([--without-udev], [compile without udev support]),
782 [], [with_udev=auto]
783 )
784
785 AS_IF([test "x$with_udev" = xno], [
786 AM_CONDITIONAL([HAVE_UDEV], [false])
787 ], [
788 UL_CHECK_LIB([udev], [udev_new])
789 AS_CASE([$with_udev:$have_udev],
790 [yes:no],
791 [AC_MSG_ERROR([udev selected but libudev not found])]
792 )
793 ])
794
795
796 dnl wide-char ncurses
797 AC_ARG_WITH([ncursesw],
798 AS_HELP_STRING([--with-ncursesw], [build with wide-char ncurses, enabled by default]),
799 [], [with_ncursesw=auto]
800 )
801 have_ncursesw=no
802 have_ncursesw_header=no
803 AS_IF([test "x$with_ncursesw" != xno], [
804 UL_NCURSES_CHECK([ncursesw])
805 AS_IF([test "x$have_ncursesw" = xyes], [
806 AC_CHECK_HEADERS([ncursesw/ncurses.h], [have_ncursesw_header=yes])
807 AC_CHECK_HEADERS([ncursesw/term.h])
808 AS_IF([test "x$have_ncursesw_header" = xno], [have_ncursesw=no])
809 ])
810 AS_IF([test "x$have_ncursesw" = xyes], [
811 CURSES_LIB_NAME="ncursesw"
812 AC_DEFINE([HAVE_LIBNCURSESW], [1], [Define if ncursesw library available])
813 ])
814 ])
815 AS_CASE([$with_ncursesw:$have_ncursesw],
816 [yes:no], [AC_MSG_ERROR([ncursesw selected, but library not found])])
817
818
819 dnl non-wide ncurses
820 AC_ARG_WITH([ncurses],
821 AS_HELP_STRING([--with-ncurses], [build with non-wide ncurses, disabled by default]),
822 [], [with_ncurses=auto]
823 )
824 have_ncurses=no
825 have_ncurses_header=no
826 AS_CASE([$with_ncurses:$build_widechar],
827 [yes:yes], [AC_MSG_ERROR([wide-char support enabled, but non-wide ncurses selects])])
828
829 AS_IF([test "x$have_ncursesw" = xno -a "x$with_ncurses" != xno ], [
830 UL_NCURSES_CHECK([ncurses])
831 AS_IF([test "x$have_ncurses" = xyes], [
832 AC_CHECK_HEADERS([ncurses/ncurses.h ncurses.h], [have_ncurses_header=yes])
833 AC_CHECK_HEADERS([ncurses/term.h term.h])
834 AS_IF([test "x$have_ncurses_header" = xno], [have_ncurses=no])
835 ])
836 AS_IF([test "x$have_ncurses" = xyes], [
837 CURSES_LIB_NAME="ncurses"
838 AC_DEFINE([HAVE_LIBNCURSES], [1], [Define if ncurses library available])
839 ])
840 ])
841 AS_CASE([$with_ncurses:$have_ncurses],
842 [yes:no], [AC_MSG_ERROR([ncurses selected, but library not found])])
843
844 AC_SUBST([NCURSES_CFLAGS])
845 AC_SUBST([NCURSES_LIBS])
846 AM_CONDITIONAL([HAVE_NCURSES], [test "x$have_ncursesw" = xyes -o "x$have_ncurses" = xyes])
847
848
849 AC_ARG_WITH([slang],
850 AS_HELP_STRING([--with-slang], [compile cfdisk with slang rather than ncurses]),
851 [], [with_slang=no]
852 )
853 have_slang=no
854 AS_IF([test "x$with_slang" = xyes], [
855 AC_CHECK_HEADERS([slang.h slang/slang.h])
856 AC_CHECK_HEADERS([slcurses.h slang/slcurses.h],
857 [have_slang=yes], [], [
858 #ifdef HAVE_SLANG_H
859 #include <slang.h>
860 #elif defined(HAVE_SLANG_SLANG_H)
861 #include <slang/slang.h>
862 #endif
863 ])
864 AS_IF([test "x$have_slang" = xno], [
865 AC_MSG_ERROR([slang selected but slcurses.h not found])],
866 [CURSES_LIB_NAME=slang
867 ])
868 ])
869 AM_CONDITIONAL([HAVE_SLANG], [test "x$have_slang" = xyes])
870
871
872 AS_IF([test "x$have_slang" = xyes -o "x$have_ncursesw" = xyes -o "x$have_ncurses" = xyes], [
873 AC_CHECK_LIB([$CURSES_LIB_NAME], use_default_colors, [
874 AC_DEFINE(HAVE_USE_DEFAULT_COLORS, 1,
875 [Define if curses library has the use_default_colors().])
876 ])
877 AC_CHECK_LIB([$CURSES_LIB_NAME], resizeterm, [
878 AC_DEFINE(HAVE_RESIZETERM, 1,
879 [Define if curses library has the resizeterm().])
880 ])
881 ])
882
883
884 AC_ARG_WITH([tinfo], AS_HELP_STRING([--without-tinfo], [compile without libtinfo]),
885 [], [with_tinfo=auto]
886 )
887 have_tinfo=no
888 AS_IF([test "x$with_tinfo" != xno], [
889 dnl Try pkg-config for libtinfo
890 PKG_CHECK_MODULES(TINFO, [tinfo], [
891 dnl pkg-config success
892 have_tinfo=yes
893 UL_PKG_STATIC([TINFO_LIBS_STATIC], [tinfo])], [
894
895 dnl If pkg-config failed, fall back to classic searching.
896 AC_CHECK_LIB([tinfo], [tgetent], [
897 have_tinfo=yes
898 TINFO_LIBS="-ltinfo"
899 TINFO_LIBS_STATIC="-ltinfo"
900 TINFO_CFLAGS=""])
901 ])
902 ])
903 AC_SUBST([TINFO_LIBS])
904 AC_SUBST([TINFO_LIBS_STATIC])
905 AC_SUBST([TINFO_CFLAGS])
906 AM_CONDITIONAL([HAVE_TINFO], [test "x$have_tinfo" = xyes])
907 AS_IF([test "x$have_tinfo" = xyes], [
908 AC_DEFINE(HAVE_LIBTINFO, 1, [Define if libtinfo available.])
909 ])
910
911
912 AC_ARG_WITH([readline],
913 AS_HELP_STRING([--with-readline], [compile with GNU Readline support]),
914 [], [with_readline=auto]
915 )
916
917 AS_IF([test "x$with_readline" = xno], [
918 AM_CONDITIONAL([HAVE_READLINE], [false])
919 ], [
920 UL_CHECK_LIB([readline], [readline])
921 AS_CASE([$with_readline:$have_readline],
922 [yes:no],
923 [AC_MSG_ERROR([readline selected but libreadline not found ])],
924 [*:yes],
925 [READLINE_LIBS="-lreadline"
926 READLINE_LIBS_STATIC="-lreadline $TINFO_LIBS_STATIC"]
927 )
928 ])
929 AC_SUBST([READLINE_LIBS])
930 AC_SUBST([READLINE_LIBS_STATIC])
931
932
933 AC_ARG_WITH([utempter],
934 AS_HELP_STRING([--with-utempter], [compile script(1) with libutempter]),
935 [], [with_utempter=no]
936 )
937
938 AS_IF([test "x$with_utempter" = xyes], [
939 UL_CHECK_LIB([utempter], [utempter_add_record])
940 AS_IF([test "x$have_utempter" = xno], [
941 AC_MSG_ERROR([utempter selected but libutempter not found])
942 ])
943 ], [
944 AM_CONDITIONAL([HAVE_UTEMPTER], [false])
945 ])
946
947
948 dnl
949 dnl libuuid
950 dnl
951 AC_ARG_ENABLE([libuuid],
952 AS_HELP_STRING([--disable-libuuid], [do not build libuuid and uuid utilities]),
953 [], [UL_DEFAULT_ENABLE([libuuid], [yes])]
954 )
955 UL_BUILD_INIT([libuuid])
956 AC_SUBST([LIBUUID_VERSION])
957 AC_SUBST([LIBUUID_VERSION_INFO])
958 AM_CONDITIONAL(BUILD_LIBUUID, test "x$build_libuuid" = xyes)
959
960 AC_ARG_ENABLE([libuuid-force-uuidd],
961 AS_HELP_STRING([--enable-libuuid-force-uuidd], [support uuidd even though the daemon is not built]),
962 [], [enable_libuuid_force_uuidd=no]
963 )
964
965 AS_IF([test "x$build_libuuid" = xyes], [
966 AC_DEFINE(HAVE_LIBUUID, 1, [Define to 1 if you have the -luuid.])
967 ])
968
969 dnl
970 dnl libblkid
971 dnl
972 AC_ARG_ENABLE([libblkid],
973 AS_HELP_STRING([--disable-libblkid], [do not build libblkid and many related utilities]),
974 [], [UL_DEFAULT_ENABLE([libblkid], [check])]
975 )
976 UL_BUILD_INIT([libblkid])
977 UL_REQUIRES_HAVE([libblkid], [openat], [openat functions])
978 AC_SUBST([LIBBLKID_DATE])
979 AC_SUBST([LIBBLKID_VERSION])
980 AC_SUBST([LIBBLKID_VERSION_INFO])
981 AC_DEFINE_UNQUOTED([LIBBLKID_VERSION], ["$LIBBLKID_VERSION"], [libblkid version string])
982 AC_DEFINE_UNQUOTED([LIBBLKID_DATE], ["$LIBBLKID_DATE"], [libblkid date string])
983 AS_IF([test "x$build_libblkid" = xyes], [
984 AC_DEFINE([HAVE_LIBBLKID], [1], [Define to 1 if you have the -lblkid.])
985 ])
986 AM_CONDITIONAL([BUILD_LIBBLKID], [test "x$build_libblkid" = xyes])
987 AM_CONDITIONAL([BUILD_LIBBLKID_TESTS], [test "x$build_libblkid" = xyes -a "x$enable_static" = xyes])
988
989 dnl
990 dnl libmount
991 dnl
992 AC_ARG_ENABLE([libmount],
993 AS_HELP_STRING([--disable-libmount], [do not build libmount]),
994 [], [UL_DEFAULT_ENABLE([libmount], [check])]
995 )
996 UL_BUILD_INIT([libmount])
997 UL_REQUIRES_BUILD([libmount], [libblkid])
998 UL_REQUIRES_HAVE([libmount], [scanf_alloc_modifier], [scanf string alloc modifier])
999 AM_CONDITIONAL([BUILD_LIBMOUNT], [test "x$build_libmount" = xyes])
1000 AM_CONDITIONAL([BUILD_LIBMOUNT_TESTS], [test "x$build_libmount" = xyes -a "x$enable_static" = xyes])
1001 AS_IF([test "x$build_libmount" = xyes], [
1002 AC_DEFINE(HAVE_LIBMOUNT, 1, [Define if libmount available.])
1003 ])
1004
1005 AC_SUBST([LIBMOUNT_VERSION])
1006 AC_SUBST([LIBMOUNT_MAJOR_VERSION], $PACKAGE_VERSION_MAJOR)
1007 AC_SUBST([LIBMOUNT_MINOR_VERSION], $PACKAGE_VERSION_MINOR)
1008 AC_SUBST([LIBMOUNT_PATCH_VERSION], $PACKAGE_VERSION_RELEASE)
1009 AC_SUBST([LIBMOUNT_VERSION_INFO])
1010 AC_DEFINE_UNQUOTED([LIBMOUNT_VERSION], ["$LIBMOUNT_VERSION"], [libmount version string])
1011
1012 AC_ARG_ENABLE([libmount-support-mtab],
1013 AS_HELP_STRING([--enable-libmount-support-mtab], [support /etc/mtab (default is use /proc/self/mountinfo)]),
1014 [], [enable_libmount_support_mtab=no]
1015 )
1016
1017 AS_IF([test "x$enable_libmount_support_mtab" == xyes], [
1018 AC_DEFINE([USE_LIBMOUNT_SUPPORT_MTAB], [1], [Define to 1 if want to support mtab.])
1019 ])
1020
1021
1022 dnl
1023 dnl libsmartcols
1024 dnl
1025 AC_ARG_ENABLE([libsmartcols],
1026 AS_HELP_STRING([--disable-libsmartcols], [do not build libsmartcols]),
1027 [], [UL_DEFAULT_ENABLE([libsmartcols], [yes])]
1028 )
1029 UL_BUILD_INIT([libsmartcols])
1030 AM_CONDITIONAL([BUILD_LIBSMARTCOLS], [test "x$build_libsmartcols" = xyes])
1031
1032 AC_SUBST([LIBSMARTCOLS_VERSION])
1033 AC_SUBST([LIBSMARTCOLS_VERSION_INFO])
1034 AC_DEFINE_UNQUOTED([LIBSMARTCOLS_VERSION], ["$LIBSMARTCOLS_VERSION"], [libsmartcols version string])
1035
1036
1037 dnl
1038 dnl libfdisk
1039 dnl
1040 AC_ARG_ENABLE([libfdisk],
1041 AS_HELP_STRING([--disable-libfdisk], [do not build libfdisk]),
1042 [], [UL_DEFAULT_ENABLE([libfdisk], [check])]
1043 )
1044 UL_BUILD_INIT([libfdisk])
1045 UL_REQUIRES_BUILD([libfdisk], [libuuid])
1046 AM_CONDITIONAL([BUILD_LIBFDISK], [test "x$build_libfdisk" = xyes])
1047 AM_CONDITIONAL([BUILD_LIBFDISK_TESTS], [test "x$build_libfdisk" = xyes -a "x$enable_static" = xyes])
1048
1049 AS_IF([test "x$build_libblkid" = xyes],
1050 [LIBFDISK_PC_REQUIRES="uuid blkid"],[LIBFDISK_PC_REQUIRES="uuid"])
1051 AC_SUBST([LIBFDISK_PC_REQUIRES])
1052
1053 AC_SUBST([LIBFDISK_VERSION])
1054 AC_SUBST([LIBFDISK_MAJOR_VERSION], $PACKAGE_VERSION_MAJOR)
1055 AC_SUBST([LIBFDISK_MINOR_VERSION], $PACKAGE_VERSION_MINOR)
1056 AC_SUBST([LIBFDISK_PATCH_VERSION], $PACKAGE_VERSION_RELEASE)
1057 AC_SUBST([LIBFDISK_VERSION_INFO])
1058 AC_DEFINE_UNQUOTED([LIBFDISK_VERSION], ["$LIBFDISK_VERSION"], [libfdisk version string])
1059
1060
1061 UL_BUILD_INIT([fdisk], [check])
1062 UL_REQUIRES_HAVE([fdisk], [openat], [openat functions])
1063 UL_REQUIRES_BUILD([fdisk], [libfdisk])
1064 UL_REQUIRES_BUILD([fdisk], [libsmartcols])
1065 AM_CONDITIONAL([BUILD_FDISK], [test "x$build_fdisk" = xyes])
1066
1067
1068 UL_BUILD_INIT([sfdisk], [check])
1069 UL_REQUIRES_HAVE([sfdisk], [openat], [openat functions])
1070 UL_REQUIRES_BUILD([sfdisk], [libfdisk])
1071 UL_REQUIRES_BUILD([sfdisk], [libsmartcols])
1072 AM_CONDITIONAL([BUILD_SFDISK], [test "x$build_sfdisk" = xyes])
1073
1074
1075 UL_BUILD_INIT([cfdisk], [check])
1076 UL_REQUIRES_BUILD([cfdisk], [libfdisk])
1077 UL_REQUIRES_BUILD([cfdisk], [libsmartcols])
1078 UL_REQUIRES_HAVE([cfdisk], [open_memstream], [open_memstream function])
1079 UL_REQUIRES_HAVE([cfdisk], [ncursesw,slang,ncurses], [ncursesw, ncurses or slang library])
1080 AM_CONDITIONAL([BUILD_CFDISK], [test "x$build_cfdisk" = xyes])
1081
1082
1083 AC_ARG_ENABLE([mount],
1084 AS_HELP_STRING([--disable-mount], [do not build mount(8) and umount(8)]),
1085 [], [UL_DEFAULT_ENABLE([mount], [check])]
1086 )
1087 UL_BUILD_INIT([mount])
1088 UL_REQUIRES_LINUX([mount])
1089 UL_REQUIRES_BUILD([mount], [libmount])
1090 AM_CONDITIONAL([BUILD_MOUNT], [test "x$build_mount" = xyes])
1091
1092
1093 AC_ARG_ENABLE([losetup],
1094 AS_HELP_STRING([--disable-losetup], [do not build losetup]),
1095 [], [UL_DEFAULT_ENABLE([losetup], [check])]
1096 )
1097 UL_BUILD_INIT([losetup])
1098 UL_REQUIRES_LINUX([losetup])
1099 UL_REQUIRES_BUILD([losetup], [libsmartcols])
1100 AM_CONDITIONAL([BUILD_LOSETUP], [test "x$build_losetup" = xyes])
1101
1102 AC_ARG_ENABLE([zramctl],
1103 AS_HELP_STRING([--disable-zramctl], [do not build zramctl]),
1104 [], [UL_DEFAULT_ENABLE([zramctl], [check])]
1105 )
1106 UL_BUILD_INIT([zramctl])
1107 UL_REQUIRES_LINUX([zramctl])
1108 UL_REQUIRES_BUILD([zramctl], [libsmartcols])
1109 AM_CONDITIONAL([BUILD_ZRAMCTL], [test "x$build_zramctl" = xyes])
1110
1111 AC_ARG_ENABLE([fsck],
1112 AS_HELP_STRING([--disable-fsck], [do not build fsck]),
1113 [], [UL_DEFAULT_ENABLE([fsck], [check])]
1114 )
1115 UL_BUILD_INIT([fsck])
1116 UL_REQUIRES_BUILD([fsck], [libmount])
1117 AM_CONDITIONAL([BUILD_FSCK], [test "x$build_fsck" = xyes])
1118
1119
1120 AC_ARG_ENABLE([partx],
1121 AS_HELP_STRING([--disable-partx], [do not build addpart, delpart, partx]),
1122 [], [UL_DEFAULT_ENABLE([partx], [check])]
1123 )
1124 UL_BUILD_INIT([partx])
1125 UL_REQUIRES_LINUX([partx])
1126 UL_REQUIRES_BUILD([partx], [libblkid])
1127 UL_REQUIRES_BUILD([partx], [libsmartcols])
1128 AM_CONDITIONAL([BUILD_PARTX], [test "x$build_partx" = xyes])
1129
1130
1131 AC_ARG_ENABLE([uuidd],
1132 AS_HELP_STRING([--disable-uuidd], [do not build the uuid daemon]),
1133 [], [UL_DEFAULT_ENABLE([uuidd], [check])]
1134 )
1135 UL_BUILD_INIT([uuidd])
1136 UL_REQUIRES_BUILD([uuidd], [libuuid])
1137 UL_REQUIRES_HAVE([uuidd], [timer], [timer_create function])
1138 UL_REQUIRES_HAVE([uuidd], [sys_signalfd_h], [sys/signalfd.h header])
1139 AS_IF([test "x$build_uuidd" = xyes || test "x$enable_libuuid_force_uuidd" == xyes ], [
1140 AC_DEFINE([HAVE_UUIDD], [1], [Define to 1 if you want to use uuid daemon.])
1141 ])
1142 AM_CONDITIONAL([BUILD_UUIDD], [test "x$build_uuidd" = xyes])
1143
1144
1145 UL_BUILD_INIT([uuidgen], [check])
1146 UL_REQUIRES_BUILD([uuidgen], [libuuid])
1147 AM_CONDITIONAL([BUILD_UUIDGEN], [test "x$build_uuidgen" = xyes])
1148
1149 UL_BUILD_INIT([uuidparse], [check])
1150 UL_REQUIRES_BUILD([uuidparse], [libuuid])
1151 UL_REQUIRES_BUILD([uuidparse], [libsmartcols])
1152 AM_CONDITIONAL([BUILD_UUIDPARSE], [test "x$build_uuidparse" = xyes])
1153
1154 UL_BUILD_INIT([blkid], [check])
1155 UL_REQUIRES_BUILD([blkid], [libblkid])
1156 AM_CONDITIONAL([BUILD_BLKID], [test "x$build_blkid" = xyes])
1157
1158 UL_BUILD_INIT([findfs], [check])
1159 UL_REQUIRES_BUILD([findfs], [libblkid])
1160 AM_CONDITIONAL([BUILD_FINDFS], [test "x$build_findfs" = xyes])
1161
1162 UL_BUILD_INIT([wipefs], [check])
1163 UL_REQUIRES_BUILD([wipefs], [libblkid])
1164 AM_CONDITIONAL([BUILD_WIPEFS], [test "x$build_wipefs" = xyes])
1165
1166 UL_BUILD_INIT([findmnt], [check])
1167 UL_REQUIRES_BUILD([findmnt], [libmount])
1168 UL_REQUIRES_BUILD([findmnt], [libblkid])
1169 UL_REQUIRES_BUILD([findmnt], [libsmartcols])
1170 AM_CONDITIONAL([BUILD_FINDMNT], [test "x$build_findmnt" = xyes])
1171
1172
1173 AC_ARG_ENABLE([mountpoint],
1174 AS_HELP_STRING([--disable-mountpoint], [do not build mountpoint]),
1175 [], [UL_DEFAULT_ENABLE([mountpoint], [check])]
1176 )
1177 UL_BUILD_INIT([mountpoint])
1178 UL_REQUIRES_BUILD([mountpoint], [libmount])
1179 AM_CONDITIONAL([BUILD_MOUNTPOINT], [test "x$build_mountpoint" = xyes])
1180
1181
1182 AC_ARG_ENABLE([fallocate],
1183 AS_HELP_STRING([--disable-fallocate], [do not build fallocate]),
1184 [], [UL_DEFAULT_ENABLE([fallocate], [check])]
1185 )
1186 UL_BUILD_INIT([fallocate])
1187 UL_REQUIRES_LINUX([fallocate])
1188 UL_REQUIRES_SYSCALL_CHECK([fallocate], [UL_CHECK_SYSCALL([fallocate])])
1189 AM_CONDITIONAL([BUILD_FALLOCATE], [test "x$build_fallocate" = xyes])
1190
1191 AS_IF([test "x$build_fallocate" = xyes], [
1192 dnl check for valid fallocate() function
1193 dnl with 32 bits glibc 2.10, fallocate() exists but not fallocate64()
1194 dnl when _FILE_OFFSET_BITS==64, fallocate() is redirect to fallocate64()
1195 dnl and program can't be linked.
1196 dnl AC_CHECK_FUNC can't catch such errors since it's redefining
1197 dnl function prototype.
1198 AC_MSG_CHECKING([for valid fallocate() function])
1199 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1200 #ifdef HAVE_UNISTD_H
1201 # include <unistd.h>
1202 #endif
1203 #ifdef HAVE_SYS_TYPES_H
1204 # include <sys/types.h>
1205 #endif
1206 #ifdef HAVE_LINUX_FALLOC_H
1207 # include <linux/falloc.h>
1208 #endif
1209 #ifdef HAVE_FCNTL_H
1210 # include <fcntl.h>
1211 #endif
1212 ]],[[
1213 long ret;
1214 ret = fallocate(0, FALLOC_FL_KEEP_SIZE, 0xfffffffful, 0xfffffffful);
1215 if (ret != 0) {
1216 return 1;
1217 }
1218 ]])],[
1219 AC_MSG_RESULT([yes])
1220 AC_DEFINE([HAVE_FALLOCATE], [1], [Have valid fallocate() function])],[
1221 AC_MSG_RESULT([no])])
1222 ])
1223
1224 AS_IF([test "x$build_fallocate" = xyes], [
1225 dnl check for valid posix_fallocate() function
1226 AC_MSG_CHECKING([for valid posix_fallocate() function])
1227 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1228 #ifdef HAVE_UNISTD_H
1229 # include <unistd.h>
1230 #endif
1231 #ifdef HAVE_SYS_TYPES_H
1232 # include <sys/types.h>
1233 #endif
1234 #ifdef HAVE_LINUX_FALLOC_H
1235 # include <linux/falloc.h>
1236 #endif
1237 #ifdef HAVE_FCNTL_H
1238 # include <fcntl.h>
1239 #endif
1240 ]],[[
1241 long ret;
1242 ret = posix_fallocate(0, 0xfffffffful, 0xfffffffful);
1243 if (ret != 0) {
1244 return 1;
1245 }
1246 ]])],[
1247 AC_MSG_RESULT([yes])
1248 AC_DEFINE([HAVE_POSIX_FALLOCATE], [1], [Have valid posix_fallocate() function])],[
1249 AC_MSG_RESULT([no])])
1250 ])
1251
1252
1253 AC_ARG_ENABLE([unshare],
1254 AS_HELP_STRING([--disable-unshare], [do not build unshare]),
1255 [], [UL_DEFAULT_ENABLE([unshare], [check])]
1256 )
1257 UL_BUILD_INIT([unshare])
1258 UL_REQUIRES_LINUX([unshare])
1259 UL_REQUIRES_SYSCALL_CHECK([unshare], [UL_CHECK_SYSCALL([unshare])])
1260 AM_CONDITIONAL([BUILD_UNSHARE], [test "x$build_unshare" = xyes])
1261 AC_CHECK_FUNCS([unshare])
1262
1263 AC_ARG_ENABLE([nsenter],
1264 AS_HELP_STRING([--disable-nsenter], [do not build nsenter]),
1265 [], [UL_DEFAULT_ENABLE([nsenter], [check])]
1266 )
1267 UL_BUILD_INIT([nsenter])
1268 UL_REQUIRES_LINUX([nsenter])
1269 UL_REQUIRES_SYSCALL_CHECK([nsenter], [UL_CHECK_SYSCALL([setns])], [setns])
1270 AM_CONDITIONAL([BUILD_NSENTER], [test "x$build_nsenter" = xyes])
1271 AC_CHECK_FUNCS([setns])
1272
1273
1274 AC_ARG_WITH([cap_ng],
1275 AS_HELP_STRING([--without-cap-ng], [compile without libcap-ng]),
1276 [], [with_cap_ng=auto]
1277 )
1278 AS_IF([test "x$with_cap_ng" = xno], [
1279 AM_CONDITIONAL([HAVE_CAP_NG], [false])
1280 have_cap_ng=no
1281 ],[
1282 UL_CHECK_LIB([cap-ng], [capng_apply], [cap_ng])
1283 ])
1284
1285
1286 AC_ARG_ENABLE([setpriv],
1287 AS_HELP_STRING([--disable-setpriv], [do not build setpriv]),
1288 [], [UL_DEFAULT_ENABLE([setpriv], [check])]
1289 )
1290 UL_BUILD_INIT([setpriv])
1291 UL_REQUIRES_LINUX([setpriv])
1292 UL_REQUIRES_HAVE([setpriv], [linux_securebits_h], [securebits.h header file])
1293 UL_REQUIRES_HAVE([setpriv], [cap_ng], [libcap-ng library])
1294 AM_CONDITIONAL([BUILD_SETPRIV], [test "x$build_setpriv" = xyes])
1295
1296
1297 AC_ARG_ENABLE([eject],
1298 AS_HELP_STRING([--disable-eject], [do not build eject]),
1299 [], [UL_DEFAULT_ENABLE([eject], [check])]
1300 )
1301 UL_BUILD_INIT([eject])
1302 UL_REQUIRES_LINUX([eject])
1303 UL_REQUIRES_BUILD([eject], [libmount])
1304 AM_CONDITIONAL([BUILD_EJECT], [test "x$build_eject" = xyes])
1305
1306
1307 AC_ARG_ENABLE([agetty],
1308 AS_HELP_STRING([--disable-agetty], [do not build agetty]),
1309 [], [UL_DEFAULT_ENABLE([agetty], [check])]
1310 )
1311 UL_BUILD_INIT([agetty])
1312 UL_REQUIRES_HAVE([agetty], [utmpx_h], [utmpx.h header])
1313 UL_REQUIRES_HAVE([agetty], [gnu_utmpx], [GNU utmpx fucntions])
1314 AM_CONDITIONAL([BUILD_AGETTY], [test "x$build_agetty" = xyes])
1315 AS_IF([test "x$have_futimens" = xyes -a "x$have_inotify_init1" = xyes ], [
1316 AC_DEFINE([AGETTY_RELOAD], [1], [Enable agetty --reload feature])
1317 ],[
1318 AC_MSG_WARN([futimens or inotify_init1 not found; agetty(8) will not provide ---reload functionality])
1319 ])
1320
1321
1322 AC_ARG_ENABLE([plymouth_support],
1323 AS_HELP_STRING([--disable-plymouth_support], [don not care about plymouth in sylogin(8) and agetty(8)]),
1324 [], [enable_plymouth_support=check]
1325 )
1326 UL_BUILD_INIT([plymouth_support])
1327 UL_REQUIRES_HAVE([plymouth_support], [tiocglcktrmios], [TIOCGLCKTRMIOS flag])
1328 UL_REQUIRES_HAVE([plymouth_support], [sock_cloexec], [SOCK_CLOEXEC flag])
1329 UL_REQUIRES_HAVE([plymouth_support], [sock_nonblock], [SOCK_NONBLOCK flag])
1330 UL_REQUIRES_HAVE([plymouth_support], [so_passcred], [SO_PASSCRED flag])
1331 AM_CONDITIONAL([USE_PLYMOUTH_SUPPORT], [test "x$build_plymouth_support" = xyes])
1332 AS_IF([test "x$build_plymouth_support" = xyes ], [
1333 AC_DEFINE([USE_PLYMOUTH_SUPPORT], [1], [Enable plymouth support feature for sulogin and aggety])
1334 ])
1335
1336
1337 AC_ARG_WITH([libz],
1338 AS_HELP_STRING([--without-libz], [compile without libz]),
1339 [], [with_libz=auto]
1340 )
1341 AS_IF([test "x$with_libz" = xno], [have_z=no], [
1342 AC_CHECK_LIB([z], [crc32], [have_z=yes], [have_z=no])
1343 ])
1344
1345
1346 AC_ARG_ENABLE([cramfs],
1347 AS_HELP_STRING([--disable-cramfs], [do not build fsck.cramfs, mkfs.cramfs]),
1348 [], [UL_DEFAULT_ENABLE([cramfs], [check])]
1349 )
1350 UL_BUILD_INIT([cramfs])
1351 UL_REQUIRES_HAVE([cramfs], [z], [z library])
1352 AM_CONDITIONAL([BUILD_CRAMFS], [test "x$build_cramfs" = xyes])
1353
1354
1355 AC_ARG_ENABLE([bfs],
1356 AS_HELP_STRING([--disable-bfs], [do not build mkfs.bfs]),
1357 [], [UL_DEFAULT_ENABLE([bfs], [yes])]
1358 )
1359 UL_BUILD_INIT([bfs])
1360 AM_CONDITIONAL([BUILD_BFS], [test "x$build_bfs" = xyes])
1361
1362
1363 AC_ARG_ENABLE([minix],
1364 AS_HELP_STRING([--disable-minix], [do not build fsck.minix, mkfs.minix]),
1365 [], [UL_DEFAULT_ENABLE([minix], [yes])]
1366 )
1367 UL_BUILD_INIT([minix])
1368 AM_CONDITIONAL([BUILD_MINIX], [test "x$build_minix" = xyes])
1369
1370
1371 AC_ARG_ENABLE([fdformat],
1372 AS_HELP_STRING([--disable-fdformat], [do not build fdformat]),
1373 [], [UL_DEFAULT_ENABLE([fdformat], [check])]
1374 )
1375 UL_BUILD_INIT([fdformat])
1376 UL_REQUIRES_LINUX([fdformat])
1377 AM_CONDITIONAL([BUILD_FDFORMAT], [test "x$build_fdformat" = xyes])
1378
1379
1380 AC_ARG_ENABLE([hwclock],
1381 AS_HELP_STRING([--disable-hwclock], [do not build hwclock]),
1382 [], [UL_DEFAULT_ENABLE([hwclock], [check])]
1383 )
1384 have_linuxdummy=$linux_os
1385
1386 UL_BUILD_INIT([hwclock])
1387 UL_REQUIRES_HAVE([hwclock], [io, linuxdummy], [ioperm iopl function or Linux])
1388 AM_CONDITIONAL([BUILD_HWCLOCK], [test "x$build_hwclock" = xyes])
1389
1390
1391 UL_BUILD_INIT([mkfs], [yes])
1392 AM_CONDITIONAL([BUILD_MKFS], [test "x$build_mkfs" = xyes])
1393
1394 UL_BUILD_INIT([isosize], [yes])
1395 AM_CONDITIONAL([BUILD_ISOSIZE], [test "x$build_isosize" = xyes])
1396
1397
1398 UL_BUILD_INIT([fstrim], [check])
1399 UL_REQUIRES_LINUX([fstrim])
1400 UL_REQUIRES_BUILD([fstrim], [libmount])
1401 AM_CONDITIONAL([BUILD_FSTRIM], [test "x$build_fstrim" = xyes])
1402
1403
1404 UL_BUILD_INIT([swapon], [check])
1405 UL_REQUIRES_LINUX([swapon])
1406 UL_REQUIRES_BUILD([swapon], [libblkid])
1407 UL_REQUIRES_BUILD([swapon], [libmount])
1408 UL_REQUIRES_BUILD([swapon], [libsmartcols])
1409 AM_CONDITIONAL([BUILD_SWAPON], [test "x$build_swapon" = xyes])
1410
1411
1412 UL_BUILD_INIT([lsblk], [check])
1413 UL_REQUIRES_LINUX([lsblk])
1414 UL_REQUIRES_BUILD([lsblk], [libblkid])
1415 UL_REQUIRES_BUILD([lsblk], [libmount])
1416 UL_REQUIRES_BUILD([lsblk], [libsmartcols])
1417 AM_CONDITIONAL([BUILD_LSBLK], [test "x$build_lsblk" = xyes])
1418
1419
1420 UL_BUILD_INIT([lscpu], [check])
1421 UL_REQUIRES_LINUX([lscpu])
1422 UL_REQUIRES_BUILD([lscpu], [libsmartcols])
1423 UL_REQUIRES_HAVE([lscpu], [cpu_set_t], [cpu_set_t type])
1424 AM_CONDITIONAL([BUILD_LSCPU], [test "x$build_lscpu" = xyes])
1425
1426
1427 AC_ARG_ENABLE([lslogins],
1428 AS_HELP_STRING([--disable-lslogins], [do not build lslogins]),
1429 [], [UL_DEFAULT_ENABLE([lslogins], [check])]
1430 )
1431 UL_BUILD_INIT([lslogins])
1432 UL_REQUIRES_BUILD([lslogins], [libsmartcols])
1433 UL_REQUIRES_HAVE([lslogins], [shadow_h], [shadow.h header])
1434 UL_REQUIRES_HAVE([lslogins], [utmpx_h], [utmpx.h header])
1435 UL_REQUIRES_HAVE([lslogins], [gnu_utmpx], [GNU utmpx fucntions])
1436 AM_CONDITIONAL([BUILD_LSLOGINS], [test "x$build_lslogins" = xyes])
1437
1438
1439 UL_BUILD_INIT([chcpu], [check])
1440 UL_REQUIRES_LINUX([chcpu])
1441 UL_REQUIRES_HAVE([chcpu], [cpu_set_t], [cpu_set_t type])
1442 AM_CONDITIONAL([BUILD_CHCPU], [test "x$build_chcpu" = xyes])
1443
1444
1445 AC_ARG_ENABLE([wdctl],
1446 AS_HELP_STRING([--disable-wdctl], [do not build wdctl]),
1447 [], [UL_DEFAULT_ENABLE([wdctl], [check])]
1448 )
1449 UL_BUILD_INIT([wdctl])
1450 UL_REQUIRES_LINUX([wdctl])
1451 UL_REQUIRES_BUILD([wdctl], [libsmartcols])
1452 UL_REQUIRES_HAVE([wdctl], [linux_watchdog_h], [linux/watchdog.h header file])
1453 AM_CONDITIONAL([BUILD_WDCTL], [test "x$build_wdctl" = xyes])
1454
1455
1456 UL_BUILD_INIT([swaplabel], [check])
1457 UL_REQUIRES_BUILD([swaplabel], [libblkid])
1458 AM_CONDITIONAL([BUILD_SWAPLABEL], [test "x$build_swaplabel" = xyes])
1459
1460
1461 UL_BUILD_INIT([mkswap], [yes])
1462 AM_CONDITIONAL([BUILD_MKSWAP], [test "x$build_mkswap" = xyes])
1463 AS_IF([test "x$build_mkswap" = xyes -a "x$build_libuuid" != xyes], [
1464 AC_MSG_WARN([uuid library is not found; mkswap(8) will not generate UUIDs])
1465 ])
1466
1467
1468 AC_ARG_ENABLE([cal],
1469 AS_HELP_STRING([--disable-cal], [do not build cal]),
1470 [], [UL_DEFAULT_ENABLE([cal], [check])]
1471 )
1472 UL_BUILD_INIT([cal])
1473 AM_CONDITIONAL([BUILD_CAL], [test "x$build_cal" = xyes])
1474
1475 AC_ARG_ENABLE([logger],
1476 AS_HELP_STRING([--disable-logger], [do not build logger]),
1477 [], [UL_DEFAULT_ENABLE([logger], [check])]
1478 )
1479 UL_BUILD_INIT([logger])
1480 AM_CONDITIONAL([BUILD_LOGGER], [test "x$build_logger" = xyes])
1481
1482 UL_BUILD_INIT([look], [yes])
1483 AM_CONDITIONAL([BUILD_LOOK], [test "x$build_look" = xyes])
1484
1485 UL_BUILD_INIT([mcookie], [yes])
1486 AM_CONDITIONAL([BUILD_MCOOKIE], [test "x$build_mcookie" = xyes])
1487
1488 UL_BUILD_INIT([namei], [yes])
1489 AM_CONDITIONAL([BUILD_NAMEI], [test "x$build_namei" = xyes])
1490
1491 UL_BUILD_INIT([whereis], [yes])
1492 AM_CONDITIONAL([BUILD_WHEREIS], [test "x$build_whereis" = xyes])
1493
1494 UL_BUILD_INIT([getopt], [yes])
1495 AM_CONDITIONAL([BUILD_GETOPT], [test "x$build_getopt" = xyes])
1496
1497
1498 UL_BUILD_INIT([blockdev], [check])
1499 UL_REQUIRES_LINUX([blockdev])
1500 AM_CONDITIONAL([BUILD_BLOCKDEV], [test "x$build_blockdev" = xyes])
1501
1502
1503 UL_BUILD_INIT([prlimit], [check])
1504 UL_REQUIRES_LINUX([prlimit])
1505 UL_REQUIRES_BUILD([prlimit], [libsmartcols])
1506 UL_REQUIRES_SYSCALL_CHECK([prlimit], [UL_CHECK_SYSCALL([prlimit64])], [prlimit64])
1507 AM_CONDITIONAL([BUILD_PRLIMIT], [test "x$build_prlimit" = xyes])
1508 AS_IF([test "x$build_prlimit" = xyes], [
1509 AC_CHECK_FUNCS([prlimit])
1510 ])
1511
1512
1513 UL_BUILD_INIT([lslocks], [check])
1514 UL_REQUIRES_LINUX([lslocks])
1515 UL_REQUIRES_BUILD([lslocks], [libmount])
1516 UL_REQUIRES_BUILD([lslocks], [libsmartcols])
1517 AM_CONDITIONAL([BUILD_LSLOCKS], [test "x$build_lslocks" = xyes])
1518
1519
1520 AC_ARG_ENABLE([switch_root],
1521 AS_HELP_STRING([--disable-switch_root], [do not build switch_root]),
1522 [], [UL_DEFAULT_ENABLE([switch_root], [check])]
1523 )
1524 UL_BUILD_INIT([switch_root])
1525 UL_REQUIRES_LINUX([switch_root])
1526 UL_REQUIRES_HAVE([switch_root], [openat], [openat function])
1527 AM_CONDITIONAL([BUILD_SWITCH_ROOT], [test "x$build_switch_root" = xyes])
1528
1529
1530 AC_ARG_ENABLE([pivot_root],
1531 AS_HELP_STRING([--disable-pivot_root], [do not build pivot_root]),
1532 [], [UL_DEFAULT_ENABLE([pivot_root], [check])]
1533 )
1534 UL_BUILD_INIT([pivot_root])
1535 UL_REQUIRES_LINUX([pivot_root])
1536 UL_REQUIRES_SYSCALL_CHECK([pivot_root], [UL_CHECK_SYSCALL([pivot_root])])
1537 AM_CONDITIONAL([BUILD_PIVOT_ROOT], [test "x$build_pivot_root" = xyes])
1538
1539
1540 UL_BUILD_INIT([flock], [check])
1541 UL_REQUIRES_HAVE([flock], [timer], [timer_create function])
1542 AM_CONDITIONAL([BUILD_FLOCK], [test "x$build_flock" = xyes])
1543
1544
1545 AC_ARG_ENABLE([lsmem],
1546 AS_HELP_STRING([--disable-lsmem], [do not build lsmem]),
1547 [], [UL_DEFAULT_ENABLE([lsmem], [check])]
1548 )
1549 UL_BUILD_INIT([lsmem])
1550 UL_REQUIRES_LINUX([lsmem])
1551 UL_REQUIRES_BUILD([lsmem], [libsmartcols])
1552 AM_CONDITIONAL([BUILD_LSMEM], [test "x$build_lsmem" = xyes])
1553
1554
1555 AC_ARG_ENABLE([chmem],
1556 AS_HELP_STRING([--disable-chmem], [do not build chmem]),
1557 [], [UL_DEFAULT_ENABLE([chmem], [check])]
1558 )
1559 UL_BUILD_INIT([chmem])
1560 UL_REQUIRES_LINUX([chmem])
1561 AM_CONDITIONAL([BUILD_CHMEM], [test "x$build_chmem" = xyes])
1562
1563 UL_BUILD_INIT([ipcmk], [yes])
1564 AM_CONDITIONAL([BUILD_IPCMK], [test "x$build_ipcmk" = xyes])
1565
1566
1567 AC_ARG_ENABLE([ipcrm],
1568 AS_HELP_STRING([--disable-ipcrm], [do not build ipcrm]),
1569 [], [UL_DEFAULT_ENABLE([ipcrm], [yes])]
1570 )
1571 UL_BUILD_INIT([ipcrm])
1572 AM_CONDITIONAL([BUILD_IPCRM], [test "x$build_ipcrm" = xyes])
1573
1574 AC_ARG_ENABLE([ipcs],
1575 AS_HELP_STRING([--disable-ipcs], [do not build ipcs]),
1576 [], [UL_DEFAULT_ENABLE([ipcs], [yes])]
1577 )
1578 UL_BUILD_INIT([ipcs])
1579 AM_CONDITIONAL([BUILD_IPCS], [test "x$build_ipcs" = xyes])
1580
1581 UL_BUILD_INIT([lsipc], [check])
1582 UL_REQUIRES_LINUX([lsipc])
1583 UL_REQUIRES_BUILD([lsipc], [libsmartcols])
1584 AM_CONDITIONAL([BUILD_LSIPC], [test "x$build_lsipc" = xyes])
1585
1586 UL_BUILD_INIT([lsns], [check])
1587 UL_REQUIRES_LINUX([lsns])
1588 UL_REQUIRES_BUILD([lsns], [libsmartcols])
1589 AM_CONDITIONAL([BUILD_LSNS], [test "x$build_lsns" = xyes])
1590
1591 UL_BUILD_INIT([renice], [yes])
1592 AM_CONDITIONAL([BUILD_RENICE], [test "x$build_renice" = xyes])
1593
1594 UL_BUILD_INIT([setsid], [yes])
1595 AM_CONDITIONAL([BUILD_SETSID], [test "x$build_setsid" = xyes])
1596
1597 UL_BUILD_INIT([readprofile], [check])
1598 UL_REQUIRES_LINUX([readprofile])
1599 AM_CONDITIONAL([BUILD_READPROFILE], [test "x$build_readprofile" = xyes])
1600
1601 UL_BUILD_INIT([dmesg], [check])
1602 UL_REQUIRES_LINUX([dmesg])
1603 AM_CONDITIONAL([BUILD_DMESG], [test "x$build_dmesg" = xyes])
1604
1605 UL_BUILD_INIT([ctrlaltdel], [check])
1606 UL_REQUIRES_LINUX([ctrlaltdel])
1607 dnl we assume reboot() to be the 1-argument variant, because even considering
1608 dnl widely used alternative C libraries like uclibc, dietlibc and musl,
1609 dnl reboot() with multiple arguments is yet only found in glibc versions
1610 dnl earlier than 2.x.
1611 UL_REQUIRES_HAVE([ctrlaltdel], [reboot], [reboot function])
1612 AM_CONDITIONAL([BUILD_CTRLALTDEL], [test "x$build_ctrlaltdel" = xyes])
1613
1614 UL_BUILD_INIT([fincore], [check])
1615 UL_REQUIRES_LINUX([fincore])
1616 UL_REQUIRES_BUILD([fincore], [libsmartcols])
1617 AM_CONDITIONAL([BUILD_FINCORE], [test "x$build_fincore" = xyes])
1618
1619 UL_BUILD_INIT([fsfreeze], [check])
1620 UL_REQUIRES_LINUX([fsfreeze])
1621 AM_CONDITIONAL([BUILD_FSFREEZE], [test "x$build_fsfreeze" = xyes])
1622
1623 UL_BUILD_INIT([blkdiscard], [check])
1624 UL_REQUIRES_LINUX([blkdiscard])
1625 AM_CONDITIONAL([BUILD_BLKDISCARD], [test "x$build_blkdiscard" = xyes])
1626
1627 UL_BUILD_INIT([blkzone], [check])
1628 UL_REQUIRES_LINUX([blkzone])
1629 UL_REQUIRES_HAVE([blkzone], [linux_blkzoned_h], [linux/blkzoned.h header])
1630 AM_CONDITIONAL([BUILD_BLKZONE], [test "x$build_blkzone" = xyes])
1631
1632 UL_BUILD_INIT([ldattach], [check])
1633 UL_REQUIRES_LINUX([ldattach])
1634 AM_CONDITIONAL([BUILD_LDATTACH], [test "x$build_ldattach" = xyes])
1635
1636 UL_BUILD_INIT([rtcwake], [check])
1637 UL_REQUIRES_LINUX([rtcwake])
1638 AM_CONDITIONAL([BUILD_RTCWAKE], [test "x$build_rtcwake" = xyes])
1639
1640 UL_BUILD_INIT([setarch], [check])
1641 UL_REQUIRES_LINUX([setarch])
1642 AM_CONDITIONAL([BUILD_SETARCH], [test "x$build_setarch" = xyes])
1643
1644 UL_BUILD_INIT([script], [check])
1645 UL_REQUIRES_HAVE([script], [sys_signalfd_h], [sys/signalfd.h header])
1646 AM_CONDITIONAL([BUILD_SCRIPT], [test "x$build_script" = xyes])
1647
1648 UL_BUILD_INIT([scriptreplay], [yes])
1649 AM_CONDITIONAL([BUILD_SCRIPTREPLAY], [test "x$build_scriptreplay" = xyes])
1650
1651 UL_BUILD_INIT([col], [yes])
1652 AM_CONDITIONAL([BUILD_COL], [test "x$build_col" = xyes])
1653
1654 UL_BUILD_INIT([colcrt], [yes])
1655 AM_CONDITIONAL([BUILD_COLCRT], [test "x$build_colcrt" = xyes])
1656
1657 UL_BUILD_INIT([colrm], [yes])
1658 AM_CONDITIONAL([BUILD_COLRM], [test "x$build_colrm" = xyes])
1659
1660 UL_BUILD_INIT([column], [check])
1661 UL_REQUIRES_BUILD([column], [libsmartcols])
1662 AM_CONDITIONAL([BUILD_COLUMN], [test "x$build_column" = xyes])
1663
1664 UL_BUILD_INIT([hexdump], [yes])
1665 AM_CONDITIONAL([BUILD_HEXDUMP], [test "x$build_hexdump" = xyes])
1666
1667 UL_BUILD_INIT([rev], [yes])
1668 AM_CONDITIONAL([BUILD_REV], [test "x$build_rev" = xyes])
1669
1670
1671 AC_ARG_ENABLE([tunelp],
1672 AS_HELP_STRING([--enable-tunelp], [build tunelp]),
1673 [], [UL_DEFAULT_ENABLE([tunelp], [no])]
1674 )
1675 UL_BUILD_INIT([tunelp])
1676 UL_REQUIRES_LINUX([tunelp])
1677 AM_CONDITIONAL([BUILD_TUNELP], [test "x$build_tunelp" = xyes])
1678
1679
1680 AC_ARG_ENABLE([kill],
1681 AS_HELP_STRING([--disable-kill], [do not build kill]),
1682 [], [UL_DEFAULT_ENABLE([kill], [check])]
1683 )
1684 UL_BUILD_INIT([kill])
1685 UL_REQUIRES_LINUX([kill])
1686 AM_CONDITIONAL([BUILD_KILL], [test "x$build_kill" = xyes])
1687
1688
1689 AC_ARG_ENABLE([last],
1690 AS_HELP_STRING([--disable-last], [do not build last]),
1691 [], [UL_DEFAULT_ENABLE([last], [check])]
1692 )
1693 UL_BUILD_INIT([last])
1694 UL_REQUIRES_HAVE([last], [utmpx_h], [utmpx.h header])
1695 UL_REQUIRES_HAVE([last], [gnu_utmpx], [GNU utmpx fucntions])
1696 AM_CONDITIONAL([BUILD_LAST], [test "x$build_last" = xyes])
1697
1698
1699 AC_ARG_ENABLE([utmpdump],
1700 AS_HELP_STRING([--disable-utmpdump], [do not build utmpdump]),
1701 [], [UL_DEFAULT_ENABLE([utmpdump], [check])]
1702 )
1703 UL_BUILD_INIT([utmpdump])
1704 UL_REQUIRES_HAVE([utmpdump], [utmpx_h], [utmpx.h header])
1705 UL_REQUIRES_HAVE([utmpdump], [gnu_utmpx], [GNU utmpx fucntions])
1706 AM_CONDITIONAL([BUILD_UTMPDUMP], [test "x$build_utmpdump" = xyes])
1707
1708
1709 AC_ARG_ENABLE([line],
1710 AS_HELP_STRING([--enable-line], [build line]),
1711 [], [UL_DEFAULT_ENABLE([line], [no])]
1712 )
1713 UL_BUILD_INIT([line])
1714 AM_CONDITIONAL([BUILD_LINE], [test "x$build_line" = xyes])
1715
1716
1717 AC_ARG_ENABLE([mesg],
1718 AS_HELP_STRING([--disable-mesg], [do not build mesg]),
1719 [], [UL_DEFAULT_ENABLE([mesg], [yes])]
1720 )
1721 UL_BUILD_INIT([mesg])
1722 AM_CONDITIONAL([BUILD_MESG], [test "x$build_mesg" = xyes])
1723
1724
1725 AC_ARG_ENABLE([raw],
1726 AS_HELP_STRING([--disable-raw], [do not build raw]),
1727 [], [UL_DEFAULT_ENABLE([raw], [check])]
1728 )
1729 UL_BUILD_INIT([raw])
1730 UL_REQUIRES_LINUX([raw])
1731 UL_REQUIRES_HAVE([raw], [linux_raw_h], [raw.h header file])
1732 AM_CONDITIONAL([BUILD_RAW], [test "x$build_raw" = xyes])
1733
1734
1735 AC_ARG_ENABLE([rename],
1736 AS_HELP_STRING([--disable-rename], [do not build rename]),
1737 [], [UL_DEFAULT_ENABLE([rename], [yes])]
1738 )
1739 UL_BUILD_INIT([rename])
1740 AM_CONDITIONAL([BUILD_RENAME], [test "x$build_rename" = xyes])
1741
1742
1743 AC_ARG_ENABLE([reset],
1744 AS_HELP_STRING([--enable-reset], [build reset]),
1745 [], [UL_DEFAULT_ENABLE([reset], [no])]
1746 )
1747 UL_BUILD_INIT([reset])
1748 AM_CONDITIONAL([BUILD_RESET], [test "x$build_reset" = xyes])
1749
1750
1751 AC_ARG_ENABLE([vipw],
1752 AS_HELP_STRING([--enable-vipw], [build vipw]),
1753 [], [UL_DEFAULT_ENABLE([vipw], [no])]
1754 )
1755 UL_BUILD_INIT([vipw])
1756 UL_REQUIRES_HAVE([vipw], [shadow_h], [shadow.h header])
1757 AM_CONDITIONAL([BUILD_VIPW], [test "x$build_vipw" = xyes])
1758
1759
1760 AC_ARG_ENABLE([newgrp],
1761 AS_HELP_STRING([--enable-newgrp], [build newgrp]),
1762 [], [UL_DEFAULT_ENABLE([newgrp], [no])]
1763 )
1764 UL_BUILD_INIT([newgrp])
1765 AM_CONDITIONAL([BUILD_NEWGRP], [test "x$build_newgrp" = xyes])
1766
1767
1768 AC_ARG_WITH([user], AS_HELP_STRING([--without-user], [compile without libuser (remote chsh)]),
1769 [], [with_user=check]
1770 )
1771 have_user=no
1772 AS_IF([test "x$with_user" != xno], [
1773 PKG_CHECK_MODULES(LIBUSER,[libuser >= 0.58], [have_user=yes], [have_user=no])
1774 AS_CASE([$with_user:$have_user],
1775 [yes:no],
1776 [AC_MSG_ERROR([user selected but libuser not found])],
1777 [*:yes],
1778 [AC_DEFINE([HAVE_LIBUSER], [1], [Define if libuser is available])]
1779 )
1780 # temporary solution, libuser has stupid .pc where are exported all
1781 # private dependencies to Requires: instead of Requires.private:
1782 AS_IF([test "x$have_user" = xyes], [
1783 LIBUSER_LIBS=-luser
1784 ])
1785 ])
1786 AM_CONDITIONAL([HAVE_USER], [test "x$have_user" = xyes])
1787
1788 AC_ARG_ENABLE([chfn-chsh-password],
1789 AS_HELP_STRING([--disable-chfn-chsh-password], [do not require the user to enter the password in chfn and chsh]),
1790 [], [enable_chfn_chsh_password=yes]
1791 )
1792
1793 AC_ARG_ENABLE([chfn-chsh],
1794 AS_HELP_STRING([--enable-chfn-chsh], [build chfn and chsh]),
1795 [], [UL_DEFAULT_ENABLE([chfn_chsh], [check])]
1796 )
1797 UL_BUILD_INIT([chfn_chsh])
1798 UL_REQUIRES_HAVE([chfn_chsh], [shadow_h], [shadow.h header])
1799
1800 AS_IF([test "x$enable_chfn_chsh_password" = xyes -o "x$have_user" = xyes], [
1801 UL_REQUIRES_HAVE([chfn_chsh], [security_pam_appl_h], [PAM header file])
1802 AC_DEFINE([CHFN_CHSH_PASSWORD], [1], [Should chfn and chsh require the user to enter the password?])
1803 ])
1804 AM_CONDITIONAL([BUILD_CHFN_CHSH], [test "x$build_chfn_chsh" = xyes])
1805 AM_CONDITIONAL([CHFN_CHSH_PASSWORD], [test "x$enable_chfn_chsh_password" = xyes])
1806
1807 AC_ARG_ENABLE([chsh-only-listed],
1808 AS_HELP_STRING([--disable-chsh-only-listed], [chsh: allow shells not in /etc/shells]),
1809 [], enable_chsh_only_listed=yes
1810 )
1811
1812 AS_IF([test "x$enable_chsh_only_listed" = xyes], [
1813 AC_DEFINE([ONLY_LISTED_SHELLS], [1], [Should chsh allow only shells in /etc/shells?])
1814 ])
1815
1816
1817 AC_ARG_ENABLE([login],
1818 AS_HELP_STRING([--disable-login], [do not build login]),
1819 [], [UL_DEFAULT_ENABLE([login], [check])]
1820 )
1821 UL_BUILD_INIT([login])
1822 UL_REQUIRES_HAVE([login], [security_pam_appl_h], [PAM header file])
1823 UL_REQUIRES_HAVE([login], [security_pam_misc_h, security_openpam_h], [PAM conversation functions])
1824 UL_REQUIRES_HAVE([login], [utmpx_h], [utmpx.h header])
1825 UL_REQUIRES_HAVE([login], [gnu_utmpx], [GNU utmpx fucntions])
1826 AM_CONDITIONAL([BUILD_LOGIN], [test "x$build_login" = xyes])
1827
1828 AC_ARG_ENABLE([login-chown-vcs],
1829 AS_HELP_STRING([--enable-login-chown-vcs], [let login chown /dev/vcsN]),
1830 [], [enable_login_chown_vcs=no]
1831 )
1832
1833 AS_IF([test "x$enable_login_chown_vcs" = xyes], [
1834 AC_DEFINE([LOGIN_CHOWN_VCS], [1], [Should login chown /dev/vcsN?])
1835 ])
1836
1837 AC_ARG_ENABLE([login-stat-mail],
1838 AS_HELP_STRING([--enable-login-stat-mail], [let login stat() the mailbox]),
1839 [], [enable_login_stat_mail=no]
1840 )
1841
1842 AS_IF([test "x$enable_login_stat_mail" = xyes], [
1843 AC_DEFINE([LOGIN_STAT_MAIL], [1], [Should login stat() the mailbox?])
1844 ])
1845
1846
1847 AC_ARG_ENABLE([nologin],
1848 AS_HELP_STRING([--disable-nologin], [do not build nologin]),
1849 [], [UL_DEFAULT_ENABLE([nologin], [yes])]
1850 )
1851 UL_BUILD_INIT([nologin])
1852 AM_CONDITIONAL([BUILD_NOLOGIN], [test "x$build_nologin" = xyes])
1853
1854
1855 AC_ARG_ENABLE([sulogin],
1856 AS_HELP_STRING([--disable-sulogin], [do not build sulogin]),
1857 [], [UL_DEFAULT_ENABLE([sulogin], [check])]
1858 )
1859 UL_BUILD_INIT([sulogin])
1860 UL_REQUIRES_HAVE([sulogin], [shadow_h], [shadow.h header])
1861 AM_CONDITIONAL([BUILD_SULOGIN], [test "x$build_sulogin" = xyes])
1862
1863
1864 AC_ARG_ENABLE([su],
1865 AS_HELP_STRING([--disable-su], [do not build su]),
1866 [], [UL_DEFAULT_ENABLE([su], [check])]
1867 )
1868 UL_BUILD_INIT([su])
1869 UL_REQUIRES_HAVE([su], [security_pam_appl_h], [PAM header file])
1870 UL_REQUIRES_HAVE([su], [utmpx_h], [utmpx.h header])
1871 UL_REQUIRES_HAVE([su], [gnu_utmpx], [GNU utmpx fucntions])
1872 AM_CONDITIONAL([BUILD_SU], [test "x$build_su" = xyes])
1873
1874
1875 AC_ARG_ENABLE([runuser],
1876 AS_HELP_STRING([--disable-runuser], [do not build runuser]),
1877 [], [UL_DEFAULT_ENABLE([runuser], [check])]
1878 )
1879 UL_BUILD_INIT([runuser])
1880 UL_REQUIRES_HAVE([runuser], [security_pam_appl_h], [PAM header file])
1881 UL_REQUIRES_HAVE([runuser], [utmpx_h], [utmpx.h header])
1882 UL_REQUIRES_HAVE([runuser], [gnu_utmpx], [GNU utmpx fucntions])
1883 AM_CONDITIONAL([BUILD_RUNUSER], [test "x$build_runuser" = xyes])
1884
1885
1886 AC_ARG_ENABLE([ul],
1887 AS_HELP_STRING([--disable-ul], [do not build ul]),
1888 [], [UL_DEFAULT_ENABLE([ul], [check])]
1889 )
1890 UL_BUILD_INIT([ul])
1891 UL_REQUIRES_HAVE([ul], [ncursesw, ncurses], [ncursesw or ncurses libraries])
1892 AM_CONDITIONAL([BUILD_UL], [test "x$build_ul" = xyes])
1893
1894
1895 AC_ARG_ENABLE([more],
1896 AS_HELP_STRING([--disable-more], [do not build more]),
1897 [], [UL_DEFAULT_ENABLE([more], [check])]
1898 )
1899 UL_BUILD_INIT([more])
1900 UL_REQUIRES_HAVE([more], [ncursesw, ncurses], [ncursesw or ncurses libraries])
1901 AM_CONDITIONAL([BUILD_MORE], [test "x$build_more" = xyes])
1902
1903
1904 AC_ARG_ENABLE([pg],
1905 AS_HELP_STRING([--enable-pg], [build pg]),
1906 [], [UL_DEFAULT_ENABLE([pg], [no])]
1907 )
1908 UL_BUILD_INIT([pg])
1909 UL_REQUIRES_HAVE([pg], [ncursesw, ncurses], [ncursesw or ncurses library])
1910 AM_CONDITIONAL([BUILD_PG], [test "x$build_pg" = xyes])
1911
1912
1913 AC_ARG_ENABLE([setterm],
1914 AS_HELP_STRING([--disable-setterm], [do not build setterm]),
1915 [], [UL_DEFAULT_ENABLE([setterm], [check])]
1916 )
1917 UL_BUILD_INIT([setterm])
1918 UL_REQUIRES_LINUX([setterm])
1919 UL_REQUIRES_HAVE([setterm], [ncursesw, ncurses], [ncursesw or ncurses library])
1920 AM_CONDITIONAL([BUILD_SETTERM], [test "x$build_setterm" = xyes])
1921
1922 # build_schedutils= is just configure-only variable to control
1923 # ionice, taskset and chrt
1924 AC_ARG_ENABLE([schedutils],
1925 AS_HELP_STRING([--disable-schedutils], [do not build chrt, ionice, taskset]),
1926 [], [UL_DEFAULT_ENABLE([schedutils], [check])]
1927 )
1928
1929
1930 UL_ENABLE_ALIAS([ionice], [schedutils])
1931 UL_BUILD_INIT([ionice])
1932 UL_REQUIRES_SYSCALL_CHECK([ionice],
1933 [UL_CHECK_SYSCALL([ioprio_set],
1934 [alpha], [442],
1935 [i*86], [289],
1936 [ia64*], [1274],
1937 [powerpc*], [273],
1938 [s390*], [282],
1939 [sparc*], [196],
1940 [sh*], [288],
1941 [x86_64*], [251])],
1942 [ioprio_set])
1943
1944 UL_REQUIRES_SYSCALL_CHECK([ionice],
1945 [UL_CHECK_SYSCALL([ioprio_get],
1946 [alpha], [443],
1947 [i*86], [290],
1948 [ia64*], [1275],
1949 [powerpc*], [274],
1950 [s390*], [283],
1951 [sparc*], [218],
1952 [sh*], [289],
1953 [x86_64*], [252])],
1954 [ioprio_get])
1955
1956 AM_CONDITIONAL([BUILD_IONICE], [test "x$build_ionice" = xyes])
1957
1958
1959 UL_ENABLE_ALIAS([taskset], [schedutils])
1960 UL_BUILD_INIT([taskset])
1961 UL_REQUIRES_HAVE([taskset], [cpu_set_t], [cpu_set_t type])
1962 UL_REQUIRES_SYSCALL_CHECK([taskset],
1963 [UL_CHECK_SYSCALL([sched_getaffinity])],
1964 [sched_getaffinity])
1965 AM_CONDITIONAL([BUILD_TASKSET], [test "x$build_taskset" = xyes])
1966
1967
1968 have_schedsetter=no
1969 AS_IF([test "x$ac_cv_func_sched_setscheduler" = xyes], [have_schedsetter=yes],
1970 [test "x$ac_cv_func_sched_setattr" = xyes], [have_schedsetter=yes])
1971
1972 UL_ENABLE_ALIAS([chrt], [schedutils])
1973 UL_BUILD_INIT([chrt])
1974 UL_REQUIRES_HAVE([chrt], [schedsetter], [sched_set functions])
1975 AM_CONDITIONAL([BUILD_CHRT], [test "x$build_chrt" = xyes])
1976
1977 AS_IF([test "x$build_chrt" = xyes], [
1978 UL_CHECK_SYSCALL([sched_setattr])
1979 ])
1980
1981
1982 AC_ARG_ENABLE([wall],
1983 AS_HELP_STRING([--disable-wall], [do not build wall]),
1984 [], [UL_DEFAULT_ENABLE([wall], [check])]
1985 )
1986 UL_BUILD_INIT([wall])
1987 UL_REQUIRES_HAVE([wall], [utmpx_h], [utmpx.h header])
1988 AM_CONDITIONAL([BUILD_WALL], [test "x$build_wall" = xyes])
1989
1990
1991 AC_ARG_ENABLE([write],
1992 AS_HELP_STRING([--enable-write], [build write]),
1993 [], [UL_DEFAULT_ENABLE([write], [no])]
1994 )
1995 UL_BUILD_INIT([write])
1996 UL_REQUIRES_HAVE([write], [utmpx_h], [utmpx.h header])
1997 UL_REQUIRES_HAVE([write], [gnu_utmpx], [GNU utmpx fucntions])
1998 AM_CONDITIONAL([BUILD_WRITE], [test "x$build_write" = xyes])
1999
2000
2001 AC_ARG_WITH([btrfs],
2002 AS_HELP_STRING([--with-btrfs], [build with support for btrfs]),
2003 [], [with_btrfs=check]
2004 )
2005 have_btrfs=no
2006 AS_IF([test "x$with_btrfs" != xno], [
2007 AS_CASE([$with_btrfs:$have_linux_btrfs_h],
2008 [yes:no],
2009 [AC_MSG_ERROR([btrfs selected but linux/btrfs.h not found])],
2010 [check:no],
2011 [AC_MSG_WARN([linux/btrfs.h not found, do not build with btrfs support])],
2012 [*:yes],
2013 [have_btrfs=yes
2014 AC_DEFINE([HAVE_BTRFS_SUPPORT], [1], [Define if btrfs stuff is available])]
2015 )
2016 ])
2017 AM_CONDITIONAL([HAVE_BTRFS], [test "x$have_btrfs" = xyes])
2018
2019
2020 AC_ARG_WITH([systemd],
2021 AS_HELP_STRING([--with-systemd], [build with support for systemd]),
2022 [], [with_systemd=check]
2023 )
2024
2025 have_systemd=no
2026 AS_IF([test "x$with_systemd" != xno], [
2027 # new version -- all libsystemd-* libs merged into libsystemd
2028 PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [have_systemd=yes], [have_systemd=no])
2029 # old versions
2030 AS_IF([test "x$have_systemd" != "xyes"], [
2031 PKG_CHECK_MODULES([SYSTEMD_DAEMON], [libsystemd-daemon],
2032 [have_systemd_daemon=yes], [have_systemd_daemon=no])
2033 PKG_CHECK_MODULES([SYSTEMD_JOURNAL], [libsystemd-journal],
2034 [have_systemd_journal=yes], [have_systemd_journal=no])
2035 AS_IF([test "x$have_systemd_daemon" = "xyes" -a "x$have_systemd_journal" = "xyes" ],[
2036 have_systemd=yes])
2037 ])
2038 AS_CASE([$with_systemd:$have_systemd],
2039 [yes:no],
2040 [AC_MSG_ERROR([systemd expected but libsystemd not found])],
2041 [*:yes],
2042 AC_DEFINE([HAVE_LIBSYSTEMD], [1], [Define if libsystemd is available])
2043 )
2044 ])
2045 AM_CONDITIONAL([HAVE_SYSTEMD], [test "x$have_systemd" = xyes])
2046
2047
2048 AC_ARG_WITH([systemdsystemunitdir],
2049 AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [directory for systemd service files]),
2050 [], [with_systemdsystemunitdir=`$PKG_CONFIG --variable=systemdsystemunitdir systemd`])
2051
2052 AS_IF([test "x$with_systemdsystemunitdir" != "xno"], [
2053 AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
2054 ])
2055
2056
2057 AC_ARG_WITH([smack],
2058 AS_HELP_STRING([--with-smack], [build with SMACK support]),
2059 [], [with_smack=no]
2060 )
2061 AS_IF([test "x$with_smack" = xyes], [
2062 AC_DEFINE([HAVE_SMACK], [1], [Add SMACK support])
2063 ])
2064
2065
2066 AC_ARG_WITH([bashcompletiondir],
2067 AS_HELP_STRING([--with-bashcompletiondir=DIR], [Bash completions directory]),
2068 [],
2069 [AS_IF([`$PKG_CONFIG --exists bash-completion`], [
2070 with_bashcompletiondir=`$PKG_CONFIG --variable=completionsdir bash-completion`
2071 ], [
2072 with_bashcompletiondir=${datadir}/bash-completion/completions
2073 ])
2074 ])
2075 AC_SUBST([bashcompletiondir], [$with_bashcompletiondir])
2076
2077 AC_ARG_ENABLE([bash-completion],
2078 AS_HELP_STRING([--disable-bash-completion], [do not install bash completion files]),
2079 [], [enable_bash_completion=yes]
2080 )
2081
2082 AM_CONDITIONAL([BUILD_BASH_COMPLETION], [test "x$enable_bash_completion" = xyes])
2083
2084
2085 AC_ARG_WITH([python],
2086 AS_HELP_STRING([--without-python], [do not build python bindings, use --with-python={2,3} to force version]),
2087 [], [with_python=check withval=check]
2088 )
2089
2090 have_python=no
2091 have_libpython=no
2092 AS_IF([test "x$with_python" != xno], [
2093 # We follow distributions default and look for PKG module name "python"
2094 # (minimal version is 2) but if major version is explicitly specified by
2095 # --with-python=2 or --with-python=3 then we look for PKG module "python2" or
2096 # "python3".
2097 AS_IF([test "x$withval" != xno -a "x$withval" != xyes -a "x$withval" != xcheck],
2098 [pymajor="$withval"; PYTHON=python${pymajor}], [pymajor="2"])
2099
2100 # check for python interpreter
2101 AM_PATH_PYTHON([$pymajor], [have_python=yes], [have_python=no])
2102 AS_CASE([$with_python:$have_python],
2103 [yes:no],
2104 [AC_MSG_ERROR([python selected but python interpreter not found])],
2105 [check:no],
2106 [AC_MSG_WARN([python interpreter not found, do not build python bindings])],
2107 [*:yes],
2108 # check for python development stuff
2109 [PKG_CHECK_MODULES([PYTHON], [python-$PYTHON_VERSION],
2110 [have_libpython=yes], [have_libpython=no])]
2111 )
2112 ])
2113
2114
2115 AC_ARG_ENABLE([pylibmount],
2116 AS_HELP_STRING([--disable-pylibmount], [do not build pylibmount]),
2117 [], [UL_DEFAULT_ENABLE([pylibmount], [check])]
2118 )
2119 UL_BUILD_INIT([pylibmount])
2120 UL_REQUIRES_HAVE([pylibmount], [libpython], [libpython])
2121 UL_REQUIRES_BUILD([pylibmount], [libmount])
2122 AM_CONDITIONAL([BUILD_PYLIBMOUNT], [test "x$build_pylibmount" = "xyes"])
2123
2124 # We need to introduce a verbatim dependency into the Makefile, without automake
2125 # trying to interpret it, so push it as a AM_SUBST_NOTMAKE variable.
2126 verbatim_pylibmount_dependency='
2127
2128 # pylibmountexec module must be installed after usrlib_exec libraries,
2129 # otherwise the libtool relink step will fail to find libmount.la and
2130 # will try -lmount which is possibly not available.
2131 install-pylibmountexecLTLIBRARIES: install-usrlib_execLTLIBRARIES
2132
2133 '
2134 AC_SUBST([verbatim_pylibmount_dependency])
2135 AM_SUBST_NOTMAKE([verbatim_pylibmount_dependency])
2136
2137 AC_ARG_ENABLE([pg-bell],
2138 AS_HELP_STRING([--disable-pg-bell], [let pg not ring the bell on invalid keys]),
2139 [], [enable_pg_bell=yes]
2140 )
2141
2142 AS_IF([test "x$enable_pg_bell" = xyes], [
2143 AC_DEFINE([PG_BELL], [1], [Should pg ring the bell on invalid keys?])
2144 ])
2145
2146
2147 AC_DEFUN([FS_PATHS_DEFAULT], [/sbin:/sbin/fs.d:/sbin/fs])
2148 AC_ARG_ENABLE([fs-paths-default],
2149 AS_HELP_STRING([--enable-fs-paths-default=paths], [default search path for fs helpers @<:@FS_PATHS_DEFAULT@:>@]),
2150 [AS_CASE([$enableval],
2151 [yes], [fs_paths_defaults="FS_PATHS_DEFAULT"],
2152 [no], [fs_paths_defaults=""],
2153 [fs_paths_defaults="$enableval"]
2154 )],
2155 [fs_paths_defaults="FS_PATHS_DEFAULT"]
2156 )
2157 AC_ARG_ENABLE([fs-paths-extra],
2158 AS_HELP_STRING([--enable-fs-paths-extra=paths], [additional search paths for fs helpers]),
2159 [AS_CASE([$enableval],
2160 [yes|no], [fs_paths_extra=""],
2161 [fs_paths_extra="$enableval"]
2162 )],
2163 [fs_paths_extra=""]
2164 )
2165 fs_paths="$fs_paths_defaults"
2166 AS_IF([test "x$fs_paths_extra" != "x"], [
2167 AS_IF([test "x$fs_paths" != "x"], [
2168 fs_paths="${fs_paths}:"
2169 ])
2170 fs_paths="${fs_paths}${fs_paths_extra}"
2171 ])
2172 AC_DEFINE_UNQUOTED([FS_SEARCH_PATH], "$fs_paths", [search path for fs helpers])
2173
2174
2175 AC_ARG_ENABLE([use-tty-group],
2176 AS_HELP_STRING([--disable-use-tty-group], [do not install wall and write setgid tty]),
2177 [], [enable_use_tty_group=yes]
2178 )
2179 AM_CONDITIONAL([USE_TTY_GROUP], [test "x$enable_use_tty_group" = xyes])
2180
2181 AS_IF([test "x$enable_use_tty_group" = xyes], [
2182 AC_DEFINE([USE_TTY_GROUP], [1], [Should wall and write be installed setgid tty?])
2183 ])
2184
2185
2186 AC_ARG_ENABLE([sulogin-emergency-mount],
2187 AS_HELP_STRING([--enable-sulogin-emergency-mount],
2188 [use emergency mount of /dev and /proc for sulogin]),
2189 [], [enable_sulogin_emergency_mount=no]
2190 )
2191
2192 AS_IF([test "x$enable_sulogin_emergency_mount" = xyes], [
2193 AC_DEFINE([USE_SULOGIN_EMERGENCY_MOUNT], [1],
2194 [Should sulogin use a emergency mount of /dev and /proc?])
2195 ])
2196
2197
2198 AC_ARG_ENABLE([usrdir-path],
2199 AS_HELP_STRING([--enable-usrdir-path], [use only /usr paths in PATH env. variable (recommended on systems with /bin -> /usr/bin symlinks)]),
2200 [], [enable_usrdir_path=no]
2201 )
2202
2203 AS_IF([test "x$enable_usrdir_path" == xyes], [
2204 AC_DEFINE([USE_USRDIR_PATHS_ONLY], [1], [Define to 1 to remove /bin and /sbin from PATH env.variable])
2205 ])
2206
2207
2208 AC_ARG_ENABLE([makeinstall-chown],
2209 AS_HELP_STRING([--disable-makeinstall-chown], [do not do chown-like operations during "make install"]),
2210 [], [enable_makeinstall_chown=yes]
2211 )
2212 AM_CONDITIONAL([MAKEINSTALL_DO_CHOWN], [test "x$enable_makeinstall_chown" = xyes])
2213
2214
2215 AC_ARG_ENABLE([makeinstall-setuid],
2216 AS_HELP_STRING([--disable-makeinstall-setuid], [do not do setuid chmod operations during "make install"]),
2217 [], [enable_makeinstall_setuid=yes]
2218 )
2219 AM_CONDITIONAL([MAKEINSTALL_DO_SETUID], [test "x$enable_makeinstall_setuid" = xyes])
2220
2221
2222 AC_ARG_ENABLE([colors-default],
2223 AS_HELP_STRING([--disable-colors-default], [do not colorize output from utils by default]),
2224 [], [enable_colors_default=yes]
2225 )
2226 AS_IF([test "x$enable_colors_default" = xyes], [
2227 AC_DEFINE([USE_COLORS_BY_DEFAULT], [1], [Enables colorized output from utils by default])
2228 ])
2229
2230
2231 AC_ARG_VAR([SUID_CFLAGS],
2232 [CFLAGS used for binaries which are usually with the suid bit])
2233 AC_ARG_VAR([SUID_LDFLAGS],
2234 [LDFLAGS used for binaries which are usually with the suid bit])
2235
2236 AC_ARG_VAR([DAEMON_CFLAGS],
2237 [CFLAGS used for binaries which are usually executed as daemons])
2238 AC_ARG_VAR([DAEMON_LDFLAGS],
2239 [LDFLAGS used for binaries which are usually executed as daemons])
2240
2241 AC_ARG_VAR([SOLIB_CFLAGS],
2242 [CFLAGS used for shared libraries])
2243 AC_ARG_VAR([SOLIB_LDFLAGS],
2244 [LDFLAGS used for shared libraries])
2245
2246 AC_ARG_VAR([ADJTIME_PATH],
2247 [Path to hwclock adjtime file, default /etc/adjtime])
2248 AS_IF([test "x$ADJTIME_PATH" = x], [ADJTIME_PATH="/etc/adjtime"])
2249 AC_DEFINE_UNQUOTED([CONFIG_ADJTIME_PATH], "$ADJTIME_PATH", [Path to hwclock adjtime file])
2250
2251
2252 LIBS=""
2253
2254
2255 AC_CONFIG_HEADERS([config.h])
2256
2257 #
2258 # Don't use configure.ac to replace install paths! See Makefile PATHFILES for
2259 # more details.
2260 #
2261 AC_CONFIG_FILES([
2262 Makefile
2263 libblkid/docs/Makefile
2264 libblkid/docs/version.xml
2265 libblkid/src/blkid.h
2266 libfdisk/docs/Makefile
2267 libfdisk/docs/version.xml
2268 libfdisk/src/libfdisk.h
2269 libmount/docs/Makefile
2270 libmount/docs/version.xml
2271 libmount/src/libmount.h
2272 libsmartcols/docs/Makefile
2273 libsmartcols/docs/version.xml
2274 libsmartcols/src/libsmartcols.h
2275 po/Makefile.in
2276 ])
2277
2278 AC_OUTPUT
2279
2280 AC_MSG_RESULT([
2281 ${PACKAGE} ${VERSION}
2282
2283 prefix: ${prefix}
2284 exec prefix: ${exec_prefix}
2285
2286 localstatedir: ${localstatedir}
2287 bindir: ${bindir}
2288 sbindir: ${sbindir}
2289 libdir: ${libdir}
2290 includedir: ${includedir}
2291 usrbin_execdir: ${usrbin_execdir}
2292 usrsbin_execdir: ${usrsbin_execdir}
2293 usrlib_execdir: ${usrlib_execdir}
2294
2295 compiler: ${CC}
2296 cflags: ${CFLAGS}
2297 suid cflags: ${SUID_CFLAGS}
2298 ldflags: ${LDFLAGS}
2299 suid ldflags: ${SUID_LDFLAGS}
2300
2301 Python: ${PYTHON}
2302 Python version: ${PYTHON_VERSION}
2303 Python libs: ${pyexecdir}
2304
2305 Bash completions: ${with_bashcompletiondir}
2306 Systemd support: ${have_systemd}
2307 Btrfs support: ${have_btrfs}
2308 Wide-char support: ${build_widechar}
2309
2310 warnings:
2311
2312 ${WARN_CFLAGS}
2313
2314 Type 'make' or 'make <utilname>' to compile.
2315 ])