Danny Robson
a195f47bdf
When using variadic template constructors which forward their arguments to base classes we tend to get a lot of warnings about auto deduction of initializer_list types from aggregate initialiser syntax. As this is apparently expected to be removed from the standard we'll hide the warnings this way.
213 lines
6.0 KiB
Plaintext
213 lines
6.0 KiB
Plaintext
AC_INIT([libgim], [0.1.0], [danny@nerdcruft.net])
|
|
## Explicitly set an empty CXXFLAGS if not present to prevent AC_PROG_CXX from
|
|
## generating a default -O2. This allows us to manually select -O0 when
|
|
## debugging is enabled.
|
|
: ${CXXFLAGS=""}
|
|
|
|
AC_CANONICAL_HOST
|
|
|
|
AC_PROG_CXX
|
|
AC_LANG([C++])
|
|
LT_INIT
|
|
AM_PROG_CC_C_O
|
|
|
|
AC_CONFIG_MACRO_DIR([m4])
|
|
AC_CONFIG_HEADERS([config.h])
|
|
|
|
AM_INIT_AUTOMAKE([1.11 silent-rules])
|
|
AM_SILENT_RULES([yes])
|
|
|
|
|
|
AC_ARG_ENABLE([debugging],
|
|
[AS_HELP_STRING([--enable-debugging],
|
|
[enables developer debugging support])],
|
|
[ case "${enableval}" in
|
|
yes) ac_cv_debugging=yes ;;
|
|
no) ac_cv_debugging=no ;;
|
|
*) AC_MSG_ERROR([bad value for --enable-debugging=[yes|no]]) ;;
|
|
esac ],
|
|
[ac_cv_debugging=no])
|
|
|
|
AC_ARG_ENABLE([mudflap],
|
|
[AS_HELP_STRING([--enable-mudflap],
|
|
[enable mudflap runtime debugging])],
|
|
[ case "${enableval}" in
|
|
yes) ac_cv_mudflap=yes ;;
|
|
no) ac_cv_mudflap=no ;;
|
|
*) AC_MSG_ERROR([bad value for --enable-mudflap[yes|no]]) ;;
|
|
esac ],
|
|
[ac_cv_mudflap=no])
|
|
|
|
##
|
|
## Warnings
|
|
WARNING_FLAGS=""
|
|
|
|
AS_CXX_COMPILER_FLAG([-Wall], [WARNING_FLAGS="$WARNING_FLAGS -Wall"])
|
|
AS_CXX_COMPILER_FLAG([-Wextra], [WARNING_FLAGS="$WARNING_FLAGS -Wextra"])
|
|
AS_CXX_COMPILER_FLAG([-Wno-parentheses], [WARNING_FLAGS="$WARNING_FLAGS -Wno-parentheses"])
|
|
|
|
AS_CXX_COMPILER_FLAG([-Wpointer-arith], [WARNING_FLAGS="$WARNING_FLAGS -Wpointer-arith"])
|
|
AS_CXX_COMPILER_FLAG([-Wcast-qual], [WARNING_FLAGS="$WARNING_FLAGS -Wcast-qual"])
|
|
AS_CXX_COMPILER_FLAG([-Wcast-align], [WARNING_FLAGS="$WARNING_FLAGS -Wcast-align"])
|
|
|
|
AS_CXX_COMPILER_FLAG([-Wsign-compare], [WARNING_FLAGS="$WARNING_FLAGS -Wsign-compare"])
|
|
AS_CXX_COMPILER_FLAG([-Wsign-conversion], [WARNING_FLAGS="$WARNING_FLAGS -Wsign-conversion"])
|
|
AS_CXX_COMPILER_FLAG([-Wtype-limits], [WARNING_FLAGS="$WARNING_FLAGS -Wtype-limits"])
|
|
AS_CXX_COMPILER_FLAG([-Wfloat-equal], [WARNING_FLAGS="$WARNING_FLAGS -Wfloat-equal"])
|
|
|
|
#AS_CXX_COMPILER_FLAG([-Wswitch-default], [COMMON_CFLAGS="$COMMON_CFLAGS -Wswitch-default"])
|
|
AS_CXX_COMPILER_FLAG([-Wswitch-enum], [COMMON_CFLAGS="$COMMON_CFLAGS -Wswitch-enum"])
|
|
|
|
AS_CXX_COMPILER_FLAG([-Wunused-parameter], [WARNING_FLAGS="$WARNING_FLAGS -Wunused-parameter"])
|
|
AS_CXX_COMPILER_FLAG([-Wunused-but-set-variable], [WARNING_FLAGS="$WARNING_FLAGS -Wunused-parameter"])
|
|
AS_CXX_COMPILER_FLAG([-Wshadow], [WARNING_FLAGS="$WARNING_FLAGS -Wshadow"])
|
|
AS_CXX_COMPILER_FLAG([-Wredundant-decls], [WARNING_FLAGS="$WARNING_FLAGS -Wredundant-decls"])
|
|
|
|
AS_CXX_COMPILER_FLAG([-pedantic], [COMMON_CFLAGS="$COMMON_CFLAGS -pedantic"])
|
|
|
|
##
|
|
## Compilation
|
|
AS_CXX_COMPILER_FLAG([-fno-common ], [COMMON_CFLAGS="$COMMON_CFLAGS -fno-common "])
|
|
AS_CXX_COMPILER_FLAG([-fno-nonansi-builtins],
|
|
[COMMON_CFLAGS="$COMMON_CFLAGS -fno-nonansi-builtins"])
|
|
AS_CXX_COMPILER_FLAG([-fno-rtti], [COMMON_CFLAGS="$COMMON_CFLAGS -fno-rtti"])
|
|
|
|
|
|
##
|
|
## Compiler features
|
|
AC_C_CONST
|
|
AC_C_RESTRICT
|
|
AC_C_INLINE
|
|
|
|
##
|
|
## Architecture features
|
|
AC_C_BIGENDIAN
|
|
|
|
##
|
|
## Useful headers or platform features
|
|
AC_TYPE_SIZE_T
|
|
AC_TYPE_SSIZE_T
|
|
|
|
##
|
|
## platform features
|
|
#AC_DEFINE([_GNU_SOURCE], [], [Description])
|
|
|
|
case $host_os in
|
|
mingw32)
|
|
AM_CONDITIONAL([PLATFORM_WIN32], [true])
|
|
AM_CONDITIONAL([PLATFORM_LINUX], [false])
|
|
#COMMON_LDFLAGS="$COMMON_LDFLAGS -ldbghelp"
|
|
;;
|
|
|
|
linux-gnu)
|
|
AM_CONDITIONAL([PLATFORM_WIN32], [false])
|
|
AM_CONDITIONAL([PLATFORM_LINUX], [true])
|
|
;;
|
|
|
|
*)
|
|
AC_ERROR([Unknown host_os])
|
|
;;
|
|
esac
|
|
|
|
AC_FUNC_MMAP
|
|
|
|
AC_CHECK_HEADER([execinfo.h], [break])
|
|
AM_CONDITIONAL([HAVE_EXECINFO], [test x$ac_cv_header_execinfo_h = "xyes"])
|
|
|
|
AC_SEARCH_LIBS([clock_gettime], [rt])
|
|
if [[ "x$ac_cv_search_clock_gettime" == "x-*" ]]; then
|
|
COMMON_LDFLAGS="$COMMON_LDFLAGS $ac_cv_search_clock_gettime"
|
|
fi
|
|
|
|
|
|
##
|
|
## Debug features
|
|
if test "x$ac_cv_debugging" = "xyes"; then
|
|
COMMON_CFLAGS="$COMMON_CFLAGS -O0"
|
|
|
|
if test "x$ac_cv_mudflap" = "xyes"; then
|
|
AS_CXX_COMPILER_FLAG([-fmudflapth], [
|
|
COMMON_CFLAGS="$COMMON_CFLAGS -fmudflapth";
|
|
COMMON_LDFLAGS="$COMMON_LDFLAGS -lmudflapth"
|
|
])
|
|
fi
|
|
|
|
AC_DEFINE([ENABLE_DEBUGGING], [], [Description])
|
|
AC_DEFINE([_FORTIFY_SOURCE], [2], [Description])
|
|
AC_DEFINE([_GLIBCXX_DEBUG], [], [Description])
|
|
|
|
else
|
|
COMMON_CFLAGS="$COMMON_CFLAGS -O2 -flto=jobserver"
|
|
COMMON_LDFLAGS="$COMMON_LDFLAGS -flto=jobserver"
|
|
fi
|
|
|
|
case $host_os in
|
|
mingw32)
|
|
COMMON_CFLAGS="$COMMON_CFLAGS -gstabs"
|
|
;;
|
|
|
|
linux-gnu)
|
|
COMMON_CFLAGS="$COMMON_CFLAGS -g"
|
|
AS_CXX_COMPILER_FLAG([-ggdb], [COMMON_CFLAGS="$COMMON_CFLAGS -ggdb"])
|
|
;;
|
|
|
|
*)
|
|
AC_ERROR([Unknown host_os])
|
|
;;
|
|
esac
|
|
|
|
case $host_cpu in
|
|
x86_64)
|
|
OPTIMISATION_FLAGS="$OPTIMISATION_FLAGS -mtune=generic"
|
|
;;
|
|
|
|
i686)
|
|
OPTIMISATION_FLAGS="$OPTIMISATION_FLAGS -march=prescott -mtune=generic -mfpmath=sse"
|
|
;;
|
|
|
|
*)
|
|
AC_MSG_ERROR([Unknown target CPU])
|
|
;;
|
|
esac
|
|
|
|
|
|
##
|
|
## Documentation
|
|
|
|
##
|
|
## Required packages
|
|
CHECK_RAGEL([test/ragel.c.rl])
|
|
|
|
|
|
AX_BOOST_BASE([1.49], [], [AC_MSG_ERROR([Boost version >= 1.42 required])])
|
|
AC_SUBST(BOOST_CPPFLAGS)
|
|
AC_SUBST(BOOST_LDFLAGS)
|
|
|
|
# boost-system isn't a hard requirement, it's only really used to fulfill
|
|
# some other dependency I've since forgotten about...
|
|
AX_BOOST_SYSTEM
|
|
|
|
AX_BOOST_FILESYSTEM
|
|
AC_SUBST(BOOST_FILESYSTEM_LIB)
|
|
|
|
if test "x$ax_cv_boost_filesystem" != "xyes"; then
|
|
AC_MSG_ERROR("boost-filesystem is a hard requirement")
|
|
fi
|
|
|
|
## Optional packages
|
|
|
|
## Output
|
|
|
|
COMMON_CXXFLAGS="-std=c++0x -fno-deduce-init-list -pipe -include config.h $WARNING_FLAGS $OPTIMISATION_FLAGS $COMMON_CFLAGS"
|
|
COMMON_LDFLAGS="$COMMON_LDFLAGS "
|
|
|
|
AC_SUBST(COMMON_CXXFLAGS)
|
|
AC_SUBST(COMMON_LDFLAGS)
|
|
|
|
AC_CONFIG_FILES([
|
|
Doxyfile
|
|
Makefile
|
|
test/Makefile
|
|
])
|
|
AC_OUTPUT
|