diff options
Diffstat (limited to 'indra')
36 files changed, 594 insertions, 274 deletions
diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index 90ca9866bb..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() 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 3f9134cb8f..9746704907 100644 --- a/indra/cmake/Boost.cmake +++ b/indra/cmake/Boost.cmake @@ -28,27 +28,29 @@ elseif (WINDOWS) 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 ) @@ -163,3 +165,5 @@ target_link_libraries(ll::boost INTERFACE 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 2c71074eb8..489caa5d52 100644 --- a/indra/cmake/CEFPlugin.cmake +++ b/indra/cmake/CEFPlugin.cmake @@ -1,12 +1,11 @@ # -*- cmake -*- include(Linking) include(Prebuilt) -include(UnixInstall) include_guard() add_library( ll::cef INTERFACE IMPORTED ) -if (${LINUX_DISTRO} MATCHES arch) +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 @@ -30,45 +29,51 @@ if (${LINUX_DISTRO} MATCHES arch) DESTINATION ${ARCH_PREBUILT_DIRS_RELEASE} ) endif () - if (NOT EXISTS ${CMAKE_BINARY_DIR}/dullahan-1.31.0-CEF_148.0.9.tar.gz) + 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.31.0-CEF_148.0.9.tar.gz - ${CMAKE_BINARY_DIR}/dullahan-1.31.0-CEF_148.0.9.tar.gz + 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.31.0-CEF_148.0.9.tar.gz + 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.31.0-CEF_148.0.9 - BINARY_DIR ${CMAKE_BINARY_DIR}/dullahan-1.31.0-CEF_148.0.9 + 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.31.0-CEF_148.0.9 - -DCEF_LIBRARY_RELEASE:FILEPATH=${INSTALL_PREFIX}/${_LIB}/cef/libcef.so + -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.31.0-CEF_148.0.9/dullahan_host + 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.31.0-CEF_148.0.9/libdullahan.a + 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.31.0-CEF_148.0.9/src/dullahan.h - ${CMAKE_BINARY_DIR}/dullahan-1.31.0-CEF_148.0.9/src/dullahan_version.h + ${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") @@ -118,7 +123,7 @@ elseif (${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" ) @@ -128,6 +133,12 @@ elseif (${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} @@ -173,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 @@ -190,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 arch OR (${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) @@ -268,10 +283,34 @@ elseif (DARWIN) -output libdullahan.a WORKING_DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE} ) - elseif (LINUX) - if (${LINUX_DISTRO} MATCHES arch OR (${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 68e6f59ecb..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.9.15780.zip + INPUT ${PREFIX_PATH}/DiscordSocialSdk-1.10.18247.zip DESTINATION ${CMAKE_BINARY_DIR} ) file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/include/discord_sdk) @@ -45,6 +50,12 @@ if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKIN 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 957c220bc7..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 OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64 OR ($ENV{MSYSTEM_CARCH} MATCHES aarch64)) +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 523dbc37de..144f92118b 100644 --- a/indra/cmake/LLPrimitive.cmake +++ b/indra/cmake/LLPrimitive.cmake @@ -18,57 +18,96 @@ 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 OR WINDOWS) +#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}) + 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) @@ -84,98 +123,71 @@ if (TRUE) 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 04e1825014..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) OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64) +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 1c53b0263c..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,6 +84,8 @@ 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/${VIEWER_BINARY_NAME}) elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR (${LINUX_DISTRO} MATCHES gentoo)) 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 4736eef420..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 arch OR (${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,18 +157,33 @@ if (INSTALL) DESTINATION ${_LIB} ) elseif (LINUX) - if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) + 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}/${VIEWER_BINARY_NAME}) else () 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} ) + 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 @@ -172,27 +197,16 @@ if (INSTALL) DESTINATION libexec/${VIEWER_BINARY_NAME} ) endif () - if (NOT (${LINUX_DISTRO} MATCHES arch OR (${LINUX_DISTRO} MATCHES fedora))) - file(MAKE_DIRECTORY ${AUTOBUILD_INSTALL_DIR}/lib/release/${VIEWER_BINARY_NAME}) - file(CREATE_LINK - "../libGLESv2.so" - "${AUTOBUILD_INSTALL_DIR}/lib/release/${VIEWER_BINARY_NAME}/libGLESv2.so" - SYMBOLIC - ) - file(CREATE_LINK - "../libvulkan.so.1" - "${AUTOBUILD_INSTALL_DIR}/lib/release/${VIEWER_BINARY_NAME}/libvulkan.so.1" - SYMBOLIC - ) + 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 - ${ARCH_PREBUILT_DIRS_RELEASE}/libEGL.so + ${ARCH_PREBUILT_DIRS_RELEASE}/libvulkan.so.1 ${ARCH_PREBUILT_DIRS_RELEASE}/v8_context_snapshot.bin ${ARCH_PREBUILT_DIRS_RELEASE}/vk_swiftshader_icd.json - ${ARCH_PREBUILT_DIRS_RELEASE}/${VIEWER_BINARY_NAME}/libGLESv2.so - ${ARCH_PREBUILT_DIRS_RELEASE}/${VIEWER_BINARY_NAME}/libvulkan.so.1 ${AUTOBUILD_INSTALL_DIR}/resources/chrome_100_percent.pak ${AUTOBUILD_INSTALL_DIR}/resources/chrome_200_percent.pak ${AUTOBUILD_INSTALL_DIR}/resources/icudtl.dat diff --git a/indra/media_plugins/libvlc/CMakeLists.txt b/indra/media_plugins/libvlc/CMakeLists.txt index 96790a8037..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,6 +94,22 @@ 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/${VIEWER_BINARY_NAME}) elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR (${LINUX_DISTRO} MATCHES gentoo)) diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 31345d15fb..d42561d05e 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1874,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) @@ -2362,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 @@ -2380,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)) diff --git a/indra/newview/FixBundle.cmake.in b/indra/newview/FixBundle.cmake.in index 35f5e12331..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.12.1.dylib + COMMAND lipo libexpat.1.12.2.dylib -thin ${CMAKE_OSX_ARCHITECTURES} - -output libexpat.1.12.1.dylib + -output libexpat.1.12.2.dylib COMMAND lipo libfreetype.6.dylib -thin ${CMAKE_OSX_ARCHITECTURES} -output libfreetype.6.dylib diff --git a/indra/newview/FixPackage.cmake.in b/indra/newview/FixPackage.cmake.in index 7e3e610062..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.12.1.dylib + COMMAND lipo libexpat.1.12.2.dylib -thin ${CMAKE_OSX_ARCHITECTURES} - -output libexpat.1.12.1.dylib + -output libexpat.1.12.2.dylib COMMAND lipo libfreetype.6.dylib -thin ${CMAKE_OSX_ARCHITECTURES} -output libfreetype.6.dylib diff --git a/indra/newview/PKGBUILD.in b/indra/newview/PKGBUILD.in index b2830ed145..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 cef 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 index 4a4df64415..eb6ea1a35d 100644 --- a/indra/newview/SignBundle.cmake.in +++ b/indra/newview/SignBundle.cmake.in @@ -22,7 +22,7 @@ execute_process( Frameworks/libbrotlidec.1.2.0.dylib Frameworks/libbz2.1.0.8.dylib Frameworks/libdiscord_partner_sdk.dylib - Frameworks/libexpat.1.12.1.dylib + Frameworks/libexpat.1.12.2.dylib Frameworks/libfreetype.6.dylib Frameworks/libhunspell-1.7.0.dylib Frameworks/libiconv.2.dylib diff --git a/indra/newview/SignPackage.cmake.in b/indra/newview/SignPackage.cmake.in index e8d09d7602..9b5be4a7fd 100644 --- a/indra/newview/SignPackage.cmake.in +++ b/indra/newview/SignPackage.cmake.in @@ -22,7 +22,7 @@ execute_process( Frameworks/libbrotlidec.1.2.0.dylib Frameworks/libbz2.1.0.8.dylib Frameworks/libdiscord_partner_sdk.dylib - Frameworks/libexpat.1.12.1.dylib + Frameworks/libexpat.1.12.2.dylib Frameworks/libfreetype.6.dylib Frameworks/libhunspell-1.7.0.dylib Frameworks/libiconv.2.dylib diff --git a/indra/newview/ViewerInstall.cmake b/indra/newview/ViewerInstall.cmake index 46b2967f2c..440c72c561 100644 --- a/indra/newview/ViewerInstall.cmake +++ b/indra/newview/ViewerInstall.cmake @@ -226,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 @@ -253,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) @@ -292,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/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/llappviewer.cpp b/indra/newview/llappviewer.cpp index 719447b920..4c0de50223 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -3406,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; 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/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 66ca722b88..b491701a36 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -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 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> |
