diff -Naur boost-1.61.0.orig/libs/locale/build/has_icu_test.cpp boost-1.61.0.patched/libs/locale/build/has_icu_test.cpp
--- boost-1.61.0.orig/libs/locale/build/has_icu_test.cpp	2016-05-06 00:12:06.000000000 +0300
+++ boost-1.61.0.patched/libs/locale/build/has_icu_test.cpp	2016-05-16 15:38:19.705320700 +0300
@@ -15,10 +15,11 @@
 #include <unicode/uchar.h>
 #include <unicode/coll.h>
 
+/*
 #if defined(_MSC_VER) && !defined(_DLL)
 #error "Mixing ICU with a static runtime doesn't work"
 #endif
-
+*/
 int main()
 {
    icu::Locale loc;
diff -Naur boost-1.61.0.orig/libs/locale/build/Jamfile.v2 boost-1.61.0.patched/libs/locale/build/Jamfile.v2
--- boost-1.61.0.orig/libs/locale/build/Jamfile.v2	2016-05-06 00:12:06.000000000 +0300
+++ boost-1.61.0.patched/libs/locale/build/Jamfile.v2	2016-05-16 15:38:19.708320900 +0300
@@ -3,8 +3,6 @@
 # (See accompanying file LICENSE_1_0.txt or copy at 
 # http://www.boost.org/LICENSE_1_0.txt.
 
-
-
 project /boost/locale
     : source-location ../src
     ;
@@ -14,14 +12,29 @@
 import toolset ;
 import project ;
 import feature ;
-# Features
 
+# Features
 feature.feature boost.locale.iconv : on off : optional propagated ;
 feature.feature boost.locale.icu : on off :  optional propagated ;
 feature.feature boost.locale.posix : on off : optional propagated ;
 feature.feature boost.locale.std : on off : optional propagated ;
 feature.feature boost.locale.winapi : on off : optional propagated ;
 
+rule path_options ( properties * )
+{
+    local result ;
+    if <address-model>64 in $(properties) && <toolset>msvc in $(properties) 
+    {
+    	result = <search>$(ICU_PATH)/bin64 <search>$(ICU_PATH)/lib64 ;
+    }
+    else
+    {
+    	result = <search>$(ICU_PATH)/bin <search>$(ICU_PATH)/lib ;
+    }  
+	
+    return $(result) ;
+}
+
 # Configuration of libraries
 
 ## iconv
@@ -59,7 +72,6 @@
 
 #end xlocale
 
-
 ICU_PATH =  [ modules.peek : ICU_PATH ] ;
 ICU_LINK =  [ modules.peek : ICU_LINK ] ;
 
@@ -70,140 +82,104 @@
 }
 else
 {
-    searched-lib icuuc : :  <name>icuuc
-                            <search>$(ICU_PATH)/lib 
-                            <link>shared 
-                            <runtime-link>shared ;
-
-    searched-lib icuuc : :  <toolset>msvc
-                            <variant>debug
-                            <name>icuucd
-                            <search>$(ICU_PATH)/lib
-                            <link>shared
-                            <runtime-link>shared ;
-
-    searched-lib icuuc : :  <name>this_is_an_invalid_library_name ;
-
-    searched-lib icudt : :  <search>$(ICU_PATH)/lib
-                            <name>icudata
-                            <link>shared
-                            <runtime-link>shared ;
-
-    searched-lib icudt : :  <search>$(ICU_PATH)/lib
-                            <name>icudt
-                            <toolset>msvc
-                            <link>shared
-                            <runtime-link>shared ;
-
-    searched-lib icudt : :  <name>this_is_an_invalid_library_name ;
-
-    searched-lib icuin : :  <search>$(ICU_PATH)/lib
-                            <name>icui18n
-                            <link>shared
-                            <runtime-link>shared ;
-
-    searched-lib icuin : :  <toolset>msvc
-                            <variant>debug
-                            <name>icuind
-                            <search>$(ICU_PATH)/lib
-                            <link>shared
-                            <runtime-link>shared ;
-
-    searched-lib icuin : :  <toolset>msvc
-                            <variant>release
-                            <name>icuin
-                            <search>$(ICU_PATH)/lib
-                            <link>shared
-                            <runtime-link>shared ;
-
-    searched-lib icuin : :  <name>this_is_an_invalid_library_name ;
-
-    explicit icuuc icudt icuin ;
-
-    ICU_OPTS =   <include>$(ICU_PATH)/include 
-      <library>icuuc/<link>shared/<runtime-link>shared 
-      <library>icudt/<link>shared/<runtime-link>shared 
-      <library>icuin/<link>shared/<runtime-link>shared
-      <dll-path>$(ICU_PATH)/bin
-        <runtime-link>shared ;
-
-
-
-    searched-lib icuuc_64 : :   <name>icuuc
-                                <search>$(ICU_PATH)/lib64 
-                                <link>shared 
-                                <runtime-link>shared ;
-
-    searched-lib icuuc_64 : :   <toolset>msvc
-                                <variant>debug
-                                <name>icuucd
-                                <search>$(ICU_PATH)/lib64
-                                <link>shared
-                                <runtime-link>shared ;
-
-    searched-lib icuuc_64 : :   <name>this_is_an_invalid_library_name ;
-
-    searched-lib icudt_64 : :   <search>$(ICU_PATH)/lib64
-                                <name>icudata
-                                <link>shared
-                                <runtime-link>shared ;
-
-    searched-lib icudt_64 : :   <search>$(ICU_PATH)/lib64
-                                <name>icudt
-                                <toolset>msvc
-                                <link>shared
-                                <runtime-link>shared ;
-
-    searched-lib icudt_64 : :   <name>this_is_an_invalid_library_name ;
-
-    searched-lib icuin_64 : :   <search>$(ICU_PATH)/lib64
-                                <name>icui18n
-                                <link>shared
-                                <runtime-link>shared ;
-
-    searched-lib icuin_64 : :   <toolset>msvc
-                                <variant>debug
-                                <name>icuind
-                                <search>$(ICU_PATH)/lib64
-                                <link>shared
-                                <runtime-link>shared ;
-
-    searched-lib icuin_64 : :   <toolset>msvc
-                                <variant>release
-                                <name>icuin
-                                <search>$(ICU_PATH)/lib64
-                                <link>shared
-                                <runtime-link>shared ;
-
-    searched-lib icuin_64 : :   <name>this_is_an_invalid_library_name ;
-
-    explicit icuuc_64 icudt_64 icuin_64 ;
-
-    ICU64_OPTS =   <include>$(ICU_PATH)/include 
-      <library>icuuc_64/<link>shared/<runtime-link>shared 
-      <library>icudt_64/<link>shared/<runtime-link>shared 
-      <library>icuin_64/<link>shared/<runtime-link>shared
-      <dll-path>$(ICU_PATH)/bin64
-        <runtime-link>shared ;
- 
-    
+		local iculibs = in uc dt ;
+		
+		for libtxt in $(iculibs)
+		{										
+			lib icu$(libtxt) : : 	<toolset>msvc 
+									<variant>debug 
+									<address-model>64 
+									<name>sicu$(libtxt)d 
+									<search>$(ICU_PATH)/lib64 
+									<link>static 
+									<runtime-link>static ;
+									
+			lib icu$(libtxt) : : 	<toolset>msvc 
+									<variant>release 
+									<address-model>64 
+									<name>sicu$(libtxt) 
+									<search>$(ICU_PATH)/lib64 
+									<link>static 
+									<runtime-link>static ;
+									
+			lib icu$(libtxt) : : 	<toolset>msvc 
+									<variant>release 
+									<address-model>64 
+									<name>icu$(libtxt) 
+									<search>$(ICU_PATH)/lib64 
+									<link>shared 
+									<runtime-link>shared ;
+
+			lib icu$(libtxt) : :	<toolset>msvc 
+									<variant>debug 			
+									<address-model>64 
+									<name>icu$(libtxt)d 
+									<search>$(ICU_PATH)/lib64
+									<link>shared
+									<runtime-link>shared ;
+
+											
+			lib icu$(libtxt) : : 	<toolset>msvc 
+									<variant>debug 
+									<address-model>32 
+									<name>sicu$(libtxt)d 
+									<search>$(ICU_PATH)/lib 
+									<link>static 
+									<runtime-link>static ;
+									
+			lib icu$(libtxt) : : 	<toolset>msvc 
+									<variant>release 
+									<address-model>32 
+									<name>sicu$(libtxt)
+									<search>$(ICU_PATH)/lib 
+									<link>static 
+									<runtime-link>static ;
+									
+			lib icu$(libtxt) : :	<toolset>msvc 
+									<variant>release 
+									<address-model>32 
+									<name>icu$(libtxt)
+									<search>$(ICU_PATH)/lib 
+									<link>shared 
+									<runtime-link>shared ;
+
+			lib icu$(libtxt) : :	<toolset>msvc 
+									<variant>debug
+									<address-model>32 
+									<name>icu$(libtxt)d
+									<search>$(ICU_PATH)/lib
+									<link>shared
+									<runtime-link>shared 
+									<conditional>@path_options ;
+
+			lib icu$(libtxt) : :  <name>this_is_an_invalid_library_name ;
+		}
+	
+		explicit icuin ;
+		explicit icuuc ;
+		explicit icudt ;
+
+		
+		ICU_OPTS =
+			<include>$(ICU_PATH)/include 
+			<define>BOOST_HAS_ICU=1 
+			<library>icuin/<conditional>@path_options 
+			<library>icuuc/<conditional>@path_options 
+			<library>icudt/<conditional>@path_options 
+		;
 }
 
 obj has_icu_obj     : ../build/has_icu_test.cpp : $(ICU_OPTS)   ;
