Age | Commit message (Collapse) | Author |
|
|
|
|
|
We expect the viewer-manager package to be self-contained: we expect it to
bring with it any Python packages it requires. We no longer force developers
to wrap third-party Python packages as autobuild packages.
|
|
|
|
for Windows
|
|
|
|
instead of relying on both indra/newview/CMakeLists.txt and build.sh
generating the same file pathname.
Make build.sh set VIEWER_SYMBOL_FILE (instead of symbolfile) in pre_build, and
pass it to autobuild configure via -D switch. Then the uploads stanza can just
use VIEWER_SYMBOL_FILE instead of performing its platform-sensitive case
statement right there.
Introduce VIEWER_SYMBOL_FILE CMake cache variable, default empty string.
Make indra/newview/CMakeLists.txt generate_breakpad_symbols logic conditional
on VIEWER_SYMBOL_FILE being non-empty, as well as everything else. Eliminate
local set(VIEWER_SYMBOL_FILE) directives.
|
|
Define the CMake cache variable, with empty string as its default.
Make build.sh pass the BUGSPLAT_DB environment variable as a CMake
command-line variable assignment.
Change CMake 'if (DEFINED ENV{BUGSPLAT_DB})' to plain 'if (BUGSPLAT_DB)'.
Make CMake pass new --bugsplat switch to every one of SIX different
invocations of viewer_manifest.py.
Give llmanifest.main() function an argument to allow supplementing the base
set of command-line switches with additional application-specific switches.
In viewer_manifest.py, define new --bugsplat command-line switch and pass to
llmanifest.main(). Instead of consulting os.environ['BUGSPLAT_DB'], consult
self.args['bugsplat'].
|
|
|
|
Produce CMake message when BugSplat is engaged so we can detect in build log.
Don't try to copy BugSplat DLLs when NOT engaged.
|
|
On TeamCity, set BUGSPLAT_DB from build-secrets.
Use the presence of $BUGSPLAT_DB, rather than a new CMake BUGSPLAT option, to
control whether CMake searches for BugSplat -- and passes LL_BUGSPLAT into C++.
When BUGSPLAT_DB is present, make viewer_manifest.py set "BugSplat DB" in
build_data.json, and "BugsplatServerURL" in Mac Info.plist.
Make llappviewerwin32.cpp read "BugSplat DB" from build_data.json.
Add placeholders for Mac hooks to suppress BugSplat prompt and send
SecondLife.log.
|
|
Use WSTRINGIZE(), LL_TO_WSTRING(), wstringize() to produce required wide
strings. Use a lambda for callback that sends log file; use LLDir, if set, to
find the log file.
Introduce BUGSPLAT CMake variable to allow suppressing BugSplat.
Make BUGSPLAT CMake variable set LL_BUGSPLAT for C++ compilations.
Set viewer version macros on llappviewerwin32.cpp, llappviewerlinux.cpp and
llappdelegate-objc.mm -- because BugSplat needs the viewer version data, and
because the macOS BugSplat hook is engaged in an Objective-C++ function we
override in the app delegate.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
needs to differentiate between 32 and 64 bit Windows builds
|
|
enforces specifc names that vary across bitness)
|
|
|
|
|
|
Mani captured that snapshot back when CMake version 2.8 was newer than what
was running on our build systems. Now we have to assume that the bundled
GetPrerequisites.cmake is better than our old snapshot. Use the bunded one.
|
|
|
|
The viewer's 00-COMPILE-LINK-RUN.txt recommends passing -gdwarf-2 to the Mac
compiler, and so we've been doing ever since before the viewer-build-variables
repo was engaged. Now we discover that when CMake sees -gdwarf-2, it removes
the -g switch entirely. It also removes it when you pass plain -g. Only when
you pass -gdwarf-with-dsym or just -gdwarf does CMake pass plain -g to the
compiler. Change -gdwarf-2, if specified, to -gdwarf so we at least get -g.
|
|
|
|
voice, misc cleanup
|
|
|
|
|
|
|
|
|
|
LLInstanceTracker<T> performs validation in ~LLInstanceTracker(). Normally
validation failure logs an error and terminates the program, which is fine. In
the test executable, though, we want validation failure to throw an exception
instead so we can catch it and continue testing other failure conditions. But
since destructors in C++11 are implicitly noexcept(true), that exception never
made it out of ~LLInstanceTracker(): it crashed the test program instead.
Declaring ~LLInstanceTracker() noexcept(false) solves that, allowing the test
program to catch the exception and continue.
However, if we unconditionally declare that, then every destructor anywhere in
the inheritance hierarchy for any LLInstanceTracker subclass must also be
noexcept(false)! That's way too pervasive, especially for functionality we
only need (or want) in a specific test executable.
Instead, make the CMake macros LL_ADD_PROJECT_UNIT_TESTS() and
LL_ADD_INTEGRATION_TEST() -- with which we define all viewer build-time tests
-- define two new command-line macros: LL_TEST=testname and LL_TEST_testname.
That way, preprocessor logic in a header file can detect whether it's being
compiled for production code or for a test executable.
(While at it, encapsulate in a new GET_OPT_SOURCE_FILE_PROPERTY() CMake macro
an ugly repetitive pattern. The builtin GET_SOURCE_FILE_PROPERTY() sets the
target variable to "NOTFOUND" -- rather than an empty string -- if the
specified property wasn't set. Every call to GET_SOURCE_FILE_PROPERTY() in
LL_ADD_PROJECT_UNIT_TESTS() was followed by a test for NOTFOUND and an
assignment to "". Wrap all that in a macro whose 'unset' value is "".)
Now llinstancetracker.h can detect when we're building the LLInstanceTracker
unit test executable, and *only then* declare ~LLInstanceTracker() as
noexcept(false). We #define LLINSTANCETRACKER_DTOR_NOEXCEPT to expand either
empty or noexcept(false), also detecting clang in C++11 mode. (It all works
fine without noexcept(false) until we turn on C++11 mode.)
We also use that macro for the StatBase class in lltrace.h. Turns out some of
the infrastructure headers required for tests in general, including the
LLInstanceTracker test, use LLInstanceTracker. Fortunately that appears to be
the only other class we must annotate this way for the LLInstanceTracker tests.
|
|
|
|
|
|
|
|
Whatever we were trying to do with LLSharedLibs.cmake hasn't worked on the Mac
for a long time, and trying to fix it only digs up more problems. Skip it:
we've already worked around it.
Update the media_plugins_example CMakeLists.txt to eliminate some CMake
non-existent dependency warnings.
|
|
|
|
|
|
|
|
|
|
|
|
appears to be because two of the MS DLLs we ship with the 64 bit viewer are 32bit. Manually replacing them with their 64 bit equivalents allowed the viewer to start on Windows 8.1. The change forces the cmake file which copies the DLLs to look in C:\windows\SysWOW64 for 32 bit versions and C:\windows\system32 for 64 bit versions. (yes really).
|
|
|
|
|
|
|
|
1.1.4)
|
|
changes in this batch since I'm working on Windows box but some speculative macOS ones too although they are quite untested
|
|
This is known not to work yet: the relevant Havok libraries are not being
bundled with llphysicsextensions, therefore the viewer can't link with any
Havok symbols.
|
|
|
|
Aside from crazy indentation, much of Havok.cmake is redundant testing of
DEBUG_PREBUILT and conditional MESSAGE(STATUS ...) output, not to mention
repeating stanzas for each of debug_dir, release_dir and relwithdebinfo_dir.
Use local functions and foreach() to try to manage redundancy so the details
of what it's actually trying to do don't get lost in the noise.
|