diff --git a/.hgpatchinfo/Viewer-Build.dep b/.hgpatchinfo/Viewer-Build.dep
new file mode 100644
index 0000000000000000000000000000000000000000..de57da570ac4fc96de954d3a386529d62c73d94d
--- /dev/null
+++ b/.hgpatchinfo/Viewer-Build.dep
@@ -0,0 +1 @@
+b7f03886bbc7e99e1b8ee5668ba0fefbde9b295a
\ No newline at end of file
diff --git a/.hgpatchinfo/Viewer-Build.desc b/.hgpatchinfo/Viewer-Build.desc
new file mode 100644
index 0000000000000000000000000000000000000000..949cbb49bf63213f7f8d139f700323ed3b4b0ceb
--- /dev/null
+++ b/.hgpatchinfo/Viewer-Build.desc
@@ -0,0 +1,3 @@
+[Viewer/Build]
+- changed: compiler options for "Release with Debug" builds
+- changed: compiler and linker options for "Release" builds
diff --git a/.hgtags b/.hgtags
index 8b1b58bc5e5600506c76cd47c7e257db182b238f..9139aae9a4ac2ec79d98a995cd93944c6d0d954a 100644
--- a/.hgtags
+++ b/.hgtags
@@ -8,18 +8,47 @@
 3469d90a115b900f8f250e137bbd9b684130f5d2 beta-4
 3e4b947f79d88c385e8218cbc0731cef0e42cfc4 2-1-beta-1
 46002088d9a4489e323b8d56131c680eaa21258c viewer-2-1-0-start
+4f777ffb99fefdc6497c61385c22688ff149c659 SL-2.0.0
 4f777ffb99fefdc6497c61385c22688ff149c659 viewer-2-0-0
 52d96ad3d39be29147c5b2181b3bb46af6164f0e alpha-3
 668851b2ef0f8cf8df07a0fba429e4a6c1e70abb viewer-2-0-1
+668851b2ef0f8cf8df07a0fba429e4a6c1e70abb SL-2.0.1
 6e3b2e13906ba8ff22d3c8490b02d518adb2c907 2-1-1-beta-2
 7f16e79826d377f5f9f5b33dc721ab56d0d7dc8f alpha-4
 7f16e79826d377f5f9f5b33dc721ab56d0d7dc8f fork to viewer-20qa
 80bc6cff515118a36108967af49d3f8105c95bc9 viewer-2-0-2-start
 b03065d018b8a2e28b7de85b293a4c992cb4c12d 2-1-release
+b03065d018b8a2e28b7de85b293a4c992cb4c12d SL-2.1.0
 b8419565906e4feb434426d8d9b17dd1458e24b2 alpha-6
 bb38ff1a763738609e1b3cada6d15fa61e5e84b9 2-1-1-release
+bb38ff1a763738609e1b3cada6d15fa61e5e84b9 SL-2.1.1
 c6969fe44e58c542bfc6f1bd6c0be2fa860929ac 2-1-beta-4
 d2382d374139850efa5bb6adfb229e3e656cfc40 howard-demo
 d40ac9dd949cba6dab1cc386da6a2027690c2519 alpha-5
 d6781e22543acd7e21b967209f3c6e7003d380e3 fork to viewer-2-0
 c6e6324f5be1401f077ad18a4a0f6b46451c2f7b last_sprint
