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