Index: boost/config/compiler/cray.hpp
===================================================================
--- boost/config/compiler/cray.hpp	(revision 374)
+++ boost/config/compiler/cray.hpp	(revision 384)
@@ -22,11 +22,12 @@
 
 #include "boost/config/compiler/common_edg.hpp"
 
+
 //
 // Cray peculiarities, probably version 7 specific:
 //
-#undef BOOST_NO_CXX11_AUTO_DECLARATIONS
-#undef BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#define BOOST_NO_CXX11_AUTO_DECLARATIONS
+#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
 #define BOOST_HAS_NRVO
 #define BOOST_NO_CXX11_VARIADIC_TEMPLATES
 #define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
@@ -63,3 +64,5 @@
 #define BOOST_SP_USE_PTHREADS
 #define BOOST_AC_USE_PTHREADS
 
+//#undef __GNUC__  Try plan A first.
+
Index: boost/interprocess/detail/atomic.hpp
===================================================================
--- boost/interprocess/detail/atomic.hpp	(revision 374)
+++ boost/interprocess/detail/atomic.hpp	(revision 384)
@@ -93,7 +93,7 @@
 }  //namespace interprocess{
 }  //namespace boost{
 
-#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
+#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) && !defined(_CRAYC)
 
 namespace boost {
 namespace interprocess {
Index: boost/asio/detail/fenced_block.hpp
===================================================================
--- boost/asio/detail/fenced_block.hpp	(revision 374)
+++ boost/asio/detail/fenced_block.hpp	(revision 384)
@@ -29,7 +29,7 @@
 # include <boost/asio/detail/gcc_arm_fenced_block.hpp>
 #elif defined(__GNUC__) && (defined(__hppa) || defined(__hppa__))
 # include <boost/asio/detail/gcc_hppa_fenced_block.hpp>
-#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
+#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) && !defined(_CRAYC)
 # include <boost/asio/detail/gcc_x86_fenced_block.hpp>
 #elif defined(__GNUC__) \
   && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) \
@@ -58,7 +58,7 @@
 typedef gcc_arm_fenced_block fenced_block;
 #elif defined(__GNUC__) && (defined(__hppa) || defined(__hppa__))
 typedef gcc_hppa_fenced_block fenced_block;
-#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
+#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) && !defined(_CRAYC)
 typedef gcc_x86_fenced_block fenced_block;
 #elif defined(__GNUC__) \
   && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) \
Index: libs/log/src/dump.cpp
===================================================================
--- libs/log/src/dump.cpp	(revision 374)
+++ libs/log/src/dump.cpp	(revision 384)
@@ -113,7 +113,7 @@
 BOOST_LOG_API dump_data_char32_t* dump_data_char32 = &dump_data_generic< char32_t >;
 #endif
 
-#if defined(BOOST_LOG_USE_SSSE3) || defined(BOOST_LOG_USE_AVX2)
+#if (defined(BOOST_LOG_USE_SSSE3) || defined(BOOST_LOG_USE_AVX2)) && !defined(_CRAYC)
 
 BOOST_LOG_ANONYMOUS_NAMESPACE {
 
Index: tools/build/v2/tools/cray.jam
===================================================================
--- tools/build/v2/tools/cray.jam	(revision 374)
+++ tools/build/v2/tools/cray.jam	(revision 384)
@@ -47,24 +47,31 @@
 generators.register-c-compiler cray.compile.c : C : OBJ : <toolset>cray ;
 
 
-
-# No static linking as far as I can tell.
+# unlike most compliers, Cray defaults to static linking.
 # flags cxx LINKFLAGS <runtime-link>static : -bstatic ;
-flags cray.compile OPTIONS <debug-symbols>on : -Gn ;
-flags cray.link OPTIONS <debug-symbols>on : -Gn ;
+flags cray.compile OPTIONS <debug-symbols>on : -G0 ;
+flags cray.link OPTIONS <debug-symbols>on : -G0 ;
 
 flags cray.compile OPTIONS <optimization>off : -O0 ;
-flags cray.compile OPTIONS <optimization>speed : -O3 ;
+flags cray.compile OPTIONS <optimization>speed : -O2 ;
 flags cray.compile OPTIONS <optimization>space : -O1 ;
 
+# flags cray.compile OPTIONS <inlining>off  : -hipa0 ;
+# flags cray.compile OPTIONS <inlining>on   : ;
+# flags cray.compile OPTIONS <inlining>full : -hipa5 ;
+
 flags cray.compile OPTIONS <cflags> ;
 flags cray.compile.c++ OPTIONS <cxxflags> ;
 flags cray.compile DEFINES <define> ;
 flags cray.compile INCLUDES <include> ;
 flags cray.link OPTIONS <linkflags> ;
 
-flags cray.compile OPTIONS <link>shared : -fPIC ;
-flags cray.link OPTIONS <link>shared : -fPIC ;
+flags cray.compile OPTIONS : -hgnu -fPIC -h system_alloc -h tolerant -h ipa0 ;
+flags cray.compile OPTIONS <link>shared : -dynamic ;
+flags cray.compile OPTIONS <link>static : -static ;
+flags cray.link OPTIONS <link>static : -static ;
+flags cray.link OPTIONS <link>shared : ;
+flags cray.link LOPTIONS <link>shared : -dynamic ;
 
 flags cray.link LIBPATH <library-path> ;
 flags cray.link LIBRARIES <library-file> ;
@@ -73,7 +80,7 @@
 
 actions link bind LIBRARIES
 {
-    $(CONFIG_COMMAND) $(OPTIONS) -o "$(<)" -L$(LIBPATH) "$(>)" "$(LIBRARIES)" -l$(FINDLIBS-ST) -l$(FINDLIBS-SA)
+    $(CONFIG_COMMAND) $(OPTIONS) $(LOPTIONS) -o "$(<)" -L$(LIBPATH) "$(>)" "$(LIBRARIES)" -l$(FINDLIBS-ST) -l$(FINDLIBS-SA)
 }
 
 # When creating dynamic libraries, we don't want to be warned about unresolved
@@ -83,7 +90,7 @@
 
 actions link.dll bind LIBRARIES
 {
-    $(CONFIG_COMMAND) -shared $(OPTIONS) -o "$(<[1])" -L$(LIBPATH)  "$(>)" "$(LIBRARIES)" -l$(FINDLIBS-ST) -l$(FINDLIBS-SA)
+    $(CONFIG_COMMAND) -o "$(<[1])" -Wl,-h -Wl,$(<[-1]:D=) -shared -L$(LIBPATH)  "$(>)" "$(LIBRARIES)" -l$(FINDLIBS-ST) -l$(FINDLIBS-SA) $(OPTIONS)
 }
 
 
@@ -103,7 +110,7 @@
 
 actions compile.c++
 {
-    $(CONFIG_COMMAND) -c -h gnu $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -o "$(<)" "$(>)"
+    $(CONFIG_COMMAND) -c $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -o "$(<)" "$(>)"
 }
 
 # Always create archive from scratch. See the gcc toolet for rationale.

