From 7ea8b939596272f3d3ac33103dfab3429f4c971d Mon Sep 17 00:00:00 2001 From: Yedidya Feldblum Date: Wed, 23 Mar 2016 18:07:02 -0700 Subject: [PATCH] Fix Build: folly after replacing FOLLY_NORETURN Summary:[Folly] Fix Build: `folly` after replacing `FOLLY_NORETURN`. Problem 1: * Clang does not treat `[[noreturn]]` and `__attribute__((__noreturn__))` as the same attribute. When a function is declared twice with the noreturn attribute, both declarations must use either the one syntax or the other; Clang fails if the two declarations mix-and-match. When both `folly/detail/FunctionalExcept.h` and gcc49's `bits/functexcept.h` are both included from the same source, they (now) mix-and-match the attribute syntaxes and Clang emits an error. * `folly/detail/FunctionalExcept.h` should be included only when `bits/functexcept.h` is unavailable - somehow, both headers were being included. We fix the latter problem and keep our `[[noreturn]]` syntax. Found from WDT build failures in Travis CI. Reviewed By: ldemailly Differential Revision: D3089987 fb-gh-sync-id: 705a087fc2a9629739d6cedd8315d56111204e6d shipit-source-id: 705a087fc2a9629739d6cedd8315d56111204e6d --- folly/Makefile.am | 2 +- folly/configure.ac | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/folly/Makefile.am b/folly/Makefile.am index 83d623a8..a56afac1 100644 --- a/folly/Makefile.am +++ b/folly/Makefile.am @@ -459,7 +459,7 @@ if !HAVE_WEAK_SYMBOLS libfollybase_la_SOURCES += detail/MallocImpl.cpp endif -if !HAVE_BITS_FUNCTEXCEPT +if !HAVE_BITS_FUNCTEXCEPT_H libfollybase_la_SOURCES += detail/FunctionalExcept.cpp endif diff --git a/folly/configure.ac b/folly/configure.ac index dc19b559..af1bbb4a 100644 --- a/folly/configure.ac +++ b/folly/configure.ac @@ -528,7 +528,7 @@ AM_CONDITIONAL([RUN_ARCH_SPECIFIC_TESTS], [test "$build_cpu" = "x86_64" || test AM_CONDITIONAL([HAVE_LINUX], [test "$build_os" == "linux-gnu"]) AM_CONDITIONAL([HAVE_WEAK_SYMBOLS], [test "$folly_cv_prog_cc_weak_symbols" = "yes"]) -AM_CONDITIONAL([HAVE_BITS_FUNCTEXCEPT], [test "$ac_cv_header_bits_functexcept_h" = "yes"]) +AM_CONDITIONAL([HAVE_BITS_FUNCTEXCEPT_H], [test "$ac_cv_header_bits_functexcept_h" = "yes"]) AM_CONDITIONAL([HAVE_EXTRANDOM_SFMT19937], [test "$folly_cv_prog_cc_have_extrandom_sfmt19937" = "yes"]) AM_CONDITIONAL([FOLLY_TESTMAIN], [test "x${use_follytestmain}" = "xyes"]) -- 2.34.1