diff options
author | 2016-01-26 21:04:14 +0100 | |
---|---|---|
committer | 2016-01-26 21:05:18 +0100 | |
commit | a940e914126f541540033c6f6fe7a8c9c32f9324 (patch) | |
tree | d52e9ac5a7bb507c999114bfb4442656b38242f3 /dev-libs | |
parent | Subtree merge in boost from csmk's fork of LibreSSL overlay (https://github.c... (diff) | |
download | ennui-a940e914126f541540033c6f6fe7a8c9c32f9324.tar.gz ennui-a940e914126f541540033c6f6fe7a8c9c32f9324.tar.bz2 ennui-a940e914126f541540033c6f6fe7a8c9c32f9324.zip |
Add initial revision of boost-1.60.0 ebuild, trim boost-1.56.0 ebuild
Diffstat (limited to 'dev-libs')
-rw-r--r-- | dev-libs/boost/Manifest | 16 | ||||
-rw-r--r-- | dev-libs/boost/boost-1.60.0-r99.ebuild (renamed from dev-libs/boost/boost-1.56.0-r2.ebuild) | 6 | ||||
-rw-r--r-- | dev-libs/boost/files/boost-1.55.0-variadic-templates.patch | 37 | ||||
-rw-r--r-- | dev-libs/boost/files/boost-1.56.0-atomic.patch | 402 |
4 files changed, 17 insertions, 444 deletions
diff --git a/dev-libs/boost/Manifest b/dev-libs/boost/Manifest index d1c2471..f9ee3f6 100644 --- a/dev-libs/boost/Manifest +++ b/dev-libs/boost/Manifest @@ -1,2 +1,16 @@ -DIST boost_1_56_0.tar.bz2 94777674 SHA256 134732acaf3a6e7eba85988118d943f0fa6b7f0850f65131fff89823ad30ff1d SHA512 1ce9871c3a2519682538a5f1331938b948123432d99aea0ce026958cbebd25d84019a3a28c452724b9693df98a8d1264bb2d93d2fee508453f8b42836e67481e WHIRLPOOL e9e9bb965816b687141d55bc026e378a56ed577a2bf0bdad61a1736e7f11d1797e0cac0185a1fa25b6c4b9fe1f75cbb0bb73a5ea05e84d59385bb3b17a90fd12 +AUX boost-1.48.0-disable_icu_rpath.patch 1073 SHA256 e1c947d20f0864e22f6dd2b091da6948bb51aec0d3323c37fe4264ddf57204b4 SHA512 efb62b65dbcb52258dcca074997a0380dfc52f48161777a8b6f9672179247e534e098784dcbb574826f495981fd2189290c7fe733d943bba2b668bb62ef50087 WHIRLPOOL 6f9a142e15bf3674114f2b07c8708055888e74cda4c3c775ca5470e8f54c921aa12660a1f905a370ec5f44f16b73f05025d3ff1ccad557d379ff55ad3ad0a8f0 +AUX boost-1.48.0-disable_libboost_python3.patch 1509 SHA256 0b229762863b72a5faa39ea57538f757548abc492325e6458d3801fd49e4804e SHA512 5aa0eb72365a0674d7d654b924c3189501495c22cc1eb50dc1ce7aaee941ba418c17857475ebbcc4d8f8102100d889aa1c059e3782dbff9eb03ff101bea2ffbb WHIRLPOOL 5710ac3ecf1f6d18db0307f07c720d12646666ec83adde2b2464cb87c901d57088e98801720efb176420f9728967c8752382b15ca69f632b00852d51be412795 +AUX boost-1.48.0-no_strict_aliasing_python2.patch 741 SHA256 d11db74992a7a692f655b36c1cd78355fcec6703007fde522b6a82c88f171689 SHA512 cd06ba8bf5623a5ca590cbd024ba27fae14d1d2a193ccd4baf91b06c5d41b6442f40561fa49b5ba14deb0c156d5773fc4a15890a85b6cea35cab91d54e94aa6e WHIRLPOOL 1b5cce1374f56d702213d7479beb90d15413c90010442a37a46821f383afa371aac3de49e657e7623d6e9079d1e3b07353233aa40218b760042161effedd813a +AUX boost-1.48.0-python_linking.patch 1278 SHA256 5bb937bd4423e039aa406ee4a366c61542a8067ec96b22dbcc48e8826bb7b1f8 SHA512 d588d9391c654a0c3cd49078933563705da4157cd79929ac2ff2021a2e86eec1b87ed85f5ec6d2028b76974abe7e947bd379d78aa60d97da9dc23a6f74c77ec2 WHIRLPOOL 879318dd228ca01841dd3ef0d8020810357c4699fbd1d9f164b0db07319b599634bd823f0e06dd462157d81550bc9f101506d0a7469ad2352d4b1b366bb7fb00 +AUX boost-1.51.0-respect_python-buildid.patch 1565 SHA256 a783cd262cfda7c0046a9a9f34dd91cdc48bc2442c4c466873e85ead818326bb SHA512 65a7456c63db5eeab862fdb6245ba3a26536e26b56be9ed7a502a3d5be91bc278cd4a22cf1c5a1d8917bdeaa6575cbf37a11bfc3e982272f56308117fd2b230e WHIRLPOOL fb430e9c5368540493e13fdadff94df426203c9e6776891a3fc421488266b39f7e5720e5f5d289665d62d753c9bce7a33198cf6e911d94961714c22d1452ac92 +AUX boost-1.51.0-support_dots_in_python-buildid.patch 609 SHA256 189299e2ef3cde98584e60a5bdd8606894c19bceb0c4d40b38f04aae0aed0edd SHA512 0bf1e4cae598a098b8c252bab1938b29dd5d3ea19d9355156b14add27238e9359ad39a73d3afecb031efebd801215804ecebc11ca8fa6ac2b7b3c2f5ff9bc32f WHIRLPOOL ffc318bc06c33263906be6d0e565ef4c2e3fde9f6224cc5413c02cbe446d9f286c69153f4aee6f588472b058b9b4a37110b0be696bd22362989f1b6a8c8fc13e +AUX boost-1.52.0-threads.patch 2089 SHA256 b59323cefaf4f89078db62b1ece2a6e3b2cf7e8861996c0e366bee4d4638bdb3 SHA512 c6b43e9d8bebbeeb89681ec2bca61c2d656b8b5b1d508c5cd7e545f8ff3ca9b2b3bdf5f66b33ae043548d74b58a9d49096e3c971cd4a1487ef7ee90a9473a92d WHIRLPOOL cf75f6f740a22b001466018e9fb90a75c6912f1723486bda1e53ae2af5eeca5dedec7d430755a0a26cb433ba9d1b56aaa449ed543356ebf2ac4c67c62899ee2c +AUX boost-1.55.0-context-x32.patch 1077 SHA256 1da4ff48b98416cac601c52594d4c4da3fb89d0a3e8908f119f05cc8ae76f9c7 SHA512 0e2e45abe5833396508666355e26bafe114fa4ada628b24d8d9953268edddcb2f8e3dcfe8bc7f27d6c1794418990dc9ef914c936dfa64ed6e5e647a40e3f8a73 WHIRLPOOL 0b7a3521a8ec513b833d0292fa3e3bcafc8232fa96d2e41afd25da8dc30bdb49ee4319c7c8555d95e7d3de55fc704d83e443ba49bf89d6961a3f5af73c024a71 +AUX boost-1.55.0-tools-c98-compat.patch 680 SHA256 08192ebf36a3087d3bce31d7b78c29c6e38bca6e5164744878783f648024beec SHA512 fc132898d9ef1a9fab607f277003f86080306fd0f30f89ab0916eb4c3217b390f15cfa00d1e410e79080d469714866a417ba72a3c0727189e8425cd72a1d6a47 WHIRLPOOL 17eb9e80ae33ef9fa8e4c442c511e35d1f5c2ac5251462931e9fbbd53bb29ef5adf699680729af71ef4c12ec87c6d83c821a8e30a03f7f1abedc2207c3125c1c +AUX boost-1.56.0-build-auto_index-tool.patch 408 SHA256 36bbd2652654b48c27eb4297d06968c8bdcdf78eec34127d775fad2b9689ac2a SHA512 916d7060003bceb6ee345de5fad9a4f44ec43473b119bab4cc057360d07b7be89bdab5e9d393df28171a4d1679ac0a3089f2096d5a6554ee2e00bc0805d2cbe2 WHIRLPOOL 172059b31b9128cda03e9119f6deac1a0fde373542e96493156f6e3527c65c7ec8fe16611568b0aed07b2f5ffc3440462386d47557ef7e84d855c8df2acbbea8 +AUX boost-1.56.0-no-ssl3.patch 1781 SHA256 01783f897d5fd2a3a0926b3161537bdd66ad1e4681f06c7b94406481abdae76c SHA512 b7658bee73826c9ec07d3fc59e872837b4d85b5570ebc34e8ee9166f09596f7acf91aaf0a0d8a320b77984f267739ca843d972e75619ef90ab77f4c7e618f16a WHIRLPOOL 79389e600dbe55973bd15fefc2507b581e1adddf6f8fa4b074d7d7d5bc6c614777c59cfeceb1878755a39b2d7e463eb1272eff3a1bd1ff33d18026bee4ec54c3 DIST boost_1_57_0.tar.bz2 60821561 SHA256 910c8c022a33ccec7f088bd65d4f14b466588dda94ba2124e78b8c57db264967 SHA512 61881440fd89644c43c6e3bc6292e9fed75a6d3a76f98654b189d0ed4e1087d77b585884e882270c08bf9f7132b173bfc1fde05848e06aa78ba7f1008d10714d WHIRLPOOL ff092af332434082a774645a5eb42829cdbdac805ef86dccce8988542062901524bd4d5fc890e3a9c01f0a721047501e5d8b13d50ffa5368066c3438dcf719d6 +DIST boost_1_60_0.tar.bz2 76553944 SHA256 686affff989ac2488f79a97b9479efb9f2abae035b5ed4d8226de6857933fd3b SHA512 7c851b3fc2b322ff05d642d9cf03e7c30c5f04d5cf0579c99046b1ec708901c58a3d349031dfe24591f5b88c1e664b6a0d40abea6cce89abb52080c02eb725df WHIRLPOOL 828b0797a8b62150ecef5ee13f0e8b8d6b6a0e7365511ec9782d2d8f3a26ac38a98f10876c40d05ea46697c013b1f96f22b3a24c449372520c84bb725059fe48 +EBUILD boost-1.57.0-r1.ebuild 12313 SHA256 577b7f47b935499e3da19c149d2bee6b8af8a20c75ed1d3122cf010ff6a92e33 SHA512 e9a86d020da9cbd6c1f569773e4da84f8d4a2c31952949c5ac7420629c11ad03d80790456ba62fb059ba16322f449f9498cd58f784c15e5e1c2a3313cad16e7d WHIRLPOOL ae8d15d780227399a694ed781c86d107d235aafcd6eb84626ed07e0d8bd631ec2a50b5c8e6914ade21722389e4c14948452615828d8fd52a8a59aa258867ec36 +EBUILD boost-1.60.0-r99.ebuild 12313 SHA256 577b7f47b935499e3da19c149d2bee6b8af8a20c75ed1d3122cf010ff6a92e33 SHA512 e9a86d020da9cbd6c1f569773e4da84f8d4a2c31952949c5ac7420629c11ad03d80790456ba62fb059ba16322f449f9498cd58f784c15e5e1c2a3313cad16e7d WHIRLPOOL ae8d15d780227399a694ed781c86d107d235aafcd6eb84626ed07e0d8bd631ec2a50b5c8e6914ade21722389e4c14948452615828d8fd52a8a59aa258867ec36 +MISC metadata.xml 1421 SHA256 e8165c32ec94a53a4a7506562266a61923cab8ba8c4ed4a66eb63a765405b0e3 SHA512 71872caa09cd6f240b4ba83e98207cec33d7391feaafc40d5ca5b6939983e7f6efd1e177a0f60f365054b046db4d7a0147f7455123e8eee9f942db15809fdbd7 WHIRLPOOL fcdd5e2b37239c17a1a6c1e136d4835539efadab230544651a8c7b0814f14c8a861a8440f08694a228de4a0b4769961f6d01b81730af06d1a98eafb3af937e13 diff --git a/dev-libs/boost/boost-1.56.0-r2.ebuild b/dev-libs/boost/boost-1.60.0-r99.ebuild index 9fdf956..0fbf234 100644 --- a/dev-libs/boost/boost-1.56.0-r2.ebuild +++ b/dev-libs/boost/boost-1.60.0-r99.ebuild @@ -3,7 +3,7 @@ # $Id$ EAPI="5" -PYTHON_COMPAT=( python{2_7,3_3,3_4} ) +PYTHON_COMPAT=( python{2_7,3_3,3_4,3_5} ) inherit eutils flag-o-matic multilib multiprocessing python-r1 toolchain-funcs versionator multilib-minimal @@ -123,9 +123,7 @@ src_prepare() { "${FILESDIR}/${PN}-1.55.0-context-x32.patch" \ "${FILESDIR}/${PN}-1.55.0-tools-c98-compat.patch" \ "${FILESDIR}/${PN}-1.52.0-threads.patch" \ - "${FILESDIR}/${PN}-1.56.0-build-auto_index-tool.patch" \ - "${FILESDIR}/${PN}-1.55.0-variadic-templates.patch" \ - "${FILESDIR}/${PN}-1.56.0-atomic.patch" + "${FILESDIR}/${PN}-1.56.0-build-auto_index-tool.patch" # Do not try to build missing 'wave' tool, bug #522682 # Upstream bugreport - https://svn.boost.org/trac/boost/ticket/10507 diff --git a/dev-libs/boost/files/boost-1.55.0-variadic-templates.patch b/dev-libs/boost/files/boost-1.55.0-variadic-templates.patch deleted file mode 100644 index 547dbbd..0000000 --- a/dev-libs/boost/files/boost-1.55.0-variadic-templates.patch +++ /dev/null @@ -1,37 +0,0 @@ -From eec808554936ae068b23df07ab54d4dc6302a695 Mon Sep 17 00:00:00 2001 -From: jzmaddock <jzmaddock@gmail.com> -Date: Sat, 23 Aug 2014 09:38:02 +0100 -Subject: [PATCH] Fix BOOST_NO_CXX11_VARIADIC_TEMPLATES definition - the - feature was introduced in GCC 4.4. - ---- - boost/config/compiler/gcc.hpp | 9 +-------- - 1 file changed, 1 insertion(+), 8 deletions(-) - -diff --git a/boost/config/compiler/gcc.hpp b/boost/config/compiler/gcc.hpp -index f37159d..97d8a18 100644 ---- a/boost/config/compiler/gcc.hpp -+++ b/boost/config/compiler/gcc.hpp -@@ -154,14 +154,6 @@ - # define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS - # define BOOST_NO_CXX11_RVALUE_REFERENCES - # define BOOST_NO_CXX11_STATIC_ASSERT -- --// Variadic templates compiler: --// http://www.generic-programming.org/~dgregor/cpp/variadic-templates.html --# if defined(__VARIADIC_TEMPLATES) || (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4) && defined(__GXX_EXPERIMENTAL_CXX0X__)) --# define BOOST_HAS_VARIADIC_TMPL --# else --# define BOOST_NO_CXX11_VARIADIC_TEMPLATES --# endif - #endif - - // C++0x features in 4.4.n and later -@@ -176,6 +168,7 @@ - # define BOOST_NO_CXX11_DELETED_FUNCTIONS - # define BOOST_NO_CXX11_TRAILING_RESULT_TYPES - # define BOOST_NO_CXX11_INLINE_NAMESPACES -+# define BOOST_NO_CXX11_VARIADIC_TEMPLATES - #endif - - #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) diff --git a/dev-libs/boost/files/boost-1.56.0-atomic.patch b/dev-libs/boost/files/boost-1.56.0-atomic.patch deleted file mode 100644 index 6d72418..0000000 --- a/dev-libs/boost/files/boost-1.56.0-atomic.patch +++ /dev/null @@ -1,402 +0,0 @@ -Fixed in 1.57 - -commit 415db7054723291042e4ff1ffa8fdd5bc8b07163 -Author: Andrey Semashev <andrey.semashev@gmail.com> -Date: Sat Sep 27 20:40:09 2014 +0400 - - Added support for extending operations to GCC atomic backend. - - Fix for #10446. Some platforms (e.g. Raspberry Pi) only support atomic ops of some particular size but not less. Use extending arithmetic operations for these platforms. Also, make sure bools are always treated as 8-bit values, even if the actual type is larger. This makes its use in atomic<>, atomic_flag and lock pool more consistent. - -diff --git a/include/boost/atomic/capabilities.hpp b/include/boost/atomic/capabilities.hpp -index 658dd22..05bbb0f 100644 ---- a/include/boost/atomic/capabilities.hpp -+++ b/include/boost/atomic/capabilities.hpp -@@ -142,6 +142,7 @@ - #define BOOST_ATOMIC_ADDRESS_LOCK_FREE BOOST_ATOMIC_POINTER_LOCK_FREE - - #ifndef BOOST_ATOMIC_BOOL_LOCK_FREE -+// We store bools in 1-byte storage in all backends - #define BOOST_ATOMIC_BOOL_LOCK_FREE BOOST_ATOMIC_INT8_LOCK_FREE - #endif - -diff --git a/include/boost/atomic/detail/atomic_template.hpp b/include/boost/atomic/detail/atomic_template.hpp -index 4fd6d79..bc3922a 100644 ---- a/include/boost/atomic/detail/atomic_template.hpp -+++ b/include/boost/atomic/detail/atomic_template.hpp -@@ -234,7 +234,7 @@ class base_atomic< bool, int > - { - private: - typedef bool value_type; -- typedef atomics::detail::operations< storage_size_of< value_type >::value, false > operations; -+ typedef atomics::detail::operations< 1u, false > operations; - - protected: - typedef value_type value_arg_type; -diff --git a/include/boost/atomic/detail/caps_gcc_atomic.hpp b/include/boost/atomic/detail/caps_gcc_atomic.hpp -index 8299ad0..f4e7a70 100644 ---- a/include/boost/atomic/detail/caps_gcc_atomic.hpp -+++ b/include/boost/atomic/detail/caps_gcc_atomic.hpp -@@ -29,66 +29,48 @@ - #define BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B 1 - #endif - --#if __GCC_ATOMIC_BOOL_LOCK_FREE == 2 --#define BOOST_ATOMIC_FLAG_LOCK_FREE 2 --#else --#define BOOST_ATOMIC_FLAG_LOCK_FREE 0 --#endif --#if __GCC_ATOMIC_CHAR_LOCK_FREE == 2 --#define BOOST_ATOMIC_CHAR_LOCK_FREE 2 --#else --#define BOOST_ATOMIC_CHAR_LOCK_FREE 0 --#endif --#if __GCC_ATOMIC_CHAR16_T_LOCK_FREE == 2 --#define BOOST_ATOMIC_CHAR16_T_LOCK_FREE 2 --#else --#define BOOST_ATOMIC_CHAR16_T_LOCK_FREE 0 --#endif --#if __GCC_ATOMIC_CHAR32_T_LOCK_FREE == 2 --#define BOOST_ATOMIC_CHAR32_T_LOCK_FREE 2 -+#if defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) && (defined(BOOST_HAS_INT128) || !defined(BOOST_NO_ALIGNMENT)) -+#define BOOST_ATOMIC_INT128_LOCK_FREE 2 - #else --#define BOOST_ATOMIC_CHAR32_T_LOCK_FREE 0 -+#define BOOST_ATOMIC_INT128_LOCK_FREE 0 - #endif --#if __GCC_ATOMIC_WCHAR_T_LOCK_FREE == 2 --#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 2 -+ -+#if __GCC_ATOMIC_LLONG_LOCK_FREE == 2 -+#define BOOST_ATOMIC_LLONG_LOCK_FREE 2 - #else --#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 0 -+#define BOOST_ATOMIC_LLONG_LOCK_FREE BOOST_ATOMIC_INT128_LOCK_FREE - #endif --#if __GCC_ATOMIC_SHORT_LOCK_FREE == 2 --#define BOOST_ATOMIC_SHORT_LOCK_FREE 2 -+ -+#if __GCC_ATOMIC_LONG_LOCK_FREE == 2 -+#define BOOST_ATOMIC_LONG_LOCK_FREE 2 - #else --#define BOOST_ATOMIC_SHORT_LOCK_FREE 0 -+#define BOOST_ATOMIC_LONG_LOCK_FREE BOOST_ATOMIC_LLONG_LOCK_FREE - #endif -+ - #if __GCC_ATOMIC_INT_LOCK_FREE == 2 - #define BOOST_ATOMIC_INT_LOCK_FREE 2 - #else --#define BOOST_ATOMIC_INT_LOCK_FREE 0 --#endif --#if __GCC_ATOMIC_LONG_LOCK_FREE == 2 --#define BOOST_ATOMIC_LONG_LOCK_FREE 2 --#else --#define BOOST_ATOMIC_LONG_LOCK_FREE 0 -+#define BOOST_ATOMIC_INT_LOCK_FREE BOOST_ATOMIC_LONG_LOCK_FREE - #endif --#if __GCC_ATOMIC_LLONG_LOCK_FREE == 2 --#define BOOST_ATOMIC_LLONG_LOCK_FREE 2 -+ -+#if __GCC_ATOMIC_SHORT_LOCK_FREE == 2 -+#define BOOST_ATOMIC_SHORT_LOCK_FREE 2 - #else --#define BOOST_ATOMIC_LLONG_LOCK_FREE 0 -+#define BOOST_ATOMIC_SHORT_LOCK_FREE BOOST_ATOMIC_INT_LOCK_FREE - #endif --#if defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) && (defined(BOOST_HAS_INT128) || !defined(BOOST_NO_ALIGNMENT)) --#define BOOST_ATOMIC_INT128_LOCK_FREE 2 -+ -+#if __GCC_ATOMIC_CHAR_LOCK_FREE == 2 -+#define BOOST_ATOMIC_CHAR_LOCK_FREE 2 - #else --#define BOOST_ATOMIC_INT128_LOCK_FREE 0 -+#define BOOST_ATOMIC_CHAR_LOCK_FREE BOOST_ATOMIC_SHORT_LOCK_FREE - #endif -+ - #if __GCC_ATOMIC_POINTER_LOCK_FREE == 2 - #define BOOST_ATOMIC_POINTER_LOCK_FREE 2 - #else - #define BOOST_ATOMIC_POINTER_LOCK_FREE 0 - #endif --#if __GCC_ATOMIC_BOOL_LOCK_FREE == 2 --#define BOOST_ATOMIC_BOOL_LOCK_FREE 2 --#else --#define BOOST_ATOMIC_BOOL_LOCK_FREE 0 --#endif -+ - - #define BOOST_ATOMIC_INT8_LOCK_FREE BOOST_ATOMIC_CHAR_LOCK_FREE - -@@ -128,6 +110,24 @@ - #define BOOST_ATOMIC_INT64_LOCK_FREE 0 - #endif - -+ -+#if __GCC_ATOMIC_WCHAR_T_LOCK_FREE == 2 -+#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 2 -+#elif BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 8 -+#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE BOOST_ATOMIC_INT64_LOCK_FREE -+#elif BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 4 -+#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE -+#elif BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 2 -+#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE BOOST_ATOMIC_INT16_LOCK_FREE -+#elif BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 1 -+#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE BOOST_ATOMIC_INT8_LOCK_FREE -+#else -+#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 0 -+#endif -+ -+#define BOOST_ATOMIC_CHAR32_T_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE -+#define BOOST_ATOMIC_CHAR16_T_LOCK_FREE BOOST_ATOMIC_INT16_LOCK_FREE -+ - #define BOOST_ATOMIC_THREAD_FENCE 2 - #define BOOST_ATOMIC_SIGNAL_FENCE 2 - -diff --git a/include/boost/atomic/detail/ops_gcc_atomic.hpp b/include/boost/atomic/detail/ops_gcc_atomic.hpp -index 2297791..2e4c37b 100644 ---- a/include/boost/atomic/detail/ops_gcc_atomic.hpp -+++ b/include/boost/atomic/detail/ops_gcc_atomic.hpp -@@ -24,6 +24,15 @@ - #include <boost/atomic/detail/ops_cas_based.hpp> - #endif - -+#if __GCC_ATOMIC_LLONG_LOCK_FREE != BOOST_ATOMIC_LLONG_LOCK_FREE || __GCC_ATOMIC_LONG_LOCK_FREE != BOOST_ATOMIC_LONG_LOCK_FREE ||\ -+ __GCC_ATOMIC_INT_LOCK_FREE != BOOST_ATOMIC_INT_LOCK_FREE || __GCC_ATOMIC_SHORT_LOCK_FREE != BOOST_ATOMIC_SHORT_LOCK_FREE ||\ -+ __GCC_ATOMIC_CHAR_LOCK_FREE != BOOST_ATOMIC_CHAR_LOCK_FREE || __GCC_ATOMIC_BOOL_LOCK_FREE != BOOST_ATOMIC_BOOL_LOCK_FREE ||\ -+ __GCC_ATOMIC_WCHAR_T_LOCK_FREE != BOOST_ATOMIC_WCHAR_T_LOCK_FREE -+// There are platforms where we need to use larger storage types -+#include <boost/atomic/detail/int_sizes.hpp> -+#include <boost/atomic/detail/ops_extending_cas_based.hpp> -+#endif -+ - #ifdef BOOST_HAS_PRAGMA_ONCE - #pragma once - #endif -@@ -154,73 +163,206 @@ struct gcc_atomic_operations - } - }; - --#if BOOST_ATOMIC_INT8_LOCK_FREE > 0 -+#if BOOST_ATOMIC_INT128_LOCK_FREE > 0 -+#if defined(__clang__) && defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) -+ -+// Workaround for clang bug: http://llvm.org/bugs/show_bug.cgi?id=19149 -+// Clang 3.4 does not implement 128-bit __atomic* intrinsics even though it defines __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 - template< bool Signed > --struct operations< 1u, Signed > : -- public gcc_atomic_operations< typename make_storage_type< 1u, Signed >::type > -+struct operations< 16u, Signed > : -+ public cas_based_operations< gcc_dcas_x86_64< Signed > > - { - }; -+ -+#else -+ -+template< bool Signed > -+struct operations< 16u, Signed > : -+ public gcc_atomic_operations< typename make_storage_type< 16u, Signed >::type > -+{ -+}; -+ -+#endif - #endif - --#if BOOST_ATOMIC_INT16_LOCK_FREE > 0 -+ -+#if BOOST_ATOMIC_INT64_LOCK_FREE > 0 -+#if defined(__clang__) && defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B) -+ -+// Workaround for clang bug http://llvm.org/bugs/show_bug.cgi?id=19355 - template< bool Signed > --struct operations< 2u, Signed > : -- public gcc_atomic_operations< typename make_storage_type< 2u, Signed >::type > -+struct operations< 8u, Signed > : -+ public cas_based_operations< gcc_dcas_x86< Signed > > -+{ -+}; -+ -+#elif (BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 8 && __GCC_ATOMIC_LLONG_LOCK_FREE != BOOST_ATOMIC_LLONG_LOCK_FREE) ||\ -+ (BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 8 && __GCC_ATOMIC_LONG_LOCK_FREE != BOOST_ATOMIC_LONG_LOCK_FREE) ||\ -+ (BOOST_ATOMIC_DETAIL_SIZEOF_INT == 8 && __GCC_ATOMIC_INT_LOCK_FREE != BOOST_ATOMIC_INT_LOCK_FREE) ||\ -+ (BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 8 && __GCC_ATOMIC_SHORT_LOCK_FREE != BOOST_ATOMIC_SHORT_LOCK_FREE) ||\ -+ (BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 8 && __GCC_ATOMIC_WCHAR_T_LOCK_FREE != BOOST_ATOMIC_WCHAR_T_LOCK_FREE) -+ -+#define BOOST_ATOMIC_DETAIL_INT64_EXTENDED -+ -+template< bool Signed > -+struct operations< 8u, Signed > : -+ public extending_cas_based_operations< gcc_atomic_operations< typename make_storage_type< 16u, Signed >::type >, 8u, Signed > - { - }; -+ -+#else -+ -+template< bool Signed > -+struct operations< 8u, Signed > : -+ public gcc_atomic_operations< typename make_storage_type< 8u, Signed >::type > -+{ -+}; -+ -+#endif - #endif - - #if BOOST_ATOMIC_INT32_LOCK_FREE > 0 -+#if (BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 4 && __GCC_ATOMIC_LLONG_LOCK_FREE != BOOST_ATOMIC_LLONG_LOCK_FREE) ||\ -+ (BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 4 && __GCC_ATOMIC_LONG_LOCK_FREE != BOOST_ATOMIC_LONG_LOCK_FREE) ||\ -+ (BOOST_ATOMIC_DETAIL_SIZEOF_INT == 4 && __GCC_ATOMIC_INT_LOCK_FREE != BOOST_ATOMIC_INT_LOCK_FREE) ||\ -+ (BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 4 && __GCC_ATOMIC_SHORT_LOCK_FREE != BOOST_ATOMIC_SHORT_LOCK_FREE) ||\ -+ (BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 4 && __GCC_ATOMIC_WCHAR_T_LOCK_FREE != BOOST_ATOMIC_WCHAR_T_LOCK_FREE) -+ -+#define BOOST_ATOMIC_DETAIL_INT32_EXTENDED -+ -+#if !defined(BOOST_ATOMIC_DETAIL_INT64_EXTENDED) -+ -+template< bool Signed > -+struct operations< 4u, Signed > : -+ public extending_cas_based_operations< gcc_atomic_operations< typename make_storage_type< 8u, Signed >::type >, 4u, Signed > -+{ -+}; -+ -+#else // !defined(BOOST_ATOMIC_DETAIL_INT64_EXTENDED) -+ -+template< bool Signed > -+struct operations< 4u, Signed > : -+ public extending_cas_based_operations< gcc_atomic_operations< typename make_storage_type< 16u, Signed >::type >, 4u, Signed > -+{ -+}; -+ -+#endif // !defined(BOOST_ATOMIC_DETAIL_INT64_EXTENDED) -+ -+#else -+ - template< bool Signed > - struct operations< 4u, Signed > : - public gcc_atomic_operations< typename make_storage_type< 4u, Signed >::type > - { - }; -+ -+#endif - #endif - --#if BOOST_ATOMIC_INT64_LOCK_FREE > 0 --#if defined(__clang__) && defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B) -+#if BOOST_ATOMIC_INT16_LOCK_FREE > 0 -+#if (BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 2 && __GCC_ATOMIC_LLONG_LOCK_FREE != BOOST_ATOMIC_LLONG_LOCK_FREE) ||\ -+ (BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 2 && __GCC_ATOMIC_LONG_LOCK_FREE != BOOST_ATOMIC_LONG_LOCK_FREE) ||\ -+ (BOOST_ATOMIC_DETAIL_SIZEOF_INT == 2 && __GCC_ATOMIC_INT_LOCK_FREE != BOOST_ATOMIC_INT_LOCK_FREE) ||\ -+ (BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 2 && __GCC_ATOMIC_SHORT_LOCK_FREE != BOOST_ATOMIC_SHORT_LOCK_FREE) ||\ -+ (BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 2 && __GCC_ATOMIC_WCHAR_T_LOCK_FREE != BOOST_ATOMIC_WCHAR_T_LOCK_FREE) -+ -+#define BOOST_ATOMIC_DETAIL_INT16_EXTENDED -+ -+#if !defined(BOOST_ATOMIC_DETAIL_INT32_EXTENDED) - --// Workaround for clang bug http://llvm.org/bugs/show_bug.cgi?id=19355 - template< bool Signed > --struct operations< 8u, Signed > : -- public cas_based_operations< gcc_dcas_x86< Signed > > -+struct operations< 2u, Signed > : -+ public extending_cas_based_operations< gcc_atomic_operations< typename make_storage_type< 4u, Signed >::type >, 2u, Signed > -+{ -+}; -+ -+#elif !defined(BOOST_ATOMIC_DETAIL_INT64_EXTENDED) -+ -+template< bool Signed > -+struct operations< 2u, Signed > : -+ public extending_cas_based_operations< gcc_atomic_operations< typename make_storage_type< 8u, Signed >::type >, 2u, Signed > - { - }; - - #else - - template< bool Signed > --struct operations< 8u, Signed > : -- public gcc_atomic_operations< typename make_storage_type< 8u, Signed >::type > -+struct operations< 2u, Signed > : -+ public extending_cas_based_operations< gcc_atomic_operations< typename make_storage_type< 16u, Signed >::type >, 2u, Signed > -+{ -+}; -+ -+#endif -+ -+#else -+ -+template< bool Signed > -+struct operations< 2u, Signed > : -+ public gcc_atomic_operations< typename make_storage_type< 2u, Signed >::type > - { - }; - - #endif - #endif - --#if BOOST_ATOMIC_INT128_LOCK_FREE > 0 --#if defined(__clang__) && defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) -+#if BOOST_ATOMIC_INT8_LOCK_FREE > 0 -+#if (BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 1 && __GCC_ATOMIC_LLONG_LOCK_FREE != BOOST_ATOMIC_LLONG_LOCK_FREE) ||\ -+ (BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 1 && __GCC_ATOMIC_LONG_LOCK_FREE != BOOST_ATOMIC_LONG_LOCK_FREE) ||\ -+ (BOOST_ATOMIC_DETAIL_SIZEOF_INT == 1 && __GCC_ATOMIC_INT_LOCK_FREE != BOOST_ATOMIC_INT_LOCK_FREE) ||\ -+ (BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 1 && __GCC_ATOMIC_SHORT_LOCK_FREE != BOOST_ATOMIC_SHORT_LOCK_FREE) ||\ -+ (BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 1 && __GCC_ATOMIC_WCHAR_T_LOCK_FREE != BOOST_ATOMIC_WCHAR_T_LOCK_FREE) ||\ -+ (__GCC_ATOMIC_CHAR_LOCK_FREE != BOOST_ATOMIC_CHAR_LOCK_FREE) ||\ -+ (__GCC_ATOMIC_BOOL_LOCK_FREE != BOOST_ATOMIC_BOOL_LOCK_FREE) -+ -+#if !defined(BOOST_ATOMIC_DETAIL_INT16_EXTENDED) - --// Workaround for clang bug: http://llvm.org/bugs/show_bug.cgi?id=19149 --// Clang 3.4 does not implement 128-bit __atomic* intrinsics even though it defines __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 - template< bool Signed > --struct operations< 16u, Signed > : -- public cas_based_operations< gcc_dcas_x86_64< Signed > > -+struct operations< 1u, Signed > : -+ public extending_cas_based_operations< gcc_atomic_operations< typename make_storage_type< 2u, Signed >::type >, 1u, Signed > -+{ -+}; -+ -+#elif !defined(BOOST_ATOMIC_DETAIL_INT32_EXTENDED) -+ -+template< bool Signed > -+struct operations< 1u, Signed > : -+ public extending_cas_based_operations< gcc_atomic_operations< typename make_storage_type< 4u, Signed >::type >, 1u, Signed > -+{ -+}; -+ -+#elif !defined(BOOST_ATOMIC_DETAIL_INT64_EXTENDED) -+ -+template< bool Signed > -+struct operations< 1u, Signed > : -+ public extending_cas_based_operations< gcc_atomic_operations< typename make_storage_type< 8u, Signed >::type >, 1u, Signed > - { - }; - - #else - - template< bool Signed > --struct operations< 16u, Signed > : -- public gcc_atomic_operations< typename make_storage_type< 16u, Signed >::type > -+struct operations< 1u, Signed > : -+ public extending_cas_based_operations< gcc_atomic_operations< typename make_storage_type< 16u, Signed >::type >, 1u, Signed > -+{ -+}; -+ -+#endif -+ -+#else -+ -+template< bool Signed > -+struct operations< 1u, Signed > : -+ public gcc_atomic_operations< typename make_storage_type< 1u, Signed >::type > - { - }; - - #endif - #endif - -+#undef BOOST_ATOMIC_DETAIL_INT16_EXTENDED -+#undef BOOST_ATOMIC_DETAIL_INT32_EXTENDED -+#undef BOOST_ATOMIC_DETAIL_INT64_EXTENDED -+ - BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT - { - __atomic_thread_fence(atomics::detail::convert_memory_order_to_gcc(order)); |