diff --git a/autobuild.xml b/autobuild.xml index 5edc42b07..3aaf811aa 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -915,50 +915,6 @@ version 2.00.03.192211300 - fontconfig - - copyright - Copyright (C) 2000,2001,2002,2003,2004,2006,2007 Keith Packard, 2005 Patrick Lam, 2009 Roozbeh Pournader, 2008,2009 Red Hat, Inc., 2008 Danilo Ĺ egan, 2012 Google, Inc. - description - Fontconfig is a library for configuring and customizing font access. - license - bsd - license_file - LICENSES/fontconfig.txt - name - fontconfig - platforms - - linux - - archive - - hash - 2843c48e6c84a51e3d6aa05dace4c8c0 - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-fontconfig-update/rev/290569/arch/Linux/installer/fontconfig-2.11.0-linux-20140602.tar.bz2 - - name - linux - - linux64 - - archive - - hash - 25726244f5bcd05f412514b030098c3c - hash_algorithm - md5 - url - http://depot.alchemyviewer.org/pub/linux64/lib-trusty/fontconfig-2.11.0-linux64-201603241804.tar.bz2 - - name - linux64 - - - version - 2.11.0 - fonts copyright @@ -1065,32 +1021,6 @@ name darwin - linux - - archive - - hash - 52f87a65cc61ec4b05721c079d015b19 - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-freetype-update/rev/290557/arch/Linux/installer/freetype-2.4.4-linux-20140602.tar.bz2 - - name - linux - - linux64 - - archive - - hash - b10ba0775b9f1033daf580a2cb55789d - hash_algorithm - md5 - url - http://depot.alchemyviewer.org/pub/linux64/lib-trusty/freetype-2.6.3-linux64-201603241755.tar.bz2 - - name - linux64 - windows archive @@ -2945,10 +2875,10 @@ build command - make + ninja options - -j 7 + -v configure @@ -2956,7 +2886,7 @@ options -G - Unix Makefiles + Ninja default @@ -2969,10 +2899,10 @@ build command - make + ninja options - -j 7 + -v configure @@ -2980,7 +2910,7 @@ options -G - Unix Makefiles + Ninja name @@ -3001,10 +2931,10 @@ build command - make + ninja options - -j 7 + -v configure @@ -3012,7 +2942,7 @@ options -G - Unix Makefiles + Ninja -DWORD_SIZE:STRING=64 @@ -3026,10 +2956,10 @@ build command - make + ninja options - -j 7 + --v configure @@ -3037,7 +2967,7 @@ options -G - Unix Makefiles + Ninja -DWORD_SIZE:STRING=64 diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index dede5fa20..6dddeed57 100644 --- a/indra/cmake/00-Common.cmake +++ b/indra/cmake/00-Common.cmake @@ -5,6 +5,7 @@ if(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED) set(${CMAKE_CURRENT_LIST_FILE}_INCLUDED "YES") +include(CheckCCompilerFlag) include(Variables) # Portable compilation flags. @@ -194,10 +195,13 @@ if (LINUX) # End of hacks. - if (NOT STANDALONE) - # this stops us requiring a really recent glibc at runtime - add_definitions(-fno-stack-protector) - endif (NOT STANDALONE) + CHECK_C_COMPILER_FLAG(-fstack-protector-strong HAS_STRONG_STACK_PROTECTOR) + if (${CMAKE_BUILD_TYPE} STREQUAL "Release") + if(HAS_STRONG_STACK_PROTECTOR) + add_compile_options(-fstack-protector-strong) + endif(HAS_STRONG_STACK_PROTECTOR) + endif (${CMAKE_BUILD_TYPE} STREQUAL "Release") + if (${ARCH} STREQUAL "x86_64") add_definitions(-pipe) set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ffast-math") diff --git a/indra/cmake/BuildPackagesInfo.cmake b/indra/cmake/BuildPackagesInfo.cmake index 64a353ba2..26088fcaf 100644 --- a/indra/cmake/BuildPackagesInfo.cmake +++ b/indra/cmake/BuildPackagesInfo.cmake @@ -9,7 +9,7 @@ include(Variables) # building in an IDE, it probably isn't. Set it explicitly using # run_build_test.py. add_custom_command(OUTPUT packages-info.txt - COMMENT Generating packages-info.txt for the about box + COMMENT "Generating packages-info.txt for the about box" MAIN_DEPENDENCY ${CMAKE_SOURCE_DIR}/../autobuild.xml DEPENDS ${CMAKE_SOURCE_DIR}/../scripts/packages-formatter.py ${CMAKE_SOURCE_DIR}/../autobuild.xml diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake index b9d12919b..abe2a6f2a 100644 --- a/indra/cmake/Copy3rdPartyLibs.cmake +++ b/indra/cmake/Copy3rdPartyLibs.cmake @@ -86,6 +86,11 @@ if(WINDOWS) set(release_files ${release_files} libtcmalloc_minimal.dll) endif(NOT DISABLE_TCMALLOC) + if(OPENAL) + set(debug_files ${debug_files} alut.dll OpenAL32.dll) + set(release_files ${release_files} alut.dll OpenAL32.dll) + endif(OPENAL) + if (FMODSTUDIO) set(debug_files ${debug_files} fmodL.dll) set(release_files ${release_files} fmod.dll) @@ -179,16 +184,10 @@ elseif(LINUX) libatk-1.0.so libexpat.so libexpat.so.1 - libfreetype.so.6.12.3 - libfreetype.so.6 - libfreetype.so libGLOD.so libgmodule-2.0.so libgobject-2.0.so libopenal.so - libfontconfig.so.1.8.0 - libfontconfig.so.1 - libfontconfig.so ) if (USE_TCMALLOC) diff --git a/indra/cmake/FMODSTUDIO.cmake b/indra/cmake/FMODSTUDIO.cmake index 84de5689e..2f8691c27 100644 --- a/indra/cmake/FMODSTUDIO.cmake +++ b/indra/cmake/FMODSTUDIO.cmake @@ -30,22 +30,21 @@ if (FMODSTUDIO) optimized ${FMOD_LINK_LIBRARY_RELEASE} ) - set(FMOD_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/fmodstudio) + set(FMODSTUDIO_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/fmodstudio) endif(FMODSTUDIO) -if(FMOD_LIBRARY_RELEASE AND FMOD_INCLUDE_DIR) +if(FMOD_LIBRARY_RELEASE AND FMODSTUDIO_INCLUDE_DIR) set(FMOD ON) if (NOT FMOD_LIBRARY_DEBUG) #Use release library in debug configuration if debug library is absent. set(FMOD_LIBRARY_DEBUG ${FMOD_LIBRARY_RELEASE}) endif (NOT FMOD_LIBRARY_DEBUG) -else (FMOD_LIBRARY_RELEASE AND FMOD_INCLUDE_DIR) +else (FMOD_LIBRARY_RELEASE AND FMODSTUDIO_INCLUDE_DIR) message(STATUS "No support for FMOD Studio audio (need to set FMODSTUDIO_SDK_DIR?)") set(FMOD OFF) set(FMODSTUDIO OFF) -endif (FMOD_LIBRARY_RELEASE AND FMOD_INCLUDE_DIR) +endif (FMOD_LIBRARY_RELEASE AND FMODSTUDIO_INCLUDE_DIR) if (FMOD) message(STATUS "Building with FMOD Studio audio support") - set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_FMODSTUDIO=1") endif (FMOD) diff --git a/indra/cmake/FreeType.cmake b/indra/cmake/FreeType.cmake index 2d6025f3a..da122419d 100644 --- a/indra/cmake/FreeType.cmake +++ b/indra/cmake/FreeType.cmake @@ -1,14 +1,14 @@ # -*- cmake -*- include(Prebuilt) -if (STANDALONE) +if (LINUX) include(FindPkgConfig) pkg_check_modules(FREETYPE REQUIRED freetype2) -else (STANDALONE) +else (LINUX) use_prebuilt_binary(freetype) set(FREETYPE_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/freetype2) set(FREETYPE_LIBRARIES freetype) -endif (STANDALONE) +endif (LINUX) link_directories(${FREETYPE_LIBRARY_DIRS}) diff --git a/indra/cmake/GeneratePrecompiledHeader.cmake b/indra/cmake/GeneratePrecompiledHeader.cmake index 9ff2062ed..67929d3a3 100644 --- a/indra/cmake/GeneratePrecompiledHeader.cmake +++ b/indra/cmake/GeneratePrecompiledHeader.cmake @@ -94,7 +94,7 @@ macro(target_precompiled_header TARGET_NAME PRECOMPILED_HEADER PRECOMPILED_SOURC # Add a custom target for building the precompiled header. add_custom_command( OUTPUT ${OUTPUT_NAME} - COMMAND ${CMAKE_CXX_COMPILER} @${PCH_FLAGS_FILE} ${COMPILER_FLAGS} -x c++-header -std=${CXX_STD} -o ${OUTPUT_NAME} ${PRECOMPILED_HEADER} + COMMAND ${CMAKE_CXX_COMPILER} @${PCH_FLAGS_FILE} ${COMPILER_FLAGS} -x c++-header -o ${OUTPUT_NAME} ${PRECOMPILED_HEADER} DEPENDS ${PRECOMPILED_HEADER}) add_custom_target(${TARGET_NAME}_gch DEPENDS ${OUTPUT_NAME}) add_dependencies(${TARGET_NAME} ${TARGET_NAME}_gch) diff --git a/indra/cmake/OPENAL.cmake b/indra/cmake/OPENAL.cmake index 7f98cbbc4..c25eb929e 100644 --- a/indra/cmake/OPENAL.cmake +++ b/indra/cmake/OPENAL.cmake @@ -2,7 +2,6 @@ include(Linking) include(Prebuilt) -if(NOT FMOD) if (LINUX) set(OPENAL ON CACHE BOOL "Enable OpenAL") else (LINUX) @@ -10,6 +9,7 @@ else (LINUX) endif (LINUX) if (OPENAL) + set(OPENAL_LIB_INCLUDE_DIRS "${LIBS_PREBUILT_DIR}/include/AL") if (STANDALONE) include(FindPkgConfig) include(FindOpenAL) @@ -18,15 +18,16 @@ if (OPENAL) else (STANDALONE) use_prebuilt_binary(openal) endif (STANDALONE) + if(WINDOWS) set(OPENAL_LIBRARIES - openal + OpenAL32 alut ) - set(OPENAL_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include) -endif (OPENAL) - -if (OPENAL) + else() + set(OPENAL_LIBRARIES + openal + alut + ) + endif() message(STATUS "Building with OpenAL audio support") - set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_OPENAL") endif (OPENAL) -endif(NOT FMOD) diff --git a/indra/cmake/ViewerMiscLibs.cmake b/indra/cmake/ViewerMiscLibs.cmake index 2984f5261..36ee514e9 100644 --- a/indra/cmake/ViewerMiscLibs.cmake +++ b/indra/cmake/ViewerMiscLibs.cmake @@ -3,9 +3,6 @@ include(Prebuilt) if (NOT STANDALONE) use_prebuilt_binary(slvoice) - if(LINUX) - use_prebuilt_binary(fontconfig) - endif(LINUX) else (NOT STANDALONE) # Download there even when using standalone. set(STANDALONE OFF) @@ -16,4 +13,9 @@ else (NOT STANDALONE) set(STANDALONE ON) endif(NOT STANDALONE) +if(LINUX) + include(FindPkgConfig) + pkg_check_modules(FONTCONFIG REQUIRED fontconfig) +endif(LINUX) + use_prebuilt_binary(fonts) diff --git a/indra/llappearance/llwearable.cpp b/indra/llappearance/llwearable.cpp index 5761c3535..31edbc67d 100644 --- a/indra/llappearance/llwearable.cpp +++ b/indra/llappearance/llwearable.cpp @@ -184,7 +184,7 @@ void LLWearable::createLayers(S32 te, LLAvatarAppearance *avatarp) { LLTexLayerSet *layer_set = NULL; const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearanceDictionary::getInstance()->getTexture((ETextureIndex)te); - if (texture_dict->mIsUsedByBakedTexture) + if (texture_dict && texture_dict->mIsUsedByBakedTexture) { const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex; @@ -197,7 +197,7 @@ void LLWearable::createLayers(S32 te, LLAvatarAppearance *avatarp) } else { - LL_ERRS() << "could not find layerset for LTO in wearable!" << LL_ENDL; + LL_WARNS() << "could not find layerset for LTO in wearable!" << LL_ENDL; } } diff --git a/indra/llaudio/CMakeLists.txt b/indra/llaudio/CMakeLists.txt index a200a456e..20456f5dc 100644 --- a/indra/llaudio/CMakeLists.txt +++ b/indra/llaudio/CMakeLists.txt @@ -3,8 +3,6 @@ project(llaudio) include(00-Common) -include(Audio) -include(LLAudio) include(FMODSTUDIO) include(OPENAL) include(LLCommon) @@ -12,10 +10,6 @@ include(LLMath) include(LLMessage) include(LLVFS) -if (FMOD) - include_directories(${FMOD_INCLUDE_DIR}) -endif(FMOD) - include_directories( ${LLAUDIO_INCLUDE_DIRS} ${LLCOMMON_INCLUDE_DIRS} @@ -26,7 +20,7 @@ include_directories( ${VORBISENC_INCLUDE_DIRS} ${VORBISFILE_INCLUDE_DIRS} ${VORBIS_INCLUDE_DIRS} - ${OPENAL_INCLUDE_DIRS} + ${OPENAL_LIB_INCLUDE_DIRS} ${FREEAULT_LIB_INCLUDE_DIRS} ) @@ -50,6 +44,9 @@ set(llaudio_HEADER_FILES ) if (FMODSTUDIO) + include_directories( + ${FMODSTUDIO_INCLUDE_DIR} + ) list(APPEND llaudio_SOURCE_FILES llaudioengine_fmodstudio.cpp lllistener_fmodstudio.cpp diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 181d5cf46..57ad1b0b2 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -51,6 +51,10 @@ include(ZLIB) include(URIPARSER) +if(FMODSTUDIO) + include_directories(${FMODSTUDIO_INCLUDE_DIR}) +endif(FMODSTUDIO) + if(USE_CRASHPAD) include_directories(${CRASHPAD_INCLUDE_DIRS}) endif(USE_CRASHPAD) @@ -77,6 +81,7 @@ include_directories( ${LLWINDOW_INCLUDE_DIRS} ${LLXML_INCLUDE_DIRS} ${HUNSPELL_INCLUDE_DIR} + ${OPENAL_LIB_INCLUDE_DIRS} ${LLAPPEARANCE_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR} ) @@ -1425,7 +1430,15 @@ if (WINDOWS) list(APPEND viewer_SOURCE_FILES ${viewer_INSTALLER_FILES}) endif (WINDOWS) -set_source_files_properties(llstartup.cpp PROPERTIES COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS}") +if (OPENAL) + list(APPEND LLSTARTUP_COMPILE_DEFINITIONS "LL_OPENAL=1") +endif (OPENAL) + +if (FMODSTUDIO) + list(APPEND LLSTARTUP_COMPILE_DEFINITIONS "LL_FMODSTUDIO=1") +endif (FMODSTUDIO) + +set_source_files_properties(llstartup.cpp PROPERTIES COMPILE_DEFINITIONS "${LLSTARTUP_COMPILE_DEFINITIONS}") if (LIBVLCPLUGIN) set_source_files_properties(llfloaterabout.cpp PROPERTIES COMPILE_DEFINITIONS "VLCPLUGIN=1") diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index 7d9dcdb20..292524dd8 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -2892,6 +2892,8 @@ void LLVOAvatarSelf::requestLayerSetUpdate(ETextureIndex index ) if( mUpperBodyLayerSet ) mUpperBodyLayerSet->requestUpdate(); */ const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearanceDictionary::getInstance()->getTexture(index); + if (!texture_dict) + return; if (!texture_dict->mIsLocalTexture || !texture_dict->mIsUsedByBakedTexture) return; const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex; @@ -2908,7 +2910,7 @@ LLViewerTexLayerSet* LLVOAvatarSelf::getLayerSet(ETextureIndex index) const case TEX_HEAD_BODYPAINT: return mHeadLayerSet; */ const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearanceDictionary::getInstance()->getTexture(index); - if (texture_dict->mIsUsedByBakedTexture) + if (texture_dict && texture_dict->mIsUsedByBakedTexture) { const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex; return getLayerSet(baked_index); diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index b5e4a0a21..d3e476fe3 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -477,6 +477,10 @@ class WindowsManifest(ViewerManifest): if self.path("fmod.dll") == 0: print "Skipping fmodstudio audio library(assuming other audio engine)" + # Get OpenAL dlls, continue if missing + if self.path("alut.dll","OpenAL32.dll") == 0: + print "Skipping OpenAL audio library (assuming other audio engine)" + # Vivox runtimes self.path("SLVoice.exe") if (self.address_size == 64):