diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 0219d3390bf8b5052e0b864a39ab0cd03d89aec4..605b3f678af47fab39974b6f0993b332f1bce997 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -901,6 +901,7 @@ def construct(self):
         pkgdir = os.path.join(self.args['build'], os.pardir, 'packages')
         relpkgdir = os.path.join(pkgdir, "lib", "release")
         debpkgdir = os.path.join(pkgdir, "lib", "debug")
+        libdir = debpkgdir if self.args['configuration'].lower() == 'debug' else relpkgdir
 
         with self.prefix(src="", dst="Contents"):  # everything goes in Contents
             bugsplat_db = self.args.get('bugsplat')
@@ -918,13 +919,34 @@ def construct(self):
 
             # CEF framework goes inside Contents/Frameworks.
             # Remember where we parked this car.
-            with self.prefix(src="", dst="Frameworks"):
+            with self.prefix(src=libdir, dst="Frameworks"):
                 CEF_framework = "Chromium Embedded Framework.framework"
-                self.path2basename(relpkgdir, CEF_framework)
+                self.path2basename(libdir, CEF_framework)
                 CEF_framework = self.dst_path_of(CEF_framework)
 
+                for libfile in (
+                                'libjpeg.*.dylib',
+                                'libepoxy.*.dylib',
+                                'libopenjpeg.*.dylib',
+                                'libwebp.*.dylib',
+                                ):
+                    self.path(libfile)
+
                 if self.args.get('bugsplat'):
-                    self.path2basename(relpkgdir, "BugsplatMac.framework")
+                    self.path("BugsplatMac.framework")
+
+                if self.args['openal'] == 'ON' or self.args['openal'] == 'TRUE':
+                    for libfile in (
+                                    'libopenal.*.dylib',
+                                    'libalut.*.dylib',
+                                    ):
+                        self.path(libfile)
+
+                if self.args['fmodstudio'] == 'ON' or self.args['fmodstudio'] == 'TRUE':
+                    if self.args['configuration'].lower() == 'debug':
+                        self.path("libfmodL.dylib")
+                    else:
+                        self.path("libfmod.dylib")
 
             with self.prefix(dst="MacOS"):
                 executable = self.dst_path_of(self.channel())
@@ -1030,7 +1052,6 @@ def construct(self):
                                 "libapr-1.0.dylib",
                                 "libaprutil-1.0.dylib",
                                 "libexpat.1.dylib",
-                                "libexception_handler.dylib",
                                 "libGLOD.dylib",
                                 # libnghttp2.dylib is a symlink to
                                 # libnghttp2.major.dylib, which is a symlink to
@@ -1050,18 +1071,6 @@ def construct(self):
                                 ):
                     self.path2basename(relpkgdir, libfile)
 
-                # dylibs that vary based on configuration
-                if self.args['configuration'].lower() == 'debug':
-                    for libfile in (
-                                "libfmodL.dylib",
-                                ):
-                        dylibs += self.path_optional(os.path.join(debpkgdir, libfile), libfile)
-                else:
-                    for libfile in (
-                                "libfmod.dylib",
-                                ):
-                        dylibs += self.path_optional(os.path.join(relpkgdir, libfile), libfile)
-
                 # our apps
                 executable_path = {}
                 for app_bld_dir, app in (