summaryrefslogtreecommitdiff
path: root/external/boost
diff options
context:
space:
mode:
authorDavid Ostrovsky <david@ostrovsky.org>2016-01-29 16:12:30 +0100
committerDavid Ostrovsky <david@ostrovsky.org>2016-01-30 11:43:27 +0000
commit70d49424b8b54ee80676495fe49a7d3eb1f805c0 (patch)
treecc0748717b694b4d7e2b5a9a3f4b6d1a05a295e2 /external/boost
parent1e38737b72ab3c3b550675ece22130c07b14577a (diff)
Bump boost version to 1.60
Change-Id: I9c6e55e2e09d72f6d02c985955ca84b59628ed15 Reviewed-on: https://gerrit.libreoffice.org/21903 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: David Ostrovsky <david@ostrovsky.org> Tested-by: David Ostrovsky <david@ostrovsky.org>
Diffstat (limited to 'external/boost')
-rw-r--r--external/boost/UnpackedTarball_boost.mk19
-rw-r--r--external/boost/boost.boost_static_assert_unused_attribute.patch.011
-rw-r--r--external/boost/boost.ptr_container.Wextra.warnings.patch12
-rw-r--r--external/boost/boost.ptr_container.Wignored-qualifiers.warnings.patch11
-rw-r--r--external/boost/boost.ptr_container.Wshadow.warnings.patch181
-rw-r--r--external/boost/boost.ptr_container.Wunused-parameter.warnings.patch23
-rw-r--r--external/boost/boost.signals2.unused.parameters.patch20
-rw-r--r--external/boost/boost.wdeprecated-auto_ptr.patch.0237
-rw-r--r--external/boost/boost_1_60_0.quadmath.patch86
-rw-r--r--external/boost/boost_1_60_0.undef.warning.patch48
10 files changed, 141 insertions, 507 deletions
diff --git a/external/boost/UnpackedTarball_boost.mk b/external/boost/UnpackedTarball_boost.mk
index b3a9c3a0be33..ef65937291ec 100644
--- a/external/boost/UnpackedTarball_boost.mk
+++ b/external/boost/UnpackedTarball_boost.mk
@@ -29,14 +29,6 @@ boost_patches += boost.multi_array.Wunused-local-typedefs.warnings.patch
boost_patches += boost.preprocessor.Wundef.warnings.patch
# https://svn.boost.org/trac/boost/ticket/9892
boost_patches += boost.property_tree.Wshadow.warnings.patch.1
-# https://svn.boost.org/trac/boost/ticket/9894
-boost_patches += boost.ptr_container.Wshadow.warnings.patch
-# https://svn.boost.org/trac/boost/ticket/9895
-boost_patches += boost.ptr_container.Wignored-qualifiers.warnings.patch
-# https://svn.boost.org/trac/boost/ticket/9896
-boost_patches += boost.ptr_container.Wextra.warnings.patch
-# https://svn.boost.org/trac/boost/ticket/9897
-boost_patches += boost.ptr_container.Wunused-parameter.warnings.patch
# fixed upstream
boost_patches += boost.random.Wunused-local-typedefs.warnings.patch
# https://svn.boost.org/trac/boost/ticket/9900
@@ -52,7 +44,6 @@ boost_patches += boost.utility.Wundef.warnings.patch
# Help static analysis tools (see SAL_UNUSED_PARAMETER in sal/types.h):
ifeq (GCC,$(COM))
boost_patches += boost_1_44_0-unused-parameters.patch
-boost_patches += boost.signals2.unused.parameters.patch
endif
# Clang warnings:
@@ -61,9 +52,7 @@ boost_patches += boost_1_44_0-clang-warnings.patch
boost_patches += boost.auto_link.patch
boost_patches += boost.std.move.patch
boost_patches += boost.wunused.patch
-boost_patches += boost.wdeprecated-auto_ptr.patch.0
boost_patches += boost.signal2.Wshadow.warnings.patch
-boost_patches += boost.boost_static_assert_unused_attribute.patch.0
boost_patches += ubsan.patch.0
boost_patches += rtti.patch.0
@@ -85,9 +74,15 @@ boost_patches += boost_1_59_0.multi_array.wshadow.patch
# https://svn.boost.org/trac/boost/ticket/11501
boost_patches += boost_1_59_0.property_tree.wreturn-type.patch
-boost_patches += clang-cl.patch.0
+# TODO(davido): port the patch if needed to 1.60
+#boost_patches += clang-cl.patch.0
boost_patches += gcc6-warnings.patch.0
+# This patch was already applied upstream
+# https://github.com/boostorg/math/commit/74ff2db959c5fa75bec770c41ed2951a740fe936
+boost_patches += boost_1_60_0.quadmath.patch
+boost_patches += boost_1_60_0.undef.warning.patch
+
$(eval $(call gb_UnpackedTarball_UnpackedTarball,boost))
$(eval $(call gb_UnpackedTarball_set_tarball,boost,$(BOOST_TARBALL)))
diff --git a/external/boost/boost.boost_static_assert_unused_attribute.patch.0 b/external/boost/boost.boost_static_assert_unused_attribute.patch.0
deleted file mode 100644
index ef54a7fdcce5..000000000000
--- a/external/boost/boost.boost_static_assert_unused_attribute.patch.0
+++ /dev/null
@@ -1,11 +0,0 @@
---- boost/static_assert.hpp
-+++ boost/static_assert.hpp
-@@ -67,7 +67,7 @@
- //
- // If the compiler warns about unused typedefs then enable this:
- //
--#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)))
-+#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7))) || defined __clang__
- # define BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE __attribute__((unused))
- #else
- # define BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE
diff --git a/external/boost/boost.ptr_container.Wextra.warnings.patch b/external/boost/boost.ptr_container.Wextra.warnings.patch
deleted file mode 100644
index 674ab9300448..000000000000
--- a/external/boost/boost.ptr_container.Wextra.warnings.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-base class ‘class boost::ptr_container_detail::ptr_map_adapter_base<chart::VDataSequence, std::__debug::map<rtl::OUString, void*, std::less<rtl::OUString>, std::allocator<std::pair<const rtl::OUString, void*> > >, boost::heap_clone_allocator, true>’ should be explicitly initialized in the copy constructor [-Werror=extra]
-
---- misc/boost_1_44_0/boost/ptr_container/ptr_map_adapter.hpp 2008-06-24 22:37:35.000000000 +0200
-+++ misc/build/boost_1_44_0/boost/ptr_container/ptr_map_adapter.hpp 2011-02-04 16:39:19.000000000 +0100
-@@ -477,6 +477,7 @@
- }
-
- ptr_map_adapter( const ptr_map_adapter& r )
-+ : base_type()
- {
- map_basic_clone_and_insert( r.begin(), r.end() );
- }
diff --git a/external/boost/boost.ptr_container.Wignored-qualifiers.warnings.patch b/external/boost/boost.ptr_container.Wignored-qualifiers.warnings.patch
deleted file mode 100644
index 89d6ee411537..000000000000
--- a/external/boost/boost.ptr_container.Wignored-qualifiers.warnings.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- misc/boost_1_44_0/boost/ptr_container/detail/map_iterator.hpp 2008-06-24 22:37:35.000000000 +0200
-+++ misc/build/boost_1_44_0/boost/ptr_container/detail/map_iterator.hpp 2011-02-04 16:39:19.000000000 +0100
-@@ -49,7 +49,7 @@
- : first(rp->first), second(rp->second)
- { }
-
-- const ref_pair* const operator->() const
-+ const ref_pair* operator->() const
- {
- return this;
- }
diff --git a/external/boost/boost.ptr_container.Wshadow.warnings.patch b/external/boost/boost.ptr_container.Wshadow.warnings.patch
deleted file mode 100644
index c5c1e32178f4..000000000000
--- a/external/boost/boost.ptr_container.Wshadow.warnings.patch
+++ /dev/null
@@ -1,181 +0,0 @@
---- misc/boost_1_44_0/boost/ptr_container/ptr_sequence_adapter.hpp 2009-11-01 12:07:12.000000000 +0100
-+++ misc/build/boost_1_44_0/boost/ptr_container/ptr_sequence_adapter.hpp 2011-02-04 16:39:19.000000000 +0100
-@@ -476,19 +476,19 @@
- public: // C-array support
-
- void transfer( iterator before, value_type* from,
-- size_type size, bool delete_from = true ) // strong
-+ size_type size_, bool delete_from = true ) // strong
- {
- BOOST_ASSERT( from != 0 );
- if( delete_from )
- {
- BOOST_DEDUCED_TYPENAME base_type::scoped_deleter
-- deleter( from, size ); // nothrow
-- this->base().insert( before.base(), from, from + size ); // strong
-+ deleter( from, size_ ); // nothrow
-+ this->base().insert( before.base(), from, from + size_ ); // strong
- deleter.release(); // nothrow
- }
- else
- {
-- this->base().insert( before.base(), from, from + size ); // strong
-+ this->base().insert( before.base(), from, from + size_ ); // strong
- }
- }
-
---- misc/boost_1_44_0/boost/ptr_container/exception.hpp 2011-02-05 09:42:56.074932485 +0000
-+++ misc/build/boost_1_44_0/boost/ptr_container/exception.hpp 2011-02-05 09:43:00.350931536 +0000
-@@ -24,7 +24,7 @@
- {
- const char* what_;
- public:
-- bad_ptr_container_operation( const char* what ) : what_( what )
-+ bad_ptr_container_operation( const char* _what ) : what_( _what )
- { }
-
- virtual const char* what() const throw()
-@@ -38,7 +38,7 @@
- class bad_index : public bad_ptr_container_operation
- {
- public:
-- bad_index( const char* what ) : bad_ptr_container_operation( what )
-+ bad_index( const char* _what ) : bad_ptr_container_operation( _what )
- { }
- };
-
---- misc/boost_1_44_0/boost/ptr_container/detail/reversible_ptr_container.hpp 2011-02-05 09:49:30.373931807 +0000
-+++ misc/build/boost_1_44_0/boost/ptr_container/detail/reversible_ptr_container.hpp 2011-02-05 09:49:34.804931932 +0000
-@@ -278,9 +278,9 @@
-
- private:
- template< class ForwardIterator >
-- ForwardIterator advance( ForwardIterator begin, size_type n )
-+ ForwardIterator advance( ForwardIterator begin_, size_type n )
- {
-- ForwardIterator iter = begin;
-+ ForwardIterator iter = begin_;
- std::advance( iter, n );
- return iter;
- }
---- misc/boost_1_44_0/boost/ptr_container/detail/move.hpp 2011-02-05 10:01:21.156931884 +0000
-+++ misc/build/boost_1_44_0/boost/ptr_container/detail/move.hpp 2011-02-05 10:01:14.160931007 +0000
-@@ -20,7 +20,7 @@
- template<typename Ptr>
- class move_source {
- public:
-- move_source(Ptr& ptr) : ptr_(ptr) {}
-+ move_source(Ptr& _ptr) : ptr_(_ptr) {}
- Ptr& ptr() const { return ptr_; }
- private:
- Ptr& ptr_;
---- misc/boost_1_44_0/boost/ptr_container/detail/static_move_ptr.hpp 2011-02-05 09:55:44.846931338 +0000
-+++ misc/build/boost_1_44_0/boost/ptr_container/detail/static_move_ptr.hpp 2011-02-05 09:56:42.760931701 +0000
-@@ -151,7 +151,7 @@
- deleter_const_reference get_deleter() const { return impl_.second(); }
- private:
- template<typename TT, typename DD>
-- void check(const static_move_ptr<TT, DD>& ptr)
-+ void check(const static_move_ptr<TT, DD>&)
- {
- typedef move_ptrs::is_smart_ptr_convertible<TT, T> convertible;
- BOOST_STATIC_ASSERT(convertible::value);
---- misc/boost_1_44_0/boost/ptr_container/ptr_sequence_adapter.hpp 2011-02-09 08:49:00.416529470 +0000
-+++ misc/build/boost_1_44_0/boost/ptr_container/ptr_sequence_adapter.hpp 2011-02-09 08:50:44.607653864 +0000
-@@ -510,72 +510,72 @@
-
- public: // resize
-
-- void resize( size_type size ) // basic
-+ void resize( size_type size_ ) // basic
- {
- size_type old_size = this->size();
-- if( old_size > size )
-+ if( old_size > size_ )
- {
-- this->erase( boost::next( this->begin(), size ), this->end() );
-+ this->erase( boost::next( this->begin(), size_ ), this->end() );
- }
-- else if( size > old_size )
-+ else if( size_ > old_size )
- {
-- for( ; old_size != size; ++old_size )
-+ for( ; old_size != size_; ++old_size )
- this->push_back( new BOOST_DEDUCED_TYPENAME
- boost::remove_pointer<value_type>::type() );
- }
-
-- BOOST_ASSERT( this->size() == size );
-+ BOOST_ASSERT( this->size() == size_ );
- }
-
-- void resize( size_type size, value_type to_clone ) // basic
-+ void resize( size_type size_, value_type to_clone ) // basic
- {
- size_type old_size = this->size();
-- if( old_size > size )
-+ if( old_size > size_ )
- {
-- this->erase( boost::next( this->begin(), size ), this->end() );
-+ this->erase( boost::next( this->begin(), size_ ), this->end() );
- }
-- else if( size > old_size )
-+ else if( size_ > old_size )
- {
-- for( ; old_size != size; ++old_size )
-+ for( ; old_size != size_; ++old_size )
- this->push_back( this->null_policy_allocate_clone( to_clone ) );
- }
-
-- BOOST_ASSERT( this->size() == size );
-+ BOOST_ASSERT( this->size() == size_ );
- }
-
-- void rresize( size_type size ) // basic
-+ void rresize( size_type size_ ) // basic
- {
- size_type old_size = this->size();
-- if( old_size > size )
-+ if( old_size > size_ )
- {
- this->erase( this->begin(),
-- boost::next( this->begin(), old_size - size ) );
-+ boost::next( this->begin(), old_size - size_ ) );
- }
-- else if( size > old_size )
-+ else if( size_ > old_size )
- {
-- for( ; old_size != size; ++old_size )
-+ for( ; old_size != size_; ++old_size )
- this->push_front( new BOOST_DEDUCED_TYPENAME
- boost::remove_pointer<value_type>::type() );
- }
-
-- BOOST_ASSERT( this->size() == size );
-+ BOOST_ASSERT( this->size() == size_ );
- }
-
-- void rresize( size_type size, value_type to_clone ) // basic
-+ void rresize( size_type size_, value_type to_clone ) // basic
- {
- size_type old_size = this->size();
-- if( old_size > size )
-+ if( old_size > size_ )
- {
- this->erase( this->begin(),
-- boost::next( this->begin(), old_size - size ) );
-+ boost::next( this->begin(), old_size - size_ ) );
- }
-- else if( size > old_size )
-+ else if( size_ > old_size )
- {
-- for( ; old_size != size; ++old_size )
-+ for( ; old_size != size_; ++old_size )
- this->push_front( this->null_policy_allocate_clone( to_clone ) );
- }
-
-- BOOST_ASSERT( this->size() == size );
-+ BOOST_ASSERT( this->size() == size_ );
- }
-
- public: // algorithms
diff --git a/external/boost/boost.ptr_container.Wunused-parameter.warnings.patch b/external/boost/boost.ptr_container.Wunused-parameter.warnings.patch
deleted file mode 100644
index 280bc70690cf..000000000000
--- a/external/boost/boost.ptr_container.Wunused-parameter.warnings.patch
+++ /dev/null
@@ -1,23 +0,0 @@
---- misc/boost_1_44_0/boost/ptr_container/detail/reversible_ptr_container.hpp 2011-03-04 11:33:36.269274940 +0000
-+++ misc/build/boost_1_44_0/boost/ptr_container/detail/reversible_ptr_container.hpp 2011-03-04 11:33:36.269274940 +0000
-@@ -259,6 +259,10 @@
-
- static void enforce_null_policy( const Ty_* x, const char* msg )
- {
-+#ifdef BOOST_PTR_CONTAINER_NO_EXCEPTIONS
-+ (void)x;
-+ (void)msg;
-+#endif
- if( !allow_null )
- {
- BOOST_PTR_CONTAINER_THROW_EXCEPTION( 0 == x && "null not allowed",
---- misc/boost_1_44_0/boost/ptr_container/ptr_sequence_adapter.hpp 2009-11-01 12:07:12.000000000 +0100
-+++ misc/build/boost_1_44_0/boost/ptr_container/ptr_sequence_adapter.hpp 2011-02-04 16:39:19.000000000 +0100
-@@ -671,6 +671,7 @@
- void range_check_impl( iterator first, iterator last,
- std::random_access_iterator_tag )
- {
-+ (void)first; (void)last;
- BOOST_ASSERT( first <= last && "out of range unique()/erase_if()" );
- BOOST_ASSERT( this->begin() <= first && "out of range unique()/erase_if()" );
- BOOST_ASSERT( last <= this->end() && "out of range unique()/erase_if)(" );
diff --git a/external/boost/boost.signals2.unused.parameters.patch b/external/boost/boost.signals2.unused.parameters.patch
deleted file mode 100644
index 342f8300a204..000000000000
--- a/external/boost/boost.signals2.unused.parameters.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- a/b/boost/boost/signals2/detail/auto_buffer.hpp.sav 2011-12-21 04:05:37.000000000 +0100
-+++ a/b/boost/boost/signals2/detail/auto_buffer.hpp 2014-09-13 23:58:51.221215911 +0200
-@@ -99,7 +99,7 @@ namespace detail
- }
-
- template< class SizeType >
-- static bool should_shrink( SizeType size, SizeType capacity )
-+ static bool should_shrink( __attribute__ ((unused)) SizeType size, __attribute__ ((unused)) SizeType capacity )
- {
- //
- // @remark: when defining a new grow policy, one might
-@@ -258,7 +258,7 @@ namespace detail
- auto_buffer_destroy( buffer );
- }
-
-- void destroy_back_n( size_type n, const boost::true_type& )
-+ void destroy_back_n( __attribute__ ((unused)) size_type n, const boost::true_type& )
- { }
-
- void destroy_back_n( size_type n )
diff --git a/external/boost/boost.wdeprecated-auto_ptr.patch.0 b/external/boost/boost.wdeprecated-auto_ptr.patch.0
deleted file mode 100644
index b02af6ddb915..000000000000
--- a/external/boost/boost.wdeprecated-auto_ptr.patch.0
+++ /dev/null
@@ -1,237 +0,0 @@
-diff -ru boost.orig/boost/ptr_container/ptr_map_adapter.hpp boost/boost/ptr_container/ptr_map_adapter.hpp
---- boost/ptr_container/ptr_map_adapter.hpp 2015-07-18 22:42:11.723941110 +0200
-+++ boost/ptr_container/ptr_map_adapter.hpp 2015-07-18 22:45:56.525938583 +0200
-@@ -16,6 +16,11 @@
- # pragma once
- #endif
-
-+#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 406) || defined(__clang__)
-+# pragma GCC diagnostic push
-+# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-+#endif
-+
- #include <boost/ptr_container/detail/map_iterator.hpp>
- #include <boost/ptr_container/detail/associative_ptr_container.hpp>
- #include <boost/ptr_container/detail/meta_functions.hpp>
-@@ -872,4 +877,8 @@
-
- } // namespace 'boost'
-
-+#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 406) || defined(__clang__)
-+# pragma GCC diagnostic pop
-+#endif
-+
- #endif
-diff -ru boost.orig/boost/ptr_container/ptr_map.hpp boost/boost/ptr_container/ptr_map.hpp
---- boost/ptr_container/ptr_map.hpp 2015-01-25 20:27:11.000000000 +0100
-+++ boost/ptr_container/ptr_map.hpp 2015-07-18 22:44:51.669939312 +0200
-@@ -16,6 +16,11 @@
- # pragma once
- #endif
-
-+#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 406) || defined(__clang__)
-+# pragma GCC diagnostic push
-+# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-+#endif
-+
- #include <map>
- #include <boost/ptr_container/ptr_map_adapter.hpp>
-
-@@ -162,4 +167,8 @@
-
- }
-
-+#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 406) || defined(__clang__)
-+# pragma GCC diagnostic pop
-+#endif
-+
- #endif
-diff -ru boost.orig/boost/ptr_container/ptr_sequence_adapter.hpp boost/boost/ptr_container/ptr_sequence_adapter.hpp
---- boost/ptr_container/ptr_sequence_adapter.hpp 2015-07-18 22:42:11.734941110 +0200
-+++ boost/boost/ptr_container/ptr_sequence_adapter.hpp 2015-07-18 22:47:28.662937548 +0200
-@@ -16,6 +16,10 @@
- # pragma once
- #endif
-
-+#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 406) || defined(__clang__)
-+# pragma GCC diagnostic push
-+# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-+#endif
-
- #include <boost/ptr_container/detail/reversible_ptr_container.hpp>
- #include <boost/ptr_container/indirect_fun.hpp>
-@@ -773,4 +777,8 @@
-
- } // namespace 'boost'
-
-+#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 406) || defined(__clang__)
-+# pragma GCC diagnostic pop
-+#endif
-+
- #endif
-diff -ru boost.orig/boost/ptr_container/ptr_set_adapter.hpp boost/boost/ptr_container/ptr_set_adapter.hpp
---- boost/ptr_container/ptr_set_adapter.hpp 2015-01-25 20:27:11.000000000 +0100
-+++ boost/ptr_container/ptr_set_adapter.hpp 2015-07-18 22:46:40.378938090 +0200
-@@ -16,6 +16,11 @@
- # pragma once
- #endif
-
-+#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 406) || defined(__clang__)
-+# pragma GCC diagnostic push
-+# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-+#endif
-+
- #include <boost/ptr_container/detail/associative_ptr_container.hpp>
- #include <boost/ptr_container/detail/meta_functions.hpp>
- #include <boost/ptr_container/detail/void_ptr_iterator.hpp>
-@@ -689,4 +694,8 @@
-
- } // namespace 'boost'
-
-+#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 406) || defined(__clang__)
-+# pragma GCC diagnostic pop
-+#endif
-+
- #endif
-diff -ru boost.orig/boost/ptr_container/ptr_vector.hpp boost/boost/ptr_container/ptr_vector.hpp
---- boost/ptr_container/ptr_vector.hpp 2015-01-25 20:27:11.000000000 +0100
-+++ boost/ptr_container/ptr_vector.hpp 2015-07-18 22:48:11.431937067 +0200
-@@ -16,6 +16,11 @@
- # pragma once
- #endif
-
-+#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 406) || defined(__clang__)
-+# pragma GCC diagnostic push
-+# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-+#endif
-+
- #include <vector>
- #include <boost/ptr_container/ptr_sequence_adapter.hpp>
-
-@@ -74,4 +79,8 @@
-
- }
-
-+#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 406) || defined(__clang__)
-+# pragma GCC diagnostic pop
-+#endif
-+
- #endif
-diff -ru boost.orig/boost/smart_ptr/detail/shared_count.hpp boost/boost/smart_ptr/detail/shared_count.hpp
---- boost/smart_ptr/detail/shared_count.hpp 2015-06-06 00:40:42.000000000 +0200
-+++ boost/smart_ptr/detail/shared_count.hpp 2015-07-18 22:49:13.985936364 +0200
-@@ -18,6 +18,11 @@
- // http://www.boost.org/LICENSE_1_0.txt)
- //
-
-+#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 406) || defined(__clang__)
-+# pragma GCC diagnostic push
-+# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-+#endif
-+
- #ifdef __BORLANDC__
- # pragma warn -8027 // Functions containing try are not expanded inline
- #endif
-@@ -696,4 +701,8 @@
- # pragma warn .8027 // Functions containing try are not expanded inline
- #endif
-
-+#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 406) || defined(__clang__)
-+# pragma GCC diagnostic pop
-+#endif
-+
- #endif // #ifndef BOOST_SMART_PTR_DETAIL_SHARED_COUNT_HPP_INCLUDED
-diff -ru boost.orig/boost/smart_ptr/scoped_ptr.hpp boost/boost/smart_ptr/scoped_ptr.hpp
---- boost/smart_ptr/scoped_ptr.hpp 2015-06-06 00:40:42.000000000 +0200
-+++ boost/smart_ptr/scoped_ptr.hpp 2015-07-18 22:50:07.597935761 +0200
-@@ -11,6 +11,11 @@
- // http://www.boost.org/libs/smart_ptr/scoped_ptr.htm
- //
-
-+#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 406) || defined(__clang__)
-+# pragma GCC diagnostic push
-+# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-+#endif
-+
- #include <boost/config.hpp>
- #include <boost/assert.hpp>
- #include <boost/checked_delete.hpp>
-@@ -154,4 +159,8 @@
-
- } // namespace boost
-
-+#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 406) || defined(__clang__)
-+# pragma GCC diagnostic pop
-+#endif
-+
- #endif // #ifndef BOOST_SMART_PTR_SCOPED_PTR_HPP_INCLUDED
-diff -ru boost.orig/boost/smart_ptr/shared_ptr.hpp boost/boost/smart_ptr/shared_ptr.hpp
---- boost/smart_ptr/shared_ptr.hpp 2015-06-06 00:40:42.000000000 +0200
-+++ boost/smart_ptr/shared_ptr.hpp 2015-07-18 22:50:59.615935177 +0200
-@@ -14,6 +14,11 @@
- // See http://www.boost.org/libs/smart_ptr/shared_ptr.htm for documentation.
- //
-
-+#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 406) || defined(__clang__)
-+# pragma GCC diagnostic push
-+# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-+#endif
-+
- #include <boost/config.hpp> // for broken compiler workarounds
-
- // In order to avoid circular dependencies with Boost.TR1
-@@ -1064,4 +1069,8 @@
-
- } // namespace boost
-
-+#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 406) || defined(__clang__)
-+# pragma GCC diagnostic pop
-+#endif
-+
- #endif // #ifndef BOOST_SMART_PTR_SHARED_PTR_HPP_INCLUDED
---- boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp.orig2 2015-12-15 18:24:31.318854561 +0100
-+++ boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp 2015-12-15 18:26:19.804853629 +0100
-@@ -11,6 +11,11 @@
- #if !defined BOOST_SPIRIT_GRAMMAR_IPP
- #define BOOST_SPIRIT_GRAMMAR_IPP
-
-+#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 406) || defined(__clang__)
-+# pragma GCC diagnostic push
-+# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-+#endif
-+
- #if !defined(BOOST_SPIRIT_SINGLE_GRAMMAR_INSTANCE)
- #include <boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp>
- #include <algorithm>
-@@ -368,4 +373,8 @@
-
- }} // namespace boost::spirit
-
-+#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 406) || defined(__clang__)
-+# pragma GCC diagnostic pop
-+#endif
-+
- #endif
---- boost/spirit/home/classic/symbols/impl/tst.ipp.orig 2015-12-15 19:08:48.978831726 +0100
-+++ boost/spirit/home/classic/symbols/impl/tst.ipp 2015-12-15 19:09:35.064831330 +0100
-@@ -9,6 +9,11 @@
- #ifndef BOOST_SPIRIT_TST_IPP
- #define BOOST_SPIRIT_TST_IPP
-
-+#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 406) || defined(__clang__)
-+# pragma GCC diagnostic push
-+# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-+#endif
-+
- ///////////////////////////////////////////////////////////////////////////////
- #include <memory> // for std::auto_ptr
- #include <boost/spirit/home/classic/core/assert.hpp>
-@@ -278,4 +283,8 @@
-
- }} // namespace boost::spirit
-
-+#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 406) || defined(__clang__)
-+# pragma GCC diagnostic pop
-+#endif
-+
- #endif
diff --git a/external/boost/boost_1_60_0.quadmath.patch b/external/boost/boost_1_60_0.quadmath.patch
new file mode 100644
index 000000000000..344de9a67102
--- /dev/null
+++ b/external/boost/boost_1_60_0.quadmath.patch
@@ -0,0 +1,86 @@
+From 74ff2db959c5fa75bec770c41ed2951a740fe936 Mon Sep 17 00:00:00 2001
+From: jzmaddock <jz.maddock@gmail.com>
+Date: Fri, 1 Jan 2016 16:49:48 +0000
+Subject: [PATCH] Change <quadmath.h> config to not use it at all if we don't
+ have __has_include as GCC may be configured with --disable-libquadmath but
+ still signal that it supports __float128
+
+---
+ include/boost/math/special_functions/fpclassify.hpp | 16 +++++++++++++---
+ include/boost/math/tools/config.hpp | 12 ------------
+ 2 files changed, 13 insertions(+), 15 deletions(-)
+
+diff --git a/include/boost/math/special_functions/fpclassify.hpp b/include/boost/math/special_functions/fpclassify.hpp
+index 0a4e1ac..58fad13 100644
+--- foo/bar/include/boost/math/special_functions/fpclassify.hpp
++++ foo/bar/include/boost/math/special_functions/fpclassify.hpp
+@@ -81,7 +81,12 @@ is used.
+ #include <float.h>
+ #endif
+ #ifdef BOOST_MATH_USE_FLOAT128
++#ifdef __has_include
++#if __has_include("quadmath.h")
+ #include "quadmath.h"
++#define BOOST_MATH_HAS_QUADMATH_H
++#endif
++#endif
+ #endif
+
+ #ifdef BOOST_NO_STDC_NAMESPACE
+@@ -124,9 +129,14 @@ inline bool is_nan_helper(T, const boost::false_type&)
+ {
+ return false;
+ }
+-#ifdef BOOST_MATH_USE_FLOAT128
++#if defined(BOOST_MATH_USE_FLOAT128)
++#if defined(BOOST_MATH_HAS_QUADMATH_H)
+ inline bool is_nan_helper(__float128 f, const boost::true_type&) { return ::isnanq(f); }
+ inline bool is_nan_helper(__float128 f, const boost::false_type&) { return ::isnanq(f); }
++#else
++inline bool is_nan_helper(__float128 f, const boost::true_type&) { return ::isnan(static_cast<double>(f)); }
++inline bool is_nan_helper(__float128 f, const boost::false_type&) { return ::isnan(static_cast<double>(f)); }
++#endif
+ #endif
+ }
+
+@@ -519,7 +529,7 @@ inline bool (isinf)(long double x)
+ return detail::isinf_impl(static_cast<value_type>(x), method());
+ }
+ #endif
+-#ifdef BOOST_MATH_USE_FLOAT128
++#if defined(BOOST_MATH_USE_FLOAT128) && defined(BOOST_MATH_HAS_QUADMATH_H)
+ template<>
+ inline bool (isinf)(__float128 x)
+ {
+@@ -611,7 +621,7 @@ inline bool (isnan)(long double x)
+ return detail::isnan_impl(x, method());
+ }
+ #endif
+-#ifdef BOOST_MATH_USE_FLOAT128
++#if defined(BOOST_MATH_USE_FLOAT128) && defined(BOOST_MATH_HAS_QUADMATH_H)
+ template<>
+ inline bool (isnan)(__float128 x)
+ {
+diff --git a/include/boost/math/tools/config.hpp b/include/boost/math/tools/config.hpp
+index ffd0ab4..75d29b6 100644
+--- foo/bar/include/boost/math/tools/config.hpp
++++ foo/bar/include/boost/math/tools/config.hpp
+@@ -265,18 +265,6 @@
+ # define BOOST_MATH_INT_VALUE_SUFFIX(RV, SUF) RV##SUF
+ #endif
+ //
+-// Test whether to support __float128, if we don't have quadmath.h then this can't currently work:
+-//
+-#ifndef BOOST_MATH_USE_FLOAT128
+-#ifdef __has_include
+-#if ! __has_include("quadmath.h")
+-#define BOOST_MATH_DISABLE_FLOAT128
+-#endif
+-#elif !defined(BOOST_ARCH_X86)
+-#define BOOST_MATH_DISABLE_FLOAT128
+-#endif
+-#endif
+-//
+ // And then the actual configuration:
+ //
+ #if defined(_GLIBCXX_USE_FLOAT128) && defined(BOOST_GCC) && !defined(__STRICT_ANSI__) \
diff --git a/external/boost/boost_1_60_0.undef.warning.patch b/external/boost/boost_1_60_0.undef.warning.patch
new file mode 100644
index 000000000000..22eac09657d8
--- /dev/null
+++ b/external/boost/boost_1_60_0.undef.warning.patch
@@ -0,0 +1,48 @@
+diff -ur boost.orig/boost/type_traits/is_constructible.hpp boost/boost/type_traits/is_constructible.hpp
+--- a/b/boost.orig/boost/type_traits/is_constructible.hpp 2015-12-13 13:49:42.000000000 +0100
++++ a/b/boost/boost/type_traits/is_constructible.hpp 2016-01-29 15:07:05.859781670 +0100
+@@ -12,7 +12,7 @@
+ #include <boost/type_traits/integral_constant.hpp>
+ #include <boost/detail/workaround.hpp>
+
+-#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_DECLTYPE) && !BOOST_WORKAROUND(BOOST_MSVC, < 1800) && !BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40500)
++#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_DECLTYPE) && !BOOST_WORKAROUND(BOOST_MSVC, < 1800)
+
+ #include <boost/type_traits/is_destructible.hpp>
+ #include <boost/type_traits/is_default_constructible.hpp>
+diff -ur boost.orig/boost/type_traits/is_copy_constructible.hpp boost/boost/type_traits/is_copy_constructible.hpp
+--- a/b/boost.orig/boost/type_traits/is_copy_constructible.hpp 2015-12-13 13:49:42.000000000 +0100
++++ a/b/boost/boost/type_traits/is_copy_constructible.hpp 2016-01-29 15:06:48.839781861 +0100
+@@ -12,7 +12,7 @@
+ #include <boost/config.hpp>
+ #include <boost/detail/workaround.hpp>
+
+-#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_DECLTYPE) && !BOOST_WORKAROUND(BOOST_MSVC, < 1800) && !BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40900)
++#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_DECLTYPE) && !BOOST_WORKAROUND(BOOST_MSVC, < 1800)
+
+ #include <boost/type_traits/is_constructible.hpp>
+
+diff -ur boost.orig/boost/type_traits/is_default_constructible.hpp boost/boost/type_traits/is_default_constructible.hpp
+--- a/b/boost.orig/boost/type_traits/is_default_constructible.hpp 2015-12-13 13:49:42.000000000 +0100
++++ a/b/boost/boost/type_traits/is_default_constructible.hpp 2016-01-29 15:07:43.427781248 +0100
+@@ -12,7 +12,7 @@
+ #include <boost/type_traits/integral_constant.hpp>
+ #include <boost/detail/workaround.hpp>
+
+-#if !defined(BOOST_NO_CXX11_DECLTYPE) && !BOOST_WORKAROUND(BOOST_MSVC, < 1800) && !BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40500)
++#if !defined(BOOST_NO_CXX11_DECLTYPE) && !BOOST_WORKAROUND(BOOST_MSVC, < 1800)
+
+ #include <boost/type_traits/detail/yes_no_type.hpp>
+
+diff -ur boost.orig/boost/type_traits/is_nothrow_move_constructible.hpp boost/boost/type_traits/is_nothrow_move_constructible.hpp
+--- a/b/boost.orig/boost/type_traits/is_nothrow_move_constructible.hpp 2015-12-13 13:49:42.000000000 +0100
++++ a/b/boost/boost/type_traits/is_nothrow_move_constructible.hpp 2016-01-29 15:05:06.191783015 +0100
+@@ -26,7 +26,7 @@
+ template <class T> struct is_nothrow_move_constructible<volatile T> : public ::boost::false_type {};
+ template <class T> struct is_nothrow_move_constructible<const volatile T> : public ::boost::false_type{};
+
+-#elif !defined(BOOST_NO_CXX11_NOEXCEPT) && !defined(BOOST_NO_SFINAE_EXPR) && !BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40700)
++#elif !defined(BOOST_NO_CXX11_NOEXCEPT) && !defined(BOOST_NO_SFINAE_EXPR)
+
+ #include <boost/type_traits/declval.hpp>
+ #include <boost/utility/enable_if.hpp>