Blame configure.ac

Packit 437b5e
## configure.ac
Packit 437b5e
## Written by Gary V. Vaughan, 2012
Packit 437b5e
Packit 437b5e
## Copyright (c) 2012-2015 Gary V. Vaughan
Packit 437b5e
Packit 437b5e
## This file is part of luaposix.
Packit 437b5e
## See README for license.
Packit 437b5e
## ------------------------------------------------------------------------
Packit 437b5e
Packit 437b5e
AC_INIT([luaposix], [33.3.1], [http://github.com/luaposix/luaposix/issues])
Packit 437b5e
AC_CONFIG_AUX_DIR([build-aux])
Packit 437b5e
AC_CONFIG_MACRO_DIR([m4])
Packit 437b5e
Packit 437b5e
AS_BOX([Configuring AC_PACKAGE_TARNAME AC_PACKAGE_VERSION])
Packit 437b5e
echo
Packit 437b5e
Packit 437b5e
AM_INIT_AUTOMAKE([-Wall subdir-objects])
Packit 437b5e
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
Packit 437b5e
Packit 437b5e
## Check for programs
Packit 437b5e
AC_PROG_CC
Packit 437b5e
gl_EARLY
Packit 437b5e
AC_PROG_MKDIR_P
Packit 437b5e
AC_PROG_EGREP
Packit 437b5e
AC_PROG_SED
Packit 437b5e
Packit 437b5e
Packit 437b5e
## ------------------------------------------------------------------------
Packit 437b5e
## Compiler flags for POSIX 2008 or better compliance.
Packit 437b5e
## ------------------------------------------------------------------------
Packit 437b5e
Packit 437b5e
AC_USE_SYSTEM_EXTENSIONS
Packit 437b5e
AC_CANONICAL_HOST
Packit 437b5e
case $host_os in
Packit 437b5e
  *nto*|*qnx*)
Packit 437b5e
    # QNX is only POSIX 2001, but _XOPEN_SOURCE turns off other
Packit 437b5e
    # functions luaposix can bind.
Packit 437b5e
    AC_SUBST([POSIX_EXTRA_CPPFLAGS], [-DLPOSIX_2001_COMPLIANT])
Packit 437b5e
    ;;
Packit 437b5e
Packit 437b5e
  darwin*|openbsd*)
Packit 437b5e
    # Setting _XOPEN_SOURCE here messes up header declarations, but
Packit 437b5e
    # all functions luaposix can bind are available without it.
Packit 437b5e
    AC_SUBST([POSIX_EXTRA_CPPFLAGS], [-DLPOSIX_2008_COMPLIANT])
Packit 437b5e
    ;;
Packit 437b5e
Packit 437b5e
  *)
Packit 437b5e
    # Enable POSIX 2008.  Please send a $host_os match if your host
Packit 437b5e
    # is not compliant.
Packit 437b5e
    AC_SUBST([POSIX_EXTRA_CPPFLAGS], [-D_XOPEN_SOURCE=700])
Packit 437b5e
    ;;
Packit 437b5e
esac
Packit 437b5e
Packit 437b5e
Packit 437b5e
AC_ARG_ENABLE([gcc-warnings],
Packit 437b5e
  [AS_HELP_STRING([--enable-gcc-warnings],
Packit 437b5e
                  [turn on lots of GCC warnings (for developers)])],
Packit 437b5e
  [case $enableval in
Packit 437b5e
     yes|no) ;;
Packit 437b5e
     *)      AC_MSG_ERROR([bad value $enableval for gcc-warnings option]) ;;
Packit 437b5e
   esac
Packit 437b5e
   gl_gcc_warnings=$enableval],
Packit 437b5e
  [gl_gcc_warnings=no]
Packit 437b5e
)
Packit 437b5e
Packit 437b5e
if test "$gl_gcc_warnings" = yes; then
Packit 437b5e
  gl_WARN_ADD([-Werror], [WERROR_CFLAGS])
Packit 437b5e
Packit 437b5e
  # Set up the list of undesired warnings.
Packit 437b5e
  nw=
Packit 437b5e
  nw="$nw -Wsystem-headers"   # Don't let system headers trigger warnings