+0000000000000000000000000000000000000000 v2start
+0000000000000000000000000000000000000000 2-1rn1
+0000000000000000000000000000000000000000 2-1-beta-2
+0000000000000000000000000000000000000000 beta-5
+0000000000000000000000000000000000000000 beta-3-5
+0000000000000000000000000000000000000000 2-1-1-beta-1
+0000000000000000000000000000000000000000 2-1-beta-3
+0000000000000000000000000000000000000000 beta-4
+0000000000000000000000000000000000000000 2-1-beta-1
+0000000000000000000000000000000000000000 viewer-2-1-0-start
+0000000000000000000000000000000000000000 viewer-2-0-0
+0000000000000000000000000000000000000000 alpha-3
+0000000000000000000000000000000000000000 viewer-2-0-1
+0000000000000000000000000000000000000000 2-1-1-beta-2
+0000000000000000000000000000000000000000 alpha-4
+0000000000000000000000000000000000000000 fork to viewer-20qa
+0000000000000000000000000000000000000000 viewer-2-0-2-start
+0000000000000000000000000000000000000000 2-1-release
+0000000000000000000000000000000000000000 alpha-6
+0000000000000000000000000000000000000000 2-1-1-release
+0000000000000000000000000000000000000000 2-1-beta-4
+0000000000000000000000000000000000000000 howard-demo
+0000000000000000000000000000000000000000 alpha-5
+0000000000000000000000000000000000000000 fork to viewer-2-0
+0000000000000000000000000000000000000000 last_sprint
diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake
index a114d6e7783497b8ad194ee5eb9263617ca1c560..8ba2d92b3ebd789ca3ca6967f999a75ad5bd8ea7 100644
--- a/indra/cmake/00-Common.cmake
+++ b/indra/cmake/00-Common.cmake
@@ -38,10 +38,10 @@ if (WINDOWS)
   set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Od /Zi /MDd /MP"
       CACHE STRING "C++ compiler debug options" FORCE)
   set(CMAKE_CXX_FLAGS_RELWITHDEBINFO 
-      "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Od /Zi /MD /MP"
+      "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Od /Zi /MD /Gm"
       CACHE STRING "C++ compiler release-with-debug options" FORCE)
   set(CMAKE_CXX_FLAGS_RELEASE
-      "${CMAKE_CXX_FLAGS_RELEASE} ${LL_CXX_FLAGS} /O2 /Zi /MD /MP"
+      "${CMAKE_CXX_FLAGS_RELEASE} ${LL_CXX_FLAGS} /O2 /Zi /MD /Oi /Ot /GF /Gy /arch:SSE2"
       CACHE STRING "C++ compiler release options" FORCE)
 
   set(CMAKE_CXX_STANDARD_LIBRARIES "")
@@ -78,6 +78,20 @@ if (WINDOWS)
   # configure win32 API for windows XP+ compatibility
   set(WINVER "0x0501" CACHE STRING "Win32 API Target version (see http://msdn.microsoft.com/en-us/library/aa383745%28v=VS.85%29.aspx)")
   add_definitions("/DWINVER=${WINVER}" "/D_WIN32_WINNT=${WINVER}")
+    
+  # Various libs are compiler specific, generate some variables here we can just use
+  # when we require them instead of reimplementing the test each time.
+  if (MSVC71)
+	set(MSVC_DIR 7.1)
+	set(MSVC_SUFFIX 71)
+  elseif (MSVC80)
+	set(MSVC_DIR 8.0)
+	set(MSVC_SUFFIX 80)
+  elseif (MSVC90)
+	set(MSVC_DIR 9.0)
+	set(MSVC_SUFFIX 90)
+  endif (MSVC71)
+  
 endif (WINDOWS)
 
 
diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake
index 7ce57a5572336c4927a7f2b6e4e97d4e3aecb745..dcbc801663e971347d75d7407f68d42578978587 100644
--- a/indra/cmake/Boost.cmake
+++ b/indra/cmake/Boost.cmake
@@ -16,27 +16,30 @@ else (STANDALONE)
 
   if (WINDOWS)
     set(BOOST_VERSION 1_39)
