diff --git a/indra/cmake/DeploySharedLibs.cmake b/indra/cmake/DeploySharedLibs.cmake
index a7e772bd7501e3d67c9fb58b779bfc57be88f137..663c272e502ffca8e33b2e7c7784e672a85bf687 100644
--- a/indra/cmake/DeploySharedLibs.cmake
+++ b/indra/cmake/DeploySharedLibs.cmake
@@ -6,8 +6,14 @@
 # BIN_NAME= The full path the the binary to search for dependecies.
 # SEARCH_DIRS= The full paths to dirs to search for dependencies.
 # DST_PATH= The full path where the dependecies will be copied. 
-include(GetPrerequisites)
+
+# *FIX:Mani - I pulled in the CMake 2.8 GetPrerequisites.cmake script here, because it works on windows where 2.6 did not.
+# Once we have officially upgraded to 2.8 we can just use that version of GetPrerequisites.cmake.
+get_filename_component(current_dir ${CMAKE_CURRENT_LIST_FILE} PATH)
+include(${current_dir}/GetPrerequisites_2_8.cmake)
+
 message("Getting recursive dependencies for file: ${BIN_NAME}")
+
 set(EXCLUDE_SYSTEM 1)
 set(RECURSE 1)
 get_filename_component(EXE_PATH ${BIN_NAME} PATH)
@@ -26,42 +32,42 @@ endif(DEP_FILES)
 
 foreach(DEP_FILE ${DEP_FILES})
   if(FOUND_FILES)
-	list(FIND FOUND_FILES ${DEP_FILE} FOUND)
+    list(FIND FOUND_FILES ${DEP_FILE} FOUND)
   else(FOUND_FILES)
-	set(FOUND -1)
+    set(FOUND -1)
   endif(FOUND_FILES)
 
   if(FOUND EQUAL -1)
-	find_path(DEP_PATH ${DEP_FILE} PATHS ${SEARCH_DIRS} NO_DEFAULT_PATH)
-	if(DEP_PATH)
-	  set(FOUND_FILES ${FOUND_FILES} "${DEP_PATH}/${DEP_FILE}")
-	  set(DEP_PATH NOTFOUND) #reset DEP_PATH for the next find_path call.
-	else(DEP_PATH)
-	  set(MISSING_FILES ${MISSING_FILES} ${DEP_FILE})
-	endif(DEP_PATH)
+    find_path(DEP_PATH ${DEP_FILE} PATHS ${SEARCH_DIRS} NO_DEFAULT_PATH)
+    if(DEP_PATH)
+      set(FOUND_FILES ${FOUND_FILES} "${DEP_PATH}/${DEP_FILE}")
+      set(DEP_PATH NOTFOUND) #reset DEP_PATH for the next find_path call.
+    else(DEP_PATH)
+      set(MISSING_FILES ${MISSING_FILES} ${DEP_FILE})
+    endif(DEP_PATH)
   endif(FOUND EQUAL -1)
 endforeach(DEP_FILE)
 
 if(MISSING_FILES)
   message("Missing:")
   foreach(FILE ${MISSING_FILES})
-	message("  ${FILE}")
+    message("  ${FILE}")
   endforeach(FILE)
   message("Searched in:")
   foreach(SEARCH_DIR ${SEARCH_DIRS})
-	message("  ${SEARCH_DIR}")
+    message("  ${SEARCH_DIR}")
   endforeach(SEARCH_DIR)
   message(FATAL_ERROR "Failed")
 endif(MISSING_FILES)
 
 if(FOUND_FILES)
   foreach(FILE ${FOUND_FILES})
-	get_filename_component(DST_FILE ${FILE} NAME)
-	set(DST_FILE "${DST_PATH}/${DST_FILE}")
-	message("Copying ${FILE} to ${DST_FILE}")
-	execute_process(
-	  COMMAND ${CMAKE_COMMAND} -E copy_if_different ${FILE} ${DST_FILE}
-	  )
+    get_filename_component(DST_FILE ${FILE} NAME)
+    set(DST_FILE "${DST_PATH}/${DST_FILE}")
+    message("Copying ${FILE} to ${DST_FILE}")
+    execute_process(
+      COMMAND ${CMAKE_COMMAND} -E copy_if_different ${FILE} ${DST_FILE}
+      )
   endforeach(FILE ${FOUND_FILES})
 endif(FOUND_FILES)
 message("Success!")
