summaryrefslogtreecommitdiff
path: root/indra/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'indra/cmake')
-rw-r--r--indra/cmake/00-Common.cmake7
-rw-r--r--indra/cmake/Boost.cmake35
-rw-r--r--indra/cmake/CMakeLists.txt2
-rw-r--r--indra/cmake/Copy3rdPartyLibs.cmake41
-rw-r--r--indra/cmake/GLM.cmake14
-rw-r--r--indra/cmake/JsonCpp.cmake17
-rw-r--r--indra/cmake/LLCommon.cmake1
-rw-r--r--indra/cmake/Linking.cmake1
-rw-r--r--indra/cmake/OPENAL.cmake5
-rw-r--r--indra/cmake/Prebuilt.cmake2
-rw-r--r--indra/cmake/TinyEXR.cmake2
-rw-r--r--indra/cmake/Variables.cmake2
-rw-r--r--indra/cmake/ViewerMiscLibs.cmake2
-rw-r--r--indra/cmake/WebRTC.cmake59
14 files changed, 137 insertions, 53 deletions
diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake
index b7fb49dc55..afe20a6dd3 100644
--- a/indra/cmake/00-Common.cmake
+++ b/indra/cmake/00-Common.cmake
@@ -109,6 +109,9 @@ if (WINDOWS)
# https://github.com/actions/runner-images/issues/10004#issuecomment-2153445161
# can be removed after the above issue is resolved and deployed across GHA
add_compile_definitions(_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR)
+
+ # Allow use of sprintf etc
+ add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
endif (WINDOWS)
if (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
@@ -228,6 +231,10 @@ if (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 ()
diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake
index c499807d75..a4f81917ea 100644
--- a/indra/cmake/Boost.cmake
+++ b/indra/cmake/Boost.cmake
@@ -9,19 +9,30 @@ if( USE_CONAN )
target_compile_definitions( ll::boost INTERFACE BOOST_ALLOW_DEPRECATED_HEADERS BOOST_BIND_GLOBAL_PLACEHOLDERS )
return()
elseif( NOT USE_AUTOBUILD_3P )
- find_package( Boost REQUIRED )
- target_compile_definitions( ll::boost INTERFACE BOOST_BIND_GLOBAL_PLACEHOLDERS )
if (DARWIN)
- set(sfx "-mt")
- endif()
- target_link_libraries( ll::boost INTERFACE
- boost_context${sfx}
- boost_fiber${sfx}
- boost_filesystem${sfx}
- boost_program_options${sfx}
- boost_regex${sfx}
- boost_system${sfx}
- boost_thread${sfx})
+ target_include_directories( ll::boost SYSTEM INTERFACE /opt/local/libexec/boost/1.81/include)
+ target_link_libraries( ll::boost INTERFACE
+ /opt/local/libexec/boost/1.81/lib/libboost_context-mt.a
+ /opt/local/libexec/boost/1.81/lib/libboost_fiber-mt.a
+ /opt/local/libexec/boost/1.81/lib/libboost_filesystem-mt.a
+ /opt/local/libexec/boost/1.81/lib/libboost_program_options-mt.a
+ /opt/local/libexec/boost/1.81/lib/libboost_regex-mt.a
+ /opt/local/libexec/boost/1.81/lib/libboost_system-mt.a
+ /opt/local/libexec/boost/1.81/lib/libboost_thread-mt.a
+ )
+ else (DARWIN)
+ find_package( Boost REQUIRED )
+ target_link_libraries( ll::boost INTERFACE
+ boost_context
+ boost_fiber
+ boost_filesystem
+ boost_program_options
+ boost_regex
+ boost_system
+ boost_thread
+ )
+ endif (DARWIN)
+ target_compile_definitions( ll::boost INTERFACE BOOST_BIND_GLOBAL_PLACEHOLDERS )
return()
endif()
diff --git a/indra/cmake/CMakeLists.txt b/indra/cmake/CMakeLists.txt
index 793ee1365f..fa6cd8556b 100644
--- a/indra/cmake/CMakeLists.txt
+++ b/indra/cmake/CMakeLists.txt
@@ -28,7 +28,6 @@ set(cmake_SOURCE_FILES
GLH.cmake
Havok.cmake
Hunspell.cmake
- JsonCpp.cmake
LLAddBuildTest.cmake
LLAppearance.cmake
LLAudio.cmake
@@ -63,6 +62,7 @@ set(cmake_SOURCE_FILES
ViewerMiscLibs.cmake
VisualLeakDetector.cmake
LibVLCPlugin.cmake
+ WebRTC.cmake
XmlRpcEpi.cmake
xxHash.cmake
ZLIBNG.cmake
diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake
index a1a67512c4..d78f2b90b8 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,7 +49,7 @@ if(WINDOWS)
endif (ADDRESS_SIZE EQUAL 64)
#*******************************
- # Misc shared libs
+ # Misc shared libs
set(release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
set(release_files
@@ -85,12 +84,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 ()
@@ -105,14 +98,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)
+ 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")
@@ -135,7 +141,14 @@ if(WINDOWS)
vcruntime${MSVC_VER}.dll
vcruntime${MSVC_VER}_1.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
@@ -177,9 +190,8 @@ elseif(DARWIN)
liburiparser.1.0.27.dylib
)
- if (TARGET ll::fmodstudio)
- set(debug_files ${debug_files} libfmodL.dylib)
- set(release_files ${release_files} libfmod.dylib)
+ if (TARGET ll::openal)
+ list(APPEND release_files libalut.dylib libopenal.dylib)
endif ()
elseif(LINUX)
@@ -219,11 +231,6 @@ elseif(LINUX)
)
endif()
- if (TARGET ll::fmodstudio)
- set(debug_files ${debug_files} "libfmodL.so")
- set(release_files ${release_files} "libfmod.so")
- endif ()
-
else(WINDOWS)
message(STATUS "WARNING: unrecognized platform for staging 3rd party libs, skipping...")
set(vivox_lib_dir "${CMAKE_SOURCE_DIR}/newview/vivox-runtime/i686-linux")
diff --git a/indra/cmake/GLM.cmake b/indra/cmake/GLM.cmake
new file mode 100644
index 0000000000..451b7292cb
--- /dev/null
+++ b/indra/cmake/GLM.cmake
@@ -0,0 +1,14 @@
+# -*- cmake -*-
+include(Prebuilt)
+
+add_library( ll::glm INTERFACE IMPORTED )
+
+if (NOT USESYSTEMLIBS)
+use_system_binary( glm )
+elseif (NOT LINUX)
+ find_package( glm REQUIRED )
+endif (NOT USESYSTEMLIBS)
+
+if (LINUX OR USESYSTEMLIBS)
+use_prebuilt_binary(glm)
+endif (LINUX OR USESYSTEMLIBS)
diff --git a/indra/cmake/JsonCpp.cmake b/indra/cmake/JsonCpp.cmake
deleted file mode 100644
index a9b992ab20..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-11_libmt.a )
-endif (WINDOWS)
-target_include_directories( ll::jsoncpp SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include)
diff --git a/indra/cmake/LLCommon.cmake b/indra/cmake/LLCommon.cmake
index 869d5805f2..9e3707ff17 100644
--- a/indra/cmake/LLCommon.cmake
+++ b/indra/cmake/LLCommon.cmake
@@ -6,6 +6,5 @@ include(EXPAT)
include(Tracy)
include(xxHash)
include(ZLIBNG)
-include(JsonCpp)
include(XmlRpcEpi)
diff --git a/indra/cmake/Linking.cmake b/indra/cmake/Linking.cmake
index a297e04143..8e91dac109 100644
--- a/indra/cmake/Linking.cmake
+++ b/indra/cmake/Linking.cmake
@@ -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/OPENAL.cmake b/indra/cmake/OPENAL.cmake
index cc7deac2d9..6555027dc1 100644
--- a/indra/cmake/OPENAL.cmake
+++ b/indra/cmake/OPENAL.cmake
@@ -44,6 +44,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/Prebuilt.cmake b/indra/cmake/Prebuilt.cmake
index 793da3338f..c7b628d370 100644
--- a/indra/cmake/Prebuilt.cmake
+++ b/indra/cmake/Prebuilt.cmake
@@ -61,7 +61,7 @@ macro (use_prebuilt_binary _binary)
OUTPUT_STRIP_TRAILING_WHITESPACE
)
endif ("${package_url}" STREQUAL "")
- string(REGEX REPLACE ^https://github.com/secondlife/3p-${_binary}/releases/download/v[0-9]+.*/ "" package_name ${package_url})
+ string(REGEX REPLACE ^https://github.com/secondlife/3p-${_binary}/releases/download/[vm][0-9]+.*/ "" package_name ${package_url})
file(DOWNLOAD
${package_url}
${CMAKE_BINARY_DIR}/${package_name}
diff --git a/indra/cmake/TinyEXR.cmake b/indra/cmake/TinyEXR.cmake
index e6d142d19d..e741c07f6e 100644
--- a/indra/cmake/TinyEXR.cmake
+++ b/indra/cmake/TinyEXR.cmake
@@ -3,5 +3,5 @@ include(Prebuilt)
use_prebuilt_binary(tinyexr)
-set(TINYEXR_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/tinyexr)
+set(TINYEXR_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/tinyexr)
diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake
index 59368e1177..c287f135fe 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
diff --git a/indra/cmake/ViewerMiscLibs.cmake b/indra/cmake/ViewerMiscLibs.cmake
index c3dcf1ddb2..4df54e2b59 100644
--- a/indra/cmake/ViewerMiscLibs.cmake
+++ b/indra/cmake/ViewerMiscLibs.cmake
@@ -16,7 +16,7 @@ if (NOT USESYSTEMLIBS)
use_prebuilt_binary(slvoice)
use_prebuilt_binary(nanosvg)
-elseif (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu) OR DARWIN)
+elseif (${LINUX_DISTRO} MATCHES debian OR DARWIN)
if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/nanosvg_installed OR NOT ${nanosvg_installed} EQUAL 0)
if (DARWIN)
if (NOT EXISTS ${CMAKE_BINARY_DIR}/nanosvg-2022.09.27-darwin64-580364.tar.bz2)
diff --git a/indra/cmake/WebRTC.cmake b/indra/cmake/WebRTC.cmake
new file mode 100644
index 0000000000..fa8fa64ac0
--- /dev/null
+++ b/indra/cmake/WebRTC.cmake
@@ -0,0 +1,59 @@
+# -*- 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")
+if (CMAKE_OSX_ARCHITECTURES MATCHES arm64)
+ if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/webrtc_installed OR NOT ${webrtc_installed} EQUAL 0)
+ if (NOT EXISTS ${CMAKE_BINARY_DIR}/libwebrtc-macos-arm64.tar.xz)
+ file(DOWNLOAD
+ https://github.com/crow-misia/libwebrtc-bin/releases/download/114.5735.6.1/libwebrtc-macos-arm64.tar.xz
+ ${CMAKE_BINARY_DIR}/libwebrtc-macos-arm64.tar.xz
+ SHOW_PROGRESS
+ )
+ endif (NOT EXISTS ${CMAKE_BINARY_DIR}/libwebrtc-macos-arm64.tar.xz)
+ file(ARCHIVE_EXTRACT
+ INPUT ${CMAKE_BINARY_DIR}/libwebrtc-macos-arm64.tar.xz
+ DESTINATION ${LIBS_PREBUILT_DIR}
+ )
+ file(RENAME
+ ${LIBS_PREBUILT_DIR}/lib/libwebrtc.a
+ ${LIBS_PREBUILT_DIR}/lib/release/libwebrtc.a
+ )
+ file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/Frameworks/WebRTC.xcframework/macos-arm64/WebRTC.framework)
+ file(RENAME
+ ${LIBS_PREBUILT_DIR}/Frameworks/WebRTC.xcframework/macos-arm64/WebRTC.framework
+ ${LIBS_PREBUILT_DIR}/lib/release/WebRTC.framework
+ )
+ file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/Frameworks)
+ file(WRITE ${PREBUILD_TRACKING_DIR}/webrtc_installed "0")
+ endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/webrtc_installed OR NOT ${webrtc_installed} EQUAL 0)
+elseif (NOT CMAKE_SYSTEM_NAME MATCHES FreeBSD)
+use_prebuilt_binary(webrtc)
+endif (CMAKE_OSX_ARCHITECTURES MATCHES arm64)
+
+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)
+
+