summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.hgignore81
-rw-r--r--indra/lib/python/indra/util/test_win32_manifest.py9
-rw-r--r--indra/llcommon/llallocator_heap_profile.cpp1
-rw-r--r--indra/llcommon/llcoros.cpp37
-rw-r--r--indra/llcommon/llevents.cpp3
-rw-r--r--indra/media_plugins/quicktime/CMakeLists.txt8
-rw-r--r--indra/media_plugins/webkit/CMakeLists.txt8
-rw-r--r--indra/newview/llappviewer.cpp8
-rw-r--r--indra/newview/llvoavatar.cpp13
-rw-r--r--indra/newview/llvoavatarself.cpp13
-rwxr-xr-xindra/newview/viewer_manifest.py58
-rw-r--r--indra/viewer_components/login/tests/lllogin_test.cpp2
12 files changed, 170 insertions, 71 deletions
diff --git a/.hgignore b/.hgignore
index f1ae8001b3..e00b6e5428 100644
--- a/.hgignore
+++ b/.hgignore
@@ -1,39 +1,44 @@
-syntax: glob
-
-*.pyc
-*~
-.*.swp
-LICENSES
-indra/.distcc
-indra/build-darwin-*
-indra/build-vc[0-9]*
-indra/lib/mono/1.0/*.dll
-indra/lib/mono/indra/*.dll
-indra/lib/mono/indra/*.exe
-indra/lib/mono/indra/*.pdb
-indra/lib/python/eventlet/
-indra/llwindow/glh/glh_linear.h
-indra/newview/app_settings/mozilla
-indra/newview/app_settings/mozilla-runtime-*
-indra/newview/app_settings/mozilla_debug
-indra/newview/app_settings/static_*.db2
-indra/newview/character
-indra/newview/fmod.dll
-indra/newview/mozilla-theme
-indra/newview/mozilla-universal-darwin.tgz
-indra/newview/res-sdl
-indra/newview/skins
-indra/newview/vivox-runtime
-indra/server-linux-*
-indra/test/linden_file.dat
-indra/test_apps/llmediatest/dependencies/i686-win32
-indra/test_apps/terrain_mule/*.dll
-indra/viewer-linux-*
-indra/web/doc/asset-upload/plugins/lsl_compiler/lslc
-indra/web/doc/asset-upload/plugins/verify-notecard
-indra/web/doc/asset-upload/plugins/verify-texture
-installed.xml
-libraries
-tarfile_tmp
-^indra/lib/python/eventlet.*
+syntax: glob
+
+*.pyc
+*~
+.*.swp
+LICENSES
+indra/.distcc
+indra/build-darwin-*
+indra/build-vc[0-9]*
+indra/lib/mono/1.0/*.dll
+indra/lib/mono/indra/*.dll
+indra/lib/mono/indra/*.exe
+indra/lib/mono/indra/*.pdb
+indra/lib/python/eventlet/
+indra/llwindow/glh/glh_linear.h
+indra/newview/app_settings/mozilla
+indra/newview/app_settings/mozilla-runtime-*
+indra/newview/app_settings/mozilla_debug
+indra/newview/app_settings/static_*.db2
+indra/newview/character
+indra/newview/fmod.dll
+indra/newview/mozilla-theme
+indra/newview/mozilla-universal-darwin.tgz
+indra/newview/res-sdl
+indra/newview/skins
+indra/newview/vivox-runtime
+indra/server-linux-*
+indra/test/linden_file.dat
+indra/test_apps/llmediatest/dependencies/i686-win32
+indra/test_apps/terrain_mule/*.dll
+indra/viewer-linux-*
+indra/web/doc/asset-upload/plugins/lsl_compiler/lslc
+indra/web/doc/asset-upload/plugins/verify-notecard
+indra/web/doc/asset-upload/plugins/verify-texture
+installed.xml
+libraries
+tarfile_tmp
^indra/lib/python/mulib.*
+^web/locale.*
+^web/secondlife.com.*
+^web/config.*
+^indra/web/dataservice/locale.*
+^indra/web/dataservice/lib/shared/vault.*
+^indra/web/dataservice/vendor.*
diff --git a/indra/lib/python/indra/util/test_win32_manifest.py b/indra/lib/python/indra/util/test_win32_manifest.py
index 460e5fd487..75473ff55f 100644
--- a/indra/lib/python/indra/util/test_win32_manifest.py
+++ b/indra/lib/python/indra/util/test_win32_manifest.py
@@ -78,7 +78,10 @@ def test_assembly_binding(src_filename, assembly_name, assembly_ver):
resource_id = ";#2"
system_call = '%s -nologo -inputresource:%s%s -out:%s' % (mt_path, src_filename, resource_id, tmp_file_name)
print "Executing: %s" % system_call
- os.system(system_call)
+ mt_result = os.system(system_call)
+ if mt_result == 31:
+ print "No manifest found in %s" % src_filename
+ raise Exception("No manifest found")
manifest_dom = parse(tmp_file_name)
nodes = manifest_dom.getElementsByTagName('assemblyIdentity')
@@ -89,7 +92,8 @@ def test_assembly_binding(src_filename, assembly_name, assembly_ver):
versions.append(node.getAttribute('version'))
if len(versions) == 0:
- print "No manifest found for %s" % src_filename
+ print "No matching assemblies found in %s" % src_filename
+ raise Exception("No matching assembly")
elif len(versions) > 1:
print "Multiple bindings to %s found:" % assembly_name
@@ -108,7 +112,6 @@ def test_assembly_binding(src_filename, assembly_name, assembly_ver):
print "SUCCESS: %s OK!" % src_filename
print
-
if __name__ == '__main__':
print
diff --git a/indra/llcommon/llallocator_heap_profile.cpp b/indra/llcommon/llallocator_heap_profile.cpp
index d82ee9ed81..0a807702d0 100644
--- a/indra/llcommon/llallocator_heap_profile.cpp
+++ b/indra/llcommon/llallocator_heap_profile.cpp
@@ -38,6 +38,7 @@
// disable warning about boost::lexical_cast returning uninitialized data
// when it fails to parse the string
#pragma warning (disable:4701)
+#pragma warning (disable:4702)
#endif
#include <boost/algorithm/string/split.hpp>
diff --git a/indra/llcommon/llcoros.cpp b/indra/llcommon/llcoros.cpp
index 5d23e1d284..377bfaa247 100644
--- a/indra/llcommon/llcoros.cpp
+++ b/indra/llcommon/llcoros.cpp
@@ -54,15 +54,6 @@ bool LLCoros::cleanup(const LLSD&)
return false;
}
-std::string LLCoros::launchImpl(const std::string& prefix, coro* newCoro)
-{
- std::string name(generateDistinctName(prefix));
- mCoros.insert(name, newCoro);
- /* Run the coroutine until its first wait, then return here */
- (*newCoro)(std::nothrow);
- return name;
-}
-
std::string LLCoros::generateDistinctName(const std::string& prefix) const
{
// Allowing empty name would make getName()'s not-found return ambiguous.
@@ -116,3 +107,31 @@ std::string LLCoros::getNameByID(const void* self_id) const
}
return "";
}
+
+/*****************************************************************************
+* MUST BE LAST
+*****************************************************************************/
+// Turn off MSVC optimizations for just LLCoros::launchImpl() -- see
+// DEV-32777. But MSVC doesn't support push/pop for optimization flags as it
+// does for warning suppression, and we really don't want to force
+// optimization ON for other code even in Debug or RelWithDebInfo builds.
+
+#if LL_MSVC
+// work around broken optimizations
+#pragma warning(disable: 4748)
+#pragma optimize("", off)
+#endif // LL_MSVC
+
+std::string LLCoros::launchImpl(const std::string& prefix, coro* newCoro)
+{
+ std::string name(generateDistinctName(prefix));
+ mCoros.insert(name, newCoro);
+ /* Run the coroutine until its first wait, then return here */
+ (*newCoro)(std::nothrow);
+ return name;
+}
+
+#if LL_MSVC
+// reenable optimizations
+#pragma optimize("", on)
+#endif // LL_MSVC
diff --git a/indra/llcommon/llevents.cpp b/indra/llcommon/llevents.cpp
index aec9acc7ef..a6421ac696 100644
--- a/indra/llcommon/llevents.cpp
+++ b/indra/llcommon/llevents.cpp
@@ -41,6 +41,9 @@
#include "stringize.h"
#include "llerror.h"
#include "llsdutil.h"
+#if LL_MSVC
+#pragma warning (disable : 4702)
+#endif
/*****************************************************************************
* queue_names: specify LLEventPump names that should be instantiated as
diff --git a/indra/media_plugins/quicktime/CMakeLists.txt b/indra/media_plugins/quicktime/CMakeLists.txt
index db11c9ae21..f0b8f0d167 100644
--- a/indra/media_plugins/quicktime/CMakeLists.txt
+++ b/indra/media_plugins/quicktime/CMakeLists.txt
@@ -56,6 +56,14 @@ add_dependencies(media_plugin_quicktime
${LLCOMMON_LIBRARIES}
)
+if (WINDOWS)
+ set_target_properties(
+ media_plugin_quicktime
+ PROPERTIES
+ LINK_FLAGS "/MANIFEST:NO"
+ )
+endif (WINDOWS)
+
if (QUICKTIME)
add_definitions(-DLL_QUICKTIME_ENABLED=1)
diff --git a/indra/media_plugins/webkit/CMakeLists.txt b/indra/media_plugins/webkit/CMakeLists.txt
index d96477279d..5bccd589d8 100644
--- a/indra/media_plugins/webkit/CMakeLists.txt
+++ b/indra/media_plugins/webkit/CMakeLists.txt
@@ -52,6 +52,14 @@ add_dependencies(media_plugin_webkit
${LLCOMMON_LIBRARIES}
)
+if (WINDOWS)
+ set_target_properties(
+ media_plugin_webkit
+ PROPERTIES
+ LINK_FLAGS "/MANIFEST:NO"
+ )
+endif (WINDOWS)
+
if (DARWIN)
# Don't prepend 'lib' to the executable name, and don't embed a full path in the library's install name
set_target_properties(
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index ef1fa98b1f..2fad71a686 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -90,9 +90,6 @@
#if LL_WINDOWS
#include "llwindebug.h"
-#endif
-
-#if LL_WINDOWS
# include <share.h> // For _SH_DENYWR in initMarkerFile
#else
# include <sys/file.h> // For initMarkerFile support
@@ -196,6 +193,11 @@
// define a self-registering event API object
#include "llappviewerlistener.h"
+#if LL_MSVC
+// disable boost::lexical_cast warning
+#pragma warning (disable:4702)
+#endif
+
static LLAppViewerListener sAppViewerListener("LLAppViewer", NULL);
////// Windows-specific includes to the bottom - nasty defines in these pollute the preprocessor
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 018cce4b49..824e06284a 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -30,6 +30,12 @@
* $/LicenseInfo$
*/
+#if LL_MSVC
+// disable warning about boost::lexical_cast returning uninitialized data
+// when it fails to parse the string
+#pragma warning (disable:4701)
+#endif
+
#include "llviewerprecompiledheaders.h"
#include "llvoavatar.h"
@@ -85,7 +91,12 @@
#include "llvoiceclient.h"
#include "llvoicevisualizer.h" // Ventrella
-#include "boost/lexical_cast.hpp"
+#if LL_MSVC
+// disable boost::lexical_cast warning
+#pragma warning (disable:4702)
+#endif
+
+#include <boost/lexical_cast.hpp>
using namespace LLVOAvatarDefines;
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index a7b5b60842..31b9f062e4 100644
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -30,6 +30,12 @@
* $/LicenseInfo$
*/
+#if LL_MSVC
+// disable warning about boost::lexical_cast returning uninitialized data
+// when it fails to parse the string
+#pragma warning (disable:4701)
+#endif
+
#include "llviewerprecompiledheaders.h"
#include "llvoavatarself.h"
@@ -83,7 +89,12 @@
#include "llvoiceclient.h"
#include "llvoicevisualizer.h" // Ventrella
-#include "boost/lexical_cast.hpp"
+#if LL_MSVC
+// disable boost::lexical_cast warning
+#pragma warning (disable:4702)
+#endif
+
+#include <boost/lexical_cast.hpp>
using namespace LLVOAvatarDefines;
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index f62ed4b374..8a3905633f 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -165,7 +165,7 @@ class WindowsManifest(ViewerManifest):
def test_msvcrt_and_copy_action(self, src, dst):
- # This can is used to test a dll manifest.
+ # This is used to test a dll manifest.
# It is used as a temporary override during the construct method
from test_win32_manifest import test_assembly_binding
if src and (os.path.exists(src) or os.path.islink(src)):
@@ -183,10 +183,38 @@ class WindowsManifest(ViewerManifest):
else:
print "Doesn't exist:", src
- def enable_crt_check(self):
+ def test_for_no_msvcrt_manifest_and_copy_action(self, src, dst):
+ # This is used to test that no manifest for the msvcrt exists.
+ # It is used as a temporary override during the construct method
+ from test_win32_manifest import test_assembly_binding
+ if src and (os.path.exists(src) or os.path.islink(src)):
+ # ensure that destination path exists
+ self.cmakedirs(os.path.dirname(dst))
+ self.created_paths.append(dst)
+ if not os.path.isdir(src):
+ try:
+ if(self.args['configuration'].lower() == 'debug'):
+ test_assembly_binding(src, "Microsoft.VC80.DebugCRT", "")
+ else:
+ test_assembly_binding(src, "Microsoft.VC80.CRT", "")
+ raise Exception("Unknown condition")
+ except Exception, err:
+ if err.message != "No matching assembly" or err.message != "No manifest found":
+ raise Exception("Found unexpected MSVCRT manifest binding")
+
+ self.ccopy(src,dst)
+ else:
+ raise Exception("Directories are not supported by test_CRT_and_copy_action()")
+ else:
+ print "Doesn't exist:", src
+
+ def enable_crt_manifest_check(self):
WindowsManifest.copy_action = WindowsManifest.test_msvcrt_and_copy_action
- def disable_crt_check(self):
+ def enable_no_crt_manifest_check(self):
+ WindowsManifest.copy_action = WindowsManifest.test_for_no_msvcrt_manifest_and_copy_action
+
+ def disable_manifest_check(self):
del WindowsManifest.copy_action
def construct(self):
@@ -194,7 +222,7 @@ class WindowsManifest(ViewerManifest):
# Find secondlife-bin.exe in the 'configuration' dir, then rename it to the result of final_exe.
self.path(src='%s/secondlife-bin.exe' % self.args['configuration'], dst=self.final_exe())
- self.enable_crt_check()
+ self.enable_crt_manifest_check()
# Plugin host application
self.path(os.path.join(os.pardir,
@@ -220,7 +248,15 @@ class WindowsManifest(ViewerManifest):
except RuntimeError:
print "Skipping llkdu.dll"
- self.disable_crt_check()
+ self.disable_manifest_check()
+
+ # For textures
+ if self.prefix(src=self.args['configuration'], dst=""):
+ if(self.args['configuration'].lower() == 'debug'):
+ self.path("openjpegd.dll")
+ else:
+ self.path("openjpeg.dll")
+ self.end_prefix()
self.path(src="licenses-win32.txt", dst="licenses.txt")
self.path("featuretable.txt")
@@ -231,15 +267,7 @@ class WindowsManifest(ViewerManifest):
# For using FMOD for sound... DJS
self.path("fmod.dll")
- self.enable_crt_check()
-
- # For textures
- if self.prefix(src=self.args['configuration'], dst=""):
- if(self.args['configuration'].lower() == 'debug'):
- self.path("openjpegd.dll")
- else:
- self.path("openjpeg.dll")
- self.end_prefix()
+ self.enable_no_crt_manifest_check()
# Media plugins - QuickTime
if self.prefix(src='../media_plugins/quicktime/%s' % self.args['configuration'], dst="llplugin"):
@@ -271,7 +299,7 @@ class WindowsManifest(ViewerManifest):
self.path("qtiff4.dll")
self.end_prefix()
- self.disable_crt_check()
+ 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
diff --git a/indra/viewer_components/login/tests/lllogin_test.cpp b/indra/viewer_components/login/tests/lllogin_test.cpp
index e43065d49f..51f00c8344 100644
--- a/indra/viewer_components/login/tests/lllogin_test.cpp
+++ b/indra/viewer_components/login/tests/lllogin_test.cpp
@@ -56,7 +56,7 @@ public:
return pump.listen(mName, boost::bind(&LoginListener::call, this, _1));
}
- LLSD lastEvent() { return mLastEvent; }
+ LLSD lastEvent() const { return mLastEvent; }
friend std::ostream& operator<<(std::ostream& out, const LoginListener& listener)
{