build: suppress an erroneous warning --with-selinux=no
[coreutils.git] / m4 / jm-macros.m4
bloba96ecabb60c3d0614ed71cd1285d485709499eb7
1 #serial 110   -*- autoconf -*-
3 dnl Misc type-related macros for coreutils.
5 # Copyright (C) 1998-2014 Free Software Foundation, Inc.
7 # This program is free software: you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation, either version 3 of the License, or
10 # (at your option) any later version.
12 # This program is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 # GNU General Public License for more details.
17 # You should have received a copy of the GNU General Public License
18 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
20 # Written by Jim Meyering.
22 AC_DEFUN([coreutils_MACROS],
24   AM_MISSING_PROG(HELP2MAN, help2man)
25   AC_SUBST([MAN])
27   dnl This macro actually runs replacement code.  See isc-posix.m4.
28   AC_REQUIRE([AC_ISC_POSIX])dnl
30   gl_CHECK_ALL_TYPES
32   AC_REQUIRE([gl_CHECK_DECLS])
34   AC_REQUIRE([gl_PREREQ])
36   AC_REQUIRE([AC_FUNC_FSEEKO])
38   # By default, argmatch should fail calling usage (EXIT_FAILURE).
39   AC_DEFINE([ARGMATCH_DIE], [usage (EXIT_FAILURE)],
40             [Define to the function xargmatch calls on failures.])
41   AC_DEFINE([ARGMATCH_DIE_DECL], [void usage (int _e)],
42             [Define to the declaration of the xargmatch failure function.])
44   # used by shred
45   AC_CHECK_FUNCS_ONCE([directio])
47   coreutils_saved_libs=$LIBS
48     LIBS="$LIBS $LIB_SELINUX"
49     # Used by selinux.c.
50     AC_CHECK_FUNCS([mode_to_security_class], [], [])
51     # Used by install.c.
52     AC_CHECK_FUNCS([matchpathcon_init_prefix], [],
53     [
54       if test "$with_selinux" != no; then
55         case "$ac_cv_search_setfilecon:$ac_cv_header_selinux_selinux_h" in
56           no:*) # SELinux disabled
57             ;;
58           *:no) # SELinux disabled
59             ;;
60           *)
61           AC_MSG_WARN([SELinux enabled, but matchpathcon_init_prefix not found])
62           AC_MSG_WARN([The install utility may run slowly])
63         esac
64       fi
65     ])
66   LIBS=$coreutils_saved_libs
68   # Used by sort.c.
69   AC_CHECK_FUNCS_ONCE([nl_langinfo])
70   # Used by timeout.c
71   AC_CHECK_FUNCS_ONCE([setrlimit prctl])
73   # Used by tail.c.
74   AC_CHECK_FUNCS([inotify_init],
75     [AC_DEFINE([HAVE_INOTIFY], [1],
76      [Define to 1 if you have usable inotify support.])])
78   AC_CHECK_FUNCS_ONCE([
79     endgrent
80     endpwent
81     fchown
82     fchmod
83     ftruncate
84     iswspace
85     mkfifo
86     mbrlen
87     setgroups
88     sethostname
89     siginterrupt
90     sync
91     sysctl
92     sysinfo
93     tcgetpgrp
94   ])
96   # These checks are for Interix, to avoid its getgr* functions, in favor
97   # of these replacements.  The replacement functions are much more efficient
98   # because they do not query the domain controller for user information
99   # when it is not needed.
100   AC_CHECK_FUNCS_ONCE([
101     getgrgid_nomembers
102     getgrnam_nomembers
103     getgrent_nomembers
104   ])
106   dnl This can't use AC_REQUIRE; I'm not quite sure why.
107   cu_PREREQ_STAT_PROG
109   # for dd.c and shred.c
110   #
111   # Use fdatasync only if declared.  On MacOS X 10.7, fdatasync exists but
112   # is not declared, and is ineffective.
113   LIB_FDATASYNC=
114   AC_SUBST([LIB_FDATASYNC])
115   AC_CHECK_DECLS_ONCE([fdatasync])
116   if test $ac_cv_have_decl_fdatasync = yes; then
117     coreutils_saved_libs=$LIBS
118     AC_SEARCH_LIBS([fdatasync], [rt posix4],
119                    [test "$ac_cv_search_fdatasync" = "none required" ||
120                     LIB_FDATASYNC=$ac_cv_search_fdatasync])
121     AC_CHECK_FUNCS([fdatasync])
122     LIBS=$coreutils_saved_libs
123   fi
125   # Check whether libcap is usable -- for ls --color support
126   LIB_CAP=
127   AC_ARG_ENABLE([libcap],
128     AC_HELP_STRING([--disable-libcap], [disable libcap support]))
129   if test "X$enable_libcap" != "Xno"; then
130     AC_CHECK_LIB([cap], [cap_get_file],
131       [AC_CHECK_HEADER([sys/capability.h],
132         [LIB_CAP=-lcap
133          AC_DEFINE([HAVE_CAP], [1], [libcap usability])]
134       )])
135     if test "X$LIB_CAP" = "X"; then
136       if test "X$enable_libcap" = "Xyes"; then
137         AC_MSG_ERROR([libcap library was not found or not usable])
138       else
139         AC_MSG_WARN([libcap library was not found or not usable.])
140         AC_MSG_WARN([AC_PACKAGE_NAME will be built without capability support.])
141       fi
142     fi
143   else
144     AC_MSG_WARN([libcap support disabled by user])
145   fi
146   AC_SUBST([LIB_CAP])
148   # See if linking 'seq' requires -lm.
149   # It does on nearly every system.  The single exception (so far) is
150   # BeOS which has all the math functions in the normal runtime library
151   # and doesn't have a separate math library.
153   AC_SUBST([SEQ_LIBM])
154   ac_seq_body='
155      static double x, y;
156      x = floor (x);
157      x = rint (x);
158      x = modf (x, &y);'
159   AC_TRY_LINK([#include <math.h>], [$ac_seq_body], ,
160     [ac_seq_save_LIBS="$LIBS"
161      LIBS="$LIBS -lm"
162      AC_TRY_LINK([#include <math.h>], [$ac_seq_body], [SEQ_LIBM=-lm])
163      LIBS="$ac_seq_save_LIBS"
164     ])
166   AC_REQUIRE([AM_LANGINFO_CODESET])
168   # Accept configure options: --with-tty-group[=GROUP], --without-tty-group
169   # You can determine the group of a TTY via 'stat --format %G /dev/tty'
170   # Omitting this option is equivalent to using --without-tty-group.
171   AC_ARG_WITH([tty-group],
172     AS_HELP_STRING([--with-tty-group[[[=NAME]]]],
173       [group used by system for TTYs, "tty" when not specified]
174       [ (default: do not rely on any group used for TTYs)]),
175     [tty_group_name=$withval],
176     [tty_group_name=no])
178   if test "x$tty_group_name" != xno; then
179     if test "x$tty_group_name" = xyes; then
180       tty_group_name=tty
181     fi
182     AC_MSG_NOTICE([TTY group used by system set to "$tty_group_name"])
183     AC_DEFINE_UNQUOTED([TTY_GROUP_NAME], ["$tty_group_name"],
184       [group used by system for TTYs])
185   fi
188 AC_DEFUN([gl_CHECK_ALL_HEADERS],
190   AC_CHECK_HEADERS_ONCE([
191     hurd.h
192     paths.h
193     priv.h
194     stropts.h
195     sys/param.h
196     sys/systeminfo.h
197     syslog.h
198   ])
199   AC_CHECK_HEADERS([sys/sysctl.h], [], [],
200     [AC_INCLUDES_DEFAULT
201      [#if HAVE_SYS_PARAM_H
202        #include <sys/param.h>
203       #endif]])
206 # This macro must be invoked before any tests that run the compiler.
207 AC_DEFUN([gl_CHECK_ALL_TYPES],
209   dnl Checks for typedefs, structures, and compiler characteristics.
210   AC_REQUIRE([gl_BIGENDIAN])
211   AC_REQUIRE([AC_C_VOLATILE])
212   AC_REQUIRE([AC_C_INLINE])
213   AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
215   AC_REQUIRE([gl_CHECK_ALL_HEADERS])
216   AC_CHECK_MEMBERS(
217     [struct stat.st_author],,,
218     [$ac_includes_default
219 #include <sys/stat.h>
220   ])
221   AC_REQUIRE([AC_STRUCT_ST_BLOCKS])
223   AC_REQUIRE([AC_TYPE_GETGROUPS])
224   AC_REQUIRE([AC_TYPE_MBSTATE_T])
225   AC_REQUIRE([AC_TYPE_MODE_T])
226   AC_REQUIRE([AC_TYPE_OFF_T])
227   AC_REQUIRE([AC_TYPE_PID_T])
228   AC_REQUIRE([AC_TYPE_SIZE_T])
229   AC_REQUIRE([AC_TYPE_UID_T])
230   AC_CHECK_TYPE([ino_t], [unsigned long int])
232   dnl This relies on the fact that Autoconf's implementation of
233   dnl AC_CHECK_TYPE checks includes unistd.h.
234   AC_CHECK_TYPE([major_t], [unsigned int])
235   AC_CHECK_TYPE([minor_t], [unsigned int])
237   AC_REQUIRE([AC_HEADER_MAJOR])