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