-obj has_icu64_obj   : ../build/has_icu_test.cpp : $(ICU64_OPTS) ;
-
 exe has_icu   : has_icu_obj   : $(ICU_OPTS)   ;
-exe has_icu64 : has_icu64_obj : $(ICU64_OPTS) ;
 
-explicit has_icu has_icu64 ;
+explicit has_icu ;
 
 
 # This function is called whenever the 'boost_locale' metatarget
 # below is generated and figures what external components we have,
 # what user wants, and what sources have to be compiled in the end.
 rule configure-full ( properties * : flags-only )
-{
-
+{	
     local result ;
     local flags-result ;
     
@@ -236,15 +212,53 @@
 
     if ! <boost.locale.icu>off in $(properties)
     {
-        if [ configure.builds has_icu : $(properties) : "icu" ]
+		local bits ;
+		local xbits = "" ;
+	
+		if <address-model>32 in $(properties) 
+		{
+			bits = "icu (32-bit)" ;
+		}
+		else if <address-model>64 in $(properties) 
+		{
+			bits = "icu (64-bit)" ;
+			xbits = "64" ;
+		}
+		
+	    if [ configure.builds has_icu : $(properties) : $(bits) ]
         {
             found-icu = true ;
             flags-result += <define>BOOST_LOCALE_WITH_ICU=1 $(ICU_OPTS) ;
-        }
-        else if [ configure.builds has_icu64 : $(properties) : "icu (lib64)" ]
-        {
-            found-icu = true ;
-            flags-result += <define>BOOST_LOCALE_WITH_ICU=1 $(ICU64_OPTS) ;
+			
+			flags-result += <include>$(ICU_PATH)/include ;
+			flags-result += <define>BOOST_HAS_ICU=1 ;
+			
+			if <toolset>msvc in $(properties) 
+			{ 
+				if <link>static in $(properties) && <runtime-link>static in $(properties) 
+				{
+					flags-result += <define>U_STATIC_IMPLEMENTATION=1 ;
+				
+					local libsuf = "" ;
+
+					if <variant>debug in $(properties) 
+					{
+						libsuf = "d" ;
+					}
+						
+					local iculibs = in uc dt ;
+			
+					for libtxt in $(iculibs)
+					{	
+						local p = $(ICU_PATH)/lib$(xbits)/sicu$(libtxt)$(libsuf).lib ;		
+						flags-result += <archiveflags>$(p) ; 
+					}
+				}
+				else
+				{
+					flags-result += <define>BOOST_LOCALE_DYN_LINK=1 ;
+				}
+			}
         }
 
         if $(found-icu)
@@ -432,7 +446,6 @@
     :
       # Don't link explicitly, not required
       <define>BOOST_THREAD_NO_LIB=1
-      <link>shared:<define>BOOST_LOCALE_DYN_LINK=1
       <threading>multi
       # Meanwhile remove this
       <conditional>@configure
diff -Naur boost-1.61.0.orig/libs/regex/build/has_icu_test.cpp boost-1.61.0.patched/libs/regex/build/has_icu_test.cpp
--- boost-1.61.0.orig/libs/regex/build/has_icu_test.cpp	2016-05-06 00:13:00.000000000 +0300
+++ boost-1.61.0.patched/libs/regex/build/has_icu_test.cpp	2016-05-16 15:38:19.710321000 +0300
@@ -10,29 +10,21 @@
  */
 
 #include <unicode/uversion.h>
+#include <unicode/locid.h>
 #include <unicode/utypes.h>
 #include <unicode/uchar.h>
 #include <unicode/coll.h>
-#include <boost/scoped_ptr.hpp>
-#include <iostream>
-#include <iomanip>
 
+/*
 #if defined(_MSC_VER) && !defined(_DLL)
 #error "Mixing ICU with a static runtime doesn't work"
 #endif
-
+*/
 int main()
 {
-   // To detect possible binary mismatches between the installed ICU build, and whatever
-   // C++ std lib's we're using, we need to:
-   // * Make sure we call ICU C++ API's
-   // * Make sure we call std lib C++ API's as well (cout).
-   // * Be sure this program is run, not just built.
+   icu::Locale loc;
    UErrorCode err = U_ZERO_ERROR;
    UChar32 c = ::u_charFromName(U_UNICODE_CHAR_NAME, "GREEK SMALL LETTER ALPHA", &err);
-   std::cout << (int)c << std::endl;
-   if(err > 0) return err;
-   U_NAMESPACE_QUALIFIER Locale l;
-   boost::scoped_ptr<U_NAMESPACE_QUALIFIER Collator> p_col(U_NAMESPACE_QUALIFIER Collator::createInstance(l, err));
-   return err > 0 ? err : 0;
+   return err;
 }
+
diff -Naur boost-1.61.0.orig/libs/regex/build/Jamfile.v2 boost-1.61.0.patched/libs/regex/build/Jamfile.v2
--- boost-1.61.0.orig/libs/regex/build/Jamfile.v2	2016-05-06 00:13:00.000000000 +0300
+++ boost-1.61.0.patched/libs/regex/build/Jamfile.v2	2016-05-16 15:38:19.713321200 +0300
@@ -1,9 +1,30 @@
+#
+# This is a modified Jamfile for Boost.Regex 
+# It is supposed to be used ONLY on Windows with MSVC!!
+# 
+# It links Boost.Regex properly against the shared/static ICU libraries.
+# Note: Using this you can only get static with static runtimes.
+#       If you mix static linking without shared runtimes and vice
+#       versa do not expect it to work or even compile properly.
+# 
+# To use it do: 
+#     b2 -sICU_PATH=D:\dev\icu link=shared runtime-link=shared --with-regex
+# or
+#     b2 -sICU_PATH=D:\dev\icu link=static runtime-link=static --with-regex 
+#
+# stathis - 2016/01/26
+#
+
 # copyright John Maddock 2003
 # 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.
 
+import configure ;
 import modules ;
+import common ; 
+import regex ; 
+import feature ;
 
 project : requirements
    # default to all warnings on:
@@ -22,17 +43,31 @@
     else
     {
     	result = <search>$(ICU_PATH)/bin <search>$(ICU_PATH)/lib ;
-    }
+    }  
+		
     return $(result) ;
 }
 
+rule print_options ( properties * )
+{
+	echo "                " ;
+	echo "==== Configuration Properties ====" ;
+	echo "                " ;
+
+	for a in $(properties)
+	{
+		echo "       " $(a) ;
+	}
+	
+	echo "                " ;
+	echo "==================================" ;
+}
 
 #
 # ICU configuration:
 #
 if ! $(disable-icu)
 {
-
    if [ modules.peek : ICU_PATH ]
    {    
        ICU_PATH =  [ modules.peek : ICU_PATH ] ;
@@ -48,91 +83,181 @@
    }
    else
    {
-      lib icuuc : :                                                               <link>shared <runtime-link>shared <conditional>@path_options ;
-      lib icuuc : : <toolset>msvc                     <variant>debug <name>icuucd <link>shared <runtime-link>shared <conditional>@path_options ;
-      lib icuuc : : <toolset>intel <target-os>windows <variant>debug <name>icuucd <link>shared <runtime-link>shared <conditional>@path_options ;
-      lib icuuc : : <name>this_is_an_invalid_library_name ;
-
-      lib icudt : : <name>icudata                                   <link>shared <runtime-link>shared <conditional>@path_options ;
-      lib icudt : : <name>icudt   <toolset>msvc                     <link>shared <runtime-link>shared <conditional>@path_options ;
-      lib icudt : : <name>icudt   <toolset>intel <target-os>windows <link>shared <runtime-link>shared <conditional>@path_options ;
-      lib icudt : : <name>this_is_an_invalid_library_name ;
-
-      lib icuin : :                                                    <name>icui18n <link>shared <runtime-link>shared <conditional>@path_options ;
-      lib icuin : : <toolset>msvc                     <variant>debug   <name>icuind  <link>shared <runtime-link>shared <conditional>@path_options ;
-      lib icuin : : <toolset>msvc                                      <name>icuin   <link>shared <runtime-link>shared <conditional>@path_options ;
-      lib icuin : : <toolset>intel <target-os>windows <variant>debug   <name>icuind  <link>shared <runtime-link>shared <conditional>@path_options ;
-      lib icuin : : <toolset>intel <target-os>windows                  <name>icuin   <link>shared <runtime-link>shared <conditional>@path_options ;
-      lib icuin : : <name>this_is_an_invalid_library_name ;
-
-      if $(ICU_PATH)
-      {
-         icuucd_name = [ GLOB $(ICU_PATH)/bin : icuuc??d.dll ] ;
-         if ! $(icuucd_name)
-         {
-            icuucd_name = [ GLOB $(ICU_PATH)/bin64 : icuuc??d.dll ] ;
-         }
-         icuuc_name = [ GLOB $(ICU_PATH)/bin : icuuc??.dll ] ;
-         if ! $(icuuc_name)
-         {
-            icuuc_name = [ GLOB $(ICU_PATH)/bin64 : icuuc??.dll ] ;
-         }
-         icudt_name = [ GLOB $(ICU_PATH)/bin : icudt??.dll ] ;
-         if ! $(icudt_name)
-         {
-            icudt_name = [ GLOB $(ICU_PATH)/bin64 : icudt??.dll ] ;
-         }
-         icuin_name = [ GLOB $(ICU_PATH)/bin : icuin??.dll ] ;
-         if ! $(icuin_name)
-         {
-            icuin_name = [ GLOB $(ICU_PATH)/bin64 : icuin??.dll ] ;
-         }
-         icuind_name = [ GLOB $(ICU_PATH)/bin : icuin??d.dll ] ;
-         if ! $(icuind_name)
-         {
-            icuind_name = [ GLOB $(ICU_PATH)/bin64 : icuin??d.dll ] ;
-         }
-
-         #ECHO $(icuucd_name:B) $(icuuc_name:B) $(icudt_name:B) $(icuin_name:B) $(icuind_name:B) ;
-      }
-
-      ICU_OPTS = 
-         <include>$(ICU_PATH)/include 
-         <library>icuuc/<link>shared/<runtime-link>shared 
-         <library>icudt/<link>shared/<runtime-link>shared 
-         <library>icuin/<link>shared/<runtime-link>shared 
-         <define>BOOST_HAS_ICU=1 
-         <runtime-link>shared
-         # As of ICU-54 this does not work anymore (release mode):
-         #<toolset>msvc:<linkflags>/delayload:$(icuucd_name:B).dll
-         #<toolset>msvc:<linkflags>/delayload:$(icuuc_name:B).dll
-         #<toolset>msvc:<linkflags>/delayload:$(icudt_name:B).dll
-         #<toolset>msvc:<linkflags>/delayload:$(icuin_name:B).dll
-         #<toolset>msvc:<linkflags>/delayload:$(icuind_name:B).dll
-         #<toolset>msvc:<linkflags>delayimp.lib 
-         ;
-   }
+		local iculibs = in uc dt ;
+		
+		for libtxt in $(iculibs)
+		{										
+			lib icu$(libtxt) : : 	<toolset>msvc 
+									<variant>debug 
+									<address-model>64 
+									<name>sicu$(libtxt)d 
+									<search>$(ICU_PATH)/lib64 
+									<link>static 
+									<runtime-link>static ;
+									
+			lib icu$(libtxt) : : 	<toolset>msvc 
+									<variant>release 
+									<address-model>64 
+									<name>sicu$(libtxt) 
+									<search>$(ICU_PATH)/lib64 
+									<link>static 
+									<runtime-link>static ;
+									
+			lib icu$(libtxt) : : 	<toolset>msvc 
+									<variant>release 
+									<address-model>64 
+									<name>icu$(libtxt) 
+									<search>$(ICU_PATH)/lib64 
+									<link>shared 
+									<runtime-link>shared ;
+
+			lib icu$(libtxt) : :	<toolset>msvc 
+									<variant>debug 			
+									<address-model>64 
+									<name>icu$(libtxt)d 
+									<search>$(ICU_PATH)/lib64
+									<link>shared
+									<runtime-link>shared ;
+
+											
+			lib icu$(libtxt) : : 	<toolset>msvc 
+									<variant>debug 
+									<address-model>32 
+									<name>sicu$(libtxt)d 
+									<search>$(ICU_PATH)/lib 
+									<link>static 
+									<runtime-link>static ;
+									
+			lib icu$(libtxt) : : 	<toolset>msvc 
+									<variant>release 
+									<address-model>32 
+									<name>sicu$(libtxt)
+									<search>$(ICU_PATH)/lib 
+									<link>static 
+									<runtime-link>static ;
+									
+			lib icu$(libtxt) : :	<toolset>msvc 
+									<variant>release 
+									<address-model>32 
+									<name>icu$(libtxt)
+									<search>$(ICU_PATH)/lib 
+									<link>shared 
+									<runtime-link>shared ;
+
+			lib icu$(libtxt) : :	<toolset>msvc 
+									<variant>debug
+									<address-model>32 
+									<name>icu$(libtxt)d
+									<search>$(ICU_PATH)/lib
+									<link>shared
+									<runtime-link>shared 
+									<conditional>@path_options ;
+
+			lib icu$(libtxt) : :  <name>this_is_an_invalid_library_name ;
+		}
+	
+		explicit icuin ;
+		explicit icuuc ;
+		explicit icudt ;
+
+		
+		ICU_OPTS =
+			<include>$(ICU_PATH)/include 
+			<define>BOOST_HAS_ICU=1 
+			<library>icuin/<conditional>@path_options 
+			<library>icuuc/<conditional>@path_options 
+			<library>icudt/<conditional>@path_options 
+		;
 
+	}
 }
 
-actions regex_simple_run_action
+
+obj has_icu_obj     : ../build/has_icu_test.cpp : $(ICU_OPTS)   ;
+exe has_icu   : has_icu_obj   : $(ICU_OPTS)   ;
+
+explicit has_icu ;
+
+
+# This function is called whenever the 'boost_locale' metatarget
+# below is generated and figures what external components we have,
+# what user wants, and what sources have to be compiled in the end.
+rule configure-full ( properties * : flags-only )
 {
-      $(>) > $(<)
+    local result ;
+    local flags-result ;
+    local found-icu ;
+	
+    if ! <boost.regex.icu>off in $(properties)
+    {
+		local bits ;
+		local xbits = "" ;
+		
+		if <address-model>32 in $(properties) 
+		{
+			bits = "icu (32-bit)" ;
+		}
+		else if <address-model>64 in $(properties) 
+		{
+			bits = "icu (64-bit)" ;
+			xbits = "64" ;
+		}
+			
+        if [ configure.builds has_icu : $(properties) : $(bits) ]
+        {
+            found-icu = true ;
+            flags-result += <define>BOOST_REGEX_WITH_ICU=1 $(ICU_OPTS) ;
+
+			flags-result += <include>$(ICU_PATH)/include ;
+			flags-result += <define>BOOST_HAS_ICU=1 ;
+			
+			if <toolset>msvc in $(properties) 
+			{ 
+				if <link>static in $(properties) && <runtime-link>static in $(properties) 
+				{
+					flags-result += <define>U_STATIC_IMPLEMENTATION=1 ;
+				
+					local libsuf = "" ;
+
+					if <variant>debug in $(properties) 
+					{
+						libsuf = "d" ;
+					}
+						
+					local iculibs = in uc dt ;
+			
+					for libtxt in $(iculibs)
+					{	
+						local p = $(ICU_PATH)/lib$(xbits)/sicu$(libtxt)$(libsuf).lib ;		
+						flags-result += <archiveflags>$(p) ; 
+					}
+				}
+				else
+				{
+					flags-result += <define>BOOST_REGEX_DYN_LINK=1 ;
+				}
+			}
+        }
+    }
+	
+    if "$(flags-only)" = "flags" 
+    {
+        return $(flags-result) ;
+    }
+    else {
+        result += $(flags-result) ;
+        return $(result) ;
+    }
+	   
 }
 
