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