Merge branch 'master' of https://github.com/FirestormViewer/phoenix-firestorm-202507
commit
6252c2c0a8
|
|
@ -195,14 +195,14 @@
|
|||
<string>ndPhysicsStub</string>
|
||||
<key>platforms</key>
|
||||
<map>
|
||||
<key>darwin</key>
|
||||
<key>darwin64</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>7d375112b162e32e37262da4a6c0a702</string>
|
||||
<string>b0f4fd59a72cf04db2cc426241a3850c</string>
|
||||
<key>url</key>
|
||||
<string>https://3p.firestormviewer.org/ndPhysicsStub-1.0-darwin-202330107.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/ndPhysicsStub-1.0-darwin64-252581439.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
|
|
@ -250,9 +250,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>94fc457c46e1fb94b31251bd4747d10f</string>
|
||||
<string>439af4161d99a3d12e0d6d90cb948687</string>
|
||||
<key>url</key>
|
||||
<string>https://3p.firestormviewer.org/glod-1.0pre3.171101143-darwin64-171101143.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/glod-1.0pre3.252621603-darwin64-252621603.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin64</string>
|
||||
|
|
@ -297,14 +297,14 @@
|
|||
<string>gntp-growl</string>
|
||||
<key>platforms</key>
|
||||
<map>
|
||||
<key>darwin</key>
|
||||
<key>darwin64</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>33300134846d0f00ac4f31c1a190e3e6</string>
|
||||
<string>5362f98bf0b0c5b12acacd6b7b1e427e</string>
|
||||
<key>url</key>
|
||||
<uri>https://3p.firestormviewer.org/gntp_growl-1.0-darwin-201505101047-r12.tar.bz2</uri>
|
||||
<uri>https://3p.firestormviewer.org/gntp_growl-1.0-darwin64-252631716.tar.bz2</uri>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
|
|
@ -378,9 +378,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>3bc297a0fa47094bb52d361f80186387</string>
|
||||
<string>91b24b83d3f8461286f783f28fcd9a66</string>
|
||||
<key>url</key>
|
||||
<uri>https://3p.firestormviewer.org/discord_rpc-3.4.0-darwin64-192522358.tar.bz2</uri>
|
||||
<uri>https://3p.firestormviewer.org/discord_rpc-3.4.0-darwin64-252621453.tar.bz2</uri>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin64</string>
|
||||
|
|
@ -768,11 +768,11 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>d44256458ff0ef4db4c91e8e8cc83e8f98b4f1b8</string>
|
||||
<string>126e0fa4c16dfd433c9fb7d1d242da98f213d933</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>sha1</string>
|
||||
<key>url</key>
|
||||
<string>https://github.com/secondlife/dullahan/releases/download/v1.21.0-CEF_139.0.28/dullahan-1.21.0.202508272158_139.0.28_g55ab8a8_chromium-139.0.7258.139-darwin64-17279703032.tar.zst</string>
|
||||
<string>https://github.com/secondlife/dullahan/releases/download/v1.24.0-CEF_139.0.40/dullahan-1.24.0.202510081737_139.0.40_g465474a_chromium-139.0.7258.139-darwin64-18353103947.tar.zst</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin64</string>
|
||||
|
|
@ -796,11 +796,11 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>9d5af766a87052808e4062978504e9af124fb558</string>
|
||||
<string>20de62c9e57d9e6539c1e2437ec4b46c3ca237bc</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>sha1</string>
|
||||
<key>url</key>
|
||||
<string>https://github.com/secondlife/dullahan/releases/download/v1.21.0-CEF_139.0.28/dullahan-1.21.0.202508272159_139.0.28_g55ab8a8_chromium-139.0.7258.139-windows64-17279703032.tar.zst</string>
|
||||
<string>https://github.com/secondlife/dullahan/releases/download/v1.24.0-CEF_139.0.40/dullahan-1.24.0.202510081738_139.0.40_g465474a_chromium-139.0.7258.139-windows64-18353103947.tar.zst</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
|
|
@ -813,7 +813,7 @@
|
|||
<key>copyright</key>
|
||||
<string>Copyright (c) 2017, Linden Research, Inc.</string>
|
||||
<key>version</key>
|
||||
<string>1.21.0.202508272158_139.0.28_g55ab8a8_chromium-139.0.7258.139</string>
|
||||
<string>1.24.0.202510081737_139.0.40_g465474a_chromium-139.0.7258.139</string>
|
||||
<key>name</key>
|
||||
<string>dullahan</string>
|
||||
<key>description</key>
|
||||
|
|
@ -1694,53 +1694,21 @@
|
|||
<map>
|
||||
<key>platforms</key>
|
||||
<map>
|
||||
<key>darwin64</key>
|
||||
<key>common</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>creds</key>
|
||||
<string>github</string>
|
||||
<key>hash</key>
|
||||
<string>7facda95e2f00c260513f3d4db42588fa8ba703c</string>
|
||||
<string>fff82c79edb900c547c40dca9a0e3ebac5a8c7da</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>sha1</string>
|
||||
<key>url</key>
|
||||
<string>https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/196289774</string>
|
||||
<string>https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/299858950</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin64</string>
|
||||
</map>
|
||||
<key>linux64</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>creds</key>
|
||||
<string>github</string>
|
||||
<key>hash</key>
|
||||
<string>01d08f13c7bc8d1b95b0330fa6833b7d8274e4d0</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>sha1</string>
|
||||
<key>url</key>
|
||||
<string>https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/196289775</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
</map>
|
||||
<key>windows64</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>creds</key>
|
||||
<string>github</string>
|
||||
<key>hash</key>
|
||||
<string>6d00345c7d3471bc5f7c1218e014dd0f1a2c069b</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>sha1</string>
|
||||
<key>url</key>
|
||||
<string>https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/196289778</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
<string>common</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>license</key>
|
||||
|
|
|
|||
5
build.sh
5
build.sh
|
|
@ -158,7 +158,6 @@ pre_build()
|
|||
|
||||
if [[ "$arch" == "Darwin" ]]
|
||||
then
|
||||
HAVOK=OFF
|
||||
SIGNING=("-DENABLE_SIGNING:BOOL=YES" \
|
||||
"-DSIGNING_IDENTITY:STRING=Developer ID Application: Linden Research, Inc.")
|
||||
fi
|
||||
|
|
@ -262,8 +261,8 @@ build()
|
|||
done
|
||||
fi
|
||||
|
||||
# *TODO: Make this a build extension.
|
||||
package_llphysicsextensions_tpv || fatal "failed building llphysicsextensions packages"
|
||||
# *TODO: Make this a build extension. disabled for now
|
||||
# package_llphysicsextensions_tpv || fatal "failed building llphysicsextensions packages"
|
||||
end_section "extensions $variant"
|
||||
|
||||
else
|
||||
|
|
|
|||
|
|
@ -20,13 +20,13 @@ add_library(fs::discord INTERFACE IMPORTED)
|
|||
include(Prebuilt)
|
||||
use_prebuilt_binary(discord-rpc)
|
||||
|
||||
if (WINDOWS)
|
||||
target_link_libraries(fs::discord INTERFACE discord-rpc)
|
||||
elseif (LINUX)
|
||||
target_link_libraries(fs::discord INTERFACE discord-rpc)
|
||||
elseif (DARWIN)
|
||||
target_link_libraries(fs::discord INTERFACE discord-rpc)
|
||||
endif (WINDOWS)
|
||||
find_library(DISCORD_LIBRARY
|
||||
NAMES
|
||||
discord-rpc.lib
|
||||
libdiscord-rpc.a
|
||||
PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH)
|
||||
|
||||
target_link_libraries(fs::discord INTERFACE ${DISCORD_LIBRARY})
|
||||
|
||||
target_include_directories(fs::discord SYSTEM INTERFACE
|
||||
${AUTOBUILD_INSTALL_DIR}/include/discord-rpc
|
||||
|
|
|
|||
|
|
@ -33,14 +33,15 @@ if (USE_FMODSTUDIO)
|
|||
# as accessing the private LL location will fail if you don't have the credential
|
||||
include(Prebuilt)
|
||||
use_prebuilt_binary(fmodstudio)
|
||||
if (WINDOWS)
|
||||
target_link_libraries( ll::fmodstudio INTERFACE fmod_vc)
|
||||
elseif (DARWIN)
|
||||
#despite files being called libfmod.dylib, we are searching for fmod
|
||||
target_link_libraries( ll::fmodstudio INTERFACE fmod)
|
||||
elseif (LINUX)
|
||||
target_link_libraries( ll::fmodstudio INTERFACE fmod)
|
||||
endif (WINDOWS)
|
||||
|
||||
find_library(FMOD_LIBRARY
|
||||
NAMES
|
||||
fmod_vc.lib
|
||||
libfmod.dylib
|
||||
libfmod.so
|
||||
PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH)
|
||||
|
||||
target_link_libraries(ll::fmodstudio INTERFACE ${FMOD_LIBRARY})
|
||||
|
||||
target_include_directories( ll::fmodstudio SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/fmodstudio)
|
||||
endif (FMODSTUDIO_LIBRARY AND FMODSTUDIO_INCLUDE_DIR)
|
||||
|
|
|
|||
|
|
@ -5,13 +5,24 @@ add_library( fs::glod INTERFACE IMPORTED )
|
|||
|
||||
include(Prebuilt)
|
||||
use_prebuilt_binary(glod)
|
||||
if (WINDOWS)
|
||||
target_link_libraries( fs::glod INTERFACE glod.lib)
|
||||
elseif (DARWIN)
|
||||
target_link_libraries( fs::glod INTERFACE libGLOD.dylib)
|
||||
|
||||
find_library(GLOD_LIBRARY
|
||||
NAMES
|
||||
GLOD.lib
|
||||
libGLOD.dylib
|
||||
libGLOD.a
|
||||
PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH)
|
||||
|
||||
if (WINDOWS OR DARWIN)
|
||||
target_link_libraries(fs::glod INTERFACE ${GLOD_LIBRARY})
|
||||
elseif (LINUX)
|
||||
target_link_libraries( fs::glod INTERFACE libGLOD.a libvds.a)
|
||||
endif (WINDOWS)
|
||||
find_library(VDS_LIBRARY
|
||||
NAMES
|
||||
libvds.a
|
||||
PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH)
|
||||
|
||||
target_link_libraries(fs::glod INTERFACE ${GLOD_LIBRARY} ${VDS_LIBRARY})
|
||||
endif ()
|
||||
|
||||
target_include_directories( fs::glod SYSTEM INTERFACE
|
||||
${AUTOBUILD_INSTALL_DIR}/include/glod
|
||||
|
|
|
|||
|
|
@ -9,11 +9,20 @@ add_library( fs::growl INTERFACE IMPORTED )
|
|||
|
||||
include(Prebuilt)
|
||||
use_prebuilt_binary(gntp-growl)
|
||||
if (WINDOWS)
|
||||
target_link_libraries( fs::growl INTERFACE growl.lib growl++.lib)
|
||||
elseif (DARWIN)
|
||||
target_link_libraries( fs::growl INTERFACE libgrowl.dylib libgrowl++.dylib)
|
||||
endif (WINDOWS)
|
||||
|
||||
find_library(GROWL_LIBRARY
|
||||
NAMES
|
||||
growl.lib
|
||||
libgrowl.dylib
|
||||
PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH)
|
||||
|
||||
find_library(GROWL_PLUSPLUS_LIBRARY
|
||||
NAMES
|
||||
growl++.lib
|
||||
libgrowl++.dylib
|
||||
PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH)
|
||||
|
||||
target_link_libraries(fs::growl INTERFACE ${GROWL_LIBRARY} ${GROWL_PLUSPLUS_LIBRARY})
|
||||
|
||||
target_include_directories( fs::growl SYSTEM INTERFACE
|
||||
${AUTOBUILD_INSTALL_DIR}/include/Growl
|
||||
|
|
|
|||
|
|
@ -22,7 +22,14 @@ if (HAVOK)
|
|||
include(Havok)
|
||||
use_prebuilt_binary(llphysicsextensions_source)
|
||||
set(LLPHYSICSEXTENSIONS_SRC_DIR ${LIBS_PREBUILT_DIR}/llphysicsextensions/src)
|
||||
target_link_libraries( llphysicsextensions_impl INTERFACE llphysicsextensions)
|
||||
if(DARWIN)
|
||||
set(LLPHYSICSEXTENSIONS_STUB_DIR ${LIBS_PREBUILT_DIR}/llphysicsextensions/stub)
|
||||
# can't set these library dependencies per-arch here, need to do it using XCODE_ATTRIBUTE_OTHER_LDFLAGS[arch=*] in newview/CMakeLists.txt
|
||||
#target_link_libraries( llphysicsextensions_impl INTERFACE llphysicsextensions)
|
||||
#target_link_libraries( llphysicsextensions_impl INTERFACE llphysicsextensionsstub)
|
||||
else()
|
||||
target_link_libraries( llphysicsextensions_impl INTERFACE llphysicsextensions)
|
||||
endif()
|
||||
elseif (HAVOK_TPV)
|
||||
use_prebuilt_binary(llphysicsextensions_tpv)
|
||||
target_link_libraries( llphysicsextensions_impl INTERFACE llphysicsextensions_tpv)
|
||||
|
|
@ -41,7 +48,27 @@ else (HAVOK)
|
|||
# set(LLPHYSICSEXTENSIONS_SRC_DIR ${LIBS_PREBUILT_DIR}/llphysicsextensions/stub)
|
||||
# </FS:ND>
|
||||
|
||||
target_link_libraries( llphysicsextensions_impl INTERFACE nd_hacdConvexDecomposition hacd nd_Pathing )
|
||||
# <FS:TJ> Use find_library to make our lives easier
|
||||
find_library(ND_HACDCONVEXDECOMPOSITION_LIBRARY
|
||||
NAMES
|
||||
nd_hacdConvexDecomposition.lib
|
||||
libnd_hacdConvexDecomposition.a
|
||||
PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH)
|
||||
|
||||
find_library(HACD_LIBRARY
|
||||
NAMES
|
||||
hacd.lib
|
||||
libhacd.a
|
||||
PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH)
|
||||
|
||||
find_library(ND_PATHING_LIBRARY
|
||||
NAMES
|
||||
nd_pathing.lib
|
||||
libnd_pathing.a
|
||||
PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH)
|
||||
|
||||
target_link_libraries(llphysicsextensions_impl INTERFACE ${ND_HACDCONVEXDECOMPOSITION_LIBRARY} ${HACD_LIBRARY} ${ND_PATHING_LIBRARY})
|
||||
# </FS:TJ>
|
||||
|
||||
# <FS:ND> include paths for LLs version and ours are different.
|
||||
target_include_directories( llphysicsextensions_impl INTERFACE ${LIBS_PREBUILT_DIR}/include/ )
|
||||
|
|
|
|||
|
|
@ -97,6 +97,10 @@
|
|||
# define LL_ARM64 1
|
||||
#elif LL_GNUC && (defined(__arm64__) || defined(__aarch64__))
|
||||
# define LL_ARM64 1
|
||||
// <FS:TJ> Check if using clang
|
||||
#elif LL_CLANG && (defined(__arm64__) || defined(__aarch64__))
|
||||
# define LL_ARM64 1
|
||||
// </FS:TJ>
|
||||
#elif LL_MSVC && _M_X64
|
||||
# define LL_X86_64 1
|
||||
# define LL_X86 1
|
||||
|
|
@ -105,6 +109,13 @@
|
|||
#elif LL_GNUC && ( defined(__amd64__) || defined(__x86_64__) )
|
||||
# define LL_X86_64 1
|
||||
# define LL_X86 1
|
||||
// <FS:TJ> Check if using clang
|
||||
#elif LL_CLANG && ( defined(__amd64__) || defined(__x86_64__) )
|
||||
# define LL_X86_64 1
|
||||
# define LL_X86 1
|
||||
#elif LL_CLANG && ( defined(__i386__) )
|
||||
# define LL_X86 1
|
||||
// </FS:TJ>
|
||||
#elif LL_GNUC && ( defined(__i386__) )
|
||||
# define LL_X86 1
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -2452,13 +2452,16 @@ bool LLWindowMacOSX::getInputDevices(U32 device_type_filter,
|
|||
|
||||
void LLWindowMacOSX::openFile(const std::string& file_name )
|
||||
{
|
||||
LL_INFOS() << "Opening file " << file_name << LL_ENDL;
|
||||
FSRef appRef;
|
||||
OSStatus os_result = FSPathMakeRef((UInt8*)file_name.c_str(),
|
||||
&appRef,NULL);
|
||||
if(os_result >= 0)
|
||||
LL_INFOS() << "Opening file " << file_name << LL_ENDL;
|
||||
CFURLRef url = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault,
|
||||
(const UInt8*)file_name.c_str(),
|
||||
(CFIndex)file_name.size(),
|
||||
false);
|
||||
|
||||
if (url)
|
||||
{
|
||||
os_result = LSOpenFSRef(&appRef, NULL);
|
||||
OSStatus os_result = LSOpenCFURLRef(url, NULL);
|
||||
CFRelease(url);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -69,6 +69,11 @@ if (NOT HAVOK_TPV)
|
|||
# which means we need to duct tape this togther ...
|
||||
|
||||
add_subdirectory(${LLPHYSICSEXTENSIONS_SRC_DIR} llphysicsextensions)
|
||||
if (NOT "${LLPHYSICSEXTENSIONS_STUB_DIR}" STREQUAL "")
|
||||
# for darwin universal builds we need both real llphysicsextensions and the stub for aarch64 fallback
|
||||
# this will only be set when HAVOK is ON, otherwise the normal stub fallback will be in effect
|
||||
add_subdirectory(${LLPHYSICSEXTENSIONS_STUB_DIR} llphysicsextensionsstub)
|
||||
endif()
|
||||
|
||||
# Another hack that works with newer cmake versions:
|
||||
cmake_policy( SET CMP0079 NEW)
|
||||
|
|
@ -2503,14 +2508,27 @@ if (WINDOWS)
|
|||
elseif (DARWIN)
|
||||
set_target_properties(${VIEWER_BINARY_NAME}
|
||||
PROPERTIES
|
||||
RESOURCE SecondLife.xib
|
||||
#LINK_FLAGS_RELEASE "${LINK_FLAGS_RELEASE} -Xlinker -dead_strip -Xlinker -map -Xlinker ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_BINARY_NAME}.MAP"
|
||||
RESOURCE Firestorm.xib
|
||||
LINK_FLAGS_RELEASE "${LINK_FLAGS_RELEASE} -Xlinker -dead_strip"
|
||||
#<FS:TS> Force the SDK version in the linked executable to be 10.12. This will fool
|
||||
# macOS into using the pre-Mojave display system, avoiding the blurry display that
|
||||
# otherwise occurs when upscaling the viewer to Retina resolution levels.
|
||||
LINK_FLAGS_RELEASE "${LINK_FLAGS_RELEASE} -Xlinker -platform_version -Xlinker macos -Xlinker ${CMAKE_OSX_DEPLOYMENT_TARGET} -Xlinker 10.12"
|
||||
|
||||
# <FS:TJ> We can only do these if building with Havok
|
||||
)
|
||||
if(HAVOK OR HAVOK_TPV)
|
||||
set_target_properties(${VIEWER_BINARY_NAME}
|
||||
PROPERTIES
|
||||
# arch specific flags for universal builds: https://stackoverflow.com/a/77942065
|
||||
XCODE_ATTRIBUTE_OTHER_CFLAGS[arch=x86_64] "$(inherited) -DLLPHYSICSEXTENSIONS_USE_FULL"
|
||||
XCODE_ATTRIBUTE_OTHER_CFLAGS[arch=arm64] "$(inherited) -DLLPHYSICSEXTENSIONS_USE_STUB"
|
||||
# only generate the .MAP file for llphysicsextensions_tpv on x86_64
|
||||
XCODE_ATTRIBUTE_OTHER_LDFLAGS[arch=x86_64] "$(inherited) -L${CMAKE_CURRENT_BINARY_DIR}/llphysicsextensions/$<IF:$<BOOL:${LL_GENERATOR_IS_MULTI_CONFIG}>,$<CONFIG>,${CMAKE_CFG_INTDIR}>/ -lllphysicsextensions -Xlinker -map -Xlinker ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_BINARY_NAME}.MAP"
|
||||
XCODE_ATTRIBUTE_OTHER_LDFLAGS[arch=arm64] "$(inherited) -L${CMAKE_CURRENT_BINARY_DIR}/llphysicsextensionsstub/$<IF:$<BOOL:${LL_GENERATOR_IS_MULTI_CONFIG}>,$<CONFIG>,${CMAKE_CFG_INTDIR}>/ -lllphysicsextensionsstub"
|
||||
)
|
||||
endif()
|
||||
# </FS:TJ>
|
||||
else (WINDOWS)
|
||||
# Linux
|
||||
set_target_properties(${VIEWER_BINARY_NAME}
|
||||
|
|
|
|||
|
|
@ -292,7 +292,6 @@ private:
|
|||
|
||||
S32 mInputEditorPad;
|
||||
S32 mChatLayoutPanelHeight;
|
||||
S32 mFloaterHeight;
|
||||
|
||||
uuid_vec_t mInvitedParticipants;
|
||||
uuid_vec_t mPendingParticipants;
|
||||
|
|
|
|||
|
|
@ -161,7 +161,6 @@ private:
|
|||
|
||||
S32 mInputEditorPad;
|
||||
S32 mChatLayoutPanelHeight;
|
||||
S32 mFloaterHeight;
|
||||
|
||||
std::vector<LLChat> mMessageArchive;
|
||||
|
||||
|
|
|
|||
|
|
@ -27,10 +27,11 @@
|
|||
#include "llviewerprecompiledheaders.h"
|
||||
|
||||
#include "llfloatermarketplace.h"
|
||||
#include "llviewercontrol.h"
|
||||
#include "lluictrlfactory.h"
|
||||
|
||||
LLFloaterMarketplace::LLFloaterMarketplace(const LLSD& key)
|
||||
: LLFloater(key)
|
||||
: LLFloaterWebContent(key)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -38,10 +39,25 @@ LLFloaterMarketplace::~LLFloaterMarketplace()
|
|||
{
|
||||
}
|
||||
|
||||
// just to override LLFloaterWebContent
|
||||
void LLFloaterMarketplace::onClose(bool app_quitting)
|
||||
{
|
||||
}
|
||||
|
||||
bool LLFloaterMarketplace::postBuild()
|
||||
{
|
||||
enableResizeCtrls(true, true, false);
|
||||
LLFloaterWebContent::postBuild();
|
||||
mWebBrowser = getChild<LLMediaCtrl>("marketplace_contents");
|
||||
mWebBrowser->addObserver(this);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void LLFloaterMarketplace::openMarketplace()
|
||||
{
|
||||
std::string url = gSavedSettings.getString("MarketplaceURL");
|
||||
if (mCurrentURL != url)
|
||||
{
|
||||
mWebBrowser->navigateTo(url, HTTP_CONTENT_TEXT_HTML);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,14 +27,20 @@
|
|||
#pragma once
|
||||
|
||||
#include "llfloater.h"
|
||||
#include "llfloaterwebcontent.h"
|
||||
|
||||
class LLFloaterMarketplace:
|
||||
public LLFloater
|
||||
public LLFloaterWebContent
|
||||
{
|
||||
friend class LLFloaterReg;
|
||||
|
||||
public:
|
||||
void openMarketplace();
|
||||
|
||||
private:
|
||||
LLFloaterMarketplace(const LLSD& key);
|
||||
~LLFloaterMarketplace();
|
||||
bool postBuild() override;
|
||||
void onClose(bool app_quitting) override;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ class LLSearchHandler : public LLCommandHandler {
|
|||
LLSearchHandler gSearchHandler;
|
||||
|
||||
LLFloaterSearch::LLFloaterSearch(const LLSD& key)
|
||||
: LLFloater(key)
|
||||
: LLFloaterWebContent(key)
|
||||
{
|
||||
mSearchType.insert("standard");
|
||||
mSearchType.insert("land");
|
||||
|
|
@ -89,6 +89,12 @@ LLFloaterSearch::~LLFloaterSearch()
|
|||
void LLFloaterSearch::onOpen(const LLSD& tokens)
|
||||
{
|
||||
initiateSearch(tokens);
|
||||
mWebBrowser->setFocus(true);
|
||||
}
|
||||
|
||||
// just to override LLFloaterWebContent
|
||||
void LLFloaterSearch::onClose(bool app_quitting)
|
||||
{
|
||||
}
|
||||
|
||||
void LLFloaterSearch::initiateSearch(const LLSD& tokens)
|
||||
|
|
@ -179,7 +185,11 @@ void LLFloaterSearch::initiateSearch(const LLSD& tokens)
|
|||
|
||||
bool LLFloaterSearch::postBuild()
|
||||
{
|
||||
enableResizeCtrls(true, true, false);
|
||||
LLFloaterWebContent::postBuild();
|
||||
mWebBrowser = getChild<LLMediaCtrl>("search_contents");
|
||||
mWebBrowser->addObserver(this);
|
||||
getChildView("address")->setEnabled(false);
|
||||
getChildView("popexternal")->setEnabled(false);
|
||||
|
||||
// This call is actioned by the preload code in llViewerWindow
|
||||
// that creates the search floater during the login process
|
||||
|
|
|
|||
|
|
@ -27,13 +27,15 @@
|
|||
#pragma once
|
||||
|
||||
#include "llfloater.h"
|
||||
#include "llfloaterwebcontent.h"
|
||||
|
||||
class LLFloaterSearch:
|
||||
public LLFloater {
|
||||
public LLFloaterWebContent {
|
||||
friend class LLFloaterReg;
|
||||
|
||||
public:
|
||||
void onOpen(const LLSD& key) override;
|
||||
void onClose(bool app_quitting) override;
|
||||
|
||||
private:
|
||||
LLFloaterSearch(const LLSD& key);
|
||||
|
|
|
|||
|
|
@ -395,7 +395,7 @@ private:
|
|||
|
||||
LLButton* mBtnAlign { nullptr };
|
||||
LLButton* mBtnAlignTex { nullptr };
|
||||
LLButton* mBtnPbrFromInv { nullptr };
|
||||
//LLButton* mBtnPbrFromInv { nullptr }; // <FS/> Done via texture picker
|
||||
LLButton* mBtnEditBbr { nullptr };
|
||||
LLButton* mBtnSaveBbr { nullptr };
|
||||
|
||||
|
|
|
|||
|
|
@ -169,7 +169,7 @@ private:
|
|||
// <FS:Ansariel> FIRE-4740: Friend counter in people panel
|
||||
LLTabContainer* mFriendsTabContainer;
|
||||
|
||||
LLAccordionCtrl* mFriendsAccordion = nullptr;
|
||||
//LLAccordionCtrl* mFriendsAccordion = nullptr; // <FS:Ansariel/> Friend list accordion replacement
|
||||
LLAccordionCtrlTab* mFriendsAllTab = nullptr;
|
||||
LLAccordionCtrlTab* mFriendsOnlineTab = nullptr;
|
||||
|
||||
|
|
|
|||
|
|
@ -1009,11 +1009,11 @@ void LLReflectionMapManager::updateProbeFace(LLReflectionMap* probe, U32 face)
|
|||
mTexture->bind(channel);
|
||||
}
|
||||
}
|
||||
|
||||
gIrradianceGenProgram.unbind();
|
||||
}
|
||||
|
||||
mMipChain[0].flush();
|
||||
|
||||
gIrradianceGenProgram.unbind();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@
|
|||
#include "llpanelpresetscamerapulldown.h"
|
||||
#include "llpanelpresetspulldown.h"
|
||||
#include "llpanelvolumepulldown.h"
|
||||
#include "llfloatermarketplace.h"
|
||||
#include "llfloaterregioninfo.h"
|
||||
#include "llfloaterscriptdebug.h"
|
||||
#include "llhints.h"
|
||||
|
|
@ -971,7 +972,11 @@ void LLStatusBar::onClickBuyCurrency()
|
|||
|
||||
void LLStatusBar::onClickShop()
|
||||
{
|
||||
LLFloaterReg::toggleInstanceOrBringToFront("marketplace");
|
||||
LLFloaterReg::showInstanceOrBringToFront("marketplace");
|
||||
if (LLFloaterMarketplace* marketplace = LLFloaterReg::getTypedInstance<LLFloaterMarketplace>("marketplace"))
|
||||
{
|
||||
marketplace->openMarketplace();
|
||||
}
|
||||
}
|
||||
|
||||
void LLStatusBar::onMouseEnterPresetsCamera()
|
||||
|
|
|
|||
|
|
@ -321,13 +321,9 @@ public:
|
|||
void setRebakeStuck(bool stuck) { mRebakeStuck = stuck;} // <FS:LO> FIRE-7639 - Stop the blinking after a while
|
||||
|
||||
private:
|
||||
LLTextBox *mTextBalance;
|
||||
LLTextBox *mTextHealth;
|
||||
LLTextBox *mTextTime;
|
||||
LLTextBox *mFPSText; // <FS:Ansariel> FIRE-14482: Show FPS in status bar
|
||||
|
||||
LLTextBox* mTextParcelName;
|
||||
|
||||
LLStatGraph *mSGBandwidth;
|
||||
LLStatGraph *mSGPacketLoss;
|
||||
|
||||
|
|
@ -361,7 +357,6 @@ private:
|
|||
LLPanelNearByMedia* mPanelNearByMedia;
|
||||
|
||||
LLPanel* mParcelInfoPanel;
|
||||
LLButton* mInfoBtn;
|
||||
LLTextBox* mParcelInfoText;
|
||||
LLTextBox* mDamageText;
|
||||
LLIconCtrl* mParcelIcon[ICON_COUNT];
|
||||
|
|
|
|||
|
|
@ -940,7 +940,23 @@ class LLFileUploadModel : public view_listener_t
|
|||
{
|
||||
bool handleEvent(const LLSD& userdata)
|
||||
{
|
||||
LLFloaterModelPreview::showModelPreview();
|
||||
if (LLConvexDecomposition::isFunctional())
|
||||
{
|
||||
LLFloaterModelPreview::showModelPreview();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gGLManager.mIsApple)
|
||||
{
|
||||
LLNotificationsUtil::add("ModelUploaderMissingPhysicsApple");
|
||||
}
|
||||
else
|
||||
{
|
||||
// TPV?
|
||||
LLNotificationsUtil::add("ModelUploaderMissingPhysics");
|
||||
LLFloaterModelPreview::showModelPreview();
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,26 +1,201 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater
|
||||
positioning="cascading"
|
||||
legacy_header_height="225"
|
||||
can_minimize="true"
|
||||
can_close="true"
|
||||
can_resize="true"
|
||||
min_height="800"
|
||||
min_width="800"
|
||||
height="800"
|
||||
layout="topleft"
|
||||
name="Marketplace"
|
||||
single_instance="true"
|
||||
help_topic="marketplace"
|
||||
save_rect="true"
|
||||
save_visibility="true"
|
||||
title="Marketplace"
|
||||
width="800">
|
||||
<web_browser
|
||||
top="25"
|
||||
height="775"
|
||||
width="800"
|
||||
follows="all"
|
||||
name="marketplace_contents"
|
||||
trusted_content="true"/>
|
||||
legacy_header_height="18"
|
||||
can_minimize="true"
|
||||
can_close="true"
|
||||
can_resize="true"
|
||||
height="775"
|
||||
layout="topleft"
|
||||
min_height="500"
|
||||
min_width="600"
|
||||
name="Marketplace"
|
||||
save_rect="true"
|
||||
single_instance="true"
|
||||
save_visibility="true"
|
||||
title="MARKETPLACE"
|
||||
tab_stop="true"
|
||||
width="780">
|
||||
<layout_stack
|
||||
bottom="775"
|
||||
follows="left|right|top|bottom"
|
||||
layout="topleft"
|
||||
left="5"
|
||||
animate="false"
|
||||
name="stack1"
|
||||
orientation="vertical"
|
||||
top="20"
|
||||
width="770">
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
default_tab_group="1"
|
||||
height="22"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
min_height="20"
|
||||
name="nav_controls"
|
||||
top="400"
|
||||
width="770">
|
||||
<button
|
||||
image_overlay="Arrow_Left_Off"
|
||||
image_disabled="PushButton_Disabled"
|
||||
image_disabled_selected="PushButton_Disabled"
|
||||
image_selected="PushButton_Selected"
|
||||
image_unselected="PushButton_Off"
|
||||
chrome="true"
|
||||
hover_glow_amount="0.15"
|
||||
tool_tip="Navigate back"
|
||||
follows="left|top"
|
||||
height="22"
|
||||
layout="topleft"
|
||||
left="1"
|
||||
name="back"
|
||||
top="0"
|
||||
width="22">
|
||||
<button.commit_callback
|
||||
function="WebContent.Back" />
|
||||
</button>
|
||||
<button
|
||||
image_overlay="Arrow_Right_Off"
|
||||
image_disabled="PushButton_Disabled"
|
||||
image_disabled_selected="PushButton_Disabled"
|
||||
image_selected="PushButton_Selected"
|
||||
image_unselected="PushButton_Off"
|
||||
chrome="true"
|
||||
tool_tip="Navigate forward"
|
||||
follows="left|top"
|
||||
height="22"
|
||||
layout="topleft"
|
||||
left="27"
|
||||
name="forward"
|
||||
top_delta="0"
|
||||
width="22">
|
||||
<button.commit_callback
|
||||
function="WebContent.Forward" />
|
||||
</button>
|
||||
<button
|
||||
image_overlay="Stop_Off"
|
||||
image_disabled="PushButton_Disabled"
|
||||
image_disabled_selected="PushButton_Disabled"
|
||||
image_selected="PushButton_Selected"
|
||||
image_unselected="PushButton_Off"
|
||||
chrome="true"
|
||||
tool_tip="Stop navigation"
|
||||
enabled="true"
|
||||
follows="left|top"
|
||||
height="22"
|
||||
layout="topleft"
|
||||
left="51"
|
||||
name="stop"
|
||||
top_delta="0"
|
||||
width="22">
|
||||
<button.commit_callback
|
||||
function="WebContent.Stop" />
|
||||
</button>
|
||||
<button
|
||||
image_overlay="Refresh_Off"
|
||||
image_disabled="PushButton_Disabled"
|
||||
image_disabled_selected="PushButton_Disabled"
|
||||
image_selected="PushButton_Selected"
|
||||
image_unselected="PushButton_Off"
|
||||
chrome="true"
|
||||
tool_tip="Reload page"
|
||||
follows="left|top"
|
||||
height="22"
|
||||
layout="topleft"
|
||||
left="51"
|
||||
name="reload"
|
||||
top_delta="0"
|
||||
width="22">
|
||||
<button.commit_callback
|
||||
function="WebContent.Reload" />
|
||||
</button>
|
||||
<combo_box
|
||||
allow_text_entry="true"
|
||||
follows="left|top|right"
|
||||
tab_group="1"
|
||||
height="22"
|
||||
layout="topleft"
|
||||
left_pad="4"
|
||||
max_chars="1024"
|
||||
name="address"
|
||||
combo_editor.select_on_focus="true"
|
||||
tool_tip="Enter URL here"
|
||||
top_delta="0"
|
||||
width="672">
|
||||
<combo_box.commit_callback
|
||||
function="WebContent.EnterAddress" />
|
||||
</combo_box>
|
||||
<icon
|
||||
name="media_secure_lock_flag"
|
||||
height="16"
|
||||
follows="top|left"
|
||||
image_name="Lock2"
|
||||
layout="topleft"
|
||||
left_delta="2"
|
||||
top_delta="2"
|
||||
visible="false"
|
||||
tool_tip="Secured Browsing"
|
||||
width="16" />
|
||||
<button
|
||||
image_overlay="ExternalBrowser_Off"
|
||||
image_disabled="PushButton_Disabled"
|
||||
image_disabled_selected="PushButton_Disabled"
|
||||
image_selected="PushButton_Selected"
|
||||
image_unselected="PushButton_Off"
|
||||
chrome="true"
|
||||
tool_tip="Open current URL in your desktop browser"
|
||||
follows="right|top"
|
||||
enabled="true"
|
||||
height="22"
|
||||
layout="topleft"
|
||||
name="popexternal"
|
||||
right="770"
|
||||
top_delta="-2"
|
||||
width="22">
|
||||
<button.commit_callback
|
||||
function="WebContent.PopExternal" />
|
||||
</button>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
height="40"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
name="external_controls"
|
||||
top_delta="0"
|
||||
auto_resize="true"
|
||||
width="585">
|
||||
<web_browser
|
||||
bottom="-2"
|
||||
follows="all"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="marketplace_contents"
|
||||
top="0"/>
|
||||
</layout_panel>
|
||||
<layout_panel name="status_bar"
|
||||
height="23"
|
||||
auto_resize="false">
|
||||
<text
|
||||
type="string"
|
||||
length="200"
|
||||
follows="bottom|left"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
name="statusbartext"
|
||||
parse_urls="false"
|
||||
text_color="0.4 0.4 0.4 1"
|
||||
top_pad="3"
|
||||
width="495"/>
|
||||
<progress_bar
|
||||
color_bar="0.3 1.0 0.3 1"
|
||||
follows="bottom|right"
|
||||
height="16"
|
||||
top_delta="-1"
|
||||
left_pad="24"
|
||||
layout="topleft"
|
||||
name="statusbarprogress"
|
||||
width="64"/>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -1,26 +1,202 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater
|
||||
positioning="cascading"
|
||||
legacy_header_height="225"
|
||||
can_minimize="true"
|
||||
can_close="true"
|
||||
can_resize="true"
|
||||
min_height="800"
|
||||
min_width="800"
|
||||
height="800"
|
||||
layout="topleft"
|
||||
name="Search"
|
||||
single_instance="true"
|
||||
help_topic="search"
|
||||
save_rect="true"
|
||||
save_visibility="true"
|
||||
title="Search"
|
||||
width="800">
|
||||
<web_browser
|
||||
top="25"
|
||||
height="775"
|
||||
width="800"
|
||||
follows="all"
|
||||
name="search_contents"
|
||||
trusted_content="true"/>
|
||||
legacy_header_height="18"
|
||||
can_minimize="true"
|
||||
can_close="true"
|
||||
can_resize="true"
|
||||
height="775"
|
||||
layout="topleft"
|
||||
min_height="500"
|
||||
min_width="600"
|
||||
name="Search"
|
||||
save_rect="true"
|
||||
single_instance="true"
|
||||
save_visibility="true"
|
||||
title="SEARCH"
|
||||
tab_stop="true"
|
||||
width="780">
|
||||
<layout_stack
|
||||
bottom="775"
|
||||
follows="left|right|top|bottom"
|
||||
layout="topleft"
|
||||
left="5"
|
||||
animate="false"
|
||||
name="stack1"
|
||||
orientation="vertical"
|
||||
top="20"
|
||||
width="770">
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
default_tab_group="1"
|
||||
height="22"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
min_height="20"
|
||||
name="nav_controls"
|
||||
top="400"
|
||||
width="770">
|
||||
<button
|
||||
image_overlay="Arrow_Left_Off"
|
||||
image_disabled="PushButton_Disabled"
|
||||
image_disabled_selected="PushButton_Disabled"
|
||||
image_selected="PushButton_Selected"
|
||||
image_unselected="PushButton_Off"
|
||||
chrome="true"
|
||||
hover_glow_amount="0.15"
|
||||
tool_tip="Navigate back"
|
||||
follows="left|top"
|
||||
height="22"
|
||||
layout="topleft"
|
||||
left="1"
|
||||
name="back"
|
||||
top="0"
|
||||
width="22">
|
||||
<button.commit_callback
|
||||
function="WebContent.Back" />
|
||||
</button>
|
||||
<button
|
||||
image_overlay="Arrow_Right_Off"
|
||||
image_disabled="PushButton_Disabled"
|
||||
image_disabled_selected="PushButton_Disabled"
|
||||
image_selected="PushButton_Selected"
|
||||
image_unselected="PushButton_Off"
|
||||
chrome="true"
|
||||
tool_tip="Navigate forward"
|
||||
follows="left|top"
|
||||
height="22"
|
||||
layout="topleft"
|
||||
left="27"
|
||||
name="forward"
|
||||
top_delta="0"
|
||||
width="22">
|
||||
<button.commit_callback
|
||||
function="WebContent.Forward" />
|
||||
</button>
|
||||
<button
|
||||
image_overlay="Stop_Off"
|
||||
image_disabled="PushButton_Disabled"
|
||||
image_disabled_selected="PushButton_Disabled"
|
||||
image_selected="PushButton_Selected"
|
||||
image_unselected="PushButton_Off"
|
||||
chrome="true"
|
||||
tool_tip="Stop navigation"
|
||||
enabled="true"
|
||||
follows="left|top"
|
||||
height="22"
|
||||
layout="topleft"
|
||||
left="51"
|
||||
name="stop"
|
||||
top_delta="0"
|
||||
width="22">
|
||||
<button.commit_callback
|
||||
function="WebContent.Stop" />
|
||||
</button>
|
||||
<button
|
||||
image_overlay="Refresh_Off"
|
||||
image_disabled="PushButton_Disabled"
|
||||
image_disabled_selected="PushButton_Disabled"
|
||||
image_selected="PushButton_Selected"
|
||||
image_unselected="PushButton_Off"
|
||||
chrome="true"
|
||||
tool_tip="Reload page"
|
||||
follows="left|top"
|
||||
height="22"
|
||||
layout="topleft"
|
||||
left="51"
|
||||
name="reload"
|
||||
top_delta="0"
|
||||
width="22">
|
||||
<button.commit_callback
|
||||
function="WebContent.Reload" />
|
||||
</button>
|
||||
<combo_box
|
||||
allow_text_entry="true"
|
||||
follows="left|top|right"
|
||||
tab_group="1"
|
||||
height="22"
|
||||
layout="topleft"
|
||||
left_pad="4"
|
||||
max_chars="1024"
|
||||
name="address"
|
||||
combo_editor.select_on_focus="true"
|
||||
tool_tip="Enter URL here"
|
||||
top_delta="0"
|
||||
width="672">
|
||||
<combo_box.commit_callback
|
||||
function="WebContent.EnterAddress" />
|
||||
</combo_box>
|
||||
<icon
|
||||
name="media_secure_lock_flag"
|
||||
height="16"
|
||||
follows="top|left"
|
||||
image_name="Lock2"
|
||||
layout="topleft"
|
||||
left_delta="2"
|
||||
top_delta="2"
|
||||
visible="false"
|
||||
tool_tip="Secured Browsing"
|
||||
width="16" />
|
||||
<button
|
||||
image_overlay="ExternalBrowser_Off"
|
||||
image_disabled="PushButton_Disabled"
|
||||
image_disabled_selected="PushButton_Disabled"
|
||||
image_selected="PushButton_Selected"
|
||||
image_unselected="PushButton_Off"
|
||||
chrome="true"
|
||||
tool_tip="Open current URL in your desktop browser"
|
||||
follows="right|top"
|
||||
enabled="true"
|
||||
height="22"
|
||||
layout="topleft"
|
||||
name="popexternal"
|
||||
right="770"
|
||||
top_delta="-2"
|
||||
width="22">
|
||||
<button.commit_callback
|
||||
function="WebContent.PopExternal" />
|
||||
</button>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
height="40"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
name="external_controls"
|
||||
top_delta="0"
|
||||
auto_resize="true"
|
||||
width="585">
|
||||
<web_browser
|
||||
bottom="-2"
|
||||
follows="all"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
trusted_content="true"
|
||||
name="search_contents"
|
||||
top="0"/>
|
||||
</layout_panel>
|
||||
<layout_panel name="status_bar"
|
||||
height="23"
|
||||
auto_resize="false">
|
||||
<text
|
||||
type="string"
|
||||
length="200"
|
||||
follows="bottom|left"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
name="statusbartext"
|
||||
parse_urls="false"
|
||||
text_color="0.4 0.4 0.4 1"
|
||||
top_pad="3"
|
||||
width="495"/>
|
||||
<progress_bar
|
||||
color_bar="0.3 1.0 0.3 1"
|
||||
follows="bottom|right"
|
||||
height="16"
|
||||
top_delta="-1"
|
||||
left_pad="24"
|
||||
layout="topleft"
|
||||
name="statusbarprogress"
|
||||
width="64"/>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -2331,6 +2331,25 @@ Could not open uploaded sound file for reading:
|
|||
<tag>fail</tag>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="ModelUploaderMissingPhysicsApple"
|
||||
type="alertmodal">
|
||||
Model upload is not yet available on Apple Silicon, but will be supported in an upcoming release.
|
||||
|
||||
Workaround: Right-click the Second Life app in Finder, select
|
||||
"Get Info", then check "Open using Rosetta"
|
||||
<tag>fail</tag>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="ModelUploaderMissingPhysics"
|
||||
type="alertmodal">
|
||||
Physics library is not present, some of the model uploader's functionality might not work or might not work correctly.
|
||||
<tag>fail</tag>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="SoundFileNotRIFF"
|
||||
|
|
|
|||
|
|
@ -1588,12 +1588,6 @@ class Darwin_x86_64_Manifest(ViewerManifest):
|
|||
self.path("*.dylib")
|
||||
self.path("plugins.dat")
|
||||
|
||||
# do this install_name_tool *after* media plugin is copied over
|
||||
dylibexecutablepath = self.dst_path_of('llplugin/media_plugin_cef.dylib')
|
||||
self.run_command_shell('install_name_tool -change '
|
||||
'"@rpath/Frameworks/Chromium Embedded Framework.framework/Chromium Embedded Framework" '
|
||||
'"@executable_path/../Frameworks/Chromium Embedded Framework.framework/Chromium Embedded Framework" "%s"' % dylibexecutablepath)
|
||||
|
||||
# NOTE: the -S argument to strip causes it to keep enough info for
|
||||
# annotated backtraces (i.e. function names in the crash log). 'strip' with no
|
||||
# arguments yields a slightly smaller binary but makes crash logs mostly useless.
|
||||
|
|
@ -1711,52 +1705,56 @@ class Darwin_x86_64_Manifest(ViewerManifest):
|
|||
if identity == '':
|
||||
identity = 'Developer ID Application'
|
||||
|
||||
ad_hoc_sign = False
|
||||
# Look for an environment variable set via build.sh when running in Team City.
|
||||
try:
|
||||
build_secrets_checkout = os.environ['build_secrets_checkout']
|
||||
except KeyError:
|
||||
pass
|
||||
else:
|
||||
# variable found so use it to unlock keychain followed by codesign
|
||||
home_path = os.environ['HOME']
|
||||
keychain_pwd_path = os.path.join(build_secrets_checkout,'code-signing-osx','password.txt')
|
||||
keychain_pwd = open(keychain_pwd_path).read().rstrip()
|
||||
ad_hoc_sign = True # A minimum of ad-hoc signing is a requirement for arm64 builds to behave correctly
|
||||
identity = '-' # Ad-hoc identity
|
||||
finally:
|
||||
if not ad_hoc_sign:
|
||||
# variable found so use it to unlock keychain followed by codesign
|
||||
home_path = os.environ['HOME']
|
||||
keychain_pwd_path = os.path.join(build_secrets_checkout,'code-signing-osx','password.txt')
|
||||
keychain_pwd = open(keychain_pwd_path).read().rstrip()
|
||||
|
||||
# Note: As of macOS Sierra, keychains are created with
|
||||
# names postfixed with '-db' so for example, the SL
|
||||
# Viewer keychain would by default be found in
|
||||
# ~/Library/Keychains/viewer.keychain-db instead of
|
||||
# just ~/Library/Keychains/viewer.keychain in
|
||||
# earlier versions.
|
||||
#
|
||||
# Because we have old OS files from previous
|
||||
# versions of macOS on the build hosts, the
|
||||
# configurations are different on each host. Some
|
||||
# have viewer.keychain, some have viewer.keychain-db
|
||||
# and some have both. As you can see in the line
|
||||
# below, this script expects the Linden Developer
|
||||
# cert/keys to be in viewer.keychain.
|
||||
#
|
||||
# To correctly sign builds you need to make sure
|
||||
# ~/Library/Keychains/viewer.keychain exists on the
|
||||
# host and that it contains the correct cert/key. If
|
||||
# a build host is set up with a clean version of
|
||||
# macOS Sierra (or later) then you will need to
|
||||
# change this line (and the one for 'codesign'
|
||||
# command below) to point to right place or else
|
||||
# pull in the cert/key into the default viewer
|
||||
# keychain 'viewer.keychain-db' and export it to
|
||||
# 'viewer.keychain'
|
||||
viewer_keychain = os.path.join(home_path, 'Library',
|
||||
'Keychains', 'viewer.keychain')
|
||||
if not os.path.isfile( viewer_keychain ):
|
||||
viewer_keychain += "-db"
|
||||
# Note: As of macOS Sierra, keychains are created with
|
||||
# names postfixed with '-db' so for example, the SL
|
||||
# Viewer keychain would by default be found in
|
||||
# ~/Library/Keychains/viewer.keychain-db instead of
|
||||
# just ~/Library/Keychains/viewer.keychain in
|
||||
# earlier versions.
|
||||
#
|
||||
# Because we have old OS files from previous
|
||||
# versions of macOS on the build hosts, the
|
||||
# configurations are different on each host. Some
|
||||
# have viewer.keychain, some have viewer.keychain-db
|
||||
# and some have both. As you can see in the line
|
||||
# below, this script expects the Linden Developer
|
||||
# cert/keys to be in viewer.keychain.
|
||||
#
|
||||
# To correctly sign builds you need to make sure
|
||||
# ~/Library/Keychains/viewer.keychain exists on the
|
||||
# host and that it contains the correct cert/key. If
|
||||
# a build host is set up with a clean version of
|
||||
# macOS Sierra (or later) then you will need to
|
||||
# change this line (and the one for 'codesign'
|
||||
# command below) to point to right place or else
|
||||
# pull in the cert/key into the default viewer
|
||||
# keychain 'viewer.keychain-db' and export it to
|
||||
# 'viewer.keychain'
|
||||
viewer_keychain = os.path.join(home_path, 'Library',
|
||||
'Keychains', 'viewer.keychain')
|
||||
if not os.path.isfile( viewer_keychain ):
|
||||
viewer_keychain += "-db"
|
||||
|
||||
if not os.path.isfile( viewer_keychain ):
|
||||
raise "No keychain named viewer found"
|
||||
|
||||
self.run_command(['security', 'unlock-keychain',
|
||||
'-p', keychain_pwd, viewer_keychain])
|
||||
|
||||
if not os.path.isfile( viewer_keychain ):
|
||||
raise "No keychain named viewer found"
|
||||
|
||||
self.run_command(['security', 'unlock-keychain',
|
||||
'-p', keychain_pwd, viewer_keychain])
|
||||
sign_retry_wait=15
|
||||
resources = app_in_dmg + "/Contents/Resources/"
|
||||
plain_sign = glob.glob(resources + "llplugin/*.dylib")
|
||||
|
|
@ -1766,7 +1764,7 @@ class Darwin_x86_64_Manifest(ViewerManifest):
|
|||
# We could selectively sign those, or repackage them and then sign them. For an easy clean sweet we just resign them al
|
||||
plain_sign += glob.glob(resources + "*.dylib")
|
||||
plain_sign += glob.glob(resources + "llplugin/lib/*.dylib")
|
||||
plain_sign += glob.glob( app_in_dmg + "/Contents/Frameworks/Chromium Embedded Framework.framework/Libraries/*.dylib" )
|
||||
plain_sign += glob.glob(resources + "SLPlugin.app/Contents/Frameworks/Chromium Embedded Framework.framework/Libraries/*.dylib")
|
||||
|
||||
deep_sign = [
|
||||
# <FS:ND> Firestorm does not ship SLVersionChecker
|
||||
|
|
@ -1785,24 +1783,28 @@ class Darwin_x86_64_Manifest(ViewerManifest):
|
|||
try:
|
||||
# Note: See blurb above about names of keychains
|
||||
for signee in plain_sign:
|
||||
self.run_command(
|
||||
['codesign',
|
||||
'--force',
|
||||
'--timestamp',
|
||||
'--keychain', viewer_keychain,
|
||||
'--sign', identity,
|
||||
signee])
|
||||
args = [
|
||||
'codesign',
|
||||
'--force',
|
||||
'--timestamp'
|
||||
]
|
||||
if not ad_hoc_sign:
|
||||
args += ['--keychain', viewer_keychain]
|
||||
args += ['--sign', identity, signee]
|
||||
self.run_command(args)
|
||||
for signee in deep_sign:
|
||||
self.run_command(
|
||||
['codesign',
|
||||
'--verbose',
|
||||
'--deep',
|
||||
'--force',
|
||||
'--entitlements', self.src_path_of("slplugin.entitlements"),
|
||||
'--options', 'runtime',
|
||||
'--keychain', viewer_keychain,
|
||||
'--sign', identity,
|
||||
signee])
|
||||
args = [
|
||||
'codesign',
|
||||
'--verbose',
|
||||
'--deep',
|
||||
'--force',
|
||||
'--entitlements', self.src_path_of("slplugin.entitlements"),
|
||||
'--options', 'runtime'
|
||||
]
|
||||
if not ad_hoc_sign:
|
||||
args += ['--keychain', viewer_keychain]
|
||||
args += ['--sign', identity, signee]
|
||||
self.run_command(args)
|
||||
break # if no exception was raised, the codesign worked
|
||||
except ManifestError as err:
|
||||
# 'err' goes out of scope
|
||||
|
|
@ -1810,10 +1812,12 @@ class Darwin_x86_64_Manifest(ViewerManifest):
|
|||
else:
|
||||
print("Maximum codesign attempts exceeded; giving up", file=sys.stderr)
|
||||
raise sign_failed
|
||||
# <FS:ND> This fails sometimes and works other times. Even when notarization (down below) is a success
|
||||
# Remove it for now and investigate after we did notarize a few times
|
||||
#self.run_command(['spctl', '-a', '-texec', '-vvvv', app_in_dmg])
|
||||
self.run_command([self.src_path_of("installers/darwin/apple-notarize.sh"), app_in_dmg])
|
||||
|
||||
if not ad_hoc_sign:
|
||||
# <FS:ND> This fails sometimes and works other times. Even when notarization (down below) is a success
|
||||
# Remove it for now and investigate after we did notarize a few times
|
||||
#self.run_command(['spctl', '-a', '-texec', '-vvvv', app_in_dmg])
|
||||
self.run_command([self.src_path_of("installers/darwin/apple-notarize.sh"), app_in_dmg])
|
||||
|
||||
finally:
|
||||
# Unmount the image even if exceptions from any of the above
|
||||
|
|
|
|||
Loading…
Reference in New Issue