about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/boost
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2019-01-07 02:18:36 +0000
committerAlyssa Ross <hi@alyssa.is>2019-01-07 02:18:47 +0000
commit36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2 (patch)
treeb3faaf573407b32aa645237a4d16b82778a39a92 /nixpkgs/pkgs/development/libraries/boost
parent4e31070265257dc67d120c27e0f75c2344fdfa9a (diff)
parentabf060725d7614bd3b9f96764262dfbc2f9c2199 (diff)
downloadnixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.gz
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.bz2
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.lz
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.xz
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.zst
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.zip
Add 'nixpkgs/' from commit 'abf060725d7614bd3b9f96764262dfbc2f9c2199'
git-subtree-dir: nixpkgs
git-subtree-mainline: 4e31070265257dc67d120c27e0f75c2344fdfa9a
git-subtree-split: abf060725d7614bd3b9f96764262dfbc2f9c2199
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/boost')
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/1.55.nix12
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/1.59.nix40
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/1.60.nix11
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/1.62.nix12
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/1.63.nix12
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/1.64.nix12
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/1.65.nix12
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/1.66.nix11
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/1.67.nix17
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/1.68.nix11
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/1.69.nix11
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/clang-math-2.patch45
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/clang-math.patch65
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/cygwin-1.40.0-cstdint-cygwin.patch20
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/cygwin-1.40.0-iostreams-cygwin.patch24
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/cygwin-1.40.0-python-cygwin.patch35
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/cygwin-1.40.0-regex-cygwin.patch15
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/cygwin-1.45.0-jam-cygwin.patch12
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/cygwin-1.50.0-jam-pep3149.patch11
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/cygwin-1.55.0-asio-MSG_EOR.patch14
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/cygwin-1.55.0-interlocked-cygwin.patch11
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-asio-cygwin.patch1835
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-config-cygwin.patch76
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-context-cygwin.patch600
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-filesystem-cygwin.patch32
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-locale-cygwin.patch81
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-log-cygwin.patch46
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-smart_ptr-cygwin.patch77
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-system-cygwin.patch22
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.50.0-fix-non-utf8-files.patch22
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.50.0-pool.patch122
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.54.0-locale-unused_typedef.patch11
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.54.0-pool-max_chunks_shadow.patch14
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.54.0-python-unused_typedef.patch15
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.57.0-move-is_class.patch20
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.57.0-mpl-print.patch31
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.57.0-pool-test_linking.patch33
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.57.0-signals2-weak_ptr.patch10
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.57.0-spirit-unused_typedef.patch19
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.57.0-uuid-comparison.patch11
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/darwin-no-system-python.patch45
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/gcc-5.patch64
-rw-r--r--nixpkgs/pkgs/development/libraries/boost/generic.nix179
43 files changed, 3778 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/boost/1.55.nix b/nixpkgs/pkgs/development/libraries/boost/1.55.nix
new file mode 100644
index 000000000000..0a38f35af753
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/1.55.nix
@@ -0,0 +1,12 @@
+{ callPackage, fetchurl, ... } @ args:
+
+callPackage ./generic.nix (args // rec {
+  version = "1.55.0";
+
+  patches = [ ./clang-math.patch ./clang-math-2.patch ./gcc-5.patch ];
+
+  src = fetchurl {
+    url = "mirror://sourceforge/boost/boost_1_55_0.tar.bz2";
+    sha256 = "0lkv5dzssbl5fmh2nkaszi8x9qbj80pr4acf9i26sj3rvlih1w7z";
+  };
+})
diff --git a/nixpkgs/pkgs/development/libraries/boost/1.59.nix b/nixpkgs/pkgs/development/libraries/boost/1.59.nix
new file mode 100644
index 000000000000..603d7883c647
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/1.59.nix
@@ -0,0 +1,40 @@
+{ stdenv, callPackage, fetchurl, ... } @ args:
+
+callPackage ./generic.nix (args // rec {
+  version = "1.59.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/boost/boost_1_59_0.tar.bz2";
+    sha256 = "1jj1aai5rdmd72g90a3pd8sw9vi32zad46xv5av8fhnr48ir6ykj";
+  };
+
+  patches = stdenv.lib.optionals stdenv.isCygwin [
+    ./cygwin-fedora-boost-1.50.0-fix-non-utf8-files.patch
+    ./cygwin-fedora-boost-1.50.0-pool.patch
+    ./cygwin-fedora-boost-1.57.0-mpl-print.patch
+    ./cygwin-fedora-boost-1.57.0-spirit-unused_typedef.patch
+    ./cygwin-fedora-boost-1.54.0-locale-unused_typedef.patch
+    ./cygwin-fedora-boost-1.54.0-python-unused_typedef.patch
+    ./cygwin-fedora-boost-1.57.0-pool-test_linking.patch
+    ./cygwin-fedora-boost-1.54.0-pool-max_chunks_shadow.patch
+    ./cygwin-fedora-boost-1.57.0-signals2-weak_ptr.patch
+    ./cygwin-fedora-boost-1.57.0-uuid-comparison.patch
+    ./cygwin-fedora-boost-1.57.0-move-is_class.patch
+    ./cygwin-1.40.0-cstdint-cygwin.patch
+    ./cygwin-1.57.0-asio-cygwin.patch
+    ./cygwin-1.55.0-asio-MSG_EOR.patch
+    ./cygwin-1.57.0-config-cygwin.patch
+    ./cygwin-1.57.0-context-cygwin.patch
+    ./cygwin-1.57.0-filesystem-cygwin.patch
+    ./cygwin-1.55.0-interlocked-cygwin.patch
+    ./cygwin-1.40.0-iostreams-cygwin.patch
+    ./cygwin-1.57.0-locale-cygwin.patch
+    ./cygwin-1.57.0-log-cygwin.patch
+    ./cygwin-1.40.0-python-cygwin.patch
+    ./cygwin-1.40.0-regex-cygwin.patch
+    ./cygwin-1.57.0-smart_ptr-cygwin.patch
+    ./cygwin-1.57.0-system-cygwin.patch
+    ./cygwin-1.45.0-jam-cygwin.patch
+    ./cygwin-1.50.0-jam-pep3149.patch
+  ];
+})
diff --git a/nixpkgs/pkgs/development/libraries/boost/1.60.nix b/nixpkgs/pkgs/development/libraries/boost/1.60.nix
new file mode 100644
index 000000000000..b6d74234f799
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/1.60.nix
@@ -0,0 +1,11 @@
+{ stdenv, callPackage, fetchurl, ... } @ args:
+
+callPackage ./generic.nix (args // rec {
+  version = "1.60.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/boost/boost_1_60_0.tar.bz2";
+    sha256 = "0fzx6dwqbrkd4bcd8pjv0fpapwmrxxwr8yx9g67lihlsk3zzysk8";
+  };
+
+})
diff --git a/nixpkgs/pkgs/development/libraries/boost/1.62.nix b/nixpkgs/pkgs/development/libraries/boost/1.62.nix
new file mode 100644
index 000000000000..871ef392c1ae
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/1.62.nix
@@ -0,0 +1,12 @@
+{ stdenv, callPackage, fetchurl, ... } @ args:
+
+callPackage ./generic.nix (args // rec {
+  version = "1.62.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/boost/boost_1_62_0.tar.bz2";
+    # long-form SHA256 from www.boost.org
+    sha256 = "36c96b0f6155c98404091d8ceb48319a28279ca0333fba1ad8611eb90afb2ca0";
+  };
+
+})
diff --git a/nixpkgs/pkgs/development/libraries/boost/1.63.nix b/nixpkgs/pkgs/development/libraries/boost/1.63.nix
new file mode 100644
index 000000000000..c4749bc3ee41
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/1.63.nix
@@ -0,0 +1,12 @@
+{ stdenv, callPackage, fetchurl, ... } @ args:
+
+callPackage ./generic.nix (args // rec {
+  version = "1.63.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/boost/boost_1_63_0.tar.bz2";
+    # SHA256 from http://www.boost.org/users/history/version_1_63_0.html
+    sha256 = "beae2529f759f6b3bf3f4969a19c2e9d6f0c503edcb2de4a61d1428519fcb3b0";
+  };
+
+})
diff --git a/nixpkgs/pkgs/development/libraries/boost/1.64.nix b/nixpkgs/pkgs/development/libraries/boost/1.64.nix
new file mode 100644
index 000000000000..1cf9bfa51f4b
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/1.64.nix
@@ -0,0 +1,12 @@
+{ stdenv, callPackage, fetchurl, ... } @ args:
+
+callPackage ./generic.nix (args // rec {
+  version = "1.64.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/boost/boost_1_64_0.tar.bz2";
+    # SHA256 from http://www.boost.org/users/history/version_1_64_0.html
+    sha256 = "7bcc5caace97baa948931d712ea5f37038dbb1c5d89b43ad4def4ed7cb683332";
+  };
+
+})
diff --git a/nixpkgs/pkgs/development/libraries/boost/1.65.nix b/nixpkgs/pkgs/development/libraries/boost/1.65.nix
new file mode 100644
index 000000000000..9837e1c69193
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/1.65.nix
@@ -0,0 +1,12 @@
+{ stdenv, callPackage, fetchurl, ... } @ args:
+
+callPackage ./generic.nix (args // rec {
+  version = "1.65.1";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/boost/boost_1_65_1.tar.bz2";
+    # SHA256 from http://www.boost.org/users/history/version_1_65_1.html
+    sha256 = "9807a5d16566c57fd74fb522764e0b134a8bbe6b6e8967b83afefd30dcd3be81";
+  };
+
+})
diff --git a/nixpkgs/pkgs/development/libraries/boost/1.66.nix b/nixpkgs/pkgs/development/libraries/boost/1.66.nix
new file mode 100644
index 000000000000..e8321c802359
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/1.66.nix
@@ -0,0 +1,11 @@
+{ stdenv, callPackage, fetchurl, ... } @ args:
+
+callPackage ./generic.nix (args // rec {
+  version = "1.66_0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/boost/boost_1_66_0.tar.bz2";
+    # SHA256 from http://www.boost.org/users/history/version_1_66_0.html
+    sha256 = "5721818253e6a0989583192f96782c4a98eb6204965316df9f5ad75819225ca9";
+  };
+})
diff --git a/nixpkgs/pkgs/development/libraries/boost/1.67.nix b/nixpkgs/pkgs/development/libraries/boost/1.67.nix
new file mode 100644
index 000000000000..0f341217dcab
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/1.67.nix
@@ -0,0 +1,17 @@
+{ stdenv, callPackage, fetchurl, fetchpatch, ... } @ args:
+
+callPackage ./generic.nix (args // rec {
+  version = "1.67_0";
+
+  patches = [ (fetchpatch {
+    url = "https://github.com/boostorg/lockfree/commit/12726cda009a855073b9bedbdce57b6ce7763da2.patch";
+    sha256 = "0x65nkwzv8fdacj8sw5njl3v63jj19dirrpklbwy6qpsncw7fc7h";
+    stripLen = 1;
+  })];
+
+  src = fetchurl {
+    url = "mirror://sourceforge/boost/boost_1_67_0.tar.bz2";
+    # SHA256 from http://www.boost.org/users/history/version_1_66_0.html
+    sha256 = "2684c972994ee57fc5632e03bf044746f6eb45d4920c343937a465fd67a5adba";
+  };
+})
diff --git a/nixpkgs/pkgs/development/libraries/boost/1.68.nix b/nixpkgs/pkgs/development/libraries/boost/1.68.nix
new file mode 100644
index 000000000000..97879051a67c
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/1.68.nix
@@ -0,0 +1,11 @@
+{ stdenv, callPackage, fetchurl, fetchpatch, ... } @ args:
+
+callPackage ./generic.nix (args // rec {
+  version = "1.68_0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/boost/boost_1_68_0.tar.bz2";
+    # SHA256 from http://www.boost.org/users/history/version_1_68_0.html
+    sha256 = "7f6130bc3cf65f56a618888ce9d5ea704fa10b462be126ad053e80e553d6d8b7";
+  };
+})
diff --git a/nixpkgs/pkgs/development/libraries/boost/1.69.nix b/nixpkgs/pkgs/development/libraries/boost/1.69.nix
new file mode 100644
index 000000000000..798db8dd46e4
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/1.69.nix
@@ -0,0 +1,11 @@
+{ stdenv, callPackage, fetchurl, fetchpatch, ... } @ args:
+
+callPackage ./generic.nix (args // rec {
+  version = "1.69_0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/boost/boost_1_69_0.tar.bz2";
+    # SHA256 from http://www.boost.org/users/history/version_1_69_0.html
+    sha256 = "8f32d4617390d1c2d16f26a27ab60d97807b35440d45891fa340fc2648b04406";
+  };
+})
diff --git a/nixpkgs/pkgs/development/libraries/boost/clang-math-2.patch b/nixpkgs/pkgs/development/libraries/boost/clang-math-2.patch
new file mode 100644
index 000000000000..f819e9bec623
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/clang-math-2.patch
@@ -0,0 +1,45 @@
+From 6bb71fdd8f7cc346d90fb14beb38b7297fc1ffd9 Mon Sep 17 00:00:00 2001
+From: Andrey Semashev <andrey.semashev@gmail.com>
+Date: Sun, 26 Jan 2014 13:58:48 +0400
+Subject: [PATCH] Fixed incorrect initialization of 128-bit values, when no
+ native support for 128-bit integers is available.
+
+---
+ boost/atomic/detail/cas128strong.hpp | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/boost/atomic/detail/cas128strong.hpp b/boost/atomic/detail/cas128strong.hpp
+index 906c13e..dcb4d7d 100644
+--- a/boost/atomic/detail/cas128strong.hpp
++++ b/boost/atomic/detail/cas128strong.hpp
+@@ -196,15 +196,17 @@ class base_atomic<T, void, 16, Sign>
+ 
+ public:
+     BOOST_DEFAULTED_FUNCTION(base_atomic(void), {})
+-    explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0)
++    explicit base_atomic(value_type const& v) BOOST_NOEXCEPT
+     {
++        memset(&v_, 0, sizeof(v_));
+         memcpy(&v_, &v, sizeof(value_type));
+     }
+ 
+     void
+     store(value_type const& value, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
+     {
+-        storage_type value_s = 0;
++        storage_type value_s;
++        memset(&value_s, 0, sizeof(value_s));
+         memcpy(&value_s, &value, sizeof(value_type));
+         platform_fence_before_store(order);
+         platform_store128(value_s, &v_);
+@@ -247,7 +249,9 @@ class base_atomic<T, void, 16, Sign>
+         memory_order success_order,
+         memory_order failure_order) volatile BOOST_NOEXCEPT
+     {
+-        storage_type expected_s = 0, desired_s = 0;
++        storage_type expected_s, desired_s;
++        memset(&expected_s, 0, sizeof(expected_s));
++        memset(&desired_s, 0, sizeof(desired_s));
+         memcpy(&expected_s, &expected, sizeof(value_type));
+         memcpy(&desired_s, &desired, sizeof(value_type));
+ 
diff --git a/nixpkgs/pkgs/development/libraries/boost/clang-math.patch b/nixpkgs/pkgs/development/libraries/boost/clang-math.patch
new file mode 100644
index 000000000000..aa3d76af28b2
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/clang-math.patch
@@ -0,0 +1,65 @@
+From e4bde20f2eec0a51be14533871d2123bd2ab9cf3 Mon Sep 17 00:00:00 2001
+From: Andrey Semashev <andrey.semashev@gmail.com>
+Date: Fri, 28 Feb 2014 12:43:11 +0400
+Subject: [PATCH] More compilation fixes for the case when 128-bit integers are
+ not supported.
+
+---
+ boost/atomic/detail/gcc-atomic.hpp | 17 ++++++++++++-----
+ 1 file changed, 12 insertions(+), 5 deletions(-)
+
+diff --git a/boost/atomic/detail/gcc-atomic.hpp b/boost/atomic/detail/gcc-atomic.hpp
+index a130590..4af99a1 100644
+--- a/boost/atomic/detail/gcc-atomic.hpp
++++ b/boost/atomic/detail/gcc-atomic.hpp
+@@ -958,14 +958,16 @@ class base_atomic<T, void, 16, Sign>
+ 
+ public:
+     BOOST_DEFAULTED_FUNCTION(base_atomic(void), {})
+-    explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0)
++    explicit base_atomic(value_type const& v) BOOST_NOEXCEPT
+     {
++        memset(&v_, 0, sizeof(v_));
+         memcpy(&v_, &v, sizeof(value_type));
+     }
+ 
+     void store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
+     {
+-        storage_type tmp = 0;
++        storage_type tmp;
++        memset(&tmp, 0, sizeof(tmp));
+         memcpy(&tmp, &v, sizeof(value_type));
+         __atomic_store_n(&v_, tmp, atomics::detail::convert_memory_order_to_gcc(order));
+     }
+@@ -980,7 +982,8 @@ class base_atomic<T, void, 16, Sign>
+ 
+     value_type exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
+     {
+-        storage_type tmp = 0;
++        storage_type tmp;
++        memset(&tmp, 0, sizeof(tmp));
+         memcpy(&tmp, &v, sizeof(value_type));
+         tmp = __atomic_exchange_n(&v_, tmp, atomics::detail::convert_memory_order_to_gcc(order));
+         value_type res;
+@@ -994,7 +997,9 @@ class base_atomic<T, void, 16, Sign>
+         memory_order success_order,
+         memory_order failure_order) volatile BOOST_NOEXCEPT
+     {
+-        storage_type expected_s = 0, desired_s = 0;
++        storage_type expected_s, desired_s;
++        memset(&expected_s, 0, sizeof(expected_s));
++        memset(&desired_s, 0, sizeof(desired_s));
+         memcpy(&expected_s, &expected, sizeof(value_type));
+         memcpy(&desired_s, &desired, sizeof(value_type));
+         const bool success = __atomic_compare_exchange_n(&v_, &expected_s, desired_s, false,
+@@ -1010,7 +1015,9 @@ class base_atomic<T, void, 16, Sign>
+         memory_order success_order,
+         memory_order failure_order) volatile BOOST_NOEXCEPT
+     {
+-        storage_type expected_s = 0, desired_s = 0;
++        storage_type expected_s, desired_s;
++        memset(&expected_s, 0, sizeof(expected_s));
++        memset(&desired_s, 0, sizeof(desired_s));
+         memcpy(&expected_s, &expected, sizeof(value_type));
+         memcpy(&desired_s, &desired, sizeof(value_type));
+         const bool success = __atomic_compare_exchange_n(&v_, &expected_s, desired_s, true,
diff --git a/nixpkgs/pkgs/development/libraries/boost/cygwin-1.40.0-cstdint-cygwin.patch b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.40.0-cstdint-cygwin.patch
new file mode 100644
index 000000000000..61791c60d9e0
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.40.0-cstdint-cygwin.patch
@@ -0,0 +1,20 @@
+These were fixed in ~1.7.0-46
+
+--- boost_1_40_0/boost/cstdint.hpp	2009-01-14 04:18:19.000000000 -0600
++++ boost_1_40_0/boost/cstdint.hpp	2009-08-27 23:41:34.063543700 -0500
+@@ -40,15 +40,6 @@
+ #   include <inttypes.h>
+ # else
+ #   include <stdint.h>
+-
+-// There is a bug in Cygwin two _C macros
+-#   if defined(__STDC_CONSTANT_MACROS) && defined(__CYGWIN__)
+-#     undef INTMAX_C
+-#     undef UINTMAX_C
+-#     define INTMAX_C(c) c##LL
+-#     define UINTMAX_C(c) c##ULL
+-#   endif
+-
+ # endif
+ 
+ #ifdef __QNX__
diff --git a/nixpkgs/pkgs/development/libraries/boost/cygwin-1.40.0-iostreams-cygwin.patch b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.40.0-iostreams-cygwin.patch
new file mode 100644
index 000000000000..6641ba823b17
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.40.0-iostreams-cygwin.patch
@@ -0,0 +1,24 @@
+--- boost_1_40_0/boost/iostreams/detail/config/wide_streams.hpp	2008-03-22 16:45:55.000000000 -0500
++++ boost_1_40_0/boost/iostreams/detail/config/wide_streams.hpp	2009-08-27 23:41:34.082544800 -0500
+@@ -44,8 +44,7 @@
+ //------------------Locale support--------------------------------------------//
+ 
+ #ifndef BOOST_IOSTREAMS_NO_LOCALE
+-# if defined(BOOST_NO_STD_LOCALE) || \
+-     defined(__CYGWIN__) && \
++# if defined(BOOST_NO_STD_LOCALE) && \
+      ( !defined(__MSL_CPP__) || defined(_MSL_NO_WCHART_CPP_SUPPORT) ) \
+      /**/
+ #  define BOOST_IOSTREAMS_NO_LOCALE
+--- boost_1_40_0/boost/iostreams/detail/config/windows_posix.hpp	2008-03-22 16:45:55.000000000 -0500
++++ boost_1_40_0/boost/iostreams/detail/config/windows_posix.hpp	2009-08-27 23:41:34.087545100 -0500
+@@ -13,8 +13,7 @@
+ 
+ // BOOST_IOSTREAMS_POSIX or BOOST_IOSTREAMS_WINDOWS specify which API to use.
+ #if !defined( BOOST_IOSTREAMS_WINDOWS ) && !defined( BOOST_IOSTREAMS_POSIX )
+-# if (defined(_WIN32) || defined(__WIN32__) || defined(WIN32)) && \
+-     !defined(__CYGWIN__) \
++# if (defined(_WIN32) || defined(__WIN32__) || defined(WIN32))
+      /**/
+ #  define BOOST_IOSTREAMS_WINDOWS
+ # else
diff --git a/nixpkgs/pkgs/development/libraries/boost/cygwin-1.40.0-python-cygwin.patch b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.40.0-python-cygwin.patch
new file mode 100644
index 000000000000..7932b0e124b5
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.40.0-python-cygwin.patch
@@ -0,0 +1,35 @@
+--- boost_1_40_0/boost/python/detail/config.hpp	2007-11-25 12:07:19.000000000 -0600
++++ boost_1_40_0/boost/python/detail/config.hpp	2009-08-27 23:41:34.092545400 -0500
+@@ -83,7 +83,7 @@
+ #     endif
+ #     define BOOST_PYTHON_DECL_FORWARD
+ #     define BOOST_PYTHON_DECL_EXCEPTION __attribute__ ((__visibility__("default")))
+-#  elif (defined(_WIN32) || defined(__CYGWIN__))
++#  elif defined(_WIN32)
+ #     if defined(BOOST_PYTHON_SOURCE)
+ #        define BOOST_PYTHON_DECL __declspec(dllexport)
+ #        define BOOST_PYTHON_BUILD_DLL
+--- boost_1_40_0/boost/python/detail/wrap_python.hpp	2007-04-27 17:16:47.000000000 -0500
++++ boost_1_40_0/boost/python/detail/wrap_python.hpp	2009-08-27 23:41:34.096545600 -0500
+@@ -82,8 +82,8 @@
+ // Some things we need in order to get Python.h to work with compilers other
+ // than MSVC on Win32
+ //
+-#if defined(_WIN32) || defined(__CYGWIN__)
+-# if defined(__GNUC__) && defined(__CYGWIN__)
++#if defined(_WIN32)
++# if defined(__GNUC__)
+ 
+ #  define SIZEOF_LONG 4
+ 
+--- boost_1_40_0/boost/python/module_init.hpp	2007-06-07 13:08:54.000000000 -0500
++++ boost_1_40_0/boost/python/module_init.hpp	2009-08-27 23:41:34.101545900 -0500
+@@ -15,7 +15,7 @@ BOOST_PYTHON_DECL void init_module(char 
+ 
+ }}}
+ 
+-#  if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(BOOST_PYTHON_STATIC_MODULE)
++#  if defined(_WIN32) && !defined(BOOST_PYTHON_STATIC_MODULE)
+ 
+ #   define BOOST_PYTHON_MODULE_INIT(name)               \
+ void init_module_##name();                              \
diff --git a/nixpkgs/pkgs/development/libraries/boost/cygwin-1.40.0-regex-cygwin.patch b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.40.0-regex-cygwin.patch
new file mode 100644
index 000000000000..969bb814bd10
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.40.0-regex-cygwin.patch
@@ -0,0 +1,15 @@
+--- boost_1_40_0/boost/regex/v4/fileiter.hpp	2007-11-25 12:07:19.000000000 -0600
++++ boost_1_40_0/boost/regex/v4/fileiter.hpp	2009-08-27 23:41:34.106546200 -0500
+@@ -28,11 +28,7 @@
+ 
+ #ifndef BOOST_REGEX_NO_FILEITER
+ 
+-#if (defined(__CYGWIN__) || defined(__CYGWIN32__)) && !defined(BOOST_REGEX_NO_W32)
+-#error "Sorry, can't mix <windows.h> with STL code and gcc compiler: if you ran configure, try again with configure --disable-ms-windows"
+-#define BOOST_REGEX_FI_WIN32_MAP
+-#define BOOST_REGEX_FI_POSIX_DIR
+-#elif (defined(__WIN32__) || defined(_WIN32) || defined(WIN32)) && !defined(BOOST_REGEX_NO_W32)
++#if (defined(__WIN32__) || defined(_WIN32) || defined(WIN32)) && !defined(BOOST_REGEX_NO_W32)
+ #define BOOST_REGEX_FI_WIN32_MAP
+ #define BOOST_REGEX_FI_WIN32_DIR
+ #else
diff --git a/nixpkgs/pkgs/development/libraries/boost/cygwin-1.45.0-jam-cygwin.patch b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.45.0-jam-cygwin.patch
new file mode 100644
index 000000000000..1a00851fa92e
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.45.0-jam-cygwin.patch
@@ -0,0 +1,12 @@
+OS_CYGWIN is used to assume cygpath, Win32-isms
+
+--- boost_1_48_0/tools/build/src/engine/jam.h
++++ boost_1_48_0/tools/build/src/engine/jam.h
+@@ -245,7 +245,6 @@
+ #endif
+ #if defined(__cygwin__) || defined(__CYGWIN__)
+     #define OSMINOR "OS=CYGWIN"
+-    #define OS_CYGWIN
+ #endif
+ #if defined(__FreeBSD__) && !defined(__DragonFly__)
+     #define OSMINOR "OS=FREEBSD"
diff --git a/nixpkgs/pkgs/development/libraries/boost/cygwin-1.50.0-jam-pep3149.patch b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.50.0-jam-pep3149.patch
new file mode 100644
index 000000000000..4bc6ec9d36e1
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.50.0-jam-pep3149.patch
@@ -0,0 +1,11 @@
+--- a/tools/build/src/tools/python.jam	2012-04-25 22:35:55.000000000 -0500
++++ b/tools/build/src/tools/python.jam	2013-01-21 07:22:30.814373200 -0600
+@@ -376,7 +376,7 @@ local rule path-to-native ( paths * )
+ #
+ local rule split-version ( version )
+ {
+-    local major-minor = [ MATCH ^([0-9]+)\.([0-9]+)(.*)$ : $(version) : 1 2 3 ] ;
++    local major-minor = [ MATCH ^([0-9]+)\.([0-9]+[dmu]*)(.*)$ : $(version) : 1 2 3 ] ;
+     if ! $(major-minor[2]) || $(major-minor[3])
+     {
+         ECHO "Warning: \"using python\" expects a two part (major, minor) version number; got" $(version) instead ;
diff --git a/nixpkgs/pkgs/development/libraries/boost/cygwin-1.55.0-asio-MSG_EOR.patch b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.55.0-asio-MSG_EOR.patch
new file mode 100644
index 000000000000..46308a59cb07
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.55.0-asio-MSG_EOR.patch
@@ -0,0 +1,14 @@
+--- boost_1_55_0/boost/asio/detail/socket_types.hpp	2014-08-31 12:43:54.186255800 -0500
++++ boost_1_55_0/boost/asio/detail/socket_types.hpp	2014-08-31 12:43:03.887868700 -0500
+@@ -332,7 +332,11 @@ typedef int signed_size_type;
+ # define BOOST_ASIO_OS_DEF_MSG_OOB MSG_OOB
+ # define BOOST_ASIO_OS_DEF_MSG_PEEK MSG_PEEK
+ # define BOOST_ASIO_OS_DEF_MSG_DONTROUTE MSG_DONTROUTE
++#ifdef MSG_EOR
+ # define BOOST_ASIO_OS_DEF_MSG_EOR MSG_EOR
++#else
++# define BOOST_ASIO_OS_DEF_MSG_EOR 0
++#endif
+ # define BOOST_ASIO_OS_DEF_SHUT_RD SHUT_RD
+ # define BOOST_ASIO_OS_DEF_SHUT_WR SHUT_WR
+ # define BOOST_ASIO_OS_DEF_SHUT_RDWR SHUT_RDWR
diff --git a/nixpkgs/pkgs/development/libraries/boost/cygwin-1.55.0-interlocked-cygwin.patch b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.55.0-interlocked-cygwin.patch
new file mode 100644
index 000000000000..df3edf51e7b9
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.55.0-interlocked-cygwin.patch
@@ -0,0 +1,11 @@
+--- boost_1_55_0/boost/detail/interlocked.hpp	2013-10-24 09:01:53.000000000 -0500
++++ boost_1_55_0/boost/detail/interlocked.hpp	2014-08-31 13:01:33.830313500 -0500
+@@ -160,7 +160,7 @@ extern "C" void* __cdecl _InterlockedExc
+     ((void*)BOOST_INTERLOCKED_EXCHANGE((long volatile*)(dest),(long)(exchange)))
+ # endif
+ 
+-#elif defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) || defined( __CYGWIN__ )
++#elif defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ )
+ 
+ #define BOOST_INTERLOCKED_IMPORT __declspec(dllimport)
+ 
diff --git a/nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-asio-cygwin.patch b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-asio-cygwin.patch
new file mode 100644
index 000000000000..3702d475c8e9
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-asio-cygwin.patch
@@ -0,0 +1,1835 @@
+--- boost_1_57_0/boost/asio/detail/buffer_sequence_adapter.hpp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/buffer_sequence_adapter.hpp	2015-05-04 17:33:18.798985800 -0500
+@@ -42,7 +42,7 @@ protected:
+   BOOST_ASIO_DECL static void init_native_buffer(
+       native_buffer_type& buf,
+       const boost::asio::const_buffer& buffer);
+-#elif defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#elif defined(BOOST_ASIO_WINDOWS)
+   // The maximum number of buffers to support in a single operation.
+   enum { max_buffers = 64 < max_iov_len ? 64 : max_iov_len };
+ 
+@@ -61,7 +61,7 @@ protected:
+     buf.buf = const_cast<char*>(boost::asio::buffer_cast<const char*>(buffer));
+     buf.len = static_cast<ULONG>(boost::asio::buffer_size(buffer));
+   }
+-#else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#else // defined(BOOST_ASIO_WINDOWS)
+   // The maximum number of buffers to support in a single operation.
+   enum { max_buffers = 64 < max_iov_len ? 64 : max_iov_len };
+ 
+@@ -92,7 +92,7 @@ protected:
+           boost::asio::buffer_cast<const void*>(buffer)));
+     iov.iov_len = boost::asio::buffer_size(buffer);
+   }
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ };
+ 
+ // Helper class to translate buffers into the native buffer representation.
+--- boost_1_57_0/boost/asio/detail/config.hpp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/config.hpp	2015-05-04 17:34:30.756623300 -0500
+@@ -474,7 +474,7 @@
+ #endif // !defined(BOOST_ASIO_WINDOWS)
+ 
+ // Windows: target OS version.
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+ # if !defined(_WIN32_WINNT) && !defined(_WIN32_WINDOWS)
+ #  if defined(_MSC_VER) || defined(__BORLANDC__)
+ #   pragma message( \
+@@ -512,29 +512,29 @@
+ #   error You must add -D__USE_W32_SOCKETS to your compiler options.
+ #  endif // !defined(__USE_W32_SOCKETS)
+ # endif // defined(__CYGWIN__)
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ 
+ // Windows: minimise header inclusion.
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+ # if !defined(BOOST_ASIO_NO_WIN32_LEAN_AND_MEAN)
+ #  if !defined(WIN32_LEAN_AND_MEAN)
+ #   define WIN32_LEAN_AND_MEAN
+ #  endif // !defined(WIN32_LEAN_AND_MEAN)
+ # endif // !defined(BOOST_ASIO_NO_WIN32_LEAN_AND_MEAN)
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ 
+ // Windows: suppress definition of "min" and "max" macros.
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+ # if !defined(BOOST_ASIO_NO_NOMINMAX)
+ #  if !defined(NOMINMAX)
+ #   define NOMINMAX 1
+ #  endif // !defined(NOMINMAX)
+ # endif // !defined(BOOST_ASIO_NO_NOMINMAX)
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ 
+ // Windows: IO Completion Ports.
+ #if !defined(BOOST_ASIO_HAS_IOCP)
+-# if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++# if defined(BOOST_ASIO_WINDOWS)
+ #  if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0400)
+ #   if !defined(UNDER_CE)
+ #    if !defined(BOOST_ASIO_DISABLE_IOCP)
+@@ -542,7 +542,7 @@
+ #    endif // !defined(BOOST_ASIO_DISABLE_IOCP)
+ #   endif // !defined(UNDER_CE)
+ #  endif // defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0400)
+-# endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++# endif // defined(BOOST_ASIO_WINDOWS)
+ #endif // !defined(BOOST_ASIO_HAS_IOCP)
+ 
+ // Linux: epoll, eventfd and timerfd.
+@@ -599,8 +599,7 @@
+ #if !defined(BOOST_ASIO_HAS_SERIAL_PORT)
+ # if defined(BOOST_ASIO_HAS_IOCP) \
+   || !defined(BOOST_ASIO_WINDOWS) \
+-  && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \
+-  && !defined(__CYGWIN__)
++  && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+ #  if !defined(__SYMBIAN32__)
+ #   if !defined(BOOST_ASIO_DISABLE_SERIAL_PORT)
+ #    define BOOST_ASIO_HAS_SERIAL_PORT 1
+@@ -609,7 +608,6 @@
+ # endif // defined(BOOST_ASIO_HAS_IOCP)
+         //   || !defined(BOOST_ASIO_WINDOWS)
+         //   && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+-        //   && !defined(__CYGWIN__)
+ #endif // !defined(BOOST_ASIO_HAS_SERIAL_PORT)
+ 
+ // Windows: stream handles.
+@@ -633,11 +631,11 @@
+ // Windows: object handles.
+ #if !defined(BOOST_ASIO_HAS_WINDOWS_OBJECT_HANDLE)
+ # if !defined(BOOST_ASIO_DISABLE_WINDOWS_OBJECT_HANDLE)
+-#  if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#  if defined(BOOST_ASIO_WINDOWS)
+ #   if !defined(UNDER_CE)
+ #    define BOOST_ASIO_HAS_WINDOWS_OBJECT_HANDLE 1
+ #   endif // !defined(UNDER_CE)
+-#  endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#  endif // defined(BOOST_ASIO_WINDOWS)
+ # endif // !defined(BOOST_ASIO_DISABLE_WINDOWS_OBJECT_HANDLE)
+ #endif // !defined(BOOST_ASIO_HAS_WINDOWS_OBJECT_HANDLE)
+ 
+@@ -654,12 +652,10 @@
+ #if !defined(BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR)
+ # if !defined(BOOST_ASIO_DISABLE_POSIX_STREAM_DESCRIPTOR)
+ #  if !defined(BOOST_ASIO_WINDOWS) \
+-  && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \
+-  && !defined(__CYGWIN__)
++  && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+ #   define BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR 1
+ #  endif // !defined(BOOST_ASIO_WINDOWS)
+          //   && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+-         //   && !defined(__CYGWIN__)
+ # endif // !defined(BOOST_ASIO_DISABLE_POSIX_STREAM_DESCRIPTOR)
+ #endif // !defined(BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR)
+ 
+@@ -667,12 +663,10 @@
+ #if !defined(BOOST_ASIO_HAS_LOCAL_SOCKETS)
+ # if !defined(BOOST_ASIO_DISABLE_LOCAL_SOCKETS)
+ #  if !defined(BOOST_ASIO_WINDOWS) \
+-  && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \
+-  && !defined(__CYGWIN__)
++  && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+ #   define BOOST_ASIO_HAS_LOCAL_SOCKETS 1
+ #  endif // !defined(BOOST_ASIO_WINDOWS)
+          //   && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+-         //   && !defined(__CYGWIN__)
+ # endif // !defined(BOOST_ASIO_DISABLE_LOCAL_SOCKETS)
+ #endif // !defined(BOOST_ASIO_HAS_LOCAL_SOCKETS)
+ 
+@@ -680,12 +674,10 @@
+ #if !defined(BOOST_ASIO_HAS_SIGACTION)
+ # if !defined(BOOST_ASIO_DISABLE_SIGACTION)
+ #  if !defined(BOOST_ASIO_WINDOWS) \
+-  && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \
+-  && !defined(__CYGWIN__)
++  && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+ #   define BOOST_ASIO_HAS_SIGACTION 1
+ #  endif // !defined(BOOST_ASIO_WINDOWS)
+          //   && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+-         //   && !defined(__CYGWIN__)
+ # endif // !defined(BOOST_ASIO_DISABLE_SIGACTION)
+ #endif // !defined(BOOST_ASIO_HAS_SIGACTION)
+ 
+@@ -700,7 +692,7 @@
+ 
+ // Can use getaddrinfo() and getnameinfo().
+ #if !defined(BOOST_ASIO_HAS_GETADDRINFO)
+-# if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++# if defined(BOOST_ASIO_WINDOWS)
+ #  if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501)
+ #   define BOOST_ASIO_HAS_GETADDRINFO 1
+ #  elif defined(UNDER_CE)
+--- boost_1_57_0/boost/asio/detail/descriptor_ops.hpp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/descriptor_ops.hpp	2015-05-04 17:33:18.826989400 -0500
+@@ -18,8 +18,7 @@
+ #include <boost/asio/detail/config.hpp>
+ 
+ #if !defined(BOOST_ASIO_WINDOWS) \
+-  && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \
+-  && !defined(__CYGWIN__)
++  && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+ 
+ #include <cstddef>
+ #include <boost/system/error_code.hpp>
+@@ -114,6 +113,5 @@ BOOST_ASIO_DECL int poll_write(int d,
+ 
+ #endif // !defined(BOOST_ASIO_WINDOWS)
+        //   && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+-       //   && !defined(__CYGWIN__)
+ 
+ #endif // BOOST_ASIO_DETAIL_DESCRIPTOR_OPS_HPP
+--- boost_1_57_0/boost/asio/detail/descriptor_read_op.hpp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/descriptor_read_op.hpp	2015-05-04 17:33:18.830489800 -0500
+@@ -17,7 +17,7 @@
+ 
+ #include <boost/asio/detail/config.hpp>
+ 
+-#if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__)
++#if !defined(BOOST_ASIO_WINDOWS)
+ 
+ #include <boost/asio/detail/addressof.hpp>
+ #include <boost/asio/detail/bind_handler.hpp>
+@@ -116,6 +116,6 @@ private:
+ 
+ #include <boost/asio/detail/pop_options.hpp>
+ 
+-#endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__)
++#endif // !defined(BOOST_ASIO_WINDOWS)
+ 
+ #endif // BOOST_ASIO_DETAIL_DESCRIPTOR_READ_OP_HPP
+--- boost_1_57_0/boost/asio/detail/descriptor_write_op.hpp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/descriptor_write_op.hpp	2015-05-04 17:33:18.833490200 -0500
+@@ -17,7 +17,7 @@
+ 
+ #include <boost/asio/detail/config.hpp>
+ 
+-#if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__)
++#if !defined(BOOST_ASIO_WINDOWS)
+ 
+ #include <boost/asio/detail/addressof.hpp>
+ #include <boost/asio/detail/bind_handler.hpp>
+@@ -116,6 +116,6 @@ private:
+ 
+ #include <boost/asio/detail/pop_options.hpp>
+ 
+-#endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__)
++#endif // !defined(BOOST_ASIO_WINDOWS)
+ 
+ #endif // BOOST_ASIO_DETAIL_DESCRIPTOR_WRITE_OP_HPP
+--- boost_1_57_0/boost/asio/detail/fd_set_adapter.hpp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/fd_set_adapter.hpp	2015-05-04 17:33:18.836490600 -0500
+@@ -26,7 +26,7 @@ namespace boost {
+ namespace asio {
+ namespace detail {
+ 
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+ typedef win_fd_set_adapter fd_set_adapter;
+ #else
+ typedef posix_fd_set_adapter fd_set_adapter;
+--- boost_1_57_0/boost/asio/detail/hash_map.hpp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/hash_map.hpp	2015-05-04 17:33:18.839991000 -0500
+@@ -21,9 +21,9 @@
+ #include <boost/asio/detail/assert.hpp>
+ #include <boost/asio/detail/noncopyable.hpp>
+ 
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+ # include <boost/asio/detail/socket_types.hpp>
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ 
+ #include <boost/asio/detail/push_options.hpp>
+ 
+@@ -42,12 +42,12 @@ inline std::size_t calculate_hash_value(
+     + (reinterpret_cast<std::size_t>(p) >> 3);
+ }
+ 
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+ inline std::size_t calculate_hash_value(SOCKET s)
+ {
+   return static_cast<std::size_t>(s);
+ }
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ 
+ // Note: assumes K and V are POD types.
+ template <typename K, typename V>
+--- boost_1_57_0/boost/asio/detail/impl/descriptor_ops.ipp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/impl/descriptor_ops.ipp	2015-05-04 17:33:18.843491500 -0500
+@@ -21,8 +21,7 @@
+ #include <boost/asio/error.hpp>
+ 
+ #if !defined(BOOST_ASIO_WINDOWS) \
+-  && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \
+-  && !defined(__CYGWIN__)
++  && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+ 
+ #include <boost/asio/detail/push_options.hpp>
+ 
+@@ -448,6 +447,5 @@ int poll_write(int d, state_type state,
+ 
+ #endif // !defined(BOOST_ASIO_WINDOWS)
+        //   && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+-       //   && !defined(__CYGWIN__)
+ 
+ #endif // BOOST_ASIO_DETAIL_IMPL_DESCRIPTOR_OPS_IPP
+--- boost_1_57_0/boost/asio/detail/impl/pipe_select_interrupter.ipp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/impl/pipe_select_interrupter.ipp	2015-05-04 17:33:18.846991900 -0500
+@@ -19,7 +19,6 @@
+ 
+ #if !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+ #if !defined(BOOST_ASIO_WINDOWS)
+-#if !defined(__CYGWIN__)
+ #if !defined(__SYMBIAN32__)
+ #if !defined(BOOST_ASIO_HAS_EVENTFD)
+ 
+@@ -119,7 +118,6 @@ bool pipe_select_interrupter::reset()
+ 
+ #endif // !defined(BOOST_ASIO_HAS_EVENTFD)
+ #endif // !defined(__SYMBIAN32__)
+-#endif // !defined(__CYGWIN__)
+ #endif // !defined(BOOST_ASIO_WINDOWS)
+ #endif // !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+ 
+--- boost_1_57_0/boost/asio/detail/impl/reactive_descriptor_service.ipp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/impl/reactive_descriptor_service.ipp	2015-05-04 17:33:18.849992300 -0500
+@@ -18,8 +18,7 @@
+ #include <boost/asio/detail/config.hpp>
+ 
+ #if !defined(BOOST_ASIO_WINDOWS) \
+-  && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \
+-  && !defined(__CYGWIN__)
++  && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+ 
+ #include <boost/asio/error.hpp>
+ #include <boost/asio/detail/reactive_descriptor_service.hpp>
+@@ -205,6 +204,5 @@ void reactive_descriptor_service::start_
+ 
+ #endif // !defined(BOOST_ASIO_WINDOWS)
+        //   && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+-       //   && !defined(__CYGWIN__)
+ 
+ #endif // BOOST_ASIO_DETAIL_IMPL_REACTIVE_DESCRIPTOR_SERVICE_IPP
+--- boost_1_57_0/boost/asio/detail/impl/reactive_serial_port_service.ipp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/impl/reactive_serial_port_service.ipp	2015-05-04 17:33:18.853492700 -0500
+@@ -19,7 +19,7 @@
+ #include <boost/asio/detail/config.hpp>
+ 
+ #if defined(BOOST_ASIO_HAS_SERIAL_PORT)
+-#if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__)
++#if !defined(BOOST_ASIO_WINDOWS)
+ 
+ #include <cstring>
+ #include <boost/asio/detail/reactive_serial_port_service.hpp>
+@@ -147,7 +147,7 @@ boost::system::error_code reactive_seria
+ 
+ #include <boost/asio/detail/pop_options.hpp>
+ 
+-#endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__)
++#endif // !defined(BOOST_ASIO_WINDOWS)
+ #endif // defined(BOOST_ASIO_HAS_SERIAL_PORT)
+ 
+ #endif // BOOST_ASIO_DETAIL_IMPL_REACTIVE_SERIAL_PORT_SERVICE_IPP
+--- boost_1_57_0/boost/asio/detail/impl/select_reactor.ipp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/impl/select_reactor.ipp	2015-05-04 17:29:21.281324900 -0500
+@@ -187,7 +187,7 @@ void select_reactor::run(bool block, op_
+       max_fd = fd_sets_[i].max_descriptor();
+   }
+ 
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   // Connection operations on Windows use both except and write fd_sets.
+   have_work_to_do = have_work_to_do || !op_queue_[connect_op].empty();
+   fd_sets_[write_op].set(op_queue_[connect_op], ops);
+@@ -196,7 +196,7 @@ void select_reactor::run(bool block, op_
+   fd_sets_[except_op].set(op_queue_[connect_op], ops);
+   if (fd_sets_[except_op].max_descriptor() > max_fd)
+     max_fd = fd_sets_[except_op].max_descriptor();
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ 
+   // We can return immediately if there's no work to do and the reactor is
+   // not supposed to block.
+@@ -226,11 +226,11 @@ void select_reactor::run(bool block, op_
+   // Dispatch all ready operations.
+   if (retval > 0)
+   {
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+     // Connection operations on Windows use both except and write fd_sets.
+     fd_sets_[except_op].perform(op_queue_[connect_op], ops);
+     fd_sets_[write_op].perform(op_queue_[connect_op], ops);
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ 
+     // Exception operations must be processed first to ensure that any
+     // out-of-band data is read before normal data.
+--- boost_1_57_0/boost/asio/detail/impl/signal_set_service.ipp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/impl/signal_set_service.ipp	2015-05-04 17:33:18.857993300 -0500
+@@ -60,12 +60,10 @@ signal_state* get_signal_state()
+ void boost_asio_signal_handler(int signal_number)
+ {
+ #if defined(BOOST_ASIO_WINDOWS) \
+-  || defined(BOOST_ASIO_WINDOWS_RUNTIME) \
+-  || defined(__CYGWIN__)
++  || defined(BOOST_ASIO_WINDOWS_RUNTIME)
+   signal_set_service::deliver_signal(signal_number);
+ #else // defined(BOOST_ASIO_WINDOWS)
+       //   || defined(BOOST_ASIO_WINDOWS_RUNTIME)
+-      //   || defined(__CYGWIN__)
+   int saved_errno = errno;
+   signal_state* state = get_signal_state();
+   signed_size_type result = ::write(state->write_descriptor_,
+@@ -74,7 +72,6 @@ void boost_asio_signal_handler(int signa
+   errno = saved_errno;
+ #endif // defined(BOOST_ASIO_WINDOWS)
+        //   || defined(BOOST_ASIO_WINDOWS_RUNTIME)
+-       //   || defined(__CYGWIN__)
+ 
+ #if defined(BOOST_ASIO_HAS_SIGNAL) && !defined(BOOST_ASIO_HAS_SIGACTION)
+   ::signal(signal_number, boost_asio_signal_handler);
+@@ -82,8 +79,7 @@ void boost_asio_signal_handler(int signa
+ }
+ 
+ #if !defined(BOOST_ASIO_WINDOWS) \
+-  && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \
+-  && !defined(__CYGWIN__)
++  && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+ class signal_set_service::pipe_read_op : public reactor_op
+ {
+ public:
+@@ -115,30 +111,25 @@ public:
+ };
+ #endif // !defined(BOOST_ASIO_WINDOWS)
+        //   && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+-       //   && !defined(__CYGWIN__)
+ 
+ signal_set_service::signal_set_service(
+     boost::asio::io_service& io_service)
+   : io_service_(boost::asio::use_service<io_service_impl>(io_service)),
+ #if !defined(BOOST_ASIO_WINDOWS) \
+-  && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \
+-  && !defined(__CYGWIN__)
++  && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+     reactor_(boost::asio::use_service<reactor>(io_service)),
+ #endif // !defined(BOOST_ASIO_WINDOWS)
+        //   && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+-       //   && !defined(__CYGWIN__)
+     next_(0),
+     prev_(0)
+ {
+   get_signal_state()->mutex_.init();
+ 
+ #if !defined(BOOST_ASIO_WINDOWS) \
+-  && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \
+-  && !defined(__CYGWIN__)
++  && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+   reactor_.init_task();
+ #endif // !defined(BOOST_ASIO_WINDOWS)
+        //   && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+-       //   && !defined(__CYGWIN__)
+ 
+   for (int i = 0; i < max_signal_number; ++i)
+     registrations_[i] = 0;
+@@ -174,8 +165,7 @@ void signal_set_service::fork_service(
+     boost::asio::io_service::fork_event fork_ev)
+ {
+ #if !defined(BOOST_ASIO_WINDOWS) \
+-  && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \
+-  && !defined(__CYGWIN__)
++  && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+   signal_state* state = get_signal_state();
+   static_mutex::scoped_lock lock(state->mutex_);
+ 
+@@ -217,11 +207,9 @@ void signal_set_service::fork_service(
+   }
+ #else // !defined(BOOST_ASIO_WINDOWS)
+       //   && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+-      //   && !defined(__CYGWIN__)
+   (void)fork_ev;
+ #endif // !defined(BOOST_ASIO_WINDOWS)
+        //   && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+-       //   && !defined(__CYGWIN__)
+ }
+ 
+ void signal_set_service::construct(
+@@ -281,12 +269,12 @@ boost::system::error_code signal_set_ser
+       if (::signal(signal_number, boost_asio_signal_handler) == SIG_ERR)
+ # endif // defined(BOOST_ASIO_HAS_SIGACTION)
+       {
+-# if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++# if defined(BOOST_ASIO_WINDOWS)
+         ec = boost::asio::error::invalid_argument;
+-# else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++# else // defined(BOOST_ASIO_WINDOWS)
+         ec = boost::system::error_code(errno,
+             boost::asio::error::get_system_category());
+-# endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++# endif // defined(BOOST_ASIO_WINDOWS)
+         delete new_registration;
+         return ec;
+       }
+@@ -351,12 +339,12 @@ boost::system::error_code signal_set_ser
+       if (::signal(signal_number, SIG_DFL) == SIG_ERR)
+ # endif // defined(BOOST_ASIO_HAS_SIGACTION)
+       {
+-# if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++# if defined(BOOST_ASIO_WINDOWS)
+         ec = boost::asio::error::invalid_argument;
+-# else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++# else // defined(BOOST_ASIO_WINDOWS)
+         ec = boost::system::error_code(errno,
+             boost::asio::error::get_system_category());
+-# endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++# endif // defined(BOOST_ASIO_WINDOWS)
+         return ec;
+       }
+     }
+@@ -405,12 +393,12 @@ boost::system::error_code signal_set_ser
+       if (::signal(reg->signal_number_, SIG_DFL) == SIG_ERR)
+ # endif // defined(BOOST_ASIO_HAS_SIGACTION)
+       {
+-# if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++# if defined(BOOST_ASIO_WINDOWS)
+         ec = boost::asio::error::invalid_argument;
+-# else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++# else // defined(BOOST_ASIO_WINDOWS)
+         ec = boost::system::error_code(errno,
+             boost::asio::error::get_system_category());
+-# endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++# endif // defined(BOOST_ASIO_WINDOWS)
+         return ec;
+       }
+     }
+@@ -500,11 +488,11 @@ void signal_set_service::add_service(sig
+   signal_state* state = get_signal_state();
+   static_mutex::scoped_lock lock(state->mutex_);
+ 
+-#if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__)
++#if !defined(BOOST_ASIO_WINDOWS)
+   // If this is the first service to be created, open a new pipe.
+   if (state->service_list_ == 0)
+     open_descriptors();
+-#endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__)
++#endif // !defined(BOOST_ASIO_WINDOWS)
+ 
+   // Insert service into linked list of all services.
+   service->next_ = state->service_list_;
+@@ -514,8 +502,7 @@ void signal_set_service::add_service(sig
+   state->service_list_ = service;
+ 
+ #if !defined(BOOST_ASIO_WINDOWS) \
+-  && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \
+-  && !defined(__CYGWIN__)
++  && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+   // Register for pipe readiness notifications.
+   int read_descriptor = state->read_descriptor_;
+   lock.unlock();
+@@ -523,7 +510,6 @@ void signal_set_service::add_service(sig
+       read_descriptor, service->reactor_data_, new pipe_read_op);
+ #endif // !defined(BOOST_ASIO_WINDOWS)
+        //   && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+-       //   && !defined(__CYGWIN__)
+ }
+ 
+ void signal_set_service::remove_service(signal_set_service* service)
+@@ -534,8 +520,7 @@ void signal_set_service::remove_service(
+   if (service->next_ || service->prev_ || state->service_list_ == service)
+   {
+ #if !defined(BOOST_ASIO_WINDOWS) \
+-  && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \
+-  && !defined(__CYGWIN__)
++  && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+     // Disable the pipe readiness notifications.
+     int read_descriptor = state->read_descriptor_;
+     lock.unlock();
+@@ -544,7 +529,6 @@ void signal_set_service::remove_service(
+     lock.lock();
+ #endif // !defined(BOOST_ASIO_WINDOWS)
+        //   && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+-       //   && !defined(__CYGWIN__)
+ 
+     // Remove service from linked list of all services.
+     if (state->service_list_ == service)
+@@ -556,19 +540,18 @@ void signal_set_service::remove_service(
+     service->next_ = 0;
+     service->prev_ = 0;
+ 
+-#if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__)
++#if !defined(BOOST_ASIO_WINDOWS)
+     // If this is the last service to be removed, close the pipe.
+     if (state->service_list_ == 0)
+       close_descriptors();
+-#endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__)
++#endif // !defined(BOOST_ASIO_WINDOWS)
+   }
+ }
+ 
+ void signal_set_service::open_descriptors()
+ {
+ #if !defined(BOOST_ASIO_WINDOWS) \
+-  && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \
+-  && !defined(__CYGWIN__)
++  && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+   signal_state* state = get_signal_state();
+ 
+   int pipe_fds[2];
+@@ -593,14 +576,12 @@ void signal_set_service::open_descriptor
+   }
+ #endif // !defined(BOOST_ASIO_WINDOWS)
+        //   && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+-       //   && !defined(__CYGWIN__)
+ }
+ 
+ void signal_set_service::close_descriptors()
+ {
+ #if !defined(BOOST_ASIO_WINDOWS) \
+-  && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \
+-  && !defined(__CYGWIN__)
++  && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+   signal_state* state = get_signal_state();
+ 
+   if (state->read_descriptor_ != -1)
+@@ -612,7 +593,6 @@ void signal_set_service::close_descripto
+   state->write_descriptor_ = -1;
+ #endif // !defined(BOOST_ASIO_WINDOWS)
+        //   && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+-       //   && !defined(__CYGWIN__)
+ }
+ 
+ void signal_set_service::start_wait_op(
+--- boost_1_57_0/boost/asio/detail/impl/socket_ops.ipp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/impl/socket_ops.ipp	2015-05-04 17:32:20.048025400 -0500
+@@ -33,12 +33,12 @@
+ # include <string>
+ #endif // defined(BOOST_ASIO_WINDOWS_RUNTIME)
+ 
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) \
++#if defined(BOOST_ASIO_WINDOWS) \
+   || defined(__MACH__) && defined(__APPLE__)
+ # if defined(BOOST_ASIO_HAS_PTHREADS)
+ #  include <pthread.h>
+ # endif // defined(BOOST_ASIO_HAS_PTHREADS)
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+        // || defined(__MACH__) && defined(__APPLE__)
+ 
+ #include <boost/asio/detail/push_options.hpp>
+@@ -50,9 +50,9 @@ namespace socket_ops {
+ 
+ #if !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+ 
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+ struct msghdr { int msg_namelen; };
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ 
+ #if defined(__hpux)
+ // HP-UX doesn't declare these functions extern "C", so they are declared again
+@@ -65,7 +65,7 @@ extern "C" unsigned int if_nametoindex(c
+ 
+ inline void clear_last_error()
+ {
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   WSASetLastError(0);
+ #else
+   errno = 0;
+@@ -78,7 +78,7 @@ template <typename ReturnType>
+ inline ReturnType error_wrapper(ReturnType return_value,
+     boost::system::error_code& ec)
+ {
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   ec = boost::system::error_code(WSAGetLastError(),
+       boost::asio::error::get_system_category());
+ #else
+@@ -313,11 +313,11 @@ int close(socket_type s, state_type& sta
+     }
+ 
+     clear_last_error();
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+     result = error_wrapper(::closesocket(s), ec);
+-#else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#else // defined(BOOST_ASIO_WINDOWS)
+     result = error_wrapper(::close(s), ec);
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ 
+     if (result != 0
+         && (ec == boost::asio::error::would_block
+@@ -329,10 +329,10 @@ int close(socket_type s, state_type& sta
+       // current OS where this behaviour is seen, Windows, says that the socket
+       // remains open. Therefore we'll put the descriptor back into blocking
+       // mode and have another attempt at closing it.
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+       ioctl_arg_type arg = 0;
+       ::ioctlsocket(s, FIONBIO, &arg);
+-#else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#else // defined(BOOST_ASIO_WINDOWS)
+ # if defined(__SYMBIAN32__)
+       int flags = ::fcntl(s, F_GETFL, 0);
+       if (flags >= 0)
+@@ -341,15 +341,15 @@ int close(socket_type s, state_type& sta
+       ioctl_arg_type arg = 0;
+       ::ioctl(s, FIONBIO, &arg);
+ # endif // defined(__SYMBIAN32__)
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+       state &= ~non_blocking;
+ 
+       clear_last_error();
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+       result = error_wrapper(::closesocket(s), ec);
+-#else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#else // defined(BOOST_ASIO_WINDOWS)
+       result = error_wrapper(::close(s), ec);
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+     }
+   }
+ 
+@@ -368,7 +368,7 @@ bool set_user_non_blocking(socket_type s
+   }
+ 
+   clear_last_error();
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   ioctl_arg_type arg = (value ? 1 : 0);
+   int result = error_wrapper(::ioctlsocket(s, FIONBIO, &arg), ec);
+ #elif defined(__SYMBIAN32__)
+@@ -421,7 +421,7 @@ bool set_internal_non_blocking(socket_ty
+   }
+ 
+   clear_last_error();
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   ioctl_arg_type arg = (value ? 1 : 0);
+   int result = error_wrapper(::ioctlsocket(s, FIONBIO, &arg), ec);
+ #elif defined(__SYMBIAN32__)
+@@ -543,7 +543,6 @@ bool non_blocking_connect(socket_type s,
+   // Check if the connect operation has finished. This is required since we may
+   // get spurious readiness notifications from the reactor.
+ #if defined(BOOST_ASIO_WINDOWS) \
+-  || defined(__CYGWIN__) \
+   || defined(__SYMBIAN32__)
+   fd_set write_fds;
+   FD_ZERO(&write_fds);
+@@ -556,7 +555,6 @@ bool non_blocking_connect(socket_type s,
+   zero_timeout.tv_usec = 0;
+   int ready = ::select(s + 1, 0, &write_fds, &except_fds, &zero_timeout);
+ #else // defined(BOOST_ASIO_WINDOWS)
+-      // || defined(__CYGWIN__)
+       // || defined(__SYMBIAN32__)
+   pollfd fds;
+   fds.fd = s;
+@@ -564,7 +562,6 @@ bool non_blocking_connect(socket_type s,
+   fds.revents = 0;
+   int ready = ::poll(&fds, 1, 0);
+ #endif // defined(BOOST_ASIO_WINDOWS)
+-       // || defined(__CYGWIN__)
+        // || defined(__SYMBIAN32__)
+   if (ready == 0)
+   {
+@@ -593,7 +590,7 @@ bool non_blocking_connect(socket_type s,
+ int socketpair(int af, int type, int protocol,
+     socket_type sv[2], boost::system::error_code& ec)
+ {
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   (void)(af);
+   (void)(type);
+   (void)(protocol);
+@@ -619,11 +616,11 @@ bool sockatmark(socket_type s, boost::sy
+ 
+ #if defined(SIOCATMARK)
+   ioctl_arg_type value = 0;
+-# if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++# if defined(BOOST_ASIO_WINDOWS)
+   int result = error_wrapper(::ioctlsocket(s, SIOCATMARK, &value), ec);
+-# else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++# else // defined(BOOST_ASIO_WINDOWS)
+   int result = error_wrapper(::ioctl(s, SIOCATMARK, &value), ec);
+-# endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++# endif // defined(BOOST_ASIO_WINDOWS)
+   if (result == 0)
+     ec = boost::system::error_code();
+ # if defined(ENOTTY)
+@@ -648,11 +645,11 @@ size_t available(socket_type s, boost::s
+   }
+ 
+   ioctl_arg_type value = 0;
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   int result = error_wrapper(::ioctlsocket(s, FIONREAD, &value), ec);
+-#else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#else // defined(BOOST_ASIO_WINDOWS)
+   int result = error_wrapper(::ioctl(s, FIONREAD, &value), ec);
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+   if (result == 0)
+     ec = boost::system::error_code();
+ #if defined(ENOTTY)
+@@ -689,32 +686,32 @@ inline void init_buf_iov_base(T& base, v
+   base = static_cast<T>(addr);
+ }
+ 
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+ typedef WSABUF buf;
+-#else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#else // defined(BOOST_ASIO_WINDOWS)
+ typedef iovec buf;
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ 
+ void init_buf(buf& b, void* data, size_t size)
+ {
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   b.buf = static_cast<char*>(data);
+   b.len = static_cast<u_long>(size);
+-#else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#else // defined(BOOST_ASIO_WINDOWS)
+   init_buf_iov_base(b.iov_base, data);
+   b.iov_len = size;
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ }
+ 
+ void init_buf(buf& b, const void* data, size_t size)
+ {
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   b.buf = static_cast<char*>(const_cast<void*>(data));
+   b.len = static_cast<u_long>(size);
+-#else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#else // defined(BOOST_ASIO_WINDOWS)
+   init_buf_iov_base(b.iov_base, const_cast<void*>(data));
+   b.iov_len = size;
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ }
+ 
+ inline void init_msghdr_msg_name(void*& name, socket_addr_type* addr)
+@@ -743,7 +740,7 @@ signed_size_type recv(socket_type s, buf
+     int flags, boost::system::error_code& ec)
+ {
+   clear_last_error();
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   // Receive some data.
+   DWORD recv_buf_count = static_cast<DWORD>(count);
+   DWORD bytes_transferred = 0;
+@@ -758,7 +755,7 @@ signed_size_type recv(socket_type s, buf
+     return socket_error_retval;
+   ec = boost::system::error_code();
+   return bytes_transferred;
+-#else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#else // defined(BOOST_ASIO_WINDOWS)
+   msghdr msg = msghdr();
+   msg.msg_iov = bufs;
+   msg.msg_iovlen = static_cast<int>(count);
+@@ -766,7 +763,7 @@ signed_size_type recv(socket_type s, buf
+   if (result >= 0)
+     ec = boost::system::error_code();
+   return result;
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ }
+ 
+ size_t sync_recv(socket_type s, state_type state, buf* bufs,
+@@ -889,7 +886,7 @@ signed_size_type recvfrom(socket_type s,
+     boost::system::error_code& ec)
+ {
+   clear_last_error();
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   // Receive some data.
+   DWORD recv_buf_count = static_cast<DWORD>(count);
+   DWORD bytes_transferred = 0;
+@@ -906,7 +903,7 @@ signed_size_type recvfrom(socket_type s,
+     return socket_error_retval;
+   ec = boost::system::error_code();
+   return bytes_transferred;
+-#else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#else // defined(BOOST_ASIO_WINDOWS)
+   msghdr msg = msghdr();
+   init_msghdr_msg_name(msg.msg_name, addr);
+   msg.msg_namelen = static_cast<int>(*addrlen);
+@@ -917,7 +914,7 @@ signed_size_type recvfrom(socket_type s,
+   if (result >= 0)
+     ec = boost::system::error_code();
+   return result;
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ }
+ 
+ size_t sync_recvfrom(socket_type s, state_type state, buf* bufs,
+@@ -1014,10 +1011,10 @@ signed_size_type recvmsg(socket_type s,
+     int in_flags, int& out_flags, boost::system::error_code& ec)
+ {
+   clear_last_error();
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   out_flags = 0;
+   return socket_ops::recv(s, bufs, count, in_flags, ec);
+-#else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#else // defined(BOOST_ASIO_WINDOWS)
+   msghdr msg = msghdr();
+   msg.msg_iov = bufs;
+   msg.msg_iovlen = static_cast<int>(count);
+@@ -1030,7 +1027,7 @@ signed_size_type recvmsg(socket_type s,
+   else
+     out_flags = 0;
+   return result;
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ }
+ 
+ size_t sync_recvmsg(socket_type s, state_type state,
+@@ -1126,7 +1123,7 @@ signed_size_type send(socket_type s, con
+     int flags, boost::system::error_code& ec)
+ {
+   clear_last_error();
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   // Send the data.
+   DWORD send_buf_count = static_cast<DWORD>(count);
+   DWORD bytes_transferred = 0;
+@@ -1141,7 +1138,7 @@ signed_size_type send(socket_type s, con
+     return socket_error_retval;
+   ec = boost::system::error_code();
+   return bytes_transferred;
+-#else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#else // defined(BOOST_ASIO_WINDOWS)
+   msghdr msg = msghdr();
+   msg.msg_iov = const_cast<buf*>(bufs);
+   msg.msg_iovlen = static_cast<int>(count);
+@@ -1152,7 +1149,7 @@ signed_size_type send(socket_type s, con
+   if (result >= 0)
+     ec = boost::system::error_code();
+   return result;
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ }
+ 
+ size_t sync_send(socket_type s, state_type state, const buf* bufs,
+@@ -1253,7 +1250,7 @@ signed_size_type sendto(socket_type s, c
+     boost::system::error_code& ec)
+ {
+   clear_last_error();
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   // Send the data.
+   DWORD send_buf_count = static_cast<DWORD>(count);
+   DWORD bytes_transferred = 0;
+@@ -1268,7 +1265,7 @@ signed_size_type sendto(socket_type s, c
+     return socket_error_retval;
+   ec = boost::system::error_code();
+   return bytes_transferred;
+-#else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#else // defined(BOOST_ASIO_WINDOWS)
+   msghdr msg = msghdr();
+   init_msghdr_msg_name(msg.msg_name, addr);
+   msg.msg_namelen = static_cast<int>(addrlen);
+@@ -1281,7 +1278,7 @@ signed_size_type sendto(socket_type s, c
+   if (result >= 0)
+     ec = boost::system::error_code();
+   return result;
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ }
+ 
+ size_t sync_sendto(socket_type s, state_type state, const buf* bufs,
+@@ -1358,7 +1355,7 @@ socket_type socket(int af, int type, int
+     boost::system::error_code& ec)
+ {
+   clear_last_error();
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   socket_type s = error_wrapper(::WSASocketW(af, type, protocol, 0, 0,
+         WSA_FLAG_OVERLAPPED), ec);
+   if (s == invalid_socket)
+@@ -1556,7 +1553,7 @@ int getsockopt(socket_type s, state_type
+   }
+   ec = boost::asio::error::fault;
+   return socket_error_retval;
+-#elif defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#elif defined(BOOST_ASIO_WINDOWS)
+   clear_last_error();
+   int result = error_wrapper(call_getsockopt(&msghdr::msg_namelen,
+         s, level, optname, optval, optlen), ec);
+@@ -1574,7 +1571,7 @@ int getsockopt(socket_type s, state_type
+   if (result == 0)
+     ec = boost::system::error_code();
+   return result;
+-#else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#else // defined(BOOST_ASIO_WINDOWS)
+   clear_last_error();
+   int result = error_wrapper(call_getsockopt(&msghdr::msg_namelen,
+         s, level, optname, optval, optlen), ec);
+@@ -1593,7 +1590,7 @@ int getsockopt(socket_type s, state_type
+   if (result == 0)
+     ec = boost::system::error_code();
+   return result;
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ }
+ 
+ template <typename SockLenType>
+@@ -1615,7 +1612,7 @@ int getpeername(socket_type s, socket_ad
+     return socket_error_retval;
+   }
+ 
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   if (cached)
+   {
+     // Check if socket is still connected.
+@@ -1636,9 +1633,9 @@ int getpeername(socket_type s, socket_ad
+     ec = boost::system::error_code();
+     return 0;
+   }
+-#else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#else // defined(BOOST_ASIO_WINDOWS)
+   (void)cached;
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ 
+   clear_last_error();
+   int result = error_wrapper(call_getpeername(
+@@ -1685,7 +1682,7 @@ int ioctl(socket_type s, state_type& sta
+   }
+ 
+   clear_last_error();
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   int result = error_wrapper(::ioctlsocket(s, cmd, arg), ec);
+ #elif defined(__MACH__) && defined(__APPLE__) \
+   || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)
+@@ -1726,7 +1723,7 @@ int select(int nfds, fd_set* readfds, fd
+     fd_set* exceptfds, timeval* timeout, boost::system::error_code& ec)
+ {
+   clear_last_error();
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   if (!readfds && !writefds && !exceptfds && timeout)
+   {
+     DWORD milliseconds = timeout->tv_sec * 1000 + timeout->tv_usec / 1000;
+@@ -1746,7 +1743,7 @@ int select(int nfds, fd_set* readfds, fd
+   if (timeout && timeout->tv_sec == 0
+       && timeout->tv_usec > 0 && timeout->tv_usec < 1000)
+     timeout->tv_usec = 1000;
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ 
+ #if defined(__hpux) && defined(__SELECT)
+   timespec ts;
+@@ -1772,7 +1769,6 @@ int poll_read(socket_type s, state_type
+   }
+ 
+ #if defined(BOOST_ASIO_WINDOWS) \
+-  || defined(__CYGWIN__) \
+   || defined(__SYMBIAN32__)
+   fd_set fds;
+   FD_ZERO(&fds);
+@@ -1784,7 +1780,6 @@ int poll_read(socket_type s, state_type
+   clear_last_error();
+   int result = error_wrapper(::select(s + 1, &fds, 0, 0, timeout), ec);
+ #else // defined(BOOST_ASIO_WINDOWS)
+-      // || defined(__CYGWIN__)
+       // || defined(__SYMBIAN32__)
+   pollfd fds;
+   fds.fd = s;
+@@ -1794,7 +1789,6 @@ int poll_read(socket_type s, state_type
+   clear_last_error();
+   int result = error_wrapper(::poll(&fds, 1, timeout), ec);
+ #endif // defined(BOOST_ASIO_WINDOWS)
+-       // || defined(__CYGWIN__)
+        // || defined(__SYMBIAN32__)
+   if (result == 0)
+     ec = (state & user_set_non_blocking)
+@@ -1813,7 +1807,6 @@ int poll_write(socket_type s, state_type
+   }
+ 
+ #if defined(BOOST_ASIO_WINDOWS) \
+-  || defined(__CYGWIN__) \
+   || defined(__SYMBIAN32__)
+   fd_set fds;
+   FD_ZERO(&fds);
+@@ -1825,7 +1818,6 @@ int poll_write(socket_type s, state_type
+   clear_last_error();
+   int result = error_wrapper(::select(s + 1, 0, &fds, 0, timeout), ec);
+ #else // defined(BOOST_ASIO_WINDOWS)
+-      // || defined(__CYGWIN__)
+       // || defined(__SYMBIAN32__)
+   pollfd fds;
+   fds.fd = s;
+@@ -1835,7 +1827,6 @@ int poll_write(socket_type s, state_type
+   clear_last_error();
+   int result = error_wrapper(::poll(&fds, 1, timeout), ec);
+ #endif // defined(BOOST_ASIO_WINDOWS)
+-       // || defined(__CYGWIN__)
+        // || defined(__SYMBIAN32__)
+   if (result == 0)
+     ec = (state & user_set_non_blocking)
+@@ -1854,7 +1845,6 @@ int poll_connect(socket_type s, boost::s
+   }
+ 
+ #if defined(BOOST_ASIO_WINDOWS) \
+-  || defined(__CYGWIN__) \
+   || defined(__SYMBIAN32__)
+   fd_set write_fds;
+   FD_ZERO(&write_fds);
+@@ -1869,7 +1859,6 @@ int poll_connect(socket_type s, boost::s
+     ec = boost::system::error_code();
+   return result;
+ #else // defined(BOOST_ASIO_WINDOWS)
+-      // || defined(__CYGWIN__)
+       // || defined(__SYMBIAN32__)
+   pollfd fds;
+   fds.fd = s;
+@@ -1881,7 +1870,6 @@ int poll_connect(socket_type s, boost::s
+     ec = boost::system::error_code();
+   return result;
+ #endif // defined(BOOST_ASIO_WINDOWS)
+-       // || defined(__CYGWIN__)
+        // || defined(__SYMBIAN32__)
+ }
+ 
+@@ -1926,7 +1914,7 @@ const char* inet_ntop(int af, const void
+     ec = boost::asio::error::address_family_not_supported;
+     return 0;
+   }
+-#elif defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#elif defined(BOOST_ASIO_WINDOWS)
+   using namespace std; // For memcpy.
+ 
+   if (af != BOOST_ASIO_OS_DEF(AF_INET) && af != BOOST_ASIO_OS_DEF(AF_INET6))
+@@ -1981,7 +1969,7 @@ const char* inet_ntop(int af, const void
+     ec = boost::asio::error::invalid_argument;
+ 
+   return result == socket_error_retval ? 0 : dest;
+-#else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#else // defined(BOOST_ASIO_WINDOWS)
+   const char* result = error_wrapper(::inet_ntop(
+         af, src, dest, static_cast<int>(length)), ec);
+   if (result == 0 && !ec)
+@@ -2001,7 +1989,7 @@ const char* inet_ntop(int af, const void
+     strcat(dest, if_name);
+   }
+   return result;
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ }
+ 
+ int inet_pton(int af, const char* src, void* dest,
+@@ -2152,7 +2140,7 @@ int inet_pton(int af, const char* src, v
+     ec = boost::asio::error::address_family_not_supported;
+     return -1;
+   }
+-#elif defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#elif defined(BOOST_ASIO_WINDOWS)
+   using namespace std; // For memcpy and strcmp.
+ 
+   if (af != BOOST_ASIO_OS_DEF(AF_INET) && af != BOOST_ASIO_OS_DEF(AF_INET6))
+@@ -2212,7 +2200,7 @@ int inet_pton(int af, const char* src, v
+     ec = boost::system::error_code();
+ 
+   return result == socket_error_retval ? -1 : 1;
+-#else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#else // defined(BOOST_ASIO_WINDOWS)
+   int result = error_wrapper(::inet_pton(af, src, dest), ec);
+   if (result <= 0 && !ec)
+     ec = boost::asio::error::invalid_argument;
+@@ -2234,7 +2222,7 @@ int inet_pton(int af, const char* src, v
+     }
+   }
+   return result;
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ }
+ 
+ int gethostname(char* name, int namelen, boost::system::error_code& ec)
+@@ -2310,7 +2298,7 @@ inline hostent* gethostbyaddr(const char
+     hostent* result, char* buffer, int buflength, boost::system::error_code& ec)
+ {
+   clear_last_error();
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   (void)(buffer);
+   (void)(buflength);
+   hostent* retval = error_wrapper(::gethostbyaddr(addr, length, af), ec);
+@@ -2353,7 +2341,7 @@ inline hostent* gethostbyname(const char
+     char* buffer, int buflength, int ai_flags, boost::system::error_code& ec)
+ {
+   clear_last_error();
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   (void)(buffer);
+   (void)(buflength);
+   (void)(ai_flags);
+@@ -3153,7 +3141,7 @@ inline boost::system::error_code transla
+   case EAI_SOCKTYPE:
+     return boost::asio::error::socket_type_not_supported;
+   default: // Possibly the non-portable EAI_SYSTEM.
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+     return boost::system::error_code(
+         WSAGetLastError(), boost::asio::error::get_system_category());
+ #else
+@@ -3170,7 +3158,7 @@ boost::system::error_code getaddrinfo(co
+   host = (host && *host) ? host : 0;
+   service = (service && *service) ? service : 0;
+   clear_last_error();
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+ # if defined(BOOST_ASIO_HAS_GETADDRINFO)
+   // Building for Windows XP, Windows Server 2003, or later.
+   int error = ::getaddrinfo(host, service, &hints, result);
+@@ -3213,7 +3201,7 @@ boost::system::error_code background_get
+ 
+ void freeaddrinfo(addrinfo_type* ai)
+ {
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+ # if defined(BOOST_ASIO_HAS_GETADDRINFO)
+   // Building for Windows XP, Windows Server 2003, or later.
+   ::freeaddrinfo(ai);
+@@ -3241,7 +3229,7 @@ boost::system::error_code getnameinfo(co
+     std::size_t addrlen, char* host, std::size_t hostlen,
+     char* serv, std::size_t servlen, int flags, boost::system::error_code& ec)
+ {
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+ # if defined(BOOST_ASIO_HAS_GETADDRINFO)
+   // Building for Windows XP, Windows Server 2003, or later.
+   clear_last_error();
+--- boost_1_57_0/boost/asio/detail/impl/socket_select_interrupter.ipp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/impl/socket_select_interrupter.ipp	2015-05-04 17:33:18.861493700 -0500
+@@ -20,7 +20,6 @@
+ #if !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+ 
+ #if defined(BOOST_ASIO_WINDOWS) \
+-  || defined(__CYGWIN__) \
+   || defined(__SYMBIAN32__)
+ 
+ #include <cstdlib>
+@@ -169,7 +168,6 @@ bool socket_select_interrupter::reset()
+ #include <boost/asio/detail/pop_options.hpp>
+ 
+ #endif // defined(BOOST_ASIO_WINDOWS)
+-       // || defined(__CYGWIN__)
+        // || defined(__SYMBIAN32__)
+ 
+ #endif // !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+--- boost_1_57_0/boost/asio/detail/impl/winsock_init.ipp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/impl/winsock_init.ipp	2015-05-04 17:33:18.864494100 -0500
+@@ -17,7 +17,7 @@
+ 
+ #include <boost/asio/detail/config.hpp>
+ 
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+ 
+ #include <boost/asio/detail/socket_types.hpp>
+ #include <boost/asio/detail/winsock_init.hpp>
+@@ -79,6 +79,6 @@ void winsock_init_base::throw_on_error(d
+ 
+ #include <boost/asio/detail/pop_options.hpp>
+ 
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ 
+ #endif // BOOST_ASIO_DETAIL_IMPL_WINSOCK_INIT_IPP
+--- boost_1_57_0/boost/asio/detail/local_free_on_block_exit.hpp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/local_free_on_block_exit.hpp	2015-05-04 17:33:18.867994600 -0500
+@@ -17,7 +17,7 @@
+ 
+ #include <boost/asio/detail/config.hpp>
+ 
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+ 
+ #include <boost/asio/detail/noncopyable.hpp>
+ #include <boost/asio/detail/socket_types.hpp>
+@@ -54,6 +54,6 @@ private:
+ 
+ #include <boost/asio/detail/pop_options.hpp>
+ 
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ 
+ #endif // BOOST_ASIO_DETAIL_LOCAL_FREE_ON_BLOCK_EXIT_HPP
+--- boost_1_57_0/boost/asio/detail/null_signal_blocker.hpp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/null_signal_blocker.hpp	2015-05-04 17:33:18.870994900 -0500
+@@ -20,7 +20,6 @@
+ #if !defined(BOOST_ASIO_HAS_THREADS) \
+   || defined(BOOST_ASIO_WINDOWS) \
+   || defined(BOOST_ASIO_WINDOWS_RUNTIME) \
+-  || defined(__CYGWIN__) \
+   || defined(__SYMBIAN32__)
+ 
+ #include <boost/asio/detail/noncopyable.hpp>
+@@ -65,7 +64,6 @@ public:
+ #endif // !defined(BOOST_ASIO_HAS_THREADS)
+        // || defined(BOOST_ASIO_WINDOWS)
+        // || defined(BOOST_ASIO_WINDOWS_RUNTIME)
+-       // || defined(__CYGWIN__)
+        // || defined(__SYMBIAN32__)
+ 
+ #endif // BOOST_ASIO_DETAIL_NULL_SIGNAL_BLOCKER_HPP
+--- boost_1_57_0/boost/asio/detail/old_win_sdk_compat.hpp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/old_win_sdk_compat.hpp	2015-05-04 17:33:18.874495400 -0500
+@@ -17,7 +17,7 @@
+ 
+ #include <boost/asio/detail/config.hpp>
+ 
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+ 
+ // Guess whether we are building against on old Platform SDK.
+ #if !defined(IN6ADDR_ANY_INIT)
+@@ -211,6 +211,6 @@ struct addrinfo_emulation
+ # define IPPROTO_ICMPV6 58
+ #endif
+ 
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ 
+ #endif // BOOST_ASIO_DETAIL_OLD_WIN_SDK_COMPAT_HPP
+--- boost_1_57_0/boost/asio/detail/pipe_select_interrupter.hpp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/pipe_select_interrupter.hpp	2015-05-04 17:33:18.877995800 -0500
+@@ -19,7 +19,6 @@
+ 
+ #if !defined(BOOST_ASIO_WINDOWS)
+ #if !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+-#if !defined(__CYGWIN__)
+ #if !defined(__SYMBIAN32__)
+ #if !defined(BOOST_ASIO_HAS_EVENTFD)
+ 
+@@ -84,7 +83,6 @@ private:
+ 
+ #endif // !defined(BOOST_ASIO_HAS_EVENTFD)
+ #endif // !defined(__SYMBIAN32__)
+-#endif // !defined(__CYGWIN__)
+ #endif // !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+ #endif // !defined(BOOST_ASIO_WINDOWS)
+ 
+--- boost_1_57_0/boost/asio/detail/posix_fd_set_adapter.hpp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/posix_fd_set_adapter.hpp	2015-05-04 17:33:18.881496300 -0500
+@@ -18,7 +18,6 @@
+ #include <boost/asio/detail/config.hpp>
+ 
+ #if !defined(BOOST_ASIO_WINDOWS) \
+-  && !defined(__CYGWIN__) \
+   && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+ 
+ #include <cstring>
+@@ -114,7 +113,6 @@ private:
+ #include <boost/asio/detail/pop_options.hpp>
+ 
+ #endif // !defined(BOOST_ASIO_WINDOWS)
+-       // && !defined(__CYGWIN__)
+        // && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+ 
+ #endif // BOOST_ASIO_DETAIL_POSIX_FD_SET_ADAPTER_HPP
+--- boost_1_57_0/boost/asio/detail/reactive_descriptor_service.hpp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/reactive_descriptor_service.hpp	2015-05-04 17:33:18.886496900 -0500
+@@ -18,8 +18,7 @@
+ #include <boost/asio/detail/config.hpp>
+ 
+ #if !defined(BOOST_ASIO_WINDOWS) \
+-  && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \
+-  && !defined(__CYGWIN__)
++  && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+ 
+ #include <boost/asio/buffer.hpp>
+ #include <boost/asio/io_service.hpp>
+@@ -319,6 +318,5 @@ private:
+ 
+ #endif // !defined(BOOST_ASIO_WINDOWS)
+        //   && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+-       //   && !defined(__CYGWIN__)
+ 
+ #endif // BOOST_ASIO_DETAIL_REACTIVE_DESCRIPTOR_SERVICE_HPP
+--- boost_1_57_0/boost/asio/detail/reactive_serial_port_service.hpp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/reactive_serial_port_service.hpp	2015-05-04 17:33:18.889497300 -0500
+@@ -19,7 +19,7 @@
+ #include <boost/asio/detail/config.hpp>
+ 
+ #if defined(BOOST_ASIO_HAS_SERIAL_PORT)
+-#if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__)
++#if !defined(BOOST_ASIO_WINDOWS)
+ 
+ #include <string>
+ #include <boost/asio/error.hpp>
+@@ -230,7 +230,7 @@ private:
+ # include <boost/asio/detail/impl/reactive_serial_port_service.ipp>
+ #endif // defined(BOOST_ASIO_HEADER_ONLY)
+ 
+-#endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__)
++#endif // !defined(BOOST_ASIO_WINDOWS)
+ #endif // defined(BOOST_ASIO_HAS_SERIAL_PORT)
+ 
+ #endif // BOOST_ASIO_DETAIL_REACTIVE_SERIAL_PORT_SERVICE_HPP
+--- boost_1_57_0/boost/asio/detail/select_interrupter.hpp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/select_interrupter.hpp	2015-05-04 17:33:18.892497700 -0500
+@@ -19,7 +19,7 @@
+ 
+ #if !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+ 
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) || defined(__SYMBIAN32__)
++#if defined(BOOST_ASIO_WINDOWS) || defined(__SYMBIAN32__)
+ # include <boost/asio/detail/socket_select_interrupter.hpp>
+ #elif defined(BOOST_ASIO_HAS_EVENTFD)
+ # include <boost/asio/detail/eventfd_select_interrupter.hpp>
+@@ -31,7 +31,7 @@ namespace boost {
+ namespace asio {
+ namespace detail {
+ 
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) || defined(__SYMBIAN32__)
++#if defined(BOOST_ASIO_WINDOWS) || defined(__SYMBIAN32__)
+ typedef socket_select_interrupter select_interrupter;
+ #elif defined(BOOST_ASIO_HAS_EVENTFD)
+ typedef eventfd_select_interrupter select_interrupter;
+--- boost_1_57_0/boost/asio/detail/select_reactor.hpp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/select_reactor.hpp	2015-05-04 17:33:18.895498100 -0500
+@@ -51,13 +51,13 @@ class select_reactor
+   : public boost::asio::detail::service_base<select_reactor>
+ {
+ public:
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   enum op_types { read_op = 0, write_op = 1, except_op = 2,
+     max_select_ops = 3, connect_op = 3, max_ops = 4 };
+-#else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#else // defined(BOOST_ASIO_WINDOWS)
+   enum op_types { read_op = 0, write_op = 1, except_op = 2,
+     max_select_ops = 3, connect_op = 1, max_ops = 3 };
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ 
+   // Per-descriptor data.
+   struct per_descriptor_data
+--- boost_1_57_0/boost/asio/detail/signal_blocker.hpp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/signal_blocker.hpp	2015-05-04 17:33:18.898498400 -0500
+@@ -19,7 +19,7 @@
+ 
+ #if !defined(BOOST_ASIO_HAS_THREADS) || defined(BOOST_ASIO_WINDOWS) \
+   || defined(BOOST_ASIO_WINDOWS_RUNTIME) \
+-  || defined(__CYGWIN__) || defined(__SYMBIAN32__)
++  || defined(__SYMBIAN32__)
+ # include <boost/asio/detail/null_signal_blocker.hpp>
+ #elif defined(BOOST_ASIO_HAS_PTHREADS)
+ # include <boost/asio/detail/posix_signal_blocker.hpp>
+@@ -33,7 +33,7 @@ namespace detail {
+ 
+ #if !defined(BOOST_ASIO_HAS_THREADS) || defined(BOOST_ASIO_WINDOWS) \
+   || defined(BOOST_ASIO_WINDOWS_RUNTIME) \
+-  || defined(__CYGWIN__) || defined(__SYMBIAN32__)
++  || defined(__SYMBIAN32__)
+ typedef null_signal_blocker signal_blocker;
+ #elif defined(BOOST_ASIO_HAS_PTHREADS)
+ typedef posix_signal_blocker signal_blocker;
+--- boost_1_57_0/boost/asio/detail/signal_init.hpp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/signal_init.hpp	2015-05-04 17:33:18.901998900 -0500
+@@ -17,7 +17,7 @@
+ 
+ #include <boost/asio/detail/config.hpp>
+ 
+-#if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__)
++#if !defined(BOOST_ASIO_WINDOWS)
+ 
+ #include <csignal>
+ 
+@@ -44,6 +44,6 @@ public:
+ 
+ #include <boost/asio/detail/pop_options.hpp>
+ 
+-#endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__)
++#endif // !defined(BOOST_ASIO_WINDOWS)
+ 
+ #endif // BOOST_ASIO_DETAIL_SIGNAL_INIT_HPP
+--- boost_1_57_0/boost/asio/detail/signal_set_service.hpp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/signal_set_service.hpp	2015-05-04 17:33:18.904999300 -0500
+@@ -28,9 +28,9 @@
+ #include <boost/asio/detail/signal_op.hpp>
+ #include <boost/asio/detail/socket_types.hpp>
+ 
+-#if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__)
++#if !defined(BOOST_ASIO_WINDOWS)
+ # include <boost/asio/detail/reactor.hpp>
+-#endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__)
++#endif // !defined(BOOST_ASIO_WINDOWS)
+ 
+ #include <boost/asio/detail/push_options.hpp>
+ 
+@@ -183,8 +183,7 @@ private:
+   io_service_impl& io_service_;
+ 
+ #if !defined(BOOST_ASIO_WINDOWS) \
+-  && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \
+-  && !defined(__CYGWIN__)
++  && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+   // The type used for registering for pipe reactor notifications.
+   class pipe_read_op;
+ 
+@@ -195,7 +194,6 @@ private:
+   reactor::per_descriptor_data reactor_data_;
+ #endif // !defined(BOOST_ASIO_WINDOWS)
+        //   && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+-       //   && !defined(__CYGWIN__)
+ 
+   // A mapping from signal number to the registered signal sets.
+   registration* registrations_[max_signal_number];
+--- boost_1_57_0/boost/asio/detail/socket_ops.hpp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/socket_ops.hpp	2015-05-04 17:33:18.907999600 -0500
+@@ -128,11 +128,11 @@ BOOST_ASIO_DECL size_t available(socket_
+ BOOST_ASIO_DECL int listen(socket_type s,
+     int backlog, boost::system::error_code& ec);
+ 
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+ typedef WSABUF buf;
+-#else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#else // defined(BOOST_ASIO_WINDOWS)
+ typedef iovec buf;
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ 
+ BOOST_ASIO_DECL void init_buf(buf& b, void* data, size_t size);
+ 
+--- boost_1_57_0/boost/asio/detail/socket_select_interrupter.hpp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/socket_select_interrupter.hpp	2015-05-04 17:33:18.912500200 -0500
+@@ -20,7 +20,6 @@
+ #if !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+ 
+ #if defined(BOOST_ASIO_WINDOWS) \
+-  || defined(__CYGWIN__) \
+   || defined(__SYMBIAN32__)
+ 
+ #include <boost/asio/detail/socket_types.hpp>
+@@ -85,7 +84,6 @@ private:
+ #endif // defined(BOOST_ASIO_HEADER_ONLY)
+ 
+ #endif // defined(BOOST_ASIO_WINDOWS)
+-       // || defined(__CYGWIN__)
+        // || defined(__SYMBIAN32__)
+ 
+ #endif // !defined(BOOST_ASIO_WINDOWS_RUNTIME)
+--- boost_1_57_0/boost/asio/detail/socket_types.hpp	2015-05-04 17:16:30.021887400 -0500
++++ boost_1_57_0/boost/asio/detail/socket_types.hpp	2015-05-04 17:33:18.915500600 -0500
+@@ -19,7 +19,7 @@
+ 
+ #if defined(BOOST_ASIO_WINDOWS_RUNTIME)
+ // Empty.
+-#elif defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#elif defined(BOOST_ASIO_WINDOWS)
+ # if defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_)
+ #  error WinSock.h has already been included
+ # endif // defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_)
+@@ -169,7 +169,7 @@ typedef int signed_size_type;
+ # define BOOST_ASIO_OS_DEF_AI_V4MAPPED 0x800
+ # define BOOST_ASIO_OS_DEF_AI_ALL 0x100
+ # define BOOST_ASIO_OS_DEF_AI_ADDRCONFIG 0x400
+-#elif defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#elif defined(BOOST_ASIO_WINDOWS)
+ typedef SOCKET socket_type;
+ const SOCKET invalid_socket = INVALID_SOCKET;
+ const int socket_error_retval = SOCKET_ERROR;
+--- boost_1_57_0/boost/asio/detail/win_fd_set_adapter.hpp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/win_fd_set_adapter.hpp	2015-05-04 17:33:18.919001000 -0500
+@@ -17,7 +17,7 @@
+ 
+ #include <boost/asio/detail/config.hpp>
+ 
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+ 
+ #include <boost/asio/detail/noncopyable.hpp>
+ #include <boost/asio/detail/reactor_op_queue.hpp>
+@@ -146,6 +146,6 @@ private:
+ 
+ #include <boost/asio/detail/pop_options.hpp>
+ 
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ 
+ #endif // BOOST_ASIO_DETAIL_WIN_FD_SET_ADAPTER_HPP
+--- boost_1_57_0/boost/asio/detail/winsock_init.hpp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/detail/winsock_init.hpp	2015-05-04 17:33:18.923501600 -0500
+@@ -17,7 +17,7 @@
+ 
+ #include <boost/asio/detail/config.hpp>
+ 
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+ 
+ #include <boost/asio/detail/push_options.hpp>
+ 
+@@ -125,6 +125,6 @@ static const winsock_init<>& winsock_ini
+ # include <boost/asio/detail/impl/winsock_init.ipp>
+ #endif // defined(BOOST_ASIO_HEADER_ONLY)
+ 
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+ 
+ #endif // BOOST_ASIO_DETAIL_WINSOCK_INIT_HPP
+--- boost_1_57_0/boost/asio/error.hpp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/error.hpp	2015-05-04 17:33:18.926502000 -0500
+@@ -20,7 +20,6 @@
+ #include <boost/system/error_code.hpp>
+ #include <boost/system/system_error.hpp>
+ #if defined(BOOST_ASIO_WINDOWS) \
+-  || defined(__CYGWIN__) \
+   || defined(BOOST_ASIO_WINDOWS_RUNTIME)
+ # include <winerror.h>
+ #else
+@@ -45,7 +44,7 @@
+ # define BOOST_ASIO_NETDB_ERROR(e) __HRESULT_FROM_WIN32(WSA ## e)
+ # define BOOST_ASIO_GETADDRINFO_ERROR(e) __HRESULT_FROM_WIN32(WSA ## e)
+ # define BOOST_ASIO_WIN_OR_POSIX(e_win, e_posix) e_win
+-#elif defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#elif defined(BOOST_ASIO_WINDOWS)
+ # define BOOST_ASIO_NATIVE_ERROR(e) e
+ # define BOOST_ASIO_SOCKET_ERROR(e) WSA ## e
+ # define BOOST_ASIO_NETDB_ERROR(e) WSA ## e
+@@ -225,7 +224,7 @@ inline const boost::system::error_catego
+   return boost::system::system_category();
+ }
+ 
+-#if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__)
++#if !defined(BOOST_ASIO_WINDOWS)
+ 
+ extern BOOST_ASIO_DECL
+ const boost::system::error_category& get_netdb_category();
+@@ -233,7 +232,7 @@ const boost::system::error_category& get
+ extern BOOST_ASIO_DECL
+ const boost::system::error_category& get_addrinfo_category();
+ 
+-#else // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__)
++#else // !defined(BOOST_ASIO_WINDOWS)
+ 
+ inline const boost::system::error_category& get_netdb_category()
+ {
+@@ -245,7 +244,7 @@ inline const boost::system::error_catego
+   return get_system_category();
+ }
+ 
+-#endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__)
++#endif // !defined(BOOST_ASIO_WINDOWS)
+ 
+ extern BOOST_ASIO_DECL
+ const boost::system::error_category& get_misc_category();
+--- boost_1_57_0/boost/asio/impl/error.ipp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/impl/error.ipp	2015-05-04 17:33:18.931002600 -0500
+@@ -25,7 +25,7 @@ namespace boost {
+ namespace asio {
+ namespace error {
+ 
+-#if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__)
++#if !defined(BOOST_ASIO_WINDOWS)
+ 
+ namespace detail {
+ 
+@@ -87,7 +87,7 @@ const boost::system::error_category& get
+   return instance;
+ }
+ 
+-#endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__)
++#endif // !defined(BOOST_ASIO_WINDOWS)
+ 
+ namespace detail {
+ 
+--- boost_1_57_0/boost/asio/impl/serial_port_base.ipp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/impl/serial_port_base.ipp	2015-05-04 17:33:18.936503300 -0500
+@@ -27,7 +27,7 @@
+ 
+ #if defined(GENERATING_DOCUMENTATION)
+ # define BOOST_ASIO_OPTION_STORAGE implementation_defined
+-#elif defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#elif defined(BOOST_ASIO_WINDOWS)
+ # define BOOST_ASIO_OPTION_STORAGE DCB
+ #else
+ # define BOOST_ASIO_OPTION_STORAGE termios
+@@ -41,7 +41,7 @@ namespace asio {
+ boost::system::error_code serial_port_base::baud_rate::store(
+     BOOST_ASIO_OPTION_STORAGE& storage, boost::system::error_code& ec) const
+ {
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   storage.BaudRate = value_;
+ #else
+   speed_t baud;
+@@ -128,7 +128,7 @@ boost::system::error_code serial_port_ba
+ boost::system::error_code serial_port_base::baud_rate::load(
+     const BOOST_ASIO_OPTION_STORAGE& storage, boost::system::error_code& ec)
+ {
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   value_ = storage.BaudRate;
+ #else
+   speed_t baud = ::cfgetospeed(&storage);
+@@ -221,7 +221,7 @@ serial_port_base::flow_control::flow_con
+ boost::system::error_code serial_port_base::flow_control::store(
+     BOOST_ASIO_OPTION_STORAGE& storage, boost::system::error_code& ec) const
+ {
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   storage.fOutxCtsFlow = FALSE;
+   storage.fOutxDsrFlow = FALSE;
+   storage.fTXContinueOnXoff = TRUE;
+@@ -288,7 +288,7 @@ boost::system::error_code serial_port_ba
+ boost::system::error_code serial_port_base::flow_control::load(
+     const BOOST_ASIO_OPTION_STORAGE& storage, boost::system::error_code& ec)
+ {
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   if (storage.fOutX && storage.fInX)
+   {
+     value_ = software;
+@@ -339,7 +339,7 @@ serial_port_base::parity::parity(serial_
+ boost::system::error_code serial_port_base::parity::store(
+     BOOST_ASIO_OPTION_STORAGE& storage, boost::system::error_code& ec) const
+ {
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   switch (value_)
+   {
+   case none:
+@@ -386,7 +386,7 @@ boost::system::error_code serial_port_ba
+ boost::system::error_code serial_port_base::parity::load(
+     const BOOST_ASIO_OPTION_STORAGE& storage, boost::system::error_code& ec)
+ {
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   if (storage.Parity == EVENPARITY)
+   {
+     value_ = even;
+@@ -434,7 +434,7 @@ serial_port_base::stop_bits::stop_bits(
+ boost::system::error_code serial_port_base::stop_bits::store(
+     BOOST_ASIO_OPTION_STORAGE& storage, boost::system::error_code& ec) const
+ {
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   switch (value_)
+   {
+   case one:
+@@ -470,7 +470,7 @@ boost::system::error_code serial_port_ba
+ boost::system::error_code serial_port_base::stop_bits::load(
+     const BOOST_ASIO_OPTION_STORAGE& storage, boost::system::error_code& ec)
+ {
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   if (storage.StopBits == ONESTOPBIT)
+   {
+     value_ = one;
+@@ -507,7 +507,7 @@ serial_port_base::character_size::charac
+ boost::system::error_code serial_port_base::character_size::store(
+     BOOST_ASIO_OPTION_STORAGE& storage, boost::system::error_code& ec) const
+ {
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   storage.ByteSize = value_;
+ #else
+   storage.c_cflag &= ~CSIZE;
+@@ -527,7 +527,7 @@ boost::system::error_code serial_port_ba
+ boost::system::error_code serial_port_base::character_size::load(
+     const BOOST_ASIO_OPTION_STORAGE& storage, boost::system::error_code& ec)
+ {
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   value_ = storage.ByteSize;
+ #else
+   if ((storage.c_cflag & CSIZE) == CS5) { value_ = 5; }
+--- boost_1_57_0/boost/asio/io_service.hpp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/io_service.hpp	2015-05-04 17:33:18.940003700 -0500
+@@ -24,7 +24,7 @@
+ #include <boost/asio/detail/wrapped_handler.hpp>
+ #include <boost/system/error_code.hpp>
+ 
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+ # include <boost/asio/detail/winsock_init.hpp>
+ #elif defined(__sun) || defined(__QNX__) || defined(__hpux) || defined(_AIX) \
+   || defined(__osf__)
+@@ -600,7 +600,7 @@ public:
+   friend bool has_service(io_service& ios);
+ 
+ private:
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+   detail::winsock_init<> init_;
+ #elif defined(__sun) || defined(__QNX__) || defined(__hpux) || defined(_AIX) \
+   || defined(__osf__)
+--- boost_1_57_0/boost/asio/serial_port_base.hpp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/serial_port_base.hpp	2015-05-04 17:33:18.943004100 -0500
+@@ -21,16 +21,16 @@
+ #if defined(BOOST_ASIO_HAS_SERIAL_PORT) \
+   || defined(GENERATING_DOCUMENTATION)
+ 
+-#if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__)
++#if !defined(BOOST_ASIO_WINDOWS)
+ # include <termios.h>
+-#endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__)
++#endif // !defined(BOOST_ASIO_WINDOWS)
+ 
+ #include <boost/asio/detail/socket_types.hpp>
+ #include <boost/system/error_code.hpp>
+ 
+ #if defined(GENERATING_DOCUMENTATION)
+ # define BOOST_ASIO_OPTION_STORAGE implementation_defined
+-#elif defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#elif defined(BOOST_ASIO_WINDOWS)
+ # define BOOST_ASIO_OPTION_STORAGE DCB
+ #else
+ # define BOOST_ASIO_OPTION_STORAGE termios
+--- boost_1_57_0/boost/asio/ssl/detail/impl/openssl_init.ipp	2014-10-17 17:49:08.000000000 -0500
++++ boost_1_57_0/boost/asio/ssl/detail/impl/openssl_init.ipp	2015-05-04 17:33:18.946504500 -0500
+@@ -85,15 +85,15 @@ public:
+ private:
+   static unsigned long openssl_id_func()
+   {
+-#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_ASIO_WINDOWS)
+     return ::GetCurrentThreadId();
+-#else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#else // defined(BOOST_ASIO_WINDOWS)
+     void* id = instance()->thread_id_;
+     if (id == 0)
+       instance()->thread_id_ = id = &id; // Ugh.
+     BOOST_ASIO_ASSERT(sizeof(unsigned long) >= sizeof(void*));
+     return reinterpret_cast<unsigned long>(id);
+-#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_ASIO_WINDOWS)
+   }
+ 
+   static void openssl_locking_func(int mode, int n, 
+@@ -109,10 +109,10 @@ private:
+   std::vector<boost::asio::detail::shared_ptr<
+         boost::asio::detail::mutex> > mutexes_;
+ 
+-#if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__)
++#if !defined(BOOST_ASIO_WINDOWS)
+   // The thread identifiers to be used by openssl.
+   boost::asio::detail::tss_ptr<void> thread_id_;
+-#endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__)
++#endif // !defined(BOOST_ASIO_WINDOWS)
+ 
+ #if !defined(SSL_OP_NO_COMPRESSION) \
+   && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
diff --git a/nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-config-cygwin.patch b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-config-cygwin.patch
new file mode 100644
index 000000000000..97acc72689d2
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-config-cygwin.patch
@@ -0,0 +1,76 @@
+--- boost_1_57_0/boost/config/platform/cygwin.hpp	2015-05-04 18:02:21.742811600 -0500
++++ boost_1_57_0/boost/config/platform/cygwin.hpp	2015-05-04 17:16:30.183407900 -0500
+@@ -39,18 +39,8 @@
+ #define BOOST_HAS_STDINT_H
+ #endif
+ 
+-/// Cygwin has no fenv.h
+-#define BOOST_NO_FENV_H
+-
+ // boilerplate code:
+ #include <boost/config/posix_features.hpp>
+-
+-//
+-// Cygwin lies about XSI conformance, there is no nl_types.h:
+-//
+-#ifdef BOOST_HAS_NL_TYPES_H
+-#  undef BOOST_HAS_NL_TYPES_H
+-#endif
+  
+ 
+ 
+--- boost_1_57_0/boost/config/stdlib/libstdcpp3.hpp	2014-10-26 07:36:42.000000000 -0500
++++ boost_1_57_0/boost/config/stdlib/libstdcpp3.hpp	2015-05-04 17:54:44.835791700 -0500
+@@ -68,7 +68,7 @@
+ #endif
+ 
+ // Apple doesn't seem to reliably defined a *unix* macro
+-#if !defined(CYGWIN) && (  defined(__unix__)  \
++#if (  defined(__unix__)  \
+                         || defined(__unix)    \
+                         || defined(unix)      \
+                         || defined(__APPLE__) \
+--- boost_1_57_0/boost/config/stdlib/sgi.hpp	2014-10-26 07:36:42.000000000 -0500
++++ boost_1_57_0/boost/config/stdlib/sgi.hpp	2015-05-04 17:54:52.911817300 -0500
+@@ -41,7 +41,7 @@
+ #endif
+ 
+ // Apple doesn't seem to reliably defined a *unix* macro
+-#if !defined(CYGWIN) && (  defined(__unix__)  \
++#if (  defined(__unix__)  \
+                         || defined(__unix)    \
+                         || defined(unix)      \
+                         || defined(__APPLE__) \
+--- boost_1_57_0/boost/config/stdlib/stlport.hpp	2014-10-26 07:36:42.000000000 -0500
++++ boost_1_57_0/boost/config/stdlib/stlport.hpp	2015-05-04 17:55:00.621796300 -0500
+@@ -17,7 +17,7 @@
+ #endif
+ 
+ // Apple doesn't seem to reliably defined a *unix* macro
+-#if !defined(CYGWIN) && (  defined(__unix__)  \
++#if (  defined(__unix__)  \
+                         || defined(__unix)    \
+                         || defined(unix)      \
+                         || defined(__APPLE__) \
+--- boost_1_57_0/boost/config/stdlib/vacpp.hpp	2014-10-26 07:36:42.000000000 -0500
++++ boost_1_57_0/boost/config/stdlib/vacpp.hpp	2015-05-04 17:55:07.424660200 -0500
+@@ -13,7 +13,7 @@
+ #define BOOST_NO_STD_MESSAGES
+ 
+ // Apple doesn't seem to reliably defined a *unix* macro
+-#if !defined(CYGWIN) && (  defined(__unix__)  \
++#if (  defined(__unix__)  \
+                         || defined(__unix)    \
+                         || defined(unix)      \
+                         || defined(__APPLE__) \
+--- boost_1_57_0/boost/predef/os/cygwin.h	2014-07-10 08:53:53.000000000 -0500
++++ boost_1_57_0/boost/predef/os/cygwin.h	2015-05-04 17:57:31.634472500 -0500
+@@ -29,7 +29,7 @@ http://www.boost.org/LICENSE_1_0.txt)
+     defined(__CYGWIN__) \
+     )
+ #   undef BOOST_OS_CYGWIN
+-#   define BOOST_OS_CGYWIN BOOST_VERSION_NUMBER_AVAILABLE
++#   define BOOST_OS_CYGWIN BOOST_VERSION_NUMBER_AVAILABLE
+ #endif
+ 
+ #if BOOST_OS_CYGWIN
diff --git a/nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-context-cygwin.patch b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-context-cygwin.patch
new file mode 100644
index 000000000000..3d9726179be6
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-context-cygwin.patch
@@ -0,0 +1,600 @@
+--- boost_1_57_0/libs/context/build/Jamfile.v2	2014-10-20 01:26:00.000000000 -0500
++++ boost_1_57_0/libs/context/build/Jamfile.v2	2015-05-04 17:43:10.812161900 -0500
+@@ -29,6 +29,7 @@ local rule default_binary_format ( )
+     local tmp = elf ;
+     if [ os.name ] = "MACOSX" { tmp = mach-o ; }
+     if [ os.name ] = "NT" { tmp = pe ; }
++    if [ os.name ] = "CYGWIN" { tmp = pe ; }
+     if [ os.name ] = "AIX" { tmp = xcoff ; }
+     return $(tmp) ;
+ }
+@@ -581,6 +582,16 @@ alias asm_context_sources
+    ;
+ 
+ alias asm_context_sources
++   : asm/make_i386_ms_pe_gas.S
++     asm/jump_i386_ms_pe_gas.S
++     dummy.cpp
++   : <address-model>32
++     <architecture>x86
++     <binary-format>pe
++     <toolset>gcc
++   ;
++
++alias asm_context_sources
+    : asm/make_i386_ms_pe_masm.asm
+      asm/jump_i386_ms_pe_masm.asm
+      dummy.cpp
+@@ -715,6 +726,16 @@ alias asm_context_sources
+    ;
+ 
+ alias asm_context_sources
++   : asm/make_x86_64_ms_pe_gas.S
++     asm/jump_x86_64_ms_pe_gas.S
++     dummy.cpp
++   : <address-model>64
++     <architecture>x86
++     <binary-format>pe
++     <toolset>gcc
++   ;
++
++alias asm_context_sources
+    : asm/make_x86_64_ms_pe_masm.asm
+      asm/jump_x86_64_ms_pe_masm.asm
+      dummy.cpp
+--- boost_1_57_0/libs/context/src/asm/jump_i386_ms_pe_gas.S	1969-12-31 18:00:00.000000000 -0600
++++ boost_1_57_0/libs/context/src/asm/jump_i386_ms_pe_gas.S	2015-05-04 17:43:10.821663100 -0500
+@@ -0,0 +1,108 @@
++/*
++            Copyright Oliver Kowalke 2009.
++            Copyright Thomas Sailer 2013.
++   Distributed under the Boost Software License, Version 1.0.
++      (See accompanying file LICENSE_1_0.txt or copy at
++            http://www.boost.org/LICENSE_1_0.txt)
++*/
++
++/********************************************************************
++ *                                                                  *
++ *  --------------------------------------------------------------  *
++ *  |    0    |    1    |    2    |    3    |    4     |    5    |  *
++ *  --------------------------------------------------------------  *
++ *  |    0h   |   04h   |   08h   |   0ch   |   010h   |   014h  |  *
++ *  --------------------------------------------------------------  *
++ *  |   EDI   |   ESI   |   EBX   |   EBP   |   ESP    |   EIP   |  *
++ *  --------------------------------------------------------------  *
++ *  --------------------------------------------------------------  *
++ *  |    6    |    7    |    8    |                              |  *
++ *  --------------------------------------------------------------  *
++ *  |   018h  |   01ch  |   020h  |                              |  *
++ *  --------------------------------------------------------------  *
++ *  |    sp   |   size  |  limit  |                              |  *
++ *  --------------------------------------------------------------  *
++ *  --------------------------------------------------------------  *
++ *  |    9    |                                                  |  *
++ *  --------------------------------------------------------------  *
++ *  |  024h   |                                                  |  *
++ *  --------------------------------------------------------------  *
++ *  |fc_execpt|                                                  |  *
++ *  --------------------------------------------------------------  *
++ *  --------------------------------------------------------------  *
++ *  |   10    |                                                  |  *
++ *  --------------------------------------------------------------  *
++ *  |  028h   |                                                  |  *
++ *  --------------------------------------------------------------  *
++ *  |fc_strage|                                                  |  *
++ *  --------------------------------------------------------------  *
++ *  --------------------------------------------------------------  *
++ *  |   11    |    12   |                                        |  *
++ *  --------------------------------------------------------------  *
++ *  |  02ch   |   030h  |                                        |  *
++ *  --------------------------------------------------------------  *
++ *  | fc_mxcsr|fc_x87_cw|                                        |  *
++ *  --------------------------------------------------------------  *
++ *                                                                  *
++ * *****************************************************************/
++
++.file	"jump_i386_ms_pe_gas.S"
++.text
++.p2align 4,,15
++.globl	_jump_fcontext
++.def	_jump_fcontext;	.scl	2;	.type	32;	.endef
++_jump_fcontext:
++    movl    0x04(%esp), %ecx        /* load address of the first fcontext_t arg */
++    movl    %edi,       (%ecx)      /* save EDI */
++    movl    %esi,       0x04(%ecx)  /* save ESI */
++    movl    %ebx,       0x08(%ecx)  /* save EBX */
++    movl    %ebp,       0x0c(%ecx)  /* save EBP */
++
++    movl    %fs:(0x18), %edx        /* load NT_TIB */
++    movl    (%edx),     %eax        /* load current SEH exception list */
++    movl    %eax,       0x24(%ecx)  /* save current exception list */
++    movl    0x04(%edx), %eax        /* load current stack base */
++    movl    %eax,       0x18(%ecx)  /* save current stack base */
++    movl    0x08(%edx), %eax        /* load current stack limit */
++    movl    %eax,       0x20(%ecx)  /* save current stack limit */
++    movl    0x10(%edx), %eax        /* load fiber local storage */
++    movl    %eax,       0x28(%ecx)  /* save fiber local storage */
++
++    leal    0x04(%esp), %eax        /* exclude the return address */
++    movl    %eax,       0x10(%ecx)  /* save as stack pointer */
++    movl    (%esp),     %eax        /* load return address */
++    movl    %eax,       0x14(%ecx)  /* save return address */
++
++    movl    0x08(%esp), %edx        /* load address of the second fcontext_t arg */
++    movl    (%edx),     %edi        /* restore EDI */
++    movl    0x04(%edx), %esi        /* restore ESI */
++    movl    0x08(%edx), %ebx        /* restore EBX */
++    movl    0x0c(%edx), %ebp        /* restore EBP */
++
++    movl    0x10(%esp), %eax        /* check if fpu enve preserving was requested */
++    testl   %eax,       %eax 
++    je      1f
++
++    stmxcsr 0x2c(%ecx)              /* save MMX control word */
++    fnstcw  0x30(%ecx)              /* save x87 control word */
++    ldmxcsr 0x2c(%edx)              /* restore MMX control word */
++    fldcw   0x30(%edx)              /* restore x87 control word */
++1:
++    movl    %edx,       %ecx        
++    movl    %fs:(0x18), %edx        /* load NT_TIB */
++    movl    0x24(%ecx), %eax        /* load SEH exception list */
++    movl    %eax,       (%edx)      /* restore next SEH item */
++    movl    0x18(%ecx), %eax        /* load stack base */
++    movl    %eax,       0x04(%edx)  /* restore stack base */
++    movl    0x20(%ecx), %eax        /* load stack limit */
++    movl    %eax,       0x08(%edx)  /* restore stack limit */
++    movl    0x28(%ecx), %eax        /* load fiber local storage */
++    movl    %eax,       0x10(%edx)  /* restore fiber local storage */
++			            
++    movl    0x0c(%esp), %eax        /* use third arg as return value after jump */
++			            
++    movl    0x10(%ecx), %esp        /* restore ESP */
++    movl    %eax,       0x04(%esp)  /* use third arg as first arg in context function */
++    movl    0x14(%ecx), %ecx        /* fetch the address to return to */
++
++    jmp     *%ecx                   /* indirect jump to context */
+--- boost_1_57_0/libs/context/src/asm/jump_x86_64_ms_pe_gas.S	1969-12-31 18:00:00.000000000 -0600
++++ boost_1_57_0/libs/context/src/asm/jump_x86_64_ms_pe_gas.S	2015-05-04 17:43:10.829664200 -0500
+@@ -0,0 +1,189 @@
++/*
++            Copyright Oliver Kowalke 2009.
++            Copyright Thomas Sailer 2013.
++   Distributed under the Boost Software License, Version 1.0.
++      (See accompanying file LICENSE_1_0.txt or copy at
++            http://www.boost.org/LICENSE_1_0.txt)
++*/
++
++/****************************************************************************************
++ *                                                                                      *
++ *  ----------------------------------------------------------------------------------  *
++ *  |    0    |    1    |    2    |    3    |    4     |    5    |    6    |    7    |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |   0x0   |   0x4   |   0x8   |   0xc   |   0x10   |   0x14  |   0x18  |   0x1c  |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |        R12        |         R13       |         R14        |        R15        |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |    8    |    9    |   10    |   11    |    12    |    13   |    14   |    15   |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |   0x20  |   0x24  |   0x28  |  0x2c   |   0x30   |   0x34  |   0x38  |   0x3c  |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |        RDI        |        RSI        |         RBX        |        RBP        |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |    16   |    17   |    18   |    19   |                                        |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |   0x40  |   0x44  |   0x48  |   0x4c  |                                        |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |        RSP        |        RIP        |                                        |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |    20   |    21   |    22   |    23   |    24    |    25   |                   |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |   0x50  |   0x54  |   0x58  |   0x5c  |   0x60   |   0x64  |                   |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |        sp         |       size        |        limit       |                   |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |    26   |   27    |                                                            |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |   0x68  |   0x6c  |                                                            |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |      fbr_strg     |                                                            |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |    28   |   29    |    30   |    31   |    32    |    33   |   34    |   35    |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |   0x70  |   0x74  |   0x78  |   0x7c  |   0x80   |   0x84  |  0x88   |  0x8c   |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  | fc_mxcsr|fc_x87_cw|      fc_xmm       |      SEE registers (XMM6-XMM15)        |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |   36    |    37   |    38   |    39   |    40    |    41   |   42    |   43    |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |  0x90   |   0x94  |   0x98  |   0x9c  |   0xa0   |   0xa4  |  0xa8   |  0xac   |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |                          SEE registers (XMM6-XMM15)                            |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |    44    |   45    |    46   |    47  |    48    |    49   |   50    |   51    |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |   0xb0   |  0xb4   |  0xb8   |  0xbc  |   0xc0   |   0xc4  |  0xc8   |  0xcc   |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |                          SEE registers (XMM6-XMM15)                            |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |    52    |   53    |    54   |   55   |    56    |    57   |   58    |   59    |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |   0xd0   |  0xd4   |   0xd8  |  0xdc  |   0xe0   |  0xe4   |  0xe8   |  0xec   |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |                          SEE registers (XMM6-XMM15)                            |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |    60   |    61   |    62    |    63  |    64    |    65   |   66    |   67    |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |  0xf0   |  0xf4   |   0xf8   |  0xfc  |   0x100  |  0x104  |  0x108  |  0x10c  |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |                          SEE registers (XMM6-XMM15)                            |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |    68   |    69   |    70    |    71  |    72    |    73   |   74    |   75    |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |  0x110  |  0x114  |   0x118  |  0x11c |   0x120  |  0x124  |  0x128  |  0x12c  |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |                          SEE registers (XMM6-XMM15)                            |  *
++ *  ----------------------------------------------------------------------------------  *
++ *                                                                                      *
++ * *************************************************************************************/
++
++.file	"jump_x86_64_ms_pe_gas.S"
++.text
++.p2align 4,,15
++.globl	jump_fcontext
++.def	jump_fcontext;	.scl	2;	.type	32;	.endef
++.seh_proc	jump_fcontext
++jump_fcontext:
++.seh_endprologue
++    movq    %r12,       (%rcx)      /* save R12 */
++    movq    %r13,       0x08(%rcx)  /* save R13 */
++    movq    %r14,       0x10(%rcx)  /* save R14 */
++    movq    %r15,       0x18(%rcx)  /* save R15 */
++    movq    %rdi,       0x20(%rcx)  /* save RDI */
++    movq    %rsi,       0x28(%rcx)  /* save RSI */
++    movq    %rbx,       0x30(%rcx)  /* save RBX */
++    movq    %rbp,       0x38(%rcx)  /* save RBP */
++
++    movq    %gs:(0x30), %r10        /* load NT_TIB */
++    movq    0x08(%r10), %rax        /* load current stack base */
++    movq    %rax,       0x50(%rcx)  /* save current stack base */
++    movq    0x10(%r10), %rax        /* load current stack limit */
++    movq    %rax,       0x60(%rcx)  /* save current stack limit */
++    movq    0x18(%r10), %rax        /* load fiber local storage */
++    movq    %rax,       0x68(%rcx)  /* save fiber local storage */
++
++    testq   %r9,        %r9
++    je      1f
++
++    stmxcsr 0x70(%rcx)              /* save MMX control and status word */
++    fnstcw  0x74(%rcx)              /* save x87 control word */
++    /* save XMM storage */
++    /* save start address of SSE register block in R10 */
++    leaq    0x90(%rcx), %r10
++    /* shift address in R10 to lower 16 byte boundary */
++    /* == pointer to SEE register block */
++    andq    $-16,       %r10
++
++    movaps  %xmm6,      (%r10)
++    movaps  %xmm7,      0x10(%r10)
++    movaps  %xmm8,      0x20(%r10)
++    movaps  %xmm9,      0x30(%r10)
++    movaps  %xmm10,     0x40(%r10)
++    movaps  %xmm11,     0x50(%r10)
++    movaps  %xmm12,     0x60(%r10)
++    movaps  %xmm13,     0x70(%r10)
++    movaps  %xmm14,     0x80(%r10)
++    movaps  %xmm15,     0x90(%r10)
++
++    ldmxcsr 0x70(%rdx)              /* restore MMX control and status word */
++    fldcw   0x74(%rdx)              /* restore x87 control word */
++    /* restore XMM storage */
++	/* save start address of SSE register block in R10 */
++    leaq    0x90(%rdx), %r10
++    /* shift address in R10 to lower 16 byte boundary */
++    /* == pointer to SEE register block */
++    andq    $-16,       %r10
++
++    movaps  (%r10),     %xmm6
++    movaps  0x10(%r10), %xmm7
++    movaps  0x20(%r10), %xmm8
++    movaps  0x30(%r10), %xmm9
++    movaps  0x40(%r10), %xmm10
++    movaps  0x50(%r10), %xmm11
++    movaps  0x60(%r10), %xmm12
++    movaps  0x70(%r10), %xmm13
++    movaps  0x80(%r10), %xmm14
++    movaps  0x90(%r10), %xmm15
++
++1:
++    leaq    0x08(%rsp), %rax        /* exclude the return address */
++    movq    %rax,       0x40(%rcx)  /* save as stack pointer */
++    movq    (%rsp),     %rax        /* load return address */
++    movq    %rax,       0x48(%rcx)  /* save return address */
++
++    movq    (%rdx),     %r12        /* restore R12 */
++    movq    0x08(%rdx), %r13        /* restore R13 */
++    movq    0x10(%rdx), %r14        /* restore R14 */
++    movq    0x18(%rdx), %r15        /* restore R15 */
++    movq    0x20(%rdx), %rdi        /* restore RDI */
++    movq    0x28(%rdx), %rsi        /* restore RSI */
++    movq    0x30(%rdx), %rbx        /* restore RBX */
++    movq    0x38(%rdx), %rbp        /* restore RBP */
++
++    movq    %gs:(0x30), %r10        /* load NT_TIB */
++    movq    0x50(%rdx), %rax        /* load stack base */
++    movq    %rax,       0x08(%r10)  /* restore stack base */
++    movq    0x60(%rdx), %rax        /* load stack limit */
++    movq    %rax,       0x10(%r10)  /* restore stack limit */
++    movq    0x68(%rdx), %rax        /* load fiber local storage */
++    movq    %rax,       0x18(%r10)  /* restore fiber local storage */
++
++    movq    0x40(%rdx), %rsp        /* restore RSP */
++    movq    0x48(%rdx), %r10        /* fetch the address to returned to */
++
++    movq    %r8,        %rax        /* use third arg as return value after jump */
++    movq    %r8,        %rcx        /* use third arg as first arg in context function */
++
++    jmp     *%r10                   /* indirect jump to caller */
++.seh_endproc
+--- boost_1_57_0/libs/context/src/asm/make_i386_ms_pe_gas.S	1969-12-31 18:00:00.000000000 -0600
++++ boost_1_57_0/libs/context/src/asm/make_i386_ms_pe_gas.S	2015-05-04 17:43:10.836165000 -0500
+@@ -0,0 +1,115 @@
++/*
++            Copyright Oliver Kowalke 2009.
++            Copyright Thomas Sailer 2013.
++   Distributed under the Boost Software License, Version 1.0.
++      (See accompanying file LICENSE_1_0.txt or copy at
++            http://www.boost.org/LICENSE_1_0.txt)
++*/
++
++/********************************************************************
++ *                                                                  *
++ *  --------------------------------------------------------------  *
++ *  |    0    |    1    |    2    |    3    |    4     |    5    |  *
++ *  --------------------------------------------------------------  *
++ *  |    0h   |   04h   |   08h   |   0ch   |   010h   |   014h  |  *
++ *  --------------------------------------------------------------  *
++ *  |   EDI   |   ESI   |   EBX   |   EBP   |   ESP    |   EIP   |  *
++ *  --------------------------------------------------------------  *
++ *  --------------------------------------------------------------  *
++ *  |    6    |    7    |    8    |                              |  *
++ *  --------------------------------------------------------------  *
++ *  |   018h  |   01ch  |   020h  |                              |  *
++ *  --------------------------------------------------------------  *
++ *  |    sp   |   size  |  limit  |                              |  *
++ *  --------------------------------------------------------------  *
++ *  --------------------------------------------------------------  *
++ *  |    9    |                                                  |  *
++ *  --------------------------------------------------------------  *
++ *  |  024h   |                                                  |  *
++ *  --------------------------------------------------------------  *
++ *  |fc_execpt|                                                  |  *
++ *  --------------------------------------------------------------  *
++ *  --------------------------------------------------------------  *
++ *  |   10    |                                                  |  *
++ *  --------------------------------------------------------------  *
++ *  |  028h   |                                                  |  *
++ *  --------------------------------------------------------------  *
++ *  |fc_strage|                                                  |  *
++ *  --------------------------------------------------------------  *
++ *  --------------------------------------------------------------  *
++ *  |   11    |    12   |                                        |  *
++ *  --------------------------------------------------------------  *
++ *  |  02ch   |   030h  |                                        |  *
++ *  --------------------------------------------------------------  *
++ *  | fc_mxcsr|fc_x87_cw|                                        |  *
++ *  --------------------------------------------------------------  *
++ *                                                                  *
++ * *****************************************************************/
++
++.file	"make_i386_ms_pe_gas.S"
++.text
++.p2align 4,,15
++.globl	_make_fcontext
++.def	_make_fcontext;	.scl	2;	.type	32;	.endef
++_make_fcontext:
++    movl    0x04(%esp), %eax        /* load 1. arg of make_fcontext, pointer to context stack (base) */
++    leal    -0x34(%eax),%eax        /* reserve space for fcontext_t at top of context stack */
++
++    /* shift address in EAX to lower 16 byte boundary */
++    /* == pointer to fcontext_t and address of context stack */
++    andl    $-16,       %eax
++
++    movl    0x04(%esp), %ecx        /* load 1. arg of make_fcontext, pointer to context stack (base) */
++    movl    %ecx,       0x18(%eax)  /* save address of context stack (base) in fcontext_t */
++    movl    0x08(%esp), %edx        /* load 2. arg of make_fcontext, context stack size */
++    movl    %edx,       0x1c(%eax)  /* save context stack size in fcontext_t */
++    negl    %edx                    /* negate stack size for LEA instruction (== substraction) */
++    leal    (%ecx,%edx),%ecx        /* compute bottom address of context stack (limit) */
++    movl    %ecx,       0x20(%eax)  /* save address of context stack (limit) in fcontext_t */
++    movl    0x0c(%esp), %ecx        /* load 3. arg of make_fcontext, pointer to context function */
++    movl    %ecx,       0x14(%eax)  /* save address of context function in fcontext_t */
++
++    stmxcsr 0x02c(%eax)             /* save MMX control word */
++    fnstcw  0x030(%eax)             /* save x87 control word */
++
++    leal    -0x1c(%eax),%edx        /* reserve space for last frame and seh on context stack, (ESP - 0x4) % 16 == 0 */
++    movl    %edx,       0x10(%eax)  /* save address in EDX as stack pointer for context function */
++
++    movl    $finish,    %ecx        /* abs address of finish */
++    movl    %ecx,       (%edx)      /* save address of finish as return address for context function */
++                                    /* entered after context function returns */
++
++    /* traverse current seh chain to get the last exception handler installed by Windows */
++    /* note that on Windows Server 2008 and 2008 R2, SEHOP is activated by default */
++    /* the exception handler chain is tested for the presence of ntdll.dll!FinalExceptionHandler */
++    /* at its end by RaiseException all seh andlers are disregarded if not present and the */
++    /* program is aborted */
++    movl    %fs:(0x18), %ecx        /* load NT_TIB into ECX */
++
++walk:
++    movl    (%ecx),     %edx        /* load 'next' member of current SEH into EDX */
++    incl    %edx                    /* test if 'next' of current SEH is last (== 0xffffffff) */
++    jz      found
++    decl    %edx
++    xchgl    %ecx,      %edx        /* exchange content; ECX contains address of next SEH */
++    jmp     walk                    /* inspect next SEH */
++
++found:
++    movl    0x04(%ecx), %ecx        /* load 'handler' member of SEH == address of last SEH handler installed by Windows */
++    movl    0x10(%eax), %edx        /* load address of stack pointer for context function */
++    movl    %ecx,       0x18(%edx)  /* save address in ECX as SEH handler for context */
++    movl    $0xffffffff,%ecx        /* set ECX to -1 */
++    movl    %ecx,       0x14(%edx)  /* save ECX as next SEH item */
++    leal    0x14(%edx), %ecx        /* load address of next SEH item */
++    movl    %ecx,       0x24(%eax)  /* save next SEH */
++
++    ret
++
++finish:
++    /* ESP points to same address as ESP on entry of context function + 0x4 */
++    xorl    %eax,       %eax
++    movl    %eax,       (%esp)      /* exit code is zero */
++    call    __exit                  /* exit application */
++    hlt
++
++.def	__exit;	.scl	2;	.type	32;	.endef  /* standard C library function */
+--- boost_1_57_0/libs/context/src/asm/make_x86_64_ms_pe_gas.S	1969-12-31 18:00:00.000000000 -0600
++++ boost_1_57_0/libs/context/src/asm/make_x86_64_ms_pe_gas.S	2015-05-04 17:43:10.843165900 -0500
+@@ -0,0 +1,132 @@
++/*
++            Copyright Oliver Kowalke 2009.
++            Copyright Thomas Sailer 2013.
++   Distributed under the Boost Software License, Version 1.0.
++      (See accompanying file LICENSE_1_0.txt or copy at
++            http://www.boost.org/LICENSE_1_0.txt)
++*/
++
++/****************************************************************************************
++ *                                                                                      *
++ *  ----------------------------------------------------------------------------------  *
++ *  |    0    |    1    |    2    |    3    |    4     |    5    |    6    |    7    |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |   0x0   |   0x4   |   0x8   |   0xc   |   0x10   |   0x14  |   0x18  |   0x1c  |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |        R12        |         R13       |         R14        |        R15        |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |    8    |    9    |   10    |   11    |    12    |    13   |    14   |    15   |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |   0x20  |   0x24  |   0x28  |  0x2c   |   0x30   |   0x34  |   0x38  |   0x3c  |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |        RDI        |        RSI        |         RBX        |        RBP        |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |    16   |    17   |    18   |    19   |                                        |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |   0x40  |   0x44  |   0x48  |   0x4c  |                                        |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |        RSP        |        RIP        |                                        |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |    20   |    21   |    22   |    23   |    24    |    25   |                   |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |   0x50  |   0x54  |   0x58  |   0x5c  |   0x60   |   0x64  |                   |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |        sp         |       size        |        limit       |                   |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |    26   |   27    |                                                            |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |   0x68  |   0x6c  |                                                            |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |      fbr_strg     |                                                            |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |    28   |   29    |    30   |    31   |    32    |    33   |   34    |   35    |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |   0x70  |   0x74  |   0x78  |   0x7c  |   0x80   |   0x84  |  0x88   |  0x8c   |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  | fc_mxcsr|fc_x87_cw|      fc_xmm       |      SEE registers (XMM6-XMM15)        |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |   36    |    37   |    38   |    39   |    40    |    41   |   42    |   43    |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |  0x90   |   0x94  |   0x98  |   0x9c  |   0xa0   |   0xa4  |  0xa8   |  0xac   |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |                          SEE registers (XMM6-XMM15)                            |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |    44    |   45    |    46   |    47  |    48    |    49   |   50    |   51    |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |   0xb0   |  0xb4   |  0xb8   |  0xbc  |   0xc0   |   0xc4  |  0xc8   |  0xcc   |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |                          SEE registers (XMM6-XMM15)                            |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |    52    |   53    |    54   |   55   |    56    |    57   |   58    |   59    |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |   0xd0   |  0xd4   |   0xd8  |  0xdc  |   0xe0   |  0xe4   |  0xe8   |  0xec   |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |                          SEE registers (XMM6-XMM15)                            |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |    60   |    61   |    62    |    63  |    64    |    65   |   66    |   67    |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |  0xf0   |  0xf4   |   0xf8   |  0xfc  |   0x100  |  0x104  |  0x108  |  0x10c  |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |                          SEE registers (XMM6-XMM15)                            |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |    68   |    69   |    70    |    71  |    72    |    73   |   74    |   75    |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |  0x110  |  0x114  |   0x118  |  0x11c |   0x120  |  0x124  |  0x128  |  0x12c  |  *
++ *  ----------------------------------------------------------------------------------  *
++ *  |                          SEE registers (XMM6-XMM15)                            |  *
++ *  ----------------------------------------------------------------------------------  *
++ *                                                                                      *
++ * *************************************************************************************/
++
++.file	"make_x86_64_ms_pe_gas.S"
++.text
++.p2align 4,,15
++.globl	make_fcontext
++.def	make_fcontext;	.scl	2;	.type	32;	.endef
++.seh_proc	make_fcontext
++make_fcontext:
++.seh_endprologue
++    leaq    -0x130(%rcx),%rax       /* reserve space for fcontext_t at top of context stack */
++
++    /* shift address in RAX to lower 16 byte boundary */
++    /* == pointer to fcontext_t and address of context stack */
++    andq    $-16,       %rax
++
++    movq    %r8,        0x48(%rax)  /* save address of context function in fcontext_t */
++    movq    %rdx,       0x58(%rax)  /* save context stack size in fcontext_t */
++    movq    %rcx,       0x50(%rax)  /* save address of context stack pointer (base) in fcontext_t */
++
++    negq    %rdx                    /* negate stack size for LEA instruction (== substraction) */
++    leaq    (%rcx,%rdx),%rcx        /* compute bottom address of context stack (limit) */
++    movq    %rcx,       0x60(%rax)  /* save bottom address of context stack (limit) in fcontext_t */
++
++    stmxcsr 0x70(%rax)              /* save MMX control and status word */
++    fnstcw  0x74(%rax)              /* save x87 control word */
++
++    leaq    -0x28(%rax),%rdx        /* reserve 32byte shadow space + return address on stack, (RSP - 0x8) % 16 == 0 */
++    movq    %rdx,       0x40(%rax)  /* save address in RDX as stack pointer for context function */
++
++    leaq    finish(%rip),%rcx       /* compute abs address of label finish */
++    movq    %rcx,(%rdx)             /* save address of finish as return address for context function */
++                                    /* entered after context function returns */
++
++    ret
++
++finish:
++    /* RSP points to same address as RSP on entry of context function + 0x8 */
++    xorq    %rcx,       %rcx        /* exit code is zero */
++    call    _exit                   /* exit application */
++    hlt
++.seh_endproc
++
++.def	_exit;	.scl	2;	.type	32;	.endef  /* standard C library function */
diff --git a/nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-filesystem-cygwin.patch b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-filesystem-cygwin.patch
new file mode 100644
index 000000000000..cbb5757746da
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-filesystem-cygwin.patch
@@ -0,0 +1,32 @@
+--- boost_1_57_0/libs/filesystem/src/operations.cpp	2014-10-29 10:34:00.000000000 -0500
++++ boost_1_57_0/libs/filesystem/src/operations.cpp	2015-05-04 23:30:34.278446000 -0500
+@@ -1966,8 +1966,7 @@ namespace
+   {
+     errno = 0;
+ 
+-#   if !defined(__CYGWIN__)\
+-    && defined(_POSIX_THREAD_SAFE_FUNCTIONS)\
++#   if defined(_POSIX_THREAD_SAFE_FUNCTIONS)\
+     && defined(_SC_THREAD_SAFE_FUNCTIONS)\
+     && (_POSIX_THREAD_SAFE_FUNCTIONS+0 >= 0)\
+     && (!defined(__hpux) || defined(_REENTRANT)) \
+--- boost_1_57_0/libs/filesystem/src/path.cpp	2014-10-29 10:34:00.000000000 -0500
++++ boost_1_57_0/libs/filesystem/src/path.cpp	2015-05-04 17:45:45.582315200 -0500
+@@ -36,7 +36,7 @@
+ # include "windows_file_codecvt.hpp"
+ # include <windows.h>
+ #elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) \
+- || defined(__FreeBSD__) || defined(__OPEN_BSD__)
++ || defined(__FreeBSD__) || defined(__OPEN_BSD__) || defined(__CYGWIN__)
+ # include <boost/filesystem/detail/utf8_codecvt_facet.hpp>
+ #endif
+ 
+@@ -831,7 +831,7 @@ namespace
+     std::locale global_loc = std::locale();
+     return std::locale(global_loc, new windows_file_codecvt);
+ # elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) \
+-  || defined(__FreeBSD__) || defined(__OpenBSD__)
++  || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__CYGWIN__)
+     // "All BSD system functions expect their string parameters to be in UTF-8 encoding
+     // and nothing else." See
+     // http://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/BPInternational/Articles/FileEncodings.html
diff --git a/nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-locale-cygwin.patch b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-locale-cygwin.patch
new file mode 100644
index 000000000000..16208385a9b9
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-locale-cygwin.patch
@@ -0,0 +1,81 @@
+--- boost_1_57_0/libs/locale/build/Jamfile.v2	2014-04-06 08:11:49.000000000 -0500
++++ boost_1_57_0/libs/locale/build/Jamfile.v2	2015-05-04 18:11:52.956846500 -0500
+@@ -261,7 +261,7 @@ rule configure-full ( properties * : fla
+ 
+     }
+         
+-    if ! $(found-iconv) && ! $(found-icu) && ! <target-os>windows in $(properties) && ! <target-os>cygwin in $(properties) 
++    if ! $(found-iconv) && ! $(found-icu) && ! <target-os>windows in $(properties) 
+     {
+         ECHO "- Boost.Locale needs either iconv or ICU library to be built." ;
+         result += <build>no ;
+@@ -298,7 +298,6 @@ rule configure-full ( properties * : fla
+     if ! <boost.locale.winapi> in $(properties:G)
+     {
+         if <target-os>windows in $(properties) 
+-          || <target-os>cygwin in $(properties)
+         {
+             properties += <boost.locale.winapi>on ;
+         }      
+@@ -335,7 +334,7 @@ rule configure-full ( properties * : fla
+     }
+     
+     if ( ! <boost.locale.winapi>off in $(properties) || ! <boost.locale.std>off in $(properties) )
+-       && ( <target-os>windows in $(properties) || <target-os>cygwin in $(properties) )
++       && <target-os>windows in $(properties)
+     {
+         result += <source>win32/lcid.cpp ;
+     }
+--- boost_1_57_0/libs/locale/src/encoding/codepage.cpp	2014-04-06 08:11:49.000000000 -0500
++++ boost_1_57_0/libs/locale/src/encoding/codepage.cpp	2015-05-04 23:16:01.778652600 -0500
+@@ -8,7 +8,7 @@
+ #define BOOST_LOCALE_SOURCE
+ #include <boost/config.hpp>
+ 
+-#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_WINDOWS)
+ #define BOOST_LOCALE_WITH_WCONV
+ #endif
+ 
+--- boost_1_57_0/libs/locale/src/encoding/conv.hpp	2014-04-06 08:11:49.000000000 -0500
++++ boost_1_57_0/libs/locale/src/encoding/conv.hpp	2015-05-04 23:16:08.454000300 -0500
+@@ -59,7 +59,7 @@ namespace boost {
+                     return normalize_encoding(l).compare(normalize_encoding(r));
+                 }
+             
+-                #if defined(BOOST_WINDOWS)  || defined(__CYGWIN__)
++                #if defined(BOOST_WINDOWS)
+                 int encoding_to_windows_codepage(char const *ccharset);
+                 #endif
+             
+--- boost_1_57_0/libs/locale/src/util/default_locale.cpp	2014-04-06 08:11:49.000000000 -0500
++++ boost_1_57_0/libs/locale/src/util/default_locale.cpp	2015-05-04 23:16:16.311998100 -0500
+@@ -15,7 +15,7 @@
+ #  pragma warning(disable : 4996)
+ #endif
+ 
+-#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_WINDOWS)
+ #ifndef NOMINMAX
+ #define NOMINMAX
+ #endif
+--- boost_1_57_0/libs/locale/test/test_codepage.cpp	2014-04-06 08:11:49.000000000 -0500
++++ boost_1_57_0/libs/locale/test/test_codepage.cpp	2015-05-04 23:16:40.883618300 -0500
+@@ -23,7 +23,7 @@
+ # include <locale.h>
+ #endif
+ 
+-#if !defined(BOOST_LOCALE_WITH_ICU) && !defined(BOOST_LOCALE_WITH_ICONV) && (defined(BOOST_WINDOWS) || defined(__CYGWIN__))
++#if !defined(BOOST_LOCALE_WITH_ICU) && !defined(BOOST_LOCALE_WITH_ICONV) && defined(BOOST_WINDOWS)
+ #ifndef NOMINMAX
+ # define NOMINMAX
+ #endif
+@@ -395,7 +395,7 @@ int main()
+         def.push_back("posix");
+         #endif
+ 
+-        #if !defined(BOOST_LOCALE_WITH_ICU) && !defined(BOOST_LOCALE_WITH_ICONV) && (defined(BOOST_WINDOWS) || defined(__CYGWIN__))
++        #if !defined(BOOST_LOCALE_WITH_ICU) && !defined(BOOST_LOCALE_WITH_ICONV) && defined(BOOST_WINDOWS)
+         test_iso_8859_8 = IsValidCodePage(28598)!=0;
+         #endif
+ 
diff --git a/nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-log-cygwin.patch b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-log-cygwin.patch
new file mode 100644
index 000000000000..a7748ec58d82
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-log-cygwin.patch
@@ -0,0 +1,46 @@
+--- boost_1_57_0/boost/log/detail/config.hpp	2014-10-29 19:19:00.000000000 -0500
++++ boost_1_57_0/boost/log/detail/config.hpp	2015-05-04 17:56:38.663746100 -0500
+@@ -96,11 +96,6 @@
+ #   define BOOST_LOG_BROKEN_CONSTANT_EXPRESSIONS
+ #endif
+ 
+-#if defined(__CYGWIN__)
+-    // Boost.ASIO is broken on Cygwin
+-#   define BOOST_LOG_NO_ASIO
+-#endif
+-
+ #if !defined(BOOST_LOG_USE_NATIVE_SYSLOG) && defined(BOOST_LOG_NO_ASIO)
+ #   ifndef BOOST_LOG_WITHOUT_SYSLOG
+ #       define BOOST_LOG_WITHOUT_SYSLOG
+--- boost_1_57_0/libs/log/build/Jamfile.v2	2014-10-29 19:19:00.000000000 -0500
++++ boost_1_57_0/libs/log/build/Jamfile.v2	2015-05-04 22:16:49.242537800 -0500
+@@ -170,10 +170,6 @@ project boost/log
+         <target-os>windows:<library>ws2_32
+         <target-os>windows:<library>mswsock
+ 
+-        <target-os>cygwin:<define>__USE_W32_SOCKETS
+-        <target-os>cygwin:<library>ws2_32
+-        <target-os>cygwin:<library>mswsock
+-
+         <target-os>linux:<library>rt
+         <target-os>linux:<define>_XOPEN_SOURCE=600
+         <target-os>linux:<define>_GNU_SOURCE=1
+--- boost_1_57_0/libs/log/src/windows_version.hpp	2014-10-29 19:19:00.000000000 -0500
++++ boost_1_57_0/libs/log/src/windows_version.hpp	2015-05-04 23:17:08.281597400 -0500
+@@ -18,7 +18,7 @@
+ 
+ #include <boost/log/detail/config.hpp>
+ 
+-#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
++#if defined(BOOST_WINDOWS)
+ 
+ #if defined(BOOST_LOG_USE_WINNT6_API)
+ 
+@@ -50,6 +50,6 @@
+ #define WIN32_LEAN_AND_MEAN
+ #endif
+ 
+-#endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
++#endif // defined(BOOST_WINDOWS)
+ 
+ #endif // BOOST_LOG_WINDOWS_VERSION_HPP_INCLUDED_
diff --git a/nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-smart_ptr-cygwin.patch b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-smart_ptr-cygwin.patch
new file mode 100644
index 000000000000..35e6905b0f33
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-smart_ptr-cygwin.patch
@@ -0,0 +1,77 @@
+--- boost_1_57_0/boost/smart_ptr/detail/atomic_count.hpp	2014-08-21 15:48:32.000000000 -0500
++++ boost_1_57_0/boost/smart_ptr/detail/atomic_count.hpp	2015-05-04 17:47:15.556740500 -0500
+@@ -79,7 +79,7 @@
+ #elif defined( BOOST_SP_HAS_SYNC )
+ # include <boost/smart_ptr/detail/atomic_count_sync.hpp>
+ 
+-#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
++#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
+ # include <boost/smart_ptr/detail/atomic_count_win32.hpp>
+ 
+ #elif defined(__GLIBCPP__) || defined(__GLIBCXX__)
+--- boost_1_57_0/boost/smart_ptr/detail/lightweight_mutex.hpp	2014-08-21 15:48:32.000000000 -0500
++++ boost_1_57_0/boost/smart_ptr/detail/lightweight_mutex.hpp	2015-05-04 17:47:45.234509100 -0500
+@@ -32,7 +32,7 @@
+ #  include <boost/smart_ptr/detail/lwm_nop.hpp>
+ #elif defined(BOOST_HAS_PTHREADS)
+ #  include <boost/smart_ptr/detail/lwm_pthreads.hpp>
+-#elif defined(BOOST_HAS_WINTHREADS) || defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
++#elif defined(BOOST_HAS_WINTHREADS) || defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
+ #  include <boost/smart_ptr/detail/lwm_win32_cs.hpp>
+ #else
+ // Use #define BOOST_DISABLE_THREADS to avoid the error
+--- boost_1_57_0/boost/smart_ptr/detail/sp_counted_base.hpp	2014-08-21 15:48:32.000000000 -0500
++++ boost_1_57_0/boost/smart_ptr/detail/sp_counted_base.hpp	2015-05-04 17:47:45.240009800 -0500
+@@ -65,7 +65,7 @@
+ #elif defined(__GNUC__) && ( defined( __sparcv9 ) || ( defined( __sparcv8 ) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 402 ) ) )
+ # include <boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp>
+ 
+-#elif defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) || defined(__CYGWIN__)
++#elif defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ )
+ # include <boost/smart_ptr/detail/sp_counted_base_w32.hpp>
+ 
+ #elif defined( _AIX )
+--- boost_1_57_0/boost/smart_ptr/detail/sp_interlocked.hpp	2014-08-21 15:48:32.000000000 -0500
++++ boost_1_57_0/boost/smart_ptr/detail/sp_interlocked.hpp	2015-05-04 17:48:39.316376700 -0500
+@@ -119,7 +119,7 @@ extern "C" long __cdecl _InterlockedExch
+ # define BOOST_SP_INTERLOCKED_EXCHANGE _InterlockedExchange
+ # define BOOST_SP_INTERLOCKED_EXCHANGE_ADD _InterlockedExchangeAdd
+ 
+-#elif defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) || defined( __CYGWIN__ )
++#elif defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ )
+ 
+ namespace boost
+ {
+--- boost_1_57_0/boost/smart_ptr/detail/spinlock.hpp	2014-08-21 15:48:32.000000000 -0500
++++ boost_1_57_0/boost/smart_ptr/detail/spinlock.hpp	2015-05-04 17:47:45.247510800 -0500
+@@ -49,7 +49,7 @@
+ #elif defined( BOOST_SP_HAS_SYNC )
+ #  include <boost/smart_ptr/detail/spinlock_sync.hpp>
+ 
+-#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
++#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
+ #  include <boost/smart_ptr/detail/spinlock_w32.hpp>
+ 
+ #elif defined(BOOST_HAS_PTHREADS)
+--- boost_1_57_0/boost/smart_ptr/detail/yield_k.hpp	2014-08-21 15:48:32.000000000 -0500
++++ boost_1_57_0/boost/smart_ptr/detail/yield_k.hpp	2015-05-04 17:47:45.253511600 -0500
+@@ -47,7 +47,7 @@ extern "C" void _mm_pause();
+ 
+ //
+ 
+-#if defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) || defined( __CYGWIN__ )
++#if defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ )
+ 
+ #if defined( BOOST_USE_WINDOWS_H )
+ # include <windows.h>
+--- boost_1_57_0/libs/smart_ptr/test/sp_interlocked_test.cpp	2014-08-21 15:48:32.000000000 -0500
++++ boost_1_57_0/libs/smart_ptr/test/sp_interlocked_test.cpp	2015-05-04 23:18:21.717422600 -0500
+@@ -8,7 +8,7 @@
+ //  http://www.boost.org/LICENSE_1_0.txt
+ //
+ 
+-#if defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) || defined( __CYGWIN__ )
++#if defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ )
+ 
+ #include <boost/smart_ptr/detail/sp_interlocked.hpp>
+ #include <boost/detail/lightweight_test.hpp>
diff --git a/nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-system-cygwin.patch b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-system-cygwin.patch
new file mode 100644
index 000000000000..e241f37f2036
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/cygwin-1.57.0-system-cygwin.patch
@@ -0,0 +1,22 @@
+--- boost_1_57_0/boost/system/api_config.hpp	2014-08-03 15:44:11.000000000 -0500
++++ boost_1_57_0/boost/system/api_config.hpp	2015-05-04 17:51:31.189701800 -0500
+@@ -33,7 +33,7 @@
+ //    Standalone MinGW and all other known Windows compilers do predefine _WIN32
+ //    Compilers that predefine _WIN32 or __MINGW32__ do so for Windows 64-bit builds too.
+ 
+-# if defined(_WIN32) || defined(__CYGWIN__) // Windows default, including MinGW and Cygwin
++# if defined(_WIN32) // Windows default, including MinGW and Cygwin
+ #   define BOOST_WINDOWS_API
+ # else
+ #   define BOOST_POSIX_API 
+--- boost_1_57_0/boost/system/detail/error_code.ipp	2014-08-03 15:44:11.000000000 -0500
++++ boost_1_57_0/boost/system/detail/error_code.ipp	2015-05-04 17:51:02.925112700 -0500
+@@ -97,7 +97,7 @@ namespace
+       char buf[64];
+       char * bp = buf;
+       std::size_t sz = sizeof(buf);
+-  #  if defined(__CYGWIN__) || defined(__USE_GNU)
++  #  if defined(__GNU_VISIBLE) || defined(__USE_GNU)
+       // Oddball version of strerror_r
+       const char * c_str = strerror_r( ev, bp, sz );
+       return  c_str
diff --git a/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.50.0-fix-non-utf8-files.patch b/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.50.0-fix-non-utf8-files.patch
new file mode 100644
index 000000000000..b60a3ac49d3c
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.50.0-fix-non-utf8-files.patch
@@ -0,0 +1,22 @@
+diff --git a/libs/units/example/autoprefixes.cpp b/libs/units/example/autoprefixes.cpp
+index 8b2bc43..d04f2fe 100644
+--- a/libs/units/example/autoprefixes.cpp
++++ b/libs/units/example/autoprefixes.cpp
+@@ -67,7 +67,7 @@ struct thing_base_unit : boost::units::base_unit<thing_base_unit, boost::units::
+ struct euro_base_unit : boost::units::base_unit<euro_base_unit, boost::units::dimensionless_type, 5>
+ {
+   static const char* name() { return("EUR"); }
+-  static const char* symbol() { return("€"); }
++  static const char* symbol() { return("€"); }
+ };
+ 
+ int main()
+@@ -140,7 +140,7 @@ int main()
+ 
+   quantity<euro_base_unit::unit_type> ce = 2048. * euro_base_unit::unit_type();
+   cout << name_format << engineering_prefix << ce << endl;  // 2.048 kiloEUR
+-  cout << symbol_format << engineering_prefix << ce << endl;  // 2.048 k€
++  cout << symbol_format << engineering_prefix << ce << endl;  // 2.048 k€
+ 
+ 
+     return 0;
diff --git a/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.50.0-pool.patch b/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.50.0-pool.patch
new file mode 100644
index 000000000000..15ce4007675d
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.50.0-pool.patch
@@ -0,0 +1,122 @@
+Index: boost/pool/pool.hpp
+===================================================================
+--- a/boost/pool/pool.hpp	(revision 78317)
++++ b/boost/pool/pool.hpp	(revision 78326)
+@@ -27,4 +27,6 @@
+ #include <boost/pool/poolfwd.hpp>
+ 
++// std::numeric_limits
++#include <boost/limits.hpp>
+ // boost::math::static_lcm
+ #include <boost/math/common_factor_ct.hpp>
+@@ -358,4 +360,13 @@
+     }
+ 
++    size_type max_chunks() const
++    { //! Calculated maximum number of memory chunks that can be allocated in a single call by this Pool.
++      size_type partition_size = alloc_size();
++      size_type POD_size = math::static_lcm<sizeof(size_type), sizeof(void *)>::value + sizeof(size_type);
++      size_type max_chunks = (std::numeric_limits<size_type>::max() - POD_size) / alloc_size();
++    
++      return max_chunks;
++    }
++
+     static void * & nextof(void * const ptr)
+     { //! \returns Pointer dereferenced.
+@@ -377,5 +388,7 @@
+       //!   the first time that object needs to allocate system memory.
+       //!   The default is 32. This parameter may not be 0.
+-      //! \param nmax_size is the maximum number of chunks to allocate in one block.
++      //! \param nmax_size is the maximum number of chunks to allocate in one block.			
++      set_next_size(nnext_size);
++      set_max_size(nmax_size);
+     }
+ 
+@@ -400,7 +413,7 @@
+     }
+     void set_next_size(const size_type nnext_size)
+-    { //! Set number of chunks to request from the system the next time that object needs to allocate system memory. This value should never be set to 0.
+-      //! \returns nnext_size.
+-      next_size = start_size = nnext_size;
++    { //! Set number of chunks to request from the system the next time that object needs to allocate system memory. This value should never be set to 0.     
++      BOOST_USING_STD_MIN();
++      next_size = start_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(nnext_size, max_chunks());
+     }
+     size_type get_max_size() const
+@@ -410,5 +423,6 @@
+     void set_max_size(const size_type nmax_size)
+     { //! Set max_size.
+-      max_size = nmax_size;
++      BOOST_USING_STD_MIN();
++      max_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(nmax_size, max_chunks());
+     }
+     size_type get_requested_size() const
+@@ -713,7 +727,7 @@
+   BOOST_USING_STD_MIN();
+   if(!max_size)
+-    next_size <<= 1;
++    set_next_size(next_size << 1);
+   else if( next_size*partition_size/requested_size < max_size)
+-    next_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size*requested_size/ partition_size);
++    set_next_size(min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size * requested_size / partition_size));
+ 
+   //  initialize it,
+@@ -753,7 +767,7 @@
+   BOOST_USING_STD_MIN();
+   if(!max_size)
+-    next_size <<= 1;
++    set_next_size(next_size << 1);
+   else if( next_size*partition_size/requested_size < max_size)
+-    next_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size*requested_size/ partition_size);
++    set_next_size(min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size * requested_size / partition_size));
+ 
+   //  initialize it,
+@@ -797,4 +811,6 @@
+   //! \returns Address of chunk n if allocated ok.
+   //! \returns 0 if not enough memory for n chunks.
++  if (n > max_chunks())
++    return 0;
+ 
+   const size_type partition_size = alloc_size();
+@@ -845,7 +861,7 @@
+   BOOST_USING_STD_MIN();
+   if(!max_size)
+-    next_size <<= 1;
++    set_next_size(next_size << 1);
+   else if( next_size*partition_size/requested_size < max_size)
+-    next_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size*requested_size/ partition_size);
++    set_next_size(min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size * requested_size / partition_size));
+ 
+   //  insert it into the list,
+Index: libs/pool/test/test_bug_6701.cpp
+===================================================================
+--- a/libs/pool/test/test_bug_6701.cpp	(revision 78326)
++++ b/libs/pool/test/test_bug_6701.cpp	(revision 78326)
+@@ -0,0 +1,27 @@
++/* Copyright (C) 2012 Étienne Dupuis
++* 
++* Use, modification and distribution is subject to the 
++* Boost Software License, Version 1.0. (See accompanying
++* file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
++*/
++
++// Test of bug #6701 (https://svn.boost.org/trac/boost/ticket/6701)
++
++#include <boost/pool/object_pool.hpp>
++#include <boost/limits.hpp>
++
++int main()
++{
++  boost::pool<> p(1024, std::numeric_limits<size_t>::max() / 768);
++
++  void *x = p.malloc();
++  BOOST_ASSERT(!x);
++  
++  BOOST_ASSERT(std::numeric_limits<size_t>::max() / 1024 >= p.get_next_size());
++  BOOST_ASSERT(std::numeric_limits<size_t>::max() / 1024 >= p.get_max_size());
++
++  void *y = p.ordered_malloc(std::numeric_limits<size_t>::max() / 768);
++  BOOST_ASSERT(!y);
++
++  return 0;
++}
diff --git a/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.54.0-locale-unused_typedef.patch b/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.54.0-locale-unused_typedef.patch
new file mode 100644
index 000000000000..b7c91284d9bb
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.54.0-locale-unused_typedef.patch
@@ -0,0 +1,11 @@
+diff -urp boost_1_54_0-orig/boost/locale/boundary/segment.hpp boost_1_54_0/boost/locale/boundary/segment.hpp
+--- boost_1_54_0-orig/boost/locale/boundary/segment.hpp	2013-07-23 00:47:27.020787174 +0200
++++ boost_1_54_0/boost/locale/boundary/segment.hpp	2013-07-23 00:50:40.382959016 +0200
+@@ -27,7 +27,6 @@ namespace boundary {
+         int compare_text(LeftIterator l_begin,LeftIterator l_end,RightIterator r_begin,RightIterator r_end)
+         {
+             typedef LeftIterator left_iterator;
+-            typedef RightIterator right_iterator;
+             typedef typename std::iterator_traits<left_iterator>::value_type char_type;
+             typedef std::char_traits<char_type> traits;
+             while(l_begin!=l_end && r_begin!=r_end) {
diff --git a/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.54.0-pool-max_chunks_shadow.patch b/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.54.0-pool-max_chunks_shadow.patch
new file mode 100644
index 000000000000..6c1d0a021ed1
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.54.0-pool-max_chunks_shadow.patch
@@ -0,0 +1,14 @@
+diff -up ./boost/pool/pool.hpp~ ./boost/pool/pool.hpp
+--- a/boost/pool/pool.hpp~	2013-08-21 17:49:56.023296922 +0200
++++ b/boost/pool/pool.hpp	2013-08-22 11:38:01.133912638 +0200
+@@ -361,9 +361,7 @@ class pool: protected simple_segregated_
+     { //! Calculated maximum number of memory chunks that can be allocated in a single call by this Pool.
+       size_type partition_size = alloc_size();
+       size_type POD_size = math::static_lcm<sizeof(size_type), sizeof(void *)>::value + sizeof(size_type);
+-      size_type max_chunks = (std::numeric_limits<size_type>::max() - POD_size) / alloc_size();
+-    
+-      return max_chunks;
++      return (std::numeric_limits<size_type>::max() - POD_size) / alloc_size();
+     }
+ 
+     static void * & nextof(void * const ptr)
diff --git a/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.54.0-python-unused_typedef.patch b/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.54.0-python-unused_typedef.patch
new file mode 100644
index 000000000000..8adf8ed2080d
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.54.0-python-unused_typedef.patch
@@ -0,0 +1,15 @@
+diff -up boost_1_53_0/boost/python/to_python_value.hpp\~ boost_1_53_0/boost/python/to_python_value.hpp
+--- boost_1_53_0/boost/python/to_python_value.hpp~	2007-12-16 11:12:07.000000000 +0100
++++ boost_1_53_0/boost/python/to_python_value.hpp	2013-07-23 16:19:02.518904596 +0200
+@@ -147,8 +147,8 @@ namespace detail
+   template <class T>
+   inline PyObject* registry_to_python_value<T>::operator()(argument_type x) const
+   {
+-      typedef converter::registered<argument_type> r;
+ # if BOOST_WORKAROUND(__GNUC__, < 3)
++      typedef converter::registered<argument_type> r;
+       // suppresses an ICE, somehow
+       (void)r::converters;
+ # endif 
+
+Diff finished.  Tue Jul 23 16:19:05 2013
diff --git a/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.57.0-move-is_class.patch b/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.57.0-move-is_class.patch
new file mode 100644
index 000000000000..cf9756e40ea4
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.57.0-move-is_class.patch
@@ -0,0 +1,20 @@
+diff -up ./move/core.hpp~ ./move/core.hpp
+--- a/boost/move/core.hpp~	2015-02-09 17:33:35.000000000 +0100
++++ b/boost/move/core.hpp	2015-02-13 13:54:52.012130813 +0100
+@@ -43,6 +43,7 @@
+ #if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_MOVE_DOXYGEN_INVOKED)
+ 
+    #include <boost/move/detail/meta_utils.hpp>
++   #include <boost/type_traits/is_class.hpp>
+ 
+    //Move emulation rv breaks standard aliasing rules so add workarounds for some compilers
+    #if defined(__GNUC__) && (__GNUC__ >= 4) && \
+@@ -65,7 +66,7 @@
+    template <class T>
+    class rv
+       : public ::boost::move_detail::if_c
+-         < ::boost::move_detail::is_class_or_union<T>::value
++         < ::boost::is_class<T>::value
+          , T
+          , ::boost::move_detail::nat
+          >::type
diff --git a/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.57.0-mpl-print.patch b/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.57.0-mpl-print.patch
new file mode 100644
index 000000000000..561cef19eb23
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.57.0-mpl-print.patch
@@ -0,0 +1,31 @@
+diff -up boost_1_57_0/boost/mpl/print.hpp\~ boost_1_57_0/boost/mpl/print.hpp
+--- boost_1_57_0/boost/mpl/print.hpp~	2014-07-09 23:12:31.000000000 +0200
++++ boost_1_57_0/boost/mpl/print.hpp	2015-01-20 12:44:59.621400948 +0100
+@@ -52,16 +52,15 @@ struct print
+     enum { n = sizeof(T) + -1 };
+ #elif defined(__MWERKS__)
+     void f(int);
+-#else 
+-    enum {
+-        n =
+-# if defined(__EDG_VERSION__)
+-           aux::dependent_unsigned<T>::value > -1
+-# else 
+-           sizeof(T) > -1
+-# endif 
+-        };
+-#endif 
++#elif defined(__EDG_VERSION__)
++    enum { n = aux::dependent_unsigned<T>::value > -1 };
++#elif defined(BOOST_GCC)
++    enum { n1 };
++    enum { n2 };
++    enum { n = n1 != n2 };
++#else
++    enum { n = sizeof(T) > -1 };
++#endif
+ };
+ 
+ #if defined(BOOST_MSVC)
+
+Diff finished.  Tue Jan 20 12:45:03 2015
diff --git a/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.57.0-pool-test_linking.patch b/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.57.0-pool-test_linking.patch
new file mode 100644
index 000000000000..57e6206bba15
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.57.0-pool-test_linking.patch
@@ -0,0 +1,33 @@
+diff -up boost_1_57_0/libs/pool/test/Jamfile.v2\~ boost_1_57_0/libs/pool/test/Jamfile.v2
+--- boost_1_57_0/libs/pool/test/Jamfile.v2~	2014-07-10 06:36:10.000000000 +0200
++++ boost_1_57_0/libs/pool/test/Jamfile.v2	2015-01-20 13:59:10.818700586 +0100
+@@ -28,17 +28,17 @@ explicit valgrind_config_check ;
+ local use-valgrind = [ check-target-builds valgrind_config_check "valgrind" : <testing.launcher>"valgrind --error-exitcode=1" : <build>no ] ;
+ 
+ test-suite pool :
+-    [ run test_simple_seg_storage.cpp ]
+-    [ run test_pool_alloc.cpp ]
+-    [ run pool_msvc_compiler_bug_test.cpp ]
+-    [ run test_msvc_mem_leak_detect.cpp ]
+-    [ run test_bug_3349.cpp ]
+-    [ run test_bug_4960.cpp ]
+-    [ run test_bug_1252.cpp ]
+-    [ run test_bug_2696.cpp ]
+-    [ run test_bug_5526.cpp ]
++    [ run test_simple_seg_storage.cpp : : : <library>/boost/system//boost_system ]
++    [ run test_pool_alloc.cpp : : : <library>/boost/system//boost_system ]
++    [ run pool_msvc_compiler_bug_test.cpp : : : <library>/boost/system//boost_system ]
++    [ run test_msvc_mem_leak_detect.cpp : : : <library>/boost/system//boost_system ]
++    [ run test_bug_3349.cpp : : : <library>/boost/system//boost_system ]
++    [ run test_bug_4960.cpp : : : <library>/boost/system//boost_system ]
++    [ run test_bug_1252.cpp : : : <library>/boost/system//boost_system ]
++    [ run test_bug_2696.cpp : : : <library>/boost/system//boost_system ]
++    [ run test_bug_5526.cpp : : : <library>/boost/system//boost_system ]
+     [ run test_threading.cpp : : : <threading>multi <library>/boost/thread//boost_thread <toolset>gcc:<cxxflags>-Wno-attributes <toolset>gcc:<cxxflags>-Wno-missing-field-initializers ]
+-    [ run  ../example/time_pool_alloc.cpp ]
++    [ run  ../example/time_pool_alloc.cpp : : : <library>/boost/system//boost_system ]
+     [ compile test_poisoned_macros.cpp ]
+ 
+ #
+
+Diff finished.  Tue Jan 20 13:59:16 2015
diff --git a/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.57.0-signals2-weak_ptr.patch b/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.57.0-signals2-weak_ptr.patch
new file mode 100644
index 000000000000..eb9ea14011ff
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.57.0-signals2-weak_ptr.patch
@@ -0,0 +1,10 @@
+--- a/boost/signals2/trackable.hpp
++++ b/boost/signals2/trackable.hpp
+@@ -18,6 +18,7 @@
+ 
+ #include <boost/assert.hpp>
+ #include <boost/shared_ptr.hpp>
++#include <boost/weak_ptr.hpp>
+ 
+ namespace boost {
+   namespace signals2 {
diff --git a/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.57.0-spirit-unused_typedef.patch b/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.57.0-spirit-unused_typedef.patch
new file mode 100644
index 000000000000..282962987c59
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.57.0-spirit-unused_typedef.patch
@@ -0,0 +1,19 @@
+diff -up boost_1_57_0/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp\~ boost_1_57_0/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp
+--- boost_1_57_0/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp~	2014-10-13 12:21:40.000000000 +0200
++++ boost_1_57_0/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp	2015-01-20 13:25:50.069710766 +0100
+@@ -282,12 +282,12 @@ struct grammar_definition
+ #if !defined(BOOST_SPIRIT_SINGLE_GRAMMAR_INSTANCE)
+         typedef impl::grammar_helper_base<GrammarT> helper_base_t;
+         typedef grammar_helper_list<GrammarT> helper_list_t;
+-        typedef typename helper_list_t::vector_t::reverse_iterator iterator_t;
+ 
+         helper_list_t&  helpers =
+         grammartract_helper_list::do_(self);
+ 
+ # if defined(BOOST_INTEL_CXX_VERSION)
++        typedef typename helper_list_t::vector_t::reverse_iterator iterator_t;
+         for (iterator_t i = helpers.rbegin(); i != helpers.rend(); ++i)
+             (*i)->undefine(self);
+ # else
+
+Diff finished.  Tue Jan 20 13:25:53 2015
diff --git a/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.57.0-uuid-comparison.patch b/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.57.0-uuid-comparison.patch
new file mode 100644
index 000000000000..30ebb981b70b
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/cygwin-fedora-boost-1.57.0-uuid-comparison.patch
@@ -0,0 +1,11 @@
+--- a/boost/uuid/detail/uuid_x86.hpp
++++ b/boost/uuid/detail/uuid_x86.hpp
+@@ -100,7 +100,7 @@ inline bool operator< (uuid const& lhs, uuid const& rhs) BOOST_NOEXCEPT
+     cmp = (cmp - 1u) ^ cmp;
+     rcmp = (rcmp - 1u) ^ rcmp;
+ 
+-    return static_cast< uint16_t >(cmp) < static_cast< uint16_t >(rcmp);
++    return cmp < rcmp;
+ }
+ 
+ } // namespace uuids
diff --git a/nixpkgs/pkgs/development/libraries/boost/darwin-no-system-python.patch b/nixpkgs/pkgs/development/libraries/boost/darwin-no-system-python.patch
new file mode 100644
index 000000000000..73e0910336a1
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/darwin-no-system-python.patch
@@ -0,0 +1,45 @@
+diff --git a/tools/build/src/tools/python.jam b/tools/build/src/tools/python.jam
+index 273b28a..2d2031e 100644
+--- a/tools/build/src/tools/python.jam
++++ b/tools/build/src/tools/python.jam
+@@ -428,13 +428,7 @@ local rule windows-installed-pythons ( version ? )
+ 
+ local rule darwin-installed-pythons ( version ? )
+ {
+-    version ?= $(.version-countdown) ;
+-
+-    local prefix
+-      = [ GLOB /System/Library/Frameworks /Library/Frameworks
+-          : Python.framework ] ;
+-
+-    return $(prefix)/Versions/$(version)/bin/python ;
++    return ;
+ }
+ 
+ 
+@@ -890,25 +884,6 @@ local rule configure ( version ? : cmd-or-prefix ? : includes * : libraries ? :
+ 
+     # See if we can find a framework directory on darwin.
+     local framework-directory ;
+-    if $(target-os) = darwin
+-    {
+-        # Search upward for the framework directory.
+-        local framework-directory = $(libraries[-1]) ;
+-        while $(framework-directory:D=) && $(framework-directory:D=) != Python.framework
+-        {
+-            framework-directory = $(framework-directory:D) ;
+-        }
+-
+-        if $(framework-directory:D=) = Python.framework
+-        {
+-            debug-message framework directory is \"$(framework-directory)\" ;
+-        }
+-        else
+-        {
+-            debug-message "no framework directory found; using library path" ;
+-            framework-directory = ;
+-        }
+-    }
+ 
+     local dll-path = $(libraries) ;
+ 
diff --git a/nixpkgs/pkgs/development/libraries/boost/gcc-5.patch b/nixpkgs/pkgs/development/libraries/boost/gcc-5.patch
new file mode 100644
index 000000000000..2b2713590ca7
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/gcc-5.patch
@@ -0,0 +1,64 @@
+https://svn.boost.org/trac/boost/ticket/10125
+
+ boost/thread/pthread/once.hpp        | 6 +++---
+ boost/thread/pthread/once_atomic.hpp | 2 +-
+ boost/thread/win32/once.hpp          | 2 +-
+ 3 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/boost/thread/pthread/once.hpp b/boost/thread/pthread/once.hpp
+index ccfb051..0bef038 100644
+--- a/boost/thread/pthread/once.hpp
++++ b/boost/thread/pthread/once.hpp
+@@ -42,7 +42,7 @@ namespace boost
+   }
+ 
+ #ifdef BOOST_THREAD_PROVIDES_ONCE_CXX11
+-#ifndef BOOST_NO_CXX11_VARIADIC_TEMPLATES
++#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+     template<typename Function, class ...ArgTypes>
+     inline void call_once(once_flag& flag, BOOST_THREAD_RV_REF(Function) f, BOOST_THREAD_RV_REF(ArgTypes)... args);
+ #else
+@@ -65,7 +65,7 @@ namespace boost
+   private:
+       volatile thread_detail::uintmax_atomic_t epoch;
+ 
+-#ifndef BOOST_NO_CXX11_VARIADIC_TEMPLATES
++#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+       template<typename Function, class ...ArgTypes>
+       friend void call_once(once_flag& flag, BOOST_THREAD_RV_REF(Function) f, BOOST_THREAD_RV_REF(ArgTypes)... args);
+ #else
+@@ -118,7 +118,7 @@ namespace boost
+     // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2444.html
+ 
+ 
+-#ifndef BOOST_NO_CXX11_VARIADIC_TEMPLATES
++#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+ 
+ 
+   template<typename Function, class ...ArgTypes>
+diff --git a/boost/thread/pthread/once_atomic.hpp b/boost/thread/pthread/once_atomic.hpp
+index 9e2f876..923f07b 100644
+--- a/boost/thread/pthread/once_atomic.hpp
++++ b/boost/thread/pthread/once_atomic.hpp
+@@ -115,7 +115,7 @@ namespace boost
+ #endif
+ 
+ 
+-#ifndef BOOST_NO_CXX11_VARIADIC_TEMPLATES
++#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+ 
+   template<typename Function, class ...ArgTypes>
+   inline void call_once(once_flag& flag, BOOST_THREAD_RV_REF(Function) f, BOOST_THREAD_RV_REF(ArgTypes)... args)
+diff --git a/boost/thread/win32/once.hpp b/boost/thread/win32/once.hpp
+index cafcfd4..9b37b31 100644
+--- a/boost/thread/win32/once.hpp
++++ b/boost/thread/win32/once.hpp
+@@ -227,7 +227,7 @@ namespace boost
+         }
+     }
+ 
+-#ifndef BOOST_NO_CXX11_VARIADIC_TEMPLATES
++#if !defined BOOST_NO_CXX11_VARIADIC_TEMPLATES && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+ //#if defined(BOOST_THREAD_RVALUE_REFERENCES_DONT_MATCH_FUNTION_PTR)
+     inline void call_once(once_flag& flag, void (*f)())
+     {
diff --git a/nixpkgs/pkgs/development/libraries/boost/generic.nix b/nixpkgs/pkgs/development/libraries/boost/generic.nix
new file mode 100644
index 000000000000..3e488acee748
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/boost/generic.nix
@@ -0,0 +1,179 @@
+{ stdenv, fetchurl, icu, expat, zlib, bzip2, python, fixDarwinDylibNames, libiconv
+, which
+, buildPackages
+, toolset ? /**/ if stdenv.cc.isClang  then "clang"
+            else null
+, enableRelease ? true
+, enableDebug ? false
+, enableSingleThreaded ? false
+, enableMultiThreaded ? true
+, enableShared ? !(stdenv.hostPlatform.libc == "msvcrt") # problems for now
+, enableStatic ? !enableShared
+, enablePython ? false
+, enableNumpy ? false
+, taggedLayout ? ((enableRelease && enableDebug) || (enableSingleThreaded && enableMultiThreaded) || (enableShared && enableStatic))
+, patches ? []
+, mpi ? null
+
+# Attributes inherit from specific versions
+, version, src
+, ...
+}:
+
+# We must build at least one type of libraries
+assert enableShared || enableStatic;
+
+# Python isn't supported when cross-compiling
+assert enablePython -> stdenv.hostPlatform == stdenv.buildPlatform;
+assert enableNumpy -> enablePython;
+
+with stdenv.lib;
+let
+
+  variant = concatStringsSep ","
+    (optional enableRelease "release" ++
+     optional enableDebug "debug");
+
+  threading = concatStringsSep ","
+    (optional enableSingleThreaded "single" ++
+     optional enableMultiThreaded "multi");
+
+  link = concatStringsSep ","
+    (optional enableShared "shared" ++
+     optional enableStatic "static");
+
+  runtime-link = if enableShared then "shared" else "static";
+
+  # To avoid library name collisions
+  layout = if taggedLayout then "tagged" else "system";
+
+  # Versions of b2 before 1.65 have job limits; specifically:
+  #   - Versions before 1.58 support up to 64 jobs[0]
+  #   - Versions before 1.65 support up to 256 jobs[1]
+  #
+  # [0]: https://github.com/boostorg/build/commit/0ef40cb86728f1cd804830fef89a6d39153ff632
+  # [1]: https://github.com/boostorg/build/commit/316e26ca718afc65d6170029284521392524e4f8
+  jobs =
+    if versionOlder version "1.58" then
+      "$(($NIX_BUILD_CORES<=64 ? $NIX_BUILD_CORES : 64))"
+    else if versionOlder version "1.65" then
+      "$(($NIX_BUILD_CORES<=256 ? $NIX_BUILD_CORES : 256))"
+    else
+      "$NIX_BUILD_CORES";
+
+  b2Args = concatStringsSep " " ([
+    "--includedir=$dev/include"
+    "--libdir=$out/lib"
+    "-j${jobs}"
+    "--layout=${layout}"
+    "variant=${variant}"
+    "threading=${threading}"
+    "link=${link}"
+    "-sEXPAT_INCLUDE=${expat.dev}/include"
+    "-sEXPAT_LIBPATH=${expat.out}/lib"
+
+    # TODO: make this unconditional
+  ] ++ optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
+    "address-model=${toString stdenv.hostPlatform.parsed.cpu.bits}"
+    "architecture=${toString stdenv.hostPlatform.parsed.cpu.family}"
+    "binary-format=${toString stdenv.hostPlatform.parsed.kernel.execFormat.name}"
+    "target-os=${toString stdenv.hostPlatform.parsed.kernel.name}"
+
+    # adapted from table in boost manual
+    # https://www.boost.org/doc/libs/1_66_0/libs/context/doc/html/context/architectures.html
+    "abi=${if stdenv.hostPlatform.parsed.cpu.family == "arm" then "aapcs"
+           else if stdenv.hostPlatform.isWindows then "ms"
+           else if stdenv.hostPlatform.isMips then "o32"
+           else "sysv"}"
+  ] ++ optional (link != "static") "runtime-link=${runtime-link}"
+    ++ optional (variant == "release") "debug-symbols=off"
+    ++ optional (toolset != null) "toolset=${toolset}"
+    ++ optional (!enablePython) "--without-python"
+    ++ optional (mpi != null || stdenv.hostPlatform != stdenv.buildPlatform) "--user-config=user-config.jam"
+    ++ optionals (stdenv.hostPlatform.libc == "msvcrt") [
+    "threadapi=win32"
+  ]);
+
+in
+
+stdenv.mkDerivation {
+  name = "boost-${version}";
+
+  inherit src;
+
+  patchFlags = "";
+
+  patches = patches
+    ++ optional stdenv.isDarwin ./darwin-no-system-python.patch;
+
+  meta = {
+    homepage = http://boost.org/;
+    description = "Collection of C++ libraries";
+    license = stdenv.lib.licenses.boost;
+
+    platforms = (platforms.unix ++ platforms.windows);
+    badPlatforms = stdenv.lib.optional (versionOlder version "1.59") "aarch64-linux";
+    maintainers = with maintainers; [ peti wkennington ];
+  };
+
+  preConfigure = ''
+    if test -f tools/build/src/tools/clang-darwin.jam ; then
+        substituteInPlace tools/build/src/tools/clang-darwin.jam \
+          --replace '@rpath/$(<[1]:D=)' "$out/lib/\$(<[1]:D=)";
+    fi;
+  '' + optionalString (mpi != null) ''
+    cat << EOF >> user-config.jam
+    using mpi : ${mpi}/bin/mpiCC ;
+    EOF
+  '' + optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
+    cat << EOF >> user-config.jam
+    using gcc : cross : ${stdenv.cc.targetPrefix}c++ ;
+    EOF
+  '';
+
+  NIX_CFLAGS_LINK = stdenv.lib.optionalString stdenv.isDarwin
+                      "-headerpad_max_install_names";
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ which ];
+  depsBuildBuild = [ buildPackages.stdenv.cc ];
+  buildInputs = [ expat zlib bzip2 libiconv ]
+    ++ optional (stdenv.hostPlatform == stdenv.buildPlatform) icu
+    ++ optional stdenv.isDarwin fixDarwinDylibNames
+    ++ optional enablePython python
+    ++ optional enableNumpy python.pkgs.numpy;
+
+  configureScript = "./bootstrap.sh";
+  configurePlatforms = [];
+  configureFlags = [
+    "--includedir=$(dev)/include"
+    "--libdir=$(out)/lib"
+  ] ++ optional enablePython "--with-python=${python.interpreter}"
+    ++ [ (if stdenv.hostPlatform == stdenv.buildPlatform then "--with-icu=${icu.dev}" else "--without-icu") ]
+    ++ optional (toolset != null) "--with-toolset=${toolset}";
+
+  buildPhase = ''
+    ./b2 ${b2Args}
+  '';
+
+  installPhase = ''
+    # boostbook is needed by some applications
+    mkdir -p $dev/share/boostbook
+    cp -a tools/boostbook/{xsl,dtd} $dev/share/boostbook/
+
+    # Let boost install everything else
+    ./b2 ${b2Args} install
+  '';
+
+  postFixup = ''
+    # Make boost header paths relative so that they are not runtime dependencies
+    cd "$dev" && find include \( -name '*.hpp' -or -name '*.h' -or -name '*.ipp' \) \
+      -exec sed '1s/^\xef\xbb\xbf//;1i#line 1 "{}"' -i '{}' \;
+  '' + optionalString (stdenv.hostPlatform.libc == "msvcrt") ''
+    $RANLIB "$out/lib/"*.a
+  '';
+
+  outputs = [ "out" "dev" ];
+  setOutputFlags = false;
+}