-    if (MSVC71)
-      set(BOOST_PROGRAM_OPTIONS_LIBRARY 
-          optimized libboost_program_options-vc71-mt-s-${BOOST_VERSION}
-          debug libboost_program_options-vc71-mt-sgd-${BOOST_VERSION})
-      set(BOOST_REGEX_LIBRARY
-          optimized libboost_regex-vc71-mt-s-${BOOST_VERSION}
-          debug libboost_regex-vc71-mt-sgd-${BOOST_VERSION})
-      set(BOOST_SIGNALS_LIBRARY 
-          optimized libboost_signals-vc71-mt-s-${BOOST_VERSION}
-          debug libboost_signals-vc71-mt-sgd-${BOOST_VERSION})
-    else (MSVC71)
-      set(BOOST_PROGRAM_OPTIONS_LIBRARY 
-          optimized libboost_program_options-vc80-mt-${BOOST_VERSION}
-          debug libboost_program_options-vc80-mt-gd-${BOOST_VERSION})
-      set(BOOST_REGEX_LIBRARY
-          optimized libboost_regex-vc80-mt-${BOOST_VERSION}
-          debug libboost_regex-vc80-mt-gd-${BOOST_VERSION})
-      set(BOOST_SIGNALS_LIBRARY 
-          optimized libboost_signals-vc80-mt-${BOOST_VERSION}
-          debug libboost_signals-vc80-mt-gd-${BOOST_VERSION})
-    endif (MSVC71)
+   
+	# SNOW-788
+	# 00-Common.cmake alreay sets MSVC_SUFFIX to be correct for the VS we are using eg VC71, VC80, VC90 etc
+	# The precompiled boost libs for VC71 use a different suffix to VS80 and VS90
+	# This code should ensure the cmake rules are valid for any VS being used in future as long as the approprate
+	# boost libs are avaiable - RC.
+	
+	if (MSVC71)
+	    set(BOOST_OPTIM_SUFFIX mt-s)
+	    set(BOOST_DEBUG_SUFFIX mt-sgd)
+	else (MSVC71)
+	    set(BOOST_OPTIM_SUFFIX mt)
+	    set(BOOST_DEBUG_SUFFIX mt-gd)
+	endif (MSVC71)
+		
+    set(BOOST_PROGRAM_OPTIONS_LIBRARY 
+          optimized libboost_program_options-vc${MSVC_SUFFIX}-${BOOST_OPTIM_SUFFIX}-${BOOST_VERSION}
+          debug libboost_program_options-vc${MSVC_SUFFIX}-${BOOST_DEBUG_SUFFIX}-${BOOST_VERSION})
+    set(BOOST_REGEX_LIBRARY
+          optimized libboost_regex-vc${MSVC_SUFFIX}-${BOOST_OPTIM_SUFFIX}-${BOOST_VERSION}
+          debug libboost_regex-vc${MSVC_SUFFIX}-${BOOST_DEBUG_SUFFIX}-${BOOST_VERSION})
+    set(BOOST_SIGNALS_LIBRARY 
+          optimized libboost_signals-vc${MSVC_SUFFIX}-${BOOST_OPTIM_SUFFIX}-${BOOST_VERSION}
+          debug libboost_signals-vc${MSVC_SUFFIX}-${BOOST_DEBUG_SUFFIX}-${BOOST_VERSION})
   elseif (DARWIN)
     set(BOOST_PROGRAM_OPTIONS_LIBRARY boost_program_options-xgcc40-mt)
     set(BOOST_REGEX_LIBRARY boost_regex-xgcc40-mt)
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 630902c48f5dcafdcc0d3d9a8e93de4b1e4bdb00..ac710dea48c36e80accaaa18ccf8785f198b1930 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1402,7 +1402,7 @@ if (WINDOWS)
     if(MSVC71)
         set(release_flags "/MAP:Release/${VIEWER_BINARY_NAME}.map /MAPINFO:LINES")
     else(MSVC71)
-        set(release_flags "/MAP:Release/${VIEWER_BINARY_NAME}.map")
+        set(release_flags "/MAP:Release/${VIEWER_BINARY_NAME}.map /OPT:REF")
     endif(MSVC71)
     
     set_target_properties(${VIEWER_BINARY_NAME}