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