From 7b7e1fc7cd54c50e113c0e62e45dd7142bc256b0 Mon Sep 17 00:00:00 2001 From: Andrii Grynenko Date: Mon, 6 Apr 2015 19:32:01 -0700 Subject: [PATCH] Fix open-source Makefiles after fibers were moved to folly Test Plan: contbuild Reviewed By: pavlo@fb.com Subscribers: alikhtarov, folly-diffs@, yfeldblum, chalfant FB internal diff: D1966698 Signature: t1:1966698:1428367351:62f2218c23d4911c15055917c0fbae31a2420903 --- folly/Makefile.am | 31 ++++++ folly/configure.ac | 7 +- folly/experimental/fibers/Makefile.am | 1 - folly/experimental/fibers/test/Makefile.am | 8 -- folly/m4/ax_boost_context.m4 | 123 +++++++++++++++++++++ 5 files changed, 158 insertions(+), 12 deletions(-) delete mode 100644 folly/experimental/fibers/Makefile.am delete mode 100644 folly/experimental/fibers/test/Makefile.am create mode 100644 folly/m4/ax_boost_context.m4 diff --git a/folly/Makefile.am b/folly/Makefile.am index 23f5c5ef..daa849b8 100644 --- a/folly/Makefile.am +++ b/folly/Makefile.am @@ -26,6 +26,7 @@ nobase_follyinclude_HEADERS = \ AtomicHashArray-inl.h \ AtomicHashMap.h \ AtomicHashMap-inl.h \ + AtomicLinkedList.h \ AtomicStruct.h \ Baton.h \ Benchmark.h \ @@ -72,6 +73,31 @@ nobase_follyinclude_HEADERS = \ experimental/Bits.h \ experimental/EliasFanoCoding.h \ experimental/EventCount.h \ + experimental/fibers/AddTasks.h \ + experimental/fibers/AddTasks-inl.h \ + experimental/fibers/Baton.h \ + experimental/fibers/Baton-inl.h \ + experimental/fibers/BoostContextCompatibility.h \ + experimental/fibers/EventBaseLoopController.h \ + experimental/fibers/EventBaseLoopController-inl.h \ + experimental/fibers/Fiber.h \ + experimental/fibers/Fiber-inl.h \ + experimental/fibers/FiberManager.h \ + experimental/fibers/FiberManager-inl.h \ + experimental/fibers/FiberManagerMap.h \ + experimental/fibers/ForEach.h \ + experimental/fibers/ForEach-inl.h \ + experimental/fibers/GenericBaton.h \ + experimental/fibers/GuardPageAllocator.h \ + experimental/fibers/GuardPageAllocator-inl.h \ + experimental/fibers/LoopController.h \ + experimental/fibers/Promise.h \ + experimental/fibers/Promise-inl.h \ + experimental/fibers/SimpleLoopController.h \ + experimental/fibers/TimeoutController.h \ + experimental/fibers/traits.h \ + experimental/fibers/WhenN.h \ + experimental/fibers/WhenN-inl.h \ experimental/FunctionScheduler.h \ experimental/io/FsUtil.h \ experimental/JSONSchema.h \ @@ -353,6 +379,11 @@ libfolly_la_SOURCES = \ TimeoutQueue.cpp \ Uri.cpp \ Version.cpp \ + experimental/fibers/Baton.cpp \ + experimental/fibers/Fiber.cpp \ + experimental/fibers/FiberManager.cpp \ + experimental/fibers/FiberManagerMap.cpp \ + experimental/fibers/TimeoutController.cpp \ experimental/FunctionScheduler.cpp \ experimental/io/FsUtil.cpp \ experimental/JSONSchema.cpp \ diff --git a/folly/configure.ac b/folly/configure.ac index 8b3eb1ac..d0aca0a0 100644 --- a/folly/configure.ac +++ b/folly/configure.ac @@ -64,8 +64,9 @@ AC_CHECK_LIB(ssl, [AC_MSG_ERROR(["Error: libssl required"])]) # check for boost libs -AX_BOOST_BASE([1.20.0], [], [AC_MSG_ERROR( - [Please install boost >= 1.20.0 (thread, regex, and system)])]) +AX_BOOST_BASE([1.51.0], [], [AC_MSG_ERROR( + [Please install boost >= 1.51.0 (context, thread, regex, and system)])]) +AX_BOOST_CONTEXT AX_BOOST_THREAD AX_BOOST_REGEX AX_BOOST_SYSTEM @@ -307,7 +308,7 @@ AC_CHECK_HEADER([lzma.h], AC_CHECK_LIB([lzma], [main])) # Include directory that contains "folly" so #include works AM_CPPFLAGS='-I$(top_srcdir)/..' AM_CPPFLAGS="$AM_CPPFLAGS $BOOST_CPPFLAGS" -AM_LDFLAGS="$AM_LDFLAGS $BOOST_THREAD_LIB $BOOST_FILESYSTEM_LIB" +AM_LDFLAGS="$AM_LDFLAGS $BOOST_CONTEXT_LIB $BOOST_THREAD_LIB $BOOST_FILESYSTEM_LIB" AM_LDFLAGS="$AM_LDFLAGS $BOOST_SYSTEM_LIB $BOOST_REGEX_LIB -lpthread" AC_SUBST([AM_CPPFLAGS]) diff --git a/folly/experimental/fibers/Makefile.am b/folly/experimental/fibers/Makefile.am deleted file mode 100644 index 02af5b3e..00000000 --- a/folly/experimental/fibers/Makefile.am +++ /dev/null @@ -1 +0,0 @@ -SUBDIRS = test diff --git a/folly/experimental/fibers/test/Makefile.am b/folly/experimental/fibers/test/Makefile.am deleted file mode 100644 index 707ea33b..00000000 --- a/folly/experimental/fibers/test/Makefile.am +++ /dev/null @@ -1,8 +0,0 @@ -check_PROGRAMS = mcrouter_fibers_test - -mcrouter_fibers_test_SOURCES = \ - FibersTest.cpp \ - main.cpp - -mcrouter_fibers_test_CPPFLAGS = -I$(top_srcdir)/oss_include -mcrouter_fibers_test_LDADD = $(top_builddir)/lib/libmcrouter.a -lgtest -lfollybenchmark diff --git a/folly/m4/ax_boost_context.m4 b/folly/m4/ax_boost_context.m4 new file mode 100644 index 00000000..f4a8b11a --- /dev/null +++ b/folly/m4/ax_boost_context.m4 @@ -0,0 +1,123 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_boost_context.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_BOOST_CONTEXT +# +# DESCRIPTION +# +# Test for Context library from the Boost C++ libraries. The macro +# requires a preceding call to AX_BOOST_BASE. Further documentation is +# available at . +# +# This macro calls: +# +# AC_SUBST(BOOST_CONTEXT_LIB) +# +# And sets: +# +# HAVE_BOOST_CONTEXT +# +# LICENSE +# +# Copyright (c) 2008 Thomas Porschberg +# Copyright (c) 2008 Michael Tindal +# Copyright (c) 2013 Daniel Casimiro +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 1 + +AC_DEFUN([AX_BOOST_CONTEXT], +[ + AC_ARG_WITH([boost-context], + AS_HELP_STRING([--with-boost-context@<:@=special-lib@:>@], + [use the Context library from boost - it is possible to specify a certain library for the linker + e.g. --with-boost-context=boost_context-gcc-mt ]), [ + if test "$withval" = "no"; then + want_boost="no" + elif test "$withval" = "yes"; then + want_boost="yes" + ax_boost_user_context_lib="" + else + want_boost="yes" + ax_boost_user_context_lib="$withval" + fi + ], [want_boost="yes"] + ) + + if test "x$want_boost" = "xyes"; then + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_BUILD]) + + CPPFLAGS_SAVED="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" + export CPPFLAGS + + LDFLAGS_SAVED="$LDFLAGS" + LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" + export LDFLAGS + + AC_CACHE_CHECK(whether the Boost::Context library is available, + ax_cv_boost_context, + [AC_LANG_PUSH([C++]) + CXXFLAGS_SAVE=$CXXFLAGS + + AC_COMPILE_IFELSE([AC_LANG_PROGRAM( + [[@%:@include ]], + [[boost::context::fcontext_t* fc = boost::context::make_fcontext(0, 0, 0);]])], + ax_cv_boost_context=yes, ax_cv_boost_context=no) + CXXFLAGS=$CXXFLAGS_SAVE + AC_LANG_POP([C++]) + ]) + + if test "x$ax_cv_boost_context" = "xyes"; then + AC_SUBST(BOOST_CPPFLAGS) + + AC_DEFINE(HAVE_BOOST_CONTEXT,,[define if the Boost::Context library is available]) + BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'` + + if test "x$ax_boost_user_context_lib" = "x"; then + for libextension in `ls $BOOSTLIBDIR/libboost_context*.so* $BOOSTLIBDIR/libboost_context*.dylib* $BOOSTLIBDIR/libboost_context*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_context.*\)\.so.*$;\1;' -e 's;^lib\(boost_context.*\)\.dylib.*$;\1;' -e 's;^lib\(boost_context.*\)\.a.*$;\1;'` ; do + ax_lib=${libextension} + AC_CHECK_LIB($ax_lib, exit, + [BOOST_CONTEXT_LIB="-l$ax_lib"; AC_SUBST(BOOST_CONTEXT_LIB) link_context="yes"; break], + [link_context="no"]) + done + + if test "x$link_context" != "xyes"; then + for libextension in `ls $BOOSTLIBDIR/boost_context*.dll* $BOOSTLIBDIR/boost_context*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_context.*\)\.dll.*$;\1;' -e 's;^\(boost_context.*\)\.a.*$;\1;'` ; do + ax_lib=${libextension} + AC_CHECK_LIB($ax_lib, exit, + [BOOST_CONTEXT_LIB="-l$ax_lib"; AC_SUBST(BOOST_CONTEXT_LIB) link_context="yes"; break], + [link_context="no"]) + done + fi + + else + for ax_lib in $ax_boost_user_context_lib boost_context-$ax_boost_user_context_lib; do + AC_CHECK_LIB($ax_lib, exit, + [BOOST_CONTEXT_LIB="-l$ax_lib"; AC_SUBST(BOOST_CONTEXT_LIB) link_context="yes"; break], + [link_context="no"]) + done + fi + + if test "x$ax_lib" = "x"; then + AC_MSG_ERROR(Could not find a version of the library!) + fi + + if test "x$link_context" = "xno"; then + AC_MSG_ERROR(Could not link against $ax_lib !) + fi + fi + + CPPFLAGS="$CPPFLAGS_SAVED" + LDFLAGS="$LDFLAGS_SAVED" + fi +]) + -- 2.34.1