From 454a4a2905198b884947e9a3d37dba2e480480da Mon Sep 17 00:00:00 2001 From: Savchenko Maksym Date: Wed, 24 Sep 2014 03:36:00 +0300 Subject: MAINT-4482 FIXED [viewer-lion] Mac build fails due to weirdo LLTextBase::normalizeUri() issue --- indra/cmake/FindURIPARSER.cmake | 2 +- indra/cmake/URIPARSER.cmake | 31 ++++++++++++++++++++++--------- 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} -- cgit v1.2.3