summaryrefslogtreecommitdiff
path: root/indra/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'indra/cmake')
-rwxr-xr-xindra/cmake/OpenSSL.cmake2
-rwxr-xr-xindra/cmake/PNG.cmake13
-rwxr-xr-xindra/cmake/ZLIB.cmake21
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)