Packit 437b5e
  nw="$nw -Wundef"            # All compiler preprocessors support #if UNDEF
Packit 437b5e
  nw="$nw -Wtraditional"      # All compilers nowadays support ANSI C
Packit 437b5e
  nw="$nw -Wstrict-overflow"  # Use a lower level (see below).
Packit 437b5e
  nw="$nw -Wconversion"       # These warnings usually don't point to mistakes.
Packit 437b5e
  nw="$nw -Wsign-conversion"  # Likewise.
Packit 437b5e
  nw="$nw -Waggregate-return" # We do this on purpose.
Packit 437b5e
  nw="$nw -Wtraditional-conversion" # Don't care.
Packit 437b5e
  nw="$nw -Wpadded"           # Don't care.
Packit 437b5e
  nw="$nw -Wc++-compat"       # Don't care.
Packit 437b5e
  nw="$nw -Woverlength-strings" # Don't care.
Packit 437b5e
  nw="$nw -Wmissing-format-attribute" # Don't care.
Packit 437b5e
  nw="$nw -Wunreachable-code" # Seems buggy.
Packit 437b5e
  nw="$nw -Wunused-macros"    # those macros might come in handy later
Packit 437b5e
Packit 437b5e
  gl_MANYWARN_ALL_GCC([warnings])
Packit 437b5e
Packit 437b5e
  # Enable all GCC warnings not in this list.
Packit 437b5e
  gl_MANYWARN_COMPLEMENT([warnings], [$warnings], [$nw])
Packit 437b5e
  for w in $warnings; do
Packit 437b5e
    gl_WARN_ADD([$w])
Packit 437b5e
  done
Packit 437b5e
Packit 437b5e
  # Add an extra warning
Packit 437b5e
  gl_WARN_ADD([-Wstrict-overflow=1])
Packit 437b5e
  # Add some more safety measures
Packit 437b5e
  gl_WARN_ADD([-D_FORTIFY_SOURCE=2])
Packit 437b5e
  gl_WARN_ADD([-fmudflap])
Packit 437b5e
fi
Packit 437b5e
Packit 437b5e
## required by automake 1.12.x, not available in 1.10.x
Packit 437b5e
m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
Packit 437b5e
Packit 437b5e
LT_PREREQ([2.2.6])
Packit 437b5e
LT_INIT([disable-static])
Packit 437b5e
Packit 437b5e
module=yes eval shrext=$shrext_cmds
Packit 437b5e
Packit 437b5e
AC_SUBST([objdir])
Packit 437b5e
AC_SUBST([shrext])
Packit 437b5e
AC_SUBST(LIBTOOL_DEPS)
Packit 437b5e
Packit 437b5e
gl_INIT
Packit 437b5e
Packit 437b5e
## Check for header files
Packit 437b5e
AC_HEADER_STDC
Packit 437b5e
AC_CHECK_HEADERS([crypt.h strings.h sys/statvfs.h])
Packit 437b5e
AC_CHECK_HEADERS([net/if.h linux/netlink.h], [], [], [
Packit 437b5e
#include <sys/socket.h>
Packit 437b5e
])
Packit 437b5e
Packit 437b5e
## SysV messaging
Packit 437b5e
AC_CHECK_HEADERS([sys/msg.h])
Packit 437b5e
AC_CHECK_FUNCS([msgrcv msgsnd])
Packit 437b5e
case $ac_cv_header_sys_msg_h,$ac_cv_func_msgrcv,$ac_cv_func_msgsnd in
Packit 437b5e
  yes,yes,yes)
Packit 437b5e
    AC_DEFINE([HAVE_SYSV_MESSAGING], [1], [Define if your system has SysV message APIs])
Packit 437b5e
    ;;
Packit 437b5e
esac
Packit 437b5e
Packit 437b5e
Packit 437b5e
AC_CHECK_DECLS_ONCE([fdatasync])
Packit 437b5e
Packit 437b5e
## Search libs
Packit 437b5e
save_LIBS=$LIBS
Packit 437b5e
LIBS=
Packit 437b5e
AC_SEARCH_LIBS([crypt], [crypt],
Packit 437b5e
  [AC_DEFINE([HAVE_CRYPT], [1], [Define this if your system has a crypt() function])])
