diff options
| -rw-r--r-- | indra/cmake/FindURIPARSER.cmake | 2 | ||||
| -rw-r--r-- | indra/cmake/URIPARSER.cmake | 31 | ||||
| -rwxr-xr-x | indra/newview/CMakeLists.txt | 2 | 
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} | 
