summaryrefslogtreecommitdiff
path: root/indra/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'indra/cmake')
-rw-r--r--indra/cmake/00-Common.cmake126
-rw-r--r--indra/cmake/APR.cmake9
-rw-r--r--indra/cmake/Audio.cmake9
-rw-r--r--indra/cmake/Boost.cmake27
-rw-r--r--indra/cmake/CEFPlugin.cmake44
-rw-r--r--indra/cmake/CMakeLists.txt2
-rw-r--r--indra/cmake/CURL.cmake84
-rw-r--r--indra/cmake/ConfigurePkgConfig.cmake74
-rw-r--r--indra/cmake/FMODSTUDIO.cmake109
-rw-r--r--indra/cmake/FindPipeWire.cmake100
-rw-r--r--indra/cmake/FreeType.cmake8
-rw-r--r--indra/cmake/GLEXT.cmake7
-rw-r--r--indra/cmake/GLH.cmake3
-rw-r--r--indra/cmake/GLIB.cmake22
-rw-r--r--indra/cmake/GLM.cmake7
-rw-r--r--indra/cmake/GStreamer10Plugin.cmake27
-rw-r--r--indra/cmake/Hunspell.cmake2
-rw-r--r--indra/cmake/LLAddBuildTest.cmake7
-rw-r--r--indra/cmake/LLCoreHttp.cmake2
-rw-r--r--indra/cmake/LLPhysicsExtensions.cmake3
-rw-r--r--indra/cmake/LLPrimitive.cmake118
-rw-r--r--indra/cmake/LLWindow.cmake25
-rw-r--r--indra/cmake/LibVLCPlugin.cmake47
-rw-r--r--indra/cmake/LibraryInstall.cmake13
-rw-r--r--indra/cmake/Linker.cmake11
-rw-r--r--indra/cmake/Linking.cmake2
-rw-r--r--indra/cmake/Meshoptimizer.cmake46
-rw-r--r--indra/cmake/Mikktspace.cmake2
-rw-r--r--indra/cmake/NDOF.cmake34
-rw-r--r--indra/cmake/OPENAL.cmake11
-rw-r--r--indra/cmake/OpenJPEG.cmake44
-rw-r--r--indra/cmake/OpenSSL.cmake177
-rw-r--r--indra/cmake/Prebuilt.cmake60
-rw-r--r--indra/cmake/UI.cmake41
-rw-r--r--indra/cmake/UnixInstall.cmake18
-rw-r--r--indra/cmake/Variables.cmake9
-rw-r--r--indra/cmake/ViewerMiscLibs.cmake18
-rw-r--r--indra/cmake/VulkanGltf.cmake2
-rw-r--r--indra/cmake/WebRTC.cmake69
-rw-r--r--indra/cmake/ZLIBNG.cmake6
-rw-r--r--indra/cmake/xxHash.cmake7
41 files changed, 1250 insertions, 182 deletions
diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake
index 39f26ced5d..b31b077abd 100644
--- a/indra/cmake/00-Common.cmake
+++ b/indra/cmake/00-Common.cmake
@@ -15,6 +15,7 @@
include_guard()
include(Variables)
+include(Linker)
# We go to some trouble to set LL_BUILD to the set of relevant compiler flags.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} $ENV{LL_BUILD}")
@@ -32,9 +33,13 @@ 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)
+if(CMAKE_OSX_ARCHITECTURES MATCHES arm64)
+add_compile_definitions(GLM_FORCE_DEFAULT_ALIGNED_GENTYPES=1 GLM_FORCE_NEON=1)
+else(CMAKE_OSX_ARCHITECTURES MATCHES arm64)
# 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)
+endif(CMAKE_OSX_ARCHITECTURES MATCHES arm64)
# Configure crash reporting
set(RELEASE_CRASH_REPORTING OFF CACHE BOOL "Enable use of crash reporting in release builds")
@@ -53,7 +58,7 @@ set(CMAKE_CONFIGURATION_TYPES "RelWithDebInfo;Release" CACHE STRING "Supported b
# Platform-specific compilation flags.
-if (WINDOWS)
+if (NOT CMAKE_CXX_COMPILER_ID MATCHES GNU AND WINDOWS)
# Don't build DLLs.
set(BUILD_SHARED_LIBS OFF)
@@ -109,52 +114,98 @@ if (WINDOWS)
string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
endif()
-endif (WINDOWS)
+endif (NOT CMAKE_CXX_COMPILER_ID MATCHES GNU AND WINDOWS)
+if (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
+ set( CMAKE_BUILD_WITH_INSTALL_RPATH TRUE )
+ set( CMAKE_INSTALL_RPATH $ORIGIN $ORIGIN/../lib )
+ set(CMAKE_EXE_LINKER_FLAGS "-Wl,--exclude-libs,ALL")
-if (LINUX)
- set(CMAKE_SKIP_RPATH TRUE)
-
- # EXTERNAL_TOS
- # force this platform to accept TOS via external browser
+ find_program(CCACHE_EXE ccache)
+ if(CCACHE_EXE AND NOT DISABLE_CCACHE)
+ set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_EXE} )
+ set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_EXE} )
+ endif()
- # LL_IGNORE_SIGCHLD
- # don't catch SIGCHLD in our base application class for the viewer - some of
- # our 3rd party libs may need their *own* SIGCHLD handler to work. Sigh! The
- # viewer doesn't need to catch SIGCHLD anyway.
+ # LL_IGNORE_SIGCHLD
+ # don't catch SIGCHLD in our base application class for the viewer - some of
+ # our 3rd party libs may need their *own* SIGCHLD handler to work. Sigh! The
+ # viewer doesn't need to catch SIGCHLD anyway.
add_compile_definitions(
_REENTRANT
- _FORTIFY_SOURCE=2
- EXTERNAL_TOS
- APPID=secondlife
+ APPID=megapahit
LL_IGNORE_SIGCHLD
)
+
+ if( ENABLE_ASAN )
+ add_compile_options(-U_FORTIFY_SOURCE
+ -fsanitize=address
+ --param asan-stack=0
+ )
+ add_link_options(-fsanitize=address)
+ else()
+ add_compile_definitions( _FORTIFY_SOURCE=2 )
+ endif()
+
+ if (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
+ add_compile_definitions(EXTERNAL_TOS)
+ endif (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
+
add_compile_options(
- -fexceptions
- -fno-math-errno
- -fno-strict-aliasing
- -fsigned-char
- -msse2
- -mfpmath=sse
- -pthread
- -Wno-parentheses
- -Wno-deprecated
- -fvisibility=hidden
+ -fexceptions
+ -fno-math-errno
+ -fno-strict-aliasing
+ -fsigned-char
+ -msse2
+ -mfpmath=sse
+ -pthread
)
- if (ADDRESS_SIZE EQUAL 32)
- add_compile_options(-march=pentium4)
- endif (ADDRESS_SIZE EQUAL 32)
+ if (NOT BUILD_SHARED_LIBS)
+ add_compile_options(-fvisibility=hidden)
+ endif (NOT BUILD_SHARED_LIBS)
+
+ set(GCC_CLANG_COMPATIBLE_WARNINGS
+ -Wno-parentheses
+ -Wno-deprecated
+ -Wno-c++20-compat
+ -Wno-pessimizing-move
+ )
+
+ set(CLANG_WARNINGS
+ ${GCC_CLANG_COMPATIBLE_WARNINGS}
+ # Put clang specific warning configuration here
+ )
+
+ set(GCC_WARNINGS
+ ${GCC_CLANG_COMPATIBLE_WARNINGS}
+ -Wno-dangling-pointer
+ )
+
+ add_link_options(
+ -Wl,--no-keep-memory
+ -Wl,--build-id
+ -Wl,--no-undefined
+ )
+ if (NOT GCC_DISABLE_FATAL_WARNINGS)
+ add_compile_options( -Werror )
+ endif (NOT GCC_DISABLE_FATAL_WARNINGS)
# this stops us requiring a really recent glibc at runtime
add_compile_options(-fno-stack-protector)
- # linking can be very memory-hungry, especially the final viewer link
- set(CMAKE_CXX_LINK_FLAGS "-Wl,--no-keep-memory")
-
- set(CMAKE_CXX_FLAGS_DEBUG "-fno-inline ${CMAKE_CXX_FLAGS_DEBUG}")
-endif (LINUX)
+ if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+ # ND: clang is a bit more picky than GCC, the latter seems to auto include -lstdc++ and -lm. The former not so and thus fails to link
+ add_link_options(
+ -lstdc++
+ -lm
+ )
+ add_compile_options(${CLANG_WARNINGS})
+ else()
+ add_compile_options(${GCC_WARNINGS})
+ endif()
+endif (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
if (DARWIN)
# Warnings should be fatal -- thanks, Nicky Perian, for spotting reversed default
@@ -177,15 +228,9 @@ if (DARWIN)
# required for clang-15/xcode-15 since our boost package still uses deprecated std::unary_function/binary_function
# see https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes#C++-Standard-Library
add_compile_definitions(_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION)
-endif (DARWIN)
-if (LINUX OR DARWIN)
set(GCC_WARNINGS -Wall -Wno-sign-compare -Wno-trigraphs)
- if (NOT GCC_DISABLE_FATAL_WARNINGS)
- list(APPEND GCC_WARNINGS -Werror)
- endif (NOT GCC_DISABLE_FATAL_WARNINGS)
-
list(APPEND GCC_WARNINGS -Wno-reorder -Wno-non-virtual-dtor )
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13)
@@ -194,7 +239,4 @@ if (LINUX OR DARWIN)
add_compile_options(${GCC_WARNINGS})
add_compile_options(-m${ADDRESS_SIZE})
-endif (LINUX OR DARWIN)
-
-
-
+endif ()
diff --git a/indra/cmake/APR.cmake b/indra/cmake/APR.cmake
index 97b316c4c7..506f792570 100644
--- a/indra/cmake/APR.cmake
+++ b/indra/cmake/APR.cmake
@@ -5,6 +5,15 @@ include_guard()
add_library( ll::apr INTERFACE IMPORTED )
+if (NOT (USE_AUTOBUILD_3P OR USE_CONAN))
+ include(FindPkgConfig)
+ pkg_check_modules(Apr REQUIRED apr-1 apr-util-1)
+ target_include_directories(ll::apr SYSTEM INTERFACE ${Apr_INCLUDE_DIRS})
+ target_link_directories(ll::apr INTERFACE ${Apr_LIBRARY_DIRS})
+ target_link_libraries(ll::apr INTERFACE ${Apr_LIBRARIES})
+ return ()
+endif ()
+
use_system_binary( apr apr-util )
use_prebuilt_binary(apr_suite)
diff --git a/indra/cmake/Audio.cmake b/indra/cmake/Audio.cmake
index 8c82749cab..3c4c0ef1a7 100644
--- a/indra/cmake/Audio.cmake
+++ b/indra/cmake/Audio.cmake
@@ -5,6 +5,15 @@ include(Prebuilt)
include_guard()
add_library( ll::vorbis INTERFACE IMPORTED )
+if (NOT (USE_AUTOBUILD_3P OR USE_CONAN))
+ include(FindPkgConfig)
+ pkg_check_modules(Vorbis REQUIRED ogg vorbis vorbisenc vorbisfile)
+ target_include_directories(ll::vorbis SYSTEM INTERFACE ${Vorbis_INCLUDE_DIRS})
+ target_link_directories(ll::vorbis INTERFACE ${Vorbis_LIBRARY_DIRS})
+ target_link_libraries(ll::vorbis INTERFACE ${Vorbis_LIBRARIES})
+ return ()
+endif ()
+
use_system_binary(vorbis)
use_prebuilt_binary(ogg_vorbis)
target_include_directories( ll::vorbis SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include )
diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake
index 8c5b946753..26c0843300 100644
--- a/indra/cmake/Boost.cmake
+++ b/indra/cmake/Boost.cmake
@@ -8,6 +8,30 @@ if( USE_CONAN )
target_link_libraries( ll::boost INTERFACE CONAN_PKG::boost )
target_compile_definitions( ll::boost INTERFACE BOOST_ALLOW_DEPRECATED_HEADERS BOOST_BIND_GLOBAL_PLACEHOLDERS )
return()
+elseif( NOT USE_AUTOBUILD_3P )
+ if (WINDOWS)
+ set(sfx -mt)
+ target_include_directories( ll::boost SYSTEM INTERFACE /opt/local/x86_64-w64-mingw32/include)
+ target_link_directories( ll::boost INTERFACE /opt/local/x86_64-w64-mingw32/lib)
+ elseif (DARWIN)
+ set(sfx -mt)
+ target_include_directories( ll::boost SYSTEM INTERFACE /opt/local/libexec/boost/1.81/include)
+ target_link_directories( ll::boost INTERFACE /opt/local/libexec/boost/1.81/lib)
+ else (WINDOWS)
+ find_package( Boost REQUIRED )
+ endif (WINDOWS)
+ 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}
+ boost_url${sfx}
+ )
+ target_compile_definitions( ll::boost INTERFACE BOOST_BIND_GLOBAL_PLACEHOLDERS )
+ return()
endif()
use_prebuilt_binary(boost)
@@ -28,12 +52,11 @@ if (WINDOWS)
libboost_url-mt${addrsfx})
elseif (LINUX)
target_link_libraries( ll::boost INTERFACE
- boost_context-mt${addrsfx}
boost_fiber-mt${addrsfx}
+ boost_context-mt${addrsfx}
boost_filesystem-mt${addrsfx}
boost_program_options-mt${addrsfx}
boost_regex-mt${addrsfx}
- boost_signals-mt${addrsfx}
boost_system-mt${addrsfx}
boost_thread-mt${addrsfx}
boost_url-mt${addrsfx})
diff --git a/indra/cmake/CEFPlugin.cmake b/indra/cmake/CEFPlugin.cmake
index 9b77becf29..119a41f570 100644
--- a/indra/cmake/CEFPlugin.cmake
+++ b/indra/cmake/CEFPlugin.cmake
@@ -5,7 +5,46 @@ include(Prebuilt)
include_guard()
add_library( ll::cef INTERFACE IMPORTED )
+if (CMAKE_OSX_ARCHITECTURES MATCHES arm64)
+ if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/dullahan_installed OR NOT ${dullahan_installed} EQUAL 0)
+ if (NOT EXISTS ${CMAKE_BINARY_DIR}/dullahan-1.14.0.202312131437_118.7.1_g99817d2_chromium-118.0.5993.119-darwin64-242070244.tar.bz2)
+ file(DOWNLOAD
+ https://megapahit.net/downloads/dullahan-1.14.0.202312131437_118.7.1_g99817d2_chromium-118.0.5993.119-darwin64-242070244.tar.bz2
+ ${CMAKE_BINARY_DIR}/dullahan-1.14.0.202312131437_118.7.1_g99817d2_chromium-118.0.5993.119-darwin64-242070244.tar.bz2
+ SHOW_PROGRESS
+ )
+ endif (NOT EXISTS ${CMAKE_BINARY_DIR}/dullahan-1.14.0.202312131437_118.7.1_g99817d2_chromium-118.0.5993.119-darwin64-242070244.tar.bz2)
+ file(ARCHIVE_EXTRACT
+ INPUT ${CMAKE_BINARY_DIR}/dullahan-1.14.0.202312131437_118.7.1_g99817d2_chromium-118.0.5993.119-darwin64-242070244.tar.bz2
+ DESTINATION ${LIBS_PREBUILT_DIR}
+ )
+ file(WRITE ${PREBUILD_TRACKING_DIR}/dullahan_installed "0")
+ endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/dullahan_installed OR NOT ${dullahan_installed} EQUAL 0)
+elseif (CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
+ if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/dullahan_installed OR NOT ${dullahan_installed} EQUAL 0)
+ if (NOT EXISTS ${CMAKE_BINARY_DIR}/dullahan-1.14.0.202312131437_118.7.1_g99817d2_chromium-118.0.5993.119-darwin64-242070158.tar.bz2)
+ file(DOWNLOAD
+ https://megapahit.net/downloads/dullahan-1.14.0.202312131437_118.7.1_g99817d2_chromium-118.0.5993.119-darwin64-242070158.tar.bz2
+ ${CMAKE_BINARY_DIR}/dullahan-1.14.0.202312131437_118.7.1_g99817d2_chromium-118.0.5993.119-darwin64-242070158.tar.bz2
+ SHOW_PROGRESS
+ )
+ endif (NOT EXISTS ${CMAKE_BINARY_DIR}/dullahan-1.14.0.202312131437_118.7.1_g99817d2_chromium-118.0.5993.119-darwin64-242070158.tar.bz2)
+ file(ARCHIVE_EXTRACT
+ INPUT ${CMAKE_BINARY_DIR}/dullahan-1.14.0.202312131437_118.7.1_g99817d2_chromium-118.0.5993.119-darwin64-242070158.tar.bz2
+ DESTINATION ${LIBS_PREBUILT_DIR}
+ )
+ file(WRITE ${PREBUILD_TRACKING_DIR}/dullahan_installed "0")
+ endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/dullahan_installed OR NOT ${dullahan_installed} EQUAL 0)
+else (CMAKE_OSX_ARCHITECTURES MATCHES arm64)
use_prebuilt_binary(dullahan)
+ if (${LINUX_DISTRO} MATCHES fedora)
+ execute_process(
+ COMMAND patchelf --remove-rpath bin/release/dullahan_host
+ WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}
+ )
+ endif (${LINUX_DISTRO} MATCHES fedora)
+endif (CMAKE_OSX_ARCHITECTURES MATCHES arm64)
+
target_include_directories( ll::cef SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/cef)
if (WINDOWS)
@@ -33,4 +72,9 @@ elseif (DARWIN)
)
elseif (LINUX)
+ target_link_libraries( ll::cef INTERFACE
+ libdullahan.a
+ cef
+ cef_dll_wrapper.a
+ )
endif (WINDOWS)
diff --git a/indra/cmake/CMakeLists.txt b/indra/cmake/CMakeLists.txt
index cc217b0563..5525ac9f24 100644
--- a/indra/cmake/CMakeLists.txt
+++ b/indra/cmake/CMakeLists.txt
@@ -15,7 +15,6 @@ set(cmake_SOURCE_FILES
CEFPlugin.cmake
CEFPlugin.cmake
CMakeCopyIfDifferent.cmake
- ConfigurePkgConfig.cmake
CURL.cmake
Copy3rdPartyLibs.cmake
DBusGlib.cmake
@@ -23,6 +22,7 @@ set(cmake_SOURCE_FILES
DragDrop.cmake
EXPAT.cmake
FindAutobuild.cmake
+ FMODSTUDIO.cmake
FreeType.cmake
GLEXT.cmake
GLH.cmake
diff --git a/indra/cmake/CURL.cmake b/indra/cmake/CURL.cmake
index eea0a2da62..b85de3b845 100644
--- a/indra/cmake/CURL.cmake
+++ b/indra/cmake/CURL.cmake
@@ -5,9 +5,91 @@ include(Linking)
include_guard()
add_library( ll::libcurl INTERFACE IMPORTED )
+if (NOT USESYSTEMLIBS)
use_system_binary(libcurl)
+endif (NOT USESYSTEMLIBS)
+if (DARWIN OR LINUX OR NOT USESYSTEMLIBS)
use_prebuilt_binary(curl)
-if (WINDOWS)
+ if (DARWIN)
+ execute_process(
+ COMMAND lipo -archs libcurl.a
+ WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release
+ OUTPUT_VARIABLE curl_archs
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ if (NOT ${curl_archs} STREQUAL ${CMAKE_OSX_ARCHITECTURES})
+ execute_process(
+ COMMAND lipo
+ libcurl.a
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libcurl.a
+ WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release
+ )
+ endif (NOT ${curl_archs} STREQUAL ${CMAKE_OSX_ARCHITECTURES})
+ endif (DARWIN)
+elseif (CMAKE_SYSTEM_NAME MATCHES FreeBSD AND (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/curl_installed OR NOT ${curl_installed} EQUAL 0))
+ if (NOT EXISTS ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1.tar.gz)
+ file(DOWNLOAD
+ https://github.com/secondlife/3p-curl/archive/refs/tags/v7.54.1-r1.tar.gz
+ ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1.tar.gz
+ )
+ endif (NOT EXISTS ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1.tar.gz)
+ file(ARCHIVE_EXTRACT
+ INPUT ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1.tar.gz
+ DESTINATION ${CMAKE_BINARY_DIR}
+ )
+ file(
+ COPY
+ ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/curl.h
+ ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/curlbuild.h
+ ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/curlrules.h
+ ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/curlver.h
+ ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/easy.h
+ ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/mprintf.h
+ ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/multi.h
+ ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/stdcheaders.h
+ ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/system.h
+ ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/typecheck-gcc.h
+ DESTINATION ${LIBS_PREBUILT_DIR}/include/curl
+ )
+ file(
+ COPY
+ ${LIBS_PREBUILT_DIR}/lib/release/libcrypto.a
+ ${LIBS_PREBUILT_DIR}/lib/release/libssl.a
+ DESTINATION ${LIBS_PREBUILT_DIR}/lib
+ )
+ message("We need to temporarily have OpenSSL3 header directory and libraries renamed just until the libcurl building process with OpenSSL1.1 now is finished.")
+ execute_process(COMMAND sudo mv /usr/include/openssl /usr/include/openssl3)
+ execute_process(COMMAND sudo mv /usr/lib/libcrypto.a /usr/lib/libcrypto.a.3)
+ execute_process(COMMAND sudo mv /usr/lib/libcrypto.so /usr/lib/libcrypto.so.3)
+ execute_process(COMMAND sudo mv /usr/lib/libssl.a /usr/lib/libssl.a.3)
+ execute_process(COMMAND sudo mv /usr/lib/libssl.so /usr/lib/libssl.so.3)
+ execute_process(
+ COMMAND ./configure --disable-alt-svc --disable-dict --disable-doh --disable-file --disable-gopher --disable-headers-api --disable-hsts --disable-imap --disable-ldap --disable-ldaps --disable-libcurl-option --disable-manual --disable-mqtt --disable-ntlm --disable-ntlm-wb --disable-pop3 --disable-rtsp --disable-shared --disable-smb --disable-smtp --disable-sspi --disable-telnet --disable-tftp --disable-tls-srp --disable-unix-sockets --disable-verbose --disable-versioned-symbols --enable-threaded-resolver --with-ssl=${LIBS_PREBUILT_DIR} --without-libidn2 --without-libpsl --without-libssh2
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl
+ )
+ execute_process(
+ COMMAND make -j${MAKE_JOBS}
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl
+ RESULT_VARIABLE curl_installed
+ )
+ file(
+ COPY ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/lib/.libs/libcurl.a
+ DESTINATION ${LIBS_PREBUILT_DIR}/lib/release
+ )
+ execute_process(COMMAND sudo mv /usr/include/openssl3 /usr/include/openssl)
+ execute_process(COMMAND sudo mv /usr/lib/libcrypto.a.3 /usr/lib/libcrypto.a)
+ execute_process(COMMAND sudo mv /usr/lib/libcrypto.so.3 /usr/lib/libcrypto.so)
+ execute_process(COMMAND sudo mv /usr/lib/libssl.a.3 /usr/lib/libssl.a)
+ execute_process(COMMAND sudo mv /usr/lib/libssl.so.3 /usr/lib/libssl.so)
+ message("OpenSSL3 header directory and library names have been restored.")
+ file(REMOVE
+ ${LIBS_PREBUILT_DIR}/lib/libcrypto.a
+ ${LIBS_PREBUILT_DIR}/lib/libssl.a
+ )
+ file(WRITE ${PREBUILD_TRACKING_DIR}/curl_installed "${curl_installed}")
+endif (DARWIN OR LINUX OR NOT USESYSTEMLIBS)
+if (WINDOWS AND NOT USESYSTEMLIBS)
target_link_libraries(ll::libcurl INTERFACE
${ARCH_PREBUILT_DIRS_RELEASE}/libcurl.lib
ll::openssl
diff --git a/indra/cmake/ConfigurePkgConfig.cmake b/indra/cmake/ConfigurePkgConfig.cmake
deleted file mode 100644
index 9e798d663b..0000000000
--- a/indra/cmake/ConfigurePkgConfig.cmake
+++ /dev/null
@@ -1,74 +0,0 @@
-# -*- cmake -*-
-
-SET(DEBUG_PKG_CONFIG "YES")
-
-# Don't change this if manually set by user.
-IF("$ENV{PKG_CONFIG_LIBDIR}" STREQUAL "")
-
- # Guess at architecture-specific system library paths.
- if (ADDRESS_SIZE EQUAL 32)
- SET(PKG_CONFIG_NO_MULTI_GUESS /usr/lib32 /usr/lib)
- SET(PKG_CONFIG_NO_MULTI_LOCAL_GUESS /usr/local/lib32 /usr/local/lib)
- SET(PKG_CONFIG_MULTI_GUESS /usr/lib/i386-linux-gnu)
- SET(PKG_CONFIG_MULTI_LOCAL_GUESS /usr/local/lib/i386-linux-gnu)
- else (ADDRESS_SIZE EQUAL 32)
- SET(PKG_CONFIG_NO_MULTI_GUESS /usr/lib64 /usr/lib)
- SET(PKG_CONFIG_NO_MULTI_LOCAL_GUESS /usr/local/lib64 /usr/local/lib)
- 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})
- SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_DIR}/pkgconfig")
- ENDFOREACH(PKG_CONFIG_DIR)
-
- # Look for valid pkgconfig directories.
- FIND_PATH(PKG_CONFIG_ENV pkgconfig ENV LD_LIBRARY_PATH)
- FIND_PATH(PKG_CONFIG_MULTI pkgconfig HINT ${PKG_CONFIG_MULTI_GUESS})
- FIND_PATH(PKG_CONFIG_MULTI_LOCAL pkgconfig HINT ${PKG_CONFIG_MULTI_LOCAL_GUESS})
- FIND_PATH(PKG_CONFIG_NO_MULTI pkgconfig HINT ${PKG_CONFIG_NO_MULTI_GUESS})
- 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)
- SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_ENV}/pkgconfig")
- ENDIF(NOT PKG_CONFIG_ENV STREQUAL PKG_CONFIG_ENV-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)
-
- 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)
-
- 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)
-
- 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)
-
- # Also add some non-architecture specific package locations.
- SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:/usr/share/pkgconfig:/usr/local/share/pkgconfig")
-
- # Remove first unwanted ':'
- string(SUBSTRING ${VALID_PKG_LIBDIRS} 1 -1 VALID_PKG_LIBDIRS)
-
- # Set PKG_CONFIG_LIBDIR environment.
- SET(ENV{PKG_CONFIG_LIBDIR} ${VALID_PKG_LIBDIRS})
-ENDIF("$ENV{PKG_CONFIG_LIBDIR}" STREQUAL "")
-
-IF(DEBUG_PKG_CONFIG)
- MESSAGE(STATUS "Using PKG_CONFIG_LIBDIR=$ENV{PKG_CONFIG_LIBDIR}")
-ENDIF(DEBUG_PKG_CONFIG)
-
diff --git a/indra/cmake/FMODSTUDIO.cmake b/indra/cmake/FMODSTUDIO.cmake
new file mode 100644
index 0000000000..313ee2cde7
--- /dev/null
+++ b/indra/cmake/FMODSTUDIO.cmake
@@ -0,0 +1,109 @@
+# -*- 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)
+ if (USESYSTEMLIBS AND (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/fmodstudio_installed OR NOT ${fmodstudio_installed} EQUAL 0))
+ file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release)
+ if (DARWIN)
+ execute_process(
+ COMMAND hdiutil attach -noverify fmodstudioapi20223mac-installer.dmg
+ WORKING_DIRECTORY $ENV{HOME}/Downloads
+ )
+ file(
+ COPY
+ /Volumes/FMOD\ Programmers\ API\ Mac/FMOD\ Programmers\ API/api/core/inc/fmod.h
+ /Volumes/FMOD\ Programmers\ API\ Mac/FMOD\ Programmers\ API/api/core/inc/fmod.hpp
+ /Volumes/FMOD\ Programmers\ API\ Mac/FMOD\ Programmers\ API/api/core/inc/fmod_codec.h
+ /Volumes/FMOD\ Programmers\ API\ Mac/FMOD\ Programmers\ API/api/core/inc/fmod_common.h
+ /Volumes/FMOD\ Programmers\ API\ Mac/FMOD\ Programmers\ API/api/core/inc/fmod_dsp.h
+ /Volumes/FMOD\ Programmers\ API\ Mac/FMOD\ Programmers\ API/api/core/inc/fmod_dsp_effects.h
+ /Volumes/FMOD\ Programmers\ API\ Mac/FMOD\ Programmers\ API/api/core/inc/fmod_errors.h
+ /Volumes/FMOD\ Programmers\ API\ Mac/FMOD\ Programmers\ API/api/core/inc/fmod_output.h
+ DESTINATION ${LIBS_PREBUILT_DIR}/include/fmodstudio
+ )
+ execute_process(
+ COMMAND lipo
+ lib/libfmod.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output ${LIBS_PREBUILT_DIR}/lib/release/libfmod.dylib
+ WORKING_DIRECTORY /Volumes/FMOD\ Programmers\ API\ Mac/FMOD\ Programmers\ API/api/core
+ )
+ execute_process(
+ COMMAND hdiutil detach FMOD\ Programmers\ API\ Mac
+ WORKING_DIRECTORY /Volumes
+ RESULT_VARIABLE fmodstudio_installed
+ )
+ file(WRITE ${PREBUILD_TRACKING_DIR}/fmodstudio_installed "${fmodstudio_installed}")
+ else (DARWIN)
+ file(ARCHIVE_EXTRACT
+ INPUT $ENV{HOME}/Downloads/fmodstudioapi20223linux.tar.gz
+ DESTINATION ${CMAKE_BINARY_DIR}
+ )
+ file(
+ COPY
+ ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/inc/fmod.h
+ ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/inc/fmod.hpp
+ ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/inc/fmod_codec.h
+ ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/inc/fmod_common.h
+ ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/inc/fmod_dsp.h
+ ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/inc/fmod_dsp_effects.h
+ ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/inc/fmod_errors.h
+ ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/inc/fmod_output.h
+ DESTINATION ${LIBS_PREBUILT_DIR}/include/fmodstudio
+ )
+ file(
+ COPY
+ ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so
+ ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so.13
+ ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so.13.23
+ DESTINATION ${LIBS_PREBUILT_DIR}/lib/release
+ FOLLOW_SYMLINK_CHAIN
+ )
+ file(WRITE ${PREBUILD_TRACKING_DIR}/fmodstudio_installed "0")
+ endif (DARWIN)
+ else (USESYSTEMLIBS AND (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/fmodstudio_installed OR NOT ${fmodstudio_installed} EQUAL 0))
+ use_prebuilt_binary(fmodstudio)
+ endif (USESYSTEMLIBS AND (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/fmodstudio_installed OR NOT ${fmodstudio_installed} EQUAL 0))
+ 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/FindPipeWire.cmake b/indra/cmake/FindPipeWire.cmake
new file mode 100644
index 0000000000..868acf5ec1
--- /dev/null
+++ b/indra/cmake/FindPipeWire.cmake
@@ -0,0 +1,100 @@
+# cmake-format: off
+# .rst: FindPipeWire
+# -------
+#
+# Try to find PipeWire on a Unix system.
+#
+# This will define the following variables:
+#
+# ``PIPEWIRE_FOUND`` True if (the requested version of) PipeWire is available
+# ``PIPEWIRE_VERSION`` The version of PipeWire ``PIPEWIRE_LIBRARIES`` This can
+# be passed to target_link_libraries() instead of the ``PipeWire::PipeWire``
+# target ``PIPEWIRE_INCLUDE_DIRS`` This should be passed to
+# target_include_directories() if the target is not used for linking
+# ``PIPEWIRE_COMPILE_FLAGS`` This should be passed to target_compile_options()
+# if the target is not used for linking
+#
+# If ``PIPEWIRE_FOUND`` is TRUE, it will also define the following imported
+# target:
+#
+# ``PipeWire::PipeWire`` The PipeWire library
+#
+# In general we recommend using the imported target, as it is easier to use.
+# Bear in mind, however, that if the target is in the link interface of an
+# exported library, it must be made available by the package config file.
+
+# =============================================================================
+# Copyright 2014 Alex Merry <alex.merry@kde.org> Copyright 2014 Martin Gräßlin
+# <mgraesslin@kde.org> Copyright 2018-2020 Jan Grulich <jgrulich@redhat.com>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the copyright notice, this list
+# of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the copyright notice, this
+# list of conditions and the following disclaimer in the documentation and/or
+# other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+# =============================================================================
+# cmake-format: on
+
+# Use pkg-config to get the directories and then use these values in the FIND_PATH() and FIND_LIBRARY() calls
+find_package(PkgConfig QUIET)
+
+pkg_search_module(PKG_PIPEWIRE QUIET libpipewire-0.3)
+pkg_search_module(PKG_SPA QUIET libspa-0.2)
+
+set(PIPEWIRE_COMPILE_FLAGS "${PKG_PIPEWIRE_CFLAGS}" "${PKG_SPA_CFLAGS}")
+set(PIPEWIRE_VERSION "${PKG_PIPEWIRE_VERSION}")
+
+find_path(
+ PIPEWIRE_INCLUDE_DIRS
+ NAMES pipewire/pipewire.h
+ HINTS ${PKG_PIPEWIRE_INCLUDE_DIRS} ${PKG_PIPEWIRE_INCLUDE_DIRS}/pipewire-0.3)
+
+find_path(
+ SPA_INCLUDE_DIRS
+ NAMES spa/param/props.h
+ HINTS ${PKG_SPA_INCLUDE_DIRS} ${PKG_SPA_INCLUDE_DIRS}/spa-0.2)
+
+find_library(
+ PIPEWIRE_LIBRARIES
+ NAMES pipewire-0.3
+ HINTS ${PKG_PIPEWIRE_LIBRARY_DIRS})
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(
+ PipeWire
+ FOUND_VAR PIPEWIRE_FOUND
+ REQUIRED_VARS PIPEWIRE_LIBRARIES PIPEWIRE_INCLUDE_DIRS SPA_INCLUDE_DIRS
+ VERSION_VAR PIPEWIRE_VERSION)
+
+if(PIPEWIRE_FOUND AND NOT TARGET PipeWire::PipeWire)
+ add_library(PipeWire::PipeWire UNKNOWN IMPORTED)
+ set_target_properties(
+ PipeWire::PipeWire
+ PROPERTIES IMPORTED_LOCATION "${PIPEWIRE_LIBRARIES}"
+ INTERFACE_COMPILE_OPTIONS "${PIPEWIRE_COMPILE_FLAGS}"
+ INTERFACE_INCLUDE_DIRECTORIES "${PIPEWIRE_INCLUDE_DIRS};${SPA_INCLUDE_DIRS}")
+endif()
+
+mark_as_advanced(PIPEWIRE_LIBRARIES PIPEWIRE_INCLUDE_DIRS)
+
+include(FeatureSummary)
+set_package_properties(
+ PipeWire PROPERTIES
+ URL "https://www.pipewire.org"
+ DESCRIPTION "PipeWire - multimedia processing")
diff --git a/indra/cmake/FreeType.cmake b/indra/cmake/FreeType.cmake
index 563491556d..7683fe364a 100644
--- a/indra/cmake/FreeType.cmake
+++ b/indra/cmake/FreeType.cmake
@@ -5,6 +5,14 @@ include(Linking)
include_guard()
add_library( ll::freetype INTERFACE IMPORTED )
+if (USESYSTEMLIBS)
+ include(FindPkgConfig)
+ pkg_check_modules(Freetype REQUIRED freetype2)
+ target_include_directories( ll::freetype SYSTEM INTERFACE ${Freetype_INCLUDE_DIRS} )
+ target_link_directories( ll::freetype INTERFACE ${Freetype_LIBRARY_DIRS} )
+ target_link_libraries( ll::freetype INTERFACE ${Freetype_LIBRARIES} )
+ return ()
+endif (USESYSTEMLIBS)
use_system_binary(freetype)
use_prebuilt_binary(freetype)
target_include_directories( ll::freetype SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/freetype2/)
diff --git a/indra/cmake/GLEXT.cmake b/indra/cmake/GLEXT.cmake
index a780966f0c..ea349237d3 100644
--- a/indra/cmake/GLEXT.cmake
+++ b/indra/cmake/GLEXT.cmake
@@ -3,7 +3,10 @@ include(Prebuilt)
include(GLH)
add_library( ll::glext INTERFACE IMPORTED )
-use_system_binary(glext)
-use_prebuilt_binary(glext)
+if (USESYSTEMLIBS)
+ return ()
+endif ()
+use_system_binary(glext)
+use_prebuilt_binary(glext)
diff --git a/indra/cmake/GLH.cmake b/indra/cmake/GLH.cmake
index 0cefc3543a..648a08454b 100644
--- a/indra/cmake/GLH.cmake
+++ b/indra/cmake/GLH.cmake
@@ -2,6 +2,9 @@
include(Prebuilt)
add_library( ll::glh_linear INTERFACE IMPORTED )
+target_include_directories( ll::glh_linear SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include)
+if (NOT USESYSTEMLIBS)
use_system_binary( glh_linear )
+endif (NOT USESYSTEMLIBS)
use_prebuilt_binary(glh_linear)
diff --git a/indra/cmake/GLIB.cmake b/indra/cmake/GLIB.cmake
new file mode 100644
index 0000000000..f52cbb7f87
--- /dev/null
+++ b/indra/cmake/GLIB.cmake
@@ -0,0 +1,22 @@
+include_guard()
+
+include(Prebuilt)
+
+add_library( ll::glib INTERFACE IMPORTED )
+add_library( ll::glib_headers INTERFACE IMPORTED )
+add_library( ll::gio INTERFACE IMPORTED )
+
+if( LINUX )
+ find_package(PkgConfig REQUIRED)
+ pkg_search_module(GLIB REQUIRED glib-2.0)
+ pkg_search_module(GIO REQUIRED gio-2.0)
+
+ target_include_directories( ll::glib SYSTEM INTERFACE ${GLIB_INCLUDE_DIRS} )
+ target_link_libraries( ll::glib INTERFACE ${GLIB_LDFLAGS} )
+ target_compile_definitions( ll::glib INTERFACE -DLL_GLIB=1)
+
+ target_include_directories( ll::glib_headers SYSTEM INTERFACE ${GLIB_INCLUDE_DIRS} )
+ target_compile_definitions( ll::glib_headers INTERFACE -DLL_GLIB=1)
+
+ target_link_libraries( ll::gio INTERFACE ${GIO_LDFLAGS} )
+endif()
diff --git a/indra/cmake/GLM.cmake b/indra/cmake/GLM.cmake
index 84b155f6c5..451b7292cb 100644
--- a/indra/cmake/GLM.cmake
+++ b/indra/cmake/GLM.cmake
@@ -3,5 +3,12 @@ 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/GStreamer10Plugin.cmake b/indra/cmake/GStreamer10Plugin.cmake
new file mode 100644
index 0000000000..160844ef68
--- /dev/null
+++ b/indra/cmake/GStreamer10Plugin.cmake
@@ -0,0 +1,27 @@
+# -*- cmake -*-
+
+include_guard()
+
+include(Prebuilt)
+include(GLIB)
+
+add_library( ll::gstreamer10 INTERFACE IMPORTED )
+
+if (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
+ include(FindPkgConfig)
+
+ pkg_check_modules(GSTREAMER10 REQUIRED gstreamer-1.0)
+ pkg_check_modules(GSTREAMER10_PLUGINS_BASE REQUIRED gstreamer-plugins-base-1.0)
+
+ target_include_directories( ll::gstreamer10 SYSTEM INTERFACE ${GSTREAMER10_INCLUDE_DIRS})
+ target_link_libraries( ll::gstreamer10 INTERFACE ll::glib_headers)
+
+endif ()
+
+if (GSTREAMER10_FOUND AND GSTREAMER10_PLUGINS_BASE_FOUND)
+ set(GSTREAMER10 ON CACHE BOOL "Build with GStreamer-1.0 streaming media support.")
+endif (GSTREAMER10_FOUND AND GSTREAMER10_PLUGINS_BASE_FOUND)
+
+if (GSTREAMER10)
+ add_definitions(-DLL_GSTREAMER10_ENABLED=1)
+endif (GSTREAMER10)
diff --git a/indra/cmake/Hunspell.cmake b/indra/cmake/Hunspell.cmake
index 129679febd..5fa22120e6 100644
--- a/indra/cmake/Hunspell.cmake
+++ b/indra/cmake/Hunspell.cmake
@@ -3,7 +3,9 @@ include(Linking)
include(Prebuilt)
include_guard()
+if (USE_AUTOBUILD_3P OR USE_CONAN)
use_prebuilt_binary(dictionaries)
+endif ()
add_library( ll::hunspell INTERFACE IMPORTED )
use_system_binary(hunspell)
diff --git a/indra/cmake/LLAddBuildTest.cmake b/indra/cmake/LLAddBuildTest.cmake
index 6408f1200c..5d96a4398f 100644
--- a/indra/cmake/LLAddBuildTest.cmake
+++ b/indra/cmake/LLAddBuildTest.cmake
@@ -1,4 +1,11 @@
# -*- cmake -*-
+
+include_guard()
+
+if( NOT LL_TESTS )
+ return()
+endif()
+
include(00-Common)
include(LLTestCommand)
include(bugsplat)
diff --git a/indra/cmake/LLCoreHttp.cmake b/indra/cmake/LLCoreHttp.cmake
index 22ed5fef9c..5464e4d327 100644
--- a/indra/cmake/LLCoreHttp.cmake
+++ b/indra/cmake/LLCoreHttp.cmake
@@ -1,5 +1,5 @@
# -*- cmake -*-
-include(CURL)
include(OpenSSL)
+include(CURL)
include(NGHTTP2)
diff --git a/indra/cmake/LLPhysicsExtensions.cmake b/indra/cmake/LLPhysicsExtensions.cmake
index 80d243d9f8..1cb1679d75 100644
--- a/indra/cmake/LLPhysicsExtensions.cmake
+++ b/indra/cmake/LLPhysicsExtensions.cmake
@@ -26,6 +26,9 @@ if (HAVOK)
elseif (HAVOK_TPV)
use_prebuilt_binary(llphysicsextensions_tpv)
target_link_libraries( llphysicsextensions_impl INTERFACE llphysicsextensions_tpv)
+elseif (NOT (USE_AUTOBUILD_3P OR USE_CONAN))
+ target_link_libraries( llphysicsextensions_impl INTERFACE llphysicsextensionsstub)
+ return ()
else (HAVOK)
use_prebuilt_binary(llphysicsextensions_stub)
set(LLPHYSICSEXTENSIONS_SRC_DIR ${LIBS_PREBUILT_DIR}/llphysicsextensions/stub)
diff --git a/indra/cmake/LLPrimitive.cmake b/indra/cmake/LLPrimitive.cmake
index d0a52ffb63..39c07e3377 100644
--- a/indra/cmake/LLPrimitive.cmake
+++ b/indra/cmake/LLPrimitive.cmake
@@ -18,6 +18,119 @@ if( USE_CONAN )
"${CONAN_INCLUDE_DIRS_COLLADADOM}/collada-dom/1.4/" )
endif()
+if( USESYSTEMLIBS )
+ if( WINDOWS )
+ include(FindPkgConfig)
+ pkg_check_modules(Colladadom REQUIRED collada-dom-141)
+ target_compile_definitions( ll::colladadom INTERFACE COLLADA_DOM_SUPPORT141 )
+ target_include_directories( ll::colladadom SYSTEM INTERFACE ${Colladadom_INCLUDE_DIRS} )
+ target_link_directories( ll::colladadom INTERFACE ${Colladadom_LIBRARY_DIRS} )
+ target_link_libraries( ll::colladadom INTERFACE ${Colladadom_LIBRARIES} )
+ return ()
+ elseif( LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD )
+ # Build of the collada-dom for Linux and FreeBSD is done in
+ # indra/llprimitive/CMakeLists.txt
+ return ()
+ else( WINDOWS )
+ include(FindPkgConfig)
+ pkg_check_modules(Minizip REQUIRED minizip)
+ pkg_check_modules(Libxml2 REQUIRED libxml-2.0)
+ pkg_check_modules(Libpcrecpp libpcrecpp)
+ target_link_libraries( ll::minizip-ng INTERFACE ${Minizip_LIBRARIES} )
+ target_link_libraries( ll::libxml INTERFACE ${Libxml2_LIBRARIES} )
+ if( ${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/colladadom_installed OR NOT ${colladadom_installed} EQUAL 0 )
+ if( NOT EXISTS ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4.tar.gz )
+ file(DOWNLOAD
+ https://github.com/secondlife/3p-colladadom/archive/refs/tags/v2.3-r4.tar.gz
+ ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4.tar.gz
+ )
+ endif( NOT EXISTS ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4.tar.gz )
+ file(ARCHIVE_EXTRACT
+ INPUT ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4.tar.gz
+ DESTINATION ${CMAKE_BINARY_DIR}
+ )
+ file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/include/collada/1.4)
+ if( DARWIN )
+ try_compile(COLLADADOM_RESULT
+ PROJECT colladadom
+ SOURCE_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4
+ BINARY_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4
+ TARGET collada14dom
+ CMAKE_FLAGS
+ -DCMAKE_CXX_FLAGS:STRING=-I${Minizip_INCLUDE_DIRS}
+ "-DCMAKE_SHARED_LINKER_FLAGS:STRING=-L${Minizip_LIBRARY_DIRS} -L${Minizip_LIBRARY_DIRS}exec/boost/1.81/lib"
+ -Dlibpcrecpp_LIBRARIES:STRING=pcrecpp
+ -DZLIB_LIBRARIES:STRING=${Libxml2_LIBRARIES}
+ -DBoost_FILESYSTEM_LIBRARY:STRING=boost_filesystem-mt
+ -DBoost_SYSTEM_LIBRARY:STRING=boost_system-mt
+ -Dlibpcrecpp_CFLAGS_OTHERS:STRING=-I${Libpcrecpp_INCLUDE_DIRS}
+ -DEXTRA_COMPILE_FLAGS:STRING=-I${Libxml2_INCLUDE_DIRS}
+ -DBoost_CFLAGS:STRING=-I${Libpcrecpp_LIBRARY_DIRS}exec/boost/1.81/include
+ -DOPT_COLLADA14:BOOL=ON
+ -DCOLLADA_DOM_INCLUDE_INSTALL_DIR:FILEPATH=${LIBS_PREBUILT_DIR}/include/collada
+ -DCOLLADA_DOM_SOVERSION:STRING=0
+ -DCOLLADA_DOM_VERSION:STRING=2.3-r4
+ OUTPUT_VARIABLE colladadom_installed
+ )
+ if( ${COLLADADOM_RESULT} )
+ file(
+ COPY
+ ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/src/1.4/libcollada14dom.2.3-r4.dylib
+ ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/src/1.4/libcollada14dom.0.dylib
+ ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/src/1.4/libcollada14dom.dylib
+ DESTINATION ${LIBS_PREBUILT_DIR}/lib/release
+ FOLLOW_SYMLINK_CHAIN
+ )
+ endif( ${COLLADADOM_RESULT} )
+ else( DARWIN )
+ execute_process(
+ COMMAND sed -i "" -e "s/SHARED/STATIC/g" 1.4/CMakeLists.txt
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/src
+ )
+ try_compile(COLLADADOM_RESULT
+ PROJECT colladadom
+ SOURCE_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4
+ BINARY_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4
+ TARGET collada14dom
+ CMAKE_FLAGS
+ -DCMAKE_CXX_FLAGS:STRING=-I${Minizip_INCLUDE_DIRS}
+ -DCMAKE_SHARED_LINKER_FLAGS:STRING=-L${Minizip_LIBRARY_DIRS}
+ -Dlibpcrecpp_LIBRARIES:STRING=pcrecpp
+ -DZLIB_LIBRARIES:STRING=${Libxml2_LIBRARIES}
+ -DBoost_FILESYSTEM_LIBRARY:STRING=boost_filesystem
+ -DBoost_SYSTEM_LIBRARY:STRING=boost_system
+ -Dlibpcrecpp_CFLAGS_OTHERS:STRING=-I${Libpcrecpp_INCLUDE_DIRS}
+ -DEXTRA_COMPILE_FLAGS:STRING=-I${Libxml2_INCLUDE_DIRS}
+ -DOPT_COLLADA14:BOOL=ON
+ -DCOLLADA_DOM_INCLUDE_INSTALL_DIR:FILEPATH=${LIBS_PREBUILT_DIR}/include/collada
+ -DCOLLADA_DOM_SOVERSION:STRING=0
+ -DCOLLADA_DOM_VERSION:STRING=2.3-r4
+ OUTPUT_VARIABLE colladadom_installed
+ )
+ if( ${COLLADADOM_RESULT} )
+ file(
+ COPY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/src/1.4/libcollada14dom.a
+ DESTINATION ${LIBS_PREBUILT_DIR}/lib/release
+ )
+ endif( ${COLLADADOM_RESULT} )
+ endif( DARWIN )
+ if( ${COLLADADOM_RESULT} )
+ file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/include/collada/1.4)
+ file(
+ COPY
+ ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/include/1.4
+ ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/include/1.5
+ ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/include/dae
+ ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/include/dae.h
+ ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/include/dom.h
+ ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/include/modules
+ DESTINATION ${LIBS_PREBUILT_DIR}/include/collada
+ )
+ file(WRITE ${PREBUILD_TRACKING_DIR}/colladadom_installed "${colladadom_installed}")
+ endif( ${COLLADADOM_RESULT} )
+ endif( ${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/colladadom_installed OR NOT ${colladadom_installed} EQUAL 0 )
+ endif( WINDOWS )
+else( USESYSTEMLIBS )
use_system_binary( colladadom )
use_prebuilt_binary(colladadom)
@@ -35,6 +148,7 @@ if (WINDOWS)
else()
target_link_libraries( ll::libxml INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libxml2.a)
endif()
+endif( USESYSTEMLIBS )
target_include_directories( ll::colladadom SYSTEM INTERFACE
${LIBS_PREBUILT_DIR}/include/collada
@@ -44,6 +158,6 @@ if (WINDOWS)
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::boost ll::libxml ll::minizip-ng)
-elseif (LINUX)
- target_link_libraries(ll::colladadom INTERFACE collada14dom ll::boost ll::libxml ll::minizip-ng)
+else ()
+ target_link_libraries(ll::colladadom INTERFACE collada14dom ll::boost ll::libxml ll::minizip-ng ${Libpcrecpp_LIBRARIES})
endif()
diff --git a/indra/cmake/LLWindow.cmake b/indra/cmake/LLWindow.cmake
index 2e1b601b79..31907d31df 100644
--- a/indra/cmake/LLWindow.cmake
+++ b/indra/cmake/LLWindow.cmake
@@ -7,16 +7,27 @@ include(Prebuilt)
include_guard()
add_library( ll::SDL INTERFACE IMPORTED )
+if (USESYSTEMLIBS AND NOT (WINDOWS OR DARWIN))
+ include(FindPkgConfig)
+ pkg_check_modules(Sdl2 REQUIRED sdl2)
+ target_compile_definitions( ll::SDL INTERFACE LL_SDL=1)
+ target_include_directories(ll::SDL SYSTEM INTERFACE ${Sdl2_INCLUDE_DIRS})
+ target_link_directories(ll::SDL INTERFACE ${Sdl2_LIBRARY_DIRS})
+ if (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
+ list(APPEND Sdl2_LIBRARIES X11)
+ endif ()
+ target_link_libraries(ll::SDL INTERFACE ${Sdl2_LIBRARIES})
+ return ()
+endif ()
+
if (LINUX)
#Must come first as use_system_binary can exit this file early
- target_compile_definitions( ll::SDL INTERFACE LL_SDL=1)
+ target_compile_definitions( ll::SDL INTERFACE LL_SDL_VERSION=2 LL_SDL)
- use_system_binary(SDL)
- use_prebuilt_binary(SDL)
+ #find_package(SDL2 REQUIRED)
+ #target_link_libraries( ll::SDL INTERFACE SDL2::SDL2 SDL2::SDL2main X11)
- target_include_directories( ll::SDL SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include)
- target_link_libraries( ll::SDL INTERFACE SDL directfb fusion direct X11)
+ use_prebuilt_binary(SDL2)
+ target_link_libraries( ll::SDL INTERFACE SDL2 X11)
endif (LINUX)
-
-
diff --git a/indra/cmake/LibVLCPlugin.cmake b/indra/cmake/LibVLCPlugin.cmake
index 599ce02844..779576a485 100644
--- a/indra/cmake/LibVLCPlugin.cmake
+++ b/indra/cmake/LibVLCPlugin.cmake
@@ -5,9 +5,56 @@ include(Prebuilt)
include_guard()
add_library( ll::libvlc INTERFACE IMPORTED )
+if (USESYSTEMLIBS)
+ if (DARWIN)
+ if (CMAKE_OSX_ARCHITECTURES MATCHES arm64)
+ if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/vlc_installed OR NOT ${vlc_installed} EQUAL 0)
+ if (NOT EXISTS ${CMAKE_BINARY_DIR}/vlc-3.0.21-arm64.dmg)
+ file(DOWNLOAD
+ https://get.videolan.org/vlc/3.0.21/macosx/vlc-3.0.21-arm64.dmg
+ ${CMAKE_BINARY_DIR}/vlc-3.0.21-arm64.dmg
+ )
+ endif (NOT EXISTS ${CMAKE_BINARY_DIR}/vlc-3.0.21-arm64.dmg)
+ file(WRITE ${PREBUILD_TRACKING_DIR}/vlc_installed "0")
+ endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/vlc_installed OR NOT ${vlc_installed} EQUAL 0)
+ execute_process(
+ COMMAND hdiutil attach -noverify vlc-3.0.21-arm64.dmg
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ )
+ else (CMAKE_OSX_ARCHITECTURES MATCHES arm64)
+ if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/vlc_installed OR NOT ${vlc_installed} EQUAL 0)
+ if (NOT EXISTS ${CMAKE_BINARY_DIR}/vlc-3.0.21-intel64.dmg)
+ file(DOWNLOAD
+ https://get.videolan.org/vlc/3.0.21/macosx/vlc-3.0.21-intel64.dmg
+ ${CMAKE_BINARY_DIR}/vlc-3.0.21-intel64.dmg
+ )
+ endif (NOT EXISTS ${CMAKE_BINARY_DIR}/vlc-3.0.21-intel64.dmg)
+ file(WRITE ${PREBUILD_TRACKING_DIR}/vlc_installed "0")
+ endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/vlc_installed OR NOT ${vlc_installed} EQUAL 0)
+ execute_process(
+ COMMAND hdiutil attach -noverify vlc-3.0.21-intel64.dmg
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ )
+ endif (CMAKE_OSX_ARCHITECTURES MATCHES arm64)
+ target_include_directories( ll::libvlc SYSTEM INTERFACE /Volumes/VLC\ media\ player/VLC.app/Contents/MacOS/include)
+ target_link_directories( ll::libvlc INTERFACE /Volumes/VLC\ media\ player/VLC.app/Contents/MacOS/lib)
+ target_link_libraries( ll::libvlc INTERFACE vlc vlccore )
+ else (DARWIN)
+ include(FindPkgConfig)
+ pkg_check_modules(Libvlc REQUIRED libvlc vlc-plugin)
+ target_include_directories( ll::libvlc SYSTEM INTERFACE ${Libvlc_INCLUDE_DIRS} )
+ target_link_directories( ll::libvlc INTERFACE ${Libvlc_LIBRARY_DIRS} )
+ target_link_libraries( ll::libvlc INTERFACE ${Libvlc_LIBRARIES} )
+ endif (DARWIN)
+ set(LIBVLCPLUGIN ON CACHE BOOL
+ "LIBVLCPLUGIN support for the llplugin/llmedia test apps.")
+ return()
+else (USESYSTEMLIBS)
+
use_prebuilt_binary(vlc-bin)
set(LIBVLCPLUGIN ON CACHE BOOL
"LIBVLCPLUGIN support for the llplugin/llmedia test apps.")
+endif (USESYSTEMLIBS)
if (WINDOWS)
target_link_libraries( ll::libvlc INTERFACE
diff --git a/indra/cmake/LibraryInstall.cmake b/indra/cmake/LibraryInstall.cmake
new file mode 100644
index 0000000000..b94841897c
--- /dev/null
+++ b/indra/cmake/LibraryInstall.cmake
@@ -0,0 +1,13 @@
+list(REMOVE_ITEM ${PROJECT_NAME}_HEADER_FILES CMakeLists.txt)
+#install(FILES ${${PROJECT_NAME}_HEADER_FILES}
+# DESTINATION include/${PROJECT_NAME})
+if (BUILD_SHARED_LIBS)
+ if (EXISTS ${CMAKE_SYSROOT}/usr/lib/${ARCH}-linux-gnu)
+ set(_LIB lib/${ARCH}-linux-gnu)
+ elseif (EXISTS /lib64)
+ set(_LIB lib64)
+ else ()
+ set(_LIB lib)
+ endif ()
+ install(TARGETS ${PROJECT_NAME} DESTINATION ${_LIB})
+endif ()
diff --git a/indra/cmake/Linker.cmake b/indra/cmake/Linker.cmake
new file mode 100644
index 0000000000..8016842192
--- /dev/null
+++ b/indra/cmake/Linker.cmake
@@ -0,0 +1,11 @@
+include_guard(GLOBAL)
+
+if( LINK_WITH_MOLD )
+ find_program(MOLD_BIN mold)
+ if(MOLD_BIN)
+ message(STATUS "Mold linker found: ${MOLD_BIN}. Enabling mold as active linker.")
+ add_link_options("-fuse-ld=${MOLD_BIN}")
+ else()
+ message(STATUS "Mold linker not found. Using default linker.")
+ endif()
+endif()
diff --git a/indra/cmake/Linking.cmake b/indra/cmake/Linking.cmake
index 1d757abeff..8e91dac109 100644
--- a/indra/cmake/Linking.cmake
+++ b/indra/cmake/Linking.cmake
@@ -66,7 +66,7 @@ elseif (WINDOWS)
rpcrt4.lib
legacy_stdio_definitions
)
-else()
+elseif (DARWIN)
include(CMakeFindFrameworks)
find_library(COREFOUNDATION_LIBRARY CoreFoundation)
find_library(CARBON_LIBRARY Carbon)
diff --git a/indra/cmake/Meshoptimizer.cmake b/indra/cmake/Meshoptimizer.cmake
index fd144d2b97..e1bfe10e93 100644
--- a/indra/cmake/Meshoptimizer.cmake
+++ b/indra/cmake/Meshoptimizer.cmake
@@ -6,15 +6,51 @@ include(Prebuilt)
include_guard()
add_library( ll::meshoptimizer INTERFACE IMPORTED )
+if (NOT USESYSTEMLIBS)
use_system_binary(meshoptimizer)
+elseif (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu) OR CMAKE_SYSTEM_NAME MATCHES FreeBSD)
+ find_package(meshoptimizer)
+ target_link_libraries( ll::meshoptimizer INTERFACE meshoptimizer)
+ return ()
+endif (NOT USESYSTEMLIBS)
+
+if (LINUX OR NOT USESYSTEMLIBS)
use_prebuilt_binary(meshoptimizer)
+elseif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/meshoptimizer_installed OR NOT ${meshoptimizer_installed} EQUAL 0)
+ if (NOT EXISTS ${CMAKE_BINARY_DIR}/meshoptimizer-0.21.tar.gz)
+ file(DOWNLOAD
+ https://github.com/zeux/meshoptimizer/archive/refs/tags/v0.21.tar.gz
+ ${CMAKE_BINARY_DIR}/meshoptimizer-0.21.tar.gz
+ )
+ endif (NOT EXISTS ${CMAKE_BINARY_DIR}/meshoptimizer-0.21.tar.gz)
+ file(ARCHIVE_EXTRACT
+ INPUT ${CMAKE_BINARY_DIR}/meshoptimizer-0.21.tar.gz
+ DESTINATION ${CMAKE_BINARY_DIR}
+ )
+ try_compile(MESHOPTIMIZER_RESULT
+ PROJECT meshoptimizer
+ SOURCE_DIR ${CMAKE_BINARY_DIR}/meshoptimizer-0.21
+ BINARY_DIR ${CMAKE_BINARY_DIR}/meshoptimizer-0.21
+ TARGET meshoptimizer
+ OUTPUT_VARIABLE meshoptimizer_installed
+ )
+ if (${MESHOPTIMIZER_RESULT})
+ file(
+ COPY ${CMAKE_BINARY_DIR}/meshoptimizer-0.21/src/meshoptimizer.h
+ DESTINATION ${LIBS_PREBUILT_DIR}/include/meshoptimizer
+ )
+ file(
+ COPY ${CMAKE_BINARY_DIR}/meshoptimizer-0.21/libmeshoptimizer.a
+ DESTINATION ${LIBS_PREBUILT_DIR}/lib/release
+ )
+ file(WRITE ${PREBUILD_TRACKING_DIR}/meshoptimizer_installed "${meshoptimizer_installed}")
+ endif (${MESHOPTIMIZER_RESULT})
+endif (LINUX OR NOT USESYSTEMLIBS)
-if (WINDOWS)
+if (NOT USESYSTEMLIBS AND WINDOWS)
target_link_libraries( ll::meshoptimizer INTERFACE meshoptimizer.lib)
-elseif (LINUX)
- target_link_libraries( ll::meshoptimizer INTERFACE meshoptimizer.o)
-elseif (DARWIN)
+else (NOT USESYSTEMLIBS AND WINDOWS)
target_link_libraries( ll::meshoptimizer INTERFACE libmeshoptimizer.a)
-endif (WINDOWS)
+endif (NOT USESYSTEMLIBS AND WINDOWS)
target_include_directories( ll::meshoptimizer SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/meshoptimizer)
diff --git a/indra/cmake/Mikktspace.cmake b/indra/cmake/Mikktspace.cmake
index 9fd2becba4..c73321e313 100644
--- a/indra/cmake/Mikktspace.cmake
+++ b/indra/cmake/Mikktspace.cmake
@@ -1,6 +1,4 @@
# -*- cmake -*-
include(Prebuilt)
-if (NOT USESYSTEMLIBS)
use_prebuilt_binary(mikktspace)
-endif (NOT USESYSTEMLIBS)
diff --git a/indra/cmake/NDOF.cmake b/indra/cmake/NDOF.cmake
index b88fbccf2a..b75bb2509d 100644
--- a/indra/cmake/NDOF.cmake
+++ b/indra/cmake/NDOF.cmake
@@ -8,7 +8,37 @@ add_library( ll::ndof INTERFACE IMPORTED )
if (NDOF)
if (WINDOWS OR DARWIN)
+ if (NOT USESYSTEMLIBS)
use_prebuilt_binary(libndofdev)
+ elseif (DARWIN AND (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/libndofdev_installed OR NOT ${libndofdev_installed} EQUAL 0))
+ file(DOWNLOAD
+ https://github.com/secondlife/3p-libndofdev/archive/refs/tags/v0.1.8e9edc7.tar.gz
+ ${CMAKE_BINARY_DIR}/3p-libndofdev-0.1.8e9edc7.tar.gz
+ )
+ file(ARCHIVE_EXTRACT
+ INPUT ${CMAKE_BINARY_DIR}/3p-libndofdev-0.1.8e9edc7.tar.gz
+ DESTINATION ${CMAKE_BINARY_DIR}
+ )
+ try_compile(LIBNDOFDEV_RESULT
+ PROJECT libndofdev
+ SOURCE_DIR ${CMAKE_BINARY_DIR}/3p-libndofdev-0.1.8e9edc7/libndofdev
+ BINARY_DIR ${CMAKE_BINARY_DIR}/3p-libndofdev-0.1.8e9edc7/libndofdev
+ TARGET ndofdev
+ CMAKE_FLAGS -DCMAKE_C_FLAGS:STRING=-DTARGET_OS_MAC\ -Wno-int-conversion
+ OUTPUT_VARIABLE libndofdev_installed
+ )
+ if (${LIBNDOFDEV_RESULT})
+ file(
+ COPY ${CMAKE_BINARY_DIR}/3p-libndofdev-0.1.8e9edc7/libndofdev/src/ndofdev_external.h
+ DESTINATION ${LIBS_PREBUILT_DIR}/include
+ )
+ file(
+ COPY ${CMAKE_BINARY_DIR}/3p-libndofdev-0.1.8e9edc7/libndofdev/src/libndofdev.dylib
+ DESTINATION ${LIBS_PREBUILT_DIR}/lib/release
+ )
+ file(WRITE ${PREBUILD_TRACKING_DIR}/libndofdev_installed "${libndofdev_installed}")
+ endif (${LIBNDOFDEV_RESULT})
+ endif (NOT USESYSTEMLIBS)
elseif (LINUX)
use_prebuilt_binary(open-libndofdev)
endif (WINDOWS OR DARWIN)
@@ -19,6 +49,6 @@ if (NDOF)
target_link_libraries( ll::ndof INTERFACE ndofdev)
endif (WINDOWS)
target_compile_definitions( ll::ndof INTERFACE LIB_NDOF=1)
+else()
+ add_compile_options(-ULIB_NDOF)
endif (NDOF)
-
-
diff --git a/indra/cmake/OPENAL.cmake b/indra/cmake/OPENAL.cmake
index 347dd02cd7..6555027dc1 100644
--- a/indra/cmake/OPENAL.cmake
+++ b/indra/cmake/OPENAL.cmake
@@ -18,6 +18,17 @@ endif()
if (USE_OPENAL)
add_library( ll::openal INTERFACE IMPORTED )
+
+ if (NOT (USE_AUTOBUILD_3P OR USE_CONAN))
+ target_compile_definitions( ll::openal INTERFACE LL_OPENAL=1)
+ include(FindPkgConfig)
+ pkg_check_modules(Openal REQUIRED freealut)
+ target_include_directories(ll::openal SYSTEM INTERFACE ${Openal_INCLUDE_DIRS})
+ target_link_directories(ll::openal INTERFACE ${Openal_LIBRARY_DIRS})
+ target_link_libraries(ll::openal INTERFACE ${Openal_LIBRARIES})
+ return ()
+ endif ()
+
target_include_directories( ll::openal SYSTEM INTERFACE "${LIBS_PREBUILT_DIR}/include/AL")
target_compile_definitions( ll::openal INTERFACE LL_OPENAL=1)
use_prebuilt_binary(openal)
diff --git a/indra/cmake/OpenJPEG.cmake b/indra/cmake/OpenJPEG.cmake
index c4aab2e9e5..463e4365ce 100644
--- a/indra/cmake/OpenJPEG.cmake
+++ b/indra/cmake/OpenJPEG.cmake
@@ -4,8 +4,50 @@ include(Prebuilt)
include_guard()
add_library( ll::openjpeg INTERFACE IMPORTED )
+if (NOT USESYSTEMLIBS)
use_system_binary(openjpeg)
+endif (NOT USESYSTEMLIBS)
+if (LINUX OR NOT USESYSTEMLIBS)
use_prebuilt_binary(openjpeg)
+elseif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/openjpeg_installed OR NOT ${openjpeg_installed} EQUAL 0)
+ if (NOT EXISTS ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248.tar.gz)
+ file(DOWNLOAD
+ https://github.com/secondlife/3p-openjpeg/archive/refs/tags/v2.5.0.ea12248.tar.gz
+ ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248.tar.gz
+ )
+ endif (NOT EXISTS ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248.tar.gz)
+ file(ARCHIVE_EXTRACT
+ INPUT ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248.tar.gz
+ DESTINATION ${CMAKE_BINARY_DIR}
+ )
+ try_compile(OPENJPEG_RESULT
+ PROJECT OPENJPEG
+ SOURCE_DIR ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg
+ BINARY_DIR ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg
+ TARGET openjp2
+ CMAKE_FLAGS
+ -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS}
+ -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=ON
+ OUTPUT_VARIABLE openjpeg_installed
+ )
+ if (${OPENJPEG_RESULT})
+ file(
+ COPY
+ ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg/src/lib/openjp2/cio.h
+ ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg/src/lib/openjp2/event.h
+ ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg/src/lib/openjp2/openjpeg.h
+ ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg/src/lib/openjp2/opj_config.h
+ ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg/src/lib/openjp2/opj_config_private.h
+ ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg/src/lib/openjp2/opj_stdint.h
+ DESTINATION ${LIBS_PREBUILT_DIR}/include/openjpeg
+ )
+ file(
+ COPY ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg/bin/libopenjp2.a
+ DESTINATION ${LIBS_PREBUILT_DIR}/lib/release
+ )
+ file(WRITE ${PREBUILD_TRACKING_DIR}/openjpeg_installed "${openjpeg_installed}")
+ endif (${OPENJPEG_RESULT})
+endif (LINUX OR NOT USESYSTEMLIBS)
target_link_libraries(ll::openjpeg INTERFACE openjp2 )
-target_include_directories( ll::openjpeg SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/openjpeg)
+target_include_directories( ll::openjpeg SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include)
diff --git a/indra/cmake/OpenSSL.cmake b/indra/cmake/OpenSSL.cmake
index 67a84e14af..c6481c89e9 100644
--- a/indra/cmake/OpenSSL.cmake
+++ b/indra/cmake/OpenSSL.cmake
@@ -5,14 +5,187 @@ include(Linking)
include_guard()
add_library( ll::openssl INTERFACE IMPORTED )
+if (NOT USESYSTEMLIBS)
use_system_binary(openssl)
+endif (NOT USESYSTEMLIBS)
+if (DARWIN OR LINUX OR NOT USESYSTEMLIBS)
use_prebuilt_binary(openssl)
-if (WINDOWS)
+ if (DARWIN)
+ execute_process(
+ COMMAND lipo -archs libcrypto.a
+ WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release
+ OUTPUT_VARIABLE crypto_archs
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ if (NOT ${crypto_archs} STREQUAL ${CMAKE_OSX_ARCHITECTURES})
+ execute_process(
+ COMMAND lipo
+ libcrypto.a
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libcrypto.a
+ WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release
+ )
+ endif (NOT ${crypto_archs} STREQUAL ${CMAKE_OSX_ARCHITECTURES})
+ execute_process(
+ COMMAND lipo -archs libssl.a
+ WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release
+ OUTPUT_VARIABLE ssl_archs
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ if (NOT ${ssl_archs} STREQUAL ${CMAKE_OSX_ARCHITECTURES})
+ execute_process(
+ COMMAND lipo
+ libssl.a
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libssl.a
+ WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release
+ )
+ endif (NOT ${ssl_archs} STREQUAL ${CMAKE_OSX_ARCHITECTURES})
+ endif (DARWIN)
+elseif (CMAKE_SYSTEM_NAME MATCHES FreeBSD AND (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/openssl_installed OR NOT ${openssl_installed} EQUAL 0))
+ if (NOT EXISTS ${CMAKE_BINARY_DIR}/OpenSSL_1_1_1w.tar.gz)
+ file(DOWNLOAD
+ https://github.com/openssl/openssl/archive/refs/tags/OpenSSL_1_1_1w.tar.gz
+ ${CMAKE_BINARY_DIR}/OpenSSL_1_1_1w.tar.gz
+ )
+ endif (NOT EXISTS ${CMAKE_BINARY_DIR}/OpenSSL_1_1_1w.tar.gz)
+ file(ARCHIVE_EXTRACT
+ INPUT ${CMAKE_BINARY_DIR}/OpenSSL_1_1_1w.tar.gz
+ DESTINATION ${CMAKE_BINARY_DIR}
+ )
+ execute_process(
+ COMMAND ./config no-shared
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w
+ )
+ execute_process(
+ COMMAND make -j${MAKE_JOBS}
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w
+ RESULT_VARIABLE openssl_installed
+ )
+ file(
+ COPY
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/aes.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/asn1.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/asn1_mac.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/asn1err.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/asn1t.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/async.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/asyncerr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/bio.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/bioerr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/blowfish.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/bn.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/bnerr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/buffer.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/buffererr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/camellia.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/cast.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/cmac.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/cms.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/cmserr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/comp.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/comperr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/conf.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/conf_api.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/conferr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/crypto.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/cryptoerr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ct.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/cterr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/des.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/dh.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/dherr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/dsa.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/dsaerr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/dtls1.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/e_os2.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ebcdic.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ec.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ecdh.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ecdsa.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ecerr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/engine.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/engineerr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/err.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/evp.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/evperr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/hmac.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/idea.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/kdf.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/kdferr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/lhash.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/md2.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/md4.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/md5.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/mdc2.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/modes.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/obj_mac.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/objects.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/objectserr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ocsp.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ocsperr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/opensslconf.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/opensslv.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ossl_typ.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/pem.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/pem2.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/pemerr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/pkcs12.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/pkcs12err.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/pkcs7.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/pkcs7err.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/rand.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/rand_drbg.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/randerr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/rc2.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/rc4.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/rc5.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ripemd.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/rsa.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/rsaerr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/safestack.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/seed.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/sha.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/srp.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/srtp.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ssl.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ssl2.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ssl3.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/sslerr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/stack.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/store.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/storeerr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/symhacks.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/tls1.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ts.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/tserr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/txt_db.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ui.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/uierr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/whrlpool.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/x509.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/x509_vfy.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/x509err.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/x509v3.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/x509v3err.h
+ DESTINATION ${LIBS_PREBUILT_DIR}/include/openssl
+ )
+ file(
+ COPY
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/libcrypto.a
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/libssl.a
+ DESTINATION ${LIBS_PREBUILT_DIR}/lib/release
+ )
+ file(WRITE ${PREBUILD_TRACKING_DIR}/openssl_installed "${openssl_installed}")
+endif (DARWIN OR LINUX OR NOT USESYSTEMLIBS)
+if (WINDOWS AND NOT USESYSTEMLIBS)
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 ${ARCH_PREBUILT_DIRS_RELEASE}/libssl.a ${ARCH_PREBUILT_DIRS_RELEASE}/libcrypto.a dl)
else()
target_link_libraries(ll::openssl INTERFACE ssl crypto)
-endif (WINDOWS)
+endif (WINDOWS AND NOT USESYSTEMLIBS)
+if (NOT (WINDOWS AND USESYSTEMLIBS))
target_include_directories( ll::openssl SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include)
+endif (NOT (WINDOWS AND USESYSTEMLIBS))
diff --git a/indra/cmake/Prebuilt.cmake b/indra/cmake/Prebuilt.cmake
index 634cc15c21..4034599fde 100644
--- a/indra/cmake/Prebuilt.cmake
+++ b/indra/cmake/Prebuilt.cmake
@@ -40,6 +40,38 @@ macro (use_prebuilt_binary _binary)
--install-dir=${AUTOBUILD_INSTALL_DIR}
${_binary} ")
endif(DEBUG_PREBUILT)
+ if(USESYSTEMLIBS)
+ execute_process(COMMAND xmllint
+ --xpath
+ "//map/map/map/map/map/map/string[contains(text(),'${_binary}')][contains(text(),'common')]/text()" autobuild.xml
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/..
+ OUTPUT_VARIABLE package_url
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ if ("${package_url}" STREQUAL "")
+ string(TOLOWER ${CMAKE_SYSTEM_NAME} system_name)
+ if (${system_name} MATCHES freebsd)
+ set(system_name "linux")
+ endif (${system_name} MATCHES freebsd)
+ execute_process(COMMAND xmllint
+ --xpath
+ "//map/map/map/map/map/map/string[contains(text(),'${_binary}')][contains(text(),'${system_name}')]/text()" autobuild.xml
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/..
+ OUTPUT_VARIABLE package_url
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ endif ("${package_url}" STREQUAL "")
+ string(REGEX REPLACE "^https://(megapahit.net/downloads|github.com/secondlife|automated-builds-secondlife-com.s3.amazonaws.com/ct2).*/" "" package_name ${package_url})
+ file(DOWNLOAD
+ ${package_url}
+ ${CMAKE_BINARY_DIR}/${package_name}
+ )
+ file(ARCHIVE_EXTRACT
+ INPUT ${CMAKE_BINARY_DIR}/${package_name}
+ DESTINATION ${AUTOBUILD_INSTALL_DIR}
+ )
+ set(${_binary}_installed 0)
+ else(USESYSTEMLIBS)
execute_process(COMMAND "${AUTOBUILD_EXECUTABLE}"
install
--install-dir=${AUTOBUILD_INSTALL_DIR}
@@ -47,6 +79,7 @@ macro (use_prebuilt_binary _binary)
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
RESULT_VARIABLE ${_binary}_installed
)
+ endif(USESYSTEMLIBS)
file(WRITE ${PREBUILD_TRACKING_DIR}/${_binary}_installed "${${_binary}_installed}")
endif(${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/${_binary}_installed OR NOT ${${_binary}_installed} EQUAL 0)
@@ -67,6 +100,33 @@ macro ( use_system_binary package )
endif()
endforeach()
return()
+ elseif( NOT USE_AUTOBUILD_3P )
+ include(FindPkgConfig)
+ pkg_check_modules(${package} ${package})
+ if( ${package}_FOUND )
+ target_link_directories( ll::${package} INTERFACE ${${package}_LIBRARY_DIRS} )
+ else()
+ pkg_check_modules(${package} lib${package})
+ if( ${package}_FOUND )
+ target_link_directories( ll::${package} INTERFACE ${${package}_LIBRARY_DIRS} )
+ else()
+ find_package( ${package} REQUIRED )
+ endif()
+ endif()
+ target_include_directories( ll::${package} SYSTEM INTERFACE ${${package}_INCLUDE_DIRS} )
+ target_link_libraries( ll::${package} INTERFACE ${${package}_LIBRARIES} )
+ return()
endif()
endmacro()
+find_package(Patch)
+
+# Download the third party software archive and patch it.
+macro(prepare_thirdparty url filename dirname patch hash)
+ file(DOWNLOAD ${url} ${filename} EXPECTED_HASH SHA512=${hash})
+ file(ARCHIVE_EXTRACT INPUT ${filename}
+ DESTINATION ${CMAKE_SOURCE_DIR}/../..)
+ execute_process(COMMAND ${Patch_EXECUTABLE} "-p1" "-i"
+ ${CMAKE_SOURCE_DIR}/../patches/${patch}
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/../../${dirname})
+endmacro()
diff --git a/indra/cmake/UI.cmake b/indra/cmake/UI.cmake
index 8f135676d6..a3423bb895 100644
--- a/indra/cmake/UI.cmake
+++ b/indra/cmake/UI.cmake
@@ -1,36 +1,36 @@
# -*- cmake -*-
include(Prebuilt)
include(FreeType)
+include(GLIB)
add_library( ll::uilibraries INTERFACE IMPORTED )
-if (LINUX)
- target_compile_definitions(ll::uilibraries INTERFACE LL_GTK=1 LL_X11=1 )
+if (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
+ if (NOT USESYSTEMLIBS)
+ use_prebuilt_binary(fltk)
+ endif ()
+ target_compile_definitions(ll::uilibraries INTERFACE LL_FLTK=1 LL_X11=1 )
if( USE_CONAN )
- target_link_libraries( ll::uilibraries INTERFACE CONAN_PKG::gtk )
return()
endif()
- use_prebuilt_binary(gtk-atk-pango-glib)
target_link_libraries( ll::uilibraries INTERFACE
- atk-1.0
- gdk-x11-2.0
- gdk_pixbuf-2.0
- Xinerama
- glib-2.0
- gmodule-2.0
- gobject-2.0
- gthread-2.0
- gtk-x11-2.0
- pango-1.0
- pangoft2-1.0
- pangox-1.0
- pangoxft-1.0
+ fltk
+ Xrender
+ Xcursor
+ Xfixes
+ Xext
+ Xft
Xinerama
+ ll::fontconfig
ll::freetype
- )
-endif (LINUX)
+ ll::SDL
+ ll::glib
+ ll::gio
+ )
+
+endif (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
if( WINDOWS )
target_link_libraries( ll::uilibraries INTERFACE
opengl32
@@ -48,7 +48,8 @@ if( WINDOWS )
)
endif()
+if (NOT USESYSTEMLIBS)
target_include_directories( ll::uilibraries SYSTEM INTERFACE
${LIBS_PREBUILT_DIR}/include
)
-
+endif ()
diff --git a/indra/cmake/UnixInstall.cmake b/indra/cmake/UnixInstall.cmake
index 139be0a008..7aa05ff5a6 100644
--- a/indra/cmake/UnixInstall.cmake
+++ b/indra/cmake/UnixInstall.cmake
@@ -6,14 +6,21 @@ set(INSTALL OFF CACHE BOOL
"Generate install target.")
if (INSTALL)
+ if (CMAKE_SYSTEM_NAME MATCHES FreeBSD)
+ set(INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX} CACHE PATH
+ "Top-level installation directory.")
+ else (CMAKE_SYSTEM_NAME MATCHES FreeBSD)
set(INSTALL_PREFIX /usr CACHE PATH
"Top-level installation directory.")
+ endif (CMAKE_SYSTEM_NAME MATCHES FreeBSD)
- if (EXISTS /lib64)
+ if (EXISTS ${CMAKE_SYSROOT}/usr/lib/${ARCH}-linux-gnu)
+ set(_LIB lib/${ARCH}-linux-gnu)
+ elseif (EXISTS /lib64)
set(_LIB lib64)
- else (EXISTS /lib64)
+ else (EXISTS ${CMAKE_SYSROOT}/usr/lib/${ARCH}-linux-gnu)
set(_LIB lib)
- endif (EXISTS /lib64)
+ endif (EXISTS ${CMAKE_SYSROOT}/usr/lib/${ARCH}-linux-gnu)
set(INSTALL_LIBRARY_DIR ${INSTALL_PREFIX}/${_LIB} CACHE PATH
"Installation directory for read-only shared files.")
@@ -25,7 +32,10 @@ if (INSTALL)
CACHE PATH
"Installation directory for binaries.")
- set(APP_SHARE_DIR ${INSTALL_SHARE_DIR}/secondlife-${viewer_VERSION}
+ set(APP_SHARE_DIR ${INSTALL_SHARE_DIR}/${VIEWER_BINARY_NAME}
CACHE PATH
"Installation directory for read-only data files.")
+ set(APP_LIBEXEC_DIR ${INSTALL_PREFIX}/libexec/${VIEWER_BINARY_NAME}
+ CACHE PATH
+ "Installation directory for non-manual executables.")
endif (INSTALL)
diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake
index 5b3aeb8b7f..c287f135fe 100644
--- a/indra/cmake/Variables.cmake
+++ b/indra/cmake/Variables.cmake
@@ -101,12 +101,15 @@ else (ADDRESS_SIZE EQUAL 32)
endif()
endif (ADDRESS_SIZE EQUAL 32)
+cmake_host_system_information(RESULT MAKE_JOBS QUERY NUMBER_OF_LOGICAL_CORES)
+
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
set(WINDOWS ON BOOL FORCE)
endif (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set(LINUX ON BOOl FORCE)
+ cmake_host_system_information(RESULT LINUX_DISTRO QUERY DISTRIB_ID)
if (ADDRESS_SIZE EQUAL 32)
set(DEB_ARCHITECTURE i386)
@@ -117,7 +120,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)
@@ -127,8 +130,6 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set(CMAKE_SYSTEM_LIBRARY_PATH /usr/lib/${DPKG_ARCH} /usr/local/lib/${DPKG_ARCH} ${CMAKE_SYSTEM_LIBRARY_PATH})
endif (DPKG_RESULT EQUAL 0)
- include(ConfigurePkgConfig)
-
if (INSTALL_PROPRIETARY)
# Only turn on headless if we can find osmesa libraries.
include(FindPkgConfig)
@@ -204,7 +205,7 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "")
set(CMAKE_XCODE_ATTRIBUTE_DISABLE_MANUAL_TARGET_ORDER_BUILD_WARNING YES)
set(CMAKE_XCODE_ATTRIBUTE_GCC_WARN_64_TO_32_BIT_CONVERSION NO)
- set(CMAKE_OSX_ARCHITECTURES "${ARCH}")
+ #set(CMAKE_OSX_ARCHITECTURES "${ARCH}")
string(REPLACE "i686" "i386" CMAKE_OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}")
string(REPLACE "AMD64" "x86_64" CMAKE_OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}")
endif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
diff --git a/indra/cmake/ViewerMiscLibs.cmake b/indra/cmake/ViewerMiscLibs.cmake
index cae68fbc11..13f5ebf862 100644
--- a/indra/cmake/ViewerMiscLibs.cmake
+++ b/indra/cmake/ViewerMiscLibs.cmake
@@ -1,23 +1,23 @@
# -*- cmake -*-
include(Prebuilt)
-if (LINUX)
- #use_prebuilt_binary(libuuid)
+if (NOT (WINDOWS OR DARWIN))
add_library( ll::fontconfig INTERFACE IMPORTED )
- if( NOT USE_CONAN )
- use_prebuilt_binary(fontconfig)
- else()
- target_link_libraries( ll::fontconfig INTERFACE CONAN_PKG::fontconfig )
- endif()
-endif (LINUX)
+ find_package(Fontconfig REQUIRED)
+ target_link_libraries( ll::fontconfig INTERFACE Fontconfig::Fontconfig )
+endif (NOT (WINDOWS OR DARWIN))
-if( NOT USE_CONAN )
+if( USE_AUTOBUILD_3P )
use_prebuilt_binary(libhunspell)
endif()
+if (NOT USESYSTEMLIBS)
use_prebuilt_binary(slvoice)
+endif (NOT USESYSTEMLIBS)
+if ((${LINUX_DISTRO} MATCHES debian OR WINDOWS OR DARWIN) OR NOT USESYSTEMLIBS)
use_prebuilt_binary(nanosvg)
+endif ((${LINUX_DISTRO} MATCHES debian OR WINDOWS OR DARWIN) OR NOT USESYSTEMLIBS)
use_prebuilt_binary(viewer-fonts)
use_prebuilt_binary(emoji_shortcodes)
diff --git a/indra/cmake/VulkanGltf.cmake b/indra/cmake/VulkanGltf.cmake
index 94541d5307..d7083a33c9 100644
--- a/indra/cmake/VulkanGltf.cmake
+++ b/indra/cmake/VulkanGltf.cmake
@@ -1,5 +1,7 @@
# -*- cmake -*-
include(Prebuilt)
+if (NOT USESYSTEMLIBS)
use_prebuilt_binary(vulkan_gltf)
+endif ()
diff --git a/indra/cmake/WebRTC.cmake b/indra/cmake/WebRTC.cmake
index 230522a40a..eec4e2ce7a 100644
--- a/indra/cmake/WebRTC.cmake
+++ b/indra/cmake/WebRTC.cmake
@@ -6,7 +6,76 @@ 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 (${LINUX_DISTRO} MATCHES debian OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
use_prebuilt_binary(webrtc)
+elseif (NOT (WINDOWS OR CMAKE_SYSTEM_NAME MATCHES FreeBSD))
+ target_compile_definitions(ll::webrtc INTERFACE CM_WEBRTC=1)
+ if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/webrtc_installed OR NOT ${webrtc_installed} EQUAL 0)
+ if (DARWIN)
+ set(WEBRTC_PLATFORM macos-arm64)
+ else (DARWIN)
+ set(WEBRTC_PLATFORM linux-x64)
+ endif (DARWIN)
+ if (NOT EXISTS ${CMAKE_BINARY_DIR}/libwebrtc-${WEBRTC_PLATFORM}.tar.xz)
+ file(DOWNLOAD
+ https://github.com/crow-misia/libwebrtc-bin/releases/download/114.5735.6.1/libwebrtc-${WEBRTC_PLATFORM}.tar.xz
+ ${CMAKE_BINARY_DIR}/libwebrtc-${WEBRTC_PLATFORM}.tar.xz
+ SHOW_PROGRESS
+ )
+ endif (NOT EXISTS ${CMAKE_BINARY_DIR}/libwebrtc-${WEBRTC_PLATFORM}.tar.xz)
+ file(ARCHIVE_EXTRACT
+ INPUT ${CMAKE_BINARY_DIR}/libwebrtc-${WEBRTC_PLATFORM}.tar.xz
+ DESTINATION ${LIBS_PREBUILT_DIR}
+ )
+ file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/include/webrtc)
+ file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/include/webrtc)
+ foreach(directory
+ api
+ audio
+ base
+ build
+ buildtools
+ call
+ common_audio
+ common_video
+ examples
+ logging
+ media
+ modules
+ net
+ p2p
+ pc
+ rtc_base
+ rtc_tools
+ sdk
+ stats
+ system_wrappers
+ test
+ testing
+ third_party
+ tools
+ video
+ )
+ file(RENAME
+ ${LIBS_PREBUILT_DIR}/include/${directory}
+ ${LIBS_PREBUILT_DIR}/include/webrtc/${directory}
+ )
+ endforeach()
+ file(RENAME
+ ${LIBS_PREBUILT_DIR}/lib/libwebrtc.a
+ ${LIBS_PREBUILT_DIR}/lib/release/libwebrtc.a
+ )
+ if (CMAKE_OSX_ARCHITECTURES MATCHES arm64)
+ file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/lib/release/WebRTC.framework)
+ file(RENAME
+ ${LIBS_PREBUILT_DIR}/Frameworks/WebRTC.xcframework/${WEBRTC_PLATFORM}/WebRTC.framework
+ ${LIBS_PREBUILT_DIR}/lib/release/WebRTC.framework
+ )
+ file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/Frameworks)
+ endif (CMAKE_OSX_ARCHITECTURES MATCHES arm64)
+ 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)
+endif (${LINUX_DISTRO} MATCHES debian OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
if (WINDOWS)
target_link_libraries( ll::webrtc INTERFACE webrtc.lib )
diff --git a/indra/cmake/ZLIBNG.cmake b/indra/cmake/ZLIBNG.cmake
index d7b920da26..5aa54b0152 100644
--- a/indra/cmake/ZLIBNG.cmake
+++ b/indra/cmake/ZLIBNG.cmake
@@ -8,6 +8,12 @@ add_library( ll::zlib-ng INTERFACE IMPORTED )
if(USE_CONAN )
target_link_libraries( ll::zlib-ng INTERFACE CONAN_PKG::zlib )
return()
+elseif(NOT USE_AUTOBUILD_3P)
+ pkg_check_modules(Zlib REQUIRED zlib)
+ target_include_directories( ll::zlib-ng SYSTEM INTERFACE ${Zlib_INCLUDE_DIRS})
+ target_link_directories( ll::zlib-ng INTERFACE ${Zlib_LIBRARY_DIRS} )
+ target_link_libraries( ll::zlib-ng INTERFACE ${Zlib_LIBRARIES})
+ return()
endif()
use_prebuilt_binary(zlib-ng)
diff --git a/indra/cmake/xxHash.cmake b/indra/cmake/xxHash.cmake
index a7c1cba62c..2dcab005ba 100644
--- a/indra/cmake/xxHash.cmake
+++ b/indra/cmake/xxHash.cmake
@@ -5,4 +5,11 @@ endif (XXHASH_CMAKE_INCLUDED)
set (XXHASH_CMAKE_INCLUDED TRUE)
include(Prebuilt)
+
+if (NOT (USE_AUTOBUILD_3P OR USE_CONAN))
+ include(FindPkgConfig)
+ pkg_check_modules(Xxhash REQUIRED libxxhash)
+ return ()
+endif ()
+
use_prebuilt_binary(xxhash)