diff options
| author | Erik Kundiman <erik@megapahit.org> | 2026-06-22 08:34:39 +0800 |
|---|---|---|
| committer | Erik Kundiman <erik@megapahit.org> | 2026-06-22 11:25:21 +0800 |
| commit | ee87dd9f21e0dcd5a2f3a78586e5ae5d2ba592d5 (patch) | |
| tree | 93ca93a3da687423f09218477fd2ede4c82f0fcb | |
| parent | 341ae1a286c722f24066b2cb2a3755d19c3a9866 (diff) | |
Still uses prebuilt GLU, could be improved by using the glu shared
module.
Still uses prebuilt OpenAL, could be improved by separating the
ALUT dependency (which isn't available on the runtime) from it,
so we could use runtime's OpenAL.
Still uses prebuilt LibXML2, could be improved by separating the
Minizip & ColladaDOM from it (which aren't available on the
runtime) from it, so we could use runtime's LibXML2 but have
ColladaDOM built against it (and a still non-runtime Minizip).
Still uses FLTK 1.3, when I tried using 1.4, it still had linking
errors (might need to just add Cairo libraries to the
target_link_libraries).
VLC plugins are installed in vlc/plugins path relative to the vlc
& vlccore libraries, the way they are in the distro I got the
binaries from (Debian), cause I think it's the libraries that are
compiled with that path.
Still uses prebuilt dependencies in general, could be improved by
having them as modules to be built.
_FORTIFY_SOURCE needs to be skipped to avoid redefinition cause
Flatpak build system already defines it.
The conditionals for deciding installation paths need to be
reorganised to accomodate installation that doesn't require an
encapsulating namespace (because the installed files are already
encapsulated in the app sandbox).
The library directory naming scheme used here is lib64.
The libGLESv2.so & libvulkan.so.1 installed are still copies, not
links yet, because I'm still not familiar yet with the runtime
hierarchies (they might reside just in /usr/lib/x86_64-linux-gnu).
| -rw-r--r-- | autobuild.xml | 22 | ||||
| -rw-r--r-- | indra/cmake/00-Common.cmake | 2 | ||||
| -rw-r--r-- | indra/cmake/APR.cmake | 27 | ||||
| -rw-r--r-- | indra/cmake/Boost.cmake | 40 | ||||
| -rw-r--r-- | indra/cmake/CEFPlugin.cmake | 15 | ||||
| -rw-r--r-- | indra/cmake/GLM.cmake | 2 | ||||
| -rw-r--r-- | indra/cmake/LLPrimitive.cmake | 8 | ||||
| -rw-r--r-- | indra/cmake/LibVLCPlugin.cmake | 9 | ||||
| -rw-r--r-- | indra/cmake/OPENAL.cmake | 16 | ||||
| -rw-r--r-- | indra/cmake/OpenGL.cmake | 5 | ||||
| -rw-r--r-- | indra/cmake/UI.cmake | 5 | ||||
| -rw-r--r-- | indra/cmake/UnixInstall.cmake | 28 | ||||
| -rw-r--r-- | indra/cmake/ViewerMiscLibs.cmake | 2 | ||||
| -rw-r--r-- | indra/llplugin/slplugin/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | indra/llrender/CMakeLists.txt | 7 | ||||
| -rw-r--r-- | indra/llwebrtc/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | indra/media_plugins/cef/CMakeLists.txt | 57 | ||||
| -rw-r--r-- | indra/media_plugins/libvlc/CMakeLists.txt | 16 | ||||
| -rw-r--r-- | indra/newview/ViewerInstall.cmake | 38 |
19 files changed, 210 insertions, 93 deletions
diff --git a/autobuild.xml b/autobuild.xml index 571da61367..fe9f9d6aaa 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -823,6 +823,20 @@ <key>source_type</key> <string>git</string> </map> + <key>glu</key> + <map> + <key>platforms</key> + <map> + <key>linux64</key> + <map> + <key>archive</key> + <map> + <key>url</key> + <string>https://megapahit.net/downloads/glu-9.0.2-linux64.tar.zst</string> + </map> + </map> + </map> + </map> <key>gstreamer</key> <map> <key>platforms</key> @@ -2609,6 +2623,14 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <key>name</key> <string>darwin64</string> </map> + <key>linux64</key> + <map> + <key>archive</key> + <map> + <key>url</key> + <string>https://megapahit.net/downloads/vlc-bin-3.0.23-linux64.tar.zst</string> + </map> + </map> <key>windows64</key> <map> <key>archive</key> diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index 90ca9866bb..4b007ceec9 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 USE_FLATPAK ) add_compile_definitions( _FORTIFY_SOURCE=2 ) endif() diff --git a/indra/cmake/APR.cmake b/indra/cmake/APR.cmake index 4ce0d47f7f..b7ada1cfb1 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 USE_FLATPAK) + 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..a6e60aa95b 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 USE_FLATPAK) 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 USE_FLATPAK) + 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..2546ec7993 100644 --- a/indra/cmake/CEFPlugin.cmake +++ b/indra/cmake/CEFPlugin.cmake @@ -1,7 +1,6 @@ # -*- cmake -*- include(Linking) include(Prebuilt) -include(UnixInstall) include_guard() add_library( ll::cef INTERFACE IMPORTED ) @@ -50,7 +49,7 @@ if (${LINUX_DISTRO} MATCHES arch) -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_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" ) @@ -118,7 +117,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" ) @@ -198,8 +197,11 @@ execute_process( if (${LINUX_DISTRO} MATCHES arch 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 () execute_process( - COMMAND patchelf --add-rpath ${INSTALL_PREFIX}/${_LIB}/cef bin/release/dullahan_host + COMMAND patchelf --add-rpath ${INSTALL_PREFIX}/lib${LIB_SUFFIX}/cef bin/release/dullahan_host WORKING_DIRECTORY ${LIBS_PREBUILT_DIR} ) endif () @@ -271,7 +273,10 @@ elseif (DARWIN) elseif (LINUX) if (${LINUX_DISTRO} MATCHES arch OR (${LINUX_DISTRO} MATCHES fedora)) - target_link_directories( ll::cef INTERFACE ${INSTALL_PREFIX}/${_LIB}/cef ) + if (${LINUX_DISTRO} MATCHES fedora) + set(LIB_SUFFIX ${ADDRESS_SIZE}) + endif () + target_link_directories( ll::cef INTERFACE ${INSTALL_PREFIX}/lib${LIB_SUFFIX}/cef ) endif () target_link_libraries( ll::cef INTERFACE libdullahan.a diff --git a/indra/cmake/GLM.cmake b/indra/cmake/GLM.cmake index 957c220bc7..d804774ff6 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 (USE_FLATPAK 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..eb1f23b2a3 100644 --- a/indra/cmake/LLPrimitive.cmake +++ b/indra/cmake/LLPrimitive.cmake @@ -18,7 +18,7 @@ if( USE_CONAN ) "${CONAN_INCLUDE_DIRS_COLLADADOM}/collada-dom/1.4/" ) endif() -if (TRUE) +if (NOT USE_FLATPAK) include(FindPkgConfig) pkg_check_modules(Minizip REQUIRED minizip) if (${LINUX_DISTRO} MATCHES arch OR (${LINUX_DISTRO} MATCHES gentoo) OR DARWIN OR WINDOWS) @@ -147,9 +147,9 @@ if (TRUE) file(WRITE ${PREBUILD_TRACKING_DIR}/colladadom_installed "${colladadom_installed}") endif () -else (TRUE) +else (NOT USE_FLATPAK) -use_system_binary( colladadom ) +#use_system_binary( colladadom ) use_prebuilt_binary(colladadom) use_prebuilt_binary(minizip-ng) # needed for colladadom @@ -175,7 +175,7 @@ if (WINDOWS) target_link_libraries( ll::libxml INTERFACE Bcrypt.lib) endif() -endif (TRUE) +endif (NOT USE_FLATPAK) 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..e8cd051021 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 USE_FLATPAK) 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/OPENAL.cmake b/indra/cmake/OPENAL.cmake index 1b7f9b9071..3a36c64fd3 100644 --- a/indra/cmake/OPENAL.cmake +++ b/indra/cmake/OPENAL.cmake @@ -19,13 +19,15 @@ 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 (NOT USE_FLATPAK) + target_compile_definitions( ll::openal INTERFACE LL_OPENAL=1) + include(FindPkgConfig) + pkg_check_modules(Openal REQUIRED freealut) + target_include_directories(ll::openal SYSTEM INTERFACE ${Openal_INCLUDE_DIRS}) + target_link_directories(ll::openal INTERFACE ${Openal_LIBRARY_DIRS}) + target_link_libraries(ll::openal INTERFACE ${Openal_LIBRARIES}) + return () + endif () target_include_directories( ll::openal SYSTEM INTERFACE "${LIBS_PREBUILT_DIR}/include/AL") target_compile_definitions( ll::openal INTERFACE LL_OPENAL=1) diff --git a/indra/cmake/OpenGL.cmake b/indra/cmake/OpenGL.cmake index bf7cd8366a..5e00eff3b8 100644 --- a/indra/cmake/OpenGL.cmake +++ b/indra/cmake/OpenGL.cmake @@ -4,3 +4,8 @@ include(Variables) include(Prebuilt) include(FindOpenGL) +if (USE_FLATPAK) + 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..a5e6971248 100644 --- a/indra/cmake/UI.cmake +++ b/indra/cmake/UI.cmake @@ -6,6 +6,9 @@ include(GLIB) add_library( ll::uilibraries INTERFACE IMPORTED ) if (LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD) + if (USE_FLATPAK) + use_prebuilt_binary(fltk) + endif () target_compile_definitions(ll::uilibraries INTERFACE LL_FLTK=1 LL_X11=1 ) if( USE_CONAN ) @@ -51,7 +54,7 @@ if( WINDOWS ) ) endif() -if (FALSE) +if (USE_FLATPAK) target_include_directories( ll::uilibraries SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include ) diff --git a/indra/cmake/UnixInstall.cmake b/indra/cmake/UnixInstall.cmake index b82cbbcc2f..65170b5744 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 (USE_FLATPAK 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) - elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR (${LINUX_DISTRO} MATCHES gentoo)) + if (USE_FLATPAK) set(_LIB lib${ADDRESS_SIZE}) + 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) + 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 (USE_FLATPAK) + 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..aece8f834c 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 USE_FLATPAK) use_prebuilt_binary(nanosvg) endif () use_prebuilt_binary(viewer-fonts) diff --git a/indra/llplugin/slplugin/CMakeLists.txt b/indra/llplugin/slplugin/CMakeLists.txt index 38f4c92b09..2a6aa10165 100644 --- a/indra/llplugin/slplugin/CMakeLists.txt +++ b/indra/llplugin/slplugin/CMakeLists.txt @@ -69,6 +69,8 @@ endif () if (INSTALL) if (DARWIN OR WINDOWS) install(TARGETS ${PROJECT_NAME} DESTINATION .) + elseif (USE_FLATPAK) + 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..d7a1d76630 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 (USE_FLATPAK) + 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..761aab8a7a 100644 --- a/indra/llwebrtc/CMakeLists.txt +++ b/indra/llwebrtc/CMakeLists.txt @@ -76,6 +76,8 @@ endif (LL_TESTS) if (INSTALL) if (DARWIN) set(_LIB ../Frameworks) + elseif (USE_FLATPAK) + set(_LIB lib${ADDRESS_SIZE}) 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/media_plugins/cef/CMakeLists.txt b/indra/media_plugins/cef/CMakeLists.txt index 4736eef420..a3d36d0ed7 100644 --- a/indra/media_plugins/cef/CMakeLists.txt +++ b/indra/media_plugins/cef/CMakeLists.txt @@ -52,7 +52,10 @@ 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 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) @@ -147,14 +150,23 @@ if (INSTALL) DESTINATION ${_LIB} ) elseif (LINUX) - if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) + if (USE_FLATPAK) + set(_LIB lib${ADDRESS_SIZE}) + 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 (USE_FLATPAK) + 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} @@ -173,17 +185,6 @@ if (INSTALL) ) 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 - ) install( FILES ${ARCH_PREBUILT_DIRS_RELEASE}/libcef.so @@ -191,8 +192,6 @@ if (INSTALL) ${ARCH_PREBUILT_DIRS_RELEASE}/libEGL.so ${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 @@ -203,6 +202,32 @@ if (INSTALL) DIRECTORY ${AUTOBUILD_INSTALL_DIR}/resources/locales DESTINATION ${_LIB} ) + if (USE_FLATPAK) + install( + FILES + ${ARCH_PREBUILT_DIRS_RELEASE}/libGLESv2.so + ${ARCH_PREBUILT_DIRS_RELEASE}/libvulkan.so.1 + DESTINATION ${_LIB} + ) + else () + 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 + ) + install( + FILES + ${ARCH_PREBUILT_DIRS_RELEASE}/${VIEWER_BINARY_NAME}/libGLESv2.so + ${ARCH_PREBUILT_DIRS_RELEASE}/${VIEWER_BINARY_NAME}/libvulkan.so.1 + DESTINATION ${_LIB} + ) + endif () endif () elseif (WINDOWS) set(_LIB llplugin) diff --git a/indra/media_plugins/libvlc/CMakeLists.txt b/indra/media_plugins/libvlc/CMakeLists.txt index 96790a8037..3177b3298d 100644 --- a/indra/media_plugins/libvlc/CMakeLists.txt +++ b/indra/media_plugins/libvlc/CMakeLists.txt @@ -87,6 +87,22 @@ if (INSTALL) /Volumes/VLC\ media\ player/VLC.app/Contents/MacOS/lib/libvlccore.dylib DESTINATION ${_LIB}/plugins ) + elseif (USE_FLATPAK) + set(_LIB lib${ADDRESS_SIZE}) + 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/ViewerInstall.cmake b/indra/newview/ViewerInstall.cmake index 46b2967f2c..cce94b0d46 100644 --- a/indra/newview/ViewerInstall.cmake +++ b/indra/newview/ViewerInstall.cmake @@ -226,26 +226,42 @@ 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) - elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR (${LINUX_DISTRO} MATCHES gentoo)) + if (USE_FLATPAK) set(_LIB lib${ADDRESS_SIZE}) + 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) + 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_FLATPAK) + install( + FILES + ${ARCH_PREBUILT_DIRS_RELEASE}/libalut.so + ${ARCH_PREBUILT_DIRS_RELEASE}/libalut.so.0 + ${ARCH_PREBUILT_DIRS_RELEASE}/libalut.so.0.0.0 + ${ARCH_PREBUILT_DIRS_RELEASE}/libopenal.so + ${ARCH_PREBUILT_DIRS_RELEASE}/libopenal.so.1 + ${ARCH_PREBUILT_DIRS_RELEASE}/libopenal.so.1.24.2 + 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.34 + DESTINATION ${_LIB} + ) + endif () endif (LINUX) install(DIRECTORY skins app_settings fonts |
