diff --git a/indra/cmake/FindURIPARSER.cmake b/indra/cmake/FindURIPARSER.cmake index 32457bcd60cdcd815cae1000270e50d36dc63f49..8ab9f0f4ed267302b6e7b71b08c3edb903ebd556 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 477e142ce56288a961971c22302c5a068a08869b..d726c2ffdf940474550c5ced240e7cd920a6ce53 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 e8f4144e70dbc1b2ca70c4c23ab69e4a83f7949e..154f3b572613d77673b2e1b1d0894173e61f1698 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}