diff --git a/indra/cmake/LLSharedLibs.cmake b/indra/cmake/LLSharedLibs.cmake
index a8c81609bb90cc3d1946ce80e7dcce563800322e..28f0e7ad12b56d52ef4ad0990d4fcecd7bea5c44 100644
--- a/indra/cmake/LLSharedLibs.cmake
+++ b/indra/cmake/LLSharedLibs.cmake
@@ -1,9 +1,21 @@
+
+if(DARWIN)
+  set(TMP_PATH "../Resource")
+elseif(LINUX)
+  set(TMP_PATH "../lib")
+else(DARWIN)
+  set(TMP_PATH ".")
+endif(DARWIN)
+
+ set(SHARED_LIB_REL_PATH ${TMP_PATH} CACHE STRING "Relative path from executable to shared libs")
+
 # ll_deploy_sharedlibs_command
 # target_exe: the cmake target of the executable for which the shared libs will be deployed.
 # search_dirs: a list of dirs to search for the dependencies
 # dst_path: path to copy deps to, relative to the output location of the target_exe
 macro(ll_deploy_sharedlibs_command target_exe search_dirs dst_path) 
   get_target_property(OUTPUT_LOCATION ${target_exe} LOCATION)
+  get_filename_component(OUTPUT_PATH ${OUTPUT_LOCATION} PATH)
 
   if(DARWIN)
     get_target_property(IS_BUNDLE ${target_exe} MACOSX_BUNDLE)
@@ -12,16 +24,22 @@ macro(ll_deploy_sharedlibs_command target_exe search_dirs dst_path)
       set(OUTPUT_PATH ${OUTPUT_LOCATION}.app/Contents/MacOS)
       set(OUTPUT_LOCATION ${OUTPUT_PATH}/${TARGET_FILE})
     endif(IS_BUNDLE)
-  else(DARWIN)
-    message(FATAL_ERROR "Only darwin currently supported!")
   endif(DARWIN)