Packit 437b5e
AC_SUBST([LIBCRYPT], [$LIBS])
Packit 437b5e
LIBS=$save_LIBS
Packit 437b5e
Packit 437b5e
## Socket (required for qnx, at least)
Packit 437b5e
save_LIBS=$LIBS
Packit 437b5e
LIBS=
Packit 437b5e
AC_SEARCH_LIBS([socket], [socket], [])
Packit 437b5e
AC_SUBST([LIBSOCKET], [$LIBS])
Packit 437b5e
LIBS=$save_LIBS
Packit 437b5e
Packit 437b5e
# FIXME: Make -lrt conditional on _XOPEN_REALTIME
Packit 437b5e
save_LIBS=$LIBS
Packit 437b5e
LIBS=
Packit 437b5e
AC_CHECK_LIB([rt], [clock_gettime])
Packit 437b5e
AC_SUBST([LIBRT], [$LIBS])
Packit 437b5e
LIBS=$save_LIBS
Packit 437b5e
Packit 437b5e
## Curses
Packit 437b5e
AX_WITH_CURSES
Packit 437b5e
AC_ARG_VAR(CURSES_LIB, [linker flags for curses library])
Packit 437b5e
Packit 437b5e
save_LIBS=$LIBS
Packit 437b5e
LIBS="$CURSES_LIB $LIBS"
Packit 437b5e
AC_CHECK_FUNCS([resizeterm])
Packit 437b5e
LIBS=$save_LIBS
Packit 437b5e
Packit 437b5e
## Use system implementation, or bundled replacement?
Packit 437b5e
AC_CHECK_FUNCS([strlcpy])
Packit 437b5e
Packit 437b5e
## ------------------------------------------------------------------------
Packit 437b5e
## Don't add more AC_CHECK_FUNCS, unless for a mainstream platform for one
Packit 437b5e
## of the reasons below (to detect whether to enable an optional set of
Packit 437b5e
## POSIX APIs; to disable a deprecated or very new and not yet widely
Packit 437b5e
## supported API).  This is a POSIX binding, and requires a reasonably
Packit 437b5e
## POSIX host to bind to - we definitely DON'T want to clutter up the code
Packit 437b5e
## and configury to support partially compliant hosts!
Packit 437b5e
## ------------------------------------------------------------------------
Packit 437b5e
Packit 437b5e
## Thread scheduling priority
Packit 437b5e
AC_CHECK_FUNCS([sched_getsheduler sched_setscheduler])
Packit 437b5e
Packit 437b5e
## Statvfs support
Packit 437b5e
AC_CHECK_FUNCS([statvfs])
Packit 437b5e
Packit 437b5e
## Deprecated or otherwise spottily supported POSIX functions
Packit 437b5e
AC_CHECK_FUNCS([gethostid posix_fadvise])
Packit 437b5e
Packit 437b5e
Packit 437b5e
## Lua
Packit 437b5e
AX_PROG_LUA(5.1, 5.4)
Packit 437b5e
AX_LUA_HEADERS
Packit 437b5e
AC_PATH_PROG([SPECL], [specl], [:])
Packit 437b5e
Packit 437b5e
## Perl
Packit 437b5e
AC_PATH_PROG([PERL], [perl])
Packit 437b5e
if test -z "$PERL"; then
Packit 437b5e
  AC_MSG_FAILURE([cannot find perl])
Packit 437b5e
fi
Packit 437b5e
Packit 437b5e
## ldoc
Packit 437b5e
AC_PATH_PROG([LDOC], [ldoc], [false])
Packit 437b5e
AM_CONDITIONAL([HAVE_LDOC], [test false != "$LDOC"])
Packit 437b5e
Packit 437b5e
## Generate output files
Packit 437b5e
AC_CONFIG_HEADER(config.h)
Packit 437b5e
AC_CONFIG_FILES([Makefile build-aux/config.ld lib/posix/init.lua:lib/posix.lua.in])
Packit 437b5e
AC_OUTPUT