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