+
+  if(WINDOWS)
+    set(REAL_SEARCH_DIRS ${search_dirs} "$ENV{SystemRoot}/system32")
+  endif(WINDOWS)
+
+  if(LINUX)
+    message(FATAL_ERROR "LINUX Unsupported!?!")
+  endif(LINUX)
   
   add_custom_command(
     TARGET ${target_exe} POST_BUILD
     COMMAND ${CMAKE_COMMAND} 
     ARGS
     "-DBIN_NAME=\"${OUTPUT_LOCATION}\""
-    "-DSEARCH_DIRS=\"${search_dirs}\""
+    "-DSEARCH_DIRS=\"${REAL_SEARCH_DIRS}\""
     "-DDST_PATH=\"${OUTPUT_PATH}/${dst_path}\""
     "-P"
     "${CMAKE_SOURCE_DIR}/cmake/DeploySharedLibs.cmake"
diff --git a/indra/lib/python/indra/util/llmanifest.py b/indra/lib/python/indra/util/llmanifest.py
index 59c84e571b6d6c5470f635cad3c4866e07afe704..8c0521061899a96c59a92e1b257b3ba3e51e6c57 100644
--- a/indra/lib/python/indra/util/llmanifest.py
+++ b/indra/lib/python/indra/util/llmanifest.py
@@ -120,9 +120,8 @@ def get_channel(srctree):
          default=""),
     dict(name='build', description='Build directory.', default=DEFAULT_SRCTREE),
     dict(name='configuration',
-         description="""The build configuration used. Only used on OS X for
-        now, but it could be used for other platforms as well.""",
-         default="Universal"),
+         description="""The build configuration used.""",
+         default="Release"),
     dict(name='dest', description='Destination directory.', default=DEFAULT_SRCTREE),
     dict(name='grid',
          description="""Which grid the client will try to connect to. Even
diff --git a/indra/mac_crash_logger/CMakeLists.txt b/indra/mac_crash_logger/CMakeLists.txt
index 1d6494fecff6f1d201f2813f066c83fe393261f4..1c5a37c4c5dee776ad56bd5de50cdfc2ba4b6719 100644
--- a/indra/mac_crash_logger/CMakeLists.txt
+++ b/indra/mac_crash_logger/CMakeLists.txt
@@ -79,3 +79,4 @@ ll_deploy_sharedlibs_command(
   mac-crash-logger
   "${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR};${ARCH_PREBUILT_DIRS}" 
   "../Resources") 
+
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 0133d2222d9ef7a9631dee468ed2a70112397bc5..7b69bfc6ddcf42ef5ed5b207cf2b1625d8ba6850 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -185,7 +185,7 @@ set(viewer_SOURCE_FILES
     llfloatermediasettings.cpp
     llfloatermemleak.cpp
     llfloaternamedesc.cpp
-	llfloaternearbymedia.cpp
+        llfloaternearbymedia.cpp
     llfloaternotificationsconsole.cpp
     llfloateropenobject.cpp
     llfloaterparcel.cpp
@@ -666,7 +666,7 @@ set(viewer_HEADER_FILES
     llfloatermediasettings.h
     llfloatermemleak.h
     llfloaternamedesc.h
-	llfloaternearbymedia.h
+        llfloaternearbymedia.h
     llfloaternotificationsconsole.h
     llfloateropenobject.h
     llfloaterparcel.h
@@ -1140,7 +1140,7 @@ if (WINDOWS)
 
     if (NOT STANDALONE)
         list(APPEND viewer_SOURCE_FILES ${viewer_RESOURCE_FILES})
-    endif (NOT STANDALONE)	
+    endif (NOT STANDALONE)      
 
     find_library(DINPUT_LIBRARY dinput8 ${DIRECTX_LIBRARY_DIR})
     find_library(DXGUID_LIBRARY dxguid ${DIRECTX_LIBRARY_DIR})
@@ -1322,7 +1322,7 @@ file(GLOB EVENT_HOST_SCRIPT_GLOB_LIST
      ${CMAKE_CURRENT_SOURCE_DIR}/../viewer_components/*.py)
 list(APPEND EVENT_HOST_SCRIPTS ${EVENT_HOST_SCRIPT_GLOB_LIST})
 
-set(PACKAGE OFF CACHE BOOL
+set(PACKAGE ON CACHE BOOL
     "Add a package target that builds an installer package.")
 
 if (WINDOWS)
@@ -1351,7 +1351,7 @@ if (WINDOWS)
               ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.sln
               --workingdir
               ${VIEWER_BINARY_NAME}
-              ${CMAKE_CURRENT_SOURCE_DIR}
+              "./${CMAKE_CFG_INTDIR}"
             COMMENT "Setting the ${VIEWER_BINARY_NAME} working directory for debugging."
             )
     endif (NOT UNATTENDED)
@@ -1368,85 +1368,87 @@ if (WINDOWS)
         )
 
     add_custom_command(
-        TARGET ${VIEWER_BINARY_NAME} PRE_BUILD
-        COMMAND ${CMAKE_COMMAND}
-        ARGS
-          -E
-          copy_if_different
-          ${CMAKE_CURRENT_SOURCE_DIR}/../../etc/message.xml
-          ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/app_settings/message.xml
-        COMMENT "Copying message.xml to the runtime folder."
-        )
+      TARGET ${VIEWER_BINARY_NAME} PRE_BUILD
+      COMMAND ${CMAKE_COMMAND}
+      ARGS
+        -E
+        copy_if_different
+        ${CMAKE_CURRENT_SOURCE_DIR}/../../etc/message.xml
+        ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/app_settings/message.xml
+      COMMENT "Copying message.xml to the runtime folder."
+      )
        
-    if(WINDOWS)
-      # Copy Win Libs...
-      # This happens at build time, not config time. We can't glob files in this cmake.
-      # *FIX:Mani Write a sub script to glob the files...
-      # *FIX:Mani Use actually dependencies rather than bulk copy.
-      add_custom_command(
-        TARGET ${VIEWER_BINARY_NAME} PRE_BUILD
-        COMMAND ${CMAKE_COMMAND}
-        ARGS
-          -E
-          copy_directory
-          ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}
-          ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}
-        COMMENT "Copying staged dlls."
-        )
+    add_custom_command(
+      TARGET ${VIEWER_BINARY_NAME} POST_BUILD
+      COMMAND ${PYTHON_EXECUTABLE}
+      ARGS
+        ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
+        --actions=copy
+        --artwork=${ARTWORK_DIR}
+        --build=${CMAKE_CURRENT_BINARY_DIR}
+        --configuration=${CMAKE_CFG_INTDIR}
+        --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}
+        --grid=${GRID}
+        --source=${CMAKE_CURRENT_SOURCE_DIR}
+      DEPENDS ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
+      COMMENT "Performing viewer_manifest copy"
+      )
 
-      add_dependencies(${VIEWER_BINARY_NAME} stage_third_party_libs llcommon)
-      if(LLKDU_LIBRARY)
-	# kdu may not exist!
-	add_dependencies(${VIEWER_BINARY_NAME} llkdu)
-      endif(LLKDU_LIBRARY)
-    endif(WINDOWS)    
+    add_dependencies(${VIEWER_BINARY_NAME} stage_third_party_libs llcommon)
+    
+    if(LLKDU_LIBRARY)
+      # kdu may not exist!
+      add_dependencies(${VIEWER_BINARY_NAME} llkdu)
+    endif(LLKDU_LIBRARY)
 
     if (EXISTS ${CMAKE_SOURCE_DIR}/copy_win_scripts)
       add_dependencies(${VIEWER_BINARY_NAME} copy_win_scripts)
     endif (EXISTS ${CMAKE_SOURCE_DIR}/copy_win_scripts)
         
-    add_custom_command(
+    add_dependencies(${VIEWER_BINARY_NAME} 
+      SLPlugin 
+      media_plugin_quicktime 
+      media_plugin_webkit
+      windows-updater 
+      windows-crash-logger
+      )
+
+    if (PACKAGE)
+      add_custom_command(
+        OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.bz2
+        COMMAND ${PYTHON_EXECUTABLE}
+        ARGS
+          ${CMAKE_CURRENT_SOURCE_DIR}/event_host_manifest.py
+          ${CMAKE_CURRENT_SOURCE_DIR}/..
+          ${CMAKE_CURRENT_BINARY_DIR}
+          ${CMAKE_CFG_INTDIR}
+        DEPENDS 
+          lleventhost 
+          ${EVENT_HOST_SCRIPTS}
+          ${CMAKE_CURRENT_SOURCE_DIR}/event_host_manifest.py
+        )
+
+      add_custom_command(
         OUTPUT ${CMAKE_CFG_INTDIR}/touched.bat
         COMMAND ${PYTHON_EXECUTABLE}
         ARGS
           ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
-          --configuration=${CMAKE_CFG_INTDIR}
+          --artwork=${ARTWORK_DIR}
+          --build=${CMAKE_CURRENT_BINARY_DIR}
           --channel=${VIEWER_CHANNEL}
-          --login_channel=${VIEWER_LOGIN_CHANNEL}
+          --configuration=${CMAKE_CFG_INTDIR}
+          --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}
           --grid=${GRID}
+          --login_channel=${VIEWER_LOGIN_CHANNEL}
           --source=${CMAKE_CURRENT_SOURCE_DIR}
-              --artwork=${ARTWORK_DIR}
-              --build=${CMAKE_CURRENT_BINARY_DIR}
-              --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}
-              --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/touched.bat
+          --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/touched.bat
         DEPENDS ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
         )
 
-    add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_quicktime media_plugin_webkit)
-
-    if (PACKAGE)
-      add_custom_command(
-          OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.bz2
-          COMMAND ${PYTHON_EXECUTABLE}
-          ARGS
-            ${CMAKE_CURRENT_SOURCE_DIR}/event_host_manifest.py
-            ${CMAKE_CURRENT_SOURCE_DIR}/..
-            ${CMAKE_CURRENT_BINARY_DIR}
-            ${CMAKE_CFG_INTDIR}
-
-          DEPENDS 
-            lleventhost 
-            ${EVENT_HOST_SCRIPTS}
-            ${CMAKE_CURRENT_SOURCE_DIR}/event_host_manifest.py)
-
-      add_custom_target(package ALL 
-          DEPENDS 
-            ${CMAKE_CFG_INTDIR}/touched.bat)
-            # temporarily disable packaging of event_host until hg subrepos get
-            # sorted out on the parabuild cluster...
-            #${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.bz2)
-      add_dependencies(package windows-updater windows-crash-logger)
-
+      add_custom_target(package ALL DEPENDS ${CMAKE_CFG_INTDIR}/touched.bat)
+        # temporarily disable packaging of event_host until hg subrepos get
+        # sorted out on the parabuild cluster...
+        #${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.bz2)
 
     endif (PACKAGE)
 endif (WINDOWS)
@@ -1509,15 +1511,16 @@ if (LINUX)
       COMMAND ${PYTHON_EXECUTABLE}
       ARGS
         ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
-        --grid=${GRID}
-        --channel=${VIEWER_CHANNEL}
-        --login_channel=${VIEWER_LOGIN_CHANNEL}
-        --installer_name=${product}
         --arch=${ARCH}
-        --source=${CMAKE_CURRENT_SOURCE_DIR}
         --artwork=${ARTWORK_DIR}
         --build=${CMAKE_CURRENT_BINARY_DIR}
+        --channel=${VIEWER_CHANNEL}
+        --configuration=${CMAKE_CFG_INTDIR}
         --dest=${CMAKE_CURRENT_BINARY_DIR}/packaged
+        --grid=${GRID}
+        --installer_name=${product}
+        --login_channel=${VIEWER_LOGIN_CHANNEL}
+        --source=${CMAKE_CURRENT_SOURCE_DIR}
         --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.touched
       DEPENDS secondlife-stripped ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
       )
@@ -1552,13 +1555,13 @@ if (DARWIN)
     COMMAND ${PYTHON_EXECUTABLE}
     ARGS
       ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
-      --grid=${GRID}
       --actions=copy
-      --configuration=${CMAKE_CFG_INTDIR}
-      --source=${CMAKE_CURRENT_SOURCE_DIR}
       --artwork=${ARTWORK_DIR}
       --build=${CMAKE_CURRENT_BINARY_DIR}
+      --configuration=${CMAKE_CFG_INTDIR}
       --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${product}.app
+      --grid=${GRID}
+      --source=${CMAKE_CURRENT_SOURCE_DIR}
     DEPENDS ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
     )
 
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index b85d31d1ac6563ce26a12340afd982688fea8a39..7e5c30a97897b115b84a6ba3b15ea4ef7c39642d 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -231,8 +231,21 @@ def construct(self):
                                'llplugin', 'slplugin', self.args['configuration'], "slplugin.exe"),
                   "slplugin.exe")
         
-        # need to get the llcommon.dll from the build directory as well
-        if self.prefix(src=self.args['configuration'], dst=""):
+        self.disable_manifest_check()
+
+        # Get shared libs from the shared libs staging directory
+        if self.prefix(src=os.path.join(os.pardir, 'sharedlibs', self.args['configuration']),
+                       dst=""):
+
+            self.enable_crt_manifest_check()
+            
+            # Get kdu dll, continue if missing.
+            try:
+                self.path('%s/llkdu.dll' % self.args['configuration'], dst='llkdu.dll')
+            except RuntimeError:
+                print "Skipping llkdu.dll"
+
+            # Get llcommon and deps. If missing assume static linkage and continue.
             try:
                 self.path('llcommon.dll')
                 self.path('libapr-1.dll')
@@ -242,22 +255,41 @@ def construct(self):
                 print err.message
                 print "Skipping llcommon.dll (assuming llcommon was linked statically)"
 
-            self.end_prefix()
+            self.disable_manifest_check()
 
-        # need to get the kdu dll from the build directory as well
-        try:
-            self.path('%s/llkdu.dll' % self.args['configuration'], dst='llkdu.dll')
-        except RuntimeError:
-            print "Skipping llkdu.dll"
-
-        self.disable_manifest_check()
-
-        # For textures
-        if self.prefix(src=self.args['configuration'], dst=""):
-            if(self.args['configuration'].lower() == 'debug'):
+            # For textures
+            if self.args['configuration'].lower() == 'debug':
                 self.path("openjpegd.dll")
             else:
                 self.path("openjpeg.dll")
+
+            # These need to be installed as a SxS assembly, currently a 'private' assembly.
+            # See http://msdn.microsoft.com/en-us/library/ms235291(VS.80).aspx
+            if self.args['configuration'].lower() == 'debug':
+                self.path("msvcr80d.dll")
+                self.path("msvcp80d.dll")
+                self.path("Microsoft.VC80.DebugCRT.manifest")
+            else:
+                self.path("msvcr80.dll")
+                self.path("msvcp80.dll")
+                self.path("Microsoft.VC80.CRT.manifest")
+
+            # Vivox runtimes
+            self.path("SLVoice.exe")
+            self.path("alut.dll")
+            self.path("vivoxsdk.dll")
+            self.path("ortp.dll")
+            self.path("wrap_oal.dll")
+
+            # For google-perftools tcmalloc allocator.
+            try:
+                if self.args['configuration'].lower() == 'debug':
+                    self.path('libtcmalloc_minimal-debug.dll')
+                else:
+                    self.path('libtcmalloc_minimal.dll')
+            except:
+                print "Skipping libtcmalloc_minimal.dll"
+
             self.end_prefix()
 
         self.path(src="licenses-win32.txt", dst="licenses.txt")
@@ -270,6 +302,7 @@ def construct(self):
         self.path("fmod.dll")
 
         self.enable_no_crt_manifest_check()
+        
         # Media plugins - QuickTime
         if self.prefix(src='../media_plugins/quicktime/%s' % self.args['configuration'], dst="llplugin"):
             self.path("media_plugin_quicktime.dll")
@@ -302,28 +335,6 @@ def construct(self):
 
         self.disable_manifest_check()
 
-        # These need to be installed as a SxS assembly, currently a 'private' assembly.
-        # See http://msdn.microsoft.com/en-us/library/ms235291(VS.80).aspx
-        if self.prefix(src=self.args['configuration'], dst=""):
-            if self.args['configuration'] == 'Debug':
-                self.path("msvcr80d.dll")
-                self.path("msvcp80d.dll")
-                self.path("Microsoft.VC80.DebugCRT.manifest")
-            else:
-                self.path("msvcr80.dll")
-                self.path("msvcp80.dll")
-                self.path("Microsoft.VC80.CRT.manifest")
-            self.end_prefix()
-
-        # Vivox runtimes
-        if self.prefix(src=self.args['configuration'], dst=""):
-            self.path("SLVoice.exe")
-            self.path("alut.dll")
-            self.path("vivoxsdk.dll")
-            self.path("ortp.dll")
-            self.path("wrap_oal.dll")
-            self.end_prefix()
-
         # pull in the crash logger and updater from other projects
         # tag:"crash-logger" here as a cue to the exporter
         self.path(src='../win_crash_logger/%s/windows-crash-logger.exe' % self.args['configuration'],
@@ -331,17 +342,6 @@ def construct(self):
         self.path(src='../win_updater/%s/windows-updater.exe' % self.args['configuration'],
                   dst="updater.exe")
 
-        # For google-perftools tcmalloc allocator.
-        if self.prefix(src=self.args['configuration'], dst=""):
-            try:
-                if self.args['configuration'] == 'Debug':
-                    self.path('libtcmalloc_minimal-debug.dll')
-                else:
-                    self.path('libtcmalloc_minimal.dll')
-            except:
-                print "Skipping libtcmalloc_minimal.dll"
-            self.end_prefix()
-
     def nsi_file_commands(self, install=True):
         def wpath(path):
             if path.endswith('/') or path.endswith(os.path.sep):
diff --git a/indra/test_apps/llplugintest/CMakeLists.txt b/indra/test_apps/llplugintest/CMakeLists.txt
index 53b981cccdebf88cea6d1c09e5daa42c7e94dd30..400f63cef0edfe78680e35c07fa4a839d0770026 100644
--- a/indra/test_apps/llplugintest/CMakeLists.txt
+++ b/indra/test_apps/llplugintest/CMakeLists.txt
@@ -7,6 +7,7 @@ include(FindOpenGL)
 include(LLCommon)
 include(LLPlugin)
 include(Linking)
+include(LLSharedLibs)
 include(PluginAPI)
 include(LLImage)
 include(LLMath)
@@ -324,27 +325,7 @@ if (DARWIN)
       make_directory
       ${PLUGINS_DESTINATION_DIR}
     COMMENT "Creating Resources directory in app bundle."
-  )
-
-  # copy the llcommon dylib and its dependencies to Contents/Resources.
-  get_target_property(BUILT_LLCOMMON llcommon LOCATION)
-  add_custom_command(TARGET llmediaplugintest POST_BUILD
-    COMMAND ${CMAKE_COMMAND} -E copy ${BUILT_LLCOMMON}  ${PLUGINS_DESTINATION_DIR}
-    DEPENDS ${BUILT_LLCOMMON}
-  )
-  # FIXME: these paths should come from somewhere reliable.  The canonical list seems to be in indra/newview/viewer_manifest.py
-  add_custom_command(TARGET llmediaplugintest POST_BUILD
-    COMMAND ${CMAKE_COMMAND} -E copy ${ARCH_PREBUILT_DIRS_RELEASE}/libapr-1.0.3.7.dylib  ${PLUGINS_DESTINATION_DIR}
-    DEPENDS ${ARCH_PREBUILT_DIRS_RELEASE}/libapr-1.0.3.7.dylib
-  )
-  add_custom_command(TARGET llmediaplugintest POST_BUILD
-    COMMAND ${CMAKE_COMMAND} -E copy ${ARCH_PREBUILT_DIRS_RELEASE}/libaprutil-1.0.3.8.dylib  ${PLUGINS_DESTINATION_DIR}
-    DEPENDS ${ARCH_PREBUILT_DIRS_RELEASE}/libaprutil-1.0.3.8.dylib
-  )
-  add_custom_command(TARGET llmediaplugintest POST_BUILD
-    COMMAND ${CMAKE_COMMAND} -E copy ${ARCH_PREBUILT_DIRS_RELEASE}/libexpat.0.5.0.dylib  ${PLUGINS_DESTINATION_DIR}
-    DEPENDS ${ARCH_PREBUILT_DIRS_RELEASE}/libexpat.0.5.0.dylib
-  )
+  ) 
 else (DARWIN)
   set(PLUGINS_DESTINATION_DIR
     ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/
@@ -497,22 +478,18 @@ if(WINDOWS)
     ${plugintest_release_files}
     )
   set(plugin_test_targets ${plugin_test_targets} ${out_targets})
-
-  copy_if_different(
-    "${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}"
-    "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}"
-    out_targets
-    llcommon.dll libapr-1.dll libaprutil-1.dll libapriconv-1.dll
-    )
-  set(plugin_test_targets ${plugin_test_targets} ${out_targets})
-
-  add_custom_target(copy_plugintest_libs ALL
-    DEPENDS 
-      ${plugin_test_targets}
-      llcommon
-    )
+ 
+   add_custom_target(copy_plugintest_libs ALL
+     DEPENDS 
+     ${plugin_test_targets}
+     )
 
   add_dependencies(llmediaplugintest copy_plugintest_libs)
 
 endif(WINDOWS)
 
+ll_deploy_sharedlibs_command(
+  llmediaplugintest
+  "${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR};${ARCH_PREBUILT_DIRS}" 
+  ${SHARED_LIB_REL_PATH}
+  ) 
diff --git a/indra/win_crash_logger/CMakeLists.txt b/indra/win_crash_logger/CMakeLists.txt
index 0bd59f09908e981e6e12195e17a9cdf546e096a1..e141d7aa52e827b67a56ec434a672afc5369b74b 100644
--- a/indra/win_crash_logger/CMakeLists.txt
+++ b/indra/win_crash_logger/CMakeLists.txt
@@ -11,6 +11,7 @@ include(LLVFS)
 include(LLWindow)
 include(LLXML)
 include(Linking)
+include(LLSharedLibs)
 
 include_directories(
     ${LLCOMMON_INCLUDE_DIRS}
@@ -87,3 +88,8 @@ if (WINDOWS)
         LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT;LIBCMTD;MSVCRT\""
         )
 endif (WINDOWS)
+
+ll_deploy_sharedlibs_command(
+  windows-crash-logger
+  "${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}" 
+  ".") 
diff --git a/indra/win_updater/CMakeLists.txt b/indra/win_updater/CMakeLists.txt
index dedb7cfcc72ef1dd10cbf264657a0158fe214ba1..9e18555ea97b942de0a4ea65b9cf570ef311f1ca 100644
--- a/indra/win_updater/CMakeLists.txt
+++ b/indra/win_updater/CMakeLists.txt
@@ -33,3 +33,9 @@ set_target_properties(windows-updater
     LINK_FLAGS "/NODEFAULTLIB:LIBCMT"
     LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT;LIBCMTD;MSVCRT\""
     )
+
+# The windows-updater
+#ll_deploy_sharedlibs_command(
+#  windows-updater
+#  "${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}" 
+#  ".")