summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2014-09-25 11:20:04 -0400
committerNick Mathewson <nickm@torproject.org>2014-09-25 11:20:04 -0400
commit7f5103ec59e1e1da6c32e2bb0a3b1b6e437d57e4 (patch)
tree2a84e35024a031c45ca726e136f7a0c5cf83475e /configure.ac
parentecab2616413b06754bfb110eab2bfbf58e3a57b2 (diff)
downloadtor-7f5103ec59e1e1da6c32e2bb0a3b1b6e437d57e4.tar.gz
tor-7f5103ec59e1e1da6c32e2bb0a3b1b6e437d57e4.zip
Require two c99 features (midblock decls, designated initializers)
c99 lets us do neat stuff like: { int j, k; foo(&j, &k); int z = j + k; } and also struct point { int x; int y; }; struct point pt = { .x=5, .y=5 }; This commit makes the configure scripts check to make sure your compiler implements them. It also disables our longstanding warning about midblock declarations. Closes ticket 13233.
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac24
1 files changed, 23 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac
index 5aeeeb4025..15154b3414 100644
--- a/configure.ac
+++ b/configure.ac
@@ -221,6 +221,28 @@ AC_C_FLEXIBLE_ARRAY_MEMBER
fi
])
+AC_CACHE_CHECK([for working C99 mid-block declaration syntax],
+ tor_cv_c_c99_decl,
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([], [int x; x = 3; int y; y = 4 + x;])],
+ [tor_cv_c_c99_decl=yes],
+ [tor_cv_c_c99_decl=no] )])
+if test "$tor_cv_c_c99_decl" != "yes"; then
+ AC_MSG_ERROR([Your compiler doesn't support c99 mid-block declarations. This is required as of Tor 0.2.6.x])
+fi
+
+AC_CACHE_CHECK([for working C99 designated initializers],
+ tor_cv_c_c99_designated_init,
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([struct s { int a; int b; };],
+ [[ struct s ss = { .b = 5, .a = 6 }; ]])],
+ [tor_cv_c_c99_designated_init=yes],
+ [tor_cv_c_c99_designated_init=no] )])
+
+if test "$tor_cv_c_c99_designated_init" != "yes"; then
+ AC_MSG_ERROR([Your compiler doesn't support c99 designated initializers. This is required as of Tor 0.2.6.x])
+fi
+
AC_PATH_PROG([SHA1SUM], [sha1sum], none)
AC_PATH_PROG([OPENSSL], [openssl], none)
@@ -1500,7 +1522,7 @@ if test x$enable_gcc_warnings = xyes || test x$enable_gcc_warnings_advisory = xy
if test x$have_gcc4 = xyes ; then
# These warnings break gcc 3.3.5 and work on gcc 4.0.2
- CFLAGS="$CFLAGS -Winit-self -Wmissing-field-initializers -Wdeclaration-after-statement -Wold-style-definition"
+ CFLAGS="$CFLAGS -Winit-self -Wmissing-field-initializers -Wold-style-definition"
fi
if test x$have_gcc42 = xyes ; then