diff options
author | Monty Brandenberg <monty@lindenlab.com> | 2014-04-15 22:48:52 +0000 |
---|---|---|
committer | Monty Brandenberg <monty@lindenlab.com> | 2014-04-15 22:48:52 +0000 |
commit | f8874d04b8ca238ee99dc464055295cff417a9b2 (patch) | |
tree | 74e277421da416ce6222664d9caee8e144940b53 /indra/cmake/ZLIB.cmake | |
parent | 04404b68b56638171bc200f9a22a660257370d5d (diff) |
Linux/Win: Bad checksum on Windows package. Libz and libpng linking changes to find newest code.
Windows autobuild package had a bad checksum due to oddities in the build
system. On Linux I've been fighting with getting libz 1.2.8 and libpng
1.6.8 to be the definitive version in the viewer. Problem is the *massive*
library search tree we assemble. We find older shared library versions
first and so those dominated. By using --whole-archive with static libraries,
the packaged versions of these libraries are made definitive.
Diffstat (limited to 'indra/cmake/ZLIB.cmake')
-rwxr-xr-x | indra/cmake/ZLIB.cmake | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/indra/cmake/ZLIB.cmake b/indra/cmake/ZLIB.cmake index 48e5130ad5..0470f3e797 100755 --- a/indra/cmake/ZLIB.cmake +++ b/indra/cmake/ZLIB.cmake @@ -13,10 +13,23 @@ else (STANDALONE) set(ZLIB_LIBRARIES debug zlibd optimized zlib) - else (WINDOWS) + elseif (LINUX) + # + # When we have updated static libraries in competition with older + # shared libraries and we want the former to win, we need to do some + # extra work. The *_PRELOAD_ARCHIVES settings are invoked early + # and will pull in the entire archive to the binary giving it + # priority in symbol resolution. Beware of cmake moving the + # achive load itself to another place on the link command line. If + # that happens, you can try something like -Wl,-lz here to hide + # the archive. Also be aware that the linker will not tolerate a + # second whole-archive load of the archive. See viewer's + # CMakeLists.txt for more information. + # + set(ZLIB_PRELOAD_ARCHIVES -Wl,--whole-archive z -Wl,--no-whole-archive) + set(ZLIB_LIBRARIES z) + elseif (DARWIN) set(ZLIB_LIBRARIES z) endif (WINDOWS) - if (WINDOWS OR LINUX) - set(ZLIB_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/zlib) - endif (WINDOWS OR LINUX) + set(ZLIB_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/zlib) endif (STANDALONE) |