diff options
Diffstat (limited to 'indra/cmake')
| -rw-r--r-- | indra/cmake/00-Common.cmake | 11 | ||||
| -rw-r--r-- | indra/cmake/Atmosphere.cmake | 5 | ||||
| -rw-r--r-- | indra/cmake/Boost.cmake | 110 | ||||
| -rw-r--r-- | indra/cmake/BuildPackagesInfo.cmake | 3 | ||||
| -rw-r--r-- | indra/cmake/CEFPlugin.cmake | 4 | ||||
| -rw-r--r-- | indra/cmake/CMakeLists.txt | 6 | ||||
| -rw-r--r-- | indra/cmake/Copy3rdPartyLibs.cmake | 266 | ||||
| -rw-r--r-- | indra/cmake/DirectX.cmake | 48 | ||||
| -rw-r--r-- | indra/cmake/FMODEX.cmake | 46 | ||||
| -rw-r--r-- | indra/cmake/FMODSTUDIO.cmake | 38 | ||||
| -rw-r--r-- | indra/cmake/FindFMODEX.cmake | 65 | ||||
| -rw-r--r-- | indra/cmake/FindGoogleBreakpad.cmake | 40 | ||||
| -rw-r--r-- | indra/cmake/GoogleBreakpad.cmake | 22 | ||||
| -rw-r--r-- | indra/cmake/LLAddBuildTest.cmake | 18 | ||||
| -rw-r--r-- | indra/cmake/LLAppearance.cmake | 2 | ||||
| -rw-r--r-- | indra/cmake/LLCommon.cmake | 4 | ||||
| -rw-r--r-- | indra/cmake/LLCoreHttp.cmake | 2 | ||||
| -rw-r--r-- | indra/cmake/OpenSSL.cmake | 2 | ||||
| -rw-r--r-- | indra/cmake/URIPARSER.cmake | 2 | ||||
| -rw-r--r-- | indra/cmake/Variables.cmake | 10 | ||||
| -rw-r--r-- | indra/cmake/bugsplat.cmake | 58 | ||||
| -rwxr-xr-x | indra/cmake/run_build_test.py | 19 | 
22 files changed, 302 insertions, 479 deletions
| diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index 03da30649a..8aea50e02b 100644 --- a/indra/cmake/00-Common.cmake +++ b/indra/cmake/00-Common.cmake @@ -60,7 +60,16 @@ if (WINDOWS)    # http://www.cmake.org/pipermail/cmake/2009-September/032143.html    string(REPLACE "/Zm1000" " " CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) -  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") +  # Without PreferredToolArchitecture=x64, as of 2020-06-26 the 32-bit +  # compiler on our TeamCity build hosts has started running out of virtual +  # memory for the precompiled header file. +  # CP changed to only append the flag for 32bit builds - on 64bit builds, +  # locally at least, the build output is spammed with 1000s of 'D9002' +  # warnings about this switch being ignored. +  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")   +  if( ADDRESS_SIZE EQUAL 32 ) +    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /p:PreferredToolArchitecture=x64")   +  endif()    set(CMAKE_CXX_FLAGS_RELWITHDEBINFO         "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Zo" diff --git a/indra/cmake/Atmosphere.cmake b/indra/cmake/Atmosphere.cmake new file mode 100644 index 0000000000..9c14df2a11 --- /dev/null +++ b/indra/cmake/Atmosphere.cmake @@ -0,0 +1,5 @@ +# -*- cmake -*- +include(Prebuilt) +use_prebuilt_binary(libatmosphere) +set(LIBATMOSPHERE_LIBRARIES atmosphere) +set(LIBATMOSPHERE_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/atmosphere) diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake index 180a84dbcf..06a7ab6d75 100644 --- a/indra/cmake/Boost.cmake +++ b/indra/cmake/Boost.cmake @@ -8,7 +8,7 @@ if (USESYSTEMLIBS)    include(FindBoost)    set(BOOST_CONTEXT_LIBRARY boost_context-mt) -  set(BOOST_COROUTINE_LIBRARY boost_coroutine-mt) +  set(BOOST_FIBER_LIBRARY boost_fiber-mt)    set(BOOST_FILESYSTEM_LIBRARY boost_filesystem-mt)    set(BOOST_PROGRAM_OPTIONS_LIBRARY boost_program_options-mt)    set(BOOST_REGEX_LIBRARY boost_regex-mt) @@ -18,11 +18,15 @@ if (USESYSTEMLIBS)  else (USESYSTEMLIBS)    use_prebuilt_binary(boost)    set(Boost_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include) -  set(BOOST_VERSION "1.55") + +  # As of sometime between Boost 1.67 and 1.72, Boost libraries are suffixed +  # with the address size. +  set(addrsfx "-x${ADDRESS_SIZE}")    if (WINDOWS)      if(MSVC80)        # This should be obsolete at this point +      set(BOOST_VERSION "1.55")        set(BOOST_CONTEXT_LIBRARY             optimized libboost_context-vc80-mt-${BOOST_VERSION}            debug libboost_context-vc80-mt-gd-${BOOST_VERSION}) @@ -47,80 +51,80 @@ else (USESYSTEMLIBS)      else(MSVC80)        # MSVC 10.0 config        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) +          optimized libboost_context-mt${addrsfx} +          debug libboost_context-mt${addrsfx}-gd) +      set(BOOST_FIBER_LIBRARY  +          optimized libboost_fiber-mt${addrsfx} +          debug libboost_fiber-mt${addrsfx}-gd)        set(BOOST_FILESYSTEM_LIBRARY  -          optimized libboost_filesystem-mt -          debug libboost_filesystem-mt-gd) +          optimized libboost_filesystem-mt${addrsfx} +          debug libboost_filesystem-mt${addrsfx}-gd)        set(BOOST_PROGRAM_OPTIONS_LIBRARY  -          optimized libboost_program_options-mt -          debug libboost_program_options-mt-gd) +          optimized libboost_program_options-mt${addrsfx} +          debug libboost_program_options-mt${addrsfx}-gd)        set(BOOST_REGEX_LIBRARY -          optimized libboost_regex-mt -          debug libboost_regex-mt-gd) +          optimized libboost_regex-mt${addrsfx} +          debug libboost_regex-mt${addrsfx}-gd)        set(BOOST_SIGNALS_LIBRARY  -          optimized libboost_signals-mt -          debug libboost_signals-mt-gd) +          optimized libboost_signals-mt${addrsfx} +          debug libboost_signals-mt${addrsfx}-gd)        set(BOOST_SYSTEM_LIBRARY  -          optimized libboost_system-mt -          debug libboost_system-mt-gd) +          optimized libboost_system-mt${addrsfx} +          debug libboost_system-mt${addrsfx}-gd)        set(BOOST_THREAD_LIBRARY  -          optimized libboost_thread-mt -          debug libboost_thread-mt-gd) +          optimized libboost_thread-mt${addrsfx} +          debug libboost_thread-mt${addrsfx}-gd)      endif (MSVC80)    elseif (LINUX)      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) +        optimized boost_context-mt${addrsfx} +        debug boost_context-mt${addrsfx}-d) +    set(BOOST_FIBER_LIBRARY +        optimized boost_fiber-mt${addrsfx} +        debug boost_fiber-mt${addrsfx}-d)      set(BOOST_FILESYSTEM_LIBRARY -        optimized boost_filesystem-mt -        debug boost_filesystem-mt-d) +        optimized boost_filesystem-mt${addrsfx} +        debug boost_filesystem-mt${addrsfx}-d)      set(BOOST_PROGRAM_OPTIONS_LIBRARY -        optimized boost_program_options-mt -        debug boost_program_options-mt-d) +        optimized boost_program_options-mt${addrsfx} +        debug boost_program_options-mt${addrsfx}-d)      set(BOOST_REGEX_LIBRARY -        optimized boost_regex-mt -        debug boost_regex-mt-d) +        optimized boost_regex-mt${addrsfx} +        debug boost_regex-mt${addrsfx}-d)      set(BOOST_SIGNALS_LIBRARY -        optimized boost_signals-mt -        debug boost_signals-mt-d) +        optimized boost_signals-mt${addrsfx} +        debug boost_signals-mt${addrsfx}-d)      set(BOOST_SYSTEM_LIBRARY -        optimized boost_system-mt -        debug boost_system-mt-d) +        optimized boost_system-mt${addrsfx} +        debug boost_system-mt${addrsfx}-d)      set(BOOST_THREAD_LIBRARY -        optimized boost_thread-mt -        debug boost_thread-mt-d) +        optimized boost_thread-mt${addrsfx} +        debug boost_thread-mt${addrsfx}-d)    elseif (DARWIN)      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) +        optimized boost_context-mt${addrsfx} +        debug boost_context-mt${addrsfx}-d) +    set(BOOST_FIBER_LIBRARY +        optimized boost_fiber-mt${addrsfx} +        debug boost_fiber-mt${addrsfx}-d)      set(BOOST_FILESYSTEM_LIBRARY -        optimized boost_filesystem-mt -        debug boost_filesystem-mt-d) +        optimized boost_filesystem-mt${addrsfx} +        debug boost_filesystem-mt${addrsfx}-d)      set(BOOST_PROGRAM_OPTIONS_LIBRARY -        optimized boost_program_options-mt -        debug boost_program_options-mt-d) +        optimized boost_program_options-mt${addrsfx} +        debug boost_program_options-mt${addrsfx}-d)      set(BOOST_REGEX_LIBRARY -        optimized boost_regex-mt -        debug boost_regex-mt-d) +        optimized boost_regex-mt${addrsfx} +        debug boost_regex-mt${addrsfx}-d)      set(BOOST_SIGNALS_LIBRARY -        optimized boost_signals-mt -        debug boost_signals-mt-d) +        optimized boost_signals-mt${addrsfx} +        debug boost_signals-mt${addrsfx}-d)      set(BOOST_SYSTEM_LIBRARY -        optimized boost_system-mt -        debug boost_system-mt-d) +        optimized boost_system-mt${addrsfx} +        debug boost_system-mt${addrsfx}-d)      set(BOOST_THREAD_LIBRARY -        optimized boost_thread-mt -        debug boost_thread-mt-d) +        optimized boost_thread-mt${addrsfx} +        debug boost_thread-mt${addrsfx}-d)    endif (WINDOWS)  endif (USESYSTEMLIBS) diff --git a/indra/cmake/BuildPackagesInfo.cmake b/indra/cmake/BuildPackagesInfo.cmake index 4314cca33d..8f8b6b2330 100644 --- a/indra/cmake/BuildPackagesInfo.cmake +++ b/indra/cmake/BuildPackagesInfo.cmake @@ -1,6 +1,7 @@  # -*- cmake -*-  # Construct the version and copyright information based on package data.  include(Python) +include(FindAutobuild)  # packages-formatter.py runs autobuild install --versions, which needs to know  # the build_directory, which (on Windows) depends on AUTOBUILD_ADDRSIZE. @@ -13,7 +14,7 @@ add_custom_command(OUTPUT packages-info.txt    DEPENDS ${CMAKE_SOURCE_DIR}/../scripts/packages-formatter.py            ${CMAKE_SOURCE_DIR}/../autobuild.xml    COMMAND ${PYTHON_EXECUTABLE} -          ${CMAKE_SOURCE_DIR}/cmake/run_build_test.py -DAUTOBUILD_ADDRSIZE=${ADDRESS_SIZE} +          ${CMAKE_SOURCE_DIR}/cmake/run_build_test.py -DAUTOBUILD_ADDRSIZE=${ADDRESS_SIZE} -DAUTOBUILD=${AUTOBUILD_EXECUTABLE}            ${PYTHON_EXECUTABLE}            ${CMAKE_SOURCE_DIR}/../scripts/packages-formatter.py "${VIEWER_CHANNEL}" "${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}" > packages-info.txt    ) diff --git a/indra/cmake/CEFPlugin.cmake b/indra/cmake/CEFPlugin.cmake index b8e569d3a8..7d8bfb1b0f 100644 --- a/indra/cmake/CEFPlugin.cmake +++ b/indra/cmake/CEFPlugin.cmake @@ -24,7 +24,7 @@ elseif (DARWIN)          message(FATAL_ERROR "AppKit not found")      endif() -    FIND_LIBRARY(CEF_LIBRARY "Chromium Embedded Framework" ${ARCH_PREBUILT_DIRS_RELEASE}) +    set(CEF_LIBRARY "'${ARCH_PREBUILT_DIRS_RELEASE}/Chromium\ Embedded\ Framework.framework'")      if (NOT CEF_LIBRARY)          message(FATAL_ERROR "CEF not found")      endif() @@ -33,7 +33,7 @@ elseif (DARWIN)          ${ARCH_PREBUILT_DIRS_RELEASE}/libcef_dll_wrapper.a          ${ARCH_PREBUILT_DIRS_RELEASE}/libdullahan.a          ${APPKIT_LIBRARY} -        ${CEF_LIBRARY} +        "-F ${CEF_LIBRARY}"         )  elseif (LINUX) diff --git a/indra/cmake/CMakeLists.txt b/indra/cmake/CMakeLists.txt index d64c38b1b3..c65906b853 100644 --- a/indra/cmake/CMakeLists.txt +++ b/indra/cmake/CMakeLists.txt @@ -22,15 +22,12 @@ set(cmake_SOURCE_FILES      Copy3rdPartyLibs.cmake      DBusGlib.cmake      DeploySharedLibs.cmake -    DirectX.cmake      DragDrop.cmake      EXPAT.cmake      FindAPR.cmake      FindAutobuild.cmake      FindBerkeleyDB.cmake -    FindFMODEX.cmake      FindGLH.cmake -    FindGoogleBreakpad.cmake      FindHUNSPELL.cmake      FindICU4C.cmake      FindJsonCpp.cmake @@ -40,13 +37,12 @@ set(cmake_SOURCE_FILES      FindURIPARSER.cmake      FindXmlRpcEpi.cmake      FindZLIB.cmake -    FMODEX.cmake +    FMODSTUDIO.cmake      FreeType.cmake      GLEXT.cmake      GLH.cmake      GLOD.cmake  ##  GStreamer010Plugin.cmake -    GoogleBreakpad.cmake      GoogleMock.cmake      Havok.cmake      Hunspell.cmake diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake index dde53835fb..b20d23cead 100644 --- a/indra/cmake/Copy3rdPartyLibs.cmake +++ b/indra/cmake/Copy3rdPartyLibs.cmake @@ -7,6 +7,21 @@  include(CMakeCopyIfDifferent)  include(Linking) +# When we copy our dependent libraries, we almost always want to copy them to +# both the Release and the RelWithDebInfo staging directories. This has +# resulted in duplicate (or worse, erroneous attempted duplicate) +# copy_if_different commands. Encapsulate that usage. +# Pass FROM_DIR, TARGETS and the files to copy. TO_DIR is implicit. +# to_staging_dirs diverges from copy_if_different in that it appends to TARGETS. +MACRO(to_staging_dirs from_dir targets) +  foreach(staging_dir +          "${SHARED_LIB_STAGING_DIR_RELEASE}" +          "${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}") +    copy_if_different("${from_dir}" "${staging_dir}" out_targets ${ARGN}) +    list(APPEND "${targets}" "${out_targets}") +  endforeach() +ENDMACRO(to_staging_dirs from_dir to_dir targets) +  ###################################################################  # set up platform specific lists of files that need to be copied  ################################################################### @@ -17,17 +32,16 @@ if(WINDOWS)      #*******************************      # VIVOX - *NOTE: no debug version -    set(vivox_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}") -    set(vivox_files -        SLVoice.exe -        ) +    set(vivox_lib_dir "${ARCH_PREBUILT_DIRS_RELEASE}") +    set(slvoice_src_dir "${ARCH_PREBUILT_BIN_RELEASE}")     +    set(slvoice_files SLVoice.exe )      if (ADDRESS_SIZE EQUAL 64) -        list(APPEND vivox_files +        list(APPEND vivox_libs              vivoxsdk_x64.dll              ortp_x64.dll              )      else (ADDRESS_SIZE EQUAL 64) -        list(APPEND vivox_files +        list(APPEND vivox_libs              vivoxsdk.dll              ortp.dll              ) @@ -42,16 +56,24 @@ if(WINDOWS)          libapr-1.dll          libaprutil-1.dll          libapriconv-1.dll -        ssleay32.dll -        libeay32.dll          nghttp2.dll          glod.dll          libhunspell.dll +        uriparser.dll          ) +    # OpenSSL +    if(ADDRESS_SIZE EQUAL 64) +        set(release_files ${release_files} libcrypto-1_1-x64.dll) +        set(release_files ${release_files} libssl-1_1-x64.dll) +    else(ADDRESS_SIZE EQUAL 64) +        set(release_files ${release_files} libcrypto-1_1.dll) +        set(release_files ${release_files} libssl-1_1.dll) +    endif(ADDRESS_SIZE EQUAL 64) +      # Filenames are different for 32/64 bit BugSplat file and we don't      # have any control over them so need to branch. -    if (BUGSPLAT_DB) +    if (USE_BUGSPLAT)        if(ADDRESS_SIZE EQUAL 32)          set(release_files ${release_files} BugSplat.dll)          set(release_files ${release_files} BugSplatRc.dll) @@ -61,119 +83,77 @@ if(WINDOWS)          set(release_files ${release_files} BugSplatRc64.dll)          set(release_files ${release_files} BsSndRpt64.exe)        endif(ADDRESS_SIZE EQUAL 32) -    endif (BUGSPLAT_DB) +    endif (USE_BUGSPLAT) -    if (FMODEX) +    if (FMODSTUDIO) +        set(debug_files ${debug_files} fmodL.dll) +        set(release_files ${release_files} fmod.dll) +    endif (FMODSTUDIO) -        if(ADDRESS_SIZE EQUAL 32) -            set(release_files ${release_files} fmodex.dll) -        else(ADDRESS_SIZE EQUAL 32) -            set(release_files ${release_files} fmodex64.dll) -        endif(ADDRESS_SIZE EQUAL 32) -    endif (FMODEX) +    if (OPENAL) +        list(APPEND release_files openal32.dll alut.dll) +    endif (OPENAL)      #*******************************      # Copy MS C runtime dlls, required for packaging. -    # *TODO - Adapt this to support VC9      if (MSVC80) -        list(APPEND LMSVC_VER 80) -        list(APPEND LMSVC_VERDOT 8.0) +        set(MSVC_VER 80)      elseif (MSVC_VERSION EQUAL 1600) # VisualStudio 2010          MESSAGE(STATUS "MSVC_VERSION ${MSVC_VERSION}")      elseif (MSVC_VERSION EQUAL 1800) # VisualStudio 2013, which is (sigh) VS 12 -        list(APPEND LMSVC_VER 120) -        list(APPEND LMSVC_VERDOT 12.0) +        set(MSVC_VER 120) +    elseif (MSVC_VERSION GREATER_EQUAL 1910 AND MSVC_VERSION LESS 1920) # Visual Studio 2017 +        set(MSVC_VER 140)      else (MSVC80)          MESSAGE(WARNING "New MSVC_VERSION ${MSVC_VERSION} of MSVC: adapt Copy3rdPartyLibs.cmake")      endif (MSVC80) -    # try to copy VS2010 redist independently of system version -    # maint-7360 CP -    # list(APPEND LMSVC_VER 100) -    # list(APPEND LMSVC_VERDOT 10.0) -     -    list(LENGTH LMSVC_VER count) -    math(EXPR count "${count}-1") -    foreach(i RANGE ${count}) -        list(GET LMSVC_VER ${i} MSVC_VER) -        list(GET LMSVC_VERDOT ${i} MSVC_VERDOT) -        MESSAGE(STATUS "Copying redist libs for VC ${MSVC_VERDOT}") -        FIND_PATH(debug_msvc_redist_path NAME msvcr${MSVC_VER}d.dll -            PATHS             -            [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\${MSVC_VERDOT}\\Setup\\VC;ProductDir]/redist/Debug_NonRedist/x86/Microsoft.VC${MSVC_VER}.DebugCRT -            [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/SysWOW64 -            [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/System32 -            ${MSVC_DEBUG_REDIST_PATH} -            NO_DEFAULT_PATH -            ) - -        if(EXISTS ${debug_msvc_redist_path}) -            set(debug_msvc_files -                msvcr${MSVC_VER}d.dll -                msvcp${MSVC_VER}d.dll -                ) - -            copy_if_different( -                ${debug_msvc_redist_path} -                "${SHARED_LIB_STAGING_DIR_DEBUG}" -                out_targets -                ${debug_msvc_files} -                ) -            set(third_party_targets ${third_party_targets} ${out_targets}) - -            unset(debug_msvc_redist_path CACHE) -        endif() - -        if(ADDRESS_SIZE EQUAL 32) -            # this folder contains the 32bit DLLs.. (yes really!) -            set(registry_find_path "[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/SysWOW64") -        else(ADDRESS_SIZE EQUAL 32) -            # this folder contains the 64bit DLLs.. (yes really!) -            set(registry_find_path "[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/System32") -        endif(ADDRESS_SIZE EQUAL 32) - -        FIND_PATH(release_msvc_redist_path NAME msvcr${MSVC_VER}.dll -            PATHS             -            ${registry_find_path} -            NO_DEFAULT_PATH +    if(ADDRESS_SIZE EQUAL 32) +        # this folder contains the 32bit DLLs.. (yes really!) +        set(registry_find_path "[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/SysWOW64") +    else(ADDRESS_SIZE EQUAL 32) +        # this folder contains the 64bit DLLs.. (yes really!) +        set(registry_find_path "[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/System32") +    endif(ADDRESS_SIZE EQUAL 32) + +    # Having a string containing the system registry path is a start, but to +    # get CMake to actually read the registry, we must engage some other +    # operation. +    get_filename_component(registry_path "${registry_find_path}" ABSOLUTE) + +    # These are candidate DLL names. Empirically, VS versions before 2015 have +    # msvcp*.dll and msvcr*.dll. VS 2017 has msvcp*.dll and vcruntime*.dll. +    # Check each of them. +    foreach(release_msvc_file +            msvcp${MSVC_VER}.dll +            msvcr${MSVC_VER}.dll +            vcruntime${MSVC_VER}.dll              ) - -        if(EXISTS ${release_msvc_redist_path}) -            set(release_msvc_files -                msvcr${MSVC_VER}.dll -                msvcp${MSVC_VER}.dll -                ) - -            copy_if_different( -                ${release_msvc_redist_path} -                "${SHARED_LIB_STAGING_DIR_RELEASE}" -                out_targets -                ${release_msvc_files} -                ) -            set(third_party_targets ${third_party_targets} ${out_targets}) - -            copy_if_different( -                ${release_msvc_redist_path} -                "${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}" -                out_targets -                ${release_msvc_files} -                ) -            set(third_party_targets ${third_party_targets} ${out_targets}) - -            unset(release_msvc_redist_path CACHE) +        if(EXISTS "${registry_path}/${release_msvc_file}") +            to_staging_dirs( +                ${registry_path} +                third_party_targets +                ${release_msvc_file}) +        else() +            # This isn't a WARNING because, as noted above, every VS version +            # we've observed has only a subset of the specified DLL names. +            MESSAGE(STATUS "Redist lib ${release_msvc_file} not found")          endif()      endforeach() +    MESSAGE(STATUS "Will copy redist files for MSVC ${MSVC_VER}:") +    foreach(target ${third_party_targets}) +        MESSAGE(STATUS "${target}") +    endforeach()  elseif(DARWIN)      set(SHARED_LIB_STAGING_DIR_DEBUG            "${SHARED_LIB_STAGING_DIR}/Debug/Resources")      set(SHARED_LIB_STAGING_DIR_RELWITHDEBINFO   "${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/Resources")      set(SHARED_LIB_STAGING_DIR_RELEASE          "${SHARED_LIB_STAGING_DIR}/Release/Resources") -    set(vivox_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}") -    set(vivox_files -        SLVoice +    set(vivox_lib_dir "${ARCH_PREBUILT_DIRS_RELEASE}") +    set(slvoice_files SLVoice) +    set(vivox_libs          libortp.dylib -        libvivoxplatform.dylib          libvivoxsdk.dylib         )      set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}") @@ -185,19 +165,22 @@ elseif(DARWIN)          libapr-1.dylib          libaprutil-1.0.dylib          libaprutil-1.dylib -        libexception_handler.dylib          ${EXPAT_COPY}          libGLOD.dylib +        libhunspell-1.3.0.dylib          libndofdev.dylib          libnghttp2.dylib          libnghttp2.14.dylib -        libnghttp2.14.14.0.dylib +        libnghttp2.14.19.0.dylib +        liburiparser.dylib +        liburiparser.1.dylib +        liburiparser.1.0.27.dylib         ) -    if (FMODEX) -      set(debug_files ${debug_files} libfmodexL.dylib) -      set(release_files ${release_files} libfmodex.dylib) -    endif (FMODEX) +    if (FMODSTUDIO) +      set(debug_files ${debug_files} libfmodL.dylib) +      set(release_files ${release_files} libfmod.dylib) +    endif (FMODSTUDIO)  elseif(LINUX)      # linux is weird, multiple side by side configurations aren't supported @@ -206,15 +189,15 @@ elseif(LINUX)      set(SHARED_LIB_STAGING_DIR_RELWITHDEBINFO   "${SHARED_LIB_STAGING_DIR}")      set(SHARED_LIB_STAGING_DIR_RELEASE          "${SHARED_LIB_STAGING_DIR}") -    set(vivox_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}") -    set(vivox_files +    set(vivox_lib_dir "${ARCH_PREBUILT_DIRS_RELEASE}") +    set(vivox_libs          libsndfile.so.1          libortp.so          libvivoxoal.so.1 -        libvivoxplatform.so          libvivoxsdk.so -        SLVoice -       ) +        ) +    set(slvoice_files SLVoice) +      # *TODO - update this to use LIBS_PREBUILT_DIR and LL_ARCH_DIR variables      # or ARCH_PREBUILT_DIRS      set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}") @@ -244,15 +227,15 @@ elseif(LINUX)          libfontconfig.so.1         ) -    if (FMODEX) -      set(debug_files ${debug_files} "libfmodexL.so") -      set(release_files ${release_files} "libfmodex.so") -    endif (FMODEX) +    if (FMODSTUDIO) +      set(debug_files ${debug_files} "libfmodL.so") +      set(release_files ${release_files} "libfmod.so") +    endif (FMODSTUDIO)  else(WINDOWS)      message(STATUS "WARNING: unrecognized platform for staging 3rd party libs, skipping...") -    set(vivox_src_dir "${CMAKE_SOURCE_DIR}/newview/vivox-runtime/i686-linux") -    set(vivox_files "") +    set(vivox_lib_dir "${CMAKE_SOURCE_DIR}/newview/vivox-runtime/i686-linux") +    set(vivox_libs "")      # *TODO - update this to use LIBS_PREBUILT_DIR and LL_ARCH_DIR variables      # or ARCH_PREBUILT_DIRS      set(debug_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-linux/lib/debug") @@ -274,55 +257,28 @@ endif(WINDOWS)  # Done building the file lists, now set up the copy commands.  ################################################################ +# Curiously, slvoice_files are only copied to SHARED_LIB_STAGING_DIR_RELEASE. +# It's unclear whether this is oversight or intentional, but anyway leave the +# single copy_if_different command rather than using to_staging_dirs.  copy_if_different( -    ${vivox_src_dir} -    "${SHARED_LIB_STAGING_DIR_DEBUG}" -    out_targets  -    ${vivox_files} -    ) -set(third_party_targets ${third_party_targets} ${out_targets}) - -copy_if_different( -    ${vivox_src_dir} +    ${slvoice_src_dir}      "${SHARED_LIB_STAGING_DIR_RELEASE}"      out_targets -    ${vivox_files} +    ${slvoice_files}      ) -set(third_party_targets ${third_party_targets} ${out_targets}) +list(APPEND third_party_targets ${out_targets}) -copy_if_different( -    ${vivox_src_dir} -    "${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}" -    out_targets -    ${vivox_files} +to_staging_dirs( +    ${vivox_lib_dir} +    third_party_targets +    ${vivox_libs}      ) -set(third_party_targets ${third_party_targets} ${out_targets}) - - -#copy_if_different( -#    ${debug_src_dir} -#    "${SHARED_LIB_STAGING_DIR_DEBUG}" -#    out_targets -#    ${debug_files} -#    ) -#set(third_party_targets ${third_party_targets} ${out_targets}) - -copy_if_different( +to_staging_dirs(      ${release_src_dir} -    "${SHARED_LIB_STAGING_DIR_RELEASE}" -    out_targets -    ${release_files} -    ) -set(third_party_targets ${third_party_targets} ${out_targets}) - -copy_if_different( -    ${release_src_dir} -    "${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}" -    out_targets +    third_party_targets      ${release_files}      ) -set(third_party_targets ${third_party_targets} ${out_targets})  if(NOT USESYSTEMLIBS)    add_custom_target( diff --git a/indra/cmake/DirectX.cmake b/indra/cmake/DirectX.cmake deleted file mode 100644 index 25163d0322..0000000000 --- a/indra/cmake/DirectX.cmake +++ /dev/null @@ -1,48 +0,0 @@ -# -*- cmake -*- - -if (WINDOWS) -  find_path(DIRECTX_INCLUDE_DIR dxdiag.h -            "$ENV{DXSDK_DIR}/Include" -            "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2010)/Include" -            "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2009)/Include" -            "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2009)/Include" -            "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2008)/Include" -            "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2008)/Include" -            "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2008)/Include" -            "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (November 2007)/Include" -            "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2007)/Include" -            "C:/DX90SDK/Include" -            "$ENV{PROGRAMFILES}/DX90SDK/Include" -            ) -  if (DIRECTX_INCLUDE_DIR) -    include_directories(${DIRECTX_INCLUDE_DIR}) -    if (DIRECTX_FIND_QUIETLY) -      message(STATUS "Found DirectX include: ${DIRECTX_INCLUDE_DIR}") -    endif (DIRECTX_FIND_QUIETLY) -  else (DIRECTX_INCLUDE_DIR) -    message(FATAL_ERROR "Could not find DirectX SDK Include") -  endif (DIRECTX_INCLUDE_DIR) - - -  find_path(DIRECTX_LIBRARY_DIR dxguid.lib -            "$ENV{DXSDK_DIR}/Lib/x86" -            "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2010)/Lib/x86" -            "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2009)/Lib/x86" -            "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2009)/Lib/x86" -            "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2008)/Lib/x86" -            "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2008)/Lib/x86" -            "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2008)/Lib/x86" -            "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (November 2007)/Lib/x86" -            "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2007)/Lib/x86" -            "C:/DX90SDK/Lib" -            "$ENV{PROGRAMFILES}/DX90SDK/Lib" -            ) -  if (DIRECTX_LIBRARY_DIR) -    if (DIRECTX_FIND_QUIETLY) -      message(STATUS "Found DirectX include: ${DIRECTX_LIBRARY_DIR}") -    endif (DIRECTX_FIND_QUIETLY) -  else (DIRECTX_LIBRARY_DIR) -    message(FATAL_ERROR "Could not find DirectX SDK Libraries") -  endif (DIRECTX_LIBRARY_DIR) - -endif (WINDOWS) diff --git a/indra/cmake/FMODEX.cmake b/indra/cmake/FMODEX.cmake deleted file mode 100644 index 720933d1b7..0000000000 --- a/indra/cmake/FMODEX.cmake +++ /dev/null @@ -1,46 +0,0 @@ -# -*- cmake -*- - -# FMOD can be set when launching the make using the argument -DFMOD:BOOL=ON -# When building using proprietary binaries though (i.e. having access to LL private servers), -# we always build with FMODEX. -# Open source devs should use the -DFMODEX:BOOL=ON then if they want to build with FMOD, whether -# they are using USESYSTEMLIBS or not. -if (INSTALL_PROPRIETARY) -  set(FMODEX ON CACHE BOOL "Using FMOD Ex sound library.") -endif (INSTALL_PROPRIETARY) - -if (FMODEX) -  if (USESYSTEMLIBS) -    # In that case, we use the version of the library installed on the system -    set(FMODEX_FIND_REQUIRED ON) -    include(FindFMODEX) -  else (USESYSTEMLIBS) -    if (FMODEX_LIBRARY AND FMODEX_INCLUDE_DIR) -      # If the path have been specified in the arguments, use that -      set(FMODEX_LIBRARIES ${FMODEX_LIBRARY}) -      MESSAGE(STATUS "Using FMODEX path: ${FMODEX_LIBRARIES}, ${FMODEX_INCLUDE_DIR}") -    else (FMODEX_LIBRARY AND FMODEX_INCLUDE_DIR) -      # If not, we're going to try to get the package listed in autobuild.xml -      # Note: if you're not using INSTALL_PROPRIETARY, the package URL should be local (file:/// URL)  -      # as accessing the private LL location will fail if you don't have the credential -      include(Prebuilt) -      use_prebuilt_binary(fmodex)     -      if (WINDOWS) -        set(FMODEX_LIBRARY  -            debug fmodexL_vc -            optimized fmodex_vc) -      elseif (DARWIN) -        set(FMODEX_LIBRARY  -            debug fmodexL -            optimized fmodex) -      elseif (LINUX) -        set(FMODEX_LIBRARY  -            debug fmodexL -            optimized fmodex) -      endif (WINDOWS) -      set(FMODEX_LIBRARIES ${FMODEX_LIBRARY}) -      set(FMODEX_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/fmodex) -    endif (FMODEX_LIBRARY AND FMODEX_INCLUDE_DIR) -  endif (USESYSTEMLIBS) -endif (FMODEX) - diff --git a/indra/cmake/FMODSTUDIO.cmake b/indra/cmake/FMODSTUDIO.cmake new file mode 100644 index 0000000000..8840354ac6 --- /dev/null +++ b/indra/cmake/FMODSTUDIO.cmake @@ -0,0 +1,38 @@ +# -*- cmake -*- + +# FMODSTUDIO can be set when launching the make using the argument -DFMODSTUDIO:BOOL=ON +# When building using proprietary binaries though (i.e. having access to LL private servers), +# we always build with FMODSTUDIO. +if (INSTALL_PROPRIETARY) +  set(FMODSTUDIO ON CACHE BOOL "Using FMODSTUDIO sound library.") +endif (INSTALL_PROPRIETARY) + +if (FMODSTUDIO) +  if (FMODSTUDIO_LIBRARY AND FMODSTUDIO_INCLUDE_DIR) +    # If the path have been specified in the arguments, use that +    set(FMODSTUDIO_LIBRARIES ${FMODSTUDIO_LIBRARY}) +  else (FMODSTUDIO_LIBRARY AND FMODSTUDIO_INCLUDE_DIR) +    # If not, we're going to try to get the package listed in autobuild.xml +    # Note: if you're not using INSTALL_PROPRIETARY, the package URL should be local (file:/// URL) +    # as accessing the private LL location will fail if you don't have the credential +    include(Prebuilt) +    use_prebuilt_binary(fmodstudio) +    if (WINDOWS) +      set(FMODSTUDIO_LIBRARY +          debug fmodL_vc +          optimized fmod_vc) +    elseif (DARWIN) +      #despite files being called libfmod.dylib, we are searching for fmod +      set(FMODSTUDIO_LIBRARY +          debug fmodL +          optimized fmod) +    elseif (LINUX) +      set(FMODSTUDIO_LIBRARY +          debug fmodL +          optimized fmod) +    endif (WINDOWS) +    set(FMODSTUDIO_LIBRARIES ${FMODSTUDIO_LIBRARY}) +    set(FMODSTUDIO_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/fmodstudio) +  endif (FMODSTUDIO_LIBRARY AND FMODSTUDIO_INCLUDE_DIR) +endif (FMODSTUDIO) + diff --git a/indra/cmake/FindFMODEX.cmake b/indra/cmake/FindFMODEX.cmake deleted file mode 100644 index b621727c0e..0000000000 --- a/indra/cmake/FindFMODEX.cmake +++ /dev/null @@ -1,65 +0,0 @@ -# -*- cmake -*- - -# - Find FMODEX -# Find the FMODEX includes and library -# This module defines -#  FMODEX_INCLUDE_DIR, where to find fmod.h and fmod_errors.h -#  FMODEX_LIBRARIES, the libraries needed to use FMODEX. -#  FMODEX, If false, do not try to use FMODEX. -# also defined, but not for general use are -#  FMODEX_LIBRARY, where to find the FMODEX library. - -FIND_PATH(FMODEX_INCLUDE_DIR fmod.h PATH_SUFFIXES fmod) - -SET(FMODEX_NAMES ${FMODEX_NAMES} fmodex fmodvc fmodexL_vc) -FIND_LIBRARY(FMODEX_LIBRARY -  NAMES ${FMODEX_NAMES} -  PATH_SUFFIXES fmodex -  ) - -IF (FMODEX_SDK_DIR OR WINDOWS) -    if(WINDOWS) -        set(FMODEX_SDK_DIR "$ENV{PROGRAMFILES}/FMOD SoundSystem/FMOD Programmers API Windows" CACHE PATH "Path to FMODEX") -        STRING(REGEX REPLACE "\\\\" "/" FMODEX_SDK_DIR ${FMODEX_SDK_DIR})  -    endif(WINDOWS) -    find_library(FMODEX_LIBRARY -             fmodex_vc fmodexL_vc  -             PATHS -             ${FMODEX_SDK_DIR}/api/lib -             ${FMODEX_SDK_DIR}/api -             ${FMODEX_SDK_DIR} -             ) -    find_path(FMODEX_INCLUDE_DIR fmod.h -        ${FMODEX_SDK_DIR}/api/inc -        ${FMODEX_SDK_DIR}/api -        ${FMODEX_SDK_DIR} -      ) -    find_path(FMODEX_INCLUDE_DIR fmod.h -        ${FMODEX_SDK_DIR}/api/inc -        ${FMODEX_SDK_DIR}/api -        ${FMODEX_SDK_DIR} -      ) -    IF (FMODEX_LIBRARY AND FMODEX_INCLUDE_DIR) -      SET(FMODEX_LIBRARIES ${FMODEX_LIBRARY}) -      SET(FMODEX_FOUND "YES") -    endif (FMODEX_LIBRARY AND FMODEX_INCLUDE_DIR) -ENDIF (FMODEX_SDK_DIR OR WINDOWS) - -IF (FMODEX_FOUND) -  IF (NOT FMODEX_FIND_QUIETLY) -    MESSAGE(STATUS "Found FMODEX: ${FMODEX_LIBRARIES}") -  ENDIF (NOT FMODEX_FIND_QUIETLY) -ELSE (FMODEX_FOUND) -  IF (FMODEX_FIND_REQUIRED) -    MESSAGE(FATAL_ERROR "Could not find FMODEX library") -  ENDIF (FMODEX_FIND_REQUIRED) -ENDIF (FMODEX_FOUND) - -# Deprecated declarations. -SET (NATIVE_FMODEX_INCLUDE_PATH ${FMODEX_INCLUDE_DIR} ) -GET_FILENAME_COMPONENT (NATIVE_FMODEX_LIB_PATH ${FMODEX_LIBRARY} PATH) - -MARK_AS_ADVANCED( -  FMODEX_LIBRARY -  FMODEX_INCLUDE_DIR -  ) diff --git a/indra/cmake/FindGoogleBreakpad.cmake b/indra/cmake/FindGoogleBreakpad.cmake deleted file mode 100644 index 1a0493be5e..0000000000 --- a/indra/cmake/FindGoogleBreakpad.cmake +++ /dev/null @@ -1,40 +0,0 @@ -# -*- cmake -*- - -# - Find Google BreakPad -# Find the Google BreakPad includes and library -# This module defines -#  BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR, where to find exception_handler.h, etc. -#  BREAKPAD_EXCEPTION_HANDLER_LIBRARIES, the libraries needed to use Google BreakPad. -#  BREAKPAD_EXCEPTION_HANDLER_FOUND, If false, do not try to use Google BreakPad. -# also defined, but not for general use are -#  BREAKPAD_EXCEPTION_HANDLER_LIBRARY, where to find the Google BreakPad library. - -FIND_PATH(BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR google_breakpad/exception_handler.h) - -SET(BREAKPAD_EXCEPTION_HANDLER_NAMES ${BREAKPAD_EXCEPTION_HANDLER_NAMES} breakpad_client) -FIND_LIBRARY(BREAKPAD_EXCEPTION_HANDLER_LIBRARY -  NAMES ${BREAKPAD_EXCEPTION_HANDLER_NAMES} -  ) - -IF (BREAKPAD_EXCEPTION_HANDLER_LIBRARY AND BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR) -    SET(BREAKPAD_EXCEPTION_HANDLER_LIBRARIES ${BREAKPAD_EXCEPTION_HANDLER_LIBRARY}) -    SET(BREAKPAD_EXCEPTION_HANDLER_FOUND "YES") -ELSE (BREAKPAD_EXCEPTION_HANDLER_LIBRARY AND BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR) -    SET(BREAKPAD_EXCEPTION_HANDLER_FOUND "NO") -ENDIF (BREAKPAD_EXCEPTION_HANDLER_LIBRARY AND BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR) - - -IF (BREAKPAD_EXCEPTION_HANDLER_FOUND) -   IF (NOT BREAKPAD_EXCEPTION_HANDLER_FIND_QUIETLY) -      MESSAGE(STATUS "Found Google BreakPad: ${BREAKPAD_EXCEPTION_HANDLER_LIBRARIES}") -   ENDIF (NOT BREAKPAD_EXCEPTION_HANDLER_FIND_QUIETLY) -ELSE (BREAKPAD_EXCEPTION_HANDLER_FOUND) -   IF (BREAKPAD_EXCEPTION_HANDLER_FIND_REQUIRED) -      MESSAGE(FATAL_ERROR "Could not find Google BreakPad library") -   ENDIF (BREAKPAD_EXCEPTION_HANDLER_FIND_REQUIRED) -ENDIF (BREAKPAD_EXCEPTION_HANDLER_FOUND) - -MARK_AS_ADVANCED( -  BREAKPAD_EXCEPTION_HANDLER_LIBRARY -  BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR -  ) diff --git a/indra/cmake/GoogleBreakpad.cmake b/indra/cmake/GoogleBreakpad.cmake deleted file mode 100644 index 829e1ac08a..0000000000 --- a/indra/cmake/GoogleBreakpad.cmake +++ /dev/null @@ -1,22 +0,0 @@ -# -*- cmake -*- -include(Prebuilt) - -if (USESYSTEMLIBS) -  set(BREAKPAD_EXCEPTION_HANDLER_FIND_REQUIRED ON) -  include(FindGoogleBreakpad) -else (USESYSTEMLIBS) -  use_prebuilt_binary(google_breakpad) -  if (DARWIN) -    set(BREAKPAD_EXCEPTION_HANDLER_LIBRARIES exception_handler) -  endif (DARWIN) -  if (LINUX) -    set(BREAKPAD_EXCEPTION_HANDLER_LIBRARIES breakpad_client) -  endif (LINUX) -  if (WINDOWS) -    set(BREAKPAD_EXCEPTION_HANDLER_LIBRARIES exception_handler crash_generation_client crash_generation_server common) -  endif (WINDOWS) -  # yes, this does look dumb, no, it's not incorrect -  # -  set(BREAKPAD_INCLUDE_DIRECTORIES "${LIBS_PREBUILT_DIR}/include/google_breakpad" "${LIBS_PREBUILT_DIR}/include/google_breakpad/google_breakpad") -endif (USESYSTEMLIBS) - diff --git a/indra/cmake/LLAddBuildTest.cmake b/indra/cmake/LLAddBuildTest.cmake index b3f42c1a5e..4937c2a9d7 100644 --- a/indra/cmake/LLAddBuildTest.cmake +++ b/indra/cmake/LLAddBuildTest.cmake @@ -2,6 +2,7 @@  include(00-Common)  include(LLTestCommand)  include(GoogleMock) +include(bugsplat)  include(Tut)  #***************************************************************************** @@ -22,7 +23,6 @@ MACRO(LL_ADD_PROJECT_UNIT_TESTS project sources)    # there is another branch that will conflict heavily with any changes here.  INCLUDE(GoogleMock) -    IF(LL_TEST_VERBOSE)      MESSAGE("LL_ADD_PROJECT_UNIT_TESTS UNITTEST_PROJECT_${project} sources: ${sources}")    ENDIF(LL_TEST_VERBOSE) @@ -53,7 +53,7 @@ INCLUDE(GoogleMock)      ${GOOGLEMOCK_INCLUDE_DIRS}      )    SET(alltest_LIBRARIES -    ${BOOST_COROUTINE_LIBRARY} +    ${BOOST_FIBER_LIBRARY}      ${BOOST_CONTEXT_LIBRARY}      ${BOOST_SYSTEM_LIBRARY}      ${GOOGLEMOCK_LIBRARIES} @@ -87,6 +87,12 @@ INCLUDE(GoogleMock)      IF(LL_TEST_VERBOSE)        MESSAGE("LL_ADD_PROJECT_UNIT_TESTS ${name}_test_SOURCE_FILES ${${name}_test_SOURCE_FILES}")      ENDIF(LL_TEST_VERBOSE) + +    if (USE_BUGSPLAT) +      SET_PROPERTY(SOURCE ${${name}_test_SOURCE_FILES} +          APPEND PROPERTY COMPILE_DEFINITIONS "${BUGSPLAT_DEFINE}") +    endif (USE_BUGSPLAT) +      # Headers      GET_OPT_SOURCE_FILE_PROPERTY(${name}_test_additional_HEADER_FILES ${source} LL_TEST_ADDITIONAL_HEADER_FILES)      SET(${name}_test_HEADER_FILES ${name}.h ${${name}_test_additional_HEADER_FILES}) @@ -200,8 +206,9 @@ FUNCTION(LL_ADD_INTEGRATION_TEST      )    SET(libraries +    ${LEGACY_STDIO_LIBS}      ${library_dependencies} -    ${BOOST_COROUTINE_LIBRARY} +    ${BOOST_FIBER_LIBRARY}      ${BOOST_CONTEXT_LIBRARY}      ${BOOST_SYSTEM_LIBRARY}      ${GOOGLEMOCK_LIBRARIES} @@ -223,6 +230,11 @@ FUNCTION(LL_ADD_INTEGRATION_TEST      SET_TARGET_PROPERTIES(INTEGRATION_TEST_${testname} PROPERTIES COMPILE_FLAGS -I"${TUT_INCLUDE_DIR}")    endif(USESYSTEMLIBS) +  if (USE_BUGSPLAT) +      SET_PROPERTY(SOURCE ${source_files} +          APPEND PROPERTY COMPILE_DEFINITIONS "${BUGSPLAT_DEFINE}") +  endif (USE_BUGSPLAT) +    # The following was copied to llcorehttp/CMakeLists.txt's texture_load target.     # Any changes made here should be replicated there.    if (WINDOWS) diff --git a/indra/cmake/LLAppearance.cmake b/indra/cmake/LLAppearance.cmake index ae265d07e3..675330ec72 100644 --- a/indra/cmake/LLAppearance.cmake +++ b/indra/cmake/LLAppearance.cmake @@ -18,7 +18,7 @@ endif (BUILD_HEADLESS)  set(LLAPPEARANCE_LIBRARIES llappearance      llmessage      llcorehttp -    ${BOOST_COROUTINE_LIBRARY} +    ${BOOST_FIBER_LIBRARY}      ${BOOST_CONTEXT_LIBRARY}      ${BOOST_SYSTEM_LIBRARY}      ) diff --git a/indra/cmake/LLCommon.cmake b/indra/cmake/LLCommon.cmake index 3e29297c58..8900419f9b 100644 --- a/indra/cmake/LLCommon.cmake +++ b/indra/cmake/LLCommon.cmake @@ -19,7 +19,7 @@ if (LINUX)      # specify all libraries that llcommon uses.      # llcommon uses `clock_gettime' which is provided by librt on linux.      set(LLCOMMON_LIBRARIES llcommon  -        ${BOOST_COROUTINE_LIBRARY}  +        ${BOOST_FIBER_LIBRARY}           ${BOOST_CONTEXT_LIBRARY}           ${BOOST_THREAD_LIBRARY}           ${BOOST_SYSTEM_LIBRARY}  @@ -27,7 +27,7 @@ if (LINUX)          )  else (LINUX)      set(LLCOMMON_LIBRARIES llcommon -        ${BOOST_COROUTINE_LIBRARY}  +        ${BOOST_FIBER_LIBRARY}           ${BOOST_CONTEXT_LIBRARY}           ${BOOST_THREAD_LIBRARY}           ${BOOST_SYSTEM_LIBRARY} ) diff --git a/indra/cmake/LLCoreHttp.cmake b/indra/cmake/LLCoreHttp.cmake index 379ae207de..613453ab5d 100644 --- a/indra/cmake/LLCoreHttp.cmake +++ b/indra/cmake/LLCoreHttp.cmake @@ -12,6 +12,6 @@ set(LLCOREHTTP_INCLUDE_DIRS      )  set(LLCOREHTTP_LIBRARIES llcorehttp -    ${BOOST_COROUTINE_LIBRARY} +    ${BOOST_FIBER_LIBRARY}      ${BOOST_CONTEXT_LIBRARY}      ${BOOST_SYSTEM_LIBRARY}) diff --git a/indra/cmake/OpenSSL.cmake b/indra/cmake/OpenSSL.cmake index eb548bdcc1..32400f5e4e 100644 --- a/indra/cmake/OpenSSL.cmake +++ b/indra/cmake/OpenSSL.cmake @@ -9,7 +9,7 @@ if (USESYSTEMLIBS)  else (USESYSTEMLIBS)    use_prebuilt_binary(openssl)    if (WINDOWS) -    set(OPENSSL_LIBRARIES ssleay32 libeay32) +    set(OPENSSL_LIBRARIES libssl libcrypto)    else (WINDOWS)      set(OPENSSL_LIBRARIES ssl crypto)    endif (WINDOWS) diff --git a/indra/cmake/URIPARSER.cmake b/indra/cmake/URIPARSER.cmake index de146885a0..ecc5b74ef1 100644 --- a/indra/cmake/URIPARSER.cmake +++ b/indra/cmake/URIPARSER.cmake @@ -29,7 +29,7 @@ else (USESYSTEMLIBS)      set(URIPARSER_PRELOAD_ARCHIVES -Wl,--whole-archive uriparser -Wl,--no-whole-archive)      set(URIPARSER_LIBRARIES uriparser)    elseif (DARWIN) -    set(URIPARSER_LIBRARIES uriparser) +    set(URIPARSER_LIBRARIES liburiparser.dylib)    endif (WINDOWS)    set(URIPARSER_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/uriparser)  endif (USESYSTEMLIBS) diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake index 2b54cd4155..c81b22e572 100644 --- a/indra/cmake/Variables.cmake +++ b/indra/cmake/Variables.cmake @@ -34,7 +34,6 @@ set(LL_TESTS ON CACHE BOOL "Build and run unit and integration tests (disable fo  set(INCREMENTAL_LINK OFF CACHE BOOL "Use incremental linking on win32 builds (enable for faster links on some machines)")  set(ENABLE_MEDIA_PLUGINS ON CACHE BOOL "Turn off building media plugins if they are imported by third-party library mechanism")  set(VIEWER_SYMBOL_FILE "" CACHE STRING "Name of tarball into which to place symbol files") -set(BUGSPLAT_DB "" CACHE STRING "BugSplat database name, if BugSplat crash reporting is desired")  if(LIBS_CLOSED_DIR)    file(TO_CMAKE_PATH "${LIBS_CLOSED_DIR}" LIBS_CLOSED_DIR) @@ -186,12 +185,17 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")    list(GET LL_BUILD_LIST "${sysroot_idx}" CMAKE_OSX_SYSROOT)    message(STATUS "CMAKE_OSX_SYSROOT = '${CMAKE_OSX_SYSROOT}'") -  set(XCODE_VERSION 7.0) -    set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvm.clang.1_0")    set(CMAKE_XCODE_ATTRIBUTE_GCC_STRICT_ALIASING NO)    set(CMAKE_XCODE_ATTRIBUTE_GCC_FAST_MATH NO)    set(CMAKE_XCODE_ATTRIBUTE_CLANG_X86_VECTOR_INSTRUCTIONS ssse3) +  # we must hard code this to off for now.  xcode's built in signing does not +  # handle embedded app bundles such as CEF and others. Any signing for local +  # development must be done after the build as we do in viewer_manifest.py for +  # released builds +  # https://stackoverflow.com/a/54296008 +  # "-" represents "Sign to Run Locally" and empty string represents "Do Not Sign" +  set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "")    set(CMAKE_OSX_ARCHITECTURES "${ARCH}")    string(REPLACE "i686"  "i386"   CMAKE_OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}") diff --git a/indra/cmake/bugsplat.cmake b/indra/cmake/bugsplat.cmake index 59644b73ce..4edc4c59cd 100644 --- a/indra/cmake/bugsplat.cmake +++ b/indra/cmake/bugsplat.cmake @@ -1,25 +1,37 @@ -# BugSplat is engaged by setting BUGSPLAT_DB to the target BugSplat database -# name. -if (BUGSPLAT_DB) -  if (USESYSTEMLIBS) -    message(STATUS "Looking for system BugSplat") -    set(BUGSPLAT_FIND_QUIETLY ON) -    set(BUGSPLAT_FIND_REQUIRED ON) -    include(FindBUGSPLAT) -  else (USESYSTEMLIBS) -    message(STATUS "Engaging autobuild BugSplat") -    include(Prebuilt) -    use_prebuilt_binary(bugsplat) -    if (WINDOWS) -      set(BUGSPLAT_LIBRARIES  -        ${ARCH_PREBUILT_DIRS_RELEASE}/bugsplat.lib -        ) -    elseif (DARWIN) -      find_library(BUGSPLAT_LIBRARIES BugsplatMac -        PATHS "${ARCH_PREBUILT_DIRS_RELEASE}") -    else (WINDOWS) +if (INSTALL_PROPRIETARY) +    # Note that viewer_manifest.py makes decision based on BUGSPLAT_DB and not USE_BUGSPLAT +    if (BUGSPLAT_DB) +        set(USE_BUGSPLAT ON  CACHE BOOL "Use the BugSplat crash reporting system") +    else (BUGSPLAT_DB) +        set(USE_BUGSPLAT OFF CACHE BOOL "Use the BugSplat crash reporting system") +    endif (BUGSPLAT_DB) +else (INSTALL_PROPRIETARY) +    set(USE_BUGSPLAT OFF CACHE BOOL "Use the BugSplat crash reporting system") +endif (INSTALL_PROPRIETARY) + +if (USE_BUGSPLAT) +    if (NOT USESYSTEMLIBS) +        include(Prebuilt) +        use_prebuilt_binary(bugsplat) +        if (WINDOWS) +            set(BUGSPLAT_LIBRARIES  +                ${ARCH_PREBUILT_DIRS_RELEASE}/bugsplat.lib +                ) +        elseif (DARWIN) +            find_library(BUGSPLAT_LIBRARIES BugsplatMac REQUIRED +                NO_DEFAULT_PATH PATHS "${ARCH_PREBUILT_DIRS_RELEASE}") +        else (WINDOWS) +            message(FATAL_ERROR "BugSplat is not supported; add -DUSE_BUGSPLAT=OFF") +        endif (WINDOWS) +    else (NOT USESYSTEMLIBS) +        set(BUGSPLAT_FIND_QUIETLY ON) +        set(BUGSPLAT_FIND_REQUIRED ON) +        include(FindBUGSPLAT) +    endif (NOT USESYSTEMLIBS) + +    set(BUGSPLAT_DB "" CACHE STRING "BugSplat crash database name") -    endif (WINDOWS)      set(BUGSPLAT_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/bugsplat) -  endif (USESYSTEMLIBS) -endif (BUGSPLAT_DB) +    set(BUGSPLAT_DEFINE "LL_BUGSPLAT") +endif (USE_BUGSPLAT) + diff --git a/indra/cmake/run_build_test.py b/indra/cmake/run_build_test.py index 210e43b232..ec5d33f902 100755 --- a/indra/cmake/run_build_test.py +++ b/indra/cmake/run_build_test.py @@ -87,7 +87,6 @@ def main(command, arguments=[], libpath=[], vars={}):          # might not exist; instead of KeyError, just use an empty string.          dirs = os.environ.get(var, "").split(os.pathsep)          # Append the sequence in libpath -        log.info("%s += %r" % (var, libpath))          for dir in libpath:              # append system paths at the end              if dir in ('/lib', '/usr/lib'): @@ -105,16 +104,21 @@ def main(command, arguments=[], libpath=[], vars={}):          # Now rebuild the path string. This way we use a minimum of separators          # -- and we avoid adding a pointless separator when libpath is empty.          os.environ[var] = os.pathsep.join(clean_dirs) -        log.info("%s = %r" % (var, os.environ[var])) +        # This output format is intended to make it straightforward to copy +        # the variable settings and the command itself from the build output +        # and paste the whole thing at a command prompt to rerun it manually. +        log.info("%s='%s' \\" % (var, os.environ[var]))      # Now handle arbitrary environment variables. The tricky part is ensuring      # that all the keys and values we try to pass are actually strings.      if vars: -         log.info("Setting: %s" % ("\n".join(["%s=%s" % (key, value) for key, value in vars.iteritems()]))) +        for key, value in vars.items(): +            # As noted a few lines above, facilitate copy-paste rerunning. +            log.info("%s='%s' \\" % (key, value))      os.environ.update(dict([(str(key), str(value)) for key, value in vars.iteritems()]))      # Run the child process.      command_list = [command]      command_list.extend(arguments) -    log.info("Running: %s" % " ".join(command_list)) +    log.info(" ".join((("'%s'" % w) if ' ' in w else w) for w in command_list))      # Make sure we see all relevant output *before* child-process output.      sys.stdout.flush()      try: @@ -305,8 +309,11 @@ def get_windows_table():      return _windows_table -log=logging.getLogger(__name__) -logging.basicConfig() +# Use this instead of logging.basicConfig() because the latter prefixes +# every line of output with INFO:__main__:... +log=logging.getLogger() +log.setLevel(logging.INFO) +log.addHandler(logging.StreamHandler())  if __name__ == "__main__":      import argparse | 
