]> git.ipfire.org Git - thirdparty/util-linux.git/blob - configure.ac
build-sys: add HAVE_LIBMOUNT
[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([audit],
658 AS_HELP_STRING([--with-audit], [compile with audit support]),
659 [], [with_audit=no]
660 )
661
662 AS_IF([test "x$with_audit" = xno], [
663 AM_CONDITIONAL([HAVE_AUDIT], [false])
664 ], [
665 UL_CHECK_LIB([audit], [audit_log_user_message])
666 AS_CASE([$with_audit:$have_audit],
667 [yes:no],
668 [AC_MSG_ERROR([Audit selected but libaudit not found (or does not support audit_log_user_message())])]
669 )
670 ])
671
672 AC_ARG_WITH([udev], AS_HELP_STRING([--without-udev], [compile without udev support]),
673 [], [with_udev=auto]
674 )
675
676 AS_IF([test "x$with_udev" = xno], [
677 AM_CONDITIONAL([HAVE_UDEV], [false])
678 ], [
679 UL_CHECK_LIB([udev], [udev_new])
680 AS_CASE([$with_udev:$have_udev],
681 [yes:no],
682 [AC_MSG_ERROR([udev selected but libudev not found])]
683 )
684 ])
685
686 AC_ARG_WITH([ncurses],
687 AS_HELP_STRING([--with-ncurses], [build with non-wide ncurses, default is wide version
688 (--without-ncurses disables all ncurses(w) support)]),
689 [], [with_ncurses=auto]
690 )
691 AM_CONDITIONAL([HAVE_NCURSES], [false])
692 AS_IF([test "x$with_ncurses" != xno], [
693 have_ncurses=no
694
695 dnl First try to find the pkg-config module.
696 PKG_CHECK_MODULES(NCURSESW, [ncursesw], [
697 have_ncurses=yes
698 NCURSES_LIBS=${NCURSESW_LIBS}
699 NCURSES_CFLAGS=${NCURSESW_CFLAGS}
700 AC_DEFINE([HAVE_LIBNCURSESW])
701 CURSES_LIB_NAME="ncursesw"
702 ], [
703 PKG_CHECK_MODULES(NCURSES, [ncurses], [
704 have_ncurses=yes
705 AC_DEFINE([HAVE_LIBNCURSES])
706 CURSES_LIB_NAME="ncursesw"
707 ], [:])
708 ])
709
710 AS_IF([test "x$have_ncurses" = xyes], [
711 dnl If that worked, setup the defines that the code expects.
712 save_CPPFLAGS="$CPPFLAGS"
713 CPPFLAGS="$CPPFLAGS $NCURSES_CFLAGS"
714 AC_CHECK_HEADERS([ncurses.h])
715 CPPFLAGS="$save_CPPFLAGS"
716 ], [
717 dnl If that failed, fall back to classic searching.
718 AC_CHECK_HEADERS([ncurses.h ncurses/ncurses.h], [
719 AS_IF([test "x$with_ncurses" = xauto], [
720 UL_CHECK_LIB([ncursesw], [initscr], [ncurses])
721 AS_IF([test "x$have_ncurses" = xyes], [
722 AC_CHECK_HEADERS([ncursesw/ncurses.h])
723 NCURSES_LIBS="-lncursesw"
724 CURSES_LIB_NAME="ncursesw"
725 ])
726 ])
727 AS_IF([test "x$have_ncurses" = xno], [
728 UL_CHECK_LIB(ncurses, initscr)
729 AS_IF([test "x$have_ncurses" = xyes], [
730 NCURSES_LIBS="-lncurses"
731 CURSES_LIB_NAME="ncurses"
732 ])
733 ])
734 ])
735 ])
736
737 AS_CASE([$with_ncurses:$have_ncurses],
738 [yes:no], [AC_MSG_ERROR([ncurses or ncursesw selected, but library not found])]
739 )
740
741 ])
742 AC_SUBST([NCURSES_CFLAGS])
743 AC_SUBST([NCURSES_LIBS])
744
745
746 AC_ARG_WITH([slang],
747 AS_HELP_STRING([--with-slang], [compile cfdisk with slang]),
748 [], [with_slang=no]
749 )
750 have_slang=no
751 AS_IF([test "x$with_slang" = xyes], [
752 AC_CHECK_HEADERS([slang.h slang/slang.h])
753 AC_CHECK_HEADERS([slcurses.h slang/slcurses.h],
754 [have_slang=yes], [], [
755 #ifdef HAVE_SLANG_H
756 #include <slang.h>
757 #elif defined(HAVE_SLANG_SLANG_H)
758 #include <slang/slang.h>
759 #endif
760 ])
761 AS_IF([test "x$have_slang" = xno], [
762 AC_MSG_ERROR([slang selected but slcurses.h not found])],
763 [CURSES_LIB_NAME=slang
764 ])
765 ])
766 AM_CONDITIONAL([HAVE_SLANG], [test "x$have_slang" = xyes])
767
768
769 AS_IF([test "x$have_slang" = xyes -o "x$have_ncurses" = xyes], [
770 AC_CHECK_LIB([$CURSES_LIB_NAME], use_default_colors, [
771 AC_DEFINE(HAVE_USE_DEFAULT_COLORS, 1,
772 [Define if curses library has the use_default_colors().])
773 ])
774 AC_CHECK_LIB([$CURSES_LIB_NAME], resizeterm, [
775 AC_DEFINE(HAVE_RESIZETERM, 1,
776 [Define if curses library has the resizeterm().])
777 ])
778 ])
779
780
781 dnl Try pkg-config for libtinfo
782 PKG_CHECK_MODULES(TINFO, [tinfo], [
783 dnl pkg-config success
784 have_tinfo=yes
785 UL_PKG_STATIC([TINFO_LIBS_STATIC], [tinfo])], [
786
787 dnl If pkg-config failed, fall back to classic searching.
788 AC_CHECK_LIB([tinfo], [tgetent], [
789 have_tinfo=yes
790 TINFO_LIBS="-ltinfo"
791 TINFO_LIBS_STATIC="-tinfo"
792 TINFO_CFLAGS=""])
793
794 ])
795 AC_SUBST([TINFO_LIBS])
796 AC_SUBST([TINFO_LIBS_STATIC])
797 AC_SUBST([TINFO_CFLAGS])
798 AM_CONDITIONAL([HAVE_TINFO], [test "x$have_tinfo" = xyes])
799 AS_IF([test "x$have_tinfo" = xyes], [
800 AC_DEFINE(HAVE_LIBTINFO, 1, [Define if libtinfo available.])
801 ])
802
803
804 AC_ARG_WITH([readline],
805 AS_HELP_STRING([--with-readline], [compile with GNU Readline support]),
806 [], [with_readline=auto]
807 )
808
809 AS_IF([test "x$with_readline" = xno], [
810 AM_CONDITIONAL([HAVE_READLINE], [false])
811 ], [
812 UL_CHECK_LIB([readline], [readline])
813 AS_CASE([$with_readline:$have_readline],
814 [yes:no],
815 [AC_MSG_ERROR([readline selected but libreadline not found ])],
816 [*:yes],
817 [READLINE_LIBS="-lreadline"
818 READLINE_LIBS_STATIC="-lreadline $TINFO_LIBS_STATIC"]
819 )
820 ])
821 AC_SUBST([READLINE_LIBS])
822 AC_SUBST([READLINE_LIBS_STATIC])
823
824
825 AC_ARG_WITH([utempter],
826 AS_HELP_STRING([--with-utempter], [compile script(1) with libutempter]),
827 [], [with_utempter=no]
828 )
829
830 AS_IF([test "x$with_utempter" = xyes], [
831 UL_CHECK_LIB([utempter], [utempter_add_record])
832 AS_IF([test "x$have_utempter" = xno], [
833 AC_MSG_ERROR([utempter selected but libutempter not found])
834 ])
835 ], [
836 AM_CONDITIONAL([HAVE_UTEMPTER], [false])
837 ])
838
839
840
841 dnl
842 dnl libuuid
843 dnl
844 AC_ARG_ENABLE([libuuid],
845 AS_HELP_STRING([--disable-libuuid], [do not build libuuid and uuid utilities]),
846 [], [UL_DEFAULT_ENABLE([libuuid], [yes])]
847 )
848 UL_BUILD_INIT([libuuid])
849 AC_SUBST([LIBUUID_VERSION])
850 AC_SUBST([LIBUUID_VERSION_INFO])
851 AM_CONDITIONAL(BUILD_LIBUUID, test "x$build_libuuid" = xyes)
852
853 AS_IF([test "x$build_libuuid" = xyes], [
854 AC_DEFINE(HAVE_LIBUUID, 1, [Define to 1 if you have the -luuid.])
855 ])
856
857 dnl
858 dnl libblkid
859 dnl
860 AC_ARG_ENABLE([libblkid],
861 AS_HELP_STRING([--disable-libblkid], [do not build libblkid and many related utilities]),
862 [], [UL_DEFAULT_ENABLE([libblkid], [yes])]
863 )
864 UL_BUILD_INIT([libblkid])
865 AC_SUBST([LIBBLKID_DATE])
866 AC_SUBST([LIBBLKID_VERSION])
867 AC_SUBST([LIBBLKID_VERSION_INFO])
868 AC_DEFINE_UNQUOTED([LIBBLKID_VERSION], ["$LIBBLKID_VERSION"], [libblkid version string])
869 AC_DEFINE_UNQUOTED([LIBBLKID_DATE], ["$LIBBLKID_DATE"], [libblkid date string])
870 AS_IF([test "x$build_libblkid" = xyes], [
871 AC_DEFINE([HAVE_LIBBLKID], [1], [Define to 1 if you have the -lblkid.])
872 ])
873 AM_CONDITIONAL([BUILD_LIBBLKID], [test "x$build_libblkid" = xyes])
874 AM_CONDITIONAL([BUILD_LIBBLKID_TESTS], [test "x$build_libblkid" = xyes -a "x$enable_static" = xyes])
875
876 dnl
877 dnl libmount
878 dnl
879 AC_ARG_ENABLE([libmount],
880 AS_HELP_STRING([--disable-libmount], [do not build libmount]),
881 [], [UL_DEFAULT_ENABLE([libmount], [check])]
882 )
883 UL_BUILD_INIT([libmount])
884 UL_REQUIRES_BUILD([libmount], [libblkid])
885 UL_REQUIRES_HAVE([libmount], [scanf_alloc_modifier], [scanf string alloc modifier])
886 AM_CONDITIONAL([BUILD_LIBMOUNT], [test "x$build_libmount" = xyes])
887 AM_CONDITIONAL([BUILD_LIBMOUNT_TESTS], [test "x$build_libmount" = xyes -a "x$enable_static" = xyes])
888 AS_IF([test "x$build_libmount" = xyes], [
889 AC_DEFINE(HAVE_LIBMOUNT, 1, [Define if libmount available.])
890 ])
891
892 AC_SUBST([LIBMOUNT_VERSION])
893 AC_SUBST([LIBMOUNT_MAJOR_VERSION], $PACKAGE_VERSION_MAJOR)
894 AC_SUBST([LIBMOUNT_MINOR_VERSION], $PACKAGE_VERSION_MINOR)
895 AC_SUBST([LIBMOUNT_PATCH_VERSION], $PACKAGE_VERSION_RELEASE)
896 AC_SUBST([LIBMOUNT_VERSION_INFO])
897 AC_DEFINE_UNQUOTED([LIBMOUNT_VERSION], ["$LIBMOUNT_VERSION"], [libmount version string])
898
899 AC_ARG_ENABLE([libmount-force-mountinfo],
900 AS_HELP_STRING([--enable-libmount-force-mountinfo], [ignore /etc/mtab in all situations (recommended for systemd)]),
901 [], [enable_libmount_force_mountinfo=no]
902 )
903
904 AS_IF([test "x$enable_libmount_force_mountinfo" == xyes], [
905 AC_DEFINE([USE_LIBMOUNT_FORCE_MOUNTINFO], [1], [Define to 1 if want to ignore mtab in all situations.])
906 ])
907
908
909 dnl
910 dnl libsmartcols
911 dnl
912 AC_ARG_ENABLE([libsmartcols],
913 AS_HELP_STRING([--disable-libsmartcols], [do not build libsmartcols]),
914 [], [UL_DEFAULT_ENABLE([libsmartcols], [yes])]
915 )
916 UL_BUILD_INIT([libsmartcols])
917 AM_CONDITIONAL([BUILD_LIBSMARTCOLS], [test "x$build_libsmartcols" = xyes])
918 AM_CONDITIONAL([BUILD_LIBSMARTCOLS_TESTS], [test "x$build_libsmartcols" = xyes -a "x$enable_static" = xyes])
919
920 AC_SUBST([LIBSMARTCOLS_VERSION])
921 AC_SUBST([LIBSMARTCOLS_VERSION_INFO])
922 AC_DEFINE_UNQUOTED([LIBSMARTCOLS_VERSION], ["$LIBSMARTCOLS_VERSION"], [libsmartcols version string])
923
924
925 dnl
926 dnl libfdisk
927 dnl
928 AC_ARG_ENABLE([libfdisk],
929 AS_HELP_STRING([--disable-libfdisk], [do not build libfdisk]),
930 [], [UL_DEFAULT_ENABLE([libfdisk], [check])]
931 )
932 UL_BUILD_INIT([libfdisk])
933 UL_REQUIRES_BUILD([libfdisk], [libuuid])
934 AM_CONDITIONAL([BUILD_LIBFDISK], [test "x$build_libfdisk" = xyes])
935 AM_CONDITIONAL([BUILD_LIBFDISK_TESTS], [test "x$build_libfdisk" = xyes -a "x$enable_static" = xyes])
936
937 AS_IF([test "x$build_libblkid" = xyes],
938 [LIBFDISK_PC_REQUIRES="uuid blkid"],[LIBFDISK_PC_REQUIRES="uuid"])
939 AC_SUBST([LIBFDISK_PC_REQUIRES])
940
941 AC_SUBST([LIBFDISK_VERSION])
942 AC_SUBST([LIBFDISK_MAJOR_VERSION], $PACKAGE_VERSION_MAJOR)
943 AC_SUBST([LIBFDISK_MINOR_VERSION], $PACKAGE_VERSION_MINOR)
944 AC_SUBST([LIBFDISK_PATCH_VERSION], $PACKAGE_VERSION_RELEASE)
945 AC_SUBST([LIBFDISK_VERSION_INFO])
946 AC_DEFINE_UNQUOTED([LIBFDISK_VERSION], ["$LIBFDISK_VERSION"], [libfdisk version string])
947
948
949 UL_BUILD_INIT([fdisk], [check])
950 UL_REQUIRES_BUILD([fdisk], [libfdisk])
951 UL_REQUIRES_BUILD([fdisk], [libsmartcols])
952 AM_CONDITIONAL([BUILD_FDISK], [test "x$build_fdisk" = xyes])
953
954
955 UL_BUILD_INIT([sfdisk], [check])
956 UL_REQUIRES_BUILD([sfdisk], [libfdisk])
957 UL_REQUIRES_BUILD([sfdisk], [libsmartcols])
958 AM_CONDITIONAL([BUILD_SFDISK], [test "x$build_sfdisk" = xyes])
959
960
961 UL_BUILD_INIT([cfdisk], [check])
962 UL_REQUIRES_BUILD([cfdisk], [libfdisk])
963 UL_REQUIRES_BUILD([cfdisk], [libsmartcols])
964 UL_REQUIRES_HAVE([cfdisk], [ncurses,slang], [ncurses or slang library])
965 AM_CONDITIONAL([BUILD_CFDISK], [test "x$build_cfdisk" = xyes])
966
967
968 AC_ARG_ENABLE([mount],
969 AS_HELP_STRING([--disable-mount], [do not build mount(8) and umount(8)]),
970 [], [UL_DEFAULT_ENABLE([mount], [check])]
971 )
972 UL_BUILD_INIT([mount])
973 UL_REQUIRES_LINUX([mount])
974 UL_REQUIRES_BUILD([mount], [libmount])
975 AM_CONDITIONAL([BUILD_MOUNT], [test "x$build_mount" = xyes])
976
977
978 AC_ARG_ENABLE([losetup],
979 AS_HELP_STRING([--disable-losetup], [do not build losetup]),
980 [], [UL_DEFAULT_ENABLE([losetup], [check])]
981 )
982 UL_BUILD_INIT([losetup])
983 UL_REQUIRES_LINUX([losetup])
984 UL_REQUIRES_BUILD([losetup], [libsmartcols])
985 AM_CONDITIONAL([BUILD_LOSETUP], [test "x$build_losetup" = xyes])
986
987 AC_ARG_ENABLE([zramctl],
988 AS_HELP_STRING([--disable-zramctl], [do not build zramctl]),
989 [], [UL_DEFAULT_ENABLE([zramctl], [check])]
990 )
991 UL_BUILD_INIT([zramctl])
992 UL_REQUIRES_LINUX([zramctl])
993 UL_REQUIRES_BUILD([zramctl], [libsmartcols])
994 AM_CONDITIONAL([BUILD_ZRAMCTL], [test "x$build_zramctl" = xyes])
995
996 AC_ARG_ENABLE([fsck],
997 AS_HELP_STRING([--disable-fsck], [do not build fsck]),
998 [], [UL_DEFAULT_ENABLE([fsck], [check])]
999 )
1000 UL_BUILD_INIT([fsck])
1001 UL_REQUIRES_BUILD([fsck], [libmount])
1002 AM_CONDITIONAL([BUILD_FSCK], [test "x$build_fsck" = xyes])
1003
1004
1005 AC_ARG_ENABLE([partx],
1006 AS_HELP_STRING([--disable-partx], [do not build addpart, delpart, partx]),
1007 [], [UL_DEFAULT_ENABLE([partx], [check])]
1008 )
1009 UL_BUILD_INIT([partx])
1010 UL_REQUIRES_LINUX([partx])
1011 UL_REQUIRES_BUILD([partx], [libblkid])
1012 UL_REQUIRES_BUILD([partx], [libsmartcols])
1013 AM_CONDITIONAL([BUILD_PARTX], [test "x$build_partx" = xyes])
1014
1015
1016 AC_ARG_ENABLE([uuidd],
1017 AS_HELP_STRING([--disable-uuidd], [do not build the uuid daemon]),
1018 [], [UL_DEFAULT_ENABLE([uuidd], [check])]
1019 )
1020 UL_BUILD_INIT([uuidd])
1021 UL_REQUIRES_BUILD([uuidd], [libuuid])
1022 AS_IF([test "x$build_uuidd" = xyes], [
1023 AC_DEFINE([HAVE_UUIDD], [1], [Define to 1 if you want to use uuid daemon.])
1024 ])
1025 AM_CONDITIONAL([BUILD_UUIDD], [test "x$build_uuidd" = xyes])
1026
1027
1028 UL_BUILD_INIT([uuidgen], [check])
1029 UL_REQUIRES_BUILD([uuidgen], [libuuid])
1030 AM_CONDITIONAL([BUILD_UUIDGEN], [test "x$build_uuidgen" = xyes])
1031
1032 UL_BUILD_INIT([blkid], [check])
1033 UL_REQUIRES_BUILD([blkid], [libblkid])
1034 AM_CONDITIONAL([BUILD_BLKID], [test "x$build_blkid" = xyes])
1035
1036 UL_BUILD_INIT([findfs], [check])
1037 UL_REQUIRES_BUILD([findfs], [libblkid])
1038 AM_CONDITIONAL([BUILD_FINDFS], [test "x$build_findfs" = xyes])
1039
1040 UL_BUILD_INIT([wipefs], [check])
1041 UL_REQUIRES_BUILD([wipefs], [libblkid])
1042 AM_CONDITIONAL([BUILD_WIPEFS], [test "x$build_wipefs" = xyes])
1043
1044 UL_BUILD_INIT([findmnt], [check])
1045 UL_REQUIRES_BUILD([findmnt], [libmount])
1046 UL_REQUIRES_BUILD([findmnt], [libsmartcols])
1047 AM_CONDITIONAL([BUILD_FINDMNT], [test "x$build_findmnt" = xyes])
1048
1049
1050 AC_ARG_ENABLE([mountpoint],
1051 AS_HELP_STRING([--disable-mountpoint], [do not build mountpoint]),
1052 [], [UL_DEFAULT_ENABLE([mountpoint], [check])]
1053 )
1054 UL_BUILD_INIT([mountpoint])
1055 UL_REQUIRES_BUILD([mountpoint], [libmount])
1056 AM_CONDITIONAL([BUILD_MOUNTPOINT], [test "x$build_mountpoint" = xyes])
1057
1058
1059 AC_ARG_ENABLE([fallocate],
1060 AS_HELP_STRING([--disable-fallocate], [do not build fallocate]),
1061 [], [UL_DEFAULT_ENABLE([fallocate], [check])]
1062 )
1063 UL_BUILD_INIT([fallocate])
1064 UL_REQUIRES_LINUX([fallocate])
1065 UL_REQUIRES_SYSCALL_CHECK([fallocate], [UL_CHECK_SYSCALL([fallocate])])
1066 AM_CONDITIONAL([BUILD_FALLOCATE], [test "x$build_fallocate" = xyes])
1067
1068 AS_IF([test "x$build_fallocate" = xyes], [
1069 dnl check for valid fallocate() function
1070 dnl with 32 bits glibc 2.10, fallocate() exists but not fallocate64()
1071 dnl when _FILE_OFFSET_BITS==64, fallocate() is redirect to fallocate64()
1072 dnl and program can't be linked.
1073 dnl AC_CHECK_FUNC can't catch such errors since it's redefining
1074 dnl function prototype.
1075 AC_MSG_CHECKING([for valid fallocate() function])
1076 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1077 #ifdef HAVE_UNISTD_H
1078 # include <unistd.h>
1079 #endif
1080 #ifdef HAVE_SYS_TYPES_H
1081 # include <sys/types.h>
1082 #endif
1083 #ifdef HAVE_LINUX_FALLOC_H
1084 # include <linux/falloc.h>
1085 #endif
1086 #ifdef HAVE_FCNTL_H
1087 # include <fcntl.h>
1088 #endif
1089 ]],[[
1090 long ret;
1091 ret = fallocate(0, FALLOC_FL_KEEP_SIZE, 0xfffffffful, 0xfffffffful);
1092 if (ret != 0) {
1093 return 1;
1094 }
1095 ]])],[
1096 AC_MSG_RESULT([yes])
1097 AC_DEFINE([HAVE_FALLOCATE], [1], [Have valid fallocate() function])],[
1098 AC_MSG_RESULT([no])])
1099 ])
1100
1101
1102 AC_ARG_ENABLE([unshare],
1103 AS_HELP_STRING([--disable-unshare], [do not build unshare]),
1104 [], [UL_DEFAULT_ENABLE([unshare], [check])]
1105 )
1106 UL_BUILD_INIT([unshare])
1107 UL_REQUIRES_LINUX([unshare])
1108 UL_REQUIRES_SYSCALL_CHECK([unshare], [UL_CHECK_SYSCALL([unshare])])
1109 AM_CONDITIONAL([BUILD_UNSHARE], [test "x$build_unshare" = xyes])
1110 AC_CHECK_FUNCS([unshare])
1111
1112 AC_ARG_ENABLE([nsenter],
1113 AS_HELP_STRING([--disable-nsenter], [do not build nsenter]),
1114 [], [UL_DEFAULT_ENABLE([nsenter], [check])]
1115 )
1116 UL_BUILD_INIT([nsenter])
1117 UL_REQUIRES_LINUX([nsenter])
1118 UL_REQUIRES_SYSCALL_CHECK([nsenter], [UL_CHECK_SYSCALL([setns])], [setns])
1119 AM_CONDITIONAL([BUILD_NSENTER], [test "x$build_nsenter" = xyes])
1120 AC_CHECK_FUNCS([setns])
1121
1122 dnl setpriv depends on libcap-ng. It would be possible to build
1123 dnl a version of setpriv with limited functionality without libcap-ng,
1124 dnl but this isn't currently supported.
1125 UL_CHECK_LIB([cap-ng], [capng_apply], [cap_ng])
1126 AC_ARG_ENABLE([setpriv],
1127 AS_HELP_STRING([--disable-setpriv], [do not build setpriv]),
1128 [], [UL_DEFAULT_ENABLE([setpriv], [check])]
1129 )
1130 UL_BUILD_INIT([setpriv])
1131 UL_REQUIRES_LINUX([setpriv])
1132 UL_REQUIRES_HAVE([setpriv], [linux_securebits_h], [securebits.h header file])
1133 UL_REQUIRES_HAVE([setpriv], [cap_ng], [libcap-ng library])
1134 AM_CONDITIONAL([BUILD_SETPRIV], [test "x$build_setpriv" = xyes])
1135
1136
1137 AC_ARG_ENABLE([eject],
1138 AS_HELP_STRING([--disable-eject], [do not build eject]),
1139 [], [UL_DEFAULT_ENABLE([eject], [check])]
1140 )
1141 UL_BUILD_INIT([eject])
1142 UL_REQUIRES_LINUX([eject])
1143 UL_REQUIRES_BUILD([eject], [libmount])
1144 AM_CONDITIONAL([BUILD_EJECT], [test "x$build_eject" = xyes])
1145
1146
1147 AC_ARG_ENABLE([agetty],
1148 AS_HELP_STRING([--disable-agetty], [do not build agetty]),
1149 [], [UL_DEFAULT_ENABLE([agetty], [yes])]
1150 )
1151 UL_BUILD_INIT([agetty])
1152 AM_CONDITIONAL([BUILD_AGETTY], [test "x$build_agetty" = xyes])
1153 AS_IF([test "x$have_futimens" = xyes -a "x$have_inotify_init1" = xyes ], [
1154 AC_DEFINE([AGETTY_RELOAD], [1], [Enable agetty --reload feature])
1155 ],[
1156 AC_MSG_WARN([futimens or inotify_init1 not found; agetty(8) will not provide ---reload functionality])
1157 ])
1158
1159
1160 AC_ARG_ENABLE([cramfs],
1161 AS_HELP_STRING([--disable-cramfs], [do not build fsck.cramfs, mkfs.cramfs]),
1162 [], [UL_DEFAULT_ENABLE([cramfs], [check])]
1163 )
1164 UL_BUILD_INIT([cramfs])
1165 AC_CHECK_LIB([z], [crc32], [have_z=yes], [have_z=no])
1166 UL_REQUIRES_HAVE([cramfs], [z], [z library])
1167 AM_CONDITIONAL([BUILD_CRAMFS], [test "x$build_cramfs" = xyes])
1168
1169
1170 AC_ARG_ENABLE([bfs],
1171 AS_HELP_STRING([--disable-bfs], [do not build mkfs.bfs]),
1172 [], [UL_DEFAULT_ENABLE([bfs], [yes])]
1173 )
1174 UL_BUILD_INIT([bfs])
1175 AM_CONDITIONAL([BUILD_BFS], [test "x$build_bfs" = xyes])
1176
1177
1178 AC_ARG_ENABLE([minix],
1179 AS_HELP_STRING([--disable-minix], [do not build fsck.minix, mkfs.minix]),
1180 [], [UL_DEFAULT_ENABLE([minix], [yes])]
1181 )
1182 UL_BUILD_INIT([minix])
1183 AM_CONDITIONAL([BUILD_MINIX], [test "x$build_minix" = xyes])
1184
1185
1186 AC_ARG_ENABLE([fdformat],
1187 AS_HELP_STRING([--disable-fdformat], [do not build fdformat]),
1188 [], [UL_DEFAULT_ENABLE([fdformat], [check])]
1189 )
1190 UL_BUILD_INIT([fdformat])
1191 UL_REQUIRES_LINUX([fdformat])
1192 AM_CONDITIONAL([BUILD_FDFORMAT], [test "x$build_fdformat" = xyes])
1193
1194
1195 AC_ARG_ENABLE([hwclock],
1196 AS_HELP_STRING([--disable-hwclock], [do not build hwclock]),
1197 [], [UL_DEFAULT_ENABLE([hwclock], [check])]
1198 )
1199 have_linuxdummy=$linux_os
1200
1201 UL_BUILD_INIT([hwclock])
1202 UL_REQUIRES_HAVE([hwclock], [io, linuxdummy], [ioperm iopl function or Linux])
1203 AM_CONDITIONAL([BUILD_HWCLOCK], [test "x$build_hwclock" = xyes])
1204
1205
1206 UL_BUILD_INIT([mkfs], [yes])
1207 AM_CONDITIONAL([BUILD_MKFS], [test "x$build_mkfs" = xyes])
1208
1209 UL_BUILD_INIT([isosize], [yes])
1210 AM_CONDITIONAL([BUILD_ISOSIZE], [test "x$build_isosize" = xyes])
1211
1212
1213 UL_BUILD_INIT([fstrim], [check])
1214 UL_REQUIRES_LINUX([fstrim])
1215 UL_REQUIRES_BUILD([fstrim], [libmount])
1216 AM_CONDITIONAL([BUILD_FSTRIM], [test "x$build_fstrim" = xyes])
1217
1218
1219 UL_BUILD_INIT([swapon], [check])
1220 UL_REQUIRES_LINUX([swapon])
1221 UL_REQUIRES_BUILD([swapon], [libblkid])
1222 UL_REQUIRES_BUILD([swapon], [libmount])
1223 UL_REQUIRES_BUILD([swapon], [libsmartcols])
1224 AM_CONDITIONAL([BUILD_SWAPON], [test "x$build_swapon" = xyes])
1225
1226
1227 UL_BUILD_INIT([lsblk], [check])
1228 UL_REQUIRES_LINUX([lsblk])
1229 UL_REQUIRES_BUILD([lsblk], [libblkid])
1230 UL_REQUIRES_BUILD([lsblk], [libmount])
1231 UL_REQUIRES_BUILD([lsblk], [libsmartcols])
1232 AM_CONDITIONAL([BUILD_LSBLK], [test "x$build_lsblk" = xyes])
1233
1234
1235 UL_BUILD_INIT([lscpu], [check])
1236 UL_REQUIRES_LINUX([lscpu])
1237 UL_REQUIRES_BUILD([lscpu], [libsmartcols])
1238 UL_REQUIRES_HAVE([lscpu], [cpu_set_t], [cpu_set_t type])
1239 AM_CONDITIONAL([BUILD_LSCPU], [test "x$build_lscpu" = xyes])
1240
1241
1242 UL_BUILD_INIT([lslogins], [check])
1243 UL_REQUIRES_BUILD([lslogins], [libsmartcols])
1244 AM_CONDITIONAL([BUILD_LSLOGINS], [test "x$build_lslogins" = xyes])
1245
1246
1247 UL_BUILD_INIT([chcpu], [check])
1248 UL_REQUIRES_LINUX([chcpu])
1249 UL_REQUIRES_HAVE([chcpu], [cpu_set_t], [cpu_set_t type])
1250 AM_CONDITIONAL([BUILD_CHCPU], [test "x$build_chcpu" = xyes])
1251
1252
1253 AC_ARG_ENABLE([wdctl],
1254 AS_HELP_STRING([--disable-wdctl], [do not build wdctl]),
1255 [], [UL_DEFAULT_ENABLE([wdctl], [check])]
1256 )
1257 UL_BUILD_INIT([wdctl])
1258 UL_REQUIRES_LINUX([wdctl])
1259 UL_REQUIRES_BUILD([wdctl], [libsmartcols])
1260 UL_REQUIRES_HAVE([wdctl], [linux_watchdog_h], [linux/watchdog.h header file])
1261 AM_CONDITIONAL([BUILD_WDCTL], [test "x$build_wdctl" = xyes])
1262
1263
1264 UL_BUILD_INIT([swaplabel], [check])
1265 UL_REQUIRES_BUILD([swaplabel], [libblkid])
1266 AM_CONDITIONAL([BUILD_SWAPLABEL], [test "x$build_swaplabel" = xyes])
1267
1268
1269 UL_BUILD_INIT([mkswap], [yes])
1270 AM_CONDITIONAL([BUILD_MKSWAP], [test "x$build_mkswap" = xyes])
1271 AS_IF([test "x$build_mkswap" = xyes -a "x$build_libuuid" != xyes], [
1272 AC_MSG_WARN([uuid library is not found; mkswap(8) will not generate UUIDs])
1273 ])
1274
1275 UL_BUILD_INIT([cal], [yes])
1276 AM_CONDITIONAL([BUILD_CAL], [test "x$build_cal" = xyes])
1277
1278 UL_BUILD_INIT([logger], [yes])
1279 AM_CONDITIONAL([BUILD_LOGGER], [test "x$build_logger" = xyes])
1280
1281 UL_BUILD_INIT([look], [yes])
1282 AM_CONDITIONAL([BUILD_LOOK], [test "x$build_look" = xyes])
1283
1284 UL_BUILD_INIT([mcookie], [yes])
1285 AM_CONDITIONAL([BUILD_MCOOKIE], [test "x$build_mcookie" = xyes])
1286
1287 UL_BUILD_INIT([namei], [yes])
1288 AM_CONDITIONAL([BUILD_NAMEI], [test "x$build_namei" = xyes])
1289
1290 UL_BUILD_INIT([whereis], [yes])
1291 AM_CONDITIONAL([BUILD_WHEREIS], [test "x$build_whereis" = xyes])
1292
1293 UL_BUILD_INIT([getopt], [yes])
1294 AM_CONDITIONAL([BUILD_GETOPT], [test "x$build_getopt" = xyes])
1295
1296
1297 UL_BUILD_INIT([blockdev], [check])
1298 UL_REQUIRES_LINUX([blockdev])
1299 AM_CONDITIONAL([BUILD_BLOCKDEV], [test "x$build_blockdev" = xyes])
1300
1301
1302 UL_BUILD_INIT([prlimit], [check])
1303 UL_REQUIRES_LINUX([prlimit])
1304 UL_REQUIRES_BUILD([prlimit], [libsmartcols])
1305 UL_REQUIRES_SYSCALL_CHECK([prlimit], [UL_CHECK_SYSCALL([prlimit64])], [prlimit64])
1306 AM_CONDITIONAL([BUILD_PRLIMIT], [test "x$build_prlimit" = xyes])
1307 AS_IF([test "x$build_prlimit" = xyes], [
1308 AC_CHECK_FUNCS([prlimit])
1309 ])
1310
1311
1312 UL_BUILD_INIT([lslocks], [check])
1313 UL_REQUIRES_LINUX([lslocks])
1314 UL_REQUIRES_BUILD([lslocks], [libmount])
1315 UL_REQUIRES_BUILD([lslocks], [libsmartcols])
1316 AM_CONDITIONAL([BUILD_LSLOCKS], [test "x$build_lslocks" = xyes])
1317
1318
1319 AC_ARG_ENABLE([switch_root],
1320 AS_HELP_STRING([--disable-switch_root], [do not build switch_root]),
1321 [], [UL_DEFAULT_ENABLE([switch_root], [check])]
1322 )
1323 UL_BUILD_INIT([switch_root])
1324 UL_REQUIRES_LINUX([switch_root])
1325 UL_REQUIRES_HAVE([switch_root], [openat], [openat function])
1326 AM_CONDITIONAL([BUILD_SWITCH_ROOT], [test "x$build_switch_root" = xyes])
1327
1328
1329 AC_ARG_ENABLE([pivot_root],
1330 AS_HELP_STRING([--disable-pivot_root], [do not build pivot_root]),
1331 [], [UL_DEFAULT_ENABLE([pivot_root], [check])]
1332 )
1333 UL_BUILD_INIT([pivot_root])
1334 UL_REQUIRES_LINUX([pivot_root])
1335 UL_REQUIRES_SYSCALL_CHECK([pivot_root], [UL_CHECK_SYSCALL([pivot_root])])
1336 AM_CONDITIONAL([BUILD_PIVOT_ROOT], [test "x$build_pivot_root" = xyes])
1337
1338
1339 UL_BUILD_INIT([flock], [yes])
1340 UL_REQUIRES_HAVE([flock], [timer], [timer_create function])
1341 AM_CONDITIONAL([BUILD_FLOCK], [test "x$build_flock" = xyes])
1342
1343 UL_BUILD_INIT([ipcmk], [yes])
1344 AM_CONDITIONAL([BUILD_IPCMK], [test "x$build_ipcmk" = xyes])
1345
1346 UL_BUILD_INIT([ipcrm], [yes])
1347 AM_CONDITIONAL([BUILD_IPCRM], [test "x$build_ipcrm" = xyes])
1348
1349 UL_BUILD_INIT([ipcs], [yes])
1350 AM_CONDITIONAL([BUILD_IPCS], [test "x$build_ipcs" = xyes])
1351
1352 UL_BUILD_INIT([renice], [yes])
1353 AM_CONDITIONAL([BUILD_RENICE], [test "x$build_renice" = xyes])
1354
1355 UL_BUILD_INIT([setsid], [yes])
1356 AM_CONDITIONAL([BUILD_SETSID], [test "x$build_setsid" = xyes])
1357
1358 UL_BUILD_INIT([readprofile], [check])
1359 UL_REQUIRES_LINUX([readprofile])
1360 AM_CONDITIONAL([BUILD_READPROFILE], [test "x$build_readprofile" = xyes])
1361
1362 UL_BUILD_INIT([dmesg], [check])
1363 UL_REQUIRES_LINUX([dmesg])
1364 AM_CONDITIONAL([BUILD_DMESG], [test "x$build_dmesg" = xyes])
1365
1366 UL_BUILD_INIT([ctrlaltdel], [check])
1367 UL_REQUIRES_LINUX([ctrlaltdel])
1368 AM_CONDITIONAL([BUILD_CTRLALTDEL], [test "x$build_ctrlaltdel" = xyes])
1369
1370 UL_BUILD_INIT([fsfreeze], [check])
1371 UL_REQUIRES_LINUX([fsfreeze])
1372 AM_CONDITIONAL([BUILD_FSFREEZE], [test "x$build_fsfreeze" = xyes])
1373
1374 UL_BUILD_INIT([blkdiscard], [check])
1375 UL_REQUIRES_LINUX([blkdiscard])
1376 AM_CONDITIONAL([BUILD_BLKDISCARD], [test "x$build_blkdiscard" = xyes])
1377
1378 UL_BUILD_INIT([ldattach], [check])
1379 UL_REQUIRES_LINUX([ldattach])
1380 AM_CONDITIONAL([BUILD_LDATTACH], [test "x$build_ldattach" = xyes])
1381
1382 UL_BUILD_INIT([rtcwake], [check])
1383 UL_REQUIRES_LINUX([rtcwake])
1384 AM_CONDITIONAL([BUILD_RTCWAKE], [test "x$build_rtcwake" = xyes])
1385
1386 UL_BUILD_INIT([setarch], [check])
1387 UL_REQUIRES_LINUX([setarch])
1388 AM_CONDITIONAL([BUILD_SETARCH], [test "x$build_setarch" = xyes])
1389
1390 UL_BUILD_INIT([script], [yes])
1391 AM_CONDITIONAL([BUILD_SCRIPT], [test "x$build_script" = xyes])
1392
1393 UL_BUILD_INIT([scriptreplay], [yes])
1394 AM_CONDITIONAL([BUILD_SCRIPTREPLAY], [test "x$build_scriptreplay" = xyes])
1395
1396 UL_BUILD_INIT([col], [yes])
1397 AM_CONDITIONAL([BUILD_COL], [test "x$build_col" = xyes])
1398
1399 UL_BUILD_INIT([colcrt], [yes])
1400 AM_CONDITIONAL([BUILD_COLCRT], [test "x$build_colcrt" = xyes])
1401
1402 UL_BUILD_INIT([colrm], [yes])
1403 AM_CONDITIONAL([BUILD_COLRM], [test "x$build_colrm" = xyes])
1404
1405 UL_BUILD_INIT([column], [yes])
1406 AM_CONDITIONAL([BUILD_COLUMN], [test "x$build_column" = xyes])
1407
1408 UL_BUILD_INIT([hexdump], [yes])
1409 AM_CONDITIONAL([BUILD_HEXDUMP], [test "x$build_hexdump" = xyes])
1410
1411 UL_BUILD_INIT([rev], [yes])
1412 AM_CONDITIONAL([BUILD_REV], [test "x$build_rev" = xyes])
1413
1414 UL_BUILD_INIT([tailf], [yes])
1415 AM_CONDITIONAL([BUILD_TAILF], [test "x$build_tailf" = xyes])
1416
1417
1418 AC_ARG_ENABLE([tunelp],
1419 AS_HELP_STRING([--enable-tunelp], [build tunelp]),
1420 [], [UL_DEFAULT_ENABLE([tunelp], [no])]
1421 )
1422 UL_BUILD_INIT([tunelp])
1423 UL_REQUIRES_LINUX([tunelp])
1424 AM_CONDITIONAL([BUILD_TUNELP], [test "x$build_tunelp" = xyes])
1425
1426
1427 AC_ARG_ENABLE([kill],
1428 AS_HELP_STRING([--disable-kill], [do not build kill]),
1429 [], [UL_DEFAULT_ENABLE([kill], [check])]
1430 )
1431 UL_BUILD_INIT([kill])
1432 UL_REQUIRES_LINUX([kill])
1433 AM_CONDITIONAL([BUILD_KILL], [test "x$build_kill" = xyes])
1434
1435 dnl Don't use UL_DEFAULT_ENABLE() here, deprecated stuff has to be insensitive
1436 dnl to --enable-all-programs.
1437 AC_ARG_ENABLE([deprecated-last],
1438 AS_HELP_STRING([--enable-deprecated-last], [build old deprecated last]),
1439 [], [enable_deprecated_last=no]
1440 )
1441 UL_BUILD_INIT([deprecated_last])
1442 AM_CONDITIONAL([BUILD_DEPRECATED_LAST], [test "x$build_deprecated_last" = xyes])
1443
1444
1445 AC_ARG_ENABLE([last],
1446 AS_HELP_STRING([--disable-last], [do not build last]),
1447 [], [UL_DEFAULT_ENABLE([last], [check])]
1448 )
1449 UL_BUILD_INIT([last])
1450 UL_CONFLICTS_BUILD([last], [deprecated_last], [old deprecated last version])
1451 AM_CONDITIONAL([BUILD_LAST], [test "x$build_last" = xyes])
1452
1453
1454 AC_ARG_ENABLE([utmpdump],
1455 AS_HELP_STRING([--disable-utmpdump], [do not build utmpdump]),
1456 [], [UL_DEFAULT_ENABLE([utmpdump], [yes])]
1457 )
1458 UL_BUILD_INIT([utmpdump])
1459 AM_CONDITIONAL([BUILD_UTMPDUMP], [test "x$build_utmpdump" = xyes])
1460
1461
1462 AC_ARG_ENABLE([line],
1463 AS_HELP_STRING([--enable-line], [build line]),
1464 [], [UL_DEFAULT_ENABLE([line], [no])]
1465 )
1466 UL_BUILD_INIT([line])
1467 AM_CONDITIONAL([BUILD_LINE], [test "x$build_line" = xyes])
1468
1469
1470 AC_ARG_ENABLE([mesg],
1471 AS_HELP_STRING([--disable-mesg], [do not build mesg]),
1472 [], [UL_DEFAULT_ENABLE([mesg], [yes])]
1473 )
1474 UL_BUILD_INIT([mesg])
1475 AM_CONDITIONAL([BUILD_MESG], [test "x$build_mesg" = xyes])
1476
1477
1478 AC_ARG_ENABLE([raw],
1479 AS_HELP_STRING([--disable-raw], [do not build raw]),
1480 [], [UL_DEFAULT_ENABLE([raw], [check])]
1481 )
1482 UL_BUILD_INIT([raw])
1483 UL_REQUIRES_LINUX([raw])
1484 UL_REQUIRES_HAVE([raw], [linux_raw_h], [raw.h header file])
1485 AM_CONDITIONAL([BUILD_RAW], [test "x$build_raw" = xyes])
1486
1487
1488 AC_ARG_ENABLE([rename],
1489 AS_HELP_STRING([--disable-rename], [do not build rename]),
1490 [], [UL_DEFAULT_ENABLE([rename], [yes])]
1491 )
1492 UL_BUILD_INIT([rename])
1493 AM_CONDITIONAL([BUILD_RENAME], [test "x$build_rename" = xyes])
1494
1495
1496 AC_ARG_ENABLE([reset],
1497 AS_HELP_STRING([--enable-reset], [build reset]),
1498 [], [UL_DEFAULT_ENABLE([reset], [no])]
1499 )
1500 UL_BUILD_INIT([reset])
1501 AM_CONDITIONAL([BUILD_RESET], [test "x$build_reset" = xyes])
1502
1503
1504 AC_ARG_ENABLE([vipw],
1505 AS_HELP_STRING([--enable-vipw], [build vipw]),
1506 [], [UL_DEFAULT_ENABLE([vipw], [no])]
1507 )
1508 UL_BUILD_INIT([vipw])
1509 AM_CONDITIONAL([BUILD_VIPW], [test "x$build_vipw" = xyes])
1510
1511
1512 AC_ARG_ENABLE([newgrp],
1513 AS_HELP_STRING([--enable-newgrp], [build newgrp]),
1514 [], [UL_DEFAULT_ENABLE([newgrp], [no])]
1515 )
1516 UL_BUILD_INIT([newgrp])
1517 AM_CONDITIONAL([BUILD_NEWGRP], [test "x$build_newgrp" = xyes])
1518
1519
1520 AC_ARG_WITH([user], AS_HELP_STRING([--without-user], [compile without libuser (remote chsh)]),
1521 [], [with_user=check]
1522 )
1523 have_user=no
1524 AS_IF([test "x$with_user" != xno], [
1525 PKG_CHECK_MODULES(LIBUSER,[libuser >= 0.58], [have_user=yes], [have_user=no])
1526 AS_CASE([$with_user:$have_user],
1527 [yes:no],
1528 [AC_MSG_ERROR([user selected but libuser not found])],
1529 [*:yes],
1530 [AC_DEFINE([HAVE_LIBUSER], [1], [Define if libuser is available])]
1531 )
1532 # temporary solution, libuser has stupid .pc where are exported all
1533 # private dependencies to Requires: instead of Requires.private:
1534 AS_IF([test "x$have_user" = xyes], [
1535 LIBUSER_LIBS=-luser
1536 ])
1537 ])
1538 AM_CONDITIONAL([HAVE_USER], [test "x$have_user" = xyes])
1539
1540 AC_ARG_ENABLE([chfn-chsh-password],
1541 AS_HELP_STRING([--disable-chfn-chsh-password], [do not require the user to enter the password in chfn and chsh]),
1542 [], [enable_chfn_chsh_password=yes]
1543 )
1544
1545 AC_ARG_ENABLE([chfn-chsh],
1546 AS_HELP_STRING([--enable-chfn-chsh], [build chfn and chsh]),
1547 [], [UL_DEFAULT_ENABLE([chfn_chsh], [check])]
1548 )
1549 UL_BUILD_INIT([chfn_chsh])
1550
1551 AS_IF([test "x$enable_chfn_chsh_password" = xyes -o "x$have_user" = xyes], [
1552 UL_REQUIRES_HAVE([chfn_chsh], [security_pam_appl_h], [PAM header file])
1553 AC_DEFINE([CHFN_CHSH_PASSWORD], [1], [Should chfn and chsh require the user to enter the password?])
1554 ])
1555 AM_CONDITIONAL([BUILD_CHFN_CHSH], [test "x$build_chfn_chsh" = xyes])
1556 AM_CONDITIONAL([CHFN_CHSH_PASSWORD], [test "x$enable_chfn_chsh_password" = xyes])
1557
1558 AC_ARG_ENABLE([chsh-only-listed],
1559 AS_HELP_STRING([--disable-chsh-only-listed], [chsh: allow shells not in /etc/shells]),
1560 [], enable_chsh_only_listed=yes
1561 )
1562
1563 AS_IF([test "x$enable_chsh_only_listed" = xyes], [
1564 AC_DEFINE([ONLY_LISTED_SHELLS], [1], [Should chsh allow only shells in /etc/shells?])
1565 ])
1566
1567
1568 AC_ARG_ENABLE([login],
1569 AS_HELP_STRING([--disable-login], [do not build login]),
1570 [], [UL_DEFAULT_ENABLE([login], [check])]
1571 )
1572 UL_BUILD_INIT([login])
1573 UL_REQUIRES_HAVE([login], [security_pam_appl_h], [PAM header file])
1574 UL_REQUIRES_HAVE([login], [security_pam_misc_h, security_openpam_h], [PAM conversation functions])
1575 AM_CONDITIONAL([BUILD_LOGIN], [test "x$build_login" = xyes])
1576
1577 AC_ARG_ENABLE([login-chown-vcs],
1578 AS_HELP_STRING([--enable-login-chown-vcs], [let login chown /dev/vcsN]),
1579 [], [enable_login_chown_vcs=no]
1580 )
1581
1582 AS_IF([test "x$enable_login_chown_vcs" = xyes], [
1583 AC_DEFINE([LOGIN_CHOWN_VCS], [1], [Should login chown /dev/vcsN?])
1584 ])
1585
1586 AC_ARG_ENABLE([login-stat-mail],
1587 AS_HELP_STRING([--enable-login-stat-mail], [let login stat() the mailbox]),
1588 [], [enable_login_stat_mail=no]
1589 )
1590
1591 AS_IF([test "x$enable_login_stat_mail" = xyes], [
1592 AC_DEFINE([LOGIN_STAT_MAIL], [1], [Should login stat() the mailbox?])
1593 ])
1594
1595
1596 AC_ARG_ENABLE([nologin],
1597 AS_HELP_STRING([--disable-nologin], [do not build nologin]),
1598 [], [UL_DEFAULT_ENABLE([nologin], [yes])]
1599 )
1600 UL_BUILD_INIT([nologin])
1601 AM_CONDITIONAL([BUILD_NOLOGIN], [test "x$build_nologin" = xyes])
1602
1603
1604 AC_ARG_ENABLE([sulogin],
1605 AS_HELP_STRING([--disable-sulogin], [do not build sulogin]),
1606 [], [UL_DEFAULT_ENABLE([sulogin], [yes])]
1607 )
1608 UL_BUILD_INIT([sulogin])
1609 AM_CONDITIONAL([BUILD_SULOGIN], [test "x$build_sulogin" = xyes])
1610
1611
1612 AC_ARG_ENABLE([su],
1613 AS_HELP_STRING([--disable-su], [do not build su]),
1614 [], [UL_DEFAULT_ENABLE([su], [check])]
1615 )
1616 UL_BUILD_INIT([su])
1617 UL_REQUIRES_HAVE([su], [security_pam_appl_h], [PAM header file])
1618 AM_CONDITIONAL([BUILD_SU], [test "x$build_su" = xyes])
1619
1620
1621 AC_ARG_ENABLE([runuser],
1622 AS_HELP_STRING([--disable-runuser], [do not build runuser]),
1623 [], [UL_DEFAULT_ENABLE([runuser], [check])]
1624 )
1625 UL_BUILD_INIT([runuser])
1626 UL_REQUIRES_HAVE([runuser], [security_pam_appl_h], [PAM header file])
1627 AM_CONDITIONAL([BUILD_RUNUSER], [test "x$build_runuser" = xyes])
1628
1629
1630 AC_ARG_ENABLE([ul],
1631 AS_HELP_STRING([--disable-ul], [do not build ul]),
1632 [], [UL_DEFAULT_ENABLE([ul], [check])]
1633 )
1634 UL_BUILD_INIT([ul])
1635 UL_REQUIRES_HAVE([ul], [ncurses, tinfo], [ncurses or tinfo libraries])
1636 AM_CONDITIONAL([BUILD_UL], [test "x$build_ul" = xyes])
1637
1638
1639 AC_ARG_ENABLE([more],
1640 AS_HELP_STRING([--disable-more], [do not build more]),
1641 [], [UL_DEFAULT_ENABLE([more], [check])]
1642 )
1643 UL_BUILD_INIT([more])
1644 UL_REQUIRES_HAVE([more], [ncurses, tinfo, termcap], [ncurses, tinfo or termcap libraries])
1645 AM_CONDITIONAL([BUILD_MORE], [test "x$build_more" = xyes])
1646
1647
1648 AC_ARG_ENABLE([pg],
1649 AS_HELP_STRING([--disable-pg], [do not build pg]),
1650 [], [UL_DEFAULT_ENABLE([pg], [check])]
1651 )
1652 UL_BUILD_INIT([pg])
1653 UL_REQUIRES_HAVE([pg], [ncurses], [ncurses or ncursesw library])
1654 AM_CONDITIONAL([BUILD_PG], [test "x$build_pg" = xyes])
1655
1656
1657 AC_ARG_ENABLE([setterm],
1658 AS_HELP_STRING([--disable-setterm], [do not build setterm]),
1659 [], [UL_DEFAULT_ENABLE([setterm], [check])]
1660 )
1661 UL_BUILD_INIT([setterm])
1662 UL_REQUIRES_LINUX([setterm])
1663 UL_REQUIRES_HAVE([setterm], [ncurses], [ncurses library])
1664 AM_CONDITIONAL([BUILD_SETTERM], [test "x$build_setterm" = xyes])
1665
1666 # build_schedutils= is just configure-only variable to control
1667 # ionice, taskset and chrt
1668 AC_ARG_ENABLE([schedutils],
1669 AS_HELP_STRING([--disable-schedutils], [do not build chrt, ionice, taskset]),
1670 [], [UL_DEFAULT_ENABLE([schedutils], [yes])]
1671 )
1672 UL_BUILD_INIT([schedutils])
1673
1674 UL_BUILD_INIT([ionice], [check])
1675 UL_REQUIRES_BUILD([ionice], [schedutils])
1676 UL_REQUIRES_SYSCALL_CHECK([ionice],
1677 [UL_CHECK_SYSCALL([ioprio_set],
1678 [alpha], [442],
1679 [i*86], [289],
1680 [ia64*], [1274],
1681 [powerpc*], [273],
1682 [s390*], [282],
1683 [sparc*], [196],
1684 [sh*], [288],
1685 [x86_64*], [251])],
1686 [ioprio_set])
1687
1688 UL_REQUIRES_SYSCALL_CHECK([ionice],
1689 [UL_CHECK_SYSCALL([ioprio_get],
1690 [alpha], [443],
1691 [i*86], [290],
1692 [ia64*], [1275],
1693 [powerpc*], [274],
1694 [s390*], [283],
1695 [sparc*], [218],
1696 [sh*], [289],
1697 [x86_64*], [252])],
1698 [ioprio_get])
1699
1700 AM_CONDITIONAL([BUILD_IONICE], [test "x$build_ionice" = xyes])
1701
1702 UL_BUILD_INIT([taskset], [check])
1703 UL_REQUIRES_BUILD([taskset], [schedutils])
1704 UL_REQUIRES_HAVE([taskset], [cpu_set_t], [cpu_set_t type])
1705 UL_REQUIRES_SYSCALL_CHECK([taskset],
1706 [UL_CHECK_SYSCALL([sched_getaffinity])],
1707 [sched_getaffinity])
1708 AM_CONDITIONAL([BUILD_TASKSET], [test "x$build_taskset" = xyes])
1709
1710 UL_BUILD_INIT([chrt], [check])
1711 UL_REQUIRES_BUILD([chrt], [schedutils])
1712 AM_CONDITIONAL([BUILD_CHRT], [test "x$build_chrt" = xyes])
1713
1714
1715 AC_ARG_ENABLE([wall],
1716 AS_HELP_STRING([--disable-wall], [do not build wall]),
1717 [], [UL_DEFAULT_ENABLE([wall], [yes])]
1718 )
1719 UL_BUILD_INIT([wall])
1720 AM_CONDITIONAL([BUILD_WALL], [test "x$build_wall" = xyes])
1721
1722
1723 AC_ARG_ENABLE([write],
1724 AS_HELP_STRING([--enable-write], [build write]),
1725 [], [UL_DEFAULT_ENABLE([write], [no])]
1726 )
1727 UL_BUILD_INIT([write])
1728 AM_CONDITIONAL([BUILD_WRITE], [test "x$build_write" = xyes])
1729
1730
1731 AC_ARG_WITH([systemd],
1732 AS_HELP_STRING([--with-systemd], [build with support for systemd]),
1733 [], [with_systemd=check]
1734 )
1735
1736 have_systemd=no
1737 AS_IF([test "x$with_systemd" != xno], [
1738 # new version -- all libsystemd-* libs merged into libsystemd
1739 PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [have_systemd=yes], [have_systemd=no])
1740 # old versions
1741 AS_IF([test "x$have_systemd" != "xyes"], [
1742 PKG_CHECK_MODULES([SYSTEMD_DAEMON], [libsystemd-daemon],
1743 [have_systemd_daemon=yes], [have_systemd_daemon=no])
1744 PKG_CHECK_MODULES([SYSTEMD_JOURNAL], [libsystemd-journal],
1745 [have_systemd_journal=yes], [have_systemd_journal=no])
1746 AS_IF([test "x$have_systemd_daemon" = "xyes" -a "x$have_systemd_journal" = "xyes" ],[
1747 have_systemd=yes])
1748 ])
1749 AS_CASE([$with_systemd:$have_systemd],
1750 [yes:no],
1751 [AC_MSG_ERROR([systemd expected but libsystemd not found])],
1752 [*:yes],
1753 AC_DEFINE([HAVE_LIBSYSTEMD], [1], [Define if libsystemd is available])
1754 )
1755 ])
1756 AM_CONDITIONAL([HAVE_SYSTEMD], [test "x$have_systemd" = xyes])
1757
1758
1759 AC_ARG_WITH([systemdsystemunitdir],
1760 AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [directory for systemd service files]),
1761 [], [with_systemdsystemunitdir=`$PKG_CONFIG --variable=systemdsystemunitdir systemd`])
1762
1763 AS_IF([test "x$with_systemdsystemunitdir" != "xno"], [
1764 AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
1765 ])
1766
1767
1768 AC_ARG_WITH([smack],
1769 AS_HELP_STRING([--with-smack], [build with SMACK support]),
1770 [], [with_smack=no]
1771 )
1772 AS_IF([test "x$with_smack" = xyes], [
1773 AC_DEFINE([HAVE_SMACK], [1], [Add SMACK support])
1774 ])
1775
1776
1777 AC_ARG_WITH([bashcompletiondir],
1778 AS_HELP_STRING([--with-bashcompletiondir=DIR], [Bash completions directory]),
1779 [],
1780 [AS_IF([`$PKG_CONFIG --exists bash-completion`], [
1781 with_bashcompletiondir=`$PKG_CONFIG --variable=completionsdir bash-completion`
1782 ], [
1783 with_bashcompletiondir=${datadir}/bash-completion/completions
1784 ])
1785 ])
1786 AC_SUBST([bashcompletiondir], [$with_bashcompletiondir])
1787
1788 AC_ARG_ENABLE([bash-completion],
1789 AS_HELP_STRING([--disable-bash-completion], [do not install bash completion files]),
1790 [], [enable_bash_completion=yes]
1791 )
1792
1793 AM_CONDITIONAL([BUILD_BASH_COMPLETION], [test "x$enable_bash_completion" = xyes])
1794
1795
1796 AC_ARG_WITH([python],
1797 AS_HELP_STRING([--without-python], [do not build python bindings, use --with-python={2,3} to force version]),
1798 [], [with_python=check withval=check]
1799 )
1800
1801 have_python=no
1802 have_libpython=no
1803 AS_IF([test "x$with_python" != xno], [
1804 # We follow distributions default and look for PKG module name "python"
1805 # (minimal version is 2) but if major version is explicitly specified by
1806 # --with-python=2 or --with-python=3 then we look for PKG module "python2" or
1807 # "python3".
1808 AS_IF([test "x$withval" != xno -a "x$withval" != xyes -a "x$withval" != xcheck],
1809 [pymajor="$withval"; PYTHON=python${pymajor}], [pymajor="2"])
1810
1811 # check for python interpreter
1812 AM_PATH_PYTHON([$pymajor], [have_python=yes], [have_python=no])
1813 AS_CASE([$with_python:$have_python],
1814 [yes:no],
1815 [AC_MSG_ERROR([python selected but python interpreter not found])],
1816 [check:no],
1817 [AC_MSG_WARN([python interpreter not found, do not build python bindings])],
1818 [*:yes],
1819 # check for python development stuff
1820 [PKG_CHECK_MODULES([PYTHON], [python-$PYTHON_VERSION],
1821 [have_libpython=yes], [have_libpython=no])]
1822 )
1823 ])
1824
1825
1826 AC_ARG_ENABLE([pylibmount],
1827 AS_HELP_STRING([--disable-pylibmount], [do not build pylibmount]),
1828 [], [UL_DEFAULT_ENABLE([pylibmount], [check])]
1829 )
1830 UL_BUILD_INIT([pylibmount])
1831 UL_REQUIRES_HAVE([pylibmount], [libpython], [libpython])
1832 UL_REQUIRES_BUILD([pylibmount], [libmount])
1833 AM_CONDITIONAL([BUILD_PYLIBMOUNT], [test "x$build_pylibmount" = "xyes"])
1834
1835
1836 AC_ARG_ENABLE([pg-bell],
1837 AS_HELP_STRING([--disable-pg-bell], [let pg not ring the bell on invalid keys]),
1838 [], [enable_pg_bell=yes]
1839 )
1840
1841 AS_IF([test "x$enable_pg_bell" = xyes], [
1842 AC_DEFINE([PG_BELL], [1], [Should pg ring the bell on invalid keys?])
1843 ])
1844
1845
1846 AC_DEFUN([FS_PATHS_DEFAULT], [/sbin:/sbin/fs.d:/sbin/fs])
1847 AC_ARG_ENABLE([fs-paths-default],
1848 AS_HELP_STRING([--enable-fs-paths-default=paths], [default search path for fs helpers @<:@FS_PATHS_DEFAULT@:>@]),
1849 [AS_CASE([$enableval],
1850 [yes], [fs_paths_defaults="FS_PATHS_DEFAULT"],
1851 [no], [fs_paths_defaults=""],
1852 [fs_paths_defaults="$enableval"]
1853 )],
1854 [fs_paths_defaults="FS_PATHS_DEFAULT"]
1855 )
1856 AC_ARG_ENABLE([fs-paths-extra],
1857 AS_HELP_STRING([--enable-fs-paths-extra=paths], [additional search paths for fs helpers]),
1858 [AS_CASE([$enableval],
1859 [yes|no], [fs_paths_extra=""],
1860 [fs_paths_extra="$enableval"]
1861 )],
1862 [fs_paths_extra=""]
1863 )
1864 fs_paths="$fs_paths_defaults"
1865 AS_IF([test "x$fs_paths_extra" != "x"], [
1866 AS_IF([test "x$fs_paths" != "x"], [
1867 fs_paths="${fs_paths}:"
1868 ])
1869 fs_paths="${fs_paths}${fs_paths_extra}"
1870 ])
1871 AC_DEFINE_UNQUOTED([FS_SEARCH_PATH], "$fs_paths", [search path for fs helpers])
1872
1873
1874 AC_ARG_ENABLE([use-tty-group],
1875 AS_HELP_STRING([--disable-use-tty-group], [do not install wall and write setgid tty]),
1876 [], [enable_use_tty_group=yes]
1877 )
1878 AM_CONDITIONAL([USE_TTY_GROUP], [test "x$enable_use_tty_group" = xyes])
1879
1880 AS_IF([test "x$enable_use_tty_group" = xyes], [
1881 AC_DEFINE([USE_TTY_GROUP], [1], [Should wall and write be installed setgid tty?])
1882 ])
1883
1884
1885 AC_ARG_ENABLE([sulogin-emergency-mount],
1886 AS_HELP_STRING([--enable-sulogin-emergency-mount],
1887 [use emergency mount of /dev and /proc for sulogin]),
1888 [], [enable_sulogin_emergency_mount=no]
1889 )
1890
1891 AS_IF([test "x$enable_sulogin_emergency_mount" = xyes], [
1892 AC_DEFINE([USE_SULOGIN_EMERGENCY_MOUNT], [1],
1893 [Should sulogin use a emergency mount of /dev and /proc?])
1894 ])
1895
1896
1897 AC_ARG_ENABLE([usrdir-path],
1898 AS_HELP_STRING([--enable-usrdir-path], [use only /usr paths in PATH env. variable (recommended on systems with /bin -> /usr/bin symlinks)]),
1899 [], [enable_usrdir_path=no]
1900 )
1901
1902 AS_IF([test "x$enable_usrdir_path" == xyes], [
1903 AC_DEFINE([USE_USRDIR_PATHS_ONLY], [1], [Define to 1 to remove /bin and /sbin from PATH env.variable])
1904 ])
1905
1906
1907 AC_ARG_ENABLE([makeinstall-chown],
1908 AS_HELP_STRING([--disable-makeinstall-chown], [do not do chown-like operations during "make install"]),
1909 [], [enable_makeinstall_chown=yes]
1910 )
1911 AM_CONDITIONAL([MAKEINSTALL_DO_CHOWN], [test "x$enable_makeinstall_chown" = xyes])
1912
1913
1914 AC_ARG_ENABLE([makeinstall-setuid],
1915 AS_HELP_STRING([--disable-makeinstall-setuid], [do not do setuid chmod operations during "make install"]),
1916 [], [enable_makeinstall_setuid=yes]
1917 )
1918 AM_CONDITIONAL([MAKEINSTALL_DO_SETUID], [test "x$enable_makeinstall_setuid" = xyes])
1919
1920
1921 AC_ARG_ENABLE([colors-default],
1922 AS_HELP_STRING([--disable-colors-default], [do not colorize output from utils by default]),
1923 [], [enable_colors_default=yes]
1924 )
1925 AS_IF([test "x$enable_colors_default" = xyes], [
1926 AC_DEFINE([USE_COLORS_BY_DEFAULT], [1], [Enables colorized output from utils by default])
1927 ])
1928
1929
1930 AC_ARG_VAR([SUID_CFLAGS],
1931 [CFLAGS used for binaries which are usually with the suid bit])
1932 AC_ARG_VAR([SUID_LDFLAGS],
1933 [LDFLAGS used for binaries which are usually with the suid bit])
1934
1935 AC_ARG_VAR([DAEMON_CFLAGS],
1936 [CFLAGS used for binaries which are usually executed as daemons])
1937 AC_ARG_VAR([DAEMON_LDFLAGS],
1938 [LDFLAGS used for binaries which are usually executed as daemons])
1939
1940 AC_ARG_VAR([SOLIB_CFLAGS],
1941 [CFLAGS used for shared libraries])
1942 AC_ARG_VAR([SOLIB_LDFLAGS],
1943 [LDFLAGS used for shared libraries])
1944
1945 AC_ARG_VAR([ADJTIME_PATH],
1946 [Path to hwclock adjtime file, default /etc/adjtime])
1947 AS_IF([test "x$ADJTIME_PATH" = x], [ADJTIME_PATH="/etc/adjtime"])
1948 AC_DEFINE_UNQUOTED([CONFIG_ADJTIME_PATH], "$ADJTIME_PATH", [Path to hwclock adjtime file])
1949
1950
1951 LIBS=""
1952
1953
1954 AC_CONFIG_HEADERS([config.h])
1955
1956 #
1957 # Don't use configure.ac to replace install paths! See Makefile PATHFILES for
1958 # more details.
1959 #
1960 AC_CONFIG_FILES([
1961 Makefile
1962 libblkid/docs/Makefile
1963 libblkid/docs/version.xml
1964 libblkid/src/blkid.h
1965 libfdisk/docs/Makefile
1966 libfdisk/docs/version.xml
1967 libfdisk/src/libfdisk.h
1968 libmount/docs/Makefile
1969 libmount/docs/version.xml
1970 libmount/src/libmount.h
1971 libsmartcols/docs/Makefile
1972 libsmartcols/docs/version.xml
1973 libsmartcols/src/libsmartcols.h
1974 po/Makefile.in
1975 ])
1976
1977 AC_OUTPUT
1978
1979 AC_MSG_RESULT([
1980 ${PACKAGE} ${VERSION}
1981
1982 prefix: ${prefix}
1983 exec prefix: ${exec_prefix}
1984
1985 localstatedir: ${localstatedir}
1986 bindir: ${bindir}
1987 sbindir: ${sbindir}
1988 libdir: ${libdir}
1989 includedir: ${includedir}
1990 usrbin_execdir: ${usrbin_execdir}
1991 usrsbin_execdir: ${usrsbin_execdir}
1992 usrlib_execdir: ${usrlib_execdir}
1993
1994 compiler: ${CC}
1995 cflags: ${CFLAGS}
1996 suid cflags: ${SUID_CFLAGS}
1997 ldflags: ${LDFLAGS}
1998 suid ldflags: ${SUID_LDFLAGS}
1999
2000 Python: ${PYTHON}
2001 Python version: ${PYTHON_VERSION}
2002 Python libs: ${pyexecdir}
2003
2004 Bash completions: ${with_bashcompletiondir}
2005 Systemd support: ${have_systemd}
2006
2007 warnings:
2008
2009 ${WARN_CFLAGS}
2010
2011 Type 'make' or 'make <utilname>' to compile.
2012 ])