Make Fibers library conditional on working Boost.Context fcontext_t
authorBen Hamilton <beng@fb.com>
Fri, 10 Jun 2016 23:01:34 +0000 (16:01 -0700)
committerFacebook Github Bot 7 <facebook-github-bot-7-bot@fb.com>
Fri, 10 Jun 2016 23:08:25 +0000 (16:08 -0700)
Summary:
Boost 1.61 removes the `boost::context::fcontext_t` type
which Folly Fibers depends on.

This makes the Fibers library conditional on a working `fcontext_t`,
so Folly will build (just without Fibers) if it's not present.

Depends On D3419638

Fixes https://github.com/facebook/folly/issues/413

Reviewed By: Orvid

Differential Revision: D3420097

fbshipit-source-id: 876f8f76a2d0dda4ce5085c27875ab6aaa7b86c0

folly/Makefile.am
folly/configure.ac

index 45547c9dc93a8db58536cde5e3b9f619f2748b26..bfd670cdca8dd1c86bf86ab7ce876eccb3917426 100644 (file)
@@ -97,32 +97,6 @@ nobase_follyinclude_HEADERS = \
        experimental/EventCount.h \
        experimental/Instructions.h \
        experimental/bser/Bser.h \
-       fibers/AddTasks.h \
-       fibers/AddTasks-inl.h \
-       fibers/Baton.h \
-       fibers/Baton-inl.h \
-       fibers/BoostContextCompatibility.h \
-       fibers/EventBaseLoopController.h \
-       fibers/EventBaseLoopController-inl.h \
-       fibers/Fiber.h \
-       fibers/Fiber-inl.h \
-       fibers/FiberManager.h \
-       fibers/FiberManager-inl.h \
-       fibers/FiberManagerMap.h \
-       fibers/ForEach.h \
-       fibers/ForEach-inl.h \
-       fibers/GenericBaton.h \
-       fibers/GuardPageAllocator.h \
-       fibers/LoopController.h \
-       fibers/Promise.h \
-       fibers/Promise-inl.h \
-       fibers/SimpleLoopController.h \
-       fibers/TimedMutex.h \
-       fibers/TimedMutex-inl.h \
-       fibers/TimeoutController.h \
-       fibers/traits.h \
-       fibers/WhenN.h \
-       fibers/WhenN-inl.h \
        experimental/FunctionScheduler.h \
        experimental/FutureDAG.h \
        experimental/io/FsUtil.h \
@@ -467,12 +441,6 @@ libfolly_la_SOURCES = \
        experimental/bser/Dump.cpp \
        experimental/bser/Load.cpp \
        experimental/DynamicParser.cpp \
-       fibers/Baton.cpp \
-       fibers/Fiber.cpp \
-       fibers/FiberManager.cpp \
-       fibers/FiberManagerMap.cpp \
-       fibers/GuardPageAllocator.cpp \
-       fibers/TimeoutController.cpp \
        experimental/FunctionScheduler.cpp \
        experimental/io/FsUtil.cpp \
        experimental/JSONSchema.cpp \
@@ -496,6 +464,44 @@ if !HAVE_BITS_FUNCTEXCEPT_H
 libfollybase_la_SOURCES += detail/FunctionalExcept.cpp
 endif
 
+if HAVE_BOOST_CONTEXT
+nobase_follyinclude_HEADERS += \
+       fibers/AddTasks.h \
+       fibers/AddTasks-inl.h \
+       fibers/Baton.h \
+       fibers/Baton-inl.h \
+       fibers/BoostContextCompatibility.h \
+       fibers/EventBaseLoopController.h \
+       fibers/EventBaseLoopController-inl.h \
+       fibers/Fiber.h \
+       fibers/Fiber-inl.h \
+       fibers/FiberManager.h \
+       fibers/FiberManager-inl.h \
+       fibers/FiberManagerMap.h \
+       fibers/ForEach.h \
+       fibers/ForEach-inl.h \
+       fibers/GenericBaton.h \
+       fibers/GuardPageAllocator.h \
+       fibers/LoopController.h \
+       fibers/Promise.h \
+       fibers/Promise-inl.h \
+       fibers/SimpleLoopController.h \
+       fibers/TimedMutex.h \
+       fibers/TimedMutex-inl.h \
+       fibers/TimeoutController.h \
+       fibers/traits.h \
+       fibers/WhenN.h \
+       fibers/WhenN-inl.h
+
+libfolly_la_SOURCES += \
+       fibers/Baton.cpp \
+       fibers/Fiber.cpp \
+       fibers/FiberManager.cpp \
+       fibers/FiberManagerMap.cpp \
+       fibers/GuardPageAllocator.cpp \
+       fibers/TimeoutController.cpp
+endif
+
 libfollybase_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(LT_VERSION)
 
 libfolly_la_LIBADD = libfollybase.la
index e3981b2c1618803aa95183ab513e3464a828f674..48a99b5b69450adcb7c44c483c2eb15c1f3a08e4 100644 (file)
@@ -536,6 +536,7 @@ AM_CONDITIONAL([HAVE_BITS_FUNCTEXCEPT_H], [test "$ac_cv_header_bits_functexcept_
 AM_CONDITIONAL([HAVE_EXTRANDOM_SFMT19937],
                [test "$folly_cv_prog_cc_have_extrandom_sfmt19937" = "yes"])
 AM_CONDITIONAL([FOLLY_TESTMAIN], [test "x${use_follytestmain}" = "xyes"])
+AM_CONDITIONAL([HAVE_BOOST_CONTEXT], [test "x${ax_cv_boost_context}" = "xyes"])
 
 # Output
 AC_CONFIG_FILES([Makefile