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 | |
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')
-rwxr-xr-x | indra/cmake/OpenSSL.cmake | 2 | ||||
-rwxr-xr-x | indra/cmake/PNG.cmake | 13 | ||||
-rwxr-xr-x | indra/cmake/ZLIB.cmake | 21 |
3 files changed, 31 insertions, 5 deletions
diff --git a/indra/cmake/OpenSSL.cmake b/indra/cmake/OpenSSL.cmake index 2704912eb5..4593821921 100755 --- a/indra/cmake/OpenSSL.cmake +++ b/indra/cmake/OpenSSL.cmake @@ -17,7 +17,7 @@ else (STANDALONE) endif (STANDALONE) if (LINUX) - set(CRYPTO_LIBRARIES crypto) + set(CRYPTO_LIBRARIES crypto dl) elseif (DARWIN) set(CRYPTO_LIBRARIES crypto) endif (LINUX) diff --git a/indra/cmake/PNG.cmake b/indra/cmake/PNG.cmake index d9afe772ae..9653591f67 100755 --- a/indra/cmake/PNG.cmake +++ b/indra/cmake/PNG.cmake @@ -15,6 +15,19 @@ else (STANDALONE) set(PNG_LIBRARIES png16) set(PNG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/libpng16) else() + # + # 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,-lpng16 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(PNG_PRELOAD_ARCHIVES -Wl,--whole-archive png16 -Wl,--no-whole-archive) set(PNG_LIBRARIES png16) set(PNG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/libpng16) endif() 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) |