summaryrefslogtreecommitdiff
path: root/indra/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'indra/cmake')
-rw-r--r--indra/cmake/00-Common.cmake22
-rw-r--r--indra/cmake/APR.cmake14
-rw-r--r--indra/cmake/Audio.cmake19
-rw-r--r--indra/cmake/Boost.cmake9
-rw-r--r--indra/cmake/BuildVersion.cmake2
-rw-r--r--indra/cmake/CMakeCopyIfDifferent.cmake10
-rw-r--r--indra/cmake/CMakeLists.txt10
-rw-r--r--indra/cmake/CURL.cmake19
-rw-r--r--indra/cmake/ConfigurePkgConfig.cmake24
-rw-r--r--indra/cmake/Copy3rdPartyLibs.cmake111
-rw-r--r--indra/cmake/DeploySharedLibs.cmake2
-rw-r--r--indra/cmake/EXPAT.cmake19
-rw-r--r--indra/cmake/FMODSTUDIO.cmake48
-rw-r--r--indra/cmake/FindAutobuild.cmake6
-rw-r--r--indra/cmake/FreeType.cmake8
-rw-r--r--indra/cmake/GLM.cmake7
-rw-r--r--indra/cmake/GoogleMock.cmake32
-rw-r--r--indra/cmake/Havok.cmake2
-rw-r--r--indra/cmake/Hunspell.cmake13
-rw-r--r--indra/cmake/ICU4C.cmake23
-rw-r--r--indra/cmake/JPEG.cmake10
-rw-r--r--indra/cmake/JsonCpp.cmake17
-rw-r--r--indra/cmake/LLAddBuildTest.cmake7
-rw-r--r--indra/cmake/LLCommon.cmake3
-rw-r--r--indra/cmake/LLKDU.cmake2
-rw-r--r--indra/cmake/LLPhysicsExtensions.cmake2
-rw-r--r--indra/cmake/LLPrimitive.cmake21
-rw-r--r--indra/cmake/LLSharedLibs.cmake4
-rw-r--r--indra/cmake/LLWindow.cmake2
-rw-r--r--indra/cmake/Linking.cmake3
-rw-r--r--indra/cmake/NGHTTP2.cmake8
-rw-r--r--indra/cmake/OPENAL.cmake5
-rw-r--r--indra/cmake/OpenSSL.cmake5
-rw-r--r--indra/cmake/OpenXR.cmake22
-rw-r--r--indra/cmake/PNG.cmake4
-rw-r--r--indra/cmake/TinyEXR.cmake7
-rw-r--r--indra/cmake/TinyGLTF.cmake2
-rw-r--r--indra/cmake/Tracy.cmake27
-rw-r--r--indra/cmake/UI.cmake2
-rw-r--r--indra/cmake/URIPARSER.cmake19
-rw-r--r--indra/cmake/Variables.cmake4
-rw-r--r--indra/cmake/WebRTC.cmake32
-rw-r--r--indra/cmake/XmlRpcEpi.cmake11
-rw-r--r--indra/cmake/ZLIBNG.cmake4
-rw-r--r--indra/cmake/cmake_dummy.cpp10
-rwxr-xr-xindra/cmake/run_build_test.py2
46 files changed, 304 insertions, 331 deletions
diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake
index 24534c98d9..39f26ced5d 100644
--- a/indra/cmake/00-Common.cmake
+++ b/indra/cmake/00-Common.cmake
@@ -32,6 +32,10 @@ add_compile_definitions( ADDRESS_SIZE=${ADDRESS_SIZE})
# -- which we do. Without one or the other, we get a ton of Boost warnings.
add_compile_definitions(BOOST_BIND_GLOBAL_PLACEHOLDERS)
+# Force enable SSE2 instructions in GLM per the manual
+# https://github.com/g-truc/glm/blob/master/manual.md#section2_10
+add_compile_definitions(GLM_FORCE_DEFAULT_ALIGNED_GENTYPES=1 GLM_FORCE_SSE2=1)
+
# Configure crash reporting
set(RELEASE_CRASH_REPORTING OFF CACHE BOOL "Enable use of crash reporting in release builds")
set(NON_RELEASE_CRASH_REPORTING OFF CACHE BOOL "Enable use of crash reporting in developer builds")
@@ -60,15 +64,16 @@ if (WINDOWS)
# http://www.cmake.org/pipermail/cmake/2009-September/032143.html
string(REPLACE "/Zm1000" " " CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
- # zlib has assembly-language object files incompatible with SAFESEH
add_link_options(/LARGEADDRESSAWARE
- /SAFESEH:NO
/NODEFAULTLIB:LIBCMT
/IGNORE:4099)
- add_definitions(
- -DNOMINMAX
-# /DDOM_DYNAMIC # For shared library colladadom
+ add_compile_definitions(
+ WIN32_LEAN_AND_MEAN
+ NOMINMAX
+# DOM_DYNAMIC # For shared library colladadom
+ _CRT_SECURE_NO_WARNINGS # Allow use of sprintf etc
+ _WINSOCK_DEPRECATED_NO_WARNINGS # Disable deprecated WinSock API warnings
)
add_compile_options(
/Zo
@@ -81,13 +86,14 @@ if (WINDOWS)
/Oy-
/fp:fast
/MP
+ /permissive-
)
# Nicky: x64 implies SSE2
if( ADDRESS_SIZE EQUAL 32 )
add_compile_options( /arch:SSE2 )
endif()
-
+
# Are we using the crummy Visual Studio KDU build workaround?
if (NOT VS_DISABLE_FATAL_WARNINGS)
add_compile_options(/WX)
@@ -182,6 +188,10 @@ if (LINUX OR DARWIN)
list(APPEND GCC_WARNINGS -Wno-reorder -Wno-non-virtual-dtor )
+ if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13)
+ list(APPEND GCC_WARNINGS -Wno-unused-but-set-variable -Wno-unused-variable )
+ endif()
+
add_compile_options(${GCC_WARNINGS})
add_compile_options(-m${ADDRESS_SIZE})
endif (LINUX OR DARWIN)
diff --git a/indra/cmake/APR.cmake b/indra/cmake/APR.cmake
index 21139319c3..97b316c4c7 100644
--- a/indra/cmake/APR.cmake
+++ b/indra/cmake/APR.cmake
@@ -18,6 +18,7 @@ if (WINDOWS)
${ARCH_PREBUILT_DIRS_RELEASE}/${APR_selector}apr-1.lib
${ARCH_PREBUILT_DIRS_RELEASE}/${APR_selector}aprutil-1.lib
)
+ target_compile_definitions( ll::apr INTERFACE APR_DECLARE_STATIC=1 APU_DECLARE_STATIC=1 API_DECLARE_STATIC=1)
elseif (DARWIN)
if (LLCOMMON_LINK_SHARED)
set(APR_selector "0.dylib")
@@ -28,16 +29,15 @@ elseif (DARWIN)
endif (LLCOMMON_LINK_SHARED)
target_link_libraries( ll::apr INTERFACE
- libapr-1.${APR_selector}
- libaprutil-1.${APRUTIL_selector}
+ ${ARCH_PREBUILT_DIRS_RELEASE}/libapr-1.${APR_selector}
+ ${ARCH_PREBUILT_DIRS_RELEASE}/libaprutil-1.${APR_selector}
iconv
)
-else (WINDOWS)
+else()
target_link_libraries( ll::apr INTERFACE
- apr-1
- aprutil-1
- uuid
+ ${ARCH_PREBUILT_DIRS_RELEASE}/libapr-1.a
+ ${ARCH_PREBUILT_DIRS_RELEASE}/libaprutil-1.a
rt
)
-endif (WINDOWS)
+endif ()
target_include_directories( ll::apr SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/apr-1 )
diff --git a/indra/cmake/Audio.cmake b/indra/cmake/Audio.cmake
index 38547bb017..8c82749cab 100644
--- a/indra/cmake/Audio.cmake
+++ b/indra/cmake/Audio.cmake
@@ -1,4 +1,5 @@
# -*- cmake -*-
+include(Linking)
include(Prebuilt)
include_guard()
@@ -9,8 +10,22 @@ use_prebuilt_binary(ogg_vorbis)
target_include_directories( ll::vorbis SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include )
if (WINDOWS)
- target_link_libraries(ll::vorbis INTERFACE ogg_static vorbis_static vorbisenc_static vorbisfile_static )
+ target_link_libraries(ll::vorbis INTERFACE
+ optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libogg.lib
+ debug ${ARCH_PREBUILT_DIRS_DEBUG}/libogg.lib
+ optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libvorbisenc.lib
+ debug ${ARCH_PREBUILT_DIRS_DEBUG}/libvorbisenc.lib
+ optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libvorbisfile.lib
+ debug ${ARCH_PREBUILT_DIRS_DEBUG}/libvorbisfile.lib
+ optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libvorbis.lib
+ debug ${ARCH_PREBUILT_DIRS_DEBUG}/libvorbis.lib
+ )
else (WINDOWS)
- target_link_libraries(ll::vorbis INTERFACE ogg vorbis vorbisenc vorbisfile )
+ target_link_libraries(ll::vorbis INTERFACE
+ ${ARCH_PREBUILT_DIRS_RELEASE}/libogg.a
+ ${ARCH_PREBUILT_DIRS_RELEASE}/libvorbisenc.a
+ ${ARCH_PREBUILT_DIRS_RELEASE}/libvorbisfile.a
+ ${ARCH_PREBUILT_DIRS_RELEASE}/libvorbis.a
+ )
endif (WINDOWS)
diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake
index 601a23a86d..8c5b946753 100644
--- a/indra/cmake/Boost.cmake
+++ b/indra/cmake/Boost.cmake
@@ -24,7 +24,8 @@ if (WINDOWS)
libboost_program_options-mt${addrsfx}
libboost_regex-mt${addrsfx}
libboost_system-mt${addrsfx}
- libboost_thread-mt${addrsfx})
+ libboost_thread-mt${addrsfx}
+ libboost_url-mt${addrsfx})
elseif (LINUX)
target_link_libraries( ll::boost INTERFACE
boost_context-mt${addrsfx}
@@ -34,7 +35,8 @@ elseif (LINUX)
boost_regex-mt${addrsfx}
boost_signals-mt${addrsfx}
boost_system-mt${addrsfx}
- boost_thread-mt${addrsfx})
+ boost_thread-mt${addrsfx}
+ boost_url-mt${addrsfx})
elseif (DARWIN)
target_link_libraries( ll::boost INTERFACE
boost_context-mt${addrsfx}
@@ -43,7 +45,8 @@ elseif (DARWIN)
boost_program_options-mt${addrsfx}
boost_regex-mt${addrsfx}
boost_system-mt${addrsfx}
- boost_thread-mt${addrsfx})
+ boost_thread-mt${addrsfx}
+ boost_url-mt${addrsfx})
endif (WINDOWS)
if (LINUX)
diff --git a/indra/cmake/BuildVersion.cmake b/indra/cmake/BuildVersion.cmake
index b531f29ee2..aa151bafc8 100644
--- a/indra/cmake/BuildVersion.cmake
+++ b/indra/cmake/BuildVersion.cmake
@@ -39,7 +39,7 @@ if (NOT DEFINED VIEWER_SHORT_VERSION) # will be true in indra/, false in indra/n
endif (DEFINED ENV{revision})
message(STATUS "Building '${VIEWER_CHANNEL}' Version ${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}")
else ( EXISTS ${VIEWER_VERSION_BASE_FILE} )
- message(SEND_ERROR "Cannot get viewer version from '${VIEWER_VERSION_BASE_FILE}'")
+ message(SEND_ERROR "Cannot get viewer version from '${VIEWER_VERSION_BASE_FILE}'")
endif ( EXISTS ${VIEWER_VERSION_BASE_FILE} )
if ("${VIEWER_VERSION_REVISION}" STREQUAL "")
diff --git a/indra/cmake/CMakeCopyIfDifferent.cmake b/indra/cmake/CMakeCopyIfDifferent.cmake
index 55e71ff153..fe6806e38b 100644
--- a/indra/cmake/CMakeCopyIfDifferent.cmake
+++ b/indra/cmake/CMakeCopyIfDifferent.cmake
@@ -10,20 +10,20 @@
MACRO(COPY_IF_DIFFERENT FROM_DIR TO_DIR TARGETS)
# Macro to implement copy_if_different for a list of files
-# Arguments -
+# Arguments -
# FROM_DIR - this is the source directory
# TO_DIR - this is the destination directory
# TARGETS - A variable to receive a list of targets
-# FILES - names of the files to copy
-# TODO: add globing.
+# FILES - names of the files to copy
+# TODO: add globing.
SET(AddTargets "")
FOREACH(SRC ${ARGN})
- GET_FILENAME_COMPONENT(SRCFILE ${SRC} NAME)
+ GET_FILENAME_COMPONENT(SRCFILE ${SRC} NAME)
IF("${FROM_DIR}" STREQUAL "")
SET(FROM ${SRC})
ELSE("${FROM_DIR}" STREQUAL "")
SET(FROM ${FROM_DIR}/${SRC})
- ENDIF("${FROM_DIR}" STREQUAL "")
+ ENDIF("${FROM_DIR}" STREQUAL "")
IF("${TO_DIR}" STREQUAL "")
SET(TO ${SRCFILE})
ELSE("${TO_DIR}" STREQUAL "")
diff --git a/indra/cmake/CMakeLists.txt b/indra/cmake/CMakeLists.txt
index 05c51c018d..cc217b0563 100644
--- a/indra/cmake/CMakeLists.txt
+++ b/indra/cmake/CMakeLists.txt
@@ -23,15 +23,12 @@ set(cmake_SOURCE_FILES
DragDrop.cmake
EXPAT.cmake
FindAutobuild.cmake
- FMODSTUDIO.cmake
FreeType.cmake
GLEXT.cmake
GLH.cmake
- GoogleMock.cmake
+ GLM.cmake
Havok.cmake
Hunspell.cmake
- ICU4C.cmake
- JsonCpp.cmake
LLAddBuildTest.cmake
LLAppearance.cmake
LLAudio.cmake
@@ -56,15 +53,16 @@ set(cmake_SOURCE_FILES
PulseAudio.cmake
Python.cmake
TemplateCheck.cmake
+ TinyEXR.cmake
+ TinyGLTF.cmake
Tut.cmake
UI.cmake
UnixInstall.cmake
- URIPARSER.cmake
Variables.cmake
ViewerMiscLibs.cmake
VisualLeakDetector.cmake
LibVLCPlugin.cmake
- XmlRpcEpi.cmake
+ WebRTC.cmake
xxHash.cmake
ZLIBNG.cmake
)
diff --git a/indra/cmake/CURL.cmake b/indra/cmake/CURL.cmake
index b9f685f37b..eea0a2da62 100644
--- a/indra/cmake/CURL.cmake
+++ b/indra/cmake/CURL.cmake
@@ -1,5 +1,6 @@
# -*- cmake -*-
include(Prebuilt)
+include(Linking)
include_guard()
add_library( ll::libcurl INTERFACE IMPORTED )
@@ -7,8 +8,18 @@ add_library( ll::libcurl INTERFACE IMPORTED )
use_system_binary(libcurl)
use_prebuilt_binary(curl)
if (WINDOWS)
- target_link_libraries(ll::libcurl INTERFACE libcurl.lib)
-else (WINDOWS)
- target_link_libraries(ll::libcurl INTERFACE libcurl.a)
-endif (WINDOWS)
+ target_link_libraries(ll::libcurl INTERFACE
+ ${ARCH_PREBUILT_DIRS_RELEASE}/libcurl.lib
+ ll::openssl
+ ll::nghttp2
+ ll::zlib-ng
+ )
+else ()
+ target_link_libraries(ll::libcurl INTERFACE
+ ${ARCH_PREBUILT_DIRS_RELEASE}/libcurl.a
+ ll::openssl
+ ll::nghttp2
+ ll::zlib-ng
+ )
+endif ()
target_include_directories( ll::libcurl SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include)
diff --git a/indra/cmake/ConfigurePkgConfig.cmake b/indra/cmake/ConfigurePkgConfig.cmake
index 55d865392e..9e798d663b 100644
--- a/indra/cmake/ConfigurePkgConfig.cmake
+++ b/indra/cmake/ConfigurePkgConfig.cmake
@@ -17,13 +17,13 @@ IF("$ENV{PKG_CONFIG_LIBDIR}" STREQUAL "")
SET(PKG_CONFIG_MULTI_GUESS /usr/local/lib/x86_64-linux-gnu)
SET(PKG_CONFIG_MULTI_LOCAL_GUESS /usr/local/lib/x86_64-linux-gnu)
endif (ADDRESS_SIZE EQUAL 32)
-
+
# Use DPKG architecture, if available.
IF (${DPKG_ARCH})
SET(PKG_CONFIG_MULTI_GUESS /usr/lib/${DPKG_ARCH})
SET(PKG_CONFIG_MULTI_LOCAL_GUESS /usrlocal/lib/${DPKG_ARCH})
ENDIF (${DPKG_ARCH})
-
+
# Explicitly include anything listed in PKG_CONFIG_PATH
string(REPLACE ":" ";" PKG_CONFIG_PATH_LIST "$ENV{PKG_CONFIG_PATH}")
FOREACH(PKG_CONFIG_DIR ${PKG_CONFIG_PATH_LIST})
@@ -38,25 +38,25 @@ IF("$ENV{PKG_CONFIG_LIBDIR}" STREQUAL "")
FIND_PATH(PKG_CONFIG_NO_MULTI_LOCAL pkgconfig HINT ${PKG_CONFIG_NO_MULTI_LOCAL_GUESS})
# Add anything we found to our list.
- IF(NOT PKG_CONFIG_ENV STREQUAL PKG_CONFIG_ENV-NOTFOUND)
+ IF(NOT PKG_CONFIG_ENV STREQUAL PKG_CONFIG_ENV-NOTFOUND)
SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_ENV}/pkgconfig")
- ENDIF(NOT PKG_CONFIG_ENV STREQUAL PKG_CONFIG_ENV-NOTFOUND)
+ ENDIF(NOT PKG_CONFIG_ENV STREQUAL PKG_CONFIG_ENV-NOTFOUND)
- IF(NOT PKG_CONFIG_MULTI STREQUAL PKG_CONFIG_MULTI-NOTFOUND)
+ IF(NOT PKG_CONFIG_MULTI STREQUAL PKG_CONFIG_MULTI-NOTFOUND)
SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_MULTI}/pkgconfig")
- ENDIF(NOT PKG_CONFIG_MULTI STREQUAL PKG_CONFIG_MULTI-NOTFOUND)
+ ENDIF(NOT PKG_CONFIG_MULTI STREQUAL PKG_CONFIG_MULTI-NOTFOUND)
- IF(NOT PKG_CONFIG_MULTI_LOCAL STREQUAL PKG_CONFIG_MULTI_LOCAL-NOTFOUND)
+ IF(NOT PKG_CONFIG_MULTI_LOCAL STREQUAL PKG_CONFIG_MULTI_LOCAL-NOTFOUND)
SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_MULTI_LOCAL}/pkgconfig")
- ENDIF(NOT PKG_CONFIG_MULTI_LOCAL STREQUAL PKG_CONFIG_MULTI_LOCAL-NOTFOUND)
+ ENDIF(NOT PKG_CONFIG_MULTI_LOCAL STREQUAL PKG_CONFIG_MULTI_LOCAL-NOTFOUND)
- IF(NOT PKG_CONFIG_NO_MULTI STREQUAL PKG_CONFIG_NO_MULTI-NOTFOUND)
+ IF(NOT PKG_CONFIG_NO_MULTI STREQUAL PKG_CONFIG_NO_MULTI-NOTFOUND)
SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_NO_MULTI}/pkgconfig")
- ENDIF(NOT PKG_CONFIG_NO_MULTI STREQUAL PKG_CONFIG_NO_MULTI-NOTFOUND)
+ ENDIF(NOT PKG_CONFIG_NO_MULTI STREQUAL PKG_CONFIG_NO_MULTI-NOTFOUND)
- IF(NOT PKG_CONFIG_NO_MULTI_LOCAL STREQUAL PKG_CONFIG_NO_MULTI_LOCAL-NOTFOUND)
+ IF(NOT PKG_CONFIG_NO_MULTI_LOCAL STREQUAL PKG_CONFIG_NO_MULTI_LOCAL-NOTFOUND)
SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_NO_MULTI_LOCAL}/pkgconfig")
- ENDIF(NOT PKG_CONFIG_NO_MULTI_LOCAL STREQUAL PKG_CONFIG_NO_MULTI_LOCAL-NOTFOUND)
+ ENDIF(NOT PKG_CONFIG_NO_MULTI_LOCAL STREQUAL PKG_CONFIG_NO_MULTI_LOCAL-NOTFOUND)
# Also add some non-architecture specific package locations.
SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:/usr/share/pkgconfig:/usr/local/share/pkgconfig")
diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake
index 9f79c13a97..6ac00fd131 100644
--- a/indra/cmake/Copy3rdPartyLibs.cmake
+++ b/indra/cmake/Copy3rdPartyLibs.cmake
@@ -7,7 +7,6 @@
include(CMakeCopyIfDifferent)
include(Linking)
include(OPENAL)
-include(FMODSTUDIO)
# When we copy our dependent libraries, we almost always want to copy them to
# both the Release and the RelWithDebInfo staging directories. This has
@@ -50,35 +49,17 @@ if(WINDOWS)
endif (ADDRESS_SIZE EQUAL 64)
#*******************************
- # Misc shared libs
+ # Misc shared libs
set(release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
set(release_files
openjp2.dll
- libapr-1.dll
- libaprutil-1.dll
- nghttp2.dll
- libhunspell.dll
- uriparser.dll
)
- # ICU4C (same filenames for 32 and 64 bit builds)
- set(release_files ${release_files} icudt48.dll)
- set(release_files ${release_files} icuin48.dll)
- set(release_files ${release_files} icuio48.dll)
- set(release_files ${release_files} icule48.dll)
- set(release_files ${release_files} iculx48.dll)
- set(release_files ${release_files} icutu48.dll)
- set(release_files ${release_files} icuuc48.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)
+ if(LLCOMMON_LINK_SHARED)
+ set(release_files ${release_files} libapr-1.dll)
+ set(release_files ${release_files} libaprutil-1.dll)
+ endif()
# Filenames are different for 32/64 bit BugSplat file and we don't
# have any control over them so need to branch.
@@ -94,12 +75,6 @@ if(WINDOWS)
endif(ADDRESS_SIZE EQUAL 32)
endif (USE_BUGSPLAT)
- if (TARGET ll::fmodstudio)
- # fmodL is included for logging, only one should be picked by manifest
- set(release_files ${release_files} fmodL.dll)
- set(release_files ${release_files} fmod.dll)
- endif ()
-
if (TARGET ll::openal)
list(APPEND release_files openal32.dll alut.dll)
endif ()
@@ -114,14 +89,27 @@ if(WINDOWS)
set(MSVC_VER 120)
elseif (MSVC_VERSION GREATER_EQUAL 1910 AND MSVC_VERSION LESS 1920) # Visual Studio 2017
set(MSVC_VER 140)
+ set(MSVC_TOOLSET_VER 141)
elseif (MSVC_VERSION GREATER_EQUAL 1920 AND MSVC_VERSION LESS 1930) # Visual Studio 2019
set(MSVC_VER 140)
- elseif (MSVC_VERSION GREATER_EQUAL 1930 AND MSVC_VERSION LESS 1940) # Visual Studio 2022
+ set(MSVC_TOOLSET_VER 142)
+ elseif (MSVC_VERSION GREATER_EQUAL 1930 AND MSVC_VERSION LESS 1950) # Visual Studio 2022
set(MSVC_VER 140)
+ set(MSVC_TOOLSET_VER 143)
else (MSVC80)
MESSAGE(WARNING "New MSVC_VERSION ${MSVC_VERSION} of MSVC: adapt Copy3rdPartyLibs.cmake")
endif (MSVC80)
+ if (MSVC_TOOLSET_VER AND DEFINED ENV{VCTOOLSREDISTDIR})
+ if(ADDRESS_SIZE EQUAL 32)
+ set(redist_find_path "$ENV{VCTOOLSREDISTDIR}x86\\Microsoft.VC${MSVC_TOOLSET_VER}.CRT")
+ else(ADDRESS_SIZE EQUAL 32)
+ set(redist_find_path "$ENV{VCTOOLSREDISTDIR}x64\\Microsoft.VC${MSVC_TOOLSET_VER}.CRT")
+ endif(ADDRESS_SIZE EQUAL 32)
+ get_filename_component(redist_path "${redist_find_path}" ABSOLUTE)
+ MESSAGE(STATUS "VC Runtime redist path: ${redist_path}")
+ endif (MSVC_TOOLSET_VER AND DEFINED ENV{VCTOOLSREDISTDIR})
+
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")
@@ -140,11 +128,23 @@ if(WINDOWS)
# Check each of them.
foreach(release_msvc_file
msvcp${MSVC_VER}.dll
+ msvcp${MSVC_VER}_1.dll
+ msvcp${MSVC_VER}_2.dll
+ msvcp${MSVC_VER}_atomic_wait.dll
+ msvcp${MSVC_VER}_codecvt_ids.dll
msvcr${MSVC_VER}.dll
vcruntime${MSVC_VER}.dll
vcruntime${MSVC_VER}_1.dll
+ vcruntime${MSVC_VER}_threads.dll
)
- if(EXISTS "${registry_path}/${release_msvc_file}")
+ if(redist_path AND EXISTS "${redist_path}/${release_msvc_file}")
+ MESSAGE(STATUS "Copying redist file from ${redist_path}/${release_msvc_file}")
+ to_staging_dirs(
+ ${redist_path}
+ third_party_targets
+ ${release_msvc_file})
+ elseif(EXISTS "${registry_path}/${release_msvc_file}")
+ MESSAGE(STATUS "Copying redist file from ${registry_path}/${release_msvc_file}")
to_staging_dirs(
${registry_path}
third_party_targets
@@ -155,10 +155,6 @@ if(WINDOWS)
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(vivox_lib_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
@@ -172,23 +168,20 @@ elseif(DARWIN)
)
set(release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
set(release_files
- libapr-1.0.dylib
- libapr-1.dylib
- libaprutil-1.0.dylib
- libaprutil-1.dylib
- ${EXPAT_COPY}
- libhunspell-1.3.0.dylib
libndofdev.dylib
- libnghttp2.dylib
- libnghttp2.14.dylib
- liburiparser.dylib
- liburiparser.1.dylib
- liburiparser.1.0.27.dylib
)
- if (TARGET ll::fmodstudio)
- set(debug_files ${debug_files} libfmodL.dylib)
- set(release_files ${release_files} libfmod.dylib)
+ if(LLCOMMON_LINK_SHARED)
+ set(release_files ${release_files}
+ libapr-1.0.dylib
+ libapr-1.dylib
+ libaprutil-1.0.dylib
+ libaprutil-1.dylib
+ )
+ endif()
+
+ if (TARGET ll::openal)
+ list(APPEND release_files libalut.dylib libopenal.dylib)
endif ()
elseif(LINUX)
@@ -217,17 +210,13 @@ elseif(LINUX)
set(release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
# *FIX - figure out what to do with duplicate libalut.so here -brad
set(release_files
- ${EXPAT_COPY}
- )
+ )
if( USE_AUTOBUILD_3P )
list( APPEND release_files
- libapr-1.so.0
- libaprutil-1.so.0
libatk-1.0.so
libfreetype.so.6.6.2
libfreetype.so.6
- libhunspell-1.3.so.0.0.0
libopenjp2.so
libuuid.so.16
libuuid.so.16.0.22
@@ -236,12 +225,14 @@ elseif(LINUX)
libgmodule-2.0.so
libgobject-2.0.so
)
- endif()
- if (TARGET ll::fmodstudio)
- set(debug_files ${debug_files} "libfmodL.so")
- set(release_files ${release_files} "libfmod.so")
- endif ()
+ if(LLCOMMON_LINK_SHARED)
+ set(release_files ${release_files}
+ libapr-1.so.0
+ libaprutil-1.so.0
+ )
+ endif()
+ endif()
else(WINDOWS)
message(STATUS "WARNING: unrecognized platform for staging 3rd party libs, skipping...")
diff --git a/indra/cmake/DeploySharedLibs.cmake b/indra/cmake/DeploySharedLibs.cmake
index 9d6cf0cb35..fe9ffcd8f1 100644
--- a/indra/cmake/DeploySharedLibs.cmake
+++ b/indra/cmake/DeploySharedLibs.cmake
@@ -5,7 +5,7 @@
# This script requires a few cmake variable to be set on the command line:
# BIN_NAME= The full path the the binary to search for dependecies.
# SEARCH_DIRS= The full paths to dirs to search for dependencies.
-# DST_PATH= The full path where the dependecies will be copied.
+# DST_PATH= The full path where the dependecies will be copied.
include(GetPrerequisites)
diff --git a/indra/cmake/EXPAT.cmake b/indra/cmake/EXPAT.cmake
index 327fe8aa72..1a0b8789dc 100644
--- a/indra/cmake/EXPAT.cmake
+++ b/indra/cmake/EXPAT.cmake
@@ -7,14 +7,13 @@ add_library( ll::expat INTERFACE IMPORTED )
use_system_binary(expat)
use_prebuilt_binary(expat)
if (WINDOWS)
- target_link_libraries( ll::expat INTERFACE libexpatMT )
- set(EXPAT_COPY libexpatMT.dll)
-else (WINDOWS)
- target_link_libraries( ll::expat INTERFACE expat )
- if (DARWIN)
- set(EXPAT_COPY libexpat.1.dylib libexpat.dylib)
- else ()
- set(EXPAT_COPY libexpat.so.1 libexpat.so)
- endif ()
-endif (WINDOWS)
+ target_compile_definitions( ll::expat INTERFACE XML_STATIC=1)
+ target_link_libraries( ll::expat INTERFACE
+ debug ${ARCH_PREBUILT_DIRS_DEBUG}/libexpatd.lib
+ optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libexpat.lib)
+else ()
+ target_link_libraries( ll::expat INTERFACE
+ debug ${ARCH_PREBUILT_DIRS_DEBUG}/libexpat.a
+ optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libexpat.a)
+endif ()
target_include_directories( ll::expat SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include )
diff --git a/indra/cmake/FMODSTUDIO.cmake b/indra/cmake/FMODSTUDIO.cmake
deleted file mode 100644
index 9a1cdff6cb..0000000000
--- a/indra/cmake/FMODSTUDIO.cmake
+++ /dev/null
@@ -1,48 +0,0 @@
-# -*- cmake -*-
-
-include_guard()
-
-# FMODSTUDIO can be set when launching the make using the argument -DUSE_FMODSTUDIO: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(USE_FMODSTUDIO ON CACHE BOOL "Using FMODSTUDIO sound library.")
-endif (INSTALL_PROPRIETARY)
-
-# ND: To streamline arguments passed, switch from FMODSTUDIO to USE_FMODSTUDIO
-# To not break all old build scripts convert old arguments but warn about it
-if(FMODSTUDIO)
- message( WARNING "Use of the FMODSTUDIO argument is deprecated, please switch to USE_FMODSTUDIO")
- set(USE_FMODSTUDIO ${FMODSTUDIO})
-endif()
-
-if (USE_FMODSTUDIO)
- add_library( ll::fmodstudio INTERFACE IMPORTED )
- target_compile_definitions( ll::fmodstudio INTERFACE LL_FMODSTUDIO=1)
-
- if (FMODSTUDIO_LIBRARY AND FMODSTUDIO_INCLUDE_DIR)
- # If the path have been specified in the arguments, use that
-
- target_link_libraries(ll::fmodstudio INTERFACE ${FMODSTUDIO_LIBRARY})
- target_include_directories( ll::fmodstudio SYSTEM INTERFACE ${FMODSTUDIO_INCLUDE_DIR})
- 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)
- target_link_libraries( ll::fmodstudio INTERFACE fmod_vc)
- elseif (DARWIN)
- #despite files being called libfmod.dylib, we are searching for fmod
- target_link_libraries( ll::fmodstudio INTERFACE fmod)
- elseif (LINUX)
- target_link_libraries( ll::fmodstudio INTERFACE fmod)
- endif (WINDOWS)
-
- target_include_directories( ll::fmodstudio SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/fmodstudio)
- endif (FMODSTUDIO_LIBRARY AND FMODSTUDIO_INCLUDE_DIR)
-else()
- set( USE_FMODSTUDIO "OFF")
-endif ()
-
diff --git a/indra/cmake/FindAutobuild.cmake b/indra/cmake/FindAutobuild.cmake
index ea5ad6d108..79287d4e01 100644
--- a/indra/cmake/FindAutobuild.cmake
+++ b/indra/cmake/FindAutobuild.cmake
@@ -22,11 +22,11 @@ IF (NOT AUTOBUILD_EXECUTABLE)
SET(AUTOBUILD_EXECUTABLE)
FIND_PROGRAM(
- AUTOBUILD_EXECUTABLE
+ AUTOBUILD_EXECUTABLE
NAMES ${AUTOBUILD_EXE_NAMES}
- PATHS
+ PATHS
ENV PATH
- ${CMAKE_SOURCE_DIR}/..
+ ${CMAKE_SOURCE_DIR}/..
${CMAKE_SOURCE_DIR}/../..
${CMAKE_SOURCE_DIR}/../../..
PATH_SUFFIXES "/autobuild/bin/"
diff --git a/indra/cmake/FreeType.cmake b/indra/cmake/FreeType.cmake
index 77140af641..563491556d 100644
--- a/indra/cmake/FreeType.cmake
+++ b/indra/cmake/FreeType.cmake
@@ -1,5 +1,6 @@
# -*- cmake -*-
include(Prebuilt)
+include(Linking)
include_guard()
add_library( ll::freetype INTERFACE IMPORTED )
@@ -7,5 +8,10 @@ add_library( ll::freetype INTERFACE IMPORTED )
use_system_binary(freetype)
use_prebuilt_binary(freetype)
target_include_directories( ll::freetype SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/freetype2/)
-target_link_libraries( ll::freetype INTERFACE freetype )
+
+if (WINDOWS)
+ target_link_libraries( ll::freetype INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/freetype.lib)
+else()
+ target_link_libraries( ll::freetype INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libfreetype.a)
+endif()
diff --git a/indra/cmake/GLM.cmake b/indra/cmake/GLM.cmake
new file mode 100644
index 0000000000..84b155f6c5
--- /dev/null
+++ b/indra/cmake/GLM.cmake
@@ -0,0 +1,7 @@
+# -*- cmake -*-
+include(Prebuilt)
+
+add_library( ll::glm INTERFACE IMPORTED )
+
+use_system_binary( glm )
+use_prebuilt_binary(glm)
diff --git a/indra/cmake/GoogleMock.cmake b/indra/cmake/GoogleMock.cmake
deleted file mode 100644
index e4520fe96e..0000000000
--- a/indra/cmake/GoogleMock.cmake
+++ /dev/null
@@ -1,32 +0,0 @@
-# -*- cmake -*-
-include(Prebuilt)
-include(Linking)
-
-include_guard()
-
-add_library( ll::googlemock INTERFACE IMPORTED )
-if(USE_CONAN)
- target_link_libraries( ll::googlemock INTERFACE CONAN_PKG::gtest )
-
- #Not very nice, but for the moment we need this for tut.hpp
- target_include_directories( ll::googlemock SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include )
- return()
-endif()
-
-use_prebuilt_binary(googlemock)
-
-target_include_directories( ll::googlemock SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include )
-
-if (LINUX)
- # VWR-24366: gmock is underlinked, it needs gtest.
- target_link_libraries( ll::googlemock INTERFACE gmock gtest)
-elseif(WINDOWS)
- target_link_libraries( ll::googlemock INTERFACE gmock)
- target_include_directories( ll::googlemock SYSTEM INTERFACE
- ${LIBS_PREBUILT_DIR}/include
- ${LIBS_PREBUILT_DIR}/include/gmock)
-elseif(DARWIN)
- target_link_libraries( ll::googlemock INTERFACE gmock gtest)
-endif(LINUX)
-
-
diff --git a/indra/cmake/Havok.cmake b/indra/cmake/Havok.cmake
index 652760e626..c544440adc 100644
--- a/indra/cmake/Havok.cmake
+++ b/indra/cmake/Havok.cmake
@@ -77,7 +77,7 @@ foreach(HAVOK_LIB ${HAVOK_LIBS})
find_library(HAVOK_DEBUG_LIB_${HAVOK_LIB} ${HAVOK_LIB} PATHS ${HAVOK_DEBUG_LIBRARY_PATH})
find_library(HAVOK_RELEASE_LIB_${HAVOK_LIB} ${HAVOK_LIB} PATHS ${HAVOK_RELEASE_LIBRARY_PATH})
find_library(HAVOK_RELWITHDEBINFO_LIB_${HAVOK_LIB} ${HAVOK_LIB} PATHS ${HAVOK_RELWITHDEBINFO_LIBRARY_PATH})
-
+
if(LINUX)
set(debug_dir "${HAVOK_DEBUG_LIBRARY_PATH}/${HAVOK_LIB}")
set(release_dir "${HAVOK_RELEASE_LIBRARY_PATH}/${HAVOK_LIB}")
diff --git a/indra/cmake/Hunspell.cmake b/indra/cmake/Hunspell.cmake
index bb037c0237..129679febd 100644
--- a/indra/cmake/Hunspell.cmake
+++ b/indra/cmake/Hunspell.cmake
@@ -1,4 +1,5 @@
# -*- cmake -*-
+include(Linking)
include(Prebuilt)
include_guard()
@@ -8,10 +9,16 @@ add_library( ll::hunspell INTERFACE IMPORTED )
use_system_binary(hunspell)
use_prebuilt_binary(libhunspell)
if (WINDOWS)
- target_link_libraries( ll::hunspell INTERFACE libhunspell)
+ target_compile_definitions( ll::hunspell INTERFACE HUNSPELL_STATIC=1)
+ target_link_libraries( ll::hunspell INTERFACE
+ debug ${ARCH_PREBUILT_DIRS_DEBUG}/libhunspell.lib
+ optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libhunspell.lib
+ )
elseif(DARWIN)
- target_link_libraries( ll::hunspell INTERFACE hunspell-1.3)
+ target_link_libraries( ll::hunspell INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libhunspell-1.7.a
+ )
elseif(LINUX)
- target_link_libraries( ll::hunspell INTERFACE hunspell-1.3)
+ target_link_libraries( ll::hunspell INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libhunspell-1.7.a
+ )
endif()
target_include_directories( ll::hunspell SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/hunspell)
diff --git a/indra/cmake/ICU4C.cmake b/indra/cmake/ICU4C.cmake
deleted file mode 100644
index 7b27665483..0000000000
--- a/indra/cmake/ICU4C.cmake
+++ /dev/null
@@ -1,23 +0,0 @@
-# -*- cmake -*-
-include(Prebuilt)
-
-include_guard()
-
-add_library( ll::icu4c INTERFACE IMPORTED )
-
-
-use_system_binary(icu4c)
-use_prebuilt_binary(icu4c)
-if (WINDOWS)
- target_link_libraries( ll::icu4c INTERFACE icuuc)
-elseif(DARWIN)
- target_link_libraries( ll::icu4c INTERFACE icuuc)
-#elseif(LINUX)
-## target_link_libraries( ll::icu4c INTERFACE )
-else()
- message(FATAL_ERROR "Invalid platform")
-endif()
-
-target_include_directories( ll::icu4c SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/unicode )
-
-use_prebuilt_binary(dictionaries)
diff --git a/indra/cmake/JPEG.cmake b/indra/cmake/JPEG.cmake
index 252d7852d4..ade5a070cc 100644
--- a/indra/cmake/JPEG.cmake
+++ b/indra/cmake/JPEG.cmake
@@ -7,12 +7,14 @@ include_guard()
add_library( ll::libjpeg INTERFACE IMPORTED )
use_system_binary(libjpeg)
-use_prebuilt_binary(jpeglib)
+use_prebuilt_binary(libjpeg-turbo)
if (LINUX)
- target_link_libraries( ll::libjpeg INTERFACE jpeg)
+ target_link_libraries( ll::libjpeg INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libjpeg.a)
elseif (DARWIN)
- target_link_libraries( ll::libjpeg INTERFACE jpeg)
+ target_link_libraries( ll::libjpeg INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libjpeg.a)
elseif (WINDOWS)
- target_link_libraries( ll::libjpeg INTERFACE jpeglib)
+ target_link_libraries( ll::libjpeg INTERFACE
+ debug ${ARCH_PREBUILT_DIRS_DEBUG}/jpeg.lib
+ optimized ${ARCH_PREBUILT_DIRS_RELEASE}/jpeg.lib)
endif (LINUX)
target_include_directories( ll::libjpeg SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include)
diff --git a/indra/cmake/JsonCpp.cmake b/indra/cmake/JsonCpp.cmake
deleted file mode 100644
index 17f8e47a97..0000000000
--- a/indra/cmake/JsonCpp.cmake
+++ /dev/null
@@ -1,17 +0,0 @@
-# -*- cmake -*-
-
-include(Prebuilt)
-include_guard()
-add_library( ll::jsoncpp INTERFACE IMPORTED )
-
-use_system_binary(jsoncpp)
-
-use_prebuilt_binary(jsoncpp)
-if (WINDOWS)
- target_link_libraries( ll::jsoncpp INTERFACE json_libmd.lib )
-elseif (DARWIN)
- target_link_libraries( ll::jsoncpp INTERFACE libjson_darwin_libmt.a )
-elseif (LINUX)
- target_link_libraries( ll::jsoncpp INTERFACE libjson_linux-gcc-4.1.3_libmt.a )
-endif (WINDOWS)
-target_include_directories( ll::jsoncpp SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include)
diff --git a/indra/cmake/LLAddBuildTest.cmake b/indra/cmake/LLAddBuildTest.cmake
index 2172b56da2..6408f1200c 100644
--- a/indra/cmake/LLAddBuildTest.cmake
+++ b/indra/cmake/LLAddBuildTest.cmake
@@ -1,7 +1,6 @@
# -*- cmake -*-
include(00-Common)
include(LLTestCommand)
-include(GoogleMock)
include(bugsplat)
include(Tut)
@@ -19,10 +18,6 @@ MACRO(LL_ADD_PROJECT_UNIT_TESTS project sources)
#
# More info and examples at: https://wiki.secondlife.com/wiki/How_to_add_unit_tests_to_indra_code
- # This here looks weird, but is needed. It will inject GoogleMock into projects that forgot to include `this` (LLAddBuildTest.cmake)
- # But through some other means have access to this macro
- include(GoogleMock)
-
if(LL_TEST_VERBOSE)
message("LL_ADD_PROJECT_UNIT_TESTS UNITTEST_PROJECT_${project} sources: ${sources}")
endif()
@@ -41,7 +36,6 @@ MACRO(LL_ADD_PROJECT_UNIT_TESTS project sources)
set(alltest_LIBRARIES
llcommon
- ll::googlemock
)
if(NOT "${project}" STREQUAL "llmath")
# add llmath as a dep unless the tested module *is* llmath!
@@ -204,7 +198,6 @@ FUNCTION(LL_ADD_INTEGRATION_TEST
set(libraries
${library_dependencies}
- ll::googlemock
)
# Add test executable build target
diff --git a/indra/cmake/LLCommon.cmake b/indra/cmake/LLCommon.cmake
index 869d5805f2..dd43ca4916 100644
--- a/indra/cmake/LLCommon.cmake
+++ b/indra/cmake/LLCommon.cmake
@@ -6,6 +6,3 @@ include(EXPAT)
include(Tracy)
include(xxHash)
include(ZLIBNG)
-include(JsonCpp)
-
-include(XmlRpcEpi)
diff --git a/indra/cmake/LLKDU.cmake b/indra/cmake/LLKDU.cmake
index fda25610da..668b07ffab 100644
--- a/indra/cmake/LLKDU.cmake
+++ b/indra/cmake/LLKDU.cmake
@@ -1,7 +1,7 @@
# -*- cmake -*-
# USE_KDU can be set when launching cmake as an option using the argument -DUSE_KDU:BOOL=ON
-# When building using proprietary binaries though (i.e. having access to LL private servers),
+# When building using proprietary binaries though (i.e. having access to LL private servers),
# we always build with KDU
if (INSTALL_PROPRIETARY)
set(USE_KDU ON CACHE BOOL "Use Kakadu library.")
diff --git a/indra/cmake/LLPhysicsExtensions.cmake b/indra/cmake/LLPhysicsExtensions.cmake
index 36821447c9..80d243d9f8 100644
--- a/indra/cmake/LLPhysicsExtensions.cmake
+++ b/indra/cmake/LLPhysicsExtensions.cmake
@@ -3,7 +3,7 @@ include(Prebuilt)
# There are three possible solutions to provide the llphysicsextensions:
# - The full source package, selected by -DHAVOK:BOOL=ON
-# - The stub source package, selected by -DHAVOK:BOOL=OFF
+# - The stub source package, selected by -DHAVOK:BOOL=OFF
# - The prebuilt package available to those with sublicenses, selected by -DHAVOK_TPV:BOOL=ON
if (INSTALL_PROPRIETARY)
diff --git a/indra/cmake/LLPrimitive.cmake b/indra/cmake/LLPrimitive.cmake
index 3d8499cbc3..d0a52ffb63 100644
--- a/indra/cmake/LLPrimitive.cmake
+++ b/indra/cmake/LLPrimitive.cmake
@@ -2,11 +2,11 @@
# these should be moved to their own cmake file
include(Prebuilt)
+include(Linking)
include(Boost)
include_guard()
-add_library( ll::pcre INTERFACE IMPORTED )
add_library( ll::minizip-ng INTERFACE IMPORTED )
add_library( ll::libxml INTERFACE IMPORTED )
add_library( ll::colladadom INTERFACE IMPORTED )
@@ -14,7 +14,7 @@ add_library( ll::colladadom INTERFACE IMPORTED )
# ND, needs fixup in collada conan pkg
if( USE_CONAN )
target_include_directories( ll::colladadom SYSTEM INTERFACE
- "${CONAN_INCLUDE_DIRS_COLLADADOM}/collada-dom/"
+ "${CONAN_INCLUDE_DIRS_COLLADADOM}/collada-dom/"
"${CONAN_INCLUDE_DIRS_COLLADADOM}/collada-dom/1.4/" )
endif()
@@ -22,21 +22,18 @@ use_system_binary( colladadom )
use_prebuilt_binary(colladadom)
use_prebuilt_binary(minizip-ng) # needed for colladadom
-use_prebuilt_binary(pcre)
use_prebuilt_binary(libxml2)
-target_link_libraries( ll::pcre INTERFACE pcrecpp pcre )
-
if (WINDOWS)
- target_link_libraries( ll::minizip-ng INTERFACE libminizip )
+ target_link_libraries( ll::minizip-ng INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/minizip.lib )
else()
- target_link_libraries( ll::minizip-ng INTERFACE minizip )
+ target_link_libraries( ll::minizip-ng INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libminizip.a )
endif()
if (WINDOWS)
- target_link_libraries( ll::libxml INTERFACE libxml2_a)
+ target_link_libraries( ll::libxml INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libxml2.lib Bcrypt.lib)
else()
- target_link_libraries( ll::libxml INTERFACE xml2)
+ target_link_libraries( ll::libxml INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libxml2.a)
endif()
target_include_directories( ll::colladadom SYSTEM INTERFACE
@@ -44,9 +41,9 @@ target_include_directories( ll::colladadom SYSTEM INTERFACE
${LIBS_PREBUILT_DIR}/include/collada/1.4
)
if (WINDOWS)
- target_link_libraries(ll::colladadom INTERFACE libcollada14dom23-s ll::libxml ll::minizip-ng )
+ target_link_libraries(ll::colladadom INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libcollada14dom23-s.lib ll::libxml ll::minizip-ng )
elseif (DARWIN)
- target_link_libraries(ll::colladadom INTERFACE collada14dom ll::libxml ll::minizip-ng)
+ target_link_libraries(ll::colladadom INTERFACE collada14dom ll::boost ll::libxml ll::minizip-ng)
elseif (LINUX)
- target_link_libraries(ll::colladadom INTERFACE collada14dom ll::libxml ll::minizip-ng)
+ target_link_libraries(ll::colladadom INTERFACE collada14dom ll::boost ll::libxml ll::minizip-ng)
endif()
diff --git a/indra/cmake/LLSharedLibs.cmake b/indra/cmake/LLSharedLibs.cmake
index e3e2a3b0c6..48149129d6 100644
--- a/indra/cmake/LLSharedLibs.cmake
+++ b/indra/cmake/LLSharedLibs.cmake
@@ -1,6 +1,6 @@
# ll_deploy_sharedlibs_command
# target_exe: the cmake target of the executable for which the shared libs will be deployed.
-macro(ll_deploy_sharedlibs_command target_exe)
+macro(ll_deploy_sharedlibs_command target_exe)
set(TARGET_LOCATION $<TARGET_FILE:${target_exe}>)
get_filename_component(OUTPUT_PATH ${TARGET_LOCATION} PATH)
@@ -26,7 +26,7 @@ macro(ll_deploy_sharedlibs_command target_exe)
add_custom_command(
TARGET ${target_exe} POST_BUILD
- COMMAND ${CMAKE_COMMAND}
+ COMMAND ${CMAKE_COMMAND}
ARGS
"-DBIN_NAME=\"${TARGET_LOCATION}\""
"-DSEARCH_DIRS=\"${SEARCH_DIRS}\""
diff --git a/indra/cmake/LLWindow.cmake b/indra/cmake/LLWindow.cmake
index b36e970560..2e1b601b79 100644
--- a/indra/cmake/LLWindow.cmake
+++ b/indra/cmake/LLWindow.cmake
@@ -14,7 +14,7 @@ if (LINUX)
use_system_binary(SDL)
use_prebuilt_binary(SDL)
-
+
target_include_directories( ll::SDL SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include)
target_link_libraries( ll::SDL INTERFACE SDL directfb fusion direct X11)
endif (LINUX)
diff --git a/indra/cmake/Linking.cmake b/indra/cmake/Linking.cmake
index 1ce21c11f9..1d757abeff 100644
--- a/indra/cmake/Linking.cmake
+++ b/indra/cmake/Linking.cmake
@@ -11,7 +11,7 @@ if (WINDOWS OR DARWIN )
# Kludge for older cmake versions, 3.20+ is needed to use a genex in add_custom_command( OUTPUT <var> ... )
# Using this will work okay-ish, as Debug is not supported anyway. But for property multi config and also
# ninja support the genex version is preferred.
- if(${CMAKE_VERSION} VERSION_LESS "3.20.0")
+ if(${CMAKE_VERSION} VERSION_LESS "3.20.0")
if(CMAKE_BUILD_TYPE MATCHES Release)
set(SHARED_LIB_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs/Release)
elseif (CMAKE_BUILD_TYPE MATCHES RelWithDebInfo)
@@ -19,6 +19,7 @@ if (WINDOWS OR DARWIN )
endif()
else()
set(SHARED_LIB_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs/$<IF:$<BOOL:${LL_GENERATOR_IS_MULTI_CONFIG}>,$<CONFIG>,>)
+ set(SYMBOLS_STAGING_DIR ${CMAKE_BINARY_DIR}/symbols/$<IF:$<BOOL:${LL_GENERATOR_IS_MULTI_CONFIG}>,$<CONFIG>,>/${VIEWER_CHANNEL})
endif()
if( DARWIN )
diff --git a/indra/cmake/NGHTTP2.cmake b/indra/cmake/NGHTTP2.cmake
index 6396a5bd01..7b2aa5971f 100644
--- a/indra/cmake/NGHTTP2.cmake
+++ b/indra/cmake/NGHTTP2.cmake
@@ -8,9 +8,7 @@ use_system_binary(nghttp2)
use_prebuilt_binary(nghttp2)
if (WINDOWS)
target_link_libraries( ll::nghttp2 INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/nghttp2.lib)
-elseif (DARWIN)
- target_link_libraries( ll::nghttp2 INTERFACE libnghttp2.dylib)
-else (WINDOWS)
- target_link_libraries( ll::nghttp2 INTERFACE libnghttp2.a )
-endif (WINDOWS)
+else ()
+ target_link_libraries( ll::nghttp2 INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libnghttp2.a)
+endif ()
target_include_directories( ll::nghttp2 SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/nghttp2)
diff --git a/indra/cmake/OPENAL.cmake b/indra/cmake/OPENAL.cmake
index 0b6a7c2853..347dd02cd7 100644
--- a/indra/cmake/OPENAL.cmake
+++ b/indra/cmake/OPENAL.cmake
@@ -33,6 +33,9 @@ if (USE_OPENAL)
alut
)
else()
- message(FATAL_ERROR "OpenAL is not available for this platform")
+ target_link_libraries( ll::openal INTERFACE
+ openal
+ alut
+ )
endif()
endif ()
diff --git a/indra/cmake/OpenSSL.cmake b/indra/cmake/OpenSSL.cmake
index 3387c74f45..67a84e14af 100644
--- a/indra/cmake/OpenSSL.cmake
+++ b/indra/cmake/OpenSSL.cmake
@@ -1,5 +1,6 @@
# -*- cmake -*-
include(Prebuilt)
+include(Linking)
include_guard()
add_library( ll::openssl INTERFACE IMPORTED )
@@ -7,9 +8,9 @@ add_library( ll::openssl INTERFACE IMPORTED )
use_system_binary(openssl)
use_prebuilt_binary(openssl)
if (WINDOWS)
- target_link_libraries(ll::openssl INTERFACE libssl libcrypto)
+ target_link_libraries(ll::openssl INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libssl.lib ${ARCH_PREBUILT_DIRS_RELEASE}/libcrypto.lib Crypt32.lib)
elseif (LINUX)
- target_link_libraries(ll::openssl INTERFACE ssl crypto dl)
+ target_link_libraries(ll::openssl INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libssl.a ${ARCH_PREBUILT_DIRS_RELEASE}/libcrypto.a dl)
else()
target_link_libraries(ll::openssl INTERFACE ssl crypto)
endif (WINDOWS)
diff --git a/indra/cmake/OpenXR.cmake b/indra/cmake/OpenXR.cmake
new file mode 100644
index 0000000000..2cc862b927
--- /dev/null
+++ b/indra/cmake/OpenXR.cmake
@@ -0,0 +1,22 @@
+# -*- cmake -*-
+
+include(Prebuilt)
+
+include_guard()
+add_library( ll::openxr INTERFACE IMPORTED )
+
+if(USE_CONAN )
+ target_link_libraries( ll::openxr INTERFACE CONAN_PKG::openxr )
+ return()
+endif()
+
+use_prebuilt_binary(openxr)
+if (WINDOWS)
+ target_link_libraries( ll::openxr INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/openxr_loader.lib )
+else()
+ target_link_libraries( ll::openxr INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libopenxr_loader.a )
+endif (WINDOWS)
+
+if( NOT LINUX )
+ target_include_directories( ll::openxr SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include)
+endif()
diff --git a/indra/cmake/PNG.cmake b/indra/cmake/PNG.cmake
index 044262bc8d..e5893e9a20 100644
--- a/indra/cmake/PNG.cmake
+++ b/indra/cmake/PNG.cmake
@@ -7,8 +7,8 @@ add_library( ll::libpng INTERFACE IMPORTED )
use_system_binary(libpng)
use_prebuilt_binary(libpng)
if (WINDOWS)
- target_link_libraries(ll::libpng INTERFACE libpng16)
+ target_link_libraries(ll::libpng INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libpng16.lib)
else()
- target_link_libraries(ll::libpng INTERFACE png16 )
+ target_link_libraries(ll::libpng INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libpng16.a)
endif()
target_include_directories( ll::libpng SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/libpng16)
diff --git a/indra/cmake/TinyEXR.cmake b/indra/cmake/TinyEXR.cmake
new file mode 100644
index 0000000000..e741c07f6e
--- /dev/null
+++ b/indra/cmake/TinyEXR.cmake
@@ -0,0 +1,7 @@
+# -*- cmake -*-
+include(Prebuilt)
+
+use_prebuilt_binary(tinyexr)
+
+set(TINYEXR_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/tinyexr)
+
diff --git a/indra/cmake/TinyGLTF.cmake b/indra/cmake/TinyGLTF.cmake
index bb731637a0..92b2de309f 100644
--- a/indra/cmake/TinyGLTF.cmake
+++ b/indra/cmake/TinyGLTF.cmake
@@ -3,5 +3,5 @@ include(Prebuilt)
use_prebuilt_binary(tinygltf)
-set(TINYGLTF_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/tinygltf)
+set(TINYGLTF_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/tinygltf)
diff --git a/indra/cmake/Tracy.cmake b/indra/cmake/Tracy.cmake
index 32c02edb93..a7eac2711f 100644
--- a/indra/cmake/Tracy.cmake
+++ b/indra/cmake/Tracy.cmake
@@ -4,14 +4,37 @@ include(Prebuilt)
include_guard()
add_library( ll::tracy INTERFACE IMPORTED )
-set(USE_TRACY OFF CACHE BOOL "Use Tracy profiler.")
+# default Tracy profiling on for test builds, but off for all others
+string(TOLOWER ${VIEWER_CHANNEL} channel_lower)
+if(channel_lower MATCHES "^second life test")
+ option(USE_TRACY "Use Tracy profiler." ON)
+else()
+ option(USE_TRACY "Use Tracy profiler." OFF)
+endif()
if (USE_TRACY)
+ option(USE_TRACY_ON_DEMAND "Use on-demand Tracy profiling." ON)
+ option(USE_TRACY_LOCAL_ONLY "Disallow remote Tracy profiling." OFF)
+
use_system_binary(tracy)
use_prebuilt_binary(tracy)
target_include_directories( ll::tracy SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/tracy)
- target_link_libraries( ll::tracy INTERFACE TracyClient )
+
+ target_compile_definitions(ll::tracy INTERFACE -DTRACY_ENABLE=1 -DTRACY_ONLY_IPV4=1)
+
+ if (USE_TRACY_ON_DEMAND)
+ target_compile_definitions(ll::tracy INTERFACE -DTRACY_ON_DEMAND=1)
+ endif ()
+
+ if (USE_TRACY_LOCAL_ONLY)
+ target_compile_definitions(ll::tracy INTERFACE -DTRACY_NO_BROADCAST=1 -DTRACY_ONLY_LOCALHOST=1)
+ endif ()
+
+ # GHA runners don't always provide invariant TSC support, but always build with LL_TESTS enabled
+ if (DARWIN AND LL_TESTS)
+ target_compile_definitions(ll::tracy INTERFACE -DTRACY_TIMER_FALLBACK=1)
+ endif ()
# See: indra/llcommon/llprofiler.h
add_compile_definitions(LL_PROFILER_CONFIGURATION=3)
diff --git a/indra/cmake/UI.cmake b/indra/cmake/UI.cmake
index 8b70192efc..8f135676d6 100644
--- a/indra/cmake/UI.cmake
+++ b/indra/cmake/UI.cmake
@@ -12,7 +12,7 @@ if (LINUX)
return()
endif()
use_prebuilt_binary(gtk-atk-pango-glib)
-
+
target_link_libraries( ll::uilibraries INTERFACE
atk-1.0
gdk-x11-2.0
diff --git a/indra/cmake/URIPARSER.cmake b/indra/cmake/URIPARSER.cmake
deleted file mode 100644
index 6c33ff70e1..0000000000
--- a/indra/cmake/URIPARSER.cmake
+++ /dev/null
@@ -1,19 +0,0 @@
-# -*- cmake -*-
-
-include_guard()
-
-include(Prebuilt)
-
-add_library( ll::uriparser INTERFACE IMPORTED )
-
-use_system_binary( uriparser )
-
-use_prebuilt_binary(uriparser)
-if (WINDOWS)
- target_link_libraries( ll::uriparser INTERFACE uriparser)
-elseif (LINUX)
- target_link_libraries( ll::uriparser INTERFACE uriparser)
-elseif (DARWIN)
- target_link_libraries( ll::uriparser INTERFACE liburiparser.dylib)
-endif (WINDOWS)
-target_include_directories( ll::uriparser SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/uriparser)
diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake
index af1f16d04d..5b3aeb8b7f 100644
--- a/indra/cmake/Variables.cmake
+++ b/indra/cmake/Variables.cmake
@@ -5,7 +5,7 @@
#
# Platform variables:
#
-# DARWIN - Mac OS X
+# DARWIN - macOS
# LINUX - Linux
# WINDOWS - Windows
@@ -117,7 +117,7 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set(FIND_LIBRARY_USE_LIB64_PATHS ON)
endif (ADDRESS_SIZE EQUAL 32)
- execute_process(COMMAND dpkg-architecture -a${DEB_ARCHITECTURE} -qDEB_HOST_MULTIARCH
+ execute_process(COMMAND dpkg-architecture -a${DEB_ARCHITECTURE} -qDEB_HOST_MULTIARCH
RESULT_VARIABLE DPKG_RESULT
OUTPUT_VARIABLE DPKG_ARCH
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
diff --git a/indra/cmake/WebRTC.cmake b/indra/cmake/WebRTC.cmake
new file mode 100644
index 0000000000..230522a40a
--- /dev/null
+++ b/indra/cmake/WebRTC.cmake
@@ -0,0 +1,32 @@
+# -*- cmake -*-
+include(Linking)
+include(Prebuilt)
+
+include_guard()
+
+add_library( ll::webrtc INTERFACE IMPORTED )
+target_include_directories( ll::webrtc SYSTEM INTERFACE "${LIBS_PREBUILT_DIR}/include/webrtc" "${LIBS_PREBUILT_DIR}/include/webrtc/third_party/abseil-cpp")
+use_prebuilt_binary(webrtc)
+
+if (WINDOWS)
+ target_link_libraries( ll::webrtc INTERFACE webrtc.lib )
+elseif (DARWIN)
+ FIND_LIBRARY(COREAUDIO_LIBRARY CoreAudio)
+ FIND_LIBRARY(COREGRAPHICS_LIBRARY CoreGraphics)
+ FIND_LIBRARY(AUDIOTOOLBOX_LIBRARY AudioToolbox)
+ FIND_LIBRARY(COREFOUNDATION_LIBRARY CoreFoundation)
+ FIND_LIBRARY(COCOA_LIBRARY Cocoa)
+
+ target_link_libraries( ll::webrtc INTERFACE
+ libwebrtc.a
+ ${COREAUDIO_LIBRARY}
+ ${AUDIOTOOLBOX_LIBRARY}
+ ${COREGRAPHICS_LIBRARY}
+ ${COREFOUNDATION_LIBRARY}
+ ${COCOA_LIBRARY}
+ )
+elseif (LINUX)
+ target_link_libraries( ll::webrtc INTERFACE libwebrtc.a X11 )
+endif (WINDOWS)
+
+
diff --git a/indra/cmake/XmlRpcEpi.cmake b/indra/cmake/XmlRpcEpi.cmake
deleted file mode 100644
index 6409f9d6e2..0000000000
--- a/indra/cmake/XmlRpcEpi.cmake
+++ /dev/null
@@ -1,11 +0,0 @@
-# -*- cmake -*-
-include(Prebuilt)
-
-include_guard()
-add_library( ll::xmlrpc-epi INTERFACE IMPORTED )
-
-use_system_binary( xmlrpc-epi )
-
-use_prebuilt_binary(xmlrpc-epi)
-target_link_libraries(ll::xmlrpc-epi INTERFACE xmlrpc-epi )
-target_include_directories( ll::xmlrpc-epi SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include)
diff --git a/indra/cmake/ZLIBNG.cmake b/indra/cmake/ZLIBNG.cmake
index 5d99cd9709..d7b920da26 100644
--- a/indra/cmake/ZLIBNG.cmake
+++ b/indra/cmake/ZLIBNG.cmake
@@ -12,9 +12,9 @@ endif()
use_prebuilt_binary(zlib-ng)
if (WINDOWS)
- target_link_libraries( ll::zlib-ng INTERFACE zlib )
+ target_link_libraries( ll::zlib-ng INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/zlib.lib )
else()
- target_link_libraries( ll::zlib-ng INTERFACE z )
+ target_link_libraries( ll::zlib-ng INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libz.a )
endif (WINDOWS)
if( NOT LINUX )
diff --git a/indra/cmake/cmake_dummy.cpp b/indra/cmake/cmake_dummy.cpp
index ae4475a73e..21a47a9b14 100644
--- a/indra/cmake/cmake_dummy.cpp
+++ b/indra/cmake/cmake_dummy.cpp
@@ -1,24 +1,24 @@
-/**
+/**
* @file cmake_dummy.cpp
*
* $LicenseInfo:firstyear=2008&license=viewerlgpl$
* Second Life Viewer Source Code
* Copyright (C) 2010, Linden Research, Inc.
- *
+ *
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
- *
+ *
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
- *
+ *
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
+ *
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
diff --git a/indra/cmake/run_build_test.py b/indra/cmake/run_build_test.py
index 1f040bded5..940a130a50 100755
--- a/indra/cmake/run_build_test.py
+++ b/indra/cmake/run_build_test.py
@@ -152,7 +152,7 @@ def translate_rc(rc):
"""
if rc is None:
return "still running"
-
+
if rc >= 0:
return "terminated with rc %s" % rc