-rule regex-run-simple ( sources + : args * : input-files * : requirements * : target-name )
+rule configure ( properties * )
 {
-   exe $(target-name)_exe : $(sources) : $(requirements) ;
-   explicit $(target-name)_exe ;
-   make $(target-name).output : $(target-name)_exe : @regex_simple_run_action ;
-   explicit $(target-name).output ;
-   alias $(target-name) : $(target-name).output ;
+    local result = [ configure-full $(properties) : "all" ] ;
+    return $(result) ;
+    
 }
 
-regex-run-simple has_icu_test.cpp : : : $(ICU_OPTS) : has_icu ;
-explicit has_icu ;
-
-alias icu_options : : : : [ check-target-builds has_icu : $(ICU_OPTS) : ] ;
 
 SOURCES = 
    c_regex_traits.cpp
@@ -154,21 +279,9 @@
    usinstances.cpp ;
 
 
-lib boost_regex : ../src/$(SOURCES) icu_options
-    :         
-	     <link>shared:<define>BOOST_REGEX_DYN_LINK=1
-	     #<toolset>gcc-mw:<link>static
-	     #<toolset>gcc-mingw:<link>static
-	     <toolset>gcc-cygwin:<link>static
-        <toolset>sun:<link>static
+lib boost_regex : ../src/$(SOURCES)
+    :
+		<conditional>@configure 
     ;
 
 boost-install boost_regex ;
-
-
-
-
-
-
-
-
