summaryrefslogtreecommitdiff
path: root/indra/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'indra/cmake')
-rwxr-xr-xindra/cmake/CMakeLists.txt2
-rw-r--r--indra/cmake/FindURIPARSER.cmake46
-rw-r--r--indra/cmake/URIPARSER.cmake35
3 files changed, 83 insertions, 0 deletions
diff --git a/indra/cmake/CMakeLists.txt b/indra/cmake/CMakeLists.txt
index 10a23ea068..9abdb4b146 100755
--- a/indra/cmake/CMakeLists.txt
+++ b/indra/cmake/CMakeLists.txt
@@ -37,6 +37,7 @@ set(cmake_SOURCE_FILES
FindNDOF.cmake
FindOpenJPEG.cmake
FindSCP.cmake
+ FindURIPARSER.cmake
FindXmlRpcEpi.cmake
FindZLIB.cmake
FMODEX.cmake
@@ -97,6 +98,7 @@ set(cmake_SOURCE_FILES
Tut.cmake
UI.cmake
UnixInstall.cmake
+ URIPARSER.cmake
Variables.cmake
ViewerMiscLibs.cmake
VisualLeakDetector.cmake
diff --git a/indra/cmake/FindURIPARSER.cmake b/indra/cmake/FindURIPARSER.cmake
new file mode 100644
index 0000000000..8ab9f0f4ed
--- /dev/null
+++ b/indra/cmake/FindURIPARSER.cmake
@@ -0,0 +1,46 @@
+# -*- cmake -*-
+
+# - Find uriparser
+# Find the URIPARSER includes and library
+# This module defines
+# URIPARSER_INCLUDE_DIRS, where to find uriparser.h, etc.
+# URIPARSER_LIBRARIES, the libraries needed to use uriparser.
+# URIPARSER_FOUND, If false, do not try to use uriparser.
+#
+# This FindURIPARSER is about 43 times as fast the one provided with cmake (2.8.x),
+# because it doesn't look up the version of uriparser, resulting in a dramatic
+# speed up for configure (from 4 minutes 22 seconds to 6 seconds).
+#
+# Note: Since this file is only used for standalone, the windows
+# specific parts were left out.
+
+FIND_PATH(URIPARSER_INCLUDE_DIR uriparser/uri.h
+ NO_SYSTEM_ENVIRONMENT_PATH
+ )
+
+FIND_LIBRARY(URIPARSER_LIBRARY uriparser)
+
+if (URIPARSER_LIBRARY AND URIPARSER_INCLUDE_DIR)
+ SET(URIPARSER_INCLUDE_DIRS ${URIPARSER_INCLUDE_DIR})
+ SET(URIPARSER_LIBRARIES ${URIPARSER_LIBRARY})
+ SET(URIPARSER_FOUND "YES")
+else (URIPARSER_LIBRARY AND URIPARSER_INCLUDE_DIR)
+ SET(URIPARSER_FOUND "NO")
+endif (URIPARSER_LIBRARY AND URIPARSER_INCLUDE_DIR)
+
+if (URIPARSER_FOUND)
+ if (NOT URIPARSER_FIND_QUIETLY)
+ message(STATUS "Found URIPARSER: ${URIPARSER_LIBRARIES}")
+ SET(URIPARSER_FIND_QUIETLY TRUE)
+ endif (NOT URIPARSER_FIND_QUIETLY)
+else (URIPARSER_FOUND)
+ if (URIPARSER_FIND_REQUIRED)
+ message(FATAL_ERROR "Could not find URIPARSER library")
+ endif (URIPARSER_FIND_REQUIRED)
+endif (URIPARSER_FOUND)
+
+mark_as_advanced(
+ URIPARSER_LIBRARY
+ URIPARSER_INCLUDE_DIR
+ )
+
diff --git a/indra/cmake/URIPARSER.cmake b/indra/cmake/URIPARSER.cmake
new file mode 100644
index 0000000000..de146885a0
--- /dev/null
+++ b/indra/cmake/URIPARSER.cmake
@@ -0,0 +1,35 @@
+# -*- cmake -*-
+
+set(URIPARSER_FIND_QUIETLY ON)
+set(URIPARSER_FIND_REQUIRED ON)
+
+include(Prebuilt)
+
+if (USESYSTEMLIBS)
+ include(FindURIPARSER)
+else (USESYSTEMLIBS)
+ use_prebuilt_binary(uriparser)
+ if (WINDOWS)
+ set(URIPARSER_LIBRARIES
+ debug uriparserd
+ optimized uriparser)
+ 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)
+ set(URIPARSER_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/uriparser)
+endif (USESYSTEMLIBS)