]> git.ipfire.org Git - thirdparty/util-linux.git/blob - configure.ac
build-sys: prefer ncurses-config rather than pkg-config
[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="23-May-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 ncurses.h],
807 [have_ncursesw_header=yes])
808 AC_CHECK_HEADERS([ncursesw/term.h 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],
834 [have_ncurses_header=yes])
835 AC_CHECK_HEADERS([ncurses/term.h term.h])
836 AS_IF([test "x$have_ncurses_header" = xno], [have_ncurses=no])
837 ])
838 AS_IF([test "x$have_ncurses" = xyes], [
839 CURSES_LIB_NAME="ncurses"
840 AC_DEFINE([HAVE_LIBNCURSES], [1], [Define if ncurses library available])
841 ])
842 ])
843 AS_CASE([$with_ncurses:$have_ncurses],
844 [yes:no], [AC_MSG_ERROR([ncurses selected, but library not found])])
845
846 AC_SUBST([NCURSES_CFLAGS])
847 AC_SUBST([NCURSES_LIBS])
848 AM_CONDITIONAL([HAVE_NCURSES], [test "x$have_ncursesw" = xyes -o "x$have_ncurses" = xyes])
849
850
851 AC_ARG_WITH([slang],
852 AS_HELP_STRING([--with-slang], [compile cfdisk with slang rather than ncurses]),
853 [], [with_slang=no]
854 )
855 have_slang=no
856 AS_IF([test "x$with_slang" = xyes], [
857 AC_CHECK_HEADERS([slang.h slang/slang.h])
858 AC_CHECK_HEADERS([slcurses.h slang/slcurses.h],
859 [have_slang=yes], [], [
860 #ifdef HAVE_SLANG_H
861 #include <slang.h>
862 #elif defined(HAVE_SLANG_SLANG_H)
863 #include <slang/slang.h>
864 #endif
865 ])
866 AS_IF([test "x$have_slang" = xno], [
867 AC_MSG_ERROR([slang selected but slcurses.h not found])],
868 [CURSES_LIB_NAME=slang
869 ])
870 ])
871 AM_CONDITIONAL([HAVE_SLANG], [test "x$have_slang" = xyes])
872
873
874 AS_IF([test "x$have_slang" = xyes -o "x$have_ncursesw" = xyes -o "x$have_ncurses" = xyes], [
875 AC_CHECK_LIB([$CURSES_LIB_NAME], use_default_colors, [
876 AC_DEFINE(HAVE_USE_DEFAULT_COLORS, 1,
877 [Define if curses library has the use_default_colors().])
878 ])
879 AC_CHECK_LIB([$CURSES_LIB_NAME], resizeterm, [
880 AC_DEFINE(HAVE_RESIZETERM, 1,
881 [Define if curses library has the resizeterm().])
882 ])
883 ])
884
885
886 AC_ARG_WITH([tinfo], AS_HELP_STRING([--without-tinfo], [compile without libtinfo]),
887 [], [with_tinfo=auto]
888 )
889 have_tinfo=no
890 AS_IF([test "x$with_tinfo" != xno], [
891 dnl Try pkg-config for libtinfo
892 PKG_CHECK_MODULES(TINFO, [tinfo], [
893 dnl pkg-config success
894 have_tinfo=yes
895 UL_PKG_STATIC([TINFO_LIBS_STATIC], [tinfo])], [
896
897 dnl If pkg-config failed, fall back to classic searching.
898 AC_CHECK_LIB([tinfo], [tgetent], [
899 have_tinfo=yes
900 TINFO_LIBS="-ltinfo"
901 TINFO_LIBS_STATIC="-ltinfo"
902 TINFO_CFLAGS=""])
903 ])
904 ])
905 AC_SUBST([TINFO_LIBS])
906 AC_SUBST([TINFO_LIBS_STATIC])
907 AC_SUBST([TINFO_CFLAGS])
908 AM_CONDITIONAL([HAVE_TINFO], [test "x$have_tinfo" = xyes])
909 AS_IF([test "x$have_tinfo" = xyes], [
910 AC_DEFINE(HAVE_LIBTINFO, 1, [Define if libtinfo available.])
911 ])
912
913
914 AC_ARG_WITH([readline],
915 AS_HELP_STRING([--with-readline], [compile with GNU Readline support]),
916 [], [with_readline=auto]
917 )
918
919 AS_IF([test "x$with_readline" = xno], [
920 AM_CONDITIONAL([HAVE_READLINE], [false])
921 ], [
922 UL_CHECK_LIB([readline], [readline])
923 AS_CASE([$with_readline:$have_readline],
924 [yes:no],
925 [AC_MSG_ERROR([readline selected but libreadline not found ])],
926 [*:yes],
927 [READLINE_LIBS="-lreadline"
928 READLINE_LIBS_STATIC="-lreadline $TINFO_LIBS_STATIC"]
929 )
930 ])
931 AC_SUBST([READLINE_LIBS])
932 AC_SUBST([READLINE_LIBS_STATIC])
933
934
935 AC_ARG_WITH([utempter],
936 AS_HELP_STRING([--with-utempter], [compile script(1) with libutempter]),
937 [], [with_utempter=no]
938 )
939
940 AS_IF([test "x$with_utempter" = xyes], [
941 UL_CHECK_LIB([utempter], [utempter_add_record])
942 AS_IF([test "x$have_utempter" = xno], [
943 AC_MSG_ERROR([utempter selected but libutempter not found])
944 ])
945 ], [
946 AM_CONDITIONAL([HAVE_UTEMPTER], [false])
947 ])
948
949
950 dnl
951 dnl libuuid
952 dnl
953 AC_ARG_ENABLE([libuuid],
954 AS_HELP_STRING([--disable-libuuid], [do not build libuuid and uuid utilities]),
955 [], [UL_DEFAULT_ENABLE([libuuid], [yes])]
956 )
957 UL_BUILD_INIT([libuuid])
958 AC_SUBST([LIBUUID_VERSION])
959 AC_SUBST([LIBUUID_VERSION_INFO])
960 AM_CONDITIONAL(BUILD_LIBUUID, test "x$build_libuuid" = xyes)
961
962 AC_ARG_ENABLE([libuuid-force-uuidd],
963 AS_HELP_STRING([--enable-libuuid-force-uuidd], [support uuidd even though the daemon is not built]),
964 [], [enable_libuuid_force_uuidd=no]
965 )
966
967 AS_IF([test "x$build_libuuid" = xyes], [
968 AC_DEFINE(HAVE_LIBUUID, 1, [Define to 1 if you have the -luuid.])
969 ])
970
971 dnl
972 dnl libblkid
973 dnl
974 AC_ARG_ENABLE([libblkid],
975 AS_HELP_STRING([--disable-libblkid], [do not build libblkid and many related utilities]),
976 [], [UL_DEFAULT_ENABLE([libblkid], [check])]
977 )
978 UL_BUILD_INIT([libblkid])
979 UL_REQUIRES_HAVE([libblkid], [openat], [openat functions])
980 AC_SUBST([LIBBLKID_DATE])
981 AC_SUBST([LIBBLKID_VERSION])
982 AC_SUBST([LIBBLKID_VERSION_INFO])
983 AC_DEFINE_UNQUOTED([LIBBLKID_VERSION], ["$LIBBLKID_VERSION"], [libblkid version string])
984 AC_DEFINE_UNQUOTED([LIBBLKID_DATE], ["$LIBBLKID_DATE"], [libblkid date string])
985 AS_IF([test "x$build_libblkid" = xyes], [
986 AC_DEFINE([HAVE_LIBBLKID], [1], [Define to 1 if you have the -lblkid.])
987 ])
988 AM_CONDITIONAL([BUILD_LIBBLKID], [test "x$build_libblkid" = xyes])
989 AM_CONDITIONAL([BUILD_LIBBLKID_TESTS], [test "x$build_libblkid" = xyes -a "x$enable_static" = xyes])
990
991 dnl
992 dnl libmount
993 dnl
994 AC_ARG_ENABLE([libmount],
995 AS_HELP_STRING([--disable-libmount], [do not build libmount]),
996 [], [UL_DEFAULT_ENABLE([libmount], [check])]
997 )
998 UL_BUILD_INIT([libmount])
999 UL_REQUIRES_BUILD([libmount], [libblkid])
1000 UL_REQUIRES_HAVE([libmount], [scanf_alloc_modifier], [scanf string alloc modifier])
1001 AM_CONDITIONAL([BUILD_LIBMOUNT], [test "x$build_libmount" = xyes])
1002 AM_CONDITIONAL([BUILD_LIBMOUNT_TESTS], [test "x$build_libmount" = xyes -a "x$enable_static" = xyes])
1003 AS_IF([test "x$build_libmount" = xyes], [
1004 AC_DEFINE(HAVE_LIBMOUNT, 1, [Define if libmount available.])
1005 ])
1006
1007 AC_SUBST([LIBMOUNT_VERSION])
1008 AC_SUBST([LIBMOUNT_MAJOR_VERSION], $PACKAGE_VERSION_MAJOR)
1009 AC_SUBST([LIBMOUNT_MINOR_VERSION], $PACKAGE_VERSION_MINOR)
1010 AC_SUBST([LIBMOUNT_PATCH_VERSION], $PACKAGE_VERSION_RELEASE)
1011 AC_SUBST([LIBMOUNT_VERSION_INFO])
1012 AC_DEFINE_UNQUOTED([LIBMOUNT_VERSION], ["$LIBMOUNT_VERSION"], [libmount version string])
1013
1014 AC_ARG_ENABLE([libmount-support-mtab],
1015 AS_HELP_STRING([--enable-libmount-support-mtab], [support /etc/mtab (default is use /proc/self/mountinfo)]),
1016 [], [enable_libmount_support_mtab=no]
1017 )
1018
1019 AS_IF([test "x$enable_libmount_support_mtab" == xyes], [
1020 AC_DEFINE([USE_LIBMOUNT_SUPPORT_MTAB], [1], [Define to 1 if want to support mtab.])
1021 ])
1022
1023
1024 dnl
1025 dnl libsmartcols
1026 dnl
1027 AC_ARG_ENABLE([libsmartcols],
1028 AS_HELP_STRING([--disable-libsmartcols], [do not build libsmartcols]),
1029 [], [UL_DEFAULT_ENABLE([libsmartcols], [yes])]
1030 )
1031 UL_BUILD_INIT([libsmartcols])
1032 AM_CONDITIONAL([BUILD_LIBSMARTCOLS], [test "x$build_libsmartcols" = xyes])
1033
1034 AC_SUBST([LIBSMARTCOLS_VERSION])
1035 AC_SUBST([LIBSMARTCOLS_VERSION_INFO])
1036 AC_DEFINE_UNQUOTED([LIBSMARTCOLS_VERSION], ["$LIBSMARTCOLS_VERSION"], [libsmartcols version string])
1037
1038
1039 dnl
1040 dnl libfdisk
1041 dnl
1042 AC_ARG_ENABLE([libfdisk],
1043 AS_HELP_STRING([--disable-libfdisk], [do not build libfdisk]),
1044 [], [UL_DEFAULT_ENABLE([libfdisk], [check])]
1045 )
1046 UL_BUILD_INIT([libfdisk])
1047 UL_REQUIRES_BUILD([libfdisk], [libuuid])
1048 AM_CONDITIONAL([BUILD_LIBFDISK], [test "x$build_libfdisk" = xyes])
1049 AM_CONDITIONAL([BUILD_LIBFDISK_TESTS], [test "x$build_libfdisk" = xyes -a "x$enable_static" = xyes])
1050
1051 AS_IF([test "x$build_libblkid" = xyes],
1052 [LIBFDISK_PC_REQUIRES="uuid blkid"],[LIBFDISK_PC_REQUIRES="uuid"])
1053 AC_SUBST([LIBFDISK_PC_REQUIRES])
1054
1055 AC_SUBST([LIBFDISK_VERSION])
1056 AC_SUBST([LIBFDISK_MAJOR_VERSION], $PACKAGE_VERSION_MAJOR)
1057 AC_SUBST([LIBFDISK_MINOR_VERSION], $PACKAGE_VERSION_MINOR)
1058 AC_SUBST([LIBFDISK_PATCH_VERSION], $PACKAGE_VERSION_RELEASE)
1059 AC_SUBST([LIBFDISK_VERSION_INFO])
1060 AC_DEFINE_UNQUOTED([LIBFDISK_VERSION], ["$LIBFDISK_VERSION"], [libfdisk version string])
1061
1062
1063 UL_BUILD_INIT([fdisk], [check])
1064 UL_REQUIRES_HAVE([fdisk], [openat], [openat functions])
1065 UL_REQUIRES_BUILD([fdisk], [libfdisk])
1066 UL_REQUIRES_BUILD([fdisk], [libsmartcols])
1067 AM_CONDITIONAL([BUILD_FDISK], [test "x$build_fdisk" = xyes])
1068
1069
1070 UL_BUILD_INIT([sfdisk], [check])
1071 UL_REQUIRES_HAVE([sfdisk], [openat], [openat functions])
1072 UL_REQUIRES_BUILD([sfdisk], [libfdisk])
1073 UL_REQUIRES_BUILD([sfdisk], [libsmartcols])
1074 AM_CONDITIONAL([BUILD_SFDISK], [test "x$build_sfdisk" = xyes])
1075
1076
1077 UL_BUILD_INIT([cfdisk], [check])
1078 UL_REQUIRES_BUILD([cfdisk], [libfdisk])
1079 UL_REQUIRES_BUILD([cfdisk], [libsmartcols])
1080 UL_REQUIRES_HAVE([cfdisk], [open_memstream], [open_memstream function])
1081 UL_REQUIRES_HAVE([cfdisk], [ncursesw,slang,ncurses], [ncursesw, ncurses or slang library])
1082 AM_CONDITIONAL([BUILD_CFDISK], [test "x$build_cfdisk" = xyes])
1083
1084
1085 AC_ARG_ENABLE([mount],
1086 AS_HELP_STRING([--disable-mount], [do not build mount(8) and umount(8)]),
1087 [], [UL_DEFAULT_ENABLE([mount], [check])]
1088 )
1089 UL_BUILD_INIT([mount])
1090 UL_REQUIRES_LINUX([mount])
1091 UL_REQUIRES_BUILD([mount], [libmount])
1092 AM_CONDITIONAL([BUILD_MOUNT], [test "x$build_mount" = xyes])
1093
1094
1095 AC_ARG_ENABLE([losetup],
1096 AS_HELP_STRING([--disable-losetup], [do not build losetup]),
1097 [], [UL_DEFAULT_ENABLE([losetup], [check])]
1098 )
1099 UL_BUILD_INIT([losetup])
1100 UL_REQUIRES_LINUX([losetup])
1101 UL_REQUIRES_BUILD([losetup], [libsmartcols])
1102 AM_CONDITIONAL([BUILD_LOSETUP], [test "x$build_losetup" = xyes])
1103
1104 AC_ARG_ENABLE([zramctl],
1105 AS_HELP_STRING([--disable-zramctl], [do not build zramctl]),
1106 [], [UL_DEFAULT_ENABLE([zramctl], [check])]
1107 )
1108 UL_BUILD_INIT([zramctl])
1109 UL_REQUIRES_LINUX([zramctl])
1110 UL_REQUIRES_BUILD([zramctl], [libsmartcols])
1111 AM_CONDITIONAL([BUILD_ZRAMCTL], [test "x$build_zramctl" = xyes])
1112
1113 AC_ARG_ENABLE([fsck],
1114 AS_HELP_STRING([--disable-fsck], [do not build fsck]),
1115 [], [UL_DEFAULT_ENABLE([fsck], [check])]
1116 )
1117 UL_BUILD_INIT([fsck])
1118 UL_REQUIRES_BUILD([fsck], [libmount])
1119 AM_CONDITIONAL([BUILD_FSCK], [test "x$build_fsck" = xyes])
1120
1121
1122 AC_ARG_ENABLE([partx],
1123 AS_HELP_STRING([--disable-partx], [do not build addpart, delpart, partx]),
1124 [], [UL_DEFAULT_ENABLE([partx], [check])]
1125 )
1126 UL_BUILD_INIT([partx])
1127 UL_REQUIRES_LINUX([partx])
1128 UL_REQUIRES_BUILD([partx], [libblkid])
1129 UL_REQUIRES_BUILD([partx], [libsmartcols])
1130 AM_CONDITIONAL([BUILD_PARTX], [test "x$build_partx" = xyes])
1131
1132
1133 AC_ARG_ENABLE([uuidd],
1134 AS_HELP_STRING([--disable-uuidd], [do not build the uuid daemon]),
1135 [], [UL_DEFAULT_ENABLE([uuidd], [check])]
1136 )
1137 UL_BUILD_INIT([uuidd])
1138 UL_REQUIRES_BUILD([uuidd], [libuuid])
1139 UL_REQUIRES_HAVE([uuidd], [timer], [timer_create function])
1140 UL_REQUIRES_HAVE([uuidd], [sys_signalfd_h], [sys/signalfd.h header])
1141 AS_IF([test "x$build_uuidd" = xyes || test "x$enable_libuuid_force_uuidd" == xyes ], [
1142 AC_DEFINE([HAVE_UUIDD], [1], [Define to 1 if you want to use uuid daemon.])
1143 ])
1144 AM_CONDITIONAL([BUILD_UUIDD], [test "x$build_uuidd" = xyes])
1145
1146
1147 UL_BUILD_INIT([uuidgen], [check])
1148 UL_REQUIRES_BUILD([uuidgen], [libuuid])
1149 AM_CONDITIONAL([BUILD_UUIDGEN], [test "x$build_uuidgen" = xyes])
1150
1151 UL_BUILD_INIT([blkid], [check])
1152 UL_REQUIRES_BUILD([blkid], [libblkid])
1153 AM_CONDITIONAL([BUILD_BLKID], [test "x$build_blkid" = xyes])
1154
1155 UL_BUILD_INIT([findfs], [check])
1156 UL_REQUIRES_BUILD([findfs], [libblkid])
1157 AM_CONDITIONAL([BUILD_FINDFS], [test "x$build_findfs" = xyes])
1158
1159 UL_BUILD_INIT([wipefs], [check])
1160 UL_REQUIRES_BUILD([wipefs], [libblkid])
1161 AM_CONDITIONAL([BUILD_WIPEFS], [test "x$build_wipefs" = xyes])
1162
1163 UL_BUILD_INIT([findmnt], [check])
1164 UL_REQUIRES_BUILD([findmnt], [libmount])
1165 UL_REQUIRES_BUILD([findmnt], [libblkid])
1166 UL_REQUIRES_BUILD([findmnt], [libsmartcols])
1167 AM_CONDITIONAL([BUILD_FINDMNT], [test "x$build_findmnt" = xyes])
1168
1169
1170 AC_ARG_ENABLE([mountpoint],
1171 AS_HELP_STRING([--disable-mountpoint], [do not build mountpoint]),
1172 [], [UL_DEFAULT_ENABLE([mountpoint], [check])]
1173 )
1174 UL_BUILD_INIT([mountpoint])
1175 UL_REQUIRES_BUILD([mountpoint], [libmount])
1176 AM_CONDITIONAL([BUILD_MOUNTPOINT], [test "x$build_mountpoint" = xyes])
1177
1178
1179 AC_ARG_ENABLE([fallocate],
1180 AS_HELP_STRING([--disable-fallocate], [do not build fallocate]),
1181 [], [UL_DEFAULT_ENABLE([fallocate], [check])]
1182 )
1183 UL_BUILD_INIT([fallocate])
1184 UL_REQUIRES_LINUX([fallocate])
1185 UL_REQUIRES_SYSCALL_CHECK([fallocate], [UL_CHECK_SYSCALL([fallocate])])
1186 AM_CONDITIONAL([BUILD_FALLOCATE], [test "x$build_fallocate" = xyes])
1187
1188 AS_IF([test "x$build_fallocate" = xyes], [
1189 dnl check for valid fallocate() function
1190 dnl with 32 bits glibc 2.10, fallocate() exists but not fallocate64()
1191 dnl when _FILE_OFFSET_BITS==64, fallocate() is redirect to fallocate64()
1192 dnl and program can't be linked.
1193 dnl AC_CHECK_FUNC can't catch such errors since it's redefining
1194 dnl function prototype.
1195 AC_MSG_CHECKING([for valid fallocate() function])
1196 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1197 #ifdef HAVE_UNISTD_H
1198 # include <unistd.h>
1199 #endif
1200 #ifdef HAVE_SYS_TYPES_H
1201 # include <sys/types.h>
1202 #endif
1203 #ifdef HAVE_LINUX_FALLOC_H
1204 # include <linux/falloc.h>
1205 #endif
1206 #ifdef HAVE_FCNTL_H
1207 # include <fcntl.h>
1208 #endif
1209 ]],[[
1210 long ret;
1211 ret = fallocate(0, FALLOC_FL_KEEP_SIZE, 0xfffffffful, 0xfffffffful);
1212 if (ret != 0) {
1213 return 1;
1214 }
1215 ]])],[
1216 AC_MSG_RESULT([yes])
1217 AC_DEFINE([HAVE_FALLOCATE], [1], [Have valid fallocate() function])],[
1218 AC_MSG_RESULT([no])])
1219 ])
1220
1221 AS_IF([test "x$build_fallocate" = xyes], [
1222 dnl check for valid posix_fallocate() function
1223 AC_MSG_CHECKING([for valid posix_fallocate() function])
1224 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1225 #ifdef HAVE_UNISTD_H
1226 # include <unistd.h>
1227 #endif
1228 #ifdef HAVE_SYS_TYPES_H
1229 # include <sys/types.h>
1230 #endif
1231 #ifdef HAVE_LINUX_FALLOC_H
1232 # include <linux/falloc.h>
1233 #endif
1234 #ifdef HAVE_FCNTL_H
1235 # include <fcntl.h>
1236 #endif
1237 ]],[[
1238 long ret;
1239 ret = posix_fallocate(0, 0xfffffffful, 0xfffffffful);
1240 if (ret != 0) {
1241 return 1;
1242 }
1243 ]])],[
1244 AC_MSG_RESULT([yes])
1245 AC_DEFINE([HAVE_POSIX_FALLOCATE], [1], [Have valid posix_fallocate() function])],[
1246 AC_MSG_RESULT([no])])
1247 ])
1248
1249
1250 AC_ARG_ENABLE([unshare],
1251 AS_HELP_STRING([--disable-unshare], [do not build unshare]),
1252 [], [UL_DEFAULT_ENABLE([unshare], [check])]
1253 )
1254 UL_BUILD_INIT([unshare])
1255 UL_REQUIRES_LINUX([unshare])
1256 UL_REQUIRES_SYSCALL_CHECK([unshare], [UL_CHECK_SYSCALL([unshare])])
1257 AM_CONDITIONAL([BUILD_UNSHARE], [test "x$build_unshare" = xyes])
1258 AC_CHECK_FUNCS([unshare])
1259
1260 AC_ARG_ENABLE([nsenter],
1261 AS_HELP_STRING([--disable-nsenter], [do not build nsenter]),
1262 [], [UL_DEFAULT_ENABLE([nsenter], [check])]
1263 )
1264 UL_BUILD_INIT([nsenter])
1265 UL_REQUIRES_LINUX([nsenter])
1266 UL_REQUIRES_SYSCALL_CHECK([nsenter], [UL_CHECK_SYSCALL([setns])], [setns])
1267 AM_CONDITIONAL([BUILD_NSENTER], [test "x$build_nsenter" = xyes])
1268 AC_CHECK_FUNCS([setns])
1269
1270
1271 AC_ARG_WITH([cap_ng],
1272 AS_HELP_STRING([--without-cap-ng], [compile without libcap-ng]),
1273 [], [with_cap_ng=auto]
1274 )
1275 AS_IF([test "x$with_cap_ng" = xno], [
1276 AM_CONDITIONAL([HAVE_CAP_NG], [false])
1277 have_cap_ng=no
1278 ],[
1279 UL_CHECK_LIB([cap-ng], [capng_apply], [cap_ng])
1280 ])
1281
1282
1283 AC_ARG_ENABLE([setpriv],
1284 AS_HELP_STRING([--disable-setpriv], [do not build setpriv]),
1285 [], [UL_DEFAULT_ENABLE([setpriv], [check])]
1286 )
1287 UL_BUILD_INIT([setpriv])
1288 UL_REQUIRES_LINUX([setpriv])
1289 UL_REQUIRES_HAVE([setpriv], [linux_securebits_h], [securebits.h header file])
1290 UL_REQUIRES_HAVE([setpriv], [cap_ng], [libcap-ng library])
1291 AM_CONDITIONAL([BUILD_SETPRIV], [test "x$build_setpriv" = xyes])
1292
1293
1294 AC_ARG_ENABLE([eject],
1295 AS_HELP_STRING([--disable-eject], [do not build eject]),
1296 [], [UL_DEFAULT_ENABLE([eject], [check])]
1297 )
1298 UL_BUILD_INIT([eject])
1299 UL_REQUIRES_LINUX([eject])
1300 UL_REQUIRES_BUILD([eject], [libmount])
1301 AM_CONDITIONAL([BUILD_EJECT], [test "x$build_eject" = xyes])
1302
1303
1304 AC_ARG_ENABLE([agetty],
1305 AS_HELP_STRING([--disable-agetty], [do not build agetty]),
1306 [], [UL_DEFAULT_ENABLE([agetty], [check])]
1307 )
1308 UL_BUILD_INIT([agetty])
1309 UL_REQUIRES_HAVE([agetty], [utmpx_h], [utmpx.h header])
1310 UL_REQUIRES_HAVE([agetty], [gnu_utmpx], [GNU utmpx fucntions])
1311 AM_CONDITIONAL([BUILD_AGETTY], [test "x$build_agetty" = xyes])
1312 AS_IF([test "x$have_futimens" = xyes -a "x$have_inotify_init1" = xyes ], [
1313 AC_DEFINE([AGETTY_RELOAD], [1], [Enable agetty --reload feature])
1314 ],[
1315 AC_MSG_WARN([futimens or inotify_init1 not found; agetty(8) will not provide ---reload functionality])
1316 ])
1317
1318
1319 AC_ARG_ENABLE([plymouth_support],
1320 AS_HELP_STRING([--disable-plymouth_support], [don not care about plymouth in sylogin(8) and agetty(8)]),
1321 [], [enable_plymouth_support=check]
1322 )
1323 UL_BUILD_INIT([plymouth_support])
1324 UL_REQUIRES_HAVE([plymouth_support], [tiocglcktrmios], [TIOCGLCKTRMIOS flag])
1325 UL_REQUIRES_HAVE([plymouth_support], [sock_cloexec], [SOCK_CLOEXEC flag])
1326 UL_REQUIRES_HAVE([plymouth_support], [sock_nonblock], [SOCK_NONBLOCK flag])
1327 UL_REQUIRES_HAVE([plymouth_support], [so_passcred], [SO_PASSCRED flag])
1328 AM_CONDITIONAL([USE_PLYMOUTH_SUPPORT], [test "x$build_plymouth_support" = xyes])
1329 AS_IF([test "x$build_plymouth_support" = xyes ], [
1330 AC_DEFINE([USE_PLYMOUTH_SUPPORT], [1], [Enable plymouth support feature for sulogin and aggety])
1331 ])
1332
1333
1334 AC_ARG_WITH([libz],
1335 AS_HELP_STRING([--without-libz], [compile without libz]),
1336 [], [with_libz=auto]
1337 )
1338 AS_IF([test "x$with_libz" = xno], [have_z=no], [
1339 AC_CHECK_LIB([z], [crc32], [have_z=yes], [have_z=no])
1340 ])
1341
1342
1343 AC_ARG_ENABLE([cramfs],
1344 AS_HELP_STRING([--disable-cramfs], [do not build fsck.cramfs, mkfs.cramfs]),
1345 [], [UL_DEFAULT_ENABLE([cramfs], [check])]
1346 )
1347 UL_BUILD_INIT([cramfs])
1348 UL_REQUIRES_HAVE([cramfs], [z], [z library])
1349 AM_CONDITIONAL([BUILD_CRAMFS], [test "x$build_cramfs" = xyes])
1350
1351
1352 AC_ARG_ENABLE([bfs],
1353 AS_HELP_STRING([--disable-bfs], [do not build mkfs.bfs]),
1354 [], [UL_DEFAULT_ENABLE([bfs], [yes])]
1355 )
1356 UL_BUILD_INIT([bfs])
1357 AM_CONDITIONAL([BUILD_BFS], [test "x$build_bfs" = xyes])
1358
1359
1360 AC_ARG_ENABLE([minix],
1361 AS_HELP_STRING([--disable-minix], [do not build fsck.minix, mkfs.minix]),
1362 [], [UL_DEFAULT_ENABLE([minix], [yes])]
1363 )
1364 UL_BUILD_INIT([minix])
1365 AM_CONDITIONAL([BUILD_MINIX], [test "x$build_minix" = xyes])
1366
1367
1368 AC_ARG_ENABLE([fdformat],
1369 AS_HELP_STRING([--disable-fdformat], [do not build fdformat]),
1370 [], [UL_DEFAULT_ENABLE([fdformat], [check])]
1371 )
1372 UL_BUILD_INIT([fdformat])
1373 UL_REQUIRES_LINUX([fdformat])
1374 AM_CONDITIONAL([BUILD_FDFORMAT], [test "x$build_fdformat" = xyes])
1375
1376
1377 AC_ARG_ENABLE([hwclock],
1378 AS_HELP_STRING([--disable-hwclock], [do not build hwclock]),
1379 [], [UL_DEFAULT_ENABLE([hwclock], [check])]
1380 )
1381 have_linuxdummy=$linux_os
1382
1383 UL_BUILD_INIT([hwclock])
1384 UL_REQUIRES_HAVE([hwclock], [io, linuxdummy], [ioperm iopl function or Linux])
1385 AM_CONDITIONAL([BUILD_HWCLOCK], [test "x$build_hwclock" = xyes])
1386
1387
1388 UL_BUILD_INIT([mkfs], [yes])
1389 AM_CONDITIONAL([BUILD_MKFS], [test "x$build_mkfs" = xyes])
1390
1391 UL_BUILD_INIT([isosize], [yes])
1392 AM_CONDITIONAL([BUILD_ISOSIZE], [test "x$build_isosize" = xyes])
1393
1394
1395 UL_BUILD_INIT([fstrim], [check])
1396 UL_REQUIRES_LINUX([fstrim])
1397 UL_REQUIRES_BUILD([fstrim], [libmount])
1398 AM_CONDITIONAL([BUILD_FSTRIM], [test "x$build_fstrim" = xyes])
1399
1400
1401 UL_BUILD_INIT([swapon], [check])
1402 UL_REQUIRES_LINUX([swapon])
1403 UL_REQUIRES_BUILD([swapon], [libblkid])
1404 UL_REQUIRES_BUILD([swapon], [libmount])
1405 UL_REQUIRES_BUILD([swapon], [libsmartcols])
1406 AM_CONDITIONAL([BUILD_SWAPON], [test "x$build_swapon" = xyes])
1407
1408
1409 UL_BUILD_INIT([lsblk], [check])
1410 UL_REQUIRES_LINUX([lsblk])
1411 UL_REQUIRES_BUILD([lsblk], [libblkid])
1412 UL_REQUIRES_BUILD([lsblk], [libmount])
1413 UL_REQUIRES_BUILD([lsblk], [libsmartcols])
1414 AM_CONDITIONAL([BUILD_LSBLK], [test "x$build_lsblk" = xyes])
1415
1416
1417 UL_BUILD_INIT([lscpu], [check])
1418 UL_REQUIRES_LINUX([lscpu])
1419 UL_REQUIRES_BUILD([lscpu], [libsmartcols])
1420 UL_REQUIRES_HAVE([lscpu], [cpu_set_t], [cpu_set_t type])
1421 AM_CONDITIONAL([BUILD_LSCPU], [test "x$build_lscpu" = xyes])
1422
1423
1424 AC_ARG_ENABLE([lslogins],
1425 AS_HELP_STRING([--disable-lslogins], [do not build lslogins]),
1426 [], [UL_DEFAULT_ENABLE([lslogins], [check])]
1427 )
1428 UL_BUILD_INIT([lslogins])
1429 UL_REQUIRES_BUILD([lslogins], [libsmartcols])
1430 UL_REQUIRES_HAVE([lslogins], [shadow_h], [shadow.h header])
1431 UL_REQUIRES_HAVE([lslogins], [utmpx_h], [utmpx.h header])
1432 UL_REQUIRES_HAVE([lslogins], [gnu_utmpx], [GNU utmpx fucntions])
1433 AM_CONDITIONAL([BUILD_LSLOGINS], [test "x$build_lslogins" = xyes])
1434
1435
1436 UL_BUILD_INIT([chcpu], [check])
1437 UL_REQUIRES_LINUX([chcpu])
1438 UL_REQUIRES_HAVE([chcpu], [cpu_set_t], [cpu_set_t type])
1439 AM_CONDITIONAL([BUILD_CHCPU], [test "x$build_chcpu" = xyes])
1440
1441
1442 AC_ARG_ENABLE([wdctl],
1443 AS_HELP_STRING([--disable-wdctl], [do not build wdctl]),
1444 [], [UL_DEFAULT_ENABLE([wdctl], [check])]
1445 )
1446 UL_BUILD_INIT([wdctl])
1447 UL_REQUIRES_LINUX([wdctl])
1448 UL_REQUIRES_BUILD([wdctl], [libsmartcols])
1449 UL_REQUIRES_HAVE([wdctl], [linux_watchdog_h], [linux/watchdog.h header file])
1450 AM_CONDITIONAL([BUILD_WDCTL], [test "x$build_wdctl" = xyes])
1451
1452
1453 UL_BUILD_INIT([swaplabel], [check])
1454 UL_REQUIRES_BUILD([swaplabel], [libblkid])
1455 AM_CONDITIONAL([BUILD_SWAPLABEL], [test "x$build_swaplabel" = xyes])
1456
1457
1458 UL_BUILD_INIT([mkswap], [yes])
1459 AM_CONDITIONAL([BUILD_MKSWAP], [test "x$build_mkswap" = xyes])
1460 AS_IF([test "x$build_mkswap" = xyes -a "x$build_libuuid" != xyes], [
1461 AC_MSG_WARN([uuid library is not found; mkswap(8) will not generate UUIDs])
1462 ])
1463
1464
1465 AC_ARG_ENABLE([cal],
1466 AS_HELP_STRING([--disable-cal], [do not build cal]),
1467 [], [UL_DEFAULT_ENABLE([cal], [check])]
1468 )
1469 UL_BUILD_INIT([cal])
1470 AM_CONDITIONAL([BUILD_CAL], [test "x$build_cal" = xyes])
1471
1472 AC_ARG_ENABLE([logger],
1473 AS_HELP_STRING([--disable-logger], [do not build logger]),
1474 [], [UL_DEFAULT_ENABLE([logger], [check])]
1475 )
1476 UL_BUILD_INIT([logger])
1477 AM_CONDITIONAL([BUILD_LOGGER], [test "x$build_logger" = xyes])
1478
1479 UL_BUILD_INIT([look], [yes])
1480 AM_CONDITIONAL([BUILD_LOOK], [test "x$build_look" = xyes])
1481
1482 UL_BUILD_INIT([mcookie], [yes])
1483 AM_CONDITIONAL([BUILD_MCOOKIE], [test "x$build_mcookie" = xyes])
1484
1485 UL_BUILD_INIT([namei], [yes])
1486 AM_CONDITIONAL([BUILD_NAMEI], [test "x$build_namei" = xyes])
1487
1488 UL_BUILD_INIT([whereis], [yes])
1489 AM_CONDITIONAL([BUILD_WHEREIS], [test "x$build_whereis" = xyes])
1490
1491 UL_BUILD_INIT([getopt], [yes])
1492 AM_CONDITIONAL([BUILD_GETOPT], [test "x$build_getopt" = xyes])
1493
1494
1495 UL_BUILD_INIT([blockdev], [check])
1496 UL_REQUIRES_LINUX([blockdev])
1497 AM_CONDITIONAL([BUILD_BLOCKDEV], [test "x$build_blockdev" = xyes])
1498
1499
1500 UL_BUILD_INIT([prlimit], [check])
1501 UL_REQUIRES_LINUX([prlimit])
1502 UL_REQUIRES_BUILD([prlimit], [libsmartcols])
1503 UL_REQUIRES_SYSCALL_CHECK([prlimit], [UL_CHECK_SYSCALL([prlimit64])], [prlimit64])
1504 AM_CONDITIONAL([BUILD_PRLIMIT], [test "x$build_prlimit" = xyes])
1505 AS_IF([test "x$build_prlimit" = xyes], [
1506 AC_CHECK_FUNCS([prlimit])
1507 ])
1508
1509
1510 UL_BUILD_INIT([lslocks], [check])
1511 UL_REQUIRES_LINUX([lslocks])
1512 UL_REQUIRES_BUILD([lslocks], [libmount])
1513 UL_REQUIRES_BUILD([lslocks], [libsmartcols])
1514 AM_CONDITIONAL([BUILD_LSLOCKS], [test "x$build_lslocks" = xyes])
1515
1516
1517 AC_ARG_ENABLE([switch_root],
1518 AS_HELP_STRING([--disable-switch_root], [do not build switch_root]),
1519 [], [UL_DEFAULT_ENABLE([switch_root], [check])]
1520 )
1521 UL_BUILD_INIT([switch_root])
1522 UL_REQUIRES_LINUX([switch_root])
1523 UL_REQUIRES_HAVE([switch_root], [openat], [openat function])
1524 AM_CONDITIONAL([BUILD_SWITCH_ROOT], [test "x$build_switch_root" = xyes])
1525
1526
1527 AC_ARG_ENABLE([pivot_root],
1528 AS_HELP_STRING([--disable-pivot_root], [do not build pivot_root]),
1529 [], [UL_DEFAULT_ENABLE([pivot_root], [check])]
1530 )
1531 UL_BUILD_INIT([pivot_root])
1532 UL_REQUIRES_LINUX([pivot_root])
1533 UL_REQUIRES_SYSCALL_CHECK([pivot_root], [UL_CHECK_SYSCALL([pivot_root])])
1534 AM_CONDITIONAL([BUILD_PIVOT_ROOT], [test "x$build_pivot_root" = xyes])
1535
1536
1537 UL_BUILD_INIT([flock], [check])
1538 UL_REQUIRES_HAVE([flock], [timer], [timer_create function])
1539 AM_CONDITIONAL([BUILD_FLOCK], [test "x$build_flock" = xyes])
1540
1541
1542 AC_ARG_ENABLE([lsmem],
1543 AS_HELP_STRING([--disable-lsmem], [do not build lsmem]),
1544 [], [UL_DEFAULT_ENABLE([lsmem], [check])]
1545 )
1546 UL_BUILD_INIT([lsmem])
1547 UL_REQUIRES_LINUX([lsmem])
1548 UL_REQUIRES_BUILD([lsmem], [libsmartcols])
1549 AM_CONDITIONAL([BUILD_LSMEM], [test "x$build_lsmem" = xyes])
1550
1551
1552 AC_ARG_ENABLE([chmem],
1553 AS_HELP_STRING([--disable-chmem], [do not build chmem]),
1554 [], [UL_DEFAULT_ENABLE([chmem], [check])]
1555 )
1556 UL_BUILD_INIT([chmem])
1557 UL_REQUIRES_LINUX([chmem])
1558 AM_CONDITIONAL([BUILD_CHMEM], [test "x$build_chmem" = xyes])
1559
1560 UL_BUILD_INIT([ipcmk], [yes])
1561 AM_CONDITIONAL([BUILD_IPCMK], [test "x$build_ipcmk" = xyes])
1562
1563
1564 AC_ARG_ENABLE([ipcrm],
1565 AS_HELP_STRING([--disable-ipcrm], [do not build ipcrm]),
1566 [], [UL_DEFAULT_ENABLE([ipcrm], [yes])]
1567 )
1568 UL_BUILD_INIT([ipcrm])
1569 AM_CONDITIONAL([BUILD_IPCRM], [test "x$build_ipcrm" = xyes])
1570
1571 AC_ARG_ENABLE([ipcs],
1572 AS_HELP_STRING([--disable-ipcs], [do not build ipcs]),
1573 [], [UL_DEFAULT_ENABLE([ipcs], [yes])]
1574 )
1575 UL_BUILD_INIT([ipcs])
1576 AM_CONDITIONAL([BUILD_IPCS], [test "x$build_ipcs" = xyes])
1577
1578 UL_BUILD_INIT([lsipc], [check])
1579 UL_REQUIRES_LINUX([lsipc])
1580 UL_REQUIRES_BUILD([lsipc], [libsmartcols])
1581 AM_CONDITIONAL([BUILD_LSIPC], [test "x$build_lsipc" = xyes])
1582
1583 UL_BUILD_INIT([lsns], [check])
1584 UL_REQUIRES_LINUX([lsns])
1585 UL_REQUIRES_BUILD([lsns], [libsmartcols])
1586 AM_CONDITIONAL([BUILD_LSNS], [test "x$build_lsns" = xyes])
1587
1588 UL_BUILD_INIT([renice], [yes])
1589 AM_CONDITIONAL([BUILD_RENICE], [test "x$build_renice" = xyes])
1590
1591 UL_BUILD_INIT([setsid], [yes])
1592 AM_CONDITIONAL([BUILD_SETSID], [test "x$build_setsid" = xyes])
1593
1594 UL_BUILD_INIT([readprofile], [check])
1595 UL_REQUIRES_LINUX([readprofile])
1596 AM_CONDITIONAL([BUILD_READPROFILE], [test "x$build_readprofile" = xyes])
1597
1598 UL_BUILD_INIT([dmesg], [check])
1599 UL_REQUIRES_LINUX([dmesg])
1600 AM_CONDITIONAL([BUILD_DMESG], [test "x$build_dmesg" = xyes])
1601
1602 UL_BUILD_INIT([ctrlaltdel], [check])
1603 UL_REQUIRES_LINUX([ctrlaltdel])
1604 dnl we assume reboot() to be the 1-argument variant, because even considering
1605 dnl widely used alternative C libraries like uclibc, dietlibc and musl,
1606 dnl reboot() with multiple arguments is yet only found in glibc versions
1607 dnl earlier than 2.x.
1608 UL_REQUIRES_HAVE([ctrlaltdel], [reboot], [reboot function])
1609 AM_CONDITIONAL([BUILD_CTRLALTDEL], [test "x$build_ctrlaltdel" = xyes])
1610
1611 UL_BUILD_INIT([fincore], [check])
1612 UL_REQUIRES_LINUX([fincore])
1613 UL_REQUIRES_BUILD([fincore], [libsmartcols])
1614 AM_CONDITIONAL([BUILD_FINCORE], [test "x$build_fincore" = xyes])
1615
1616 UL_BUILD_INIT([fsfreeze], [check])
1617 UL_REQUIRES_LINUX([fsfreeze])
1618 AM_CONDITIONAL([BUILD_FSFREEZE], [test "x$build_fsfreeze" = xyes])
1619
1620 UL_BUILD_INIT([blkdiscard], [check])
1621 UL_REQUIRES_LINUX([blkdiscard])
1622 AM_CONDITIONAL([BUILD_BLKDISCARD], [test "x$build_blkdiscard" = xyes])
1623
1624 UL_BUILD_INIT([blkzone], [check])
1625 UL_REQUIRES_LINUX([blkzone])
1626 UL_REQUIRES_HAVE([blkzone], [linux_blkzoned_h], [linux/blkzoned.h header])
1627 AM_CONDITIONAL([BUILD_BLKZONE], [test "x$build_blkzone" = xyes])
1628
1629 UL_BUILD_INIT([ldattach], [check])
1630 UL_REQUIRES_LINUX([ldattach])
1631 AM_CONDITIONAL([BUILD_LDATTACH], [test "x$build_ldattach" = xyes])
1632
1633 UL_BUILD_INIT([rtcwake], [check])
1634 UL_REQUIRES_LINUX([rtcwake])
1635 AM_CONDITIONAL([BUILD_RTCWAKE], [test "x$build_rtcwake" = xyes])
1636
1637 UL_BUILD_INIT([setarch], [check])
1638 UL_REQUIRES_LINUX([setarch])
1639 AM_CONDITIONAL([BUILD_SETARCH], [test "x$build_setarch" = xyes])
1640
1641 UL_BUILD_INIT([script], [check])
1642 UL_REQUIRES_HAVE([script], [sys_signalfd_h], [sys/signalfd.h header])
1643 AM_CONDITIONAL([BUILD_SCRIPT], [test "x$build_script" = xyes])
1644
1645 UL_BUILD_INIT([scriptreplay], [yes])
1646 AM_CONDITIONAL([BUILD_SCRIPTREPLAY], [test "x$build_scriptreplay" = xyes])
1647
1648 UL_BUILD_INIT([col], [yes])
1649 AM_CONDITIONAL([BUILD_COL], [test "x$build_col" = xyes])
1650
1651 UL_BUILD_INIT([colcrt], [yes])
1652 AM_CONDITIONAL([BUILD_COLCRT], [test "x$build_colcrt" = xyes])
1653
1654 UL_BUILD_INIT([colrm], [yes])
1655 AM_CONDITIONAL([BUILD_COLRM], [test "x$build_colrm" = xyes])
1656
1657 UL_BUILD_INIT([column], [check])
1658 UL_REQUIRES_BUILD([column], [libsmartcols])
1659 AM_CONDITIONAL([BUILD_COLUMN], [test "x$build_column" = xyes])
1660
1661 UL_BUILD_INIT([hexdump], [yes])
1662 AM_CONDITIONAL([BUILD_HEXDUMP], [test "x$build_hexdump" = xyes])
1663
1664 UL_BUILD_INIT([rev], [yes])
1665 AM_CONDITIONAL([BUILD_REV], [test "x$build_rev" = xyes])
1666
1667
1668 AC_ARG_ENABLE([tunelp],
1669 AS_HELP_STRING([--enable-tunelp], [build tunelp]),
1670 [], [UL_DEFAULT_ENABLE([tunelp], [no])]
1671 )
1672 UL_BUILD_INIT([tunelp])
1673 UL_REQUIRES_LINUX([tunelp])
1674 AM_CONDITIONAL([BUILD_TUNELP], [test "x$build_tunelp" = xyes])
1675
1676
1677 AC_ARG_ENABLE([kill],
1678 AS_HELP_STRING([--disable-kill], [do not build kill]),
1679 [], [UL_DEFAULT_ENABLE([kill], [check])]
1680 )
1681 UL_BUILD_INIT([kill])
1682 UL_REQUIRES_LINUX([kill])
1683 AM_CONDITIONAL([BUILD_KILL], [test "x$build_kill" = xyes])
1684
1685
1686 AC_ARG_ENABLE([last],
1687 AS_HELP_STRING([--disable-last], [do not build last]),
1688 [], [UL_DEFAULT_ENABLE([last], [check])]
1689 )
1690 UL_BUILD_INIT([last])
1691 UL_REQUIRES_HAVE([last], [utmpx_h], [utmpx.h header])
1692 UL_REQUIRES_HAVE([last], [gnu_utmpx], [GNU utmpx fucntions])
1693 AM_CONDITIONAL([BUILD_LAST], [test "x$build_last" = xyes])
1694
1695
1696 AC_ARG_ENABLE([utmpdump],
1697 AS_HELP_STRING([--disable-utmpdump], [do not build utmpdump]),
1698 [], [UL_DEFAULT_ENABLE([utmpdump], [check])]
1699 )
1700 UL_BUILD_INIT([utmpdump])
1701 UL_REQUIRES_HAVE([utmpdump], [utmpx_h], [utmpx.h header])
1702 UL_REQUIRES_HAVE([utmpdump], [gnu_utmpx], [GNU utmpx fucntions])
1703 AM_CONDITIONAL([BUILD_UTMPDUMP], [test "x$build_utmpdump" = xyes])
1704
1705
1706 AC_ARG_ENABLE([line],
1707 AS_HELP_STRING([--enable-line], [build line]),
1708 [], [UL_DEFAULT_ENABLE([line], [no])]
1709 )
1710 UL_BUILD_INIT([line])
1711 AM_CONDITIONAL([BUILD_LINE], [test "x$build_line" = xyes])
1712
1713
1714 AC_ARG_ENABLE([mesg],
1715 AS_HELP_STRING([--disable-mesg], [do not build mesg]),
1716 [], [UL_DEFAULT_ENABLE([mesg], [yes])]
1717 )
1718 UL_BUILD_INIT([mesg])
1719 AM_CONDITIONAL([BUILD_MESG], [test "x$build_mesg" = xyes])
1720
1721
1722 AC_ARG_ENABLE([raw],
1723 AS_HELP_STRING([--disable-raw], [do not build raw]),
1724 [], [UL_DEFAULT_ENABLE([raw], [check])]
1725 )
1726 UL_BUILD_INIT([raw])
1727 UL_REQUIRES_LINUX([raw])
1728 UL_REQUIRES_HAVE([raw], [linux_raw_h], [raw.h header file])
1729 AM_CONDITIONAL([BUILD_RAW], [test "x$build_raw" = xyes])
1730
1731
1732 AC_ARG_ENABLE([rename],
1733 AS_HELP_STRING([--disable-rename], [do not build rename]),
1734 [], [UL_DEFAULT_ENABLE([rename], [yes])]
1735 )
1736 UL_BUILD_INIT([rename])
1737 AM_CONDITIONAL([BUILD_RENAME], [test "x$build_rename" = xyes])
1738
1739
1740 AC_ARG_ENABLE([reset],
1741 AS_HELP_STRING([--enable-reset], [build reset]),
1742 [], [UL_DEFAULT_ENABLE([reset], [no])]
1743 )
1744 UL_BUILD_INIT([reset])
1745 AM_CONDITIONAL([BUILD_RESET], [test "x$build_reset" = xyes])
1746
1747
1748 AC_ARG_ENABLE([vipw],
1749 AS_HELP_STRING([--enable-vipw], [build vipw]),
1750 [], [UL_DEFAULT_ENABLE([vipw], [no])]
1751 )
1752 UL_BUILD_INIT([vipw])
1753 UL_REQUIRES_HAVE([vipw], [shadow_h], [shadow.h header])
1754 AM_CONDITIONAL([BUILD_VIPW], [test "x$build_vipw" = xyes])
1755
1756
1757 AC_ARG_ENABLE([newgrp],
1758 AS_HELP_STRING([--enable-newgrp], [build newgrp]),
1759 [], [UL_DEFAULT_ENABLE([newgrp], [no])]
1760 )
1761 UL_BUILD_INIT([newgrp])
1762 AM_CONDITIONAL([BUILD_NEWGRP], [test "x$build_newgrp" = xyes])
1763
1764
1765 AC_ARG_WITH([user], AS_HELP_STRING([--without-user], [compile without libuser (remote chsh)]),
1766 [], [with_user=check]
1767 )
1768 have_user=no
1769 AS_IF([test "x$with_user" != xno], [
1770 PKG_CHECK_MODULES(LIBUSER,[libuser >= 0.58], [have_user=yes], [have_user=no])
1771 AS_CASE([$with_user:$have_user],
1772 [yes:no],
1773 [AC_MSG_ERROR([user selected but libuser not found])],
1774 [*:yes],
1775 [AC_DEFINE([HAVE_LIBUSER], [1], [Define if libuser is available])]
1776 )
1777 # temporary solution, libuser has stupid .pc where are exported all
1778 # private dependencies to Requires: instead of Requires.private:
1779 AS_IF([test "x$have_user" = xyes], [
1780 LIBUSER_LIBS=-luser
1781 ])
1782 ])
1783 AM_CONDITIONAL([HAVE_USER], [test "x$have_user" = xyes])
1784
1785 AC_ARG_ENABLE([chfn-chsh-password],
1786 AS_HELP_STRING([--disable-chfn-chsh-password], [do not require the user to enter the password in chfn and chsh]),
1787 [], [enable_chfn_chsh_password=yes]
1788 )
1789
1790 AC_ARG_ENABLE([chfn-chsh],
1791 AS_HELP_STRING([--enable-chfn-chsh], [build chfn and chsh]),
1792 [], [UL_DEFAULT_ENABLE([chfn_chsh], [check])]
1793 )
1794 UL_BUILD_INIT([chfn_chsh])
1795 UL_REQUIRES_HAVE([chfn_chsh], [shadow_h], [shadow.h header])
1796
1797 AS_IF([test "x$enable_chfn_chsh_password" = xyes -o "x$have_user" = xyes], [
1798 UL_REQUIRES_HAVE([chfn_chsh], [security_pam_appl_h], [PAM header file])
1799 AC_DEFINE([CHFN_CHSH_PASSWORD], [1], [Should chfn and chsh require the user to enter the password?])
1800 ])
1801 AM_CONDITIONAL([BUILD_CHFN_CHSH], [test "x$build_chfn_chsh" = xyes])
1802 AM_CONDITIONAL([CHFN_CHSH_PASSWORD], [test "x$enable_chfn_chsh_password" = xyes])
1803
1804 AC_ARG_ENABLE([chsh-only-listed],
1805 AS_HELP_STRING([--disable-chsh-only-listed], [chsh: allow shells not in /etc/shells]),
1806 [], enable_chsh_only_listed=yes
1807 )
1808
1809 AS_IF([test "x$enable_chsh_only_listed" = xyes], [
1810 AC_DEFINE([ONLY_LISTED_SHELLS], [1], [Should chsh allow only shells in /etc/shells?])
1811 ])
1812
1813
1814 AC_ARG_ENABLE([login],
1815 AS_HELP_STRING([--disable-login], [do not build login]),
1816 [], [UL_DEFAULT_ENABLE([login], [check])]
1817 )
1818 UL_BUILD_INIT([login])
1819 UL_REQUIRES_HAVE([login], [security_pam_appl_h], [PAM header file])
1820 UL_REQUIRES_HAVE([login], [security_pam_misc_h, security_openpam_h], [PAM conversation functions])
1821 UL_REQUIRES_HAVE([login], [utmpx_h], [utmpx.h header])
1822 UL_REQUIRES_HAVE([login], [gnu_utmpx], [GNU utmpx fucntions])
1823 AM_CONDITIONAL([BUILD_LOGIN], [test "x$build_login" = xyes])
1824
1825 AC_ARG_ENABLE([login-chown-vcs],
1826 AS_HELP_STRING([--enable-login-chown-vcs], [let login chown /dev/vcsN]),
1827 [], [enable_login_chown_vcs=no]
1828 )
1829
1830 AS_IF([test "x$enable_login_chown_vcs" = xyes], [
1831 AC_DEFINE([LOGIN_CHOWN_VCS], [1], [Should login chown /dev/vcsN?])
1832 ])
1833
1834 AC_ARG_ENABLE([login-stat-mail],
1835 AS_HELP_STRING([--enable-login-stat-mail], [let login stat() the mailbox]),
1836 [], [enable_login_stat_mail=no]
1837 )
1838
1839 AS_IF([test "x$enable_login_stat_mail" = xyes], [
1840 AC_DEFINE([LOGIN_STAT_MAIL], [1], [Should login stat() the mailbox?])
1841 ])
1842
1843
1844 AC_ARG_ENABLE([nologin],
1845 AS_HELP_STRING([--disable-nologin], [do not build nologin]),
1846 [], [UL_DEFAULT_ENABLE([nologin], [yes])]
1847 )
1848 UL_BUILD_INIT([nologin])
1849 AM_CONDITIONAL([BUILD_NOLOGIN], [test "x$build_nologin" = xyes])
1850
1851
1852 AC_ARG_ENABLE([sulogin],
1853 AS_HELP_STRING([--disable-sulogin], [do not build sulogin]),
1854 [], [UL_DEFAULT_ENABLE([sulogin], [check])]
1855 )
1856 UL_BUILD_INIT([sulogin])
1857 UL_REQUIRES_HAVE([sulogin], [shadow_h], [shadow.h header])
1858 AM_CONDITIONAL([BUILD_SULOGIN], [test "x$build_sulogin" = xyes])
1859
1860
1861 AC_ARG_ENABLE([su],
1862 AS_HELP_STRING([--disable-su], [do not build su]),
1863 [], [UL_DEFAULT_ENABLE([su], [check])]
1864 )
1865 UL_BUILD_INIT([su])
1866 UL_REQUIRES_HAVE([su], [security_pam_appl_h], [PAM header file])
1867 UL_REQUIRES_HAVE([su], [utmpx_h], [utmpx.h header])
1868 UL_REQUIRES_HAVE([su], [gnu_utmpx], [GNU utmpx fucntions])
1869 AM_CONDITIONAL([BUILD_SU], [test "x$build_su" = xyes])
1870
1871
1872 AC_ARG_ENABLE([runuser],
1873 AS_HELP_STRING([--disable-runuser], [do not build runuser]),
1874 [], [UL_DEFAULT_ENABLE([runuser], [check])]
1875 )
1876 UL_BUILD_INIT([runuser])
1877 UL_REQUIRES_HAVE([runuser], [security_pam_appl_h], [PAM header file])
1878 UL_REQUIRES_HAVE([runuser], [utmpx_h], [utmpx.h header])
1879 UL_REQUIRES_HAVE([runuser], [gnu_utmpx], [GNU utmpx fucntions])
1880 AM_CONDITIONAL([BUILD_RUNUSER], [test "x$build_runuser" = xyes])
1881
1882
1883 AC_ARG_ENABLE([ul],
1884 AS_HELP_STRING([--disable-ul], [do not build ul]),
1885 [], [UL_DEFAULT_ENABLE([ul], [check])]
1886 )
1887 UL_BUILD_INIT([ul])
1888 UL_REQUIRES_HAVE([ul], [ncursesw, ncurses], [ncursesw or ncurses libraries])
1889 AM_CONDITIONAL([BUILD_UL], [test "x$build_ul" = xyes])
1890
1891
1892 AC_ARG_ENABLE([more],
1893 AS_HELP_STRING([--disable-more], [do not build more]),
1894 [], [UL_DEFAULT_ENABLE([more], [check])]
1895 )
1896 UL_BUILD_INIT([more])
1897 UL_REQUIRES_HAVE([more], [ncursesw, ncurses], [ncursesw or ncurses libraries])
1898 AM_CONDITIONAL([BUILD_MORE], [test "x$build_more" = xyes])
1899
1900
1901 AC_ARG_ENABLE([pg],
1902 AS_HELP_STRING([--enable-pg], [build pg]),
1903 [], [UL_DEFAULT_ENABLE([pg], [no])]
1904 )
1905 UL_BUILD_INIT([pg])
1906 UL_REQUIRES_HAVE([pg], [ncursesw, ncurses], [ncursesw or ncurses library])
1907 AM_CONDITIONAL([BUILD_PG], [test "x$build_pg" = xyes])
1908
1909
1910 AC_ARG_ENABLE([setterm],
1911 AS_HELP_STRING([--disable-setterm], [do not build setterm]),
1912 [], [UL_DEFAULT_ENABLE([setterm], [check])]
1913 )
1914 UL_BUILD_INIT([setterm])
1915 UL_REQUIRES_LINUX([setterm])
1916 UL_REQUIRES_HAVE([setterm], [ncursesw, ncurses], [ncursesw or ncurses library])
1917 AM_CONDITIONAL([BUILD_SETTERM], [test "x$build_setterm" = xyes])
1918
1919 # build_schedutils= is just configure-only variable to control
1920 # ionice, taskset and chrt
1921 AC_ARG_ENABLE([schedutils],
1922 AS_HELP_STRING([--disable-schedutils], [do not build chrt, ionice, taskset]),
1923 [], [UL_DEFAULT_ENABLE([schedutils], [check])]
1924 )
1925
1926
1927 UL_ENABLE_ALIAS([ionice], [schedutils])
1928 UL_BUILD_INIT([ionice])
1929 UL_REQUIRES_SYSCALL_CHECK([ionice],
1930 [UL_CHECK_SYSCALL([ioprio_set],
1931 [alpha], [442],
1932 [i*86], [289],
1933 [ia64*], [1274],
1934 [powerpc*], [273],
1935 [s390*], [282],
1936 [sparc*], [196],
1937 [sh*], [288],
1938 [x86_64*], [251])],
1939 [ioprio_set])
1940
1941 UL_REQUIRES_SYSCALL_CHECK([ionice],
1942 [UL_CHECK_SYSCALL([ioprio_get],
1943 [alpha], [443],
1944 [i*86], [290],
1945 [ia64*], [1275],
1946 [powerpc*], [274],
1947 [s390*], [283],
1948 [sparc*], [218],
1949 [sh*], [289],
1950 [x86_64*], [252])],
1951 [ioprio_get])
1952
1953 AM_CONDITIONAL([BUILD_IONICE], [test "x$build_ionice" = xyes])
1954
1955
1956 UL_ENABLE_ALIAS([taskset], [schedutils])
1957 UL_BUILD_INIT([taskset])
1958 UL_REQUIRES_HAVE([taskset], [cpu_set_t], [cpu_set_t type])
1959 UL_REQUIRES_SYSCALL_CHECK([taskset],
1960 [UL_CHECK_SYSCALL([sched_getaffinity])],
1961 [sched_getaffinity])
1962 AM_CONDITIONAL([BUILD_TASKSET], [test "x$build_taskset" = xyes])
1963
1964
1965 have_schedsetter=no
1966 AS_IF([test "x$ac_cv_func_sched_setscheduler" = xyes], [have_schedsetter=yes],
1967 [test "x$ac_cv_func_sched_setattr" = xyes], [have_schedsetter=yes])
1968
1969 UL_ENABLE_ALIAS([chrt], [schedutils])
1970 UL_BUILD_INIT([chrt])
1971 UL_REQUIRES_HAVE([chrt], [schedsetter], [sched_set functions])
1972 AM_CONDITIONAL([BUILD_CHRT], [test "x$build_chrt" = xyes])
1973
1974 AS_IF([test "x$build_chrt" = xyes], [
1975 UL_CHECK_SYSCALL([sched_setattr])
1976 ])
1977
1978
1979 AC_ARG_ENABLE([wall],
1980 AS_HELP_STRING([--disable-wall], [do not build wall]),
1981 [], [UL_DEFAULT_ENABLE([wall], [check])]
1982 )
1983 UL_BUILD_INIT([wall])
1984 UL_REQUIRES_HAVE([wall], [utmpx_h], [utmpx.h header])
1985 AM_CONDITIONAL([BUILD_WALL], [test "x$build_wall" = xyes])
1986
1987
1988 AC_ARG_ENABLE([write],
1989 AS_HELP_STRING([--enable-write], [build write]),
1990 [], [UL_DEFAULT_ENABLE([write], [no])]
1991 )
1992 UL_BUILD_INIT([write])
1993 UL_REQUIRES_HAVE([write], [utmpx_h], [utmpx.h header])
1994 UL_REQUIRES_HAVE([write], [gnu_utmpx], [GNU utmpx fucntions])
1995 AM_CONDITIONAL([BUILD_WRITE], [test "x$build_write" = xyes])
1996
1997
1998 AC_ARG_WITH([btrfs],
1999 AS_HELP_STRING([--with-btrfs], [build with support for btrfs]),
2000 [], [with_btrfs=check]
2001 )
2002 have_btrfs=no
2003 AS_IF([test "x$with_btrfs" != xno], [
2004 AS_CASE([$with_btrfs:$have_linux_btrfs_h],
2005 [yes:no],
2006 [AC_MSG_ERROR([btrfs selected but linux/btrfs.h not found])],
2007 [check:no],
2008 [AC_MSG_WARN([linux/btrfs.h not found, do not build with btrfs support])],
2009 [*:yes],
2010 [have_btrfs=yes
2011 AC_DEFINE([HAVE_BTRFS_SUPPORT], [1], [Define if btrfs stuff is available])]
2012 )
2013 ])
2014 AM_CONDITIONAL([HAVE_BTRFS], [test "x$have_btrfs" = xyes])
2015
2016
2017 AC_ARG_WITH([systemd],
2018 AS_HELP_STRING([--with-systemd], [build with support for systemd]),
2019 [], [with_systemd=check]
2020 )
2021
2022 have_systemd=no
2023 AS_IF([test "x$with_systemd" != xno], [
2024 # new version -- all libsystemd-* libs merged into libsystemd
2025 PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [have_systemd=yes], [have_systemd=no])
2026 # old versions
2027 AS_IF([test "x$have_systemd" != "xyes"], [
2028 PKG_CHECK_MODULES([SYSTEMD_DAEMON], [libsystemd-daemon],
2029 [have_systemd_daemon=yes], [have_systemd_daemon=no])
2030 PKG_CHECK_MODULES([SYSTEMD_JOURNAL], [libsystemd-journal],
2031 [have_systemd_journal=yes], [have_systemd_journal=no])
2032 AS_IF([test "x$have_systemd_daemon" = "xyes" -a "x$have_systemd_journal" = "xyes" ],[
2033 have_systemd=yes])
2034 ])
2035 AS_CASE([$with_systemd:$have_systemd],
2036 [yes:no],
2037 [AC_MSG_ERROR([systemd expected but libsystemd not found])],
2038 [*:yes],
2039 AC_DEFINE([HAVE_LIBSYSTEMD], [1], [Define if libsystemd is available])
2040 )
2041 ])
2042 AM_CONDITIONAL([HAVE_SYSTEMD], [test "x$have_systemd" = xyes])
2043
2044
2045 AC_ARG_WITH([systemdsystemunitdir],
2046 AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [directory for systemd service files]),
2047 [], [with_systemdsystemunitdir=`$PKG_CONFIG --variable=systemdsystemunitdir systemd`])
2048
2049 AS_IF([test "x$with_systemdsystemunitdir" != "xno"], [
2050 AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
2051 ])
2052
2053
2054 AC_ARG_WITH([smack],
2055 AS_HELP_STRING([--with-smack], [build with SMACK support]),
2056 [], [with_smack=no]
2057 )
2058 AS_IF([test "x$with_smack" = xyes], [
2059 AC_DEFINE([HAVE_SMACK], [1], [Add SMACK support])
2060 ])
2061
2062
2063 AC_ARG_WITH([bashcompletiondir],
2064 AS_HELP_STRING([--with-bashcompletiondir=DIR], [Bash completions directory]),
2065 [],
2066 [AS_IF([`$PKG_CONFIG --exists bash-completion`], [
2067 with_bashcompletiondir=`$PKG_CONFIG --variable=completionsdir bash-completion`
2068 ], [
2069 with_bashcompletiondir=${datadir}/bash-completion/completions
2070 ])
2071 ])
2072 AC_SUBST([bashcompletiondir], [$with_bashcompletiondir])
2073
2074 AC_ARG_ENABLE([bash-completion],
2075 AS_HELP_STRING([--disable-bash-completion], [do not install bash completion files]),
2076 [], [enable_bash_completion=yes]
2077 )
2078
2079 AM_CONDITIONAL([BUILD_BASH_COMPLETION], [test "x$enable_bash_completion" = xyes])
2080
2081
2082 AC_ARG_WITH([python],
2083 AS_HELP_STRING([--without-python], [do not build python bindings, use --with-python={2,3} to force version]),
2084 [], [with_python=check withval=check]
2085 )
2086
2087 have_python=no
2088 have_libpython=no
2089 AS_IF([test "x$with_python" != xno], [
2090 # We follow distributions default and look for PKG module name "python"
2091 # (minimal version is 2) but if major version is explicitly specified by
2092 # --with-python=2 or --with-python=3 then we look for PKG module "python2" or
2093 # "python3".
2094 AS_IF([test "x$withval" != xno -a "x$withval" != xyes -a "x$withval" != xcheck],
2095 [pymajor="$withval"; PYTHON=python${pymajor}], [pymajor="2"])
2096
2097 # check for python interpreter
2098 AM_PATH_PYTHON([$pymajor], [have_python=yes], [have_python=no])
2099 AS_CASE([$with_python:$have_python],
2100 [yes:no],
2101 [AC_MSG_ERROR([python selected but python interpreter not found])],
2102 [check:no],
2103 [AC_MSG_WARN([python interpreter not found, do not build python bindings])],
2104 [*:yes],
2105 # check for python development stuff
2106 [PKG_CHECK_MODULES([PYTHON], [python-$PYTHON_VERSION],
2107 [have_libpython=yes], [have_libpython=no])]
2108 )
2109 ])
2110
2111
2112 AC_ARG_ENABLE([pylibmount],
2113 AS_HELP_STRING([--disable-pylibmount], [do not build pylibmount]),
2114 [], [UL_DEFAULT_ENABLE([pylibmount], [check])]
2115 )
2116 UL_BUILD_INIT([pylibmount])
2117 UL_REQUIRES_HAVE([pylibmount], [libpython], [libpython])
2118 UL_REQUIRES_BUILD([pylibmount], [libmount])
2119 AM_CONDITIONAL([BUILD_PYLIBMOUNT], [test "x$build_pylibmount" = "xyes"])
2120
2121 # We need to introduce a verbatim dependency into the Makefile, without automake
2122 # trying to interpret it, so push it as a AM_SUBST_NOTMAKE variable.
2123 verbatim_pylibmount_dependency='
2124
2125 # pylibmountexec module must be installed after usrlib_exec libraries,
2126 # otherwise the libtool relink step will fail to find libmount.la and
2127 # will try -lmount which is possibly not available.
2128 install-pylibmountexecLTLIBRARIES: install-usrlib_execLTLIBRARIES
2129
2130 '
2131 AC_SUBST([verbatim_pylibmount_dependency])
2132 AM_SUBST_NOTMAKE([verbatim_pylibmount_dependency])
2133
2134 AC_ARG_ENABLE([pg-bell],
2135 AS_HELP_STRING([--disable-pg-bell], [let pg not ring the bell on invalid keys]),
2136 [], [enable_pg_bell=yes]
2137 )
2138
2139 AS_IF([test "x$enable_pg_bell" = xyes], [
2140 AC_DEFINE([PG_BELL], [1], [Should pg ring the bell on invalid keys?])
2141 ])
2142
2143
2144 AC_DEFUN([FS_PATHS_DEFAULT], [/sbin:/sbin/fs.d:/sbin/fs])
2145 AC_ARG_ENABLE([fs-paths-default],
2146 AS_HELP_STRING([--enable-fs-paths-default=paths], [default search path for fs helpers @<:@FS_PATHS_DEFAULT@:>@]),
2147 [AS_CASE([$enableval],
2148 [yes], [fs_paths_defaults="FS_PATHS_DEFAULT"],
2149 [no], [fs_paths_defaults=""],
2150 [fs_paths_defaults="$enableval"]
2151 )],
2152 [fs_paths_defaults="FS_PATHS_DEFAULT"]
2153 )
2154 AC_ARG_ENABLE([fs-paths-extra],
2155 AS_HELP_STRING([--enable-fs-paths-extra=paths], [additional search paths for fs helpers]),
2156 [AS_CASE([$enableval],
2157 [yes|no], [fs_paths_extra=""],
2158 [fs_paths_extra="$enableval"]
2159 )],
2160 [fs_paths_extra=""]
2161 )
2162 fs_paths="$fs_paths_defaults"
2163 AS_IF([test "x$fs_paths_extra" != "x"], [
2164 AS_IF([test "x$fs_paths" != "x"], [
2165 fs_paths="${fs_paths}:"
2166 ])
2167 fs_paths="${fs_paths}${fs_paths_extra}"
2168 ])
2169 AC_DEFINE_UNQUOTED([FS_SEARCH_PATH], "$fs_paths", [search path for fs helpers])
2170
2171
2172 AC_ARG_ENABLE([use-tty-group],
2173 AS_HELP_STRING([--disable-use-tty-group], [do not install wall and write setgid tty]),
2174 [], [enable_use_tty_group=yes]
2175 )
2176 AM_CONDITIONAL([USE_TTY_GROUP], [test "x$enable_use_tty_group" = xyes])
2177
2178 AS_IF([test "x$enable_use_tty_group" = xyes], [
2179 AC_DEFINE([USE_TTY_GROUP], [1], [Should wall and write be installed setgid tty?])
2180 ])
2181
2182
2183 AC_ARG_ENABLE([sulogin-emergency-mount],
2184 AS_HELP_STRING([--enable-sulogin-emergency-mount],
2185 [use emergency mount of /dev and /proc for sulogin]),
2186 [], [enable_sulogin_emergency_mount=no]
2187 )
2188
2189 AS_IF([test "x$enable_sulogin_emergency_mount" = xyes], [
2190 AC_DEFINE([USE_SULOGIN_EMERGENCY_MOUNT], [1],
2191 [Should sulogin use a emergency mount of /dev and /proc?])
2192 ])
2193
2194
2195 AC_ARG_ENABLE([usrdir-path],
2196 AS_HELP_STRING([--enable-usrdir-path], [use only /usr paths in PATH env. variable (recommended on systems with /bin -> /usr/bin symlinks)]),
2197 [], [enable_usrdir_path=no]
2198 )
2199
2200 AS_IF([test "x$enable_usrdir_path" == xyes], [
2201 AC_DEFINE([USE_USRDIR_PATHS_ONLY], [1], [Define to 1 to remove /bin and /sbin from PATH env.variable])
2202 ])
2203
2204
2205 AC_ARG_ENABLE([makeinstall-chown],
2206 AS_HELP_STRING([--disable-makeinstall-chown], [do not do chown-like operations during "make install"]),
2207 [], [enable_makeinstall_chown=yes]
2208 )
2209 AM_CONDITIONAL([MAKEINSTALL_DO_CHOWN], [test "x$enable_makeinstall_chown" = xyes])
2210
2211
2212 AC_ARG_ENABLE([makeinstall-setuid],
2213 AS_HELP_STRING([--disable-makeinstall-setuid], [do not do setuid chmod operations during "make install"]),
2214 [], [enable_makeinstall_setuid=yes]
2215 )
2216 AM_CONDITIONAL([MAKEINSTALL_DO_SETUID], [test "x$enable_makeinstall_setuid" = xyes])
2217
2218
2219 AC_ARG_ENABLE([colors-default],
2220 AS_HELP_STRING([--disable-colors-default], [do not colorize output from utils by default]),
2221 [], [enable_colors_default=yes]
2222 )
2223 AS_IF([test "x$enable_colors_default" = xyes], [
2224 AC_DEFINE([USE_COLORS_BY_DEFAULT], [1], [Enables colorized output from utils by default])
2225 ])
2226
2227
2228 AC_ARG_VAR([SUID_CFLAGS],
2229 [CFLAGS used for binaries which are usually with the suid bit])
2230 AC_ARG_VAR([SUID_LDFLAGS],
2231 [LDFLAGS used for binaries which are usually with the suid bit])
2232
2233 AC_ARG_VAR([DAEMON_CFLAGS],
2234 [CFLAGS used for binaries which are usually executed as daemons])
2235 AC_ARG_VAR([DAEMON_LDFLAGS],
2236 [LDFLAGS used for binaries which are usually executed as daemons])
2237
2238 AC_ARG_VAR([SOLIB_CFLAGS],
2239 [CFLAGS used for shared libraries])
2240 AC_ARG_VAR([SOLIB_LDFLAGS],
2241 [LDFLAGS used for shared libraries])
2242
2243 AC_ARG_VAR([ADJTIME_PATH],
2244 [Path to hwclock adjtime file, default /etc/adjtime])
2245 AS_IF([test "x$ADJTIME_PATH" = x], [ADJTIME_PATH="/etc/adjtime"])
2246 AC_DEFINE_UNQUOTED([CONFIG_ADJTIME_PATH], "$ADJTIME_PATH", [Path to hwclock adjtime file])
2247
2248
2249 LIBS=""
2250
2251
2252 AC_CONFIG_HEADERS([config.h])
2253
2254 #
2255 # Don't use configure.ac to replace install paths! See Makefile PATHFILES for
2256 # more details.
2257 #
2258 AC_CONFIG_FILES([
2259 Makefile
2260 libblkid/docs/Makefile
2261 libblkid/docs/version.xml
2262 libblkid/src/blkid.h
2263 libfdisk/docs/Makefile
2264 libfdisk/docs/version.xml
2265 libfdisk/src/libfdisk.h
2266 libmount/docs/Makefile
2267 libmount/docs/version.xml
2268 libmount/src/libmount.h
2269 libsmartcols/docs/Makefile
2270 libsmartcols/docs/version.xml
2271 libsmartcols/src/libsmartcols.h
2272 po/Makefile.in
2273 ])
2274
2275 AC_OUTPUT
2276
2277 AC_MSG_RESULT([
2278 ${PACKAGE} ${VERSION}
2279
2280 prefix: ${prefix}
2281 exec prefix: ${exec_prefix}
2282
2283 localstatedir: ${localstatedir}
2284 bindir: ${bindir}
2285 sbindir: ${sbindir}
2286 libdir: ${libdir}
2287 includedir: ${includedir}
2288 usrbin_execdir: ${usrbin_execdir}
2289 usrsbin_execdir: ${usrsbin_execdir}
2290 usrlib_execdir: ${usrlib_execdir}
2291
2292 compiler: ${CC}
2293 cflags: ${CFLAGS}
2294 suid cflags: ${SUID_CFLAGS}
2295 ldflags: ${LDFLAGS}
2296 suid ldflags: ${SUID_LDFLAGS}
2297
2298 Python: ${PYTHON}
2299 Python version: ${PYTHON_VERSION}
2300 Python libs: ${pyexecdir}
2301
2302 Bash completions: ${with_bashcompletiondir}
2303 Systemd support: ${have_systemd}
2304 Btrfs support: ${have_btrfs}
2305 Wide-char support: ${build_widechar}
2306
2307 warnings:
2308
2309 ${WARN_CFLAGS}
2310
2311 Type 'make' or 'make <utilname>' to compile.
2312 ])