diff options
-rw-r--r-- | .hgignore | 81 | ||||
-rw-r--r-- | indra/lib/python/indra/util/test_win32_manifest.py | 9 | ||||
-rw-r--r-- | indra/llcommon/llallocator_heap_profile.cpp | 1 | ||||
-rw-r--r-- | indra/llcommon/llcoros.cpp | 37 | ||||
-rw-r--r-- | indra/llcommon/llevents.cpp | 3 | ||||
-rw-r--r-- | indra/media_plugins/quicktime/CMakeLists.txt | 8 | ||||
-rw-r--r-- | indra/media_plugins/webkit/CMakeLists.txt | 8 | ||||
-rw-r--r-- | indra/newview/llappviewer.cpp | 8 | ||||
-rw-r--r-- | indra/newview/llvoavatar.cpp | 13 | ||||
-rw-r--r-- | indra/newview/llvoavatarself.cpp | 13 | ||||
-rwxr-xr-x | indra/newview/viewer_manifest.py | 58 | ||||
-rw-r--r-- | indra/viewer_components/login/tests/lllogin_test.cpp | 2 |
12 files changed, 170 insertions, 71 deletions
@@ -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) { |