1# -*- autoconf -*- 2# Process this file with autoconf to produce a configure script. 3 4# Copyright (C) 1991, 1993-2010 Free Software Foundation, Inc. 5 6# This program is free software: you can redistribute it and/or modify 7# it under the terms of the GNU General Public License as published by 8# the Free Software Foundation, either version 3 of the License, or 9# (at your option) any later version. 10 11# This program is distributed in the hope that it will be useful, 12# but WITHOUT ANY WARRANTY; without even the implied warranty of 13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14# GNU General Public License for more details. 15 16# You should have received a copy of the GNU General Public License 17# along with this program. If not, see <http://www.gnu.org/licenses/>. 18 19dnl Written by Jim Meyering. 20 21AC_PREREQ([2.62]) 22 23# Make inter-release version strings look like, e.g., v6.9-219-g58ddd, which 24# indicates that it is built from the 219th delta (in _some_ repository) 25# following the v6.9 tag, and that 58ddd is a prefix of the commit SHA1. 26AC_INIT([GNU coreutils], 27 m4_esyscmd([build-aux/git-version-gen .tarball-version]), 28 [bug-coreutils@gnu.org]) 29 30AC_CONFIG_SRCDIR([src/ls.c]) 31 32AC_CONFIG_AUX_DIR([build-aux]) 33AC_CONFIG_HEADERS([lib/config.h:lib/config.hin]) 34 35AM_INIT_AUTOMAKE([1.11.1 dist-xz color-tests parallel-tests]) 36AM_SILENT_RULES([yes]) # make --enable-silent-rules the default. 37 38AC_PROG_CC_STDC 39AM_PROG_CC_C_O 40AC_PROG_CPP 41AC_PROG_GCC_TRADITIONAL 42AC_PROG_RANLIB 43AC_PROG_LN_S 44gl_EARLY 45gl_INIT 46coreutils_MACROS 47 48AC_ARG_ENABLE([gcc-warnings], 49 [AS_HELP_STRING([--enable-gcc-warnings], 50 [turn on lots of GCC warnings (for developers)])], 51 [case $enableval in 52 yes|no) ;; 53 *) AC_MSG_ERROR([bad value $enableval for gcc-warnings option]) ;; 54 esac 55 gl_gcc_warnings=$enableval], 56 [gl_gcc_warnings=no] 57) 58 59if test "$gl_gcc_warnings" = yes; then 60 gl_WARN_ADD([-Werror], [WERROR_CFLAGS]) 61 AC_SUBST([WERROR_CFLAGS]) 62 63 nw= 64 # This, $nw, is the list of warnings we disable. 65 nw="$nw -Wdeclaration-after-statement" # too useful to forbid 66 nw="$nw -Waggregate-return" # anachronistic 67 nw="$nw -Wlong-long" # C90 is anachronistic (lib/gethrxtime.h) 68 nw="$nw -Wc++-compat" # We don't care about C++ compilers 69 nw="$nw -Wundef" # Warns on '#if GNULIB_FOO' etc in gnulib 70 nw="$nw -Wtraditional" # Warns on #elif which we use often 71 nw="$nw -Wcast-qual" # Too many warnings for now 72 nw="$nw -Wconversion" # Too many warnings for now 73 nw="$nw -Wsystem-headers" # Don't let system headers trigger warnings 74 nw="$nw -Wsign-conversion" # Too many warnings for now 75 nw="$nw -Wtraditional-conversion" # Too many warnings for now 76 nw="$nw -Wunreachable-code" # Too many warnings for now 77 nw="$nw -Wpadded" # Our structs are not padded 78 nw="$nw -Wredundant-decls" # openat.h declares e.g., mkdirat 79 nw="$nw -Wlogical-op" # any use of fwrite provokes this 80 nw="$nw -Wformat-nonliteral" # who.c and pinky.c strftime uses 81 nw="$nw -Wvla" # warnings in gettext.h 82 nw="$nw -Wnested-externs" # use of XARGMATCH/verify_function__ 83 nw="$nw -Wswitch-enum" # Too many warnings for now 84 nw="$nw -Wswitch-default" # Too many warnings for now 85 nw="$nw -Wstack-protector" # not worth working around 86 # things I might fix soon: 87 nw="$nw -Wfloat-equal" # sort.c, seq.c 88 nw="$nw -Wmissing-format-attribute" # copy.c 89 nw="$nw -Wunsafe-loop-optimizations" # a few src/*.c 90 nw="$nw -Winline" # system.h's readdir_ignoring_dot_and_dotdot 91 nw="$nw -Wstrict-overflow" # expr.c, pr.c, tr.c, factor.c 92 # ?? -Wstrict-overflow 93 94 gl_MANYWARN_ALL_GCC([ws]) 95 gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw]) 96 for w in $ws; do 97 gl_WARN_ADD([$w]) 98 done 99 gl_WARN_ADD([-Wno-missing-field-initializers]) # We need this one 100 gl_WARN_ADD([-Wno-sign-compare]) # Too many warnings for now 101 gl_WARN_ADD([-Wno-pointer-sign]) # Too many warnings for now 102 gl_WARN_ADD([-Wno-unused-parameter]) # Too many warnings for now 103 104 # In spite of excluding -Wlogical-op above, it is enabled, as of 105 # gcc 4.5.0 20090517, and it provokes warnings in cat.c, dd.c, truncate.c 106 gl_WARN_ADD([-Wno-logical-op]) 107 108 gl_WARN_ADD([-fdiagnostics-show-option]) 109 gl_WARN_ADD([-funit-at-a-time]) 110 111 AC_SUBST([WARN_CFLAGS]) 112 113 AC_DEFINE([lint], [1], [Define to 1 if the compiler is checking for lint.]) 114 AC_DEFINE([_FORTIFY_SOURCE], [2], 115 [enable compile-time and run-time bounds-checking, and some warnings]) 116 AC_DEFINE([GNULIB_PORTCHECK], [1], [enable some gnulib portability checks]) 117 118 # We use a slightly smaller set of warning options for lib/. 119 # Remove the following and save the result in GNULIB_WARN_CFLAGS. 120 nw= 121 nw="$nw -Wuninitialized" 122 nw="$nw -Wunused-macros" 123 nw="$nw -Wmissing-prototypes" 124 nw="$nw -Wold-style-definition" 125 gl_MANYWARN_COMPLEMENT([GNULIB_WARN_CFLAGS], [$WARN_CFLAGS], [$nw]) 126 AC_SUBST([GNULIB_WARN_CFLAGS]) 127fi 128 129AC_FUNC_FORK 130 131optional_bin_progs= 132AC_CHECK_FUNCS([chroot], 133 gl_ADD_PROG([optional_bin_progs], [chroot])) 134AC_CHECK_FUNCS([gethostid], 135 gl_ADD_PROG([optional_bin_progs], [hostid])) 136 137gl_WINSIZE_IN_PTEM 138 139AC_MSG_CHECKING([whether localtime caches TZ]) 140AC_CACHE_VAL([utils_cv_localtime_cache], 141[if test x$ac_cv_func_tzset = xyes; then 142AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <time.h> 143#if STDC_HEADERS 144# include <stdlib.h> 145#endif 146extern char **environ; 147void unset_TZ (void) 148{ 149 char **from, **to; 150 for (to = from = environ; (*to = *from); from++) 151 if (! (to[0][0] == 'T' && to[0][1] == 'Z' && to[0][2] == '=')) 152 to++; 153} 154int main() 155{ 156 time_t now = time ((time_t *) 0); 157 int hour_GMT0, hour_unset; 158 if (putenv ("TZ=GMT0") != 0) 159 exit (1); 160 hour_GMT0 = localtime (&now)->tm_hour; 161 unset_TZ (); 162 hour_unset = localtime (&now)->tm_hour; 163 if (putenv ("TZ=PST8") != 0) 164 exit (1); 165 if (localtime (&now)->tm_hour == hour_GMT0) 166 exit (1); 167 unset_TZ (); 168 if (localtime (&now)->tm_hour != hour_unset) 169 exit (1); 170 exit (0); 171}]])], 172[utils_cv_localtime_cache=no], 173[utils_cv_localtime_cache=yes], 174[# If we have tzset, assume the worst when cross-compiling. 175utils_cv_localtime_cache=yes]) 176else 177 # If we lack tzset, report that localtime does not cache TZ, 178 # since we can't invalidate the cache if we don't have tzset. 179 utils_cv_localtime_cache=no 180fi])dnl 181AC_MSG_RESULT([$utils_cv_localtime_cache]) 182if test $utils_cv_localtime_cache = yes; then 183 AC_DEFINE([LOCALTIME_CACHE], [1], [FIXME]) 184fi 185 186# SCO-ODT-3.0 is reported to need -los to link programs using initgroups 187AC_CHECK_FUNCS([initgroups]) 188if test $ac_cv_func_initgroups = no; then 189 AC_CHECK_LIB([os], [initgroups]) 190fi 191 192AC_CHECK_FUNCS([syslog]) 193if test $ac_cv_func_syslog = no; then 194 # syslog is not in the default libraries. See if it's in some other. 195 for lib in bsd socket inet; do 196 AC_CHECK_LIB([$lib], [syslog], [AC_DEFINE([HAVE_SYSLOG], [1], [FIXME]) 197 LIBS="$LIBS -l$lib"; break]) 198 done 199fi 200 201AC_CACHE_CHECK([for 3-argument setpriority function], 202 [utils_cv_func_setpriority], 203 [AC_LINK_IFELSE( 204 [AC_LANG_PROGRAM( 205 [[#include <sys/time.h> 206 #include <sys/resource.h> 207 ]], 208 [[setpriority (0, 0, 0);]])], 209 [utils_cv_func_setpriority=yes], 210 [utils_cv_func_setpriority=no])]) 211if test $utils_cv_func_setpriority = no; then 212 AC_CHECK_FUNCS([nice]) 213fi 214case $utils_cv_func_setpriority,$ac_cv_func_nice in 215*yes*) 216 gl_ADD_PROG([optional_bin_progs], [nice]) 217esac 218 219AC_DEFUN([coreutils_DUMMY_1], 220[ 221 AC_REQUIRE([gl_READUTMP]) 222 if test $ac_cv_header_utmp_h = yes || test $ac_cv_header_utmpx_h = yes; then 223 gl_ADD_PROG([optional_bin_progs], [who]) 224 gl_ADD_PROG([optional_bin_progs], [users]) 225 gl_ADD_PROG([optional_bin_progs], [pinky]) 226 fi 227]) 228coreutils_DUMMY_1 229 230AC_MSG_CHECKING([ut_host in struct utmp]) 231AC_CACHE_VAL([su_cv_func_ut_host_in_utmp], 232[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> 233#include <utmp.h>]], [[struct utmp ut; return !sizeof ut.ut_host;]])], 234 [su_cv_func_ut_host_in_utmp=yes], 235 [su_cv_func_ut_host_in_utmp=no])]) 236AC_MSG_RESULT([$su_cv_func_ut_host_in_utmp]) 237if test $su_cv_func_ut_host_in_utmp = yes; then 238 have_ut_host=1 239 AC_DEFINE([HAVE_UT_HOST], [1], [FIXME]) 240fi 241 242if test -z "$have_ut_host"; then 243 AC_MSG_CHECKING([ut_host in struct utmpx]) 244 AC_CACHE_VAL([su_cv_func_ut_host_in_utmpx], 245 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> 246#include <utmpx.h>]], [[struct utmpx ut; return !sizeof ut.ut_host;]])], 247 [su_cv_func_ut_host_in_utmpx=yes], 248 [su_cv_func_ut_host_in_utmpx=no])]) 249 AC_MSG_RESULT([$su_cv_func_ut_host_in_utmpx]) 250 if test $su_cv_func_ut_host_in_utmpx = yes; then 251 AC_DEFINE([HAVE_UTMPX_H], [1], [FIXME]) 252 AC_DEFINE([HAVE_UT_HOST], [1], [FIXME]) 253 fi 254fi 255 256GNULIB_BOOT_TIME([gl_ADD_PROG([optional_bin_progs], [uptime])]) 257 258AC_SYS_POSIX_TERMIOS() 259gl_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL 260 261if test $ac_cv_sys_posix_termios = yes; then 262 gl_ADD_PROG([optional_bin_progs], [stty]) 263 264 AC_MSG_CHECKING([whether termios.h needs _XOPEN_SOURCE]) 265 AC_CACHE_VAL([su_cv_sys_termios_needs_xopen_source], 266 [AC_EGREP_CPP([yes], [#include <termios.h> 267#ifdef IUCLC 268yes 269#endif], su_cv_sys_termios_needs_xopen_source=no, 270 AC_EGREP_CPP([yes], [#define _XOPEN_SOURCE 271#include <termios.h> 272#ifdef IUCLC 273yes 274#endif], su_cv_sys_termios_needs_xopen_source=yes, 275 su_cv_sys_termios_needs_xopen_source=no))]) 276 AC_MSG_RESULT([$su_cv_sys_termios_needs_xopen_source]) 277 test $su_cv_sys_termios_needs_xopen_source = yes && 278 AC_DEFINE([TERMIOS_NEEDS_XOPEN_SOURCE], [1], [FIXME]) 279 280 AC_MSG_CHECKING([c_line in struct termios]) 281 AC_CACHE_VAL([su_cv_sys_c_line_in_termios], 282 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if TERMIOS_NEEDS_XOPEN_SOURCE 283#define _XOPEN_SOURCE 284#endif 285#include <sys/types.h> 286#include <termios.h>]], [[struct termios t; return !sizeof t.c_line;]])], 287 [su_cv_sys_c_line_in_termios=yes], 288 [su_cv_sys_c_line_in_termios=no])]) 289 AC_MSG_RESULT([$su_cv_sys_c_line_in_termios]) 290 test $su_cv_sys_c_line_in_termios = yes \ 291 && AC_DEFINE([HAVE_C_LINE], [1], [FIXME]) 292fi 293 294# FIXME: note that this macro appears above, too. 295# I'm leaving it here for now. This whole thing needs to be modernized... 296gl_WINSIZE_IN_PTEM 297 298gl_HEADER_TIOCGWINSZ_IN_TERMIOS_H 299 300if test $gl_cv_sys_tiocgwinsz_needs_termios_h = no && \ 301 test $gl_cv_sys_tiocgwinsz_needs_sys_ioctl_h = no; then 302 AC_MSG_CHECKING([TIOCGWINSZ in sys/pty.h]) 303 AC_CACHE_VAL([su_cv_sys_tiocgwinsz_in_sys_pty_h], 304 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> 305#ifdef WINSIZE_IN_PTEM 306# include <sys/stream.h> 307# include <sys/ptem.h> 308#endif 309#include <sys/ioctl.h> 310#include <sys/tty.h> 311#include <sys/pty.h>]], [[int x = TIOCGWINSZ;]])], 312 [su_cv_sys_tiocgwinsz_in_sys_pty_h=yes], 313 [su_cv_sys_tiocgwinsz_in_sys_pty_h=no])]) 314 AC_MSG_RESULT([$su_cv_sys_tiocgwinsz_in_sys_pty_h]) 315 316 test $su_cv_sys_tiocgwinsz_in_sys_pty_h = yes \ 317 && AC_DEFINE([GWINSZ_IN_SYS_PTY], [1], 318 [Define if your system defines TIOCGWINSZ in sys/pty.h.]) 319fi 320 321# For src/kill.c. 322AC_CHECK_DECLS([strsignal, sys_siglist, _sys_siglist, __sys_siglist], , , 323 [AC_INCLUDES_DEFAULT 324#include <signal.h>]) 325 326cu_LIB_CHECK 327cu_GMP 328 329# Build df only if there's a point to it. 330if test $gl_cv_list_mounted_fs = yes && test $gl_cv_fs_space = yes; then 331 gl_ADD_PROG([optional_bin_progs], [df]) 332fi 333 334# Limit stdbuf to ELF systems with GCC 335optional_pkglib_progs= 336AC_MSG_CHECKING([whether this is an ELF system]) 337AC_EGREP_CPP([yes], [#if __ELF__ 338yes 339#endif], [elf_sys=yes], [elf_sys=no]) 340AC_MSG_RESULT([$elf_sys]) 341if test "$elf_sys" = "yes" && \ 342 test "$GCC" = "yes"; then 343 gl_ADD_PROG([optional_bin_progs], [stdbuf]) 344 gl_ADD_PROG([optional_pkglib_progs], [libstdbuf.so]) 345fi 346 347############################################################################ 348mk="$srcdir/src/Makefile.am" 349# Extract all literal names from the definition of $(EXTRA_PROGRAMS) 350# in $mk but don't expand the variable references. 351# Append each literal name to $optional_bin_progs. 352v=EXTRA_PROGRAMS 353for gl_i in `sed -n '/^'$v' =/,/[[^\]]$/p' $mk \ 354 | sed 's/^ *//;/^\$.*/d;/^'$v' =/d' \ 355 | tr -s '\\015\\012\\\\' ' '`; do 356 gl_ADD_PROG([optional_bin_progs], $gl_i) 357done 358 359# As above, extract literal names from the definition of $(no_install__progs) 360# in $mk but don't expand the variable references. 361v=no_install__progs 362t=`sed -n '/^'$v' =/,/[[^\]]$/p' $mk \ 363 | sed 's/^ *//;/^\$.*/d;/^'$v' =/d' \ 364 | tr -s '\\015\\012\\\\' ' '` 365# Remove any trailing space. 366no_install_progs_default=`echo "$t"|sed 's/ $//'` 367 368# Unfortunately, due to the way autoconf's AS_HELP_STRING works, the list 369# of default-not-installed programs, "arch hostname su", must appear in two 370# places: in this file below, and in $mk. Using "$no_install_progs_default" 371# below cannot work. And we can't substitute the names into $mk because 372# automake needs the literals, too. 373# The compromise is to ensure that the space-separated list extracted 374# above matches the literal 2nd argument below. 375c="$srcdir/configure.ac" 376re='^g''l_INCLUDE_EXCLUDE_PROG(.* [\[\(.*\)\]])' 377t=`sed -n '/'"$re"'/{s/'"$re"'/\1/;s/,/ /gp 378}' $c` 379case $t in 380 $no_install_progs_default) ;; 381 *) AC_MSG_ERROR([[internal error: g'l_INCLUDE_EXCLUDE_PROG's 2nd arg, $t, 382 does not match the list of default-not-installed programs 383 ($no_install_progs_default) also recorded in $mk]], 384 1) ;; 385esac 386 387# Given the name of a variable containing a space-separated list of 388# install-by-default programs and the actual list do-not-install-by-default 389# programs, modify the former variable to reflect any "do-install" and 390# "don't-install" requests. 391# I.e., add any program name specified via --enable-install-program=..., and 392# remove any program name specified via --enable-no-install-program=... 393# Note how the second argument below is a literal, with "," separators. 394# That is required due to the way the macro works, and since the 395# corresponding ./configure option argument is comma-separated on input. 396gl_INCLUDE_EXCLUDE_PROG([optional_bin_progs], [arch,hostname,su]) 397 398# Set INSTALL_SU if su installation has been requested via 399# --enable-install-program=su. 400AC_SUBST([INSTALL_SU]) 401case " $optional_bin_progs " in 402 *' su '*) INSTALL_SU=yes ;; 403 *) INSTALL_SU=no ;; 404esac 405 406MAN=`echo "$optional_bin_progs "|sed 's/ /.1 /g;s/ $//'|tr -d '\\015\\012'` 407 408# Change ginstall.1 to "install.h" in $MAN. 409MAN=`for m in $MAN; do test $m = ginstall.1 && m=install.1; echo $m; done \ 410 | tr '\015\012' ' '; echo` 411 412# Remove [.1, since writing a portable rule for it in man/Makefile.am 413# is not practical. The sed LHS below uses the autoconf quadrigraph 414# representing '['. 415MAN=`echo "$MAN"|sed 's/\@<:@\.1//'` 416 417OPTIONAL_BIN_PROGS=`echo "$optional_bin_progs "|sed 's/ /\$(EXEEXT) /g;s/ $//'` 418AC_SUBST([OPTIONAL_BIN_PROGS]) 419OPTIONAL_PKGLIB_PROGS=`echo "$optional_pkglib_progs " | sed 's/ $//'` 420AC_SUBST([OPTIONAL_PKGLIB_PROGS]) 421NO_INSTALL_PROGS_DEFAULT=$no_install_progs_default 422AC_SUBST([NO_INSTALL_PROGS_DEFAULT]) 423 424AM_CONDITIONAL([CROSS_COMPILING], [test "$cross_compiling" = yes]) 425 426# Arrange to rerun configure whenever the file, src/Makefile.am, 427# containing the list of program names changes. 428CONFIG_STATUS_DEPENDENCIES='$(top_srcdir)/src/Makefile.am' 429AC_SUBST([CONFIG_STATUS_DEPENDENCIES]) 430############################################################################ 431 432# As long as "grep 'PRI[diouxX]' po/*.pot" reports matches in 433# translatable strings, we must use need-formatstring-macros here. 434AM_GNU_GETTEXT([external], [need-formatstring-macros]) 435AM_GNU_GETTEXT_VERSION([0.17]) 436 437# For a test of uniq: it uses the $LOCALE_FR envvar. 438gt_LOCALE_FR 439 440AC_CONFIG_FILES( 441 Makefile 442 doc/Makefile 443 lib/Makefile 444 man/Makefile 445 po/Makefile.in 446 src/Makefile 447 tests/Makefile 448 gnulib-tests/Makefile 449 ) 450AC_OUTPUT 451