diff options
| author | Oz Linden <oz@lindenlab.com> | 2013-05-07 15:11:55 -0400 | 
|---|---|---|
| committer | Oz Linden <oz@lindenlab.com> | 2013-05-07 15:11:55 -0400 | 
| commit | 545e033d1e008f4b1da330d6967b363c7d09feca (patch) | |
| tree | 73e1a622a224b81bce076d38a8c4140e43c8deb9 | |
| parent | f382233fbb29bf81fc4009930dc134253d8ea250 (diff) | |
| parent | 0f3d291ef61deeb015dec332cf19822b63be2402 (diff) | |
merge changes for DRTVWR-299
| -rwxr-xr-x | .hgtags | 3 | ||||
| -rwxr-xr-x | autobuild.xml | 12 | ||||
| -rwxr-xr-x | indra/cmake/00-Common.cmake | 7 | ||||
| -rwxr-xr-x | indra/cmake/Boost.cmake | 54 | ||||
| -rwxr-xr-x | indra/cmake/Copy3rdPartyLibs.cmake | 5 | ||||
| -rwxr-xr-x | indra/llcommon/llcoros.cpp | 2 | ||||
| -rwxr-xr-x | indra/llcommon/llcoros.h | 6 | ||||
| -rwxr-xr-x | indra/llcommon/lleventcoro.h | 16 | ||||
| -rwxr-xr-x | indra/llcommon/tests/lleventcoro_test.cpp | 12 | ||||
| -rwxr-xr-x | indra/newview/CMakeLists.txt | 1 | ||||
| -rwxr-xr-x | indra/newview/llviewerprecompiledheaders.h | 2 | ||||
| -rwxr-xr-x | indra/newview/viewer_manifest.py | 5 | ||||
| -rwxr-xr-x | indra/viewer_components/login/CMakeLists.txt | 7 | ||||
| -rwxr-xr-x | indra/viewer_components/login/lllogin.cpp | 1 | 
14 files changed, 79 insertions, 54 deletions
| @@ -281,7 +281,6 @@ ab2ffc547c8a8950ff187c4f6c95e5334fab597b 3.3.4-beta5  28e100d0379a2b0710c57647a28fc5239d3d7b99 3.3.4-release  005dfe5c4c377207d065fb27858d2eb0b53b143a DRTVWR-167  888768f162d2c0a8de1dcc5fb9a08bd8bd120a6b DRTVWR-175 -4ad8a3afe40e0200309e3ada68932c4295ac2795 DRTVWR-179  a8b3eca451a9eaab59987efb0ab1c4217e3f2dcc DRTVWR-182  1f27cdfdc54246484f8afbbe42ce48e954175cbd 3.4.0-beta1  9ee9387789701d597130f879d9011a4958753862 DRTVWR-189 @@ -318,6 +317,7 @@ f00068a66a2e2f72acbe3f690b98b323e740b289 DRTVWR-222  dd23d4da3bcb2ffda58569e759feb7c119982973 DRTVWR-224  0bd3744ff060452aa13ff4992eafb381df7b1012 3.4.1-beta5  29075f8c1abed53dcf195a59f61744e27a91108f DRTVWR-226 +fba99f381b8d4ad1b7b42fa4993b29998d95be18 DRTVWR-179  49ed253c80bed7410e238eeab35a9f14cb034364 3.4.1-beta6  468ca3268229011a59df99229b24315844b33d34 DRTVWR-227  524da902713e8b60322640b9825101add4a7c497 3.4.1-beta7 @@ -449,3 +449,4 @@ e6b8a92acffd693cd1459e4212e3dff1050acf67 DRTVWR-278  509b97acc4ca1f2644197f1b555773ac0bb6838c 3.5.2-beta2  6cb3689d89c13876ce8fa8faefa7b05e4279502d DRTVWR-316  cfc3e650e5b2063288e7b832e9c9f521bbdacc92 DRTVWR-315 +e6e35501f1fea252ef83080adcf30c3cb7c2f75c DRTVWR-299 diff --git a/autobuild.xml b/autobuild.xml index b12bb5a94b..148ca1710b 100755 --- a/autobuild.xml +++ b/autobuild.xml @@ -186,9 +186,9 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>ac37d0038c91b0672fa31a02731f0eac</string> +              <string>06dd7af75e1eb179aed54fd58d8688af</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/268347/arch/Darwin/installer/boost-1.52.0-darwin-20121218.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/270698/arch/Darwin/installer/boost-1.52.0-darwin-20130221.tar.bz2</string>              </map>              <key>name</key>              <string>darwin</string> @@ -198,9 +198,9 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>146ed8a8c2ef8ab3f0a6c4f214fc5c22</string> +              <string>50c8b50b7cced52cc5656fb44e9b12cf</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/268347/arch/Linux/installer/boost-1.52.0-linux-20121218.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/270698/arch/Linux/installer/boost-1.52.0-linux-20130222.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string> @@ -210,9 +210,9 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>3ea60f17d986b7e8a3351298734bdca4</string> +              <string>742fc9675b033df7f9c6f215ff250f6c</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/268347/arch/CYGWIN/installer/boost-1.52.0-windows-20121218.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/270698/arch/CYGWIN/installer/boost-1.52.0-windows-20130221.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string> diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index fb5c759493..472f271fa8 100755 --- a/indra/cmake/00-Common.cmake +++ b/indra/cmake/00-Common.cmake @@ -175,12 +175,7 @@ endif (LINUX)  if (DARWIN) -  # NOTE (per http://lists.apple.com/archives/darwin-dev/2008/Jan/msg00232.html): -  # > Why the bus error? What am I doing wrong?  -  # This is a known issue where getcontext(3) is writing past the end of the -  # ucontext_t struct when _XOPEN_SOURCE is not defined (rdar://problem/5578699 ). -  # As a workaround, define _XOPEN_SOURCE before including ucontext.h. -  add_definitions(-DLL_DARWIN=1 -D_XOPEN_SOURCE) +  add_definitions(-DLL_DARWIN=1)    set(CMAKE_CXX_LINK_FLAGS "-Wl,-no_compact_unwind -Wl,-headerpad_max_install_names,-search_paths_first")    set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_CXX_LINK_FLAGS}")    set(DARWIN_extra_cstar_flags "-mlong-branch -g") diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake index 1acb2bbbfd..cff762e1f0 100755 --- a/indra/cmake/Boost.cmake +++ b/indra/cmake/Boost.cmake @@ -7,11 +7,12 @@ set(Boost_FIND_REQUIRED ON)  if (STANDALONE)    include(FindBoost) +  set(BOOST_CONTEXT_LIBRARY boost_context-mt) +  set(BOOST_FILESYSTEM_LIBRARY boost_filesystem-mt)    set(BOOST_PROGRAM_OPTIONS_LIBRARY boost_program_options-mt)    set(BOOST_REGEX_LIBRARY boost_regex-mt)    set(BOOST_SIGNALS_LIBRARY boost_signals-mt)    set(BOOST_SYSTEM_LIBRARY boost_system-mt) -  set(BOOST_FILESYSTEM_LIBRARY boost_filesystem-mt)    set(BOOST_THREAD_LIBRARY boost_thread-mt)  else (STANDALONE)    use_prebuilt_binary(boost) @@ -20,6 +21,12 @@ else (STANDALONE)    if (WINDOWS)      if(MSVC80) +      set(BOOST_CONTEXT_LIBRARY  +          optimized libboost_context-vc80-mt-${BOOST_VERSION} +          debug libboost_context-vc80-mt-gd-${BOOST_VERSION}) +      set(BOOST_FILESYSTEM_LIBRARY  +          optimized libboost_filesystem-vc80-mt-${BOOST_VERSION} +          debug libboost_filesystem-vc80-mt-gd-${BOOST_VERSION})        set(BOOST_PROGRAM_OPTIONS_LIBRARY             optimized libboost_program_options-vc80-mt-${BOOST_VERSION}            debug libboost_program_options-vc80-mt-gd-${BOOST_VERSION}) @@ -32,59 +39,74 @@ else (STANDALONE)        set(BOOST_SYSTEM_LIBRARY             optimized libboost_system-vc80-mt-${BOOST_VERSION}            debug libboost_system-vc80-mt-gd-${BOOST_VERSION}) -      set(BOOST_FILESYSTEM_LIBRARY  -          optimized libboost_filesystem-vc80-mt-${BOOST_VERSION} -          debug libboost_filesystem-vc80-mt-gd-${BOOST_VERSION}) +      set(BOOST_THREAD_LIBRARY  +          optimized libboost_thread-vc80-mt-${BOOST_VERSION} +          debug libboost_thread-vc80-mt-gd-${BOOST_VERSION})      else(MSVC80)        # MSVC 10.0 config +      set(BOOST_CONTEXT_LIBRARY  +          optimized libboost_context-mt +          debug libboost_context-mt-gd) +      set(BOOST_FILESYSTEM_LIBRARY  +          optimized libboost_filesystem-mt +          debug libboost_filesystem-mt-gd)        set(BOOST_PROGRAM_OPTIONS_LIBRARY             optimized libboost_program_options-mt            debug libboost_program_options-mt-gd)        set(BOOST_REGEX_LIBRARY            optimized libboost_regex-mt            debug libboost_regex-mt-gd) +      set(BOOST_SIGNALS_LIBRARY  +          optimized libboost_signals-mt +          debug libboost_signals-mt-gd)        set(BOOST_SYSTEM_LIBRARY             optimized libboost_system-mt            debug libboost_system-mt-gd) -      set(BOOST_FILESYSTEM_LIBRARY  -          optimized libboost_filesystem-mt -          debug libboost_filesystem-mt-gd)        set(BOOST_THREAD_LIBRARY             optimized libboost_thread-mt            debug libboost_thread-mt-gd)      endif (MSVC80)    elseif (LINUX) +    set(BOOST_CONTEXT_LIBRARY +        optimized boost_context-mt +        debug boost_context-mt-d) +    set(BOOST_FILESYSTEM_LIBRARY +        optimized boost_filesystem-mt +        debug boost_filesystem-mt-d)      set(BOOST_PROGRAM_OPTIONS_LIBRARY          optimized boost_program_options-mt          debug boost_program_options-mt-d)      set(BOOST_REGEX_LIBRARY          optimized boost_regex-mt          debug boost_regex-mt-d) +    set(BOOST_SIGNALS_LIBRARY +        optimized boost_signals-mt +        debug boost_signals-mt-d)      set(BOOST_SYSTEM_LIBRARY          optimized boost_system-mt          debug boost_system-mt-d) -    set(BOOST_FILESYSTEM_LIBRARY -        optimized boost_filesystem-mt -        debug boost_filesystem-mt-d)      set(BOOST_THREAD_LIBRARY          optimized boost_thread-mt          debug boost_thread-mt-d)    elseif (DARWIN) -    set(BOOST_PROGRAM_OPTIONS_LIBRARY -        optimized boost_program_options-mt -        debug boost_program_options-mt-d) +    set(BOOST_CONTEXT_LIBRARY +        optimized boost_context-mt +        debug boost_context-mt-d) +    set(BOOST_FILESYSTEM_LIBRARY +        optimized boost_filesystem-mt +        debug boost_filesystem-mt-d)      set(BOOST_PROGRAM_OPTIONS_LIBRARY          optimized boost_program_options-mt          debug boost_program_options-mt-d)      set(BOOST_REGEX_LIBRARY          optimized boost_regex-mt          debug boost_regex-mt-d) +    set(BOOST_SIGNALS_LIBRARY +        optimized boost_signals-mt +        debug boost_signals-mt-d)      set(BOOST_SYSTEM_LIBRARY          optimized boost_system-mt          debug boost_system-mt-d) -    set(BOOST_FILESYSTEM_LIBRARY -        optimized boost_filesystem-mt -        debug boost_filesystem-mt-d)      set(BOOST_THREAD_LIBRARY          optimized boost_thread-mt          debug boost_thread-mt-d) diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake index d58c557f9d..29ab4b1710 100755 --- a/indra/cmake/Copy3rdPartyLibs.cmake +++ b/indra/cmake/Copy3rdPartyLibs.cmake @@ -255,12 +255,13 @@ elseif(LINUX)          libapr-1.so.0          libaprutil-1.so.0          libatk-1.0.so +        libboost_context-mt.so.${BOOST_VERSION}.0 +        libboost_filesystem-mt.so.${BOOST_VERSION}.0          libboost_program_options-mt.so.${BOOST_VERSION}.0          libboost_regex-mt.so.${BOOST_VERSION}.0 -        libboost_thread-mt.so.${BOOST_VERSION}.0 -        libboost_filesystem-mt.so.${BOOST_VERSION}.0          libboost_signals-mt.so.${BOOST_VERSION}.0          libboost_system-mt.so.${BOOST_VERSION}.0 +        libboost_thread-mt.so.${BOOST_VERSION}.0          libcollada14dom.so          libcrypto.so.1.0.0          libdb-5.1.so diff --git a/indra/llcommon/llcoros.cpp b/indra/llcommon/llcoros.cpp index 0b5829eb7e..9122704306 100755 --- a/indra/llcommon/llcoros.cpp +++ b/indra/llcommon/llcoros.cpp @@ -115,7 +115,7 @@ std::string LLCoros::getNameByID(const void* self_id) const      // passed to us comes.      for (CoroMap::const_iterator mi(mCoros.begin()), mend(mCoros.end()); mi != mend; ++mi)      { -        namespace coro_private = boost::coroutines::detail; +        namespace coro_private = boost::dcoroutines::detail;          if (static_cast<void*>(coro_private::coroutine_accessor::get_impl(const_cast<coro&>(*mi->second)).get())              == self_id)          { diff --git a/indra/llcommon/llcoros.h b/indra/llcommon/llcoros.h index d75f28ec1a..03df406b68 100755 --- a/indra/llcommon/llcoros.h +++ b/indra/llcommon/llcoros.h @@ -29,7 +29,7 @@  #if ! defined(LL_LLCOROS_H)  #define LL_LLCOROS_H -#include <boost/coroutine/coroutine.hpp> +#include <boost/dcoroutine/coroutine.hpp>  #include "llsingleton.h"  #include <boost/ptr_container/ptr_map.hpp>  #include <string> @@ -78,8 +78,8 @@  class LL_COMMON_API LLCoros: public LLSingleton<LLCoros>  {  public: -    /// Canonical boost::coroutines::coroutine signature we use -    typedef boost::coroutines::coroutine<void()> coro; +    /// Canonical boost::dcoroutines::coroutine signature we use +    typedef boost::dcoroutines::coroutine<void()> coro;      /// Canonical 'self' type      typedef coro::self self; diff --git a/indra/llcommon/lleventcoro.h b/indra/llcommon/lleventcoro.h index 88a5e6ec74..a42af63b65 100755 --- a/indra/llcommon/lleventcoro.h +++ b/indra/llcommon/lleventcoro.h @@ -29,8 +29,8 @@  #if ! defined(LL_LLEVENTCORO_H)  #define LL_LLEVENTCORO_H -#include <boost/coroutine/coroutine.hpp> -#include <boost/coroutine/future.hpp> +#include <boost/dcoroutine/coroutine.hpp> +#include <boost/dcoroutine/future.hpp>  #include <boost/optional.hpp>  #include <string>  #include <stdexcept> @@ -206,13 +206,13 @@ LLSD postAndWait(SELF& self, const LLSD& event, const LLEventPumpOrPumpName& req                   const LLEventPumpOrPumpName& replyPump, const LLSD& replyPumpNamePath=LLSD())  {      // declare the future -    boost::coroutines::future<LLSD> future(self); +    boost::dcoroutines::future<LLSD> future(self);      // make a callback that will assign a value to the future, and listen on      // the specified LLEventPump with that callback      std::string listenerName(LLEventDetail::listenerNameForCoro(self));      LLTempBoundListener connection(          replyPump.getPump().listen(listenerName, -                                   voidlistener(boost::coroutines::make_callback(future)))); +                                   voidlistener(boost::dcoroutines::make_callback(future))));      // skip the "post" part if requestPump is default-constructed      if (requestPump)      { @@ -257,7 +257,7 @@ namespace LLEventDetail       * This helper is specifically for the two-pump version of waitForEventOn().       * We use a single future object, but we want to listen on two pumps with it.       * Since we must still adapt from (the callable constructed by) -     * boost::coroutines::make_callback() (void return) to provide an event +     * boost::dcoroutines::make_callback() (void return) to provide an event       * listener (bool return), we've adapted LLVoidListener for the purpose. The       * basic idea is that we construct a distinct instance of WaitForEventOnHelper       * -- binding different instance data -- for each of the pumps. Then, when a @@ -331,16 +331,16 @@ LLEventWithID postAndWait2(SELF& self, const LLSD& event,                             const LLSD& replyPump1NamePath=LLSD())  {      // declare the future -    boost::coroutines::future<LLEventWithID> future(self); +    boost::dcoroutines::future<LLEventWithID> future(self);      // either callback will assign a value to this future; listen on      // each specified LLEventPump with a callback      std::string name(LLEventDetail::listenerNameForCoro(self));      LLTempBoundListener connection0(          replyPump0.getPump().listen(name + "a", -                               LLEventDetail::wfeoh(boost::coroutines::make_callback(future), 0))); +                               LLEventDetail::wfeoh(boost::dcoroutines::make_callback(future), 0)));      LLTempBoundListener connection1(          replyPump1.getPump().listen(name + "b", -                               LLEventDetail::wfeoh(boost::coroutines::make_callback(future), 1))); +                               LLEventDetail::wfeoh(boost::dcoroutines::make_callback(future), 1)));      // skip the "post" part if requestPump is default-constructed      if (requestPump)      { diff --git a/indra/llcommon/tests/lleventcoro_test.cpp b/indra/llcommon/tests/lleventcoro_test.cpp index 901ba35b2f..8d12529613 100755 --- a/indra/llcommon/tests/lleventcoro_test.cpp +++ b/indra/llcommon/tests/lleventcoro_test.cpp @@ -64,10 +64,10 @@  // Boost.Coroutine #include is the *first* #include of the platform header.  // That means that client code must generally #include Boost.Coroutine headers  // before anything else. -#include <boost/coroutine/coroutine.hpp> +#include <boost/dcoroutine/coroutine.hpp>  // Normally, lleventcoro.h obviates future.hpp. We only include this because  // we implement a "by hand" test of future functionality. -#include <boost/coroutine/future.hpp> +#include <boost/dcoroutine/future.hpp>  #include <boost/bind.hpp>  #include <boost/range.hpp> @@ -87,7 +87,7 @@  /*****************************************************************************  *   from the banana.cpp example program borrowed for test<1>()  *****************************************************************************/ -namespace coroutines = boost::coroutines; +namespace coroutines = boost::dcoroutines;  using coroutines::coroutine;  template<typename Iter> @@ -122,7 +122,7 @@ typedef coroutine<std::string::iterator(void)> match_coroutine_type;  *   Test helpers  *****************************************************************************/  // I suspect this will be typical of coroutines used in Linden software -typedef boost::coroutines::coroutine<void()> coroutine_type; +typedef boost::dcoroutines::coroutine<void()> coroutine_type;  /// Simulate an event API whose response is immediate: sent on receipt of the  /// initial request, rather than after some delay. This is the case that @@ -173,10 +173,10 @@ namespace tut                  // ... do whatever preliminary stuff must happen ...                  // declare the future -                boost::coroutines::future<LLSD> future(self); +                boost::dcoroutines::future<LLSD> future(self);                  // tell the future what to wait for                  LLTempBoundListener connection( -                    LLEventPumps::instance().obtain("source").listen("coro", voidlistener(boost::coroutines::make_callback(future)))); +                    LLEventPumps::instance().obtain("source").listen("coro", voidlistener(boost::dcoroutines::make_callback(future))));                  ensure("Not yet", ! future);                  // attempting to dereference ("resolve") the future causes the calling                  // coroutine to wait for it diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 379fa6147b..6e0bb161af 100755 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1862,6 +1862,7 @@ target_link_libraries(${VIEWER_BINARY_NAME}      ${viewer_LIBRARIES}      ${BOOST_PROGRAM_OPTIONS_LIBRARY}      ${BOOST_REGEX_LIBRARY} +    ${BOOST_CONTEXT_LIBRARY}      ${DBUSGLIB_LIBRARIES}      ${OPENGL_LIBRARIES}      ${FMODWRAPPER_LIBRARY} # must come after LLAudio diff --git a/indra/newview/llviewerprecompiledheaders.h b/indra/newview/llviewerprecompiledheaders.h index 0316f79973..a565005f30 100755 --- a/indra/newview/llviewerprecompiledheaders.h +++ b/indra/newview/llviewerprecompiledheaders.h @@ -33,8 +33,6 @@  // in viewer.  // It is used to precompile headers for improved build speed. -#include <boost/coroutine/coroutine.hpp> -  #include "linden_common.h"  // Work around stupid Microsoft STL warning diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index c7034d4156..bc473f6d62 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1033,12 +1033,13 @@ class Linux_i686Manifest(LinuxManifest):              self.path("libaprutil-1.so")              self.path("libaprutil-1.so.0")              self.path("libaprutil-1.so.0.4.1") +            self.path("libboost_context-mt.so.*") +            self.path("libboost_filesystem-mt.so.*")              self.path("libboost_program_options-mt.so.*")              self.path("libboost_regex-mt.so.*") -            self.path("libboost_thread-mt.so.*") -            self.path("libboost_filesystem-mt.so.*")              self.path("libboost_signals-mt.so.*")              self.path("libboost_system-mt.so.*") +            self.path("libboost_thread-mt.so.*")              self.path("libbreakpad_client.so.0.0.0")              self.path("libbreakpad_client.so.0")              self.path("libbreakpad_client.so") diff --git a/indra/viewer_components/login/CMakeLists.txt b/indra/viewer_components/login/CMakeLists.txt index 658f167c2e..6f366677c9 100755 --- a/indra/viewer_components/login/CMakeLists.txt +++ b/indra/viewer_components/login/CMakeLists.txt @@ -9,6 +9,7 @@ endif(LL_TESTS)  include(LLCommon)  include(LLMath)  include(LLXML) +include(Boost)  include_directories(      ${LLCOMMON_INCLUDE_DIRS} @@ -44,12 +45,18 @@ target_link_libraries(lllogin      ${LLCOMMON_LIBRARIES}      ${LLMATH_LIBRARIES}      ${LLXML_LIBRARIES} +    ${BOOST_CONTEXT_LIBRARY}      )  if(LL_TESTS)    SET(lllogin_TEST_SOURCE_FILES        lllogin.cpp        ) +  set_source_files_properties( +    lllogin.cpp +    PROPERTIES +    LL_TEST_ADDITIONAL_LIBRARIES "${BOOST_CONTEXT_LIBRARY}" +    )    LL_ADD_PROJECT_UNIT_TESTS(lllogin "${lllogin_TEST_SOURCE_FILES}")  endif(LL_TESTS) diff --git a/indra/viewer_components/login/lllogin.cpp b/indra/viewer_components/login/lllogin.cpp index bdcb068200..3357ad812d 100755 --- a/indra/viewer_components/login/lllogin.cpp +++ b/indra/viewer_components/login/lllogin.cpp @@ -23,7 +23,6 @@   * $/LicenseInfo$   */ -#include <boost/coroutine/coroutine.hpp>  #include "linden_common.h"  #include "llsd.h"  #include "llsdutil.h" | 
