diff --git a/configure.ac b/configure.ac index 7d007c7e..4152b8d9 100644 --- a/configure.ac +++ b/configure.ac @@ -197,6 +197,21 @@ std::vector> v; [have_std_future=no AC_MSG_RESULT([no])]) +# Check that thread_local is available. +AC_MSG_CHECKING([whether thread_local is available]) +AC_COMPILE_IFELSE([AC_LANG_PROGRAM( +[[ +]], +[[ +thread_local int n; +]])], + [AC_DEFINE([HAVE_THREAD_LOCAL], [1], + [Define to 1 if you have the `thread_local`.]) + have_thread_local=yes + AC_MSG_RESULT([yes])], + [have_thread_local=no + AC_MSG_RESULT([no])]) + # Check that std::map::emplace is available for g++-4.7. AC_MSG_CHECKING([whether std::map::emplace is available]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM( @@ -608,9 +623,13 @@ if test "x$debug" != "xno"; then AC_DEFINE([DEBUGBUILD], [1], [Define to 1 to enable debug output.]) fi -# Some platform does not have working std::future. We disable -# threading for those platforms to exclude std::future use. -if test "x$threads" != "xyes" || test "x$have_std_future" != "xyes"; then +enable_threads=yes +# Some platform does not have working std::future or thread_local. We +# disable threading for those platforms. +if test "x$threads" != "xyes" || + test "x$have_std_future" != "xyes" || + test "x$have_thread_local" != "xyes"; then + enable_threads=no AC_DEFINE([NOTHREADS], [1], [Define to 1 if you want to disable threads.]) fi @@ -698,4 +717,5 @@ AC_MSG_NOTICE([summary of build options: Libnghttp2_asio:${enable_asio_lib} Examples: ${enable_examples} Python bindings:${enable_python_bindings} + Threading: ${enable_threads} ])