summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/cmake/FindURIPARSER.cmake2
-rw-r--r--indra/cmake/URIPARSER.cmake31
-rwxr-xr-xindra/newview/CMakeLists.txt2
3 files changed, 25 insertions, 10 deletions
diff --git a/indra/cmake/FindURIPARSER.cmake b/indra/cmake/FindURIPARSER.cmake
index 32457bcd60..8ab9f0f4ed 100644
--- a/indra/cmake/FindURIPARSER.cmake
+++ b/indra/cmake/FindURIPARSER.cmake
@@ -18,7 +18,7 @@ FIND_PATH(URIPARSER_INCLUDE_DIR uriparser/uri.h
NO_SYSTEM_ENVIRONMENT_PATH
)
-FIND_LIBRARY(URIPARSER_LIBRARY z)
+FIND_LIBRARY(URIPARSER_LIBRARY uriparser)
if (URIPARSER_LIBRARY AND URIPARSER_INCLUDE_DIR)
SET(URIPARSER_INCLUDE_DIRS ${URIPARSER_INCLUDE_DIR})
diff --git a/indra/cmake/URIPARSER.cmake b/indra/cmake/URIPARSER.cmake
index 477e142ce5..d726c2ffdf 100644
--- a/indra/cmake/URIPARSER.cmake
+++ b/indra/cmake/URIPARSER.cmake
@@ -5,18 +5,31 @@ set(URIPARSER_FIND_REQUIRED ON)
include(Prebuilt)
-if (STANDALONE)
+if (USESYSTEMLIBS)
include(FindURIPARSER)
-else (STANDALONE)
+else (USESYSTEMLIBS)
use_prebuilt_binary(uriparser)
if (WINDOWS)
- set(URIPARSER_LIBRARIES
+ set(URIPARSER_LIBRARIES.
debug uriparserd
optimized uriparser)
- else (WINDOWS)
- set(URIPARSER_LIBRARIES z)
+ 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,-luriparser 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(URIPARSER_PRELOAD_ARCHIVES -Wl,--whole-archive uriparser -Wl,--no-whole-archive)
+ set(URIPARSER_LIBRARIES uriparser)
+ elseif (DARWIN)
+ set(URIPARSER_LIBRARIES uriparser)
endif (WINDOWS)
- if (WINDOWS OR LINUX)
- set(URIPARSER_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/uriparser)
- endif (WINDOWS OR LINUX)
-endif (STANDALONE)
+ set(URIPARSER_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/uriparser)
+endif (USESYSTEMLIBS)
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index e8f4144e70..154f3b5726 100755
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -49,6 +49,7 @@ include(CMakeCopyIfDifferent)
include(LLAppearance)
include(PNG)
include(ZLIB)
+include(URIPARSER)
if (NOT HAVOK_TPV)
# When using HAVOK_TPV, the library is precompiled, so no need for this
@@ -1924,6 +1925,7 @@ endif (WINDOWS)
target_link_libraries(${VIEWER_BINARY_NAME}
${PNG_PRELOAD_ARCHIVES}
${ZLIB_PRELOAD_ARCHIVES}
+ ${URIPARSER_PRELOAD_ARCHIVES}
${UPDATER_LIBRARIES}
${GOOGLE_PERFTOOLS_LIBRARIES}
${LLAUDIO_LIBRARIES}