diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index 7d112998a1..16817d29b0 100755 --- a/indra/cmake/00-Common.cmake +++ b/indra/cmake/00-Common.cmake @@ -49,10 +49,10 @@ if (WINDOWS) set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Od /Zi /MDd /MP -D_SCL_SECURE_NO_WARNINGS=1" CACHE STRING "C++ compiler debug options" FORCE) set(CMAKE_CXX_FLAGS_RELWITHDEBINFO - "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Od /Zi /Zo /MD /MP /Ob0 -D_SECURE_STL=0" + "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Od /Zi /Zo /MD /MP8 /Ob0 -D_SECURE_STL=0" CACHE STRING "C++ compiler release-with-debug options" FORCE) set(CMAKE_CXX_FLAGS_RELEASE - "${CMAKE_CXX_FLAGS_RELEASE} ${LL_CXX_FLAGS} /O2 /Zi /Zo /MD /MP /Ob2 -D_SECURE_STL=0 -D_HAS_ITERATOR_DEBUGGING=0" + "${CMAKE_CXX_FLAGS_RELEASE} ${LL_CXX_FLAGS} /O2 /Zi /Zo /MD /MP8 /Ob2 -D_SECURE_STL=0 -D_HAS_ITERATOR_DEBUGGING=0" CACHE STRING "C++ compiler release options" FORCE) # zlib has assembly-language object files incompatible with SAFESEH set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LARGEADDRESSAWARE /SAFESEH:NO /NODEFAULTLIB:LIBCMT") @@ -80,7 +80,8 @@ if (WINDOWS) if (USE_AVX_OPTIMIZATION) add_definitions( /DLL_WINDOWS=1 -# /DDOM_DYNAMIC + /DNOMINMAX +# /DDOM_DYNAMIC # For shared library colladadom /DUNICODE /D_UNICODE /GS @@ -238,7 +239,6 @@ if (LINUX) -msse2 -mfpmath=sse -pthread -# -std=gnu++0x ) add_definitions(-DAPPID=secondlife) diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake index 45acc80c70..8e47a3568f 100755 --- a/indra/cmake/Boost.cmake +++ b/indra/cmake/Boost.cmake @@ -19,7 +19,7 @@ if (USESYSTEMLIBS) else (USESYSTEMLIBS) use_prebuilt_binary(boost) set(Boost_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include) - set(BOOST_VERSION "1.52") + set(BOOST_VERSION "1.55") add_definitions(-DBOOST_ALL_NO_LIB) if (WINDOWS) @@ -56,6 +56,9 @@ else (USESYSTEMLIBS) set(BOOST_CONTEXT_LIBRARY optimized libboost_context-mt debug libboost_context-mt-gd) + set(BOOST_COROUTINE_LIBRARY + optimized libboost_coroutine-mt + debug libboost_coroutine-mt-gd) set(BOOST_FILESYSTEM_LIBRARY optimized libboost_filesystem-mt debug libboost_filesystem-mt-gd) @@ -82,6 +85,9 @@ else (USESYSTEMLIBS) set(BOOST_CONTEXT_LIBRARY optimized boost_context-mt debug boost_context-mt-d) + set(BOOST_COROUTINE_LIBRARY + optimized boost_coroutine-mt + debug boost_coroutine-mt-d) set(BOOST_FILESYSTEM_LIBRARY optimized boost_filesystem-mt debug boost_filesystem-mt-d) @@ -107,6 +113,9 @@ else (USESYSTEMLIBS) set(BOOST_CONTEXT_LIBRARY optimized boost_context-mt debug boost_context-mt-d) + set(BOOST_COROUTINE_LIBRARY + optimized boost_coroutine-mt + debug boost_coroutine-mt-d) set(BOOST_FILESYSTEM_LIBRARY optimized boost_filesystem-mt debug boost_filesystem-mt-d) diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake index aff17c54b0..fa00eeb1e4 100755 --- a/indra/cmake/Copy3rdPartyLibs.cmake +++ b/indra/cmake/Copy3rdPartyLibs.cmake @@ -40,8 +40,7 @@ if(WINDOWS) libapriconv-1.dll ssleay32.dll libeay32.dll -# libcollada14dom22-d.dll - glod.dll + glod.dll libhunspell.dll ) @@ -53,7 +52,6 @@ if(WINDOWS) libapriconv-1.dll ssleay32.dll libeay32.dll -# libcollada14dom22.dll glod.dll libhunspell.dll ) @@ -194,16 +192,13 @@ elseif(DARWIN) libapr-1.dylib libaprutil-1.0.dylib libaprutil-1.dylib + #libexception_handler.dylib libexpat.1.5.2.dylib libexpat.dylib libGLOD.dylib - #libllqtwebkit.dylib - libminizip.a - libndofdev.dylib libhunspell-1.3.0.dylib - # libexception_handler.dylib - libcollada14dom.dylib - libgrowl.dylib + libndofdev.dylib + libgrowl.dylib libgrowl++.dylib ) @@ -251,53 +246,23 @@ elseif(LINUX) libapr-1.so.0 libaprutil-1.so.0 libatk-1.0.so - libboost_context-mt.so.${BOOST_VERSION}.0 - libboost_filesystem-mt.so.${BOOST_VERSION}.0 - libboost_program_options-mt.so.${BOOST_VERSION}.0 - libboost_regex-mt.so.${BOOST_VERSION}.0 - libboost_signals-mt.so.${BOOST_VERSION}.0 - libboost_system-mt.so.${BOOST_VERSION}.0 - libboost_thread-mt.so.${BOOST_VERSION}.0 - libboost_wave-mt.so.${BOOST_VERSION}.0 - libcollada14dom.so - libcrypto.so.1.0.0 -# libdb-5.1.so + libdb-5.1.so libexpat.so libexpat.so.1 + libfreetype.so.6.6.2 libfreetype.so.6 libGLOD.so -# libgmock_main.so -# libgmock.so.0 libgmodule-2.0.so libgobject-2.0.so -# libgtest_main.so -# libgtest.so.0 libhunspell-1.3.so.0.0.0 - libminizip.so libopenal.so libopenjpeg.so - libssl.so libuuid.so.16 libuuid.so.16.0.22 - libssl.so.1.0.0 - libfontconfig.so.1.4.4 -# libpng15.so.15 -# libpng15.so.15.13.0 - #libnotify.so # *TODO test/fix/get linux libnotify(growl) + libfontconfig.so.1.8.0 + libfontconfig.so.1 ) - if( NOT ND_BUILD64BIT_ARCH ) - set(release_files ${release_files} - libpng15.so.15 - libpng15.so.15.13.0 - ) - else( NOT ND_BUILD64BIT_ARCH ) - set(release_files ${release_files} - libpng15.so.15 - libpng15.so.15.1.0 - ) - endif( NOT ND_BUILD64BIT_ARCH ) - if (USE_TCMALLOC) set(release_files ${release_files} "libtcmalloc_minimal.so") endif (USE_TCMALLOC) diff --git a/indra/cmake/FindJsonCpp.cmake b/indra/cmake/FindJsonCpp.cmake index 9514468b37..c60b4f012e 100755 --- a/indra/cmake/FindJsonCpp.cmake +++ b/indra/cmake/FindJsonCpp.cmake @@ -3,13 +3,16 @@ # - Find JSONCpp # Find the JSONCpp includes and library # This module defines -# JSONCPP_INCLUDE_DIRS, where to find json.h, etc. +# JSONCPP_INCLUDE_DIR, where to find json.h, etc. # JSONCPP_LIBRARIES, the libraries needed to use jsoncpp. # JSONCPP_FOUND, If false, do not try to use jsoncpp. # also defined, but not for general use are # JSONCPP_LIBRARY, where to find the jsoncpp library. -FIND_PATH(JSONCPP_INCLUDE_DIRS jsoncpp/json.h) +FIND_PATH(JSONCPP_INCLUDE_DIR jsoncpp/json.h +/usr/local/include +/usr/include +) # Get the GCC compiler version EXEC_PROGRAM(${CMAKE_CXX_COMPILER} @@ -28,13 +31,12 @@ FIND_LIBRARY(JSONCPP_LIBRARY NAMES ${JSONCPP_NAMES} ) -IF (JSONCPP_LIBRARY AND JSONCPP_INCLUDE_DIRS) +IF (JSONCPP_LIBRARY AND JSONCPP_INCLUDE_DIR) SET(JSONCPP_LIBRARIES ${JSONCPP_LIBRARY}) - SET(JSONCPP_INCLUDE_DIR ${JSONCPP_INCLUDE_DIRS}) SET(JSONCPP_FOUND "YES") -ELSE (JSONCPP_LIBRARY AND JSONCPP_INCLUDE_DIRS) +ELSE (JSONCPP_LIBRARY AND JSONCPP_INCLUDE_DIR) SET(JSONCPP_FOUND "NO") -ENDIF (JSONCPP_LIBRARY AND JSONCPP_INCLUDE_DIRS) +ENDIF (JSONCPP_LIBRARY AND JSONCPP_INCLUDE_DIR) IF (JSONCPP_FOUND) @@ -48,10 +50,10 @@ ELSE (JSONCPP_FOUND) ENDIF (JSONCPP_FOUND) # Deprecated declarations. -SET (NATIVE_JSONCPP_INCLUDE_PATH ${JSONCPP_INCLUDE_DIRS} ) +SET (NATIVE_JSONCPP_INCLUDE_PATH ${JSONCPP_INCLUDE_DIR} ) GET_FILENAME_COMPONENT (NATIVE_JSONCPP_LIB_PATH ${JSONCPP_LIBRARY} PATH) MARK_AS_ADVANCED( JSONCPP_LIBRARY - JSONCPP_INCLUDE_DIRS + JSONCPP_INCLUDE_DIR ) diff --git a/indra/cmake/JsonCpp.cmake b/indra/cmake/JsonCpp.cmake index 915b9bae80..952af655b1 100755 --- a/indra/cmake/JsonCpp.cmake +++ b/indra/cmake/JsonCpp.cmake @@ -11,8 +11,8 @@ else (USESYSTEMLIBS) use_prebuilt_binary(jsoncpp) if (WINDOWS) set(JSONCPP_LIBRARIES - debug json_libmdd.lib - optimized json_libmd.lib) + debug json_libmtd.lib + optimized json_libmt.lib) elseif (DARWIN) set(JSONCPP_LIBRARIES libjson_darwin_libmt.a) elseif (LINUX) diff --git a/indra/cmake/LLPrimitive.cmake b/indra/cmake/LLPrimitive.cmake index 34a24c2c98..93626f689f 100755 --- a/indra/cmake/LLPrimitive.cmake +++ b/indra/cmake/LLPrimitive.cmake @@ -6,34 +6,40 @@ include(Boost) use_prebuilt_binary(colladadom) use_prebuilt_binary(pcre) +use_prebuilt_binary(libxml2) set(LLPRIMITIVE_INCLUDE_DIRS ${LIBS_OPEN_DIR}/llprimitive ) if (WINDOWS) - set(LLPRIMITIVE_LIBRARIES + set(LLPRIMITIVE_LIBRARIES debug llprimitive optimized llprimitive -# debug libcollada14dom22-d - debug libcollada14dom23-d -# optimized libcollada14dom22 - optimized libcollada14dom23 + debug libcollada14dom23-sd + optimized libcollada14dom23-s + libxml2_a + debug pcrecppd + optimized pcrecpp + debug pcred + optimized pcre ${BOOST_SYSTEM_LIBRARIES} ) -elseif (LINUX) - use_prebuilt_binary(libxml2) - set(LLPRIMITIVE_LIBRARIES +elseif (DARWIN) + set(LLPRIMITIVE_LIBRARIES llprimitive - collada14dom + debug collada14dom-d + optimized collada14dom minizip xml2 pcrecpp pcre + iconv # Required by libxml2 ) -else (WINDOWS) - set(LLPRIMITIVE_LIBRARIES +elseif (LINUX) + set(LLPRIMITIVE_LIBRARIES llprimitive - collada14dom + debug collada14dom-d + optimized collada14dom minizip xml2 pcrecpp diff --git a/indra/cmake/OpenSSL.cmake b/indra/cmake/OpenSSL.cmake index 7ffa3af14b..eb548bdcc1 100755 --- a/indra/cmake/OpenSSL.cmake +++ b/indra/cmake/OpenSSL.cmake @@ -17,7 +17,7 @@ else (USESYSTEMLIBS) endif (USESYSTEMLIBS) if (LINUX) - set(CRYPTO_LIBRARIES crypto) + set(CRYPTO_LIBRARIES crypto dl) elseif (DARWIN) set(CRYPTO_LIBRARIES crypto) endif (LINUX) diff --git a/indra/cmake/QuickTimePlugin.cmake b/indra/cmake/QuickTimePlugin.cmake index bac9feaf57..c08e153ee3 100755 --- a/indra/cmake/QuickTimePlugin.cmake +++ b/indra/cmake/QuickTimePlugin.cmake @@ -16,36 +16,16 @@ elseif (WINDOWS) find_library(DEBUG_QUICKTIME_LIBRARY qtmlclient.lib PATHS + ${ARCH_PREBUILT_DIRS_DEBUG} "${QUICKTIME_SDK_DIR}\\libraries" ) find_library(RELEASE_QUICKTIME_LIBRARY qtmlclient.lib PATHS + ${ARCH_PREBUILT_DIRS_RELEASE} "${QUICKTIME_SDK_DIR}\\libraries" ) - if (DEBUG_QUICKTIME_LIBRARY AND RELEASE_QUICKTIME_LIBRARY) - message ("Using QuickTime SDK libraries.") - else (DEBUG_QUICKTIME_LIBRARY AND RELEASE_QUICKTIME_LIBRARY) - message ("Using QuickTime prebuilt libraries.") - set (USE_QUICKTIME_PREBUILT ON CACHE BOOL "Using QuickTime prebuilt libraries.") - - if (NOT INSTALL_PROPRIETARY) - include(Prebuilt) - use_prebuilt_binary(quicktime) - endif (NOT INSTALL_PROPRIETARY) - - find_library(DEBUG_QUICKTIME_LIBRARY qtmlclient.lib - PATHS - ${ARCH_PREBUILT_DIRS_RELEASE} - ) - - find_library(RELEASE_QUICKTIME_LIBRARY qtmlclient.lib - PATHS - ${ARCH_PREBUILT_DIRS_RELEASE} - ) - endif (DEBUG_QUICKTIME_LIBRARY AND RELEASE_QUICKTIME_LIBRARY) - if (DEBUG_QUICKTIME_LIBRARY AND RELEASE_QUICKTIME_LIBRARY) set(QUICKTIME_LIBRARY optimized ${RELEASE_QUICKTIME_LIBRARY} @@ -54,15 +34,10 @@ elseif (WINDOWS) endif (DEBUG_QUICKTIME_LIBRARY AND RELEASE_QUICKTIME_LIBRARY) - if (USE_QUICKTIME_PREBUILT) - include_directories( - ${LIBS_PREBUILT_DIR}/include/quicktime + include_directories( + ${LIBS_PREBUILT_DIR}/include/quicktime + "${QUICKTIME_SDK_DIR}\\CIncludes" ) - else (USE_QUICKTIME_PREBUILT) - include_directories( - "${QUICKTIME_SDK_DIR}\\CIncludes" - ) - endif (USE_QUICKTIME_PREBUILT) endif (DARWIN) mark_as_advanced(QUICKTIME_LIBRARY) diff --git a/indra/cmake/WebKitLibPlugin.cmake b/indra/cmake/WebKitLibPlugin.cmake index 241f7e1766..f8bc1743f5 100755 --- a/indra/cmake/WebKitLibPlugin.cmake +++ b/indra/cmake/WebKitLibPlugin.cmake @@ -36,20 +36,20 @@ endif (USESYSTEMLIBS) if (WINDOWS) set(WEBKIT_PLUGIN_LIBRARIES - debug llqtwebkitd - debug QtWebKitd4 - debug QtOpenGLd4 - debug QtNetworkd4 - debug QtGuid4 - debug QtCored4 - debug qtmaind - optimized llqtwebkit - optimized QtWebKit4 - optimized QtOpenGL4 - optimized QtNetwork4 - optimized QtGui4 - optimized QtCore4 - optimized qtmain + debug llqtwebkitd + debug QtWebKitd4 + debug QtOpenGLd4 + debug QtNetworkd4 + debug QtGuid4 + debug QtCored4 + debug qtmaind + optimized llqtwebkit + optimized QtWebKit4 + optimized QtOpenGL4 + optimized QtNetwork4 + optimized QtGui4 + optimized QtCore4 + optimized qtmain ) elseif (DARWIN) set(WEBKIT_PLUGIN_LIBRARIES @@ -66,30 +66,29 @@ elseif (LINUX) set(WEBKIT_PLUGIN_LIBRARIES ${LLQTWEBKIT_LIBRARY} ${QT_LIBRARIES} ${QT_PLUGIN_LIBRARIES}) else (USESYSTEMLIBS) set(WEBKIT_PLUGIN_LIBRARIES - llqtwebkit -# qico -# qpng -# qtiff -# qsvg -# QtSvg - QtWebKit - QtOpenGL - QtNetwork - QtGui - QtCore + llqtwebkit +# qico +# qpng +# qtiff +# qsvg +# QtSvg + QtWebKit + QtOpenGL + QtNetwork + QtGui + QtCore jpeg -# jscore - fontconfig - X11 - Xrender - GL +# jscore +# qgif +# qjpeg +# jpeg + fontconfig + X11 + Xrender + GL -# sqlite3 -# Xi -# SM - ) - if( ND_BUILD64BIT_ARCH ) - set(WEBKIT_PLUGIN_LIBRARIES ${WEBKIT_PLUGIN_LIBRARIES} jscore ) - endif( ND_BUILD64BIT_ARCH ) - endif (USESYSTEMLIBS) +# sqlite3 +# Xi +# SM + ) endif (WINDOWS) diff --git a/indra/cmake/ZLIB.cmake b/indra/cmake/ZLIB.cmake index b99a8644c9..5c1e3c57a1 100755 --- a/indra/cmake/ZLIB.cmake +++ b/indra/cmake/ZLIB.cmake @@ -13,7 +13,22 @@ else (USESYSTEMLIBS) set(ZLIB_LIBRARIES debug zlibd optimized zlib) - else (WINDOWS) + 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,-lz 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(ZLIB_PRELOAD_ARCHIVES -Wl,--whole-archive z -Wl,--no-whole-archive) + set(ZLIB_LIBRARIES z) + elseif (DARWIN) set(ZLIB_LIBRARIES z) endif (WINDOWS) if (WINDOWS OR LINUX)