diff options
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 191 |
1 files changed, 191 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac new file mode 100644 index 00000000..33f0b08c --- /dev/null +++ b/configure.ac @@ -0,0 +1,191 @@ +AC_INIT([dash],[0.5.11.2]) +AM_INIT_AUTOMAKE([foreign subdir-objects]) +AC_CONFIG_SRCDIR([src/main.c]) + +AC_CONFIG_HEADERS(config.h) + +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES(yes)]) + +dnl Checks for programs. +AC_PROG_CC +AC_USE_SYSTEM_EXTENSIONS + +AC_MSG_CHECKING([for build system compiler]) +if test "$cross_compiling" = yes; then + CC_FOR_BUILD=${CC_FOR_BUILD-cc} +else + CC_FOR_BUILD=${CC} +fi +AC_MSG_RESULT(${CC_FOR_BUILD}) +AC_SUBST(CC_FOR_BUILD) + +AC_MSG_CHECKING([for __attribute__((__alias__()))]) +dash_cv_have_attribute_alias=no +AC_LINK_IFELSE([AC_LANG_PROGRAM([void t() {} + void a() __attribute__((__alias__("t")));], + [a();])], + [dash_cv_have_attribute_alias=yes]) +AC_MSG_RESULT($dash_cv_have_attribute_alias) +if test "x$dash_cv_have_attribute_alias" = xyes; then + AC_DEFINE([HAVE_ALIAS_ATTRIBUTE], 1, + [Define if __attribute__((__alias__())) is supported]) +fi + +AC_ARG_ENABLE(static, AS_HELP_STRING(--enable-static, \ + [Build statical linked program])) +if test "$enable_static" = "yes"; then + export LDFLAGS="-static -Wl,--fatal-warnings" +fi + +AC_ARG_ENABLE(fnmatch, AS_HELP_STRING(--enable-fnmatch, \ + [Use fnmatch(3) from libc])) +AC_ARG_ENABLE(glob, AS_HELP_STRING(--enable-glob, [Use glob(3) from libc])) + +dnl Checks for libraries. + +dnl Checks for header files. +AC_CHECK_HEADERS(alloca.h paths.h) + +dnl Check for declarations +AC_CHECK_DECL([_PATH_BSHELL],,AC_DEFINE_UNQUOTED([_PATH_BSHELL], "/bin/sh", [Define to system shell path]),[ +#ifdef HAVE_PATHS_H +#include <paths.h> +#endif +]) +AC_CHECK_DECL([_PATH_DEVNULL],,AC_DEFINE_UNQUOTED([_PATH_DEVNULL], "/dev/null", [Define to devnull device node path]),[ +#ifdef HAVE_PATHS_H +#include <paths.h> +#endif +]) +AC_CHECK_DECL([_PATH_TTY],,AC_DEFINE_UNQUOTED([_PATH_TTY], "/dev/tty", [Define to tty device node path]),[ +#ifdef HAVE_PATHS_H +#include <paths.h> +#endif +]) + +dnl Some systems lack isblank +AC_CHECK_DECLS([isblank],,,[#include <ctype.h>]) + +dnl Check for sizes of types +AC_CHECK_SIZEOF([intmax_t]) +AC_CHECK_SIZEOF([long long int]) + +dnl Select a fallback format string for intmax_t in case we don't find PRIdMAX +if test "x$ac_cv_sizeof_intmax_t" = "x$ac_cv_sizeof_long_long_int"; then + intmax_fstr="lld" +else + intmax_fstr="jd" +fi + +dnl Check for PRIdMAX and define it to a fallback if not found +AC_CHECK_DECL([PRIdMAX],, + [AC_DEFINE_UNQUOTED([PRIdMAX], "$intmax_fstr", + [Define to printf format string for intmax_t])], + [ +#include <inttypes.h> +]) + +dnl Checks for library functions. +AC_CHECK_FUNCS(bsearch faccessat getpwnam getrlimit isalpha killpg \ + mempcpy \ + sigsetmask stpcpy strchrnul strsignal strtod strtoimax \ + strtoumax sysconf) + +dnl Check whether it's worth working around FreeBSD PR kern/125009. +dnl The traditional behavior of access/faccessat is crazy, but +dnl POSIX.1-2008 explicitly allows those functions to misbehave. +dnl +dnl Unaffected kernels: +dnl +dnl - all versions of Linux +dnl - NetBSD sys/kern/vfs_subr.c 1.64, 1997-04-23 +dnl - FreeBSD 9 (r212002), 2010-09-10 +dnl - OpenBSD sys/kern/vfs_subr.c 1.166, 2008-06-09 +dnl +dnl Also worked around in Debian's libc0.1 2.13-19 when using +dnl kFreeBSD 8. + +AC_ARG_ENABLE(test-workaround, AS_HELP_STRING(--enable-test-workaround, \ + [Guard against faccessat(2) that tells root all files are executable]),, + [enable_test_workaround=auto]) + +if test "enable_test_workaround" = "auto" && + test "$ac_cv_func_faccessat" = yes; then + case `uname -s 2>/dev/null` in + GNU/kFreeBSD | \ + FreeBSD) + enable_test_workaround=yes + esac +fi +if test "$enable_test_workaround" = "yes"; then + AC_DEFINE([HAVE_TRADITIONAL_FACCESSAT], [1], + [Define if your faccessat tells root all files are executable]) +fi + +if test "$enable_fnmatch" = yes; then + use_fnmatch= + AC_CHECK_FUNCS(fnmatch, use_fnmatch=yes) +fi + +if test "$use_fnmatch" = yes && test "$enable_glob" = yes; then + AC_CHECK_FUNCS(glob) +fi + +dnl Check for klibc signal. +AC_CHECK_FUNC(signal) +if test "$ac_cv_func_signal" != yes; then + AC_CHECK_FUNC(bsd_signal, + [AC_DEFINE(signal, bsd_signal, + [klibc has bsd_signal instead of signal])]) +fi + +dnl Check for stat64 (dietlibc/klibc). +AC_CHECK_FUNC(stat64,, [ + AC_DEFINE(fstat64, fstat, [64-bit operations are the same as 32-bit]) + AC_DEFINE(lstat64, lstat, [64-bit operations are the same as 32-bit]) + AC_DEFINE(stat64, stat, [64-bit operations are the same as 32-bit]) +]) + +dnl OS X apparently has stat64 but not open64. +AC_CHECK_FUNC(open64,, [ + AC_DEFINE(open64, open, [64-bit operations are the same as 32-bit]) + AC_DEFINE(readdir64, readdir, + [64-bit operations are the same as 32-bit]) + AC_DEFINE(dirent64, dirent, + [64-bit operations are the same as 32-bit]) +]) + +dnl Check if struct stat has st_mtim. +AC_MSG_CHECKING(for stat::st_mtim) +AC_COMPILE_IFELSE( +[AC_LANG_PROGRAM([#include <time.h> +#include <sys/time.h> +#include <sys/stat.h>], +[struct stat foo; return sizeof(foo.st_mtim.tv_sec)])], +have_st_mtim=yes, have_st_mtim=no) +AC_MSG_RESULT($have_st_mtim) +if test "$have_st_mtim" = "yes"; then + AC_DEFINE([HAVE_ST_MTIM], [1], + [Define if your `struct stat' has `st_mtim']) +fi + +AC_ARG_WITH(libedit, AS_HELP_STRING(--with-libedit, [Compile with libedit support])) +use_libedit= +if test "$with_libedit" = "yes"; then + AC_CHECK_LIB(edit, history_init, [ + AC_CHECK_HEADER([histedit.h], [use_libedit="yes"], + AC_MSG_ERROR( + [Can't find required header files.]))]) +fi +if test "$use_libedit" != "yes"; then + AC_DEFINE([SMALL], 1, [Define if you build with -DSMALL]) +else + export LIBS="$LIBS -ledit" +fi +AC_ARG_ENABLE(lineno, AS_HELP_STRING(--disable-lineno, \ + [Disable LINENO support])) +if test "$enable_lineno" != "no"; then + AC_DEFINE([WITH_LINENO], 1, [Define if you build with -DWITH_LINENO]) +fi +AC_CONFIG_FILES([Makefile src/Makefile]) +AC_OUTPUT |