Skip to content
Snippets Groups Projects
Commit d11fee37 authored by Kitty Barnett's avatar Kitty Barnett
Browse files

Merge branch 'lindenlab/release' into viewer/build

parents cb4b95b8 87da08b1
No related branches found
No related tags found
No related merge requests found
Showing
with 516 additions and 492 deletions
...@@ -13,14 +13,17 @@ ...@@ -13,14 +13,17 @@
LICENSES LICENSES
build-darwin-* build-darwin-*
build-linux-* build-linux-*
build-stamp
build-vc120*
build-vc150*
configure-stamp
debian/files debian/files
debian/secondlife-appearance-utility* debian/secondlife-appearance-utility*
debian/secondlife-viewer* debian/secondlife-viewer*
indra/.distcc indra/.distcc
build-vc80/
build-vc100/
build-vc120/
build-vc120-32/
build-vc120-64/
build-vc150-32/
build-vc150-64/
indra/CMakeFiles indra/CMakeFiles
indra/build-vc[0-9]* indra/build-vc[0-9]*
indra/lib/mono/1.0/*.dll indra/lib/mono/1.0/*.dll
......
This diff is collapsed.
...@@ -28,7 +28,7 @@ build_dir_Linux() ...@@ -28,7 +28,7 @@ build_dir_Linux()
build_dir_CYGWIN() build_dir_CYGWIN()
{ {
echo build-vc120-${AUTOBUILD_ADDRSIZE} echo build-vc${AUTOBUILD_VSVER:-120}-${AUTOBUILD_ADDRSIZE}
} }
viewer_channel_suffix() viewer_channel_suffix()
......
...@@ -15,6 +15,11 @@ set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") ...@@ -15,6 +15,11 @@ set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
include(Variables) include(Variables)
include(BuildVersion) include(BuildVersion)
set(LEGACY_STDIO_LIBS)
if (WINDOWS)
set(LEGACY_STDIO_LIBS legacy_stdio_definitions)
endif (WINDOWS)
if (NOT CMAKE_BUILD_TYPE) if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
"Build type. One of: Debug Release RelWithDebInfo" FORCE) "Build type. One of: Debug Release RelWithDebInfo" FORCE)
......
...@@ -63,8 +63,11 @@ if (WINDOWS) ...@@ -63,8 +63,11 @@ if (WINDOWS)
# http://www.cmake.org/pipermail/cmake/2009-September/032143.html # http://www.cmake.org/pipermail/cmake/2009-September/032143.html
string(REPLACE "/Zm1000" " " CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) string(REPLACE "/Zm1000" " " CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
# Moved to variables for the convenience of people who are not Kitty # Without PreferredToolArchitecture=x64, as of 2020-06-26 the 32-bit
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") # compiler on our TeamCity build hosts has started running out of virtual
# memory for the precompiled header file.
# [SL:KB] - Moved to variables for the convenience of people who are not Kitty
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /p:PreferredToolArchitecture=x64")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
"${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Zo" "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Zo"
......
...@@ -8,7 +8,7 @@ if (USESYSTEMLIBS) ...@@ -8,7 +8,7 @@ if (USESYSTEMLIBS)
include(FindBoost) include(FindBoost)
set(BOOST_CONTEXT_LIBRARY boost_context-mt) 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_FILESYSTEM_LIBRARY boost_filesystem-mt)
set(BOOST_PROGRAM_OPTIONS_LIBRARY boost_program_options-mt) set(BOOST_PROGRAM_OPTIONS_LIBRARY boost_program_options-mt)
set(BOOST_REGEX_LIBRARY boost_regex-mt) set(BOOST_REGEX_LIBRARY boost_regex-mt)
...@@ -18,11 +18,15 @@ if (USESYSTEMLIBS) ...@@ -18,11 +18,15 @@ if (USESYSTEMLIBS)
else (USESYSTEMLIBS) else (USESYSTEMLIBS)
use_prebuilt_binary(boost) use_prebuilt_binary(boost)
set(Boost_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include) 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 (WINDOWS)
if(MSVC80) if(MSVC80)
# This should be obsolete at this point # This should be obsolete at this point
set(BOOST_VERSION "1.55")
set(BOOST_CONTEXT_LIBRARY set(BOOST_CONTEXT_LIBRARY
optimized libboost_context-vc80-mt-${BOOST_VERSION} optimized libboost_context-vc80-mt-${BOOST_VERSION}
debug libboost_context-vc80-mt-gd-${BOOST_VERSION}) debug libboost_context-vc80-mt-gd-${BOOST_VERSION})
...@@ -47,80 +51,80 @@ else (USESYSTEMLIBS) ...@@ -47,80 +51,80 @@ else (USESYSTEMLIBS)
else(MSVC80) else(MSVC80)
# MSVC 10.0 config # MSVC 10.0 config
set(BOOST_CONTEXT_LIBRARY set(BOOST_CONTEXT_LIBRARY
optimized libboost_context-mt optimized libboost_context-mt${addrsfx}
debug libboost_context-mt-gd) debug libboost_context-mt${addrsfx}-gd)
set(BOOST_COROUTINE_LIBRARY set(BOOST_FIBER_LIBRARY
optimized libboost_coroutine-mt optimized libboost_fiber-mt${addrsfx}
debug libboost_coroutine-mt-gd) debug libboost_fiber-mt${addrsfx}-gd)
set(BOOST_FILESYSTEM_LIBRARY set(BOOST_FILESYSTEM_LIBRARY
optimized libboost_filesystem-mt optimized libboost_filesystem-mt${addrsfx}
debug libboost_filesystem-mt-gd) debug libboost_filesystem-mt${addrsfx}-gd)
set(BOOST_PROGRAM_OPTIONS_LIBRARY set(BOOST_PROGRAM_OPTIONS_LIBRARY
optimized libboost_program_options-mt optimized libboost_program_options-mt${addrsfx}
debug libboost_program_options-mt-gd) debug libboost_program_options-mt${addrsfx}-gd)
set(BOOST_REGEX_LIBRARY set(BOOST_REGEX_LIBRARY
optimized libboost_regex-mt optimized libboost_regex-mt${addrsfx}
debug libboost_regex-mt-gd) debug libboost_regex-mt${addrsfx}-gd)
set(BOOST_SIGNALS_LIBRARY set(BOOST_SIGNALS_LIBRARY
optimized libboost_signals-mt optimized libboost_signals-mt${addrsfx}
debug libboost_signals-mt-gd) debug libboost_signals-mt${addrsfx}-gd)
set(BOOST_SYSTEM_LIBRARY set(BOOST_SYSTEM_LIBRARY
optimized libboost_system-mt optimized libboost_system-mt${addrsfx}
debug libboost_system-mt-gd) debug libboost_system-mt${addrsfx}-gd)
set(BOOST_THREAD_LIBRARY set(BOOST_THREAD_LIBRARY
optimized libboost_thread-mt optimized libboost_thread-mt${addrsfx}
debug libboost_thread-mt-gd) debug libboost_thread-mt${addrsfx}-gd)
endif (MSVC80) endif (MSVC80)
elseif (LINUX) elseif (LINUX)
set(BOOST_CONTEXT_LIBRARY set(BOOST_CONTEXT_LIBRARY
optimized boost_context-mt optimized boost_context-mt${addrsfx}
debug boost_context-mt-d) debug boost_context-mt${addrsfx}-d)
set(BOOST_COROUTINE_LIBRARY set(BOOST_FIBER_LIBRARY
optimized boost_coroutine-mt optimized boost_fiber-mt${addrsfx}
debug boost_coroutine-mt-d) debug boost_fiber-mt${addrsfx}-d)
set(BOOST_FILESYSTEM_LIBRARY set(BOOST_FILESYSTEM_LIBRARY
optimized boost_filesystem-mt optimized boost_filesystem-mt${addrsfx}
debug boost_filesystem-mt-d) debug boost_filesystem-mt${addrsfx}-d)
set(BOOST_PROGRAM_OPTIONS_LIBRARY set(BOOST_PROGRAM_OPTIONS_LIBRARY
optimized boost_program_options-mt optimized boost_program_options-mt${addrsfx}
debug boost_program_options-mt-d) debug boost_program_options-mt${addrsfx}-d)
set(BOOST_REGEX_LIBRARY set(BOOST_REGEX_LIBRARY
optimized boost_regex-mt optimized boost_regex-mt${addrsfx}
debug boost_regex-mt-d) debug boost_regex-mt${addrsfx}-d)
set(BOOST_SIGNALS_LIBRARY set(BOOST_SIGNALS_LIBRARY
optimized boost_signals-mt optimized boost_signals-mt${addrsfx}
debug boost_signals-mt-d) debug boost_signals-mt${addrsfx}-d)
set(BOOST_SYSTEM_LIBRARY set(BOOST_SYSTEM_LIBRARY
optimized boost_system-mt optimized boost_system-mt${addrsfx}
debug boost_system-mt-d) debug boost_system-mt${addrsfx}-d)
set(BOOST_THREAD_LIBRARY set(BOOST_THREAD_LIBRARY
optimized boost_thread-mt optimized boost_thread-mt${addrsfx}
debug boost_thread-mt-d) debug boost_thread-mt${addrsfx}-d)
elseif (DARWIN) elseif (DARWIN)
set(BOOST_CONTEXT_LIBRARY set(BOOST_CONTEXT_LIBRARY
optimized boost_context-mt optimized boost_context-mt${addrsfx}
debug boost_context-mt-d) debug boost_context-mt${addrsfx}-d)
set(BOOST_COROUTINE_LIBRARY set(BOOST_FIBER_LIBRARY
optimized boost_coroutine-mt optimized boost_fiber-mt${addrsfx}
debug boost_coroutine-mt-d) debug boost_fiber-mt${addrsfx}-d)
set(BOOST_FILESYSTEM_LIBRARY set(BOOST_FILESYSTEM_LIBRARY
optimized boost_filesystem-mt optimized boost_filesystem-mt${addrsfx}
debug boost_filesystem-mt-d) debug boost_filesystem-mt${addrsfx}-d)
set(BOOST_PROGRAM_OPTIONS_LIBRARY set(BOOST_PROGRAM_OPTIONS_LIBRARY
optimized boost_program_options-mt optimized boost_program_options-mt${addrsfx}
debug boost_program_options-mt-d) debug boost_program_options-mt${addrsfx}-d)
set(BOOST_REGEX_LIBRARY set(BOOST_REGEX_LIBRARY
optimized boost_regex-mt optimized boost_regex-mt${addrsfx}
debug boost_regex-mt-d) debug boost_regex-mt${addrsfx}-d)
set(BOOST_SIGNALS_LIBRARY set(BOOST_SIGNALS_LIBRARY
optimized boost_signals-mt optimized boost_signals-mt${addrsfx}
debug boost_signals-mt-d) debug boost_signals-mt${addrsfx}-d)
set(BOOST_SYSTEM_LIBRARY set(BOOST_SYSTEM_LIBRARY
optimized boost_system-mt optimized boost_system-mt${addrsfx}
debug boost_system-mt-d) debug boost_system-mt${addrsfx}-d)
set(BOOST_THREAD_LIBRARY set(BOOST_THREAD_LIBRARY
optimized boost_thread-mt optimized boost_thread-mt${addrsfx}
debug boost_thread-mt-d) debug boost_thread-mt${addrsfx}-d)
endif (WINDOWS) endif (WINDOWS)
endif (USESYSTEMLIBS) endif (USESYSTEMLIBS)
......
# -*- cmake -*- # -*- cmake -*-
# Construct the version and copyright information based on package data. # Construct the version and copyright information based on package data.
include(Python) include(Python)
include(FindAutobuild)
# packages-formatter.py runs autobuild install --versions, which needs to know # packages-formatter.py runs autobuild install --versions, which needs to know
# the build_directory, which (on Windows) depends on AUTOBUILD_ADDRSIZE. # the build_directory, which (on Windows) depends on AUTOBUILD_ADDRSIZE.
...@@ -13,7 +14,7 @@ add_custom_command(OUTPUT packages-info.txt ...@@ -13,7 +14,7 @@ add_custom_command(OUTPUT packages-info.txt
DEPENDS ${CMAKE_SOURCE_DIR}/../scripts/packages-formatter.py DEPENDS ${CMAKE_SOURCE_DIR}/../scripts/packages-formatter.py
${CMAKE_SOURCE_DIR}/../autobuild.xml ${CMAKE_SOURCE_DIR}/../autobuild.xml
COMMAND ${PYTHON_EXECUTABLE} 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} ${PYTHON_EXECUTABLE}
${CMAKE_SOURCE_DIR}/../scripts/packages-formatter.py "${VIEWER_CHANNEL}" "${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}" > packages-info.txt ${CMAKE_SOURCE_DIR}/../scripts/packages-formatter.py "${VIEWER_CHANNEL}" "${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}" > packages-info.txt
) )
...@@ -22,7 +22,6 @@ set(cmake_SOURCE_FILES ...@@ -22,7 +22,6 @@ set(cmake_SOURCE_FILES
Copy3rdPartyLibs.cmake Copy3rdPartyLibs.cmake
DBusGlib.cmake DBusGlib.cmake
DeploySharedLibs.cmake DeploySharedLibs.cmake
DirectX.cmake
DragDrop.cmake DragDrop.cmake
EXPAT.cmake EXPAT.cmake
FindAPR.cmake FindAPR.cmake
......
...@@ -7,6 +7,21 @@ ...@@ -7,6 +7,21 @@
include(CMakeCopyIfDifferent) include(CMakeCopyIfDifferent)
include(Linking) 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 # set up platform specific lists of files that need to be copied
################################################################### ###################################################################
...@@ -69,95 +84,54 @@ if(WINDOWS) ...@@ -69,95 +84,54 @@ if(WINDOWS)
#******************************* #*******************************
# Copy MS C runtime dlls, required for packaging. # Copy MS C runtime dlls, required for packaging.
# *TODO - Adapt this to support VC9
if (MSVC80) if (MSVC80)
list(APPEND LMSVC_VER 80) set(MSVC_VER 80)
list(APPEND LMSVC_VERDOT 8.0)
elseif (MSVC_VERSION EQUAL 1600) # VisualStudio 2010 elseif (MSVC_VERSION EQUAL 1600) # VisualStudio 2010
MESSAGE(STATUS "MSVC_VERSION ${MSVC_VERSION}") MESSAGE(STATUS "MSVC_VERSION ${MSVC_VERSION}")
elseif (MSVC_VERSION EQUAL 1800) # VisualStudio 2013, which is (sigh) VS 12 elseif (MSVC_VERSION EQUAL 1800) # VisualStudio 2013, which is (sigh) VS 12
list(APPEND LMSVC_VER 120) set(MSVC_VER 120)
list(APPEND LMSVC_VERDOT 12.0) elseif (MSVC_VERSION GREATER_EQUAL 1910 AND MSVC_VERSION LESS 1920) # Visual Studio 2017
set(MSVC_VER 140)
else (MSVC80) else (MSVC80)
MESSAGE(WARNING "New MSVC_VERSION ${MSVC_VERSION} of MSVC: adapt Copy3rdPartyLibs.cmake") MESSAGE(WARNING "New MSVC_VERSION ${MSVC_VERSION} of MSVC: adapt Copy3rdPartyLibs.cmake")
endif (MSVC80) endif (MSVC80)
# try to copy VS2010 redist independently of system version if(ADDRESS_SIZE EQUAL 32)
# maint-7360 CP # this folder contains the 32bit DLLs.. (yes really!)
# list(APPEND LMSVC_VER 100) set(registry_find_path "[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/SysWOW64")
# list(APPEND LMSVC_VERDOT 10.0) else(ADDRESS_SIZE EQUAL 32)
# this folder contains the 64bit DLLs.. (yes really!)
list(LENGTH LMSVC_VER count) set(registry_find_path "[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/System32")
math(EXPR count "${count}-1") endif(ADDRESS_SIZE EQUAL 32)
foreach(i RANGE ${count})
list(GET LMSVC_VER ${i} MSVC_VER) # Having a string containing the system registry path is a start, but to
list(GET LMSVC_VERDOT ${i} MSVC_VERDOT) # get CMake to actually read the registry, we must engage some other
MESSAGE(STATUS "Copying redist libs for VC ${MSVC_VERDOT}") # operation.
FIND_PATH(debug_msvc_redist_path NAME msvcr${MSVC_VER}d.dll get_filename_component(registry_path "${registry_find_path}" ABSOLUTE)
PATHS
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\${MSVC_VERDOT}\\Setup\\VC;ProductDir]/redist/Debug_NonRedist/x86/Microsoft.VC${MSVC_VER}.DebugCRT # These are candidate DLL names. Empirically, VS versions before 2015 have
[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/SysWOW64 # msvcp*.dll and msvcr*.dll. VS 2017 has msvcp*.dll and vcruntime*.dll.
[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/System32 # Check each of them.
${MSVC_DEBUG_REDIST_PATH} foreach(release_msvc_file
NO_DEFAULT_PATH msvcp${MSVC_VER}.dll
msvcr${MSVC_VER}.dll
vcruntime${MSVC_VER}.dll
) )
if(EXISTS "${registry_path}/${release_msvc_file}")
if(EXISTS ${debug_msvc_redist_path}) to_staging_dirs(
set(debug_msvc_files ${registry_path}
msvcr${MSVC_VER}d.dll third_party_targets
msvcp${MSVC_VER}d.dll ${release_msvc_file})
) else()
# This isn't a WARNING because, as noted above, every VS version
copy_if_different( # we've observed has only a subset of the specified DLL names.
${debug_msvc_redist_path} MESSAGE(STATUS "Redist lib ${release_msvc_file} not found")
"${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(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)
endif() endif()
endforeach() endforeach()
MESSAGE(STATUS "Will copy redist files for MSVC ${MSVC_VER}:")
foreach(target ${third_party_targets})
MESSAGE(STATUS "${target}")
endforeach()
elseif(DARWIN) elseif(DARWIN)
set(SHARED_LIB_STAGING_DIR_DEBUG "${SHARED_LIB_STAGING_DIR}/Debug/Resources") set(SHARED_LIB_STAGING_DIR_DEBUG "${SHARED_LIB_STAGING_DIR}/Debug/Resources")
...@@ -182,6 +156,7 @@ elseif(DARWIN) ...@@ -182,6 +156,7 @@ elseif(DARWIN)
libexception_handler.dylib libexception_handler.dylib
${EXPAT_COPY} ${EXPAT_COPY}
libGLOD.dylib libGLOD.dylib
libhunspell-1.3.0.dylib
libndofdev.dylib libndofdev.dylib
libnghttp2.dylib libnghttp2.dylib
libnghttp2.14.dylib libnghttp2.14.dylib
...@@ -268,52 +243,28 @@ endif(WINDOWS) ...@@ -268,52 +243,28 @@ endif(WINDOWS)
# Done building the file lists, now set up the copy commands. # Done building the file lists, now set up the copy commands.
################################################################ ################################################################
copy_if_different( # Curiously, slvoice_files are only copied to SHARED_LIB_STAGING_DIR_RELEASE.
${vivox_lib_dir} # It's unclear whether this is oversight or intentional, but anyway leave the
"${SHARED_LIB_STAGING_DIR_DEBUG}" # single copy_if_different command rather than using to_staging_dirs.
out_targets
${vivox_libs}
)
set(third_party_targets ${third_party_targets} ${out_targets})
copy_if_different( copy_if_different(
${slvoice_src_dir} ${slvoice_src_dir}
"${SHARED_LIB_STAGING_DIR_RELEASE}" "${SHARED_LIB_STAGING_DIR_RELEASE}"
out_targets out_targets
${slvoice_files} ${slvoice_files}
) )
copy_if_different( list(APPEND third_party_targets ${out_targets})
${vivox_lib_dir}
"${SHARED_LIB_STAGING_DIR_RELEASE}"
out_targets
${vivox_libs}
)
set(third_party_targets ${third_party_targets} ${out_targets})
copy_if_different( to_staging_dirs(
${vivox_lib_dir} ${vivox_lib_dir}
"${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}" third_party_targets
out_targets
${vivox_libs} ${vivox_libs}
) )
set(third_party_targets ${third_party_targets} ${out_targets})
copy_if_different( to_staging_dirs(
${release_src_dir} ${release_src_dir}
"${SHARED_LIB_STAGING_DIR_RELEASE}" third_party_targets
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
${release_files} ${release_files}
) )
set(third_party_targets ${third_party_targets} ${out_targets})
if(NOT USESYSTEMLIBS) if(NOT USESYSTEMLIBS)
add_custom_target( add_custom_target(
......
# -*- cmake -*-
if (WINDOWS)
include(FindWindowsSDK)
get_windowssdk_include_dirs(${WINDOWSSDK_PREFERRED_DIR} WINDOWSSDK_INCLUDE_DIRS)
find_path(DIRECTX_INCLUDE_DIR
NAMES dxdiag.h
PATHS ${WINDOWSSDK_INCLUDE_DIRS})
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)
get_windowssdk_library_dirs(${WINDOWSSDK_PREFERRED_DIR} WINDOWSSDK_LIBRARY_DIRS)
find_path(DIRECTX_LIBRARY_DIR
NAMES dxguid.lib
PATHS ${WINDOWSSDK_LIBRARY_DIRS})
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)
...@@ -53,7 +53,7 @@ INCLUDE(GoogleMock) ...@@ -53,7 +53,7 @@ INCLUDE(GoogleMock)
${GOOGLEMOCK_INCLUDE_DIRS} ${GOOGLEMOCK_INCLUDE_DIRS}
) )
SET(alltest_LIBRARIES SET(alltest_LIBRARIES
${BOOST_COROUTINE_LIBRARY} ${BOOST_FIBER_LIBRARY}
${BOOST_CONTEXT_LIBRARY} ${BOOST_CONTEXT_LIBRARY}
${BOOST_SYSTEM_LIBRARY} ${BOOST_SYSTEM_LIBRARY}
${GOOGLEMOCK_LIBRARIES} ${GOOGLEMOCK_LIBRARIES}
...@@ -200,8 +200,9 @@ FUNCTION(LL_ADD_INTEGRATION_TEST ...@@ -200,8 +200,9 @@ FUNCTION(LL_ADD_INTEGRATION_TEST
) )
SET(libraries SET(libraries
${LEGACY_STDIO_LIBS}
${library_dependencies} ${library_dependencies}
${BOOST_COROUTINE_LIBRARY} ${BOOST_FIBER_LIBRARY}
${BOOST_CONTEXT_LIBRARY} ${BOOST_CONTEXT_LIBRARY}
${BOOST_SYSTEM_LIBRARY} ${BOOST_SYSTEM_LIBRARY}
${GOOGLEMOCK_LIBRARIES} ${GOOGLEMOCK_LIBRARIES}
......
...@@ -18,7 +18,7 @@ endif (BUILD_HEADLESS) ...@@ -18,7 +18,7 @@ endif (BUILD_HEADLESS)
set(LLAPPEARANCE_LIBRARIES llappearance set(LLAPPEARANCE_LIBRARIES llappearance
llmessage llmessage
llcorehttp llcorehttp
${BOOST_COROUTINE_LIBRARY} ${BOOST_FIBER_LIBRARY}
${BOOST_CONTEXT_LIBRARY} ${BOOST_CONTEXT_LIBRARY}
${BOOST_SYSTEM_LIBRARY} ${BOOST_SYSTEM_LIBRARY}
) )
......
...@@ -19,7 +19,7 @@ if (LINUX) ...@@ -19,7 +19,7 @@ if (LINUX)
# specify all libraries that llcommon uses. # specify all libraries that llcommon uses.
# llcommon uses `clock_gettime' which is provided by librt on linux. # llcommon uses `clock_gettime' which is provided by librt on linux.
set(LLCOMMON_LIBRARIES llcommon set(LLCOMMON_LIBRARIES llcommon
${BOOST_COROUTINE_LIBRARY} ${BOOST_FIBER_LIBRARY}
${BOOST_CONTEXT_LIBRARY} ${BOOST_CONTEXT_LIBRARY}
${BOOST_THREAD_LIBRARY} ${BOOST_THREAD_LIBRARY}
${BOOST_SYSTEM_LIBRARY} ${BOOST_SYSTEM_LIBRARY}
...@@ -27,7 +27,7 @@ if (LINUX) ...@@ -27,7 +27,7 @@ if (LINUX)
) )
else (LINUX) else (LINUX)
set(LLCOMMON_LIBRARIES llcommon set(LLCOMMON_LIBRARIES llcommon
${BOOST_COROUTINE_LIBRARY} ${BOOST_FIBER_LIBRARY}
${BOOST_CONTEXT_LIBRARY} ${BOOST_CONTEXT_LIBRARY}
${BOOST_THREAD_LIBRARY} ${BOOST_THREAD_LIBRARY}
${BOOST_SYSTEM_LIBRARY} ) ${BOOST_SYSTEM_LIBRARY} )
......
...@@ -12,6 +12,6 @@ set(LLCOREHTTP_INCLUDE_DIRS ...@@ -12,6 +12,6 @@ set(LLCOREHTTP_INCLUDE_DIRS
) )
set(LLCOREHTTP_LIBRARIES llcorehttp set(LLCOREHTTP_LIBRARIES llcorehttp
${BOOST_COROUTINE_LIBRARY} ${BOOST_FIBER_LIBRARY}
${BOOST_CONTEXT_LIBRARY} ${BOOST_CONTEXT_LIBRARY}
${BOOST_SYSTEM_LIBRARY}) ${BOOST_SYSTEM_LIBRARY})
...@@ -87,7 +87,6 @@ def main(command, arguments=[], libpath=[], vars={}): ...@@ -87,7 +87,6 @@ def main(command, arguments=[], libpath=[], vars={}):
# might not exist; instead of KeyError, just use an empty string. # might not exist; instead of KeyError, just use an empty string.
dirs = os.environ.get(var, "").split(os.pathsep) dirs = os.environ.get(var, "").split(os.pathsep)
# Append the sequence in libpath # Append the sequence in libpath
log.info("%s += %r" % (var, libpath))
for dir in libpath: for dir in libpath:
# append system paths at the end # append system paths at the end
if dir in ('/lib', '/usr/lib'): if dir in ('/lib', '/usr/lib'):
...@@ -105,16 +104,21 @@ def main(command, arguments=[], libpath=[], vars={}): ...@@ -105,16 +104,21 @@ def main(command, arguments=[], libpath=[], vars={}):
# Now rebuild the path string. This way we use a minimum of separators # Now rebuild the path string. This way we use a minimum of separators
# -- and we avoid adding a pointless separator when libpath is empty. # -- and we avoid adding a pointless separator when libpath is empty.
os.environ[var] = os.pathsep.join(clean_dirs) 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 # Now handle arbitrary environment variables. The tricky part is ensuring
# that all the keys and values we try to pass are actually strings. # that all the keys and values we try to pass are actually strings.
if vars: 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()])) os.environ.update(dict([(str(key), str(value)) for key, value in vars.iteritems()]))
# Run the child process. # Run the child process.
command_list = [command] command_list = [command]
command_list.extend(arguments) 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. # Make sure we see all relevant output *before* child-process output.
sys.stdout.flush() sys.stdout.flush()
try: try:
...@@ -305,8 +309,11 @@ def get_windows_table(): ...@@ -305,8 +309,11 @@ def get_windows_table():
return _windows_table return _windows_table
log=logging.getLogger(__name__) # Use this instead of logging.basicConfig() because the latter prefixes
logging.basicConfig() # every line of output with INFO:__main__:...
log=logging.getLogger()
log.setLevel(logging.INFO)
log.addHandler(logging.StreamHandler())
if __name__ == "__main__": if __name__ == "__main__":
import argparse import argparse
......
...@@ -64,6 +64,7 @@ endif (DARWIN) ...@@ -64,6 +64,7 @@ endif (DARWIN)
# Libraries on which this application depends on # Libraries on which this application depends on
# Sort by high-level to low-level # Sort by high-level to low-level
target_link_libraries(llimage_libtest target_link_libraries(llimage_libtest
${LEGACY_STDIO_LIBS}
${LLCOMMON_LIBRARIES} ${LLCOMMON_LIBRARIES}
${LLVFS_LIBRARIES} ${LLVFS_LIBRARIES}
${LLMATH_LIBRARIES} ${LLMATH_LIBRARIES}
......
...@@ -75,6 +75,7 @@ endif (DARWIN) ...@@ -75,6 +75,7 @@ endif (DARWIN)
# Libraries on which this library depends, needed for Linux builds # Libraries on which this library depends, needed for Linux builds
# Sort by high-level to low-level # Sort by high-level to low-level
target_link_libraries(llui_libtest target_link_libraries(llui_libtest
${LEGACY_STDIO_LIBS}
llui llui
llinventory llinventory
llmessage llmessage
......
...@@ -69,7 +69,7 @@ target_link_libraries(linux-crash-logger ...@@ -69,7 +69,7 @@ target_link_libraries(linux-crash-logger
${LLMATH_LIBRARIES} ${LLMATH_LIBRARIES}
${LLCOREHTTP_LIBRARIES} ${LLCOREHTTP_LIBRARIES}
${LLCOMMON_LIBRARIES} ${LLCOMMON_LIBRARIES}
${BOOST_COROUTINE_LIBRARY} ${BOOST_FIBER_LIBRARY}
${BOOST_CONTEXT_LIBRARY} ${BOOST_CONTEXT_LIBRARY}
${UI_LIBRARIES} ${UI_LIBRARIES}
${DB_LIBRARIES} ${DB_LIBRARIES}
......
...@@ -32,7 +32,8 @@ ...@@ -32,7 +32,8 @@
struct WearableEntry : public LLDictionaryEntry struct WearableEntry : public LLDictionaryEntry
{ {
WearableEntry(const std::string &name, WearableEntry(LLWearableType& wtype,
const std::string &name,
const std::string& default_new_name, const std::string& default_new_name,
LLAssetType::EType assetType, LLAssetType::EType assetType,
LLInventoryType::EIconName iconName, LLInventoryType::EIconName iconName,
...@@ -41,7 +42,7 @@ struct WearableEntry : public LLDictionaryEntry ...@@ -41,7 +42,7 @@ struct WearableEntry : public LLDictionaryEntry
LLDictionaryEntry(name), LLDictionaryEntry(name),
mAssetType(assetType), mAssetType(assetType),
mDefaultNewName(default_new_name), mDefaultNewName(default_new_name),
mLabel(LLWearableType::getInstance()->mTrans->getString(name)), mLabel(wtype.mTrans->getString(name)),
mIconName(iconName), mIconName(iconName),
mDisableCameraSwitch(disable_camera_switch), mDisableCameraSwitch(disable_camera_switch),
mAllowMultiwear(allow_multiwear) mAllowMultiwear(allow_multiwear)
...@@ -56,41 +57,35 @@ struct WearableEntry : public LLDictionaryEntry ...@@ -56,41 +57,35 @@ struct WearableEntry : public LLDictionaryEntry
BOOL mAllowMultiwear; BOOL mAllowMultiwear;
}; };
class LLWearableDictionary : public LLSingleton<LLWearableDictionary>, class LLWearableDictionary : public LLParamSingleton<LLWearableDictionary>,
public LLDictionary<LLWearableType::EType, WearableEntry> public LLDictionary<LLWearableType::EType, WearableEntry>
{ {
LLSINGLETON(LLWearableDictionary); LLSINGLETON(LLWearableDictionary, LLWearableType&);
}; };
LLWearableDictionary::LLWearableDictionary() LLWearableDictionary::LLWearableDictionary(LLWearableType& wtype)
{ {
if (!LLWearableType::instanceExists()) addEntry(LLWearableType::WT_SHAPE, new WearableEntry(wtype, "shape", "New Shape", LLAssetType::AT_BODYPART, LLInventoryType::ICONNAME_BODYPART_SHAPE, FALSE, FALSE));
{ addEntry(LLWearableType::WT_SKIN, new WearableEntry(wtype, "skin", "New Skin", LLAssetType::AT_BODYPART, LLInventoryType::ICONNAME_BODYPART_SKIN, FALSE, FALSE));
// LLWearableType is effectively a wrapper around LLWearableDictionary and is used as storage for LLTranslationBridge addEntry(LLWearableType::WT_HAIR, new WearableEntry(wtype, "hair", "New Hair", LLAssetType::AT_BODYPART, LLInventoryType::ICONNAME_BODYPART_HAIR, FALSE, FALSE));
// Todo: consider merging LLWearableType and LLWearableDictionary addEntry(LLWearableType::WT_EYES, new WearableEntry(wtype, "eyes", "New Eyes", LLAssetType::AT_BODYPART, LLInventoryType::ICONNAME_BODYPART_EYES, FALSE, FALSE));
LL_WARNS() << "Initing LLWearableDictionary without LLWearableType" << LL_ENDL; addEntry(LLWearableType::WT_SHIRT, new WearableEntry(wtype, "shirt", "New Shirt", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_SHIRT, FALSE, TRUE));
} addEntry(LLWearableType::WT_PANTS, new WearableEntry(wtype, "pants", "New Pants", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_PANTS, FALSE, TRUE));
addEntry(LLWearableType::WT_SHAPE, new WearableEntry("shape", "New Shape", LLAssetType::AT_BODYPART, LLInventoryType::ICONNAME_BODYPART_SHAPE, FALSE, FALSE)); addEntry(LLWearableType::WT_SHOES, new WearableEntry(wtype, "shoes", "New Shoes", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_SHOES, FALSE, TRUE));
addEntry(LLWearableType::WT_SKIN, new WearableEntry("skin", "New Skin", LLAssetType::AT_BODYPART, LLInventoryType::ICONNAME_BODYPART_SKIN, FALSE, FALSE)); addEntry(LLWearableType::WT_SOCKS, new WearableEntry(wtype, "socks", "New Socks", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_SOCKS, FALSE, TRUE));
addEntry(LLWearableType::WT_HAIR, new WearableEntry("hair", "New Hair", LLAssetType::AT_BODYPART, LLInventoryType::ICONNAME_BODYPART_HAIR, FALSE, FALSE)); addEntry(LLWearableType::WT_JACKET, new WearableEntry(wtype, "jacket", "New Jacket", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_JACKET, FALSE, TRUE));
addEntry(LLWearableType::WT_EYES, new WearableEntry("eyes", "New Eyes", LLAssetType::AT_BODYPART, LLInventoryType::ICONNAME_BODYPART_EYES, FALSE, FALSE)); addEntry(LLWearableType::WT_GLOVES, new WearableEntry(wtype, "gloves", "New Gloves", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_GLOVES, FALSE, TRUE));
addEntry(LLWearableType::WT_SHIRT, new WearableEntry("shirt", "New Shirt", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_SHIRT, FALSE, TRUE)); addEntry(LLWearableType::WT_UNDERSHIRT, new WearableEntry(wtype, "undershirt", "New Undershirt", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_UNDERSHIRT, FALSE, TRUE));
addEntry(LLWearableType::WT_PANTS, new WearableEntry("pants", "New Pants", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_PANTS, FALSE, TRUE)); addEntry(LLWearableType::WT_UNDERPANTS, new WearableEntry(wtype, "underpants", "New Underpants", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_UNDERPANTS, FALSE, TRUE));
addEntry(LLWearableType::WT_SHOES, new WearableEntry("shoes", "New Shoes", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_SHOES, FALSE, TRUE)); addEntry(LLWearableType::WT_SKIRT, new WearableEntry(wtype, "skirt", "New Skirt", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_SKIRT, FALSE, TRUE));
addEntry(LLWearableType::WT_SOCKS, new WearableEntry("socks", "New Socks", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_SOCKS, FALSE, TRUE)); addEntry(LLWearableType::WT_ALPHA, new WearableEntry(wtype, "alpha", "New Alpha", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_ALPHA, FALSE, TRUE));
addEntry(LLWearableType::WT_JACKET, new WearableEntry("jacket", "New Jacket", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_JACKET, FALSE, TRUE)); addEntry(LLWearableType::WT_TATTOO, new WearableEntry(wtype, "tattoo", "New Tattoo", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_TATTOO, FALSE, TRUE));
addEntry(LLWearableType::WT_GLOVES, new WearableEntry("gloves", "New Gloves", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_GLOVES, FALSE, TRUE)); addEntry(LLWearableType::WT_UNIVERSAL, new WearableEntry(wtype, "universal", "New Universal", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_UNIVERSAL, FALSE, TRUE));
addEntry(LLWearableType::WT_UNDERSHIRT, new WearableEntry("undershirt", "New Undershirt", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_UNDERSHIRT, FALSE, TRUE));
addEntry(LLWearableType::WT_UNDERPANTS, new WearableEntry("underpants", "New Underpants", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_UNDERPANTS, FALSE, TRUE)); addEntry(LLWearableType::WT_PHYSICS, new WearableEntry(wtype, "physics", "New Physics", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_PHYSICS, TRUE, TRUE));
addEntry(LLWearableType::WT_SKIRT, new WearableEntry("skirt", "New Skirt", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_SKIRT, FALSE, TRUE));
addEntry(LLWearableType::WT_ALPHA, new WearableEntry("alpha", "New Alpha", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_ALPHA, FALSE, TRUE)); addEntry(LLWearableType::WT_INVALID, new WearableEntry(wtype, "invalid", "Invalid Wearable", LLAssetType::AT_NONE, LLInventoryType::ICONNAME_UNKNOWN, FALSE, FALSE));
addEntry(LLWearableType::WT_TATTOO, new WearableEntry("tattoo", "New Tattoo", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_TATTOO, FALSE, TRUE)); addEntry(LLWearableType::WT_NONE, new WearableEntry(wtype, "none", "Invalid Wearable", LLAssetType::AT_NONE, LLInventoryType::ICONNAME_NONE, FALSE, FALSE));
addEntry(LLWearableType::WT_UNIVERSAL, new WearableEntry("universal", "New Universal", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_UNIVERSAL, FALSE, TRUE));
addEntry(LLWearableType::WT_PHYSICS, new WearableEntry("physics", "New Physics", LLAssetType::AT_CLOTHING, LLInventoryType::ICONNAME_CLOTHING_PHYSICS, TRUE, TRUE));
addEntry(LLWearableType::WT_INVALID, new WearableEntry("invalid", "Invalid Wearable", LLAssetType::AT_NONE, LLInventoryType::ICONNAME_UNKNOWN, FALSE, FALSE));
addEntry(LLWearableType::WT_NONE, new WearableEntry("none", "Invalid Wearable", LLAssetType::AT_NONE, LLInventoryType::ICONNAME_NONE, FALSE, FALSE));
} }
...@@ -107,6 +102,14 @@ LLWearableType::~LLWearableType() ...@@ -107,6 +102,14 @@ LLWearableType::~LLWearableType()
delete mTrans; delete mTrans;
} }
void LLWearableType::initSingleton()
{
// To make sure all wrapping functions will crash without initing LLWearableType;
LLWearableDictionary::initParamSingleton(*this);
// Todo: consider merging LLWearableType and LLWearableDictionary
}
// static // static
LLWearableType::EType LLWearableType::typeNameToType(const std::string& type_name) LLWearableType::EType LLWearableType::typeNameToType(const std::string& type_name)
{ {
......
...@@ -37,6 +37,7 @@ class LLWearableType : public LLParamSingleton<LLWearableType> ...@@ -37,6 +37,7 @@ class LLWearableType : public LLParamSingleton<LLWearableType>
{ {
LLSINGLETON(LLWearableType, LLTranslationBridge* trans); LLSINGLETON(LLWearableType, LLTranslationBridge* trans);
~LLWearableType(); ~LLWearableType();
void initSingleton();
friend struct WearableEntry; friend struct WearableEntry;
public: public:
enum EType enum EType
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment