diff options
Diffstat (limited to 'indra')
58 files changed, 2657 insertions, 1508 deletions
diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index d02e6b123b..3e1dab7c00 100644 --- a/indra/cmake/00-Common.cmake +++ b/indra/cmake/00-Common.cmake @@ -154,7 +154,7 @@ if (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD") --param asan-stack=0 ) add_link_options(-fsanitize=address) - else() + elseif( NOT (${LINUX_DISTRO} MATCHES freedesktop) ) add_compile_definitions( _FORTIFY_SOURCE=2 ) endif() @@ -191,6 +191,7 @@ if (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD") set(CLANG_WARNINGS ${GCC_CLANG_COMPATIBLE_WARNINGS} # Put clang specific warning configuration here + -Wno-inconsistent-missing-override ) set(GCC_WARNINGS diff --git a/indra/cmake/APR.cmake b/indra/cmake/APR.cmake index 4ce0d47f7f..ef541388d8 100644 --- a/indra/cmake/APR.cmake +++ b/indra/cmake/APR.cmake @@ -5,21 +5,22 @@ include_guard() add_library( ll::apr INTERFACE IMPORTED ) -if (WINDOWS) - target_include_directories(ll::apr SYSTEM INTERFACE ${prefix_result}/../include) - target_link_directories(ll::apr INTERFACE ${prefix_result}) - target_link_libraries(ll::apr INTERFACE libapr-1 libaprutil-1) -else () - 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}) +if (NOT (${LINUX_DISTRO} MATCHES freedesktop)) + if (WINDOWS) + target_include_directories(ll::apr SYSTEM INTERFACE ${prefix_result}/../include) + target_link_directories(ll::apr INTERFACE ${prefix_result}) + target_link_libraries(ll::apr INTERFACE libapr-1 libaprutil-1) + else () + 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}) + endif () + return () endif () -return () - -use_system_binary( apr apr-util ) +#use_system_binary( apr apr-util ) use_prebuilt_binary(apr_suite) if (WINDOWS) diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake index 25d673e49a..9746704907 100644 --- a/indra/cmake/Boost.cmake +++ b/indra/cmake/Boost.cmake @@ -12,32 +12,45 @@ if (DARWIN) elseif (WINDOWS) target_include_directories( ll::boost SYSTEM INTERFACE ${prefix_result}/../include) target_link_directories( ll::boost INTERFACE ${prefix_result}) - if ($ENV{MSYSTEM_CARCH} MATCHES aarch64) - set(sfx -vc143-mt-a64-1_91) + # Detect the actual toolset/version suffix from whatever vcpkg installed. + # Glob for boost_context-*.lib and strip the known prefix to get the suffix. + file(GLOB _boost_context_libs "${prefix_result}/boost_context-*.lib") + if (_boost_context_libs) + list(GET _boost_context_libs 0 _boost_context_lib) + get_filename_component(_boost_context_name "${_boost_context_lib}" NAME_WE) + string(REPLACE "boost_context" "" sfx "${_boost_context_name}") else () - set(sfx -vc143-mt-x64-1_91) + if ($ENV{MSYSTEM_CARCH} MATCHES aarch64) + set(sfx -vc143-mt-a64-1_91) + else () + set(sfx -vc143-mt-x64-1_91) + endif () + message(WARNING "Could not detect Boost suffix via glob; using fallback '${sfx}'. " + "Check that vcpkg installed boost into ${prefix_result}.") endif () -else () +elseif (NOT (${LINUX_DISTRO} MATCHES freedesktop)) find_package( Boost ) endif () -target_link_libraries( ll::boost INTERFACE - boost_context${sfx} - boost_fiber${sfx} - boost_filesystem${sfx} - boost_program_options${sfx} - boost_thread${sfx} - boost_url${sfx} - ) -if (WINDOWS) - target_link_libraries( ll::boost INTERFACE boost_json${sfx}) -else () - target_link_libraries( ll::boost INTERFACE boost_regex${sfx}) -endif () -if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES fedora) OR DARWIN) - target_link_libraries( ll::boost INTERFACE boost_system${sfx}) +if (NOT (${LINUX_DISTRO} MATCHES freedesktop)) + target_link_libraries( ll::boost INTERFACE + boost_context${sfx} + boost_fiber${sfx} + boost_filesystem${sfx} + boost_program_options${sfx} + boost_thread${sfx} + boost_url${sfx} + ) + if (WINDOWS) + target_link_libraries( ll::boost INTERFACE boost_json${sfx}) + else () + target_link_libraries( ll::boost INTERFACE boost_regex${sfx}) + endif () + if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES fedora) OR DARWIN) + target_link_libraries( ll::boost INTERFACE boost_system${sfx}) + endif () + target_compile_definitions( ll::boost INTERFACE BOOST_BIND_GLOBAL_PLACEHOLDERS ) + return() endif () -target_compile_definitions( ll::boost INTERFACE BOOST_BIND_GLOBAL_PLACEHOLDERS ) -return() if( USE_CONAN ) target_link_libraries( ll::boost INTERFACE CONAN_PKG::boost ) @@ -153,3 +166,4 @@ if (LINUX) target_link_libraries(ll::boost INTERFACE rt) endif (LINUX) +target_include_directories(ll::boost SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include) diff --git a/indra/cmake/CEFPlugin.cmake b/indra/cmake/CEFPlugin.cmake index ff3c28112e..489caa5d52 100644 --- a/indra/cmake/CEFPlugin.cmake +++ b/indra/cmake/CEFPlugin.cmake @@ -1,12 +1,85 @@ # -*- cmake -*- include(Linking) include(Prebuilt) -include(UnixInstall) include_guard() add_library( ll::cef INTERFACE IMPORTED ) -if (${LINUX_DISTRO} MATCHES fedora) +if (${LINUX_DISTRO} MATCHES arch AND (CMAKE_SYSTEM_PROCESSOR MATCHES x86_64)) + if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/dullahan_installed OR NOT ${dullahan_installed} EQUAL 0) + file( + COPY /usr/src/cef/libcef_dll + DESTINATION ${CMAKE_BINARY_DIR} + ) + execute_process( + COMMAND sed -i "s/macro(L/cmake_minimum_required(VERSION 3.28)\\nmacro(SET_LIBRARY_TARGET_PROPERTIES)\\nendmacro()\\nmacro(L/" CMakeLists.txt + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/libcef_dll + ) + try_compile(LIBCEF_DLL_RESULT + PROJECT libcef_dll + SOURCE_DIR ${CMAKE_BINARY_DIR}/libcef_dll + BINARY_DIR ${CMAKE_BINARY_DIR}/libcef_dll + CMAKE_FLAGS + -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} + "-DCMAKE_CXX_FLAGS:STRING=-I/usr/include/cef -I/usr/src/cef -fPIC" + ) + if (${LIBCEF_DLL_RESULT}) + file( + COPY ${CMAKE_BINARY_DIR}/libcef_dll/libcef_dll_wrapper.a + DESTINATION ${ARCH_PREBUILT_DIRS_RELEASE} + ) + endif () + if (NOT EXISTS ${CMAKE_BINARY_DIR}/dullahan-1.40.0-CEF_150.0.16.embed_scheme.tar.gz) + file(DOWNLOAD + https://github.com/secondlife/dullahan/archive/refs/tags/v1.40.0-CEF_150.0.16.embed_scheme.tar.gz + ${CMAKE_BINARY_DIR}/dullahan-1.40.0-CEF_150.0.16.embed_scheme.tar.gz + ) + endif () + file(ARCHIVE_EXTRACT + INPUT ${CMAKE_BINARY_DIR}/dullahan-1.40.0-CEF_150.0.16.embed_scheme.tar.gz + DESTINATION ${CMAKE_BINARY_DIR} + ) + try_compile(DULLAHAN_RESULT + PROJECT dullahan + SOURCE_DIR ${CMAKE_BINARY_DIR}/dullahan-1.40.0-CEF_150.0.16.embed_scheme + BINARY_DIR ${CMAKE_BINARY_DIR}/dullahan-1.40.0-CEF_150.0.16.embed_scheme + CMAKE_FLAGS + -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} + -DCMAKE_INSTALL_PREFIX:PATH=${LIBS_PREBUILT_DIR} + -DCMAKE_INSTALL_LIBDIR:PATH=${ARCH_PREBUILT_DIRS_RELEASE} + -DCEF_WRAPPER_DIR:PATH=/usr/include/cef + -DCEF_WRAPPER_BUILD_DIR:PATH=${CMAKE_BINARY_DIR}/dullahan-1.40.0-CEF_150.0.16.embed_scheme + -DCEF_LIBRARY_RELEASE:FILEPATH=${INSTALL_PREFIX}/lib/cef/libcef.so + -DCEF_DLL_LIBRARY_RELEASE:FILEPATH=${ARCH_PREBUILT_DIRS_RELEASE}/libcef_dll_wrapper.a + "-DCMAKE_CXX_FLAGS:STRING=-I/usr/include/cef -I/usr/src/cef -DWRAPPING_CEF_SHARED" + ) + if (${DULLAHAN_RESULT}) + file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/bin/release) + file( + COPY ${CMAKE_BINARY_DIR}/dullahan-1.40.0-CEF_150.0.16.embed_scheme/dullahan_host + DESTINATION ${LIBS_PREBUILT_DIR}/bin/release + ) + if (CMAKE_BUILD_TYPE MATCHES Release) + execute_process( + COMMAND ${CMAKE_STRIP} dullahan_host + WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/bin/release + ) + endif () + file( + COPY ${CMAKE_BINARY_DIR}/dullahan-1.40.0-CEF_150.0.16.embed_scheme/libdullahan.a + DESTINATION ${ARCH_PREBUILT_DIRS_RELEASE} + ) + file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/include/cef) + file( + COPY + ${CMAKE_BINARY_DIR}/dullahan-1.40.0-CEF_150.0.16.embed_scheme/src/dullahan.h + ${CMAKE_BINARY_DIR}/dullahan-1.40.0-CEF_150.0.16.embed_scheme/src/dullahan_version.h + DESTINATION ${LIBS_PREBUILT_DIR}/include/cef + ) + file(WRITE ${PREBUILD_TRACKING_DIR}/dullahan_installed "0") + endif () + endif () +elseif (${LINUX_DISTRO} MATCHES fedora) if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/dullahan_installed OR NOT ${dullahan_installed} EQUAL 0) file( COPY /usr/src/cef-146.0.11/libcef_dll @@ -50,7 +123,7 @@ if (${LINUX_DISTRO} MATCHES fedora) -DCMAKE_INSTALL_LIBDIR:PATH=${ARCH_PREBUILT_DIRS_RELEASE} -DCEF_WRAPPER_DIR:PATH=/usr/include/cef -DCEF_WRAPPER_BUILD_DIR:PATH=${CMAKE_BINARY_DIR}/dullahan-1.29.0-CEF_146.0.12 - -DCEF_LIBRARY_RELEASE:FILEPATH=${INSTALL_PREFIX}/${_LIB}/cef/libcef.so + -DCEF_LIBRARY_RELEASE:FILEPATH=${INSTALL_PREFIX}/lib${ADDRESS_SIZE}/cef/libcef.so -DCEF_DLL_LIBRARY_RELEASE:FILEPATH=${ARCH_PREBUILT_DIRS_RELEASE}/libcef_dll_wrapper.a "-DCMAKE_CXX_FLAGS:STRING=-I/usr/include/cef -I/usr/src/cef-146.0.11 -DWRAPPING_CEF_SHARED" ) @@ -60,6 +133,12 @@ if (${LINUX_DISTRO} MATCHES fedora) COPY ${CMAKE_BINARY_DIR}/dullahan-1.29.0-CEF_146.0.12/dullahan_host DESTINATION ${LIBS_PREBUILT_DIR}/bin/release ) + if (CMAKE_BUILD_TYPE MATCHES Release) + execute_process( + COMMAND ${CMAKE_STRIP} dullahan_host + WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/bin/release + ) + endif () file( COPY ${CMAKE_BINARY_DIR}/dullahan-1.29.0-CEF_146.0.12/libdullahan.a DESTINATION ${ARCH_PREBUILT_DIRS_RELEASE} @@ -105,11 +184,29 @@ elseif (CMAKE_SYSTEM_PROCESSOR MATCHES aarch64) -DPROJECT_ARCH:STRING=${CMAKE_SYSTEM_PROCESSOR} ) if (${DULLAHAN_RESULT}) + if (CMAKE_BUILD_TYPE MATCHES Release) + execute_process( + COMMAND ${CMAKE_STRIP} + chrome-sandbox + libEGL.so + libGLESv2.so + libcef.so + libvk_swiftshader.so + libvulkan.so.1 + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/dullahan-1.24.0-CEF_139.0.40/_deps/cef_prebuild-src/${CMAKE_BUILD_TYPE} + ) + endif () execute_process( COMMAND ${CMAKE_MAKE_PROGRAM} install WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/dullahan-1.24.0-CEF_139.0.40 OUTPUT_VARIABLE dullahan_installed ) + if (CMAKE_BUILD_TYPE MATCHES Release) + execute_process( + COMMAND ${CMAKE_STRIP} dullahan_host + WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/bin/release + ) + endif () file( COPY ${CMAKE_BINARY_DIR}/dullahan-1.24.0-CEF_139.0.40/src/dullahan.h @@ -122,20 +219,6 @@ elseif (CMAKE_SYSTEM_PROCESSOR MATCHES aarch64) else () use_prebuilt_binary(dullahan) endif () - -execute_process( - COMMAND patchelf --set-rpath ${INSTALL_LIBRARY_DIR} bin/release/dullahan_host - WORKING_DIRECTORY ${LIBS_PREBUILT_DIR} -) - -if (${LINUX_DISTRO} MATCHES fedora) - target_include_directories( ll::cef SYSTEM INTERFACE /usr/include/cef/include) - execute_process( - COMMAND patchelf --add-rpath ${INSTALL_PREFIX}/${_LIB}/cef bin/release/dullahan_host - WORKING_DIRECTORY ${LIBS_PREBUILT_DIR} - ) -endif () - target_include_directories( ll::cef SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/cef) if (WINDOWS) @@ -200,10 +283,34 @@ elseif (DARWIN) -output libdullahan.a WORKING_DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE} ) - elseif (LINUX) - if (${LINUX_DISTRO} MATCHES fedora) - target_link_directories( ll::cef INTERFACE ${INSTALL_PREFIX}/${_LIB}/cef ) + if (NOT (${LINUX_DISTRO} MATCHES freedesktop)) + execute_process( + COMMAND patchelf --set-rpath ${INSTALL_LIBRARY_DIR} dullahan_host + WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/bin/release + ) + endif () + if (${LINUX_DISTRO} MATCHES arch AND (CMAKE_SYSTEM_PROCESSOR MATCHES x86_64) OR (${LINUX_DISTRO} MATCHES fedora)) + target_include_directories( ll::cef SYSTEM INTERFACE /usr/include/cef/include) + if (${LINUX_DISTRO} MATCHES fedora) + set(LIB_SUFFIX ${ADDRESS_SIZE}) + endif () + target_link_directories( ll::cef INTERFACE ${INSTALL_PREFIX}/lib${LIB_SUFFIX}/cef ) + execute_process( + COMMAND patchelf --add-rpath ${INSTALL_PREFIX}/lib${LIB_SUFFIX}/cef dullahan_host + WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/bin/release + ) + elseif (CMAKE_SYSTEM_PROCESSOR MATCHES x86_64 AND (CMAKE_BUILD_TYPE MATCHES Release)) + execute_process( + COMMAND ${CMAKE_STRIP} + bin/release/chrome-sandbox + bin/release/dullahan_host + lib/release/libEGL.so + lib/release/libGLESv2.so + lib/release/libvk_swiftshader.so + lib/release/libvulkan.so.1 + WORKING_DIRECTORY ${LIBS_PREBUILT_DIR} + ) endif () target_link_libraries( ll::cef INTERFACE libdullahan.a diff --git a/indra/cmake/Discord.cmake b/indra/cmake/Discord.cmake index f474457b03..005e548f08 100644 --- a/indra/cmake/Discord.cmake +++ b/indra/cmake/Discord.cmake @@ -8,8 +8,13 @@ target_compile_definitions(ll::discord_sdk INTERFACE LL_DISCORD=1) #use_prebuilt_binary(discord_sdk) if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/discord_sdk_installed OR NOT ${discord_sdk_installed} EQUAL 0) + if (${LINUX_DISTRO} MATCHES gentoo) + set(PREFIX_PATH /var/cache/distfiles) + else () + set(PREFIX_PATH $ENV{HOME}/Downloads) + endif () file(ARCHIVE_EXTRACT - INPUT $ENV{HOME}/Downloads/DiscordSocialSdk-1.8.13395.zip + INPUT ${PREFIX_PATH}/DiscordSocialSdk-1.10.18247.zip DESTINATION ${CMAKE_BINARY_DIR} ) file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/include/discord_sdk) @@ -19,9 +24,12 @@ if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKIN ${CMAKE_BINARY_DIR}/discord_social_sdk/include/discordpp.h DESTINATION ${LIBS_PREBUILT_DIR}/include/discord_sdk ) + if ($ENV{MSYSTEM_CARCH} MATCHES aarch64) + set(DISCORD_PLATFORM /arm64) + endif () if (WINDOWS) file( - COPY ${CMAKE_BINARY_DIR}/discord_social_sdk/bin/release/discord_partner_sdk.dll + COPY ${CMAKE_BINARY_DIR}/discord_social_sdk/bin/release${DISCORD_PLATFORM}/discord_partner_sdk.dll DESTINATION ${LIBS_PREBUILT_DIR}/bin/release ) set(LIBRARY_EXTENSION lib) @@ -39,9 +47,15 @@ if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKIN ) else () file( - COPY ${CMAKE_BINARY_DIR}/discord_social_sdk/lib/release/${LIBRARY_PREFIX}discord_partner_sdk.${LIBRARY_EXTENSION} + COPY ${CMAKE_BINARY_DIR}/discord_social_sdk/lib/release${DISCORD_PLATFORM}/${LIBRARY_PREFIX}discord_partner_sdk.${LIBRARY_EXTENSION} DESTINATION ${ARCH_PREBUILT_DIRS_RELEASE} ) + if (CMAKE_BUILD_TYPE MATCHES Release AND LINUX) + execute_process( + COMMAND ${CMAKE_STRIP} libdiscord_partner_sdk.so + WORKING_DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE} + ) + endif () endif () file(WRITE ${PREBUILD_TRACKING_DIR}/discord_sdk_installed "0") endif () diff --git a/indra/cmake/FMODSTUDIO.cmake b/indra/cmake/FMODSTUDIO.cmake index ad8dc38c70..ec0b8a07d6 100644 --- a/indra/cmake/FMODSTUDIO.cmake +++ b/indra/cmake/FMODSTUDIO.cmake @@ -34,7 +34,7 @@ if (USE_FMODSTUDIO) file(MAKE_DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE}) if (DARWIN) execute_process( - COMMAND hdiutil attach -noverify fmodstudioapi20234mac-installer.dmg + COMMAND hdiutil attach -noverify fmodstudioapi20235mac-installer.dmg WORKING_DIRECTORY $ENV{HOME}/Downloads ) file( @@ -64,36 +64,36 @@ if (USE_FMODSTUDIO) file(WRITE ${PREBUILD_TRACKING_DIR}/fmodstudio_installed "${fmodstudio_installed}") else () file(ARCHIVE_EXTRACT - INPUT $ENV{HOME}/Downloads/fmodstudioapi20234linux.tar.gz + INPUT $ENV{HOME}/Downloads/fmodstudioapi20235linux.tar.gz DESTINATION ${CMAKE_BINARY_DIR} ) file( COPY - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/inc/fmod.h - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/inc/fmod.hpp - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/inc/fmod_codec.h - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/inc/fmod_common.h - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/inc/fmod_dsp.h - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/inc/fmod_dsp_effects.h - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/inc/fmod_errors.h - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/inc/fmod_output.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/inc/fmod.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/inc/fmod.hpp + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/inc/fmod_codec.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/inc/fmod_common.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/inc/fmod_dsp.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/inc/fmod_dsp_effects.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/inc/fmod_errors.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/inc/fmod_output.h DESTINATION ${LIBS_PREBUILT_DIR}/include/fmodstudio ) if (CMAKE_SYSTEM_PROCESSOR MATCHES aarch64) file( COPY - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/lib/arm64/libfmod.so - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/lib/arm64/libfmod.so.13 - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/lib/arm64/libfmod.so.13.34 + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/lib/arm64/libfmod.so + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/lib/arm64/libfmod.so.13 + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/lib/arm64/libfmod.so.13.35 DESTINATION ${ARCH_PREBUILT_DIRS_RELEASE} FOLLOW_SYMLINK_CHAIN ) else () file( COPY - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so.13 - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so.13.34 + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so.13 + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so.13.35 DESTINATION ${ARCH_PREBUILT_DIRS_RELEASE} FOLLOW_SYMLINK_CHAIN ) diff --git a/indra/cmake/GLM.cmake b/indra/cmake/GLM.cmake index e4c6796f6c..c7d0ec3aed 100644 --- a/indra/cmake/GLM.cmake +++ b/indra/cmake/GLM.cmake @@ -4,7 +4,7 @@ include(Prebuilt) add_library( ll::glm INTERFACE IMPORTED ) #use_system_binary( glm ) -if (${LINUX_DISTRO} MATCHES debian) +if (${LINUX_DISTRO} MATCHES freedesktop OR (${LINUX_DISTRO} MATCHES debian) OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64 OR ($ENV{MSYSTEM_CARCH} MATCHES aarch64)) use_prebuilt_binary(glm) elseif (NOT WINDOWS) find_package( glm REQUIRED ) diff --git a/indra/cmake/LLPrimitive.cmake b/indra/cmake/LLPrimitive.cmake index df8d96109f..144f92118b 100644 --- a/indra/cmake/LLPrimitive.cmake +++ b/indra/cmake/LLPrimitive.cmake @@ -18,155 +18,176 @@ if( USE_CONAN ) "${CONAN_INCLUDE_DIRS_COLLADADOM}/collada-dom/1.4/" ) endif() -if (TRUE) - include(FindPkgConfig) - pkg_check_modules(Minizip REQUIRED minizip) - if (${LINUX_DISTRO} MATCHES arch OR (${LINUX_DISTRO} MATCHES gentoo) OR DARWIN) +#use_system_binary( colladadom ) + +#use_prebuilt_binary(colladadom) +if (${LINUX_DISTRO} MATCHES freedesktop) +use_prebuilt_binary(minizip-ng) # needed for colladadom +#use_prebuilt_binary(libxml2) + +find_library(MINIZIPNG_LIBRARY + NAMES + minizip.lib + libminizip.a + PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH) + +target_link_libraries(ll::minizip-ng INTERFACE ${MINIZIPNG_LIBRARY}) +endif () + +if (FALSE) +find_library(LIBXML2_LIBRARY + NAMES + libxml2.lib + libxml2.a + PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH) + +target_link_libraries(ll::libxml INTERFACE ${LIBXML2_LIBRARY}) + +if (WINDOWS) + target_link_libraries( ll::libxml INTERFACE Bcrypt.lib) +endif() +endif (FALSE) + +include(FindPkgConfig) +if (NOT (${LINUX_DISTRO} MATCHES freedesktop)) + pkg_search_module(Minizip REQUIRED minizip) +endif () +if (${LINUX_DISTRO} MATCHES arch OR (${LINUX_DISTRO} MATCHES gentoo) OR DARWIN OR WINDOWS) set(Minizip_INCLUDE_DIRS ${Minizip_INCLUDE_DIRS}/minizip) - endif () - pkg_check_modules(Libxml2 REQUIRED libxml-2.0) - 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) +elseif (${LINUX_DISTRO} MATCHES freedesktop) + set(Minizip_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/minizip-ng) + set(Minizip_LIBRARY_DIRS ${ARCH_PREBUILT_DIRS_RELEASE}) +endif () +pkg_search_module(Libxml2 REQUIRED libxml-2.0) +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-r11.tar.gz) - file(DOWNLOAD - https://github.com/secondlife/3p-colladadom/archive/refs/tags/v2.3-r11.tar.gz - ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11.tar.gz + file(DOWNLOAD + https://github.com/secondlife/3p-colladadom/archive/refs/tags/v2.3-r11.tar.gz + ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11.tar.gz ) endif () file(ARCHIVE_EXTRACT - INPUT ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11.tar.gz - DESTINATION ${CMAKE_BINARY_DIR} + INPUT ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11.tar.gz + DESTINATION ${CMAKE_BINARY_DIR} ) if (WINDOWS OR CMAKE_COMMAND MATCHES /usr/bin/cmake) - execute_process( - COMMAND sed -i "s/include_directories/cmake_minimum_required(VERSION 3.28)\\ninclude_directories/" CMakeLists.txt - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 + execute_process( + COMMAND sed -i "s/include_directories/cmake_minimum_required(VERSION 3.28)\\ninclude_directories/" CMakeLists.txt + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 ) else () - execute_process( - COMMAND sed -i "" -e "s/include_directories/cmake_minimum_required(VERSION 3.28)\\ninclude_directories/" CMakeLists.txt - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 + execute_process( + COMMAND sed -i "" -e "s/include_directories/cmake_minimum_required(VERSION 3.28)\\ninclude_directories/" CMakeLists.txt + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 ) endif () if (WINDOWS) - execute_process( - COMMAND sed -i "s/SHARED/STATIC/" 1.4/CMakeLists.txt - COMMAND sed -i "/#include <cstdarg>/a #define WIN32" dae/daeUtils.cpp - COMMAND sed -i "/using namespace cdom;/a namespace boost{void boost::throw_exception(class std::exception const &){}}" dae/daeURI.cpp - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11/src + execute_process( + COMMAND sed -i "s/SHARED/STATIC/" 1.4/CMakeLists.txt + COMMAND sed -i "/#include <cstdarg>/a #define WIN32" dae/daeUtils.cpp + COMMAND sed -i "/using namespace cdom;/a namespace boost{void boost::throw_exception(class std::exception const &){}}" dae/daeURI.cpp + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11/src + ) + elseif (CMAKE_COMMAND MATCHES /usr/bin/cmake) + execute_process( + COMMAND sed -i "s/SHARED/STATIC/" src/1.4/CMakeLists.txt + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 ) else () - execute_process( - COMMAND sed -i "" -e "s/SHARED/STATIC/" src/1.4/CMakeLists.txt - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 + execute_process( + COMMAND sed -i "" -e "s/SHARED/STATIC/" src/1.4/CMakeLists.txt + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 ) endif () if (DARWIN) - set(BOOST_CFLAGS -I${Libxml2_LIBRARY_DIRS}exec/boost/1.88/include) - set(BOOST_LIBS -L${Minizip_LIBRARY_DIRS}exec/boost/1.88/lib) - set(BOOST_LIBRARY_SUFFIX -mt) + set(BOOST_CFLAGS -I${Libxml2_LIBRARY_DIRS}exec/boost/1.88/include) + set(BOOST_LIBS -L${Minizip_LIBRARY_DIRS}exec/boost/1.88/lib) + set(BOOST_LIBRARY_SUFFIX -mt) elseif (WINDOWS) - set(BOOST_CFLAGS -I${prefix_result}/../include) - set(BOOST_LIBS -L${prefix_result}) - if ($ENV{MSYSTEM_CARCH} MATCHES aarch64) - set(BOOST_LIBRARY_SUFFIX -vc143-mt-a64-1_91) + set(BOOST_CFLAGS -I${prefix_result}/../include) + set(BOOST_LIBS -L${prefix_result}) + # Detect actual toolset/version suffix from vcpkg-installed libs. + file(GLOB _boost_context_libs "${prefix_result}/boost_context-*.lib") + if (_boost_context_libs) + list(GET _boost_context_libs 0 _boost_context_lib) + get_filename_component(_boost_context_name "${_boost_context_lib}" NAME_WE) + string(REPLACE "boost_context" "" BOOST_LIBRARY_SUFFIX "${_boost_context_name}") else () - set(BOOST_LIBRARY_SUFFIX -vc143-mt-x64-1_91) + if ($ENV{MSYSTEM_CARCH} MATCHES aarch64) + set(BOOST_LIBRARY_SUFFIX -vc143-mt-a64-1_91) + else () + set(BOOST_LIBRARY_SUFFIX -vc143-mt-x64-1_91) + endif () + message(WARNING "Could not detect Boost suffix via glob in LLPrimitive; using fallback.") endif () elseif (CMAKE_SYSTEM_NAME MATCHES FreeBSD) - set(BOOST_CFLAGS -I/usr/local/include) - execute_process( - COMMAND sed -i "" -e "s/endif 0/endif/" dae/daeUtils.cpp - COMMAND sed -i "" -e "s/linux/FreeBSD/" dae/daeUtils.cpp - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11/src + set(BOOST_CFLAGS -I/usr/local/include) + execute_process( + COMMAND sed -i "" -e "s/endif 0/endif/" dae/daeUtils.cpp + COMMAND sed -i "" -e "s/linux/FreeBSD/" dae/daeUtils.cpp + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11/src ) + elseif (${LINUX_DISTRO} MATCHES freedesktop) + set(BOOST_CFLAGS -I${LIBS_PREBUILT_DIR}/include) + set(BOOST_LIBS -L${ARCH_PREBUILT_DIRS_RELEASE}) endif () file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/include/collada/1.4) try_compile(COLLADADOM_RESULT - PROJECT colladadom - SOURCE_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 - BINARY_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 - TARGET collada14dom - CMAKE_FLAGS - -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${CMAKE_OSX_DEPLOYMENT_TARGET} - -DCMAKE_INSTALL_PREFIX:PATH=${LIBS_PREBUILT_DIR} - -DCMAKE_CXX_STANDARD:STRING=17 - -DCMAKE_CXX_FLAGS:STRING=-I${Minizip_INCLUDE_DIRS} - -DBoost_CFLAGS:STRING=${BOOST_CFLAGS} - -DEXTRA_COMPILE_FLAGS:STRING=-I${Libxml2_INCLUDE_DIRS} - "-DCMAKE_SHARED_LINKER_FLAGS:STRING=-L${Minizip_LIBRARY_DIRS} ${BOOST_LIBS}" - -DBoost_FILESYSTEM_LIBRARY:STRING=boost_filesystem${BOOST_LIBRARY_SUFFIX} - -DBoost_SYSTEM_LIBRARY:STRING=boost_system${BOOST_LIBRARY_SUFFIX} - -DZLIB_LIBRARIES:STRING=${Libxml2_LIBRARIES} - -DOPT_COLLADA14:BOOL=ON - -DCOLLADA_DOM_INCLUDE_INSTALL_DIR:PATH=${LIBS_PREBUILT_DIR}/include/collada + PROJECT colladadom + SOURCE_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 + BINARY_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 + TARGET collada14dom + CMAKE_FLAGS + -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} + -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} + -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${CMAKE_OSX_DEPLOYMENT_TARGET} + -DCMAKE_INSTALL_PREFIX:PATH=${LIBS_PREBUILT_DIR} + -DCMAKE_CXX_STANDARD:STRING=17 + -DCMAKE_CXX_FLAGS:STRING=-I${Minizip_INCLUDE_DIRS} + -DBoost_CFLAGS:STRING=${BOOST_CFLAGS} + -DEXTRA_COMPILE_FLAGS:STRING=-I${Libxml2_INCLUDE_DIRS} + "-DCMAKE_SHARED_LINKER_FLAGS:STRING=-L${Minizip_LIBRARY_DIRS} ${BOOST_LIBS}" + -DBoost_FILESYSTEM_LIBRARY:STRING=boost_filesystem${BOOST_LIBRARY_SUFFIX} + -DBoost_SYSTEM_LIBRARY:STRING=boost_system${BOOST_LIBRARY_SUFFIX} + -DZLIB_LIBRARIES:STRING=${Libxml2_LIBRARIES} + -DOPT_COLLADA14:BOOL=ON + -DCOLLADA_DOM_INCLUDE_INSTALL_DIR:PATH=${LIBS_PREBUILT_DIR}/include/collada ) if (WINDOWS) - execute_process( - COMMAND MSBuild.exe ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11/Project.slnx -p:Configuration=${CMAKE_BUILD_TYPE} - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 - OUTPUT_VARIABLE colladadom_installed + execute_process( + COMMAND MSBuild.exe ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11/Project.slnx -p:Configuration=${CMAKE_BUILD_TYPE} + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 + OUTPUT_VARIABLE colladadom_installed ) - file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/include/collada) - file( - COPY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11/include - DESTINATION ${LIBS_PREBUILT_DIR}/include + file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/include/collada) + file( + COPY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11/include + DESTINATION ${LIBS_PREBUILT_DIR}/include ) - file(RENAME - ${LIBS_PREBUILT_DIR}/include/include - ${LIBS_PREBUILT_DIR}/include/collada + file(RENAME + ${LIBS_PREBUILT_DIR}/include/include + ${LIBS_PREBUILT_DIR}/include/collada ) - file(MAKE_DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE}) - file(RENAME - ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11/src/1.4/${CMAKE_BUILD_TYPE}/collada14dom.lib - ${ARCH_PREBUILT_DIRS_RELEASE}/libcollada14dom23-s.lib + file(MAKE_DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE}) + file(RENAME + ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11/src/1.4/${CMAKE_BUILD_TYPE}/collada14dom.lib + ${ARCH_PREBUILT_DIRS_RELEASE}/libcollada14dom23-s.lib ) elseif (${COLLADADOM_RESULT}) - execute_process( - COMMAND ${CMAKE_MAKE_PROGRAM} install - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 - OUTPUT_VARIABLE colladadom_installed + execute_process( + COMMAND ${CMAKE_MAKE_PROGRAM} install + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 + OUTPUT_VARIABLE colladadom_installed ) - file(RENAME - ${ARCH_PREBUILT_DIRS}/libcollada14dom.a - ${ARCH_PREBUILT_DIRS_RELEASE}/libcollada14dom.a + file(RENAME + ${ARCH_PREBUILT_DIRS}/libcollada14dom.a + ${ARCH_PREBUILT_DIRS_RELEASE}/libcollada14dom.a ) endif () file(WRITE ${PREBUILD_TRACKING_DIR}/colladadom_installed "${colladadom_installed}") - endif () - -else (TRUE) - -use_system_binary( colladadom ) - -use_prebuilt_binary(colladadom) -use_prebuilt_binary(minizip-ng) # needed for colladadom -use_prebuilt_binary(libxml2) - -find_library(MINIZIPNG_LIBRARY - NAMES - minizip.lib - libminizip.a - PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH) - -target_link_libraries(ll::minizip-ng INTERFACE ${MINIZIPNG_LIBRARY}) - -find_library(LIBXML2_LIBRARY - NAMES - libxml2.lib - libxml2.a - PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH) - -target_link_libraries(ll::libxml INTERFACE ${LIBXML2_LIBRARY}) - -if (WINDOWS) - target_link_libraries( ll::libxml INTERFACE Bcrypt.lib) -endif() - -endif (TRUE) +endif () target_include_directories( ll::colladadom SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/collada diff --git a/indra/cmake/LibVLCPlugin.cmake b/indra/cmake/LibVLCPlugin.cmake index 981f020745..7ff9a9e651 100644 --- a/indra/cmake/LibVLCPlugin.cmake +++ b/indra/cmake/LibVLCPlugin.cmake @@ -27,11 +27,14 @@ if (DARWIN) 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 ) -elseif (WINDOWS) +elseif (WINDOWS OR (${LINUX_DISTRO} MATCHES freedesktop)) use_prebuilt_binary(vlc-bin) + if (WINDOWS) + set(LIB_SUFFIX lib) + endif () target_link_libraries( ll::libvlc INTERFACE - libvlc.lib - libvlccore.lib + ${LIB_SUFFIX}vlc + ${LIB_SUFFIX}vlccore ) else () include(FindPkgConfig) diff --git a/indra/cmake/Meshoptimizer.cmake b/indra/cmake/Meshoptimizer.cmake index 225f44b1fb..e65d0cac71 100644 --- a/indra/cmake/Meshoptimizer.cmake +++ b/indra/cmake/Meshoptimizer.cmake @@ -16,20 +16,20 @@ if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu) OR CMAKE_ elseif (LINUX AND CMAKE_SYSTEM_PROCESSOR MATCHES x86_64 AND NOT (${LINUX_DISTRO} MATCHES gentoo)) 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-1.0.1.tar.gz) + if (NOT EXISTS ${CMAKE_BINARY_DIR}/meshoptimizer-1.2.tar.gz) file(DOWNLOAD - https://github.com/zeux/meshoptimizer/archive/refs/tags/v1.0.1.tar.gz - ${CMAKE_BINARY_DIR}/meshoptimizer-1.0.1.tar.gz + https://github.com/zeux/meshoptimizer/archive/refs/tags/v1.2.tar.gz + ${CMAKE_BINARY_DIR}/meshoptimizer-1.2.tar.gz ) endif () file(ARCHIVE_EXTRACT - INPUT ${CMAKE_BINARY_DIR}/meshoptimizer-1.0.1.tar.gz + INPUT ${CMAKE_BINARY_DIR}/meshoptimizer-1.2.tar.gz DESTINATION ${CMAKE_BINARY_DIR} ) try_compile(MESHOPTIMIZER_RESULT PROJECT meshoptimizer - SOURCE_DIR ${CMAKE_BINARY_DIR}/meshoptimizer-1.0.1 - BINARY_DIR ${CMAKE_BINARY_DIR}/meshoptimizer-1.0.1 + SOURCE_DIR ${CMAKE_BINARY_DIR}/meshoptimizer-1.2 + BINARY_DIR ${CMAKE_BINARY_DIR}/meshoptimizer-1.2 TARGET meshoptimizer CMAKE_FLAGS -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} @@ -42,7 +42,7 @@ elseif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRA if (${MESHOPTIMIZER_RESULT}) execute_process( COMMAND ${CMAKE_MAKE_PROGRAM} install - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/meshoptimizer-1.0.1 + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/meshoptimizer-1.2 OUTPUT_VARIABLE meshoptimizer_installed ) file(WRITE ${PREBUILD_TRACKING_DIR}/meshoptimizer_installed "${meshoptimizer_installed}") diff --git a/indra/cmake/OPENAL.cmake b/indra/cmake/OPENAL.cmake index 1b7f9b9071..94c3b0fcf6 100644 --- a/indra/cmake/OPENAL.cmake +++ b/indra/cmake/OPENAL.cmake @@ -18,19 +18,26 @@ endif() if (USE_OPENAL) add_library( ll::openal INTERFACE IMPORTED ) - - 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 () - + if (${LINUX_DISTRO} MATCHES freedesktop) target_include_directories( ll::openal SYSTEM INTERFACE "${LIBS_PREBUILT_DIR}/include/AL") + endif () target_compile_definitions( ll::openal INTERFACE LL_OPENAL=1) + if (${LINUX_DISTRO} MATCHES freedesktop) use_prebuilt_binary(openal) + file(REMOVE + ${ARCH_PREBUILT_DIRS_RELEASE}/libopenal.so + ${ARCH_PREBUILT_DIRS_RELEASE}/libopenal.so.1 + ${ARCH_PREBUILT_DIRS_RELEASE}/libopenal.so.1.24.2 + ${LIBS_PREBUILT_DIR}/include/AL/al.h + ${LIBS_PREBUILT_DIR}/include/AL/alc.h + ${LIBS_PREBUILT_DIR}/include/AL/alext.h + ${LIBS_PREBUILT_DIR}/include/AL/efx-creative.h + ${LIBS_PREBUILT_DIR}/include/AL/efx-presets.h + ${LIBS_PREBUILT_DIR}/include/AL/efx.h + ) + endif () + if (FALSE) find_library(OPENAL_LIBRARY NAMES OpenAL32 @@ -38,7 +45,11 @@ if (USE_OPENAL) libopenal.dylib libopenal.so PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH) + endif () + include(FindPkgConfig) + if (${LINUX_DISTRO} MATCHES freedesktop) + pkg_search_module(Openal REQUIRED openal) find_library(ALUT_LIBRARY NAMES alut @@ -47,5 +58,12 @@ if (USE_OPENAL) PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH) target_link_libraries(ll::openal INTERFACE ${OPENAL_LIBRARY} ${ALUT_LIBRARY}) + else () + pkg_search_module(Openal REQUIRED freealut) + endif () + + 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}) endif () diff --git a/indra/cmake/OpenGL.cmake b/indra/cmake/OpenGL.cmake index bf7cd8366a..feaedf16e5 100644 --- a/indra/cmake/OpenGL.cmake +++ b/indra/cmake/OpenGL.cmake @@ -4,3 +4,8 @@ include(Variables) include(Prebuilt) include(FindOpenGL) +if (${LINUX_DISTRO} MATCHES freedesktop) + add_library(ll::glu INTERFACE IMPORTED) + use_prebuilt_binary(glu) + target_link_libraries(ll::glu INTERFACE GLU) +endif () diff --git a/indra/cmake/UI.cmake b/indra/cmake/UI.cmake index dc8d84217a..058d00d49d 100644 --- a/indra/cmake/UI.cmake +++ b/indra/cmake/UI.cmake @@ -6,16 +6,19 @@ include(GLIB) add_library( ll::uilibraries INTERFACE IMPORTED ) if (LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD) + if (${LINUX_DISTRO} MATCHES freedesktop) + use_prebuilt_binary(fltk) + endif () target_compile_definitions(ll::uilibraries INTERFACE LL_FLTK=1 LL_X11=1 ) if( USE_CONAN ) return() endif() - if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) + if (${LINUX_DISTRO} MATCHES freedesktop OR (${LINUX_DISTRO} MATCHES debian) OR (${LINUX_DISTRO} MATCHES ubuntu)) include(FindPkgConfig) - pkg_check_modules(Cairo REQUIRED cairo) - target_include_directories(ll::uilibraries SYSTEM INTERFACE ${Cairo_INCLUDE_DIRS}) + pkg_check_modules(CAIRO REQUIRED cairo) + target_include_directories(ll::uilibraries SYSTEM INTERFACE ${CAIRO_INCLUDE_DIRS}) endif () target_link_libraries( ll::uilibraries INTERFACE @@ -51,8 +54,29 @@ if( WINDOWS ) ) endif() -if (FALSE) +if (${LINUX_DISTRO} MATCHES freedesktop) target_include_directories( ll::uilibraries SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include ) + pkg_check_modules(CAIRO-XLIB REQUIRED cairo-xlib) + pkg_check_modules(DBUS-1 REQUIRED dbus-1) + pkg_check_modules(LIBDECOR-0 REQUIRED libdecor-0) + pkg_check_modules(PANGO REQUIRED pango) + pkg_check_modules(PANGOCAIRO REQUIRED pangocairo) + pkg_check_modules(WAYLAND-CLIENT REQUIRED wayland-client) + pkg_check_modules(WAYLAND-CURSOR REQUIRED wayland-cursor) + pkg_check_modules(XKBCOMMON REQUIRED xkbcommon) + pkg_check_modules(XKBCOMMON-X11 REQUIRED xkbcommon-x11) + target_link_libraries(ll::uilibraries INTERFACE + ${CAIRO_LIBRARIES} + ${CAIRO-XLIB_LIBRARIES} + ${DBUS-1_LIBRARIES} + ${LIBDECOR-0_LIBRARIES} + ${PANGO_LIBRARIES} + ${PANGOCAIRO_LIBRARIES} + ${WAYLAND-CLIENT_LIBRARIES} + ${WAYLAND-CURSOR_LIBRARIES} + ${XKBCOMMON_LIBRARIES} + ${XKBCOMMON-X11_LIBRARIES} + ) endif () diff --git a/indra/cmake/UnixInstall.cmake b/indra/cmake/UnixInstall.cmake index b82cbbcc2f..70107fea9a 100644 --- a/indra/cmake/UnixInstall.cmake +++ b/indra/cmake/UnixInstall.cmake @@ -6,23 +6,25 @@ set(INSTALL OFF CACHE BOOL "Generate install target.") if (INSTALL) - if (CMAKE_SYSTEM_NAME MATCHES FreeBSD) + if (${LINUX_DISTRO} MATCHES freedesktop OR CMAKE_SYSTEM_NAME MATCHES FreeBSD) set(INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX} CACHE PATH "Top-level installation directory.") - else (CMAKE_SYSTEM_NAME MATCHES FreeBSD) + else () set(INSTALL_PREFIX /usr CACHE PATH "Top-level installation directory.") - endif (CMAKE_SYSTEM_NAME MATCHES FreeBSD) + endif () - if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) - set(_LIB lib/${ARCH}-linux-gnu) + if (${LINUX_DISTRO} MATCHES freedesktop) + set(_LIB lib) + elseif (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) + set(_LIB lib/${ARCH}-linux-gnu/${VIEWER_BINARY_NAME}) elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR (${LINUX_DISTRO} MATCHES gentoo)) - set(_LIB lib${ADDRESS_SIZE}) + set(_LIB lib${ADDRESS_SIZE}/${VIEWER_BINARY_NAME}) else () - set(_LIB lib) + set(_LIB lib/${VIEWER_BINARY_NAME}) endif () - set(INSTALL_LIBRARY_DIR ${INSTALL_PREFIX}/${_LIB}/${VIEWER_BINARY_NAME} CACHE PATH + set(INSTALL_LIBRARY_DIR ${INSTALL_PREFIX}/${_LIB} CACHE PATH "Installation directory for dynamic library files and their resources.") set(INSTALL_SHARE_DIR ${INSTALL_PREFIX}/share CACHE PATH @@ -35,13 +37,17 @@ if (INSTALL) set(APP_SHARE_DIR ${INSTALL_SHARE_DIR}/${VIEWER_BINARY_NAME} CACHE PATH "Installation directory for read-only data files.") - if (${LINUX_DISTRO} MATCHES arch) + if (${LINUX_DISTRO} MATCHES freedesktop) + set(APP_LIBEXEC_DIR ${INSTALL_PREFIX}/libexec + CACHE PATH + "Installation directory for non-manual executables.") + elseif (${LINUX_DISTRO} MATCHES arch) set(APP_LIBEXEC_DIR ${INSTALL_PREFIX}/lib/${VIEWER_BINARY_NAME} CACHE PATH "Installation directory for non-manual executables.") - else (${LINUX_DISTRO} MATCHES arch) + else () set(APP_LIBEXEC_DIR ${INSTALL_PREFIX}/libexec/${VIEWER_BINARY_NAME} CACHE PATH "Installation directory for non-manual executables.") - endif (${LINUX_DISTRO} MATCHES arch) + endif () endif (INSTALL) diff --git a/indra/cmake/ViewerMiscLibs.cmake b/indra/cmake/ViewerMiscLibs.cmake index 65b8e5cfc0..c1f7678235 100644 --- a/indra/cmake/ViewerMiscLibs.cmake +++ b/indra/cmake/ViewerMiscLibs.cmake @@ -16,7 +16,7 @@ endif() use_prebuilt_binary(slvoice) endif (FALSE) -if (DARWIN) +if (DARWIN OR (${LINUX_DISTRO} MATCHES freedesktop)) use_prebuilt_binary(nanosvg) endif () use_prebuilt_binary(viewer-fonts) diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index 0aaa7433ce..1f7b3163c6 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -303,7 +303,7 @@ elseif ($ENV{MSYSTEM_CARCH} MATCHES aarch64) target_include_directories(llcommon PUBLIC ${prefix_result}/../include/sse2neon) endif () -if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu) OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed)) +if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu) OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64 OR ($ENV{MSYSTEM_CARCH} MATCHES aarch64)) target_include_directories(llcommon PUBLIC ${LIBS_PREBUILT_DIR}/include) endif () diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp index 34f1b83b6d..39f3bdce6d 100644 --- a/indra/llplugin/llpluginclassmedia.cpp +++ b/indra/llplugin/llpluginclassmedia.cpp @@ -1015,7 +1015,7 @@ void LLPluginClassMedia::enableMediaPluginDebugging( bool enable ) sendMessage( message ); } -#if LL_LINUX +#if LL_LINUX || __FreeBSD__ void LLPluginClassMedia::enablePipeWireVolumeCatcher( bool enable ) { LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "enable_pipewire_volume_catcher"); diff --git a/indra/llplugin/llpluginclassmedia.h b/indra/llplugin/llpluginclassmedia.h index 91901719d3..944108aa10 100644 --- a/indra/llplugin/llpluginclassmedia.h +++ b/indra/llplugin/llpluginclassmedia.h @@ -134,7 +134,7 @@ public: // Text may be unicode (utf8 encoded) bool textInput(const std::string &text, MASK modifiers, LLSD native_key_data); -#if LL_LINUX +#if LL_LINUX || __FreeBSD__ void enablePipeWireVolumeCatcher( bool enable ); #endif diff --git a/indra/llplugin/slplugin/CMakeLists.txt b/indra/llplugin/slplugin/CMakeLists.txt index 38f4c92b09..80356b6b51 100644 --- a/indra/llplugin/slplugin/CMakeLists.txt +++ b/indra/llplugin/slplugin/CMakeLists.txt @@ -61,6 +61,13 @@ elseif (DARWIN) ) endif () +if (CMAKE_BUILD_TYPE MATCHES Release AND (CMAKE_CXX_COMPILER_ID STREQUAL Clang OR CMAKE_CXX_COMPILER_ID MATCHES GNU)) + add_custom_command( + TARGET ${PROJECT_NAME} POST_BUILD + COMMAND ${CMAKE_STRIP} ${PROJECT_NAME} + ) +endif () + if (BUILD_SHARED_LIBS) set_target_properties(SLPlugin PROPERTIES LINK_FLAGS_RELEASE "${LINK_FLAGS_RELEASE} -Wl,--allow-shlib-undefined") @@ -69,6 +76,8 @@ endif () if (INSTALL) if (DARWIN OR WINDOWS) install(TARGETS ${PROJECT_NAME} DESTINATION .) + elseif (${LINUX_DISTRO} MATCHES freedesktop) + install(TARGETS ${PROJECT_NAME} DESTINATION libexec) elseif (${LINUX_DISTRO} MATCHES arch) install(TARGETS ${PROJECT_NAME} DESTINATION lib/${VIEWER_BINARY_NAME}) else () diff --git a/indra/llrender/CMakeLists.txt b/indra/llrender/CMakeLists.txt index 6de5685517..71423de95d 100644 --- a/indra/llrender/CMakeLists.txt +++ b/indra/llrender/CMakeLists.txt @@ -103,7 +103,12 @@ target_link_libraries(llrender llwindow ll::freetype OpenGL::GL - OpenGL::GLU ) +if (${LINUX_DISTRO} MATCHES freedesktop) + target_link_libraries(${PROJECT_NAME} ll::glu) +else () + target_link_libraries(${PROJECT_NAME} OpenGL::GLU) +endif () + include(LibraryInstall) diff --git a/indra/llwebrtc/CMakeLists.txt b/indra/llwebrtc/CMakeLists.txt index 85d40b2c5b..ff505f498a 100644 --- a/indra/llwebrtc/CMakeLists.txt +++ b/indra/llwebrtc/CMakeLists.txt @@ -69,6 +69,14 @@ ADD_CUSTOM_COMMAND(TARGET llwebrtc POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:llwebrtc> ${SHARED_LIB_STAGING_DIR}) + +if (CMAKE_BUILD_TYPE MATCHES Release AND (CMAKE_CXX_COMPILER_ID STREQUAL Clang OR CMAKE_CXX_COMPILER_ID MATCHES GNU)) + add_custom_command( + TARGET ${PROJECT_NAME} POST_BUILD + COMMAND ${CMAKE_STRIP} lib${PROJECT_NAME}.so + ) +endif () + # Add tests if (LL_TESTS) endif (LL_TESTS) @@ -76,17 +84,19 @@ endif (LL_TESTS) if (INSTALL) if (DARWIN) set(_LIB ../Frameworks) + elseif (${LINUX_DISTRO} MATCHES freedesktop) + set(_LIB lib) elseif (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) - set(_LIB lib/${ARCH}-linux-gnu) + set(_LIB lib/${ARCH}-linux-gnu/${VIEWER_BINARY_NAME}) elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR (${LINUX_DISTRO} MATCHES gentoo)) - set(_LIB lib${ADDRESS_SIZE}) + set(_LIB lib${ADDRESS_SIZE}/${VIEWER_BINARY_NAME}) else () - set(_LIB lib) + set(_LIB lib/${VIEWER_BINARY_NAME}) endif () if (WINDOWS) install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${PROJECT_NAME}.dll DESTINATION .) else () - install(TARGETS ${PROJECT_NAME} DESTINATION ${_LIB}/${VIEWER_BINARY_NAME}) + install(TARGETS ${PROJECT_NAME} DESTINATION ${_LIB}) endif () endif () diff --git a/indra/llwindow/llkeyboardmacosx.cpp b/indra/llwindow/llkeyboardmacosx.cpp index 89ff7c6d3f..101e035135 100644 --- a/indra/llwindow/llkeyboardmacosx.cpp +++ b/indra/llwindow/llkeyboardmacosx.cpp @@ -32,9 +32,32 @@ #include "llwindowmacosx-objc.h" +#include <CoreServices/CoreServices.h> // Required for TIS functions +#include <Carbon/Carbon.h> + LLKeyboardMacOSX::LLKeyboardMacOSX() { // Virtual keycode mapping table. Yes, this was as annoying to generate as it looks. + + bool isAzerty = false; + + TISInputSourceRef source = TISCopyCurrentKeyboardLayoutInputSource(); + if (source) + { + CFStringRef inputSourceID = (CFStringRef)TISGetInputSourceProperty(source, kTISPropertyInputSourceID); + if (inputSourceID) + { + char buf[128]; + // Convert CFString to a C-string for easy comparison + if (CFStringGetCString(inputSourceID, buf, sizeof(buf), kCFStringEncodingUTF8)) + { + // On macOS, AZERTY layouts are identified by "French" in their Input Source ID + isAzerty = (strstr(buf, "French") != nullptr); + } + } + CFRelease(source); + } + mTranslateKeyMap[0x00] = 'A'; mTranslateKeyMap[0x01] = 'S'; mTranslateKeyMap[0x02] = 'D'; @@ -52,6 +75,7 @@ LLKeyboardMacOSX::LLKeyboardMacOSX() mTranslateKeyMap[0x0f] = 'R'; mTranslateKeyMap[0x10] = 'Y'; mTranslateKeyMap[0x11] = 'T'; + mTranslateKeyMap[0x12] = '1'; mTranslateKeyMap[0x13] = '2'; mTranslateKeyMap[0x14] = '3'; @@ -132,6 +156,16 @@ LLKeyboardMacOSX::LLKeyboardMacOSX() mTranslateKeyMap[0x7d] = KEY_DOWN; mTranslateKeyMap[0x7e] = KEY_UP; + // azerty fix + if(isAzerty) + { + LL_WARNS() << "keyboard is AZERTY" << LL_ENDL; + mTranslateKeyMap[0x00] = 'Q'; + mTranslateKeyMap[0x06] = 'W'; + mTranslateKeyMap[0x0c] = 'A'; + mTranslateKeyMap[0x0d] = 'Z'; + } + // Build inverse map std::map<U16, KEY>::iterator iter; for (iter = mTranslateKeyMap.begin(); iter != mTranslateKeyMap.end(); iter++) diff --git a/indra/media_plugins/cef/CMakeLists.txt b/indra/media_plugins/cef/CMakeLists.txt index 4ac7bb93ca..666826dc89 100644 --- a/indra/media_plugins/cef/CMakeLists.txt +++ b/indra/media_plugins/cef/CMakeLists.txt @@ -51,8 +51,11 @@ if (LINUX) list(APPEND media_plugin_cef_SOURCE_FILES ${LINUX_VOLUME_CATCHER}) set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--build-id") - if (${LINUX_DISTRO} MATCHES fedora) - set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_RPATH};${INSTALL_PREFIX}/${_LIB}/cef) + if (${LINUX_DISTRO} MATCHES arch AND (CMAKE_SYSTEM_PROCESSOR MATCHES x86_64) OR (${LINUX_DISTRO} MATCHES fedora)) + if (${LINUX_DISTRO} MATCHES fedora) + set(LIB_SUFFIX ${ADDRESS_SIZE}) + endif () + set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_RPATH};${INSTALL_PREFIX}/lib${LIB_SUFFIX}/cef) endif () list(APPEND media_plugin_cef_LINK_LIBRARIES llwindow ) elseif (DARWIN) @@ -130,6 +133,13 @@ if (DARWIN) endif (DARWIN) +if (CMAKE_BUILD_TYPE MATCHES Release AND (CMAKE_CXX_COMPILER_ID STREQUAL Clang OR CMAKE_CXX_COMPILER_ID MATCHES GNU)) + add_custom_command( + TARGET ${PROJECT_NAME} POST_BUILD + COMMAND ${CMAKE_STRIP} lib${PROJECT_NAME}.so + ) +endif () + if (INSTALL) if (DARWIN) set(_LIB SLPlugin.app/Contents/Frameworks) @@ -147,50 +157,65 @@ if (INSTALL) DESTINATION ${_LIB} ) elseif (LINUX) - if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) - set(_LIB lib/${ARCH}-linux-gnu) + if (${LINUX_DISTRO} MATCHES freedesktop) + set(_LIB lib) + elseif (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) + set(_LIB lib/${ARCH}-linux-gnu/${VIEWER_BINARY_NAME}) elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR (${LINUX_DISTRO} MATCHES gentoo)) - set(_LIB lib${ADDRESS_SIZE}) + set(_LIB lib${ADDRESS_SIZE}/${VIEWER_BINARY_NAME}) else () - set(_LIB lib) + set(_LIB lib/${VIEWER_BINARY_NAME}) endif () - if (${LINUX_DISTRO} MATCHES arch) + if (${LINUX_DISTRO} MATCHES freedesktop) install( PROGRAMS ${AUTOBUILD_INSTALL_DIR}/bin/release/chrome-sandbox ${AUTOBUILD_INSTALL_DIR}/bin/release/dullahan_host + DESTINATION libexec + ) + elseif (${LINUX_DISTRO} MATCHES arch) + install( + PROGRAMS ${AUTOBUILD_INSTALL_DIR}/bin/release/dullahan_host DESTINATION lib/${VIEWER_BINARY_NAME} - #PERMISSIONS SETUID OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) + if (CMAKE_SYSTEM_PROCESSOR MATCHES aarch64) + install( + PROGRAMS ${AUTOBUILD_INSTALL_DIR}/bin/release/chrome-sandbox + DESTINATION lib/${VIEWER_BINARY_NAME} + ) + endif () elseif (${LINUX_DISTRO} MATCHES fedora) install( PROGRAMS ${AUTOBUILD_INSTALL_DIR}/bin/release/dullahan_host DESTINATION libexec/${VIEWER_BINARY_NAME} ) - else (${LINUX_DISTRO} MATCHES arch) + else () install( PROGRAMS ${AUTOBUILD_INSTALL_DIR}/bin/release/chrome-sandbox ${AUTOBUILD_INSTALL_DIR}/bin/release/dullahan_host DESTINATION libexec/${VIEWER_BINARY_NAME} - #PERMISSIONS SETUID OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) - endif (${LINUX_DISTRO} MATCHES arch) - if (NOT (${LINUX_DISTRO} MATCHES fedora)) + endif () + if (NOT (${LINUX_DISTRO} MATCHES arch AND (CMAKE_SYSTEM_PROCESSOR MATCHES x86_64) OR (${LINUX_DISTRO} MATCHES fedora))) install( FILES + ${ARCH_PREBUILT_DIRS_RELEASE}/libEGL.so + ${ARCH_PREBUILT_DIRS_RELEASE}/libGLESv2.so ${ARCH_PREBUILT_DIRS_RELEASE}/libcef.so ${ARCH_PREBUILT_DIRS_RELEASE}/libvk_swiftshader.so - ${AUTOBUILD_INSTALL_DIR}/lib/release/v8_context_snapshot.bin + ${ARCH_PREBUILT_DIRS_RELEASE}/libvulkan.so.1 + ${ARCH_PREBUILT_DIRS_RELEASE}/v8_context_snapshot.bin + ${ARCH_PREBUILT_DIRS_RELEASE}/vk_swiftshader_icd.json ${AUTOBUILD_INSTALL_DIR}/resources/chrome_100_percent.pak ${AUTOBUILD_INSTALL_DIR}/resources/chrome_200_percent.pak ${AUTOBUILD_INSTALL_DIR}/resources/icudtl.dat ${AUTOBUILD_INSTALL_DIR}/resources/resources.pak - DESTINATION ${_LIB}/${VIEWER_BINARY_NAME} + DESTINATION ${_LIB} ) install( DIRECTORY ${AUTOBUILD_INSTALL_DIR}/resources/locales - DESTINATION ${_LIB}/${VIEWER_BINARY_NAME} + DESTINATION ${_LIB} ) endif () elseif (WINDOWS) @@ -222,9 +247,9 @@ if (INSTALL) DESTINATION llplugin ) else () - set(_LIB lib) + set(_LIB lib/${VIEWER_BINARY_NAME}) endif () if (NOT WINDOWS) - install(TARGETS ${PROJECT_NAME} DESTINATION ${_LIB}/${VIEWER_BINARY_NAME}) + install(TARGETS ${PROJECT_NAME} DESTINATION ${_LIB}) endif () endif () diff --git a/indra/media_plugins/libvlc/CMakeLists.txt b/indra/media_plugins/libvlc/CMakeLists.txt index 7ebf33f6d6..ae0b35b1b0 100644 --- a/indra/media_plugins/libvlc/CMakeLists.txt +++ b/indra/media_plugins/libvlc/CMakeLists.txt @@ -72,6 +72,13 @@ if (DARWIN) endif (DARWIN) +if (CMAKE_BUILD_TYPE MATCHES Release AND (CMAKE_CXX_COMPILER_ID STREQUAL Clang OR CMAKE_CXX_COMPILER_ID MATCHES GNU)) + add_custom_command( + TARGET ${PROJECT_NAME} POST_BUILD + COMMAND ${CMAKE_STRIP} lib${PROJECT_NAME}.so + ) +endif () + if (INSTALL) if (DARWIN) set(_LIB SLPlugin.app/Contents/Frameworks) @@ -87,17 +94,33 @@ if (INSTALL) /Volumes/VLC\ media\ player/VLC.app/Contents/MacOS/lib/libvlccore.dylib DESTINATION ${_LIB}/plugins ) + elseif (${LINUX_DISTRO} MATCHES freedesktop) + set(_LIB lib) + install( + DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE}/vlc + DESTINATION ${_LIB} + ) + install( + FILES + ${ARCH_PREBUILT_DIRS_RELEASE}/libvlc.so + ${ARCH_PREBUILT_DIRS_RELEASE}/libvlc.so.5 + ${ARCH_PREBUILT_DIRS_RELEASE}/libvlc.so.5.6.1 + ${ARCH_PREBUILT_DIRS_RELEASE}/libvlccore.so + ${ARCH_PREBUILT_DIRS_RELEASE}/libvlccore.so.9 + ${ARCH_PREBUILT_DIRS_RELEASE}/libvlccore.so.9.0.1 + DESTINATION ${_LIB} + ) elseif (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) - set(_LIB lib/${ARCH}-linux-gnu) + set(_LIB lib/${ARCH}-linux-gnu/${VIEWER_BINARY_NAME}) elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR (${LINUX_DISTRO} MATCHES gentoo)) - set(_LIB lib${ADDRESS_SIZE}) + set(_LIB lib${ADDRESS_SIZE}/${VIEWER_BINARY_NAME}) else () - set(_LIB lib) + set(_LIB lib/${VIEWER_BINARY_NAME}) endif () if (WINDOWS) install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${PROJECT_NAME}.dll DESTINATION llplugin) install(DIRECTORY ${AUTOBUILD_INSTALL_DIR}/bin/release/plugins DESTINATION llplugin) else () - install(TARGETS ${PROJECT_NAME} DESTINATION ${_LIB}/${VIEWER_BINARY_NAME}) + install(TARGETS ${PROJECT_NAME} DESTINATION ${_LIB}) endif () endif () diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index f19716af7e..d42561d05e 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -50,9 +50,6 @@ include(VisualLeakDetector) #include(VulkanGltf) include(ZLIBNG) include(LLPrimitive) -if (CMAKE_SYSTEM_PROCESSOR MATCHES aarch64) - include(UnixInstall) -endif () if (ENABLE_MEDIA_PLUGINS) include(LibVLCPlugin) @@ -1534,7 +1531,6 @@ if (NOT (DARWIN OR WINDOWS)) llappviewerlinux.cpp PROPERTIES COMPILE_DEFINITIONS "${VIEWER_CHANNEL_VERSION_DEFINES}" - COMPILE_FLAGS "-DAPP_PLUGIN_DIR=\\\"${INSTALL_LIBRARY_DIR}\\\"" ) #LIST(APPEND viewer_SOURCE_FILES llappviewerlinux_api_dbus.cpp) if (NOT CMAKE_CXX_COMPILER_ID MATCHES AppleClang) @@ -1878,6 +1874,13 @@ else () ) endif () +if (CMAKE_BUILD_TYPE MATCHES Release AND (CMAKE_CXX_COMPILER_ID STREQUAL Clang OR CMAKE_CXX_COMPILER_ID MATCHES GNU)) + add_custom_command( + TARGET ${VIEWER_BINARY_NAME} POST_BUILD + COMMAND ${CMAKE_STRIP} ${VIEWER_BINARY_NAME} + ) +endif () + if(USE_PRECOMPILED_HEADERS) target_precompile_headers( ${VIEWER_BINARY_NAME} PRIVATE llviewerprecompiledheaders.h ) endif(USE_PRECOMPILED_HEADERS) @@ -2206,9 +2209,15 @@ endif () if (ENABLE_MEDIA_PLUGINS) target_link_libraries(${VIEWER_BINARY_NAME} ll::libvlc ) - if (DARWIN OR LINUX) + if (NOT (CMAKE_SYSTEM_NAME MATCHES FreeBSD)) target_link_libraries(${VIEWER_BINARY_NAME} ll::cef ) endif () + # Tell the viewer source which media-library version headers are + # actually available in this build, so version reporting in + # llappviewer.cpp is gated on the build configuration rather than on + # a CPU/compiler macro. Mirrors the link availability above exactly. + target_compile_definitions(${VIEWER_BINARY_NAME} PRIVATE LL_VLC=1) + target_compile_definitions(${VIEWER_BINARY_NAME} PRIVATE LL_CEF=1) endif () if (USE_DISCORD) @@ -2360,6 +2369,11 @@ if (LINUX) if (PACKAGE) if (${LINUX_DISTRO} MATCHES arch) + if (CMAKE_SYSTEM_PROCESSOR MATCHES x86_64) + set(ARCH_DEPS cef) + else () + set(ARCH_DEPS "at-spi2-core minizip") + endif () configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/PKGBUILD.in ${CMAKE_BINARY_DIR}/PKGBUILD @@ -2378,10 +2392,10 @@ if (LINUX) set(CPACK_DEBIAN_PACKAGE_SECTION net CACHE STRING "Debian package section.") if (${LINUX_DISTRO} MATCHES debian) - set(CPACK_DEBIAN_PACKAGE_DEPENDS "libalut0, libaprutil1t64, libboost-fiber1.83.0, libboost-filesystem1.83.0, libboost-program-options1.83.0, libboost-regex1.83.0, libboost-thread1.83.0, libboost-url1.83.0, libexpat1, libfltk1.4, libgles-dev, libglu1-mesa, libhunspell-1.7-0, libmeshoptimizer2d, libminizip1t64, libnghttp2-14, libnspr4, libnss3, libopenjp2-7, libsdl2-2.0-0, libvlc5, libvorbisenc2, libvorbisfile3, vlc-plugin-base" + set(CPACK_DEBIAN_PACKAGE_DEPENDS "libalut0, libaprutil1t64, libboost-fiber1.83.0, libboost-filesystem1.83.0, libboost-program-options1.83.0, libboost-regex1.83.0, libboost-thread1.83.0, libboost-url1.83.0, libexpat1, libfltk1.4, libglu1-mesa, libhunspell-1.7-0, libmeshoptimizer2d, libminizip1t64, libnghttp2-14, libnspr4, libnss3, libopenjp2-7, libsdl2-2.0-0, libvlc5, libvorbisenc2, libvorbisfile3, vlc-plugin-base" CACHE STRING "Debian package dependencies.") else () - set(CPACK_DEBIAN_PACKAGE_DEPENDS "libalut0, libaprutil1t64, libboost-fiber1.90.0, libboost-filesystem1.90.0, libboost-program-options1.90.0, libboost-regex1.90.0, libboost-thread1.90.0, libboost-url1.90.0, libexpat1, libfltk1.4, libgles-dev, libglu1-mesa, libhunspell-1.7-0, libmeshoptimizer2d, libminizip1t64, libnghttp2-14, libnspr4, libnss3, libopenjp2-7, libsdl2-2.0-0, libvlc5, libvorbisenc2, libvorbisfile3, vlc-plugin-base" + set(CPACK_DEBIAN_PACKAGE_DEPENDS "libalut0, libaprutil1t64, libboost-fiber1.90.0, libboost-filesystem1.90.0, libboost-program-options1.90.0, libboost-regex1.90.0, libboost-thread1.90.0, libboost-url1.90.0, libexpat1, libfltk1.4, libglu1-mesa, libhunspell-1.7-0, libmeshoptimizer2d, libminizip1t64, libnghttp2-14, libnspr4, libnss3, libopenjp2-7, libsdl2-2.0-0, libvlc5, libvorbisenc2, libvorbisfile3, vlc-plugin-base" CACHE STRING "Debian package dependencies.") endif () elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed)) @@ -2399,7 +2413,7 @@ if (LINUX) set(CPACK_RPM_PACKAGE_DESCRIPTION ${VIEWER_PACKAGE_DESCRIPTION} CACHE STRING "RPM package description.") if (${LINUX_DISTRO} MATCHES fedora) - set(CPACK_RPM_PACKAGE_REQUIRES "freealut, apr-util, boost-fiber, boost-program-options, boost-regex, boost-thread, boost-url, cef, expat, fltk, mesa-libGLU, hunspell, libnghttp2, openjpeg, sdl2-compat, vlc-libs, vlc-plugins-base, libvorbis" + set(CPACK_RPM_PACKAGE_REQUIRES "freealut, apr-util, boost-fiber, boost-program-options, boost-regex, boost-thread, boost-url, cef, expat, fltk, mesa-libGLU, hunspell, minizip-ng-compat, libnghttp2, openjpeg, sdl2-compat, vlc-libs, vlc-plugins-base, libvorbis" CACHE STRING "RPM package requirements.") else () set(CPACK_RPM_PACKAGE_REQUIRES "libalut0, libapr-util1-0, libboost_fiber1_91_0, libboost_program_options1_91_0, libboost_regex1_91_0, libboost_thread1_91_0, libboost_url1_91_0, libboost_url1_91_0-x86-64-v3, libpng16-16 expat, libfltk1_3, libGLU1, libhunspell-1_7-0, libnghttp2-14, openjpeg2, libSDL2-2_0-0, libvlc5, libvorbis0" diff --git a/indra/newview/FixBundle.cmake.in b/indra/newview/FixBundle.cmake.in index 77b4683c88..1d4192c94c 100644 --- a/indra/newview/FixBundle.cmake.in +++ b/indra/newview/FixBundle.cmake.in @@ -158,9 +158,9 @@ execute_process( COMMAND lipo libbz2.1.0.8.dylib -thin ${CMAKE_OSX_ARCHITECTURES} -output libbz2.1.0.8.dylib - COMMAND lipo libexpat.1.11.3.dylib + COMMAND lipo libexpat.1.12.2.dylib -thin ${CMAKE_OSX_ARCHITECTURES} - -output libexpat.1.11.3.dylib + -output libexpat.1.12.2.dylib COMMAND lipo libfreetype.6.dylib -thin ${CMAKE_OSX_ARCHITECTURES} -output libfreetype.6.dylib @@ -233,440 +233,3 @@ execute_process( WORKING_DIRECTORY ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Frameworks ERROR_QUIET ) - -message("By default, the situation is assumed to be the strictest, an Apple Silicon Mac with the default security settings. Running a native self-built viewer on it without correct codesigning would lead to a crash. Also, codesigning requires administrative access. If you believe you're not in such a situation, you can remove the sudos in this file.") -execute_process( - COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} - Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libEGL.dylib - Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libGLESv2.dylib - Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libcef_sandbox.dylib - Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libvk_swiftshader.dylib - Frameworks/Chromium\ Embedded\ Framework.framework - Frameworks/libalut.0.dylib - Frameworks/libapr-1.0.dylib - Frameworks/libaprutil-1.0.dylib - Frameworks/libboost_atomic-mt.dylib - Frameworks/libboost_context-mt.dylib - Frameworks/libboost_fiber-mt.dylib - Frameworks/libboost_filesystem-mt.dylib - Frameworks/libboost_program_options-mt.dylib - Frameworks/libboost_regex-mt.dylib - Frameworks/libboost_system-mt.dylib - Frameworks/libboost_thread-mt.dylib - Frameworks/libboost_url-mt.dylib - Frameworks/libbrotlicommon.1.2.0.dylib - Frameworks/libbrotlidec.1.2.0.dylib - Frameworks/libbz2.1.0.8.dylib - Frameworks/libdiscord_partner_sdk.dylib - Frameworks/libexpat.1.11.3.dylib - Frameworks/libfreetype.6.dylib - Frameworks/libhunspell-1.7.0.dylib - Frameworks/libiconv.2.dylib - Frameworks/libicudata.78.3.dylib - Frameworks/libicui18n.78.3.dylib - Frameworks/libicuuc.78.3.dylib - Frameworks/libjpeg.8.3.2.dylib - Frameworks/libllwebrtc.dylib - Frameworks/libminizip.1.dylib - Frameworks/libncurses.6.dylib - Frameworks/libndofdev.dylib - Frameworks/libnghttp2.14.dylib - Frameworks/libogg.0.dylib - Frameworks/libopenal.1.25.1.dylib - Frameworks/libopenjp2.2.5.4.dylib - Frameworks/libpng16.16.dylib - Frameworks/libvlc.5.dylib - Frameworks/libvlccore.9.dylib - Frameworks/libvorbis.0.dylib - Frameworks/libvorbisenc.2.dylib - Frameworks/libvorbisfile.3.dylib - Frameworks/libxml2.16.dylib - Frameworks/libz.1.3.2.dylib - Resources/libndofdev.dylib - Resources/SLPlugin.app/Contents/Frameworks/media_plugin_cef.dylib - Resources/SLPlugin.app/Contents/Frameworks/media_plugin_libvlc.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_concat_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_imem_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_mms_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_dummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_file_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_http_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_livehttp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_rist_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_shout_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_srt_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_udp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_realrtsp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_srt_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libadaptive_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaddonsfsstorage_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaddonsvorepository_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libadf_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libadjust_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libadpcm_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libadummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaes3_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libafile_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaiff_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libalphamask_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libamem_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libanaglyph_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libantiflicker_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaom_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaraw_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libarchive_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaribsub_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libasf_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libattachment_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libau_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudio_format_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudiobargraph_a_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudiobargraph_v_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudioscrobbler_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudiotoolboxmidi_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libauhal_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libavaudiocapture_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libavcapture_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libavcodec_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libavi_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libball_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libblend_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libblendbench_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libbluescreen_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libbluray-awt-j2se-1.4.0.jar - Resources/SLPlugin.app/Contents/Frameworks/plugins/libbluray-j2se-1.4.0.jar - Resources/SLPlugin.app/Contents/Frameworks/plugins/libbonjour_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcache_block_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcache_read_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcaf_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcanvas_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcaopengllayer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcdda_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcdg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libchain_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libchorus_flanger_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libci_filters_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libclone_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcolorthres_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcompressor_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libconsole_logger_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcroppadd_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcvdsub_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcvpx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdav1d_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdcp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libddummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdecomp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdeinterlace_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemux_cdg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemux_chromecast_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemux_stl_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemuxdump_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdiracsys_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdirectory_demux_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdmxmus_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdolby_surround_decoder_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdvbsub_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdvdnav_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdvdread_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdynamicoverlay_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libedgedetection_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libedummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libequalizer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liberase_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libes_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libexport_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libextract_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfaad_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfile_keystore_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfile_logger_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfilesystem_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfingerprinter_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libflac_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libflacsys_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libflaschen_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfloat_mixer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfolder_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfps_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfreetype_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfreeze_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libftp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libg711_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgain_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgaussianblur_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgestures_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libglconv_cvpx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgme_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgnutls_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgoom_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgradfun_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgradient_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgrain_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgrey_yuv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libh26x_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libhds_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libheadphone_channel_mixer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libhotkeys_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libhqdn3d_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libhttp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libhttps_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_10_p010_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_nv12_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_rgb_mmx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_rgb_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_rgb_sse2_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_yuy2_mmx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_yuy2_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_yuy2_sse2_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_i420_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_yuy2_mmx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_yuy2_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_yuy2_sse2_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libidummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libimage_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libimem_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libinflate_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libinteger_mixer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libinvert_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libjpeg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libkaraoke_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libkate_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libkeychain_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblibass_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblibbluray_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblive555_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblogger_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblogo_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblpcm_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblua_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmacosx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmad_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmagnify_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmarq_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmediadirs_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmemory_keystore_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmirror_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmjpeg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmkv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmod_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmono_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmosaic_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmotion_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmotionblur_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmotiondetect_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmp4_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmpc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmpg123_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmpgv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_asf_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_avi_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_dummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_mp4_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_mpjpeg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_ogg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_ps_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_ts_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_wav_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libncurses_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnetsync_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnfs_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnormvol_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnoseek_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnsc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnsspeechsynthesizer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnsv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnuv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libogg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liboggspots_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liboldmovie_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liboldrc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libopus_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libosx_notifications_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_a52_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_av1_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_copy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_dirac_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_dts_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_flac_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_h264_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_hevc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mlp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpeg4audio_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpeg4video_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpegaudio_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpegvideo_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_vc1_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libparam_eq_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libplaylist_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpng_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpodcast_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libposterize_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpostproc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libprefetch_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libps_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpsychedelic_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpuzzle_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpva_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librawaud_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librawdv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librawvid_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librawvideo_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libreal_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librecord_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libremap_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libremoteosd_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libripple_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librist_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librotate_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librss_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librtp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librtpvideo_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librv32_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsamplerate_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsap_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsatip_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscale_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscaletempo_pitch_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscaletempo_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscene_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libschroedinger_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscreen_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscte18_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscte27_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsdp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsecuretransport_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsepia_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsftp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsharpen_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libshm_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsid_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsimple_channel_mixer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libskiptags_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsmf_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libspatialaudio_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libspatializer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libspdif_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libspeex_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libspeex_resampler_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libspudec_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstats_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstereo_widen_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstl_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_autodel_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_bridge_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_chromaprint_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_chromecast_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_cycle_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_delay_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_description_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_display_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_dummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_duplicate_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_es_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_gather_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_mosaic_bridge_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_record_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_rtp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_setid_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_smem_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_standard_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_stats_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_transcode_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubsdec_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubsdelay_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubstx3g_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubsusf_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubtitle_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsvcdsub_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libswscale_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsyslog_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libt140_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtaglib_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtcp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtdummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtelx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtextst_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtheora_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtimecode_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtospdif_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtransform_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtrivial_channel_mixer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libts_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtta_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libttml_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtwolame_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libty_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libudp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libugly_resampler_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libuleaddvaudio_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libupnp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvc1_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvcd_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvdr_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvdummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvhs_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvideotoolbox_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvisual_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvlc.5.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvlccore.9.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvmem_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvobsub_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvoc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvod_rtsp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvorbis_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvout_macosx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvpx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libwall_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libwav_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libwave_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libwebvtt_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libx26410b_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libx264_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libx265_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libxa_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libxml_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuvp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuy2_i420_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuy2_i422_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libzvbi_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(Alerts\).app/Contents/MacOS/DullahanHelper\ \(Alerts\) - Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(GPU\).app/Contents/MacOS/DullahanHelper\ \(GPU\) - Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(Plugin\).app/Contents/MacOS/DullahanHelper\ \(Plugin\) - WORKING_DIRECTORY ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents - ) -execute_process( - COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} - DullahanHelper.app - COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} - --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements - DullahanHelper\ \(Renderer\).app/Contents/MacOS/DullahanHelper\ \(Renderer\) - COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} - --deep - DullahanHelper\ \(Alerts\).app - DullahanHelper\ \(GPU\).app - DullahanHelper\ \(Plugin\).app - WORKING_DIRECTORY ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks - ) -execute_process( - COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} - --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements - --deep - DullahanHelper\ \(Renderer\).app - WORKING_DIRECTORY ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks - ) -execute_process( - COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} - --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements - SLPlugin.app - WORKING_DIRECTORY ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources - ) -execute_process( - COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} - --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements - -i net.${VIEWER_BINARY_NAME}.viewer - ${VIEWER_CHANNEL}.app - WORKING_DIRECTORY ${viewer_BINARY_DIR} - ) diff --git a/indra/newview/FixPackage.cmake.in b/indra/newview/FixPackage.cmake.in index e67026aabb..26fd3ccff7 100644 --- a/indra/newview/FixPackage.cmake.in +++ b/indra/newview/FixPackage.cmake.in @@ -158,9 +158,9 @@ execute_process( COMMAND lipo libbz2.1.0.8.dylib -thin ${CMAKE_OSX_ARCHITECTURES} -output libbz2.1.0.8.dylib - COMMAND lipo libexpat.1.11.3.dylib + COMMAND lipo libexpat.1.12.2.dylib -thin ${CMAKE_OSX_ARCHITECTURES} - -output libexpat.1.11.3.dylib + -output libexpat.1.12.2.dylib COMMAND lipo libfreetype.6.dylib -thin ${CMAKE_OSX_ARCHITECTURES} -output libfreetype.6.dylib @@ -233,439 +233,3 @@ execute_process( WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Frameworks ERROR_QUIET ) - -message("By default, the situation is assumed to be the strictest, an Apple Silicon Mac with the default security settings. Running a native self-built viewer on it without correct codesigning would lead to a crash. Also, codesigning requires administrative access. If you believe you're not in such a situation, you can remove the sudos in this file.") -execute_process( - COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} - Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libEGL.dylib - Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libGLESv2.dylib - Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libcef_sandbox.dylib - Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libvk_swiftshader.dylib - Frameworks/Chromium\ Embedded\ Framework.framework - Frameworks/libalut.0.dylib - Frameworks/libapr-1.0.dylib - Frameworks/libaprutil-1.0.dylib - Frameworks/libboost_atomic-mt.dylib - Frameworks/libboost_context-mt.dylib - Frameworks/libboost_fiber-mt.dylib - Frameworks/libboost_filesystem-mt.dylib - Frameworks/libboost_program_options-mt.dylib - Frameworks/libboost_regex-mt.dylib - Frameworks/libboost_system-mt.dylib - Frameworks/libboost_thread-mt.dylib - Frameworks/libboost_url-mt.dylib - Frameworks/libbrotlicommon.1.2.0.dylib - Frameworks/libbrotlidec.1.2.0.dylib - Frameworks/libbz2.1.0.8.dylib - Frameworks/libdiscord_partner_sdk.dylib - Frameworks/libexpat.1.11.3.dylib - Frameworks/libfreetype.6.dylib - Frameworks/libhunspell-1.7.0.dylib - Frameworks/libiconv.2.dylib - Frameworks/libicudata.78.3.dylib - Frameworks/libicui18n.78.3.dylib - Frameworks/libicuuc.78.3.dylib - Frameworks/libjpeg.8.3.2.dylib - Frameworks/libllwebrtc.dylib - Frameworks/libminizip.1.dylib - Frameworks/libncurses.6.dylib - Frameworks/libndofdev.dylib - Frameworks/libnghttp2.14.dylib - Frameworks/libogg.0.dylib - Frameworks/libopenal.1.25.1.dylib - Frameworks/libopenjp2.2.5.4.dylib - Frameworks/libpng16.16.dylib - Frameworks/libvlc.5.dylib - Frameworks/libvlccore.9.dylib - Frameworks/libvorbis.0.dylib - Frameworks/libvorbisenc.2.dylib - Frameworks/libvorbisfile.3.dylib - Frameworks/libxml2.16.dylib - Frameworks/libz.1.3.2.dylib - Resources/libndofdev.dylib - Resources/SLPlugin.app/Contents/Frameworks/media_plugin_cef.dylib - Resources/SLPlugin.app/Contents/Frameworks/media_plugin_libvlc.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_concat_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_imem_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_mms_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_dummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_file_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_http_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_livehttp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_rist_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_shout_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_srt_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_udp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_realrtsp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_srt_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libadaptive_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaddonsfsstorage_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaddonsvorepository_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libadf_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libadjust_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libadpcm_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libadummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaes3_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libafile_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaiff_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libalphamask_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libamem_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libanaglyph_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libantiflicker_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaom_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaraw_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libarchive_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaribsub_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libasf_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libattachment_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libau_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudio_format_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudiobargraph_a_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudiobargraph_v_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudioscrobbler_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudiotoolboxmidi_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libauhal_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libavaudiocapture_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libavcapture_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libavcodec_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libavi_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libball_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libblend_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libblendbench_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libbluescreen_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libbluray-awt-j2se-1.4.0.jar - Resources/SLPlugin.app/Contents/Frameworks/plugins/libbluray-j2se-1.4.0.jar - Resources/SLPlugin.app/Contents/Frameworks/plugins/libbonjour_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcache_block_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcache_read_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcaf_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcanvas_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcaopengllayer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcdda_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcdg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libchain_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libchorus_flanger_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libci_filters_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libclone_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcolorthres_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcompressor_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libconsole_logger_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcroppadd_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcvdsub_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcvpx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdav1d_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdcp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libddummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdecomp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdeinterlace_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemux_cdg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemux_chromecast_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemux_stl_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemuxdump_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdiracsys_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdirectory_demux_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdmxmus_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdolby_surround_decoder_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdvbsub_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdvdnav_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdvdread_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdynamicoverlay_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libedgedetection_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libedummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libequalizer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liberase_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libes_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libexport_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libextract_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfaad_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfile_keystore_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfile_logger_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfilesystem_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfingerprinter_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libflac_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libflacsys_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libflaschen_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfloat_mixer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfolder_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfps_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfreetype_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfreeze_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libftp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libg711_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgain_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgaussianblur_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgestures_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libglconv_cvpx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgme_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgnutls_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgoom_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgradfun_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgradient_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgrain_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgrey_yuv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libh26x_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libhds_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libheadphone_channel_mixer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libhotkeys_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libhqdn3d_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libhttp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libhttps_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_10_p010_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_nv12_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_rgb_mmx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_rgb_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_rgb_sse2_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_yuy2_mmx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_yuy2_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_yuy2_sse2_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_i420_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_yuy2_mmx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_yuy2_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_yuy2_sse2_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libidummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libimage_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libimem_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libinflate_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libinteger_mixer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libinvert_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libjpeg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libkaraoke_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libkate_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libkeychain_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblibass_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblibbluray_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblive555_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblogger_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblogo_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblpcm_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblua_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmacosx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmad_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmagnify_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmarq_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmediadirs_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmemory_keystore_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmirror_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmjpeg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmkv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmod_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmono_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmosaic_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmotion_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmotionblur_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmotiondetect_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmp4_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmpc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmpg123_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmpgv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_asf_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_avi_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_dummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_mp4_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_mpjpeg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_ogg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_ps_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_ts_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_wav_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libncurses_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnetsync_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnfs_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnormvol_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnoseek_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnsc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnsspeechsynthesizer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnsv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnuv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libogg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liboggspots_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liboldmovie_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liboldrc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libopus_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libosx_notifications_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_a52_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_av1_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_copy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_dirac_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_dts_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_flac_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_h264_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_hevc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mlp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpeg4audio_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpeg4video_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpegaudio_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpegvideo_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_vc1_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libparam_eq_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libplaylist_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpng_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpodcast_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libposterize_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpostproc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libprefetch_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libps_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpsychedelic_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpuzzle_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpva_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librawaud_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librawdv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librawvid_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librawvideo_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libreal_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librecord_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libremap_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libremoteosd_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libripple_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librist_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librotate_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librss_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librtp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librtpvideo_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librv32_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsamplerate_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsap_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsatip_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscale_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscaletempo_pitch_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscaletempo_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscene_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libschroedinger_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscreen_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscte18_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscte27_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsdp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsecuretransport_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsepia_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsftp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsharpen_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libshm_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsid_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsimple_channel_mixer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libskiptags_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsmf_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libspatialaudio_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libspatializer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libspdif_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libspeex_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libspeex_resampler_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libspudec_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstats_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstereo_widen_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstl_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_autodel_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_bridge_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_chromaprint_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_chromecast_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_cycle_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_delay_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_description_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_display_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_dummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_duplicate_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_es_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_gather_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_mosaic_bridge_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_record_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_rtp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_setid_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_smem_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_standard_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_stats_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_transcode_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubsdec_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubsdelay_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubstx3g_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubsusf_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubtitle_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsvcdsub_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libswscale_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsyslog_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libt140_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtaglib_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtcp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtdummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtelx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtextst_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtheora_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtimecode_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtospdif_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtransform_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtrivial_channel_mixer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libts_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtta_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libttml_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtwolame_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libty_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libudp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libugly_resampler_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libuleaddvaudio_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libupnp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvc1_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvcd_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvdr_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvdummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvhs_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvideotoolbox_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvisual_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvlc.5.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvlccore.9.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvmem_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvobsub_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvoc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvod_rtsp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvorbis_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvout_macosx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvpx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libwall_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libwav_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libwave_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libwebvtt_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libx26410b_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libx264_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libx265_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libxa_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libxml_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuvp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuy2_i420_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuy2_i422_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libzvbi_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper.app - Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(Alerts\).app/Contents/MacOS/DullahanHelper\ \(Alerts\) - Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(GPU\).app/Contents/MacOS/DullahanHelper\ \(GPU\) - Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(Plugin\).app/Contents/MacOS/DullahanHelper\ \(Plugin\) - WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents - ) -execute_process( - COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} - --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements - DullahanHelper\ \(Renderer\).app/Contents/MacOS/DullahanHelper\ \(Renderer\) - COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} - --deep - DullahanHelper\ \(Alerts\).app - DullahanHelper\ \(GPU\).app - DullahanHelper\ \(Plugin\).app - WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks - ) -execute_process( - COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} - --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements - --deep - DullahanHelper\ \(Renderer\).app - WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks - ) -execute_process( - COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} - --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements - SLPlugin.app - WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources - ) -execute_process( - COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} - --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements - -i net.${VIEWER_BINARY_NAME}.viewer - ${CPACK_BUNDLE_NAME}.app - WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME} - ) diff --git a/indra/newview/PKGBUILD.in b/indra/newview/PKGBUILD.in index 3de9558000..8b57e62f58 100644 --- a/indra/newview/PKGBUILD.in +++ b/indra/newview/PKGBUILD.in @@ -6,7 +6,7 @@ pkgdesc="${VIEWER_PACKAGE_COMMENT}" arch=('${CMAKE_SYSTEM_PROCESSOR}') url="https://${VIEWER_PACKAGE_DOMAIN_NAME}" license=('LGPL-2.1') -depends=(freealut apr-util at-spi2-core boost-libs fltk glu hunspell libnghttp2 openjpeg2 sdl2 vlc libvorbis) +depends=(freealut apr-util boost-libs fltk glu hunspell libnghttp2 openjpeg2 sdl2 vlc libvorbis ${ARCH_DEPS}) package() { cd "$startdir" diff --git a/indra/newview/SignBundle.cmake.in b/indra/newview/SignBundle.cmake.in new file mode 100644 index 0000000000..eb6ea1a35d --- /dev/null +++ b/indra/newview/SignBundle.cmake.in @@ -0,0 +1,430 @@ +message("By default, the situation is assumed to be the strictest, an Apple Silicon Mac with the default security settings. Running a native self-built viewer on it without correct codesigning would lead to a crash. Also, codesigning requires administrative access. If you believe you're not in such a situation, you can remove the sudos in this file.") +execute_process( + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libEGL.dylib + Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libGLESv2.dylib + Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libcef_sandbox.dylib + Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libvk_swiftshader.dylib + Frameworks/Chromium\ Embedded\ Framework.framework + Frameworks/libalut.0.dylib + Frameworks/libapr-1.0.dylib + Frameworks/libaprutil-1.0.dylib + Frameworks/libboost_atomic-mt.dylib + Frameworks/libboost_context-mt.dylib + Frameworks/libboost_fiber-mt.dylib + Frameworks/libboost_filesystem-mt.dylib + Frameworks/libboost_program_options-mt.dylib + Frameworks/libboost_regex-mt.dylib + Frameworks/libboost_system-mt.dylib + Frameworks/libboost_thread-mt.dylib + Frameworks/libboost_url-mt.dylib + Frameworks/libbrotlicommon.1.2.0.dylib + Frameworks/libbrotlidec.1.2.0.dylib + Frameworks/libbz2.1.0.8.dylib + Frameworks/libdiscord_partner_sdk.dylib + Frameworks/libexpat.1.12.2.dylib + Frameworks/libfreetype.6.dylib + Frameworks/libhunspell-1.7.0.dylib + Frameworks/libiconv.2.dylib + Frameworks/libicudata.78.3.dylib + Frameworks/libicui18n.78.3.dylib + Frameworks/libicuuc.78.3.dylib + Frameworks/libjpeg.8.3.2.dylib + Frameworks/libllwebrtc.dylib + Frameworks/libminizip.1.dylib + Frameworks/libncurses.6.dylib + Frameworks/libndofdev.dylib + Frameworks/libnghttp2.14.dylib + Frameworks/libogg.0.dylib + Frameworks/libopenal.1.25.1.dylib + Frameworks/libopenjp2.2.5.4.dylib + Frameworks/libpng16.16.dylib + Frameworks/libvlc.5.dylib + Frameworks/libvlccore.9.dylib + Frameworks/libvorbis.0.dylib + Frameworks/libvorbisenc.2.dylib + Frameworks/libvorbisfile.3.dylib + Frameworks/libxml2.16.dylib + Frameworks/libz.1.3.2.dylib + Resources/libndofdev.dylib + Resources/SLPlugin.app/Contents/Frameworks/media_plugin_cef.dylib + Resources/SLPlugin.app/Contents/Frameworks/media_plugin_libvlc.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_concat_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_imem_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_mms_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_dummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_file_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_http_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_livehttp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_rist_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_shout_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_srt_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_udp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_realrtsp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_srt_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libadaptive_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaddonsfsstorage_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaddonsvorepository_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libadf_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libadjust_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libadpcm_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libadummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaes3_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libafile_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaiff_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libalphamask_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libamem_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libanaglyph_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libantiflicker_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaom_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaraw_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libarchive_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaribsub_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libasf_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libattachment_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libau_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudio_format_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudiobargraph_a_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudiobargraph_v_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudioscrobbler_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudiotoolboxmidi_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libauhal_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libavaudiocapture_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libavcapture_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libavcodec_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libavi_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libball_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libblend_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libblendbench_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libbluescreen_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libbluray-awt-j2se-1.4.0.jar + Resources/SLPlugin.app/Contents/Frameworks/plugins/libbluray-j2se-1.4.0.jar + Resources/SLPlugin.app/Contents/Frameworks/plugins/libbonjour_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcache_block_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcache_read_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcaf_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcanvas_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcaopengllayer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcdda_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcdg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libchain_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libchorus_flanger_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libci_filters_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libclone_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcolorthres_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcompressor_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libconsole_logger_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcroppadd_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcvdsub_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcvpx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdav1d_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdcp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libddummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdecomp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdeinterlace_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemux_cdg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemux_chromecast_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemux_stl_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemuxdump_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdiracsys_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdirectory_demux_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdmxmus_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdolby_surround_decoder_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdvbsub_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdvdnav_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdvdread_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdynamicoverlay_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libedgedetection_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libedummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libequalizer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liberase_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libes_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libexport_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libextract_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfaad_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfile_keystore_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfile_logger_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfilesystem_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfingerprinter_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libflac_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libflacsys_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libflaschen_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfloat_mixer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfolder_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfps_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfreetype_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfreeze_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libftp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libg711_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgain_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgaussianblur_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgestures_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libglconv_cvpx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgme_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgnutls_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgoom_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgradfun_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgradient_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgrain_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgrey_yuv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libh26x_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libhds_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libheadphone_channel_mixer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libhotkeys_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libhqdn3d_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libhttp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libhttps_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_10_p010_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_nv12_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_rgb_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_yuy2_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_i420_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_yuy2_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libidummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libimage_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libimem_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libinflate_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libinteger_mixer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libinvert_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libjpeg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libkaraoke_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libkate_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libkeychain_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblibass_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblibbluray_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblive555_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblogger_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblogo_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblpcm_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblua_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmacosx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmad_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmagnify_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmarq_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmediadirs_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmemory_keystore_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmirror_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmjpeg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmkv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmod_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmono_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmosaic_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmotion_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmotionblur_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmotiondetect_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmp4_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmpc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmpg123_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmpgv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_asf_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_avi_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_dummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_mp4_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_mpjpeg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_ogg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_ps_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_ts_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_wav_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libncurses_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnetsync_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnfs_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnormvol_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnoseek_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnsc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnsspeechsynthesizer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnsv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnuv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libogg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liboggspots_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liboldmovie_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liboldrc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libopus_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libosx_notifications_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_a52_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_av1_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_copy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_dirac_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_dts_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_flac_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_h264_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_hevc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mlp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpeg4audio_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpeg4video_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpegaudio_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpegvideo_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_vc1_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libparam_eq_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libplaylist_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpng_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpodcast_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libposterize_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpostproc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libprefetch_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libps_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpsychedelic_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpuzzle_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpva_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librawaud_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librawdv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librawvid_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librawvideo_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libreal_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librecord_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libremap_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libremoteosd_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libripple_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librist_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librotate_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librss_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librtp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librtpvideo_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librv32_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsamplerate_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsap_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsatip_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscale_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscaletempo_pitch_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscaletempo_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscene_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libschroedinger_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscreen_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscte18_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscte27_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsdp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsecuretransport_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsepia_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsftp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsharpen_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libshm_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsid_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsimple_channel_mixer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libskiptags_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsmf_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libspatialaudio_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libspatializer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libspdif_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libspeex_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libspeex_resampler_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libspudec_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstats_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstereo_widen_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstl_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_autodel_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_bridge_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_chromaprint_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_chromecast_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_cycle_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_delay_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_description_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_display_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_dummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_duplicate_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_es_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_gather_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_mosaic_bridge_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_record_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_rtp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_setid_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_smem_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_standard_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_stats_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_transcode_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubsdec_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubsdelay_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubstx3g_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubsusf_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubtitle_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsvcdsub_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libswscale_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsyslog_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libt140_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtaglib_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtcp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtdummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtelx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtextst_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtheora_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtimecode_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtospdif_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtransform_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtrivial_channel_mixer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libts_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtta_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libttml_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtwolame_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libty_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libudp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libugly_resampler_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libuleaddvaudio_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libupnp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvc1_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvcd_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvdr_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvdummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvhs_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvideotoolbox_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvisual_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvlc.5.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvlccore.9.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvmem_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvobsub_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvoc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvod_rtsp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvorbis_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvout_macosx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvpx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libwall_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libwav_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libwave_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libwebvtt_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libx26410b_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libx264_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libx265_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libxa_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libxml_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuvp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuy2_i420_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuy2_i422_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libzvbi_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(Alerts\).app/Contents/MacOS/DullahanHelper\ \(Alerts\) + Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(GPU\).app/Contents/MacOS/DullahanHelper\ \(GPU\) + Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(Plugin\).app/Contents/MacOS/DullahanHelper\ \(Plugin\) + WORKING_DIRECTORY ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents + ) +execute_process( + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + DullahanHelper.app + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements + DullahanHelper\ \(Renderer\).app/Contents/MacOS/DullahanHelper\ \(Renderer\) + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + --deep + DullahanHelper\ \(Alerts\).app + DullahanHelper\ \(GPU\).app + DullahanHelper\ \(Plugin\).app + WORKING_DIRECTORY ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks + ) +execute_process( + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements + --deep + DullahanHelper\ \(Renderer\).app + WORKING_DIRECTORY ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks + ) +execute_process( + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements + SLPlugin.app + WORKING_DIRECTORY ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources + ) +execute_process( + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements + -i net.${VIEWER_BINARY_NAME}.viewer + ${VIEWER_CHANNEL}.app + WORKING_DIRECTORY ${viewer_BINARY_DIR} + ) diff --git a/indra/newview/SignBundleMmxSse2.cmake.in b/indra/newview/SignBundleMmxSse2.cmake.in new file mode 100644 index 0000000000..9d463337b0 --- /dev/null +++ b/indra/newview/SignBundleMmxSse2.cmake.in @@ -0,0 +1,11 @@ +message("By default, the situation is assumed to be the strictest, an Apple Silicon Mac with the default security settings. Codesigning requires administrative access. If you believe you're not in such a situation, you can remove the sudos in this file.") +execute_process( + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_rgb_mmx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_rgb_sse2_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_yuy2_mmx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_yuy2_sse2_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_yuy2_mmx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_yuy2_sse2_plugin.dylib + WORKING_DIRECTORY ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents + ) diff --git a/indra/newview/SignPackage.cmake.in b/indra/newview/SignPackage.cmake.in new file mode 100644 index 0000000000..9b5be4a7fd --- /dev/null +++ b/indra/newview/SignPackage.cmake.in @@ -0,0 +1,430 @@ +message("By default, the situation is assumed to be the strictest, an Apple Silicon Mac with the default security settings. Running a native self-built viewer on it without correct codesigning would lead to a crash. Also, codesigning requires administrative access. If you believe you're not in such a situation, you can remove the sudos in this file.") +execute_process( + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libEGL.dylib + Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libGLESv2.dylib + Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libcef_sandbox.dylib + Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libvk_swiftshader.dylib + Frameworks/Chromium\ Embedded\ Framework.framework + Frameworks/libalut.0.dylib + Frameworks/libapr-1.0.dylib + Frameworks/libaprutil-1.0.dylib + Frameworks/libboost_atomic-mt.dylib + Frameworks/libboost_context-mt.dylib + Frameworks/libboost_fiber-mt.dylib + Frameworks/libboost_filesystem-mt.dylib + Frameworks/libboost_program_options-mt.dylib + Frameworks/libboost_regex-mt.dylib + Frameworks/libboost_system-mt.dylib + Frameworks/libboost_thread-mt.dylib + Frameworks/libboost_url-mt.dylib + Frameworks/libbrotlicommon.1.2.0.dylib + Frameworks/libbrotlidec.1.2.0.dylib + Frameworks/libbz2.1.0.8.dylib + Frameworks/libdiscord_partner_sdk.dylib + Frameworks/libexpat.1.12.2.dylib + Frameworks/libfreetype.6.dylib + Frameworks/libhunspell-1.7.0.dylib + Frameworks/libiconv.2.dylib + Frameworks/libicudata.78.3.dylib + Frameworks/libicui18n.78.3.dylib + Frameworks/libicuuc.78.3.dylib + Frameworks/libjpeg.8.3.2.dylib + Frameworks/libllwebrtc.dylib + Frameworks/libminizip.1.dylib + Frameworks/libncurses.6.dylib + Frameworks/libndofdev.dylib + Frameworks/libnghttp2.14.dylib + Frameworks/libogg.0.dylib + Frameworks/libopenal.1.25.1.dylib + Frameworks/libopenjp2.2.5.4.dylib + Frameworks/libpng16.16.dylib + Frameworks/libvlc.5.dylib + Frameworks/libvlccore.9.dylib + Frameworks/libvorbis.0.dylib + Frameworks/libvorbisenc.2.dylib + Frameworks/libvorbisfile.3.dylib + Frameworks/libxml2.16.dylib + Frameworks/libz.1.3.2.dylib + Resources/libndofdev.dylib + Resources/SLPlugin.app/Contents/Frameworks/media_plugin_cef.dylib + Resources/SLPlugin.app/Contents/Frameworks/media_plugin_libvlc.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_concat_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_imem_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_mms_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_dummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_file_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_http_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_livehttp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_rist_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_shout_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_srt_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_udp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_realrtsp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_srt_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libadaptive_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaddonsfsstorage_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaddonsvorepository_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libadf_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libadjust_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libadpcm_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libadummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaes3_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libafile_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaiff_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libalphamask_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libamem_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libanaglyph_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libantiflicker_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaom_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaraw_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libarchive_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaribsub_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libasf_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libattachment_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libau_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudio_format_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudiobargraph_a_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudiobargraph_v_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudioscrobbler_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudiotoolboxmidi_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libauhal_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libavaudiocapture_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libavcapture_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libavcodec_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libavi_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libball_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libblend_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libblendbench_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libbluescreen_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libbluray-awt-j2se-1.4.0.jar + Resources/SLPlugin.app/Contents/Frameworks/plugins/libbluray-j2se-1.4.0.jar + Resources/SLPlugin.app/Contents/Frameworks/plugins/libbonjour_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcache_block_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcache_read_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcaf_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcanvas_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcaopengllayer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcdda_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcdg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libchain_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libchorus_flanger_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libci_filters_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libclone_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcolorthres_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcompressor_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libconsole_logger_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcroppadd_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcvdsub_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcvpx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdav1d_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdcp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libddummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdecomp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdeinterlace_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemux_cdg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemux_chromecast_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemux_stl_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemuxdump_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdiracsys_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdirectory_demux_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdmxmus_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdolby_surround_decoder_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdvbsub_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdvdnav_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdvdread_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdynamicoverlay_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libedgedetection_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libedummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libequalizer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liberase_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libes_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libexport_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libextract_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfaad_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfile_keystore_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfile_logger_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfilesystem_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfingerprinter_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libflac_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libflacsys_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libflaschen_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfloat_mixer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfolder_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfps_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfreetype_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfreeze_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libftp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libg711_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgain_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgaussianblur_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgestures_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libglconv_cvpx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgme_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgnutls_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgoom_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgradfun_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgradient_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgrain_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgrey_yuv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libh26x_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libhds_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libheadphone_channel_mixer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libhotkeys_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libhqdn3d_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libhttp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libhttps_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_10_p010_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_nv12_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_rgb_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_yuy2_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_i420_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_yuy2_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libidummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libimage_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libimem_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libinflate_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libinteger_mixer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libinvert_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libjpeg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libkaraoke_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libkate_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libkeychain_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblibass_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblibbluray_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblive555_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblogger_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblogo_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblpcm_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblua_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmacosx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmad_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmagnify_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmarq_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmediadirs_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmemory_keystore_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmirror_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmjpeg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmkv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmod_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmono_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmosaic_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmotion_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmotionblur_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmotiondetect_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmp4_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmpc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmpg123_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmpgv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_asf_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_avi_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_dummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_mp4_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_mpjpeg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_ogg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_ps_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_ts_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_wav_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libncurses_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnetsync_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnfs_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnormvol_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnoseek_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnsc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnsspeechsynthesizer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnsv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnuv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libogg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liboggspots_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liboldmovie_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liboldrc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libopus_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libosx_notifications_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_a52_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_av1_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_copy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_dirac_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_dts_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_flac_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_h264_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_hevc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mlp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpeg4audio_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpeg4video_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpegaudio_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpegvideo_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_vc1_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libparam_eq_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libplaylist_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpng_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpodcast_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libposterize_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpostproc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libprefetch_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libps_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpsychedelic_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpuzzle_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpva_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librawaud_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librawdv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librawvid_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librawvideo_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libreal_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librecord_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libremap_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libremoteosd_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libripple_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librist_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librotate_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librss_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librtp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librtpvideo_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librv32_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsamplerate_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsap_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsatip_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscale_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscaletempo_pitch_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscaletempo_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscene_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libschroedinger_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscreen_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscte18_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscte27_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsdp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsecuretransport_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsepia_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsftp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsharpen_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libshm_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsid_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsimple_channel_mixer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libskiptags_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsmf_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libspatialaudio_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libspatializer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libspdif_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libspeex_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libspeex_resampler_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libspudec_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstats_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstereo_widen_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstl_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_autodel_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_bridge_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_chromaprint_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_chromecast_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_cycle_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_delay_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_description_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_display_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_dummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_duplicate_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_es_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_gather_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_mosaic_bridge_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_record_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_rtp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_setid_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_smem_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_standard_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_stats_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_transcode_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubsdec_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubsdelay_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubstx3g_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubsusf_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubtitle_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsvcdsub_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libswscale_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsyslog_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libt140_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtaglib_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtcp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtdummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtelx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtextst_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtheora_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtimecode_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtospdif_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtransform_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtrivial_channel_mixer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libts_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtta_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libttml_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtwolame_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libty_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libudp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libugly_resampler_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libuleaddvaudio_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libupnp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvc1_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvcd_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvdr_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvdummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvhs_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvideotoolbox_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvisual_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvlc.5.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvlccore.9.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvmem_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvobsub_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvoc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvod_rtsp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvorbis_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvout_macosx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvpx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libwall_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libwav_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libwave_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libwebvtt_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libx26410b_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libx264_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libx265_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libxa_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libxml_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuvp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuy2_i420_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuy2_i422_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libzvbi_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(Alerts\).app/Contents/MacOS/DullahanHelper\ \(Alerts\) + Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(GPU\).app/Contents/MacOS/DullahanHelper\ \(GPU\) + Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(Plugin\).app/Contents/MacOS/DullahanHelper\ \(Plugin\) + WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents + ) +execute_process( + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + DullahanHelper.app + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements + DullahanHelper\ \(Renderer\).app/Contents/MacOS/DullahanHelper\ \(Renderer\) + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + --deep + DullahanHelper\ \(Alerts\).app + DullahanHelper\ \(GPU\).app + DullahanHelper\ \(Plugin\).app + WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks + ) +execute_process( + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements + --deep + DullahanHelper\ \(Renderer\).app + WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks + ) +execute_process( + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements + SLPlugin.app + WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources + ) +execute_process( + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements + -i net.${VIEWER_BINARY_NAME}.viewer + ${CPACK_BUNDLE_NAME}.app + WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME} + ) diff --git a/indra/newview/SignPackageMmxSse2.cmake.in b/indra/newview/SignPackageMmxSse2.cmake.in new file mode 100644 index 0000000000..9a1c22cf68 --- /dev/null +++ b/indra/newview/SignPackageMmxSse2.cmake.in @@ -0,0 +1,11 @@ +message("By default, the situation is assumed to be the strictest, an Apple Silicon Mac with the default security settings. Codesigning requires administrative access. If you believe you're not in such a situation, you can remove the sudos in this file.") +execute_process( + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_rgb_mmx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_rgb_sse2_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_yuy2_mmx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_yuy2_sse2_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_yuy2_mmx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_yuy2_sse2_plugin.dylib + WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents + ) diff --git a/indra/newview/ViewerInstall.cmake b/indra/newview/ViewerInstall.cmake index 8f2827e1bc..440c72c561 100644 --- a/indra/newview/ViewerInstall.cmake +++ b/indra/newview/ViewerInstall.cmake @@ -75,13 +75,37 @@ if (DARWIN) ${CMAKE_CURRENT_SOURCE_DIR}/FixPackage.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/FixBundle.cmake ) - else (PACKAGE) + if (CMAKE_OSX_ARCHITECTURES MATCHES x86_64) + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/SignPackageMmxSse2.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/SignBundleMmxSse2.cmake + ) + endif () + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/SignPackage.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/SignBundle.cmake + ) + else () configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/FixBundle.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/FixBundle.cmake ) - endif (PACKAGE) + if (CMAKE_OSX_ARCHITECTURES MATCHES x86_64) + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/SignBundleMmxSse2.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/SignBundleMmxSse2.cmake + ) + endif () + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/SignBundle.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/SignBundle.cmake + ) + endif () install(SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/FixBundle.cmake) + if (CMAKE_OSX_ARCHITECTURES MATCHES x86_64) + install(SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/SignBundleMmxSse2.cmake) + endif () + install(SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/SignBundle.cmake) elseif (WINDOWS) @@ -130,18 +154,29 @@ elseif (WINDOWS) set(BOOST_PLATFORM x${ADDRESS_SIZE}) endif () + # Detect the actual Boost DLL suffix from vcpkg-installed binaries. + file(GLOB _boost_context_dlls "${prefix_result}/../bin/boost_context-*.dll") + if (_boost_context_dlls) + list(GET _boost_context_dlls 0 _boost_context_dll) + get_filename_component(_boost_context_dll_name "${_boost_context_dll}" NAME_WE) + string(REPLACE "boost_context" "" BOOST_DLL_SFX "${_boost_context_dll_name}") + else () + set(BOOST_DLL_SFX -vc143-mt-${BOOST_PLATFORM}-1_91) + message(WARNING "Could not detect Boost DLL suffix via glob; using fallback '${BOOST_DLL_SFX}'.") + endif () + install( PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${VIEWER_BINARY_NAME}.exe ${prefix_result}/../bin/OpenAL32.dll ${prefix_result}/../bin/alut.dll - ${prefix_result}/../bin/boost_context-vc143-mt-${BOOST_PLATFORM}-1_91.dll - ${prefix_result}/../bin/boost_fiber-vc143-mt-${BOOST_PLATFORM}-1_91.dll - ${prefix_result}/../bin/boost_filesystem-vc143-mt-${BOOST_PLATFORM}-1_91.dll - ${prefix_result}/../bin/boost_json-vc143-mt-${BOOST_PLATFORM}-1_91.dll - ${prefix_result}/../bin/boost_program_options-vc143-mt-${BOOST_PLATFORM}-1_91.dll - ${prefix_result}/../bin/boost_thread-vc143-mt-${BOOST_PLATFORM}-1_91.dll - ${prefix_result}/../bin/boost_url-vc143-mt-${BOOST_PLATFORM}-1_91.dll + ${prefix_result}/../bin/boost_context${BOOST_DLL_SFX}.dll + ${prefix_result}/../bin/boost_fiber${BOOST_DLL_SFX}.dll + ${prefix_result}/../bin/boost_filesystem${BOOST_DLL_SFX}.dll + ${prefix_result}/../bin/boost_json${BOOST_DLL_SFX}.dll + ${prefix_result}/../bin/boost_program_options${BOOST_DLL_SFX}.dll + ${prefix_result}/../bin/boost_thread${BOOST_DLL_SFX}.dll + ${prefix_result}/../bin/boost_url${BOOST_DLL_SFX}.dll ${prefix_result}/../bin/brotlicommon.dll ${prefix_result}/../bin/brotlidec.dll ${prefix_result}/../bin/bz2.dll @@ -176,8 +211,8 @@ elseif (WINDOWS) install( PROGRAMS - ${prefix_result}/../bin/boost_context-vc143-mt-${BOOST_PLATFORM}-1_91.dll - ${prefix_result}/../bin/boost_fiber-vc143-mt-${BOOST_PLATFORM}-1_91.dll + ${prefix_result}/../bin/boost_context${BOOST_DLL_SFX}.dll + ${prefix_result}/../bin/boost_fiber${BOOST_DLL_SFX}.dll ${prefix_result}/../bin/libapr-1.dll ${prefix_result}/../bin/libaprutil-1.dll ${prefix_result}/../bin/libexpat.dll @@ -191,26 +226,39 @@ install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_BINARY_NAME} ) if (LINUX) - if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) - set(_LIB lib/${ARCH}-linux-gnu) + if (${LINUX_DISTRO} MATCHES freedesktop) + set(_LIB lib) + elseif (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) + set(_LIB lib/${ARCH}-linux-gnu/${VIEWER_BINARY_NAME}) elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR (${LINUX_DISTRO} MATCHES gentoo)) - set(_LIB lib${ADDRESS_SIZE}) + set(_LIB lib${ADDRESS_SIZE}/${VIEWER_BINARY_NAME}) else () - set(_LIB lib) + set(_LIB lib/${VIEWER_BINARY_NAME}) endif () if (USE_DISCORD) install( FILES ${ARCH_PREBUILT_DIRS_RELEASE}/libdiscord_partner_sdk.so - DESTINATION ${_LIB}/${VIEWER_BINARY_NAME} + DESTINATION ${_LIB} + ) + endif () + if (USE_OPENAL AND (${LINUX_DISTRO} MATCHES freedesktop)) + install( + FILES + ${ARCH_PREBUILT_DIRS_RELEASE}/libalut.so + ${ARCH_PREBUILT_DIRS_RELEASE}/libalut.so.0 + ${ARCH_PREBUILT_DIRS_RELEASE}/libalut.so.0.0.0 + DESTINATION ${_LIB} ) endif () if (USE_FMODSTUDIO) - install(FILES - ${ARCH_PREBUILT_DIRS_RELEASE}/libfmod.so - ${ARCH_PREBUILT_DIRS_RELEASE}/libfmod.so.13 - ${ARCH_PREBUILT_DIRS_RELEASE}/libfmod.so.13.34 - DESTINATION ${_LIB}/${VIEWER_BINARY_NAME}) - endif (USE_FMODSTUDIO) + install( + FILES + ${ARCH_PREBUILT_DIRS_RELEASE}/libfmod.so + ${ARCH_PREBUILT_DIRS_RELEASE}/libfmod.so.13 + ${ARCH_PREBUILT_DIRS_RELEASE}/libfmod.so.13.35 + DESTINATION ${_LIB} + ) + endif () endif (LINUX) install(DIRECTORY skins app_settings fonts @@ -218,9 +266,43 @@ install(DIRECTORY skins app_settings fonts PATTERN ".svn" EXCLUDE ) +if (${LINUX_DISTRO} MATCHES freedesktop) + file( + COPY ${CMAKE_CURRENT_SOURCE_DIR}/icons/hicolor + DESTINATION ${CMAKE_CURRENT_BINARY_DIR} + ) + file(RENAME + ${CMAKE_CURRENT_BINARY_DIR}/hicolor/48x48/apps/${VIEWER_BINARY_NAME}.png + ${CMAKE_CURRENT_BINARY_DIR}/hicolor/48x48/apps/net.${VIEWER_BINARY_NAME}.Viewer.png + ) + file(RENAME + ${CMAKE_CURRENT_BINARY_DIR}/hicolor/64x64/apps/${VIEWER_BINARY_NAME}.png + ${CMAKE_CURRENT_BINARY_DIR}/hicolor/64x64/apps/net.${VIEWER_BINARY_NAME}.Viewer.png + ) + file(RENAME + ${CMAKE_CURRENT_BINARY_DIR}/hicolor/96x96/apps/${VIEWER_BINARY_NAME}.png + ${CMAKE_CURRENT_BINARY_DIR}/hicolor/96x96/apps/net.${VIEWER_BINARY_NAME}.Viewer.png + ) + file(RENAME + ${CMAKE_CURRENT_BINARY_DIR}/hicolor/128x128/apps/${VIEWER_BINARY_NAME}.png + ${CMAKE_CURRENT_BINARY_DIR}/hicolor/128x128/apps/net.${VIEWER_BINARY_NAME}.Viewer.png + ) + file(RENAME + ${CMAKE_CURRENT_BINARY_DIR}/hicolor/256x256/apps/${VIEWER_BINARY_NAME}.png + ${CMAKE_CURRENT_BINARY_DIR}/hicolor/256x256/apps/net.${VIEWER_BINARY_NAME}.Viewer.png + ) + file(RENAME + ${CMAKE_CURRENT_BINARY_DIR}/hicolor/512x512/apps/${VIEWER_BINARY_NAME}.png + ${CMAKE_CURRENT_BINARY_DIR}/hicolor/512x512/apps/net.${VIEWER_BINARY_NAME}.Viewer.png + ) + install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/hicolor + DESTINATION share/icons + ) +else () install(DIRECTORY icons/hicolor DESTINATION share/icons ) +endif () find_file(IS_ARTWORK_PRESENT NAMES have_artwork_bundle.marker PATHS ${VIEWER_DIR}/newview/res) @@ -257,8 +339,31 @@ install(FILES ${SCRIPTS_DIR}/messages/message_template.msg DESTINATION share/${VIEWER_BINARY_NAME}/app_settings ) +if (${LINUX_DISTRO} MATCHES freedesktop) + file(COPY_FILE + ${CMAKE_CURRENT_SOURCE_DIR}/linux_tools/${VIEWER_BINARY_NAME}.desktop + ${CMAKE_CURRENT_BINARY_DIR}/net.${VIEWER_BINARY_NAME}.Viewer.desktop + ) + execute_process( + COMMAND sed -i "s/Icon=megapahit/Icon=net.megapahit.Viewer/" net.${VIEWER_BINARY_NAME}.Viewer.desktop + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/net.${VIEWER_BINARY_NAME}.Viewer.desktop + DESTINATION share/applications + ) + string(TIMESTAMP TODAY_DATE "%Y-%m-%d" UTC) + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/net.megapahit.Viewer.metainfo.xml.in + ${CMAKE_CURRENT_BINARY_DIR}/net.megapahit.Viewer.metainfo.xml + ) + install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/net.megapahit.Viewer.metainfo.xml + DESTINATION share/metainfo + ) +else () install(FILES linux_tools/${VIEWER_BINARY_NAME}.desktop DESTINATION share/applications ) +endif () endif (DARWIN) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 481cafafd1..8b6c5e2e1a 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -1365,6 +1365,63 @@ <integer>1</integer> </map> <!-- End NaCl/Firestorm port --> + <!-- OTS over-the-shoulder aim settings --> + <key>OTSEnabled</key> + <map> + <key>Comment</key> + <string>When true, M key enters OTS shoulder cam instead of first-person mouselook</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> + <key>OTSCameraDistance</key> + <map> + <key>Comment</key> + <string>OTS camera distance behind avatar (meters)</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>3.0</real> + </map> + <key>OTSCameraSide</key> + <map> + <key>Comment</key> + <string>OTS camera side offset (negative = right of avatar)</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>-0.5</real> + </map> + <key>OTSCameraHeight</key> + <map> + <key>Comment</key> + <string>OTS camera height above avatar root (meters)</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>0.5</real> + </map> + <key>OTSFocusDistance</key> + <map> + <key>Comment</key> + <string>OTS focus point distance in front of avatar (meters)</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>10.0</real> + </map> + <!-- End OTS settings --> <key>CameraOffset</key> <map> <key>Comment</key> @@ -1402,8 +1459,8 @@ <key>Value</key> <array> <real>-3.0</real> - <real>0.5</real> - <real>0.2</real> + <real>0.0</real> + <real>0.75</real> </array> </map> <key>CameraOffsetScale</key> @@ -3272,9 +3329,9 @@ <string>Vector3D</string> <key>Value</key> <array> - <real>0.9</real> - <real>0.5</real> - <real>0.2</real> + <real>1.0</real> + <real>0.0</real> + <real>1.0</real> </array> </map> <key>AvatarSitRotation</key> @@ -4684,6 +4741,28 @@ <key>Value</key> <integer>0</integer> </map> + <key>KeepCameraOnLocalTeleport</key> + <map> + <key>Comment</key> + <string>Do not reset the camera position or mode when teleporting within the same region.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> + <key>DisableTeleportScreens</key> + <map> + <key>Comment</key> + <string>Do not show the fullscreen teleport progress/black screen during teleports.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>MiniMapAutoCenter</key> <map> <key>Comment</key> diff --git a/indra/newview/linux_tools/megapahit.desktop b/indra/newview/linux_tools/megapahit.desktop index 091df71e11..69c9fcda49 100755 --- a/indra/newview/linux_tools/megapahit.desktop +++ b/indra/newview/linux_tools/megapahit.desktop @@ -7,4 +7,3 @@ Terminal=false Type=Application Categories=Network; StartupNotify=true -X-Desktop-File-Install-Version=3.0" diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 23647487b0..75a9ef58fc 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -2123,6 +2123,13 @@ std::ostream& operator<<(std::ostream &s, const LLAgent &agent) //----------------------------------------------------------------------------- bool LLAgent::needsRenderAvatar() { + // OTS mode: always render avatar — we are in third-person even though + // mouselook input is active. + if (gAgentCamera.cameraOTS()) + { + return mShowAvatar && mOutfitChosen; + } + if (gAgentCamera.cameraMouselook() && !LLVOAvatar::sVisibleInFirstPerson) { return false; @@ -2134,6 +2141,11 @@ bool LLAgent::needsRenderAvatar() // true if we need to render your own avatar's head. bool LLAgent::needsRenderHead() { + // OTS mode: always render head — avatar is fully visible. + if (gAgentCamera.cameraOTS()) + { + return mShowAvatar; + } return (LLVOAvatar::sVisibleInFirstPerson && LLPipeline::sReflectionRender) || (mShowAvatar && !gAgentCamera.cameraMouselook()); } @@ -2247,7 +2259,8 @@ void LLAgent::endAnimationUpdateUI() } // clean up UI from mode we're leaving - if (gAgentCamera.getLastCameraMode() == CAMERA_MODE_MOUSELOOK ) + if (gAgentCamera.getLastCameraMode() == CAMERA_MODE_MOUSELOOK + || gAgentCamera.getLastCameraMode() == CAMERA_MODE_OTS) { gToolBarView->setToolBarsVisible(true); // show mouse cursor @@ -2369,7 +2382,8 @@ void LLAgent::endAnimationUpdateUI() //--------------------------------------------------------------------- // Set up UI for mode we're entering //--------------------------------------------------------------------- - if (gAgentCamera.getCameraMode() == CAMERA_MODE_MOUSELOOK) + if (gAgentCamera.getCameraMode() == CAMERA_MODE_MOUSELOOK + || gAgentCamera.getCameraMode() == CAMERA_MODE_OTS) { // clean up UI // first show anything hidden by UI toggle diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp index 369a6d3697..6f9f8bfa2a 100644 --- a/indra/newview/llagentcamera.cpp +++ b/indra/newview/llagentcamera.cpp @@ -1176,7 +1176,7 @@ void LLAgentCamera::updateLookAt(const S32 mouse_x, const S32 mouse_y) LLVector3 headLookAxis; LLCoordFrame frameCamera = *((LLCoordFrame*)LLViewerCamera::getInstance()); - if (cameraMouselook()) + if (cameraMouselook() || cameraOTS()) { lookAtType = LOOKAT_TARGET_MOUSELOOK; } @@ -1409,7 +1409,7 @@ void LLAgentCamera::updateCamera() gAgent.setShowAvatar(true); } - if (isAgentAvatarValid() && (mCameraMode != CAMERA_MODE_MOUSELOOK)) + if (isAgentAvatarValid() && mCameraMode != CAMERA_MODE_MOUSELOOK) { gAgentAvatarp->updateAttachmentVisibility(mCameraMode); } @@ -1497,7 +1497,8 @@ void LLAgentCamera::updateCamera() } gAgent.setLastPositionGlobal(global_pos); - if (LLVOAvatar::sVisibleInFirstPerson && isAgentAvatarValid() && !gAgentAvatarp->isSitting() && cameraMouselook()) + // Exclude OTS — shoulder camera position must not be overridden by head-tracking. + if (LLVOAvatar::sVisibleInFirstPerson && isAgentAvatarValid() && !gAgentAvatarp->isSitting() && cameraMouselook() && !cameraOTS()) { LLVector3 head_pos = gAgentAvatarp->mHeadp->getWorldPosition() + LLVector3(0.08f, 0.f, 0.05f) * gAgentAvatarp->mHeadp->getWorldRotation() + @@ -1598,6 +1599,19 @@ LLVector3d LLAgentCamera::calcFocusPositionTargetGlobal() mFocusTargetGlobal = gAgent.getPosGlobalFromAgent(mFollowCam.getSimulatedFocus()); return mFocusTargetGlobal; } + else if (mCameraMode == CAMERA_MODE_OTS) + { + // Focus in front of avatar at aim height + static LLCachedControl<F32> ots_focus_dist(gSavedSettings, "OTSFocusDistance", 10.0f); + static LLCachedControl<F32> ots_height(gSavedSettings, "OTSCameraHeight", 0.5f); + static LLCachedControl<F32> ots_side(gSavedSettings, "OTSCameraSide", -0.5f); + LLVector3 focus_local((F32)ots_focus_dist, (F32)ots_side * 0.3f, (F32)ots_height * 0.5f); + LLQuaternion agent_rot = gAgent.getFrameAgent().getQuaternion(); + LLVector3 focus_world = focus_local * agent_rot; + LLVector3d avatar_pos = gAgent.getPosGlobalFromAgent(getAvatarRootPosition()); + mFocusTargetGlobal = avatar_pos + LLVector3d(focus_world); + return mFocusTargetGlobal; + } else if (mCameraMode == CAMERA_MODE_MOUSELOOK) { LLVector3d at_axis(1.0, 0.0, 0.0); @@ -1776,6 +1790,18 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(bool *hit_limit) { camera_position_global = gAgent.getPosGlobalFromAgent(mFollowCam.getSimulatedPosition()); } + else if (mCameraMode == CAMERA_MODE_OTS) + { + // Shoulder offset camera — avatar-local space: X=forward, Y=left, Z=up + static LLCachedControl<F32> ots_dist(gSavedSettings, "OTSCameraDistance", 3.0f); + static LLCachedControl<F32> ots_side(gSavedSettings, "OTSCameraSide", -0.5f); + static LLCachedControl<F32> ots_height(gSavedSettings, "OTSCameraHeight", 0.5f); + LLVector3 local_offset(-(F32)ots_dist, (F32)ots_side, (F32)ots_height); + LLQuaternion agent_rot = gAgent.getFrameAgent().getQuaternion(); + LLVector3 world_offset = local_offset * agent_rot; + LLVector3d avatar_pos = gAgent.getPosGlobalFromAgent(getAvatarRootPosition()); + camera_position_global = avatar_pos + LLVector3d(world_offset); + } else if (mCameraMode == CAMERA_MODE_MOUSELOOK) { if (!isAgentAvatarValid() || gAgentAvatarp->mDrawable.isNull()) @@ -2244,6 +2270,58 @@ void LLAgentCamera::changeCameraToDefault() //----------------------------------------------------------------------------- +// changeCameraToOTS() +// Over-the-shoulder aim mode. +// Calls changeCameraToMouselook() to inherit ALL of its input setup +// (cursor hiding, mouse capture, control flags, focus management), +// then immediately overrides mCameraMode to CAMERA_MODE_OTS so that +// calcCameraPositionTargetGlobal places the camera at the shoulder offset +// instead of the avatar's eye position. +// Avatar rendering is handled explicitly in needsRenderAvatar() and needsRenderHead(). +//----------------------------------------------------------------------------- +void LLAgentCamera::changeCameraToOTS() +{ + if (mCameraMode != CAMERA_MODE_OTS) + { + // Inherit everything from mouselook: cursor lock, mouse capture, + // AGENT_CONTROL_MOUSELOOK flag, keyboard focus clear, etc. + changeCameraToMouselook(false); + + // Override mCameraMode to OTS so position/focus calculations + // use the shoulder offset instead of the eye position. + mCameraMode = CAMERA_MODE_OTS; + + // changeCameraToMouselook hid attachments via updateAttachmentVisibility + // with CAMERA_MODE_MOUSELOOK. Restore full visibility for OTS mode. + if (isAgentAvatarValid()) + { + gAgentAvatarp->updateAttachmentVisibility(CAMERA_MODE_THIRD_PERSON); + } + + // Start the camera animation LAST, after mCameraMode is OTS and after + // changeCameraToMouselook(false) has cleared mCameraAnimating via its + // animate=false branch. The rendered camera is still at the old + // (third-person) position this frame, so startCameraAnimation snapshots + // that as the start point and updateCamera lerps to the OTS shoulder + // target over ZoomTime seconds — matching the mouselook transition feel. + startCameraAnimation(); + } +} + +//----------------------------------------------------------------------------- +// changeCameraFromOTS() +//----------------------------------------------------------------------------- +void LLAgentCamera::changeCameraFromOTS() +{ + if (mCameraMode == CAMERA_MODE_OTS) + { + // changeCameraToDefault handles clearing AGENT_CONTROL_MOUSELOOK, + // showing the cursor, and restoring the normal camera mode. + changeCameraToDefault(); + } +} + +//----------------------------------------------------------------------------- // changeCameraToFollow() //----------------------------------------------------------------------------- void LLAgentCamera::changeCameraToFollow(bool animate) @@ -2336,7 +2414,7 @@ void LLAgentCamera::changeCameraToThirdPerson(bool animate) } mCameraLag.clearVec(); - if (mCameraMode == CAMERA_MODE_MOUSELOOK) + if (mCameraMode == CAMERA_MODE_MOUSELOOK || mCameraMode == CAMERA_MODE_OTS) { mCurrentCameraDistance = MIN_CAMERA_DISTANCE; mTargetCameraDistance = MIN_CAMERA_DISTANCE; diff --git a/indra/newview/llagentcamera.h b/indra/newview/llagentcamera.h index d277fd6158..ac1a36a6c2 100644 --- a/indra/newview/llagentcamera.h +++ b/indra/newview/llagentcamera.h @@ -43,7 +43,8 @@ enum ECameraMode CAMERA_MODE_THIRD_PERSON, CAMERA_MODE_MOUSELOOK, CAMERA_MODE_CUSTOMIZE_AVATAR, - CAMERA_MODE_FOLLOW + CAMERA_MODE_FOLLOW, + CAMERA_MODE_OTS // Over-the-shoulder: mouselook input + third-person camera }; /** Camera Presets for CAMERA_MODE_THIRD_PERSON */ @@ -93,10 +94,14 @@ public: void changeCameraToThirdPerson(bool animate = true); void changeCameraToCustomizeAvatar(); // Trigger transition animation void changeCameraToFollow(bool animate = true); // Ventrella + void changeCameraToOTS(); // Over-the-shoulder aim mode + void changeCameraFromOTS(); // Exit OTS back to third person bool cameraThirdPerson() const { return (mCameraMode == CAMERA_MODE_THIRD_PERSON && mLastCameraMode == CAMERA_MODE_THIRD_PERSON); } - bool cameraMouselook() const { return (mCameraMode == CAMERA_MODE_MOUSELOOK && mLastCameraMode == CAMERA_MODE_MOUSELOOK); } + // Also true for OTS — reuses mouselook input and UI behaviour; camera position handled separately. + bool cameraMouselook() const { return (mCameraMode == CAMERA_MODE_MOUSELOOK && mLastCameraMode == CAMERA_MODE_MOUSELOOK) || mCameraMode == CAMERA_MODE_OTS; } bool cameraCustomizeAvatar() const { return (mCameraMode == CAMERA_MODE_CUSTOMIZE_AVATAR /*&& !mCameraAnimating*/); } bool cameraFollow() const { return (mCameraMode == CAMERA_MODE_FOLLOW && mLastCameraMode == CAMERA_MODE_FOLLOW); } + bool cameraOTS() const { return mCameraMode == CAMERA_MODE_OTS; } ECameraMode getCameraMode() const { return mCameraMode; } ECameraMode getLastCameraMode() const { return mLastCameraMode; } void updateCamera(); // Call once per frame to update camera location/orientation diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index c74c0db08c..4c0de50223 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -136,10 +136,12 @@ #include "stringize.h" #include "llcoros.h" #include "llexception.h" -#if !_M_ARM64 // !LL_LINUX +#if defined(LL_CEF) #include "cef/dullahan_version.h" +#endif +#if defined(LL_VLC) #include "vlc/libvlc_version.h" -#endif // LL_LINUX +#endif #if LL_DARWIN #if LL_SDL @@ -3404,7 +3406,7 @@ LLSD LLAppViewer::getViewerInfo() const url = LLTrans::getString("RELEASE_NOTES_BASE_URL"); if (!LLStringUtil::endsWith(url, "/")) url += "/"; - url += LLURI::escape(versionInfo.getVersion()) + ".html"; + url += "#" + LLURI::escape(versionInfo.getVersion()); // + ".html"; } info["VIEWER_RELEASE_NOTES_URL"] = url; @@ -3517,7 +3519,7 @@ LLSD LLAppViewer::getViewerInfo() const info["VOICE_VERSION"] = LLTrans::getString("NotConnected"); } -#if !_M_ARM64 // !LL_LINUX +#if defined(LL_CEF) std::ostringstream cef_ver_codec; cef_ver_codec << "Dullahan: "; cef_ver_codec << DULLAHAN_VERSION_MAJOR; @@ -3547,7 +3549,7 @@ LLSD LLAppViewer::getViewerInfo() const info["LIBCEF_VERSION"] = "Undefined"; #endif -#if !_M_ARM64 // !LL_LINUX +#if defined(LL_VLC) std::ostringstream vlc_ver_codec; vlc_ver_codec << LIBVLC_VERSION_MAJOR; vlc_ver_codec << "."; diff --git a/indra/newview/llappviewerlinux.cpp b/indra/newview/llappviewerlinux.cpp index 5bbaed750c..728a8ef81e 100644 --- a/indra/newview/llappviewerlinux.cpp +++ b/indra/newview/llappviewerlinux.cpp @@ -131,16 +131,12 @@ int main( int argc, char **argv ) // install unexpected exception handler gOldTerminateHandler = std::set_terminate(exceptionTerminateHandler); -#ifdef __aarch64__ - setenv("LD_PRELOAD", APP_PLUGIN_DIR"/libcef.so", 1); -#else # if LL_LINUX setenv("LD_PRELOAD", "libpthread.so.0 libGL.so.1", 1); # else setenv("LD_PRELOAD", "libpthread.so libGL.so.1", 1); # endif setenv("__GL_THREADED_OPTIMIZATIONS", "1", 0); -#endif bool ok = viewer_app_ptr->init(); if(!ok) diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index fb1426a235..c6b17fcb4e 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -34,6 +34,7 @@ #include "llnotifications.h" #include "llnotificationsutil.h" #include "roles_constants.h" // for GP_MEMBER_INVITE +#include "llregionflags.h" // for ESTATE_ACCESS_BANNED_AGENT_ADD #include "llagent.h" #include "llappviewer.h" // for gLastVersionChannel @@ -625,6 +626,34 @@ void LLAvatarActions::ejectAvatar(const LLUUID& id, bool ban_enabled) } // static +void LLAvatarActions::estateKickAvatar(const LLUUID& id) +{ + LLAvatarName av_name; + LLSD payload; + payload["avatar_id"] = id; + LLSD args; + if (LLAvatarNameCache::get(id, &av_name)) + { + args["EVIL_USER"] = av_name.getCompleteName(); + } + LLNotificationsUtil::add("EstateKickUser", args, payload, handleEstateKickAvatar); +} + +// static +void LLAvatarActions::estateBanAvatar(const LLUUID& id) +{ + LLAvatarName av_name; + LLSD payload; + payload["avatar_id"] = id; + LLSD args; + if (LLAvatarNameCache::get(id, &av_name)) + { + args["AVATAR_NAME"] = av_name.getCompleteName(); + } + LLNotificationsUtil::add("EstateBanUser", args, payload, handleEstateBanAvatar); +} + +// static void LLAvatarActions::freeze(const LLUUID& id) { LLSD payload; @@ -1425,6 +1454,62 @@ bool LLAvatarActions::handleEjectAvatar(const LLSD& notification, const LLSD& re return false; } +bool LLAvatarActions::handleEstateKickAvatar(const LLSD& notification, const LLSD& response) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if (option == 0) + { + LLUUID avatar_id = notification["payload"]["avatar_id"].asUUID(); + LLMessageSystem* msg = gMessageSystem; + msg->newMessage("EstateOwnerMessage"); + msg->nextBlockFast(_PREHASH_AgentData); + msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); + msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); + msg->addUUIDFast(_PREHASH_TransactionID, LLUUID::null); + msg->nextBlock("MethodData"); + msg->addString("Method", "kickestate"); + msg->addUUID("Invoice", LLUUID::generateNewID()); + msg->nextBlock("ParamList"); + msg->addString("Parameter", avatar_id.asString()); + gAgent.sendReliableMessage(); + } + return false; +} + +bool LLAvatarActions::handleEstateBanAvatar(const LLSD& notification, const LLSD& response) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if (option == 0) + { + LLUUID avatar_id = notification["payload"]["avatar_id"].asUUID(); + LLMessageSystem* msg = gMessageSystem; + msg->newMessage("EstateOwnerMessage"); + msg->nextBlockFast(_PREHASH_AgentData); + msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); + msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); + msg->addUUIDFast(_PREHASH_TransactionID, LLUUID::null); + msg->nextBlock("MethodData"); + msg->addString("Method", "estateaccessdelta"); + msg->addUUID("Invoice", LLUUID::generateNewID()); + + std::string buf; + gAgent.getID().toString(buf); + msg->nextBlock("ParamList"); + msg->addString("Parameter", buf); + + buf = llformat("%u", (U32)ESTATE_ACCESS_BANNED_AGENT_ADD); + msg->nextBlock("ParamList"); + msg->addString("Parameter", buf); + + avatar_id.toString(buf); + msg->nextBlock("ParamList"); + msg->addString("Parameter", buf); + + gAgent.sendReliableMessage(); + } + return false; +} + bool LLAvatarActions::handleFreeze(const LLSD& notification, const LLSD& response) { S32 option = LLNotification::getSelectedOption(notification, response); diff --git a/indra/newview/llavataractions.h b/indra/newview/llavataractions.h index 1f5a42ed22..bc4eb6fa60 100644 --- a/indra/newview/llavataractions.h +++ b/indra/newview/llavataractions.h @@ -192,6 +192,10 @@ public: static void freezeAvatar(const LLUUID& id); static void ejectAvatar(const LLUUID& id, bool ban_enabled = false); + + static void estateKickAvatar(const LLUUID& id); + + static void estateBanAvatar(const LLUUID& id); /** * Kick avatar off grid */ @@ -263,6 +267,8 @@ private: static bool handlePay(const LLSD& notification, const LLSD& response, LLUUID avatar_id); static bool handleFreezeAvatar(const LLSD& notification, const LLSD& response); static bool handleEjectAvatar(const LLSD& notification, const LLSD& response); + static bool handleEstateKickAvatar(const LLSD& notification, const LLSD& response); + static bool handleEstateBanAvatar(const LLSD& notification, const LLSD& response); static bool handleKick(const LLSD& notification, const LLSD& response); static bool handleFreeze(const LLSD& notification, const LLSD& response); static bool handleUnfreeze(const LLSD& notification, const LLSD& response); diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp index 0358233637..21cf2a1837 100644 --- a/indra/newview/lllogininstance.cpp +++ b/indra/newview/lllogininstance.cpp @@ -387,7 +387,7 @@ void LLLoginInstance::handleLoginFailure(const LLSD& event) relnotes = LLTrans::getString("RELEASE_NOTES_BASE_URL"); if (!LLStringUtil::endsWith(relnotes, "/")) relnotes += "/"; - relnotes += LLURI::escape(login_version) + ".html"; + relnotes += "#" + LLURI::escape(login_version); // + ".html"; } if (gViewerWindow) diff --git a/indra/newview/llpanelpeoplemenus.cpp b/indra/newview/llpanelpeoplemenus.cpp index 794ae4ad44..537ea28a4d 100644 --- a/indra/newview/llpanelpeoplemenus.cpp +++ b/indra/newview/llpanelpeoplemenus.cpp @@ -84,11 +84,14 @@ LLContextMenu* PeopleContextMenu::createMenu() registrar.add("Avatar.Calllog", boost::bind(&LLAvatarActions::viewChatHistory, id)); registrar.add("Avatar.Freeze", boost::bind(&LLAvatarActions::freezeAvatar, id)); registrar.add("Avatar.Eject", boost::bind(&PeopleContextMenu::eject, this)); + registrar.add("Avatar.EstateKick", boost::bind(&LLAvatarActions::estateKickAvatar, id)); + registrar.add("Avatar.EstateBan", boost::bind(&LLAvatarActions::estateBanAvatar, id)); enable_registrar.add("Avatar.EnableItem", boost::bind(&PeopleContextMenu::enableContextMenuItem, this, _2)); enable_registrar.add("Avatar.CheckItem", boost::bind(&PeopleContextMenu::checkContextMenuItem, this, _2)); enable_registrar.add("Avatar.EnableFreezeEject", boost::bind(&PeopleContextMenu::enableFreezeEject, this, _2)); + enable_registrar.add("Avatar.EnableEstateEjectBan", boost::bind(&PeopleContextMenu::enableEstateEjectBan, this, _2)); // create the context menu from the XUI menu = createFromFile("menu_people_nearby.xml"); @@ -318,6 +321,17 @@ bool PeopleContextMenu::enableFreezeEject(const LLSD& userdata) return new_value; } +bool PeopleContextMenu::enableEstateEjectBan(const LLSD& userdata) +{ + if (gAgent.getID() == mUUIDs.front() || mUUIDs.size() != 1) + return false; + + LLViewerRegion* region = gAgent.getRegion(); + if (!region) return false; + if (gAgent.isGodlike()) return true; + return region->getOwner() == gAgent.getID() || region->isEstateManager(); +} + void PeopleContextMenu::requestTeleport() { // boost::bind cannot recognize overloaded method LLAvatarActions::teleportRequest(), @@ -419,6 +433,8 @@ void NearbyPeopleContextMenu::buildContextMenu(class LLMenuGL& menu, U32 flags) items.push_back(std::string("block_unblock")); items.push_back(std::string("freeze")); items.push_back(std::string("eject")); + items.push_back(std::string("estate_eject")); + items.push_back(std::string("estate_ban")); } hide_context_entries(menu, items, disabled_items); diff --git a/indra/newview/llpanelpeoplemenus.h b/indra/newview/llpanelpeoplemenus.h index ad38cebc31..ad6a26c645 100644 --- a/indra/newview/llpanelpeoplemenus.h +++ b/indra/newview/llpanelpeoplemenus.h @@ -47,6 +47,7 @@ private: bool enableContextMenuItem(const LLSD& userdata); bool checkContextMenuItem(const LLSD& userdata); bool enableFreezeEject(const LLSD& userdata); + bool enableEstateEjectBan(const LLSD& userdata); void offerTeleport(); void eject(); void startConference(); diff --git a/indra/newview/llquickprefs.cpp b/indra/newview/llquickprefs.cpp index 800aa7abac..9e83857a15 100644 --- a/indra/newview/llquickprefs.cpp +++ b/indra/newview/llquickprefs.cpp @@ -26,6 +26,8 @@ #include "llquickprefs.h" #include "llagent.h" +#include "llagentcamera.h" +#include "llcheckboxctrl.h" #include "llsliderctrl.h" #include "lltextbox.h" #include "llviewercontrol.h" @@ -97,6 +99,14 @@ bool LLFloaterQuickPrefs::postBuild() } onRegionChanged(); // evaluate current region immediately + // OTS aim mode checkbox + mOTSEnabledCheck = getChild<LLCheckBoxCtrl>("ots_enabled"); + if (mOTSEnabledCheck) + { + mOTSEnabledCheck->setCommitCallback( + boost::bind(&LLFloaterQuickPrefs::onOTSEnabledChanged, this)); + } + return true; } @@ -203,3 +213,16 @@ void LLFloaterQuickPrefs::syncAvatarZOffsetFromPreferenceSetting() F32 value = gSavedPerAccountSettings.getF32("AvatarHoverOffsetZ"); mAvatarZOffsetSlider->setValue(value, false); // false = no commit signal } + +void LLFloaterQuickPrefs::onOTSEnabledChanged() +{ + if (mOTSEnabledCheck) + { + gSavedSettings.setBOOL("OTSEnabled", mOTSEnabledCheck->get()); + // If currently in OTS mode and checkbox was unchecked, exit OTS + if (!mOTSEnabledCheck->get() && gAgentCamera.cameraOTS()) + { + gAgentCamera.changeCameraFromOTS(); + } + } +} diff --git a/indra/newview/llquickprefs.h b/indra/newview/llquickprefs.h index 0ef56a4299..b90333831c 100644 --- a/indra/newview/llquickprefs.h +++ b/indra/newview/llquickprefs.h @@ -27,6 +27,7 @@ #include "llfloater.h" class LLSliderCtrl; +class LLCheckBoxCtrl; class LLTextBox; /** @@ -76,6 +77,10 @@ private: void syncAvatarZOffsetFromPreferenceSetting(); boost::signals2::connection mRegionChangedSlot; + + // OTS over-the-shoulder aim + LLCheckBoxCtrl* mOTSEnabledCheck { nullptr }; + void onOTSEnabledChanged(); }; #endif // LL_LLQUICKPREFS_H diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index 7d97151e9d..59dc4319e1 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -280,6 +280,12 @@ static void update_tp_display(bool minimized) F32 teleport_save_time = TELEPORT_EXPIRY + TELEPORT_EXPIRY_PER_ATTACHMENT * attach_count; F32 teleport_elapsed = gTeleportDisplayTimer.getElapsedTimeF32(); F32 teleport_percent = teleport_elapsed * (100.f / teleport_save_time); + + // Reuse the minimized-window path to suppress the teleport progress screen. + if (gSavedSettings.getBOOL("DisableTeleportScreens")) + { + minimized = true; + } if (gAgent.getTeleportState() != LLAgent::TELEPORT_START && teleport_percent > 100.f) { // Give up. Don't keep the UI locked forever. diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 6448dd6ba5..b491701a36 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -1826,7 +1826,7 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_ if (plugin_basename == "media_plugin_cef") { launcher_name = "/compat/linux/usr/libexec/megapahit/SLPlugin"; - plugin_name = "/compat/linux/usr/lib/x86_64-linux-gnu/libmedia_plugin_cef.so"; + plugin_name = "/compat/linux/usr/lib/x86_64-linux-gnu/megapahit/libmedia_plugin_cef.so"; } #endif @@ -1873,7 +1873,7 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_ bool media_plugin_debugging_enabled = gSavedSettings.getBOOL("MediaPluginDebugging"); media_source->enableMediaPluginDebugging( media_plugin_debugging_enabled || clean_browser); -#if LL_LINUX +#if LL_LINUX || __FreeBSD__ bool media_plugin_pipewire_volume_catcher = gSavedSettings.getBOOL("MediaPluginPipeWireVolumeCatcher"); media_source->enablePipeWireVolumeCatcher( media_plugin_pipewire_volume_catcher ); #endif @@ -1891,8 +1891,8 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_ std::string plugin_dir = gDirUtilp->getLLPluginDir(); if (plugin_basename == "media_plugin_cef") { - plugin_dir = "/compat/linux/usr/lib/x86_64-linux-gnu"; - plugin_name = "/usr/lib/x86_64-linux-gnu/libmedia_plugin_cef.so"; + plugin_dir = "/compat/linux/usr/lib/x86_64-linux-gnu/megapahit"; + plugin_name = "/usr/lib/x86_64-linux-gnu/megapahit/libmedia_plugin_cef.so"; } #else const std::string plugin_dir = gDirUtilp->getLLPluginDir(); diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 4632800e2d..1b1d703f38 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -4065,6 +4065,44 @@ void handle_avatar_eject(const LLSD& avatar_id) } } +void handle_avatar_estate_kick(const LLSD& avatar_id) +{ + LLUUID id = avatar_id.asUUID(); + if (id.isNull()) + { + LLVOAvatar* avatar = find_avatar_from_object( + LLSelectMgr::getInstance()->getSelection()->getPrimaryObject()); + if (avatar) id = avatar->getID(); + } + if (id.notNull()) + { + LLAvatarActions::estateKickAvatar(id); + } +} + +void handle_avatar_estate_ban(const LLSD& avatar_id) +{ + LLUUID id = avatar_id.asUUID(); + if (id.isNull()) + { + LLVOAvatar* avatar = find_avatar_from_object( + LLSelectMgr::getInstance()->getSelection()->getPrimaryObject()); + if (avatar) id = avatar->getID(); + } + if (id.notNull()) + { + LLAvatarActions::estateBanAvatar(id); + } +} + +bool enable_estate_eject_ban(const LLSD& avatar_id) +{ + LLViewerRegion* region = gAgent.getRegion(); + if (!region) return false; + if (gAgent.isGodlike()) return true; + return region->getOwner() == gAgent.getID() || region->isEstateManager(); +} + bool my_profile_visible() { LLFloater* floaterp = LLAvatarActions::getProfileFloater(gAgentID); @@ -4778,25 +4816,37 @@ class LLViewMouselook : public view_listener_t { bool handleEvent(const LLSD& userdata) { + // When OTS is enabled M toggles OTS mode (shoulder cam). + // When disabled M toggles normal first-person mouselook. + if (gSavedSettings.getBOOL("OTSEnabled")) + { + if (!gAgentCamera.cameraOTS()) + { + gAgentCamera.changeCameraToOTS(); + } + else + { + gAgentCamera.changeCameraFromOTS(); + } + return true; + } + if (!gAgentCamera.cameraMouselook()) { gAgentCamera.changeCameraToMouselook(); } else { - // NaCl: Right-click + scroll wheel zoom in mouselook (ported from Firestorm). - // If we were zoomed when the user toggles out of mouselook, restore the - // normal (pre-zoom) FOV before switching back to the default camera. + // NaCl: restore FOV on mouselook exit LLVector3 mlFovValues = gSavedSettings.getVector3("_NACL_MLFovValues"); F32 cameraAngle = gSavedSettings.getF32("CameraAngle"); if (mlFovValues.mV[VZ] > 0.0f) { - mlFovValues.mV[VY] = cameraAngle; // preserve last zoomed FOV + mlFovValues.mV[VY] = cameraAngle; mlFovValues.mV[VZ] = 0.0f; gSavedSettings.setVector3("_NACL_MLFovValues", mlFovValues); - gSavedSettings.setF32("CameraAngle", mlFovValues.mV[VX]); // restore normal FOV + gSavedSettings.setF32("CameraAngle", mlFovValues.mV[VX]); } - // NaCl End gAgentCamera.changeCameraToDefault(); } return true; @@ -10346,6 +10396,9 @@ void initialize_menus() view_listener_t::addMenu(new LLAvatarVisibleDebug(), "Avatar.VisibleDebug"); view_listener_t::addMenu(new LLAvatarInviteToGroup(), "Avatar.InviteToGroup"); commit.add("Avatar.Eject", boost::bind(&handle_avatar_eject, LLSD())); + commit.add("Avatar.EstateKick", boost::bind(&handle_avatar_estate_kick, _2)); + commit.add("Avatar.EstateBan", boost::bind(&handle_avatar_estate_ban, _2)); + enable.add("Avatar.EnableEstateEjectBan", boost::bind(&enable_estate_eject_ban, _2)); commit.add("Avatar.ShowInspector", boost::bind(&handle_avatar_show_inspector)); view_listener_t::addMenu(new LLAvatarSendIM(), "Avatar.SendIM"); view_listener_t::addMenu(new LLAvatarCall(), "Avatar.Call"); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index b8515fd92b..1c6544f3f9 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -6120,11 +6120,18 @@ void process_teleport_local(LLMessageSystem *msg,void**) } gAgent.setPositionAgent(pos); - gAgentCamera.slamLookAt(look_at); + + bool keep_camera_local_tp = gSavedSettings.getBOOL("KeepCameraOnLocalTeleport"); + + if (!keep_camera_local_tp) + { + gAgentCamera.slamLookAt(look_at); + } if ( !(gAgent.getTeleportKeepsLookAt() && LLViewerJoystick::getInstance()->getOverrideCamera()) ) { - gAgentCamera.resetView(true, true); + // resetView still runs (cleanup); the false args just leave the camera alone. + gAgentCamera.resetView(!keep_camera_local_tp, !keep_camera_local_tp); } // send camera update to new region diff --git a/indra/newview/net.megapahit.Viewer.metainfo.xml.in b/indra/newview/net.megapahit.Viewer.metainfo.xml.in new file mode 100644 index 0000000000..deeaa9c140 --- /dev/null +++ b/indra/newview/net.megapahit.Viewer.metainfo.xml.in @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<component type="desktop-application"> + <id>net.megapahit.Viewer</id> + <launchable type="desktop-id">net.megapahit.Viewer.desktop</launchable> + <metadata_license>CC0-1.0</metadata_license> + <project_license>LGPL-2.1</project_license> + <name>Megapahit</name> + <developer id="net.megapahit"> + <name>Megapahit</name> + </developer> + <summary>A fork of the Second Life viewer</summary> + <description> + <p>An entrance to virtual empires in only megabytes. A shelter for the metaverse refugees, especially those from less supported operating systems.</p> + </description> + <url type="homepage">https://megapahit.net/</url> + <url type="vcs-browser">https://megapahit.org</url> + <url type="bugtracker">https://megapahit.com</url> + <releases> + <release version="${VIEWER_VERSION_MAJOR}.${VIEWER_VERSION_MINOR}.${VIEWER_VERSION_PATCH}.${VIEWER_VERSION_REVISION}" date="${TODAY_DATE}" /> + </releases> +</component> diff --git a/indra/newview/rlvhandler.cpp b/indra/newview/rlvhandler.cpp index 2cc06b3bbc..d66e304b7e 100644 --- a/indra/newview/rlvhandler.cpp +++ b/indra/newview/rlvhandler.cpp @@ -393,6 +393,10 @@ ECmdRet ForceHandler<EBehaviour::Detach>::onCommand(const RlvCommand& rlvCmd) folderID = findDescendentCategoryIDByName(folderID, option); LLAppearanceMgr::instance().takeOffOutfit(folderID); } + else + { + LLAppearanceMgr::instance().removeItemFromAvatar(gObjectList.findObject(LLUUID(option))->getAttachmentItemID()); + } } return ECmdRet::Succeeded; } diff --git a/indra/newview/skins/default/xui/en/floater_quick_prefs.xml b/indra/newview/skins/default/xui/en/floater_quick_prefs.xml index 8b20fda6f5..f5bdcf2156 100644 --- a/indra/newview/skins/default/xui/en/floater_quick_prefs.xml +++ b/indra/newview/skins/default/xui/en/floater_quick_prefs.xml @@ -9,7 +9,7 @@ can_minimize="true" can_close="true" can_resize="false" - height="96" + height="240" width="320" layout="topleft" name="quick_prefs" @@ -82,4 +82,128 @@ name="max_bandwidth" tool_tip="Network bandwidth in Kbps (50 – 3000)" /> + <view_border + follows="left|right" + layout="topleft" + left="2" + right="-2" + top_pad="10" + height="2" + name="ots_divider" /> + + <text + type="string" + follows="left|top" + height="16" + layout="topleft" + left="5" + top_pad="6" + width="290" + text_color="EmphasisColor" + name="OTSLabel"> + Over-the-Shoulder Cam: + </text> + + <check_box + control_name="OTSEnabled" + follows="left|top" + height="16" + label="Use Over-The-Shoulder Cam" + layout="topleft" + left="10" + top_pad="4" + width="290" + name="ots_enabled" + tool_tip="When checked, M enters shoulder cam instead of first-person mouselook" /> + + <text + type="string" + follows="left|top" + height="16" + layout="topleft" + left="10" + top_pad="6" + width="100" + name="OTSDistLabel"> + Distance: + </text> + + <slider + control_name="OTSCameraDistance" + decimal_digits="1" + can_edit_text="true" + follows="left|right|top" + height="16" + increment="0.1" + initial_value="3.0" + max_val="10.0" + min_val="1.0" + label_width="0" + layout="topleft" + left="110" + right="-10" + top_delta="-2" + name="ots_distance" + tool_tip="Camera distance behind avatar (1 – 10 m)" /> + + <text + type="string" + follows="left|top" + height="16" + layout="topleft" + left="10" + top_pad="4" + width="100" + name="OTSSideLabel"> + Side offset: + </text> + + <slider + control_name="OTSCameraSide" + decimal_digits="2" + can_edit_text="true" + follows="left|right|top" + height="16" + increment="0.05" + initial_value="-0.5" + max_val="1.0" + min_val="-1.0" + label_width="0" + layout="topleft" + left="110" + right="-10" + top_delta="-2" + name="ots_side" + tool_tip="Side offset: negative = right shoulder, positive = left shoulder" /> + + <text + type="string" + follows="left|top" + height="16" + layout="topleft" + left="10" + top_pad="4" + width="100" + name="OTSHeightLabel"> + Height: + </text> + + <slider + control_name="OTSCameraHeight" + decimal_digits="2" + can_edit_text="true" + follows="left|right|top" + height="16" + increment="0.05" + initial_value="0.5" + max_val="2.0" + min_val="0.0" + label_width="0" + layout="topleft" + left="110" + right="-10" + top_delta="-2" + name="ots_height" + tool_tip="Camera height above avatar root (0 – 2 m)" /> + </floater> diff --git a/indra/newview/skins/default/xui/en/menu_avatar_other.xml b/indra/newview/skins/default/xui/en/menu_avatar_other.xml index fc4ffde947..f86e9160ed 100644 --- a/indra/newview/skins/default/xui/en/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/en/menu_avatar_other.xml @@ -90,6 +90,22 @@ function="Avatar.EnableFreezeEject"/> </menu_item_call> <menu_item_call + label="Estate Eject" + name="EstateEject..."> + <menu_item_call.on_click + function="Avatar.EstateKick" /> + <menu_item_call.on_visible + function="Avatar.EnableEstateEjectBan"/> + </menu_item_call> + <menu_item_call + label="Estate Ban" + name="EstateBan..."> + <menu_item_call.on_click + function="Avatar.EstateBan" /> + <menu_item_call.on_visible + function="Avatar.EnableEstateEjectBan"/> + </menu_item_call> + <menu_item_call label="Debug Textures" name="Debug..."> <menu_item_call.on_click diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby.xml b/indra/newview/skins/default/xui/en/menu_people_nearby.xml index b7a296bf31..8d73eee60a 100644 --- a/indra/newview/skins/default/xui/en/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/en/menu_people_nearby.xml @@ -169,4 +169,20 @@ <menu_item_call.on_visible function="Avatar.EnableFreezeEject"/> </menu_item_call> + <menu_item_call + label="Estate Eject" + name="estate_eject"> + <menu_item_call.on_click + function="Avatar.EstateKick" /> + <menu_item_call.on_visible + function="Avatar.EnableEstateEjectBan"/> + </menu_item_call> + <menu_item_call + label="Estate Ban" + name="estate_ban"> + <menu_item_call.on_click + function="Avatar.EstateBan" /> + <menu_item_call.on_visible + function="Avatar.EnableEstateEjectBan"/> + </menu_item_call> </context_menu> diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index facf9b7e46..65f26d50e7 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -5404,6 +5404,18 @@ Kick [EVIL_USER] from this estate? <notification icon="alertmodal.tga" + name="EstateBanUser" + type="alertmodal"> +Ban [AVATAR_NAME] from this estate? + <tag>confirm</tag> + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="Ban"/> + </notification> + + <notification + icon="alertmodal.tga" name="EstateChangeCovenant" type="alertmodal"> Are you sure you want to change the Estate Covenant? diff --git a/indra/newview/skins/default/xui/en/panel_preferences_move.xml b/indra/newview/skins/default/xui/en/panel_preferences_move.xml index eee55bd7bc..ad24451e24 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_move.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_move.xml @@ -9,317 +9,450 @@ name="move_panel" top="1" width="517"> - <icon - follows="left|top" - height="18" - image_name="Cam_FreeCam_Off" - layout="topleft" - name="camera_icon" - mouse_opaque="false" - visible="true" - width="18" - left="30" - top="10"/> - <slider - can_edit_text="true" - control_name="CameraAngle" - decimal_digits="2" - follows="left|top" - height="16" - increment="0.025" - initial_value="1.57" - layout="topleft" - label_width="100" - label="View angle" - left_pad="30" - max_val="2.97" - min_val="0.17" - name="camera_fov" - show_text="false" - width="240" /> - <slider - can_edit_text="true" - control_name="CameraOffsetScale" - decimal_digits="2" - follows="left|top" - height="16" - increment="0.025" - initial_value="1" - layout="topleft" - label="Distance" + + <tab_container + name="move_view_tab_container" + enabled="true" + top_pad="0" + follows="left|top|right|bottom" + width="517" + height="408" left_delta="0" - label_width="100" - max_val="3" - min_val="0.5" - name="camera_offset_scale" - show_text="false" - width="240" - top_pad="5"/> - <text - follows="left|top" - type="string" - length="1" - height="10" - left="80" - name="heading2" - width="270" - top_pad="5"> - Automatic position for: - </text> - <check_box - control_name="EditCameraMovement" - height="20" - follows="left|top" - label="Build/Edit" + tab_position="top" + tab_stop="false"> + + <!-- ── Move & View tab (existing content) ─────────────────────────── --> + <panel + label="Move & View" + name="move_view_panel" layout="topleft" - left_delta="30" - name="edit_camera_movement" - tool_tip="Use automatic camera positioning when entering and exiting edit mode" - width="280" - top_pad="5" /> - <check_box - control_name="AppearanceCameraMovement" - follows="left|top" - height="16" - label="Appearance" - layout="topleft" - name="appearance_camera_movement" - tool_tip="Use automatic camera positioning while in edit mode" - width="242" /> - <icon - follows="left|top" - height="18" - image_name="Move_Walk_Off" - layout="topleft" - name="avatar_icon" - mouse_opaque="false" - visible="true" - width="18" - top_pad="10" - left="30" /> - <text - follows="left|top" - type="string" - length="1" - height="10" - layout="topleft" - left="78" - name="keyboard_lbl" - width="270" - top_delta="2"> - Keyboard: - </text> - <check_box - control_name="ArrowKeysAlwaysMove" - follows="left|top" - height="20" - label="Arrow keys always move me while in chat" - layout="topleft" - left_delta="5" - name="arrow_keys_move_avatar_check" - width="237" - top_pad="5"/> - <check_box - control_name="AllowTapTapHoldRun" - follows="left|top" - height="20" - label="Tap-tap-hold to run" - layout="topleft" - left_delta="0" - name="tap_tap_hold_to_run" - width="237" - top_pad="0"/> - <check_box - control_name="AutomaticFly" - follows="left|top" - height="20" - label="Hold jump or crouch key to start or stop flying" - layout="topleft" - left_delta="0" - name="automatic_fly" - width="237" - top_pad="0"/> - <text - follows="left|top" - type="string" - length="1" - height="10" - layout="topleft" - left="78" - name="mouse_lbl" - width="270" - top_pad="15"> - Mouse: - </text> - <check_box - control_name="FirstPersonAvatarVisible" - follows="left|top" - height="20" - label="Show me in Mouselook" - layout="topleft" - left_delta="5" - name="first_person_avatar_visible" - top_pad="5" - width="256" /> - <text - type="string" - length="1" - follows="left|top" - height="15" - layout="topleft" - left_delta="3" - name=" Mouse Sensitivity" - top_pad="10" - width="160" - wrap="true"> - Mouselook mouse sensitivity: - </text> - <slider - control_name="MouseSensitivity" - follows="left|top" - height="15" - initial_value="2" - layout="topleft" - show_text="false" - left_pad="0" - max_val="15" - name="mouse_sensitivity" - top_delta="-1" - width="115" /> - <check_box - control_name="InvertMouse" - height="16" - label="Invert" - layout="topleft" - left_pad="2" - name="invert_mouse" - top_delta="0" - width="128" /> - <text - follows="left|top" - type="string" - length="1" - height="10" - layout="topleft" - left="86" - name="mouse_warp_lbl" - width="150" - top_pad="20"> - Mouse Warp: - </text> - <combo_box - control_name="MouseWarpMode" - height="23" - layout="topleft" - left_pad="10" - top_delta="-6" - name="mouse_warp_combo" - tool_tip="Controls warping of the mouse to the center of the screen during alt-zoom and mouse look." - width="200"> - <combo_box.item - label="Automatic" - name="0" - value="0"/> - <combo_box.item - label="On" - name="1" - value="1"/> - <combo_box.item - label="Off" - name="2" - value="2"/> - </combo_box> - <text - follows="left|top" - type="string" - length="1" - height="10" - layout="topleft" - left="86" - name="single_click_action_lbl" - width="150" - top_pad="12"> - Single click on land: - </text> - <combo_box - height="23" - layout="topleft" - left_pad="10" - top_delta="-6" - name="single_click_action_combo" - width="200"> - <combo_box.item - label="No action" - name="0" - value="0"/> - <combo_box.item - label="Move to clicked point" - name="1" - value="1"/> - <combo_box.commit_callback - function="Pref.ClickActionChange"/> - </combo_box> - <text - follows="left|top" - type="string" - length="1" - height="10" - layout="topleft" - left="86" - name="double_click_action_lbl" - width="150" - top_pad="12"> - Double click on land: - </text> - <combo_box - height="23" - layout="topleft" - left_pad="10" - top_delta="-6" - name="double_click_action_combo" - width="200"> - <combo_box.item - label="No action" - name="0" - value="0"/> - <combo_box.item - label="Move to clicked point" - name="1" - value="1"/> - <combo_box.item - label="Teleport to clicked point" - name="2" - value="2"/> - <combo_box.commit_callback - function="Pref.ClickActionChange"/> - </combo_box> - <check_box - control_name="EnableCollisionSounds" - height="20" - label="Play sound on collisions" - layout="topleft" - left="83" - name="sound_on_collisions" - top_pad="0" - width="200" /> - <check_box - control_name="DoubleClickZoomIn" - height="20" - label="Double click on nearby list to zoom in on avatar" - layout="topleft" - left="83" - name="double_click_zoom_in" - top_pad="0" - width="200" /> - <button - height="23" - label="Other Devices" - left="30" - name="joystick_setup_button" - top="30" - width="155"> - <button.commit_callback - function="Floater.Show" - parameter="pref_joystick" /> - </button> + follows="top|left"> + + <icon + follows="left|top" + height="18" + image_name="Cam_FreeCam_Off" + layout="topleft" + name="camera_icon" + mouse_opaque="false" + visible="true" + width="18" + left="30" + top="10"/> + <slider + can_edit_text="true" + control_name="CameraAngle" + decimal_digits="2" + follows="left|top" + height="16" + increment="0.025" + initial_value="1.57" + layout="topleft" + label_width="100" + label="View angle" + left_pad="30" + max_val="2.97" + min_val="0.17" + name="camera_fov" + show_text="false" + width="240" /> + <slider + can_edit_text="true" + control_name="CameraOffsetScale" + decimal_digits="2" + follows="left|top" + height="16" + increment="0.025" + initial_value="1" + layout="topleft" + label="Distance" + left_delta="0" + label_width="100" + max_val="3" + min_val="0.5" + name="camera_offset_scale" + show_text="false" + width="240" + top_pad="5"/> + <text + follows="left|top" + type="string" + length="1" + height="10" + left="80" + name="heading2" + width="270" + top_pad="5"> + Automatic position for: + </text> + <check_box + control_name="EditCameraMovement" + height="20" + follows="left|top" + label="Build/Edit" + layout="topleft" + left_delta="30" + name="edit_camera_movement" + tool_tip="Use automatic camera positioning when entering and exiting edit mode" + width="280" + top_pad="5" /> + <check_box + control_name="AppearanceCameraMovement" + follows="left|top" + height="16" + label="Appearance" + layout="topleft" + name="appearance_camera_movement" + tool_tip="Use automatic camera positioning while in edit mode" + width="242" /> + <icon + follows="left|top" + height="18" + image_name="Move_Walk_Off" + layout="topleft" + name="avatar_icon" + mouse_opaque="false" + visible="true" + width="18" + top_pad="10" + left="30" /> + <text + follows="left|top" + type="string" + length="1" + height="10" + layout="topleft" + left="78" + name="keyboard_lbl" + width="270" + top_delta="2"> + Keyboard: + </text> + <check_box + control_name="ArrowKeysAlwaysMove" + follows="left|top" + height="20" + label="Arrow keys always move me while in chat" + layout="topleft" + left_delta="5" + name="arrow_keys_move_avatar_check" + width="237" + top_pad="5"/> + <check_box + control_name="AllowTapTapHoldRun" + follows="left|top" + height="20" + label="Tap-tap-hold to run" + layout="topleft" + left_delta="0" + name="tap_tap_hold_to_run" + width="237" + top_pad="0"/> + <check_box + control_name="AutomaticFly" + follows="left|top" + height="20" + label="Hold jump or crouch key to start or stop flying" + layout="topleft" + left_delta="0" + name="automatic_fly" + width="237" + top_pad="0"/> + <text + follows="left|top" + type="string" + length="1" + height="10" + layout="topleft" + left="78" + name="mouse_lbl" + width="270" + top_pad="15"> + Mouse: + </text> + <check_box + control_name="FirstPersonAvatarVisible" + follows="left|top" + height="20" + label="Show me in Mouselook" + layout="topleft" + left_delta="5" + name="first_person_avatar_visible" + top_pad="5" + width="256" /> + <text + type="string" + length="1" + follows="left|top" + height="15" + layout="topleft" + left_delta="3" + name=" Mouse Sensitivity" + top_pad="10" + width="160" + wrap="true"> + Mouselook mouse sensitivity: + </text> + <slider + control_name="MouseSensitivity" + follows="left|top" + height="15" + initial_value="2" + layout="topleft" + show_text="false" + left_pad="0" + max_val="15" + name="mouse_sensitivity" + top_delta="-1" + width="115" /> + <check_box + control_name="InvertMouse" + height="16" + label="Invert" + layout="topleft" + left_pad="2" + name="invert_mouse" + top_delta="0" + width="128" /> + <text + follows="left|top" + type="string" + length="1" + height="10" + layout="topleft" + left="86" + name="mouse_warp_lbl" + width="150" + top_pad="20"> + Mouse Warp: + </text> + <combo_box + control_name="MouseWarpMode" + height="23" + layout="topleft" + left_pad="10" + top_delta="-6" + name="mouse_warp_combo" + tool_tip="Controls warping of the mouse to the center of the screen during alt-zoom and mouse look." + width="200"> + <combo_box.item label="Automatic" name="0" value="0"/> + <combo_box.item label="On" name="1" value="1"/> + <combo_box.item label="Off" name="2" value="2"/> + </combo_box> + <text + follows="left|top" + type="string" + length="1" + height="10" + layout="topleft" + left="86" + name="single_click_action_lbl" + width="150" + top_pad="12"> + Single click on land: + </text> + <combo_box + height="23" + layout="topleft" + left_pad="10" + top_delta="-6" + name="single_click_action_combo" + width="200"> + <combo_box.item label="No action" name="0" value="0"/> + <combo_box.item label="Move to clicked point" name="1" value="1"/> + <combo_box.commit_callback function="Pref.ClickActionChange"/> + </combo_box> + <text + follows="left|top" + type="string" + length="1" + height="10" + layout="topleft" + left="86" + name="double_click_action_lbl" + width="150" + top_pad="12"> + Double click on land: + </text> + <combo_box + height="23" + layout="topleft" + left_pad="10" + top_delta="-6" + name="double_click_action_combo" + width="200"> + <combo_box.item label="No action" name="0" value="0"/> + <combo_box.item label="Move to clicked point" name="1" value="1"/> + <combo_box.item label="Teleport to clicked point" name="2" value="2"/> + <combo_box.commit_callback function="Pref.ClickActionChange"/> + </combo_box> + <check_box + control_name="EnableCollisionSounds" + height="20" + label="Play sound on collisions" + layout="topleft" + left="83" + name="sound_on_collisions" + top_pad="0" + width="200" /> + <check_box + control_name="DoubleClickZoomIn" + height="20" + label="Double click on nearby list to zoom in on avatar" + layout="topleft" + left="83" + name="double_click_zoom_in" + top_pad="0" + width="200" /> + <button + height="23" + label="Other Devices" + left="30" + name="joystick_setup_button" + top="30" + width="155"> + <button.commit_callback function="Floater.Show" parameter="pref_joystick" /> + </button> + + </panel> + + <!-- ── Over-The-Shoulder tab ──────────────────────────────────────── --> + <panel + label="Over-The-Shoulder" + name="ots_panel" + layout="topleft" + follows="top|left"> + + <text + type="string" + follows="left|top" + font="SansSerifSmallBold" + height="20" + layout="topleft" + left="10" + name="ots_enable_header" + top="10" + width="490"> + Over-the-Shoulder Camera + </text> + + <check_box + control_name="OTSEnabled" + follows="left|top" + height="20" + label="Use Over-The-Shoulder Cam" + layout="topleft" + left="15" + name="ots_enabled_pref" + top_pad="5" + tool_tip="When checked, pressing M enters over-the-shoulder cam instead of first-person mouselook" + width="350" /> + + <text + type="string" + follows="left|top" + font="SansSerifSmallBold" + height="20" + layout="topleft" + left="10" + name="ots_pos_header" + top_pad="12" + width="490"> + Camera Position + </text> + + <text type="string" follows="left|top" height="16" layout="topleft" + left="15" top_pad="6" width="130" name="dist_label">Distance:</text> + <slider + control_name="OTSCameraDistance" + decimal_digits="1" can_edit_text="true" + follows="left|right|top" height="16" + increment="0.1" initial_value="3.0" max_val="10.0" min_val="1.0" + label_width="0" layout="topleft" left="150" right="-10" top_delta="-2" + name="ots_distance" + tool_tip="Camera distance behind avatar (1 – 10 m)" /> + + <text type="string" follows="left|top" height="16" layout="topleft" + left="15" top_pad="6" width="130" name="side_label">Side offset:</text> + <slider + control_name="OTSCameraSide" + decimal_digits="2" can_edit_text="true" + follows="left|right|top" height="16" + increment="0.05" initial_value="-0.5" max_val="1.0" min_val="-1.0" + label_width="0" layout="topleft" left="150" right="-10" top_delta="-2" + name="ots_side" + tool_tip="Side offset: negative = right shoulder, positive = left shoulder" /> + + <text type="string" follows="left|top" height="16" layout="topleft" + left="15" top_pad="6" width="130" name="height_label">Height:</text> + <slider + control_name="OTSCameraHeight" + decimal_digits="2" can_edit_text="true" + follows="left|right|top" height="16" + increment="0.05" initial_value="0.5" max_val="2.0" min_val="0.0" + label_width="0" layout="topleft" left="150" right="-10" top_delta="-2" + name="ots_height" + tool_tip="Camera height above avatar root (0 – 2 m)" /> + + <text type="string" follows="left|top" height="16" layout="topleft" + left="15" top_pad="6" width="130" name="focus_label">Focus distance:</text> + <slider + control_name="OTSFocusDistance" + decimal_digits="1" can_edit_text="true" + follows="left|right|top" height="16" + increment="0.5" initial_value="10.0" max_val="30.0" min_val="2.0" + label_width="0" layout="topleft" left="150" right="-10" top_delta="-2" + name="ots_focus_dist" + tool_tip="Focus point distance along camera forward axis (2 – 30 m)" /> + + </panel> + + <!-- ── Teleports tab ──────────────────────────────────────────────── --> + <panel + label="Teleports" + name="teleports_panel" + layout="topleft" + follows="top|left"> + + <text + type="string" + follows="left|top" + font="SansSerifSmallBold" + height="20" + layout="topleft" + left="10" + name="teleport_header" + top="10" + width="490"> + Teleport Options + </text> + + <check_box + control_name="KeepCameraOnLocalTeleport" + follows="left|top" + height="20" + label="Keep camera position on local teleport" + layout="topleft" + left="15" + name="keep_camera_on_local_teleport" + top_pad="8" + tool_tip="When teleporting within the same region, do not reset the camera position or mode (stays in mouselook/over-the-shoulder)" + width="450" /> + + <check_box + control_name="DisableTeleportScreens" + follows="left|top" + height="20" + label="Disable teleport progress screen" + layout="topleft" + left="15" + name="disable_teleport_screens" + top_pad="6" + tool_tip="Do not show the fullscreen progress/black screen during teleports" + width="450" /> + + </panel> + + </tab_container> + </panel> |
