| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- # Copyright © 2004 Scott James Remnant <scott@netsplit.com>
- # Copyright © 2006, 2009 Guillem Jover <guillem@debian.org>
- # DPKG_COMPILER_WARNINGS
- # ---------------------
- # Add configure option to disable additional compiler warnings.
- AC_DEFUN([DPKG_COMPILER_WARNINGS],
- [AC_ARG_ENABLE(compiler-warnings,
- AS_HELP_STRING([--disable-compiler-warnings],
- [Disable additional compiler warnings]),
- [],
- [enable_compiler_warnings=yes])
- WFLAGS="-Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers \
- -Wmissing-declarations -Wmissing-format-attribute \
- -Wformat-security -Wpointer-arith \
- -Wvla -Winit-self -Wwrite-strings -Wcast-align -Wshadow"
- WCFLAGS="-Wdeclaration-after-statement -Wnested-externs -Wbad-function-cast \
- -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition"
- # Temporarily here until #542031 gets fixed in ncurses
- WCXXFLAGS="-Wno-unused-value"
- if test "x$enable_compiler_warnings" = "xyes"; then
- if test "x$GCC" = "xyes"; then
- CFLAGS="$WFLAGS $WCFLAGS $CFLAGS"
- fi
- if test "x$GXX" = "xyes"; then
- CXXFLAGS="$WFLAGS $WCXXFLAGS $CXXFLAGS"
- fi
- fi
- ])
- # DPKG_COMPILER_OPTIMISATIONS
- # --------------------------
- # Add configure option to disable optimisations.
- AC_DEFUN([DPKG_COMPILER_OPTIMISATIONS],
- [AC_ARG_ENABLE(compiler-optimisations,
- AS_HELP_STRING([--disable-compiler-optimisations],
- [Disable compiler optimisations]),
- [],
- [enable_compiler_optimisations=yes])
- AS_IF([test "x$enable_compiler_optimisations" = "xno"], [
- CFLAGS=$(echo "$CFLAGS" | sed -e "s/ -O[[1-9]]*\b/ -O0/g")
- ])
- ])
- # DPKG_TRY_C99([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
- # ------------------------------------------------------
- # Try compiling some C99 code to see whether it works
- AC_DEFUN([DPKG_TRY_C99],
- [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
- #include <inttypes.h>
- #include <stdbool.h>
- #include <stdio.h>
- /* Variadic macro arguments. */
- #define variadic_macro(foo, ...) printf(foo, __VA_ARGS__)
- ]],
- [[
- int rc;
- /* Compound initializers. */
- struct { int a, b; } foo = { .a = 1, .b = 2 };
- /* Trailing comma in enum. */
- enum { first, second, } quux;
- /* Boolean type. */
- bool bar = false;
- /* Specific size type. */
- uint32_t baz = 0;
- size_t size = SIZE_MAX;
- intmax_t imax = INTMAX_MAX;
- /* Format modifiers. */
- rc = printf("%jd", imax);
- if (rc == 3)
- return 1;
- rc = printf("%zu", size);
- if (rc == 3)
- return 1;
- /* Magic __func__ variable. */
- printf("%s", __func__);
- ]])], [$1], [$2])dnl
- ])# DPKG_TRY_C99
- # DPKG_C_C99
- # ----------
- # Check whether the compiler can do C99
- AC_DEFUN([DPKG_C_C99],
- [AC_CACHE_CHECK([whether compiler supports C99 features], [dpkg_cv_c99],
- [DPKG_TRY_C99([dpkg_cv_c99=yes], [dpkg_cv_c99=no])])
- AS_IF([test "x$dpkg_cv_c99" = "xyes"],
- [AC_DEFINE([HAVE_C99], 1, [Define to 1 if the compiler supports C99.])],
- [AC_CACHE_CHECK([what argument makes compiler support C99 features],
- [dpkg_cv_c99_arg],
- [dpkg_cv_c99_arg=none
- dpkg_save_CC="$CC"
- for arg in "-std=gnu99" "-std=c99" "-c99" "-AC99" \
- "-xc99=all" "-qlanglvl=extc99"; do
- CC="$dpkg_save_CC $arg"
- DPKG_TRY_C99([dpkg_arg_worked=yes], [dpkg_arg_worked=no])
- CC="$dpkg_save_CC"
- AS_IF([test "x$dpkg_arg_worked" = "xyes"],
- [dpkg_cv_c99_arg="$arg"; break])
- done])
- AS_IF([test "x$dpkg_cv_c99_arg" != "xnone"],
- [CC="$CC $dpkg_cv_c99_arg"
- AC_DEFINE([HAVE_C99], 1)],
- [AC_MSG_ERROR([unsupported required C99 extensions])])])[]dnl
- ])# DPKG_C_C99
|