diff options
| -rw-r--r-- | README.md | 2 | ||||
| -rw-r--r-- | indra/cmake/CEFPlugin.cmake | 74 | ||||
| -rw-r--r-- | indra/media_plugins/cef/CMakeLists.txt | 14 | ||||
| -rw-r--r-- | indra/newview/PKGBUILD.in | 2 |
4 files changed, 78 insertions, 14 deletions
@@ -19,7 +19,7 @@ $ cd build-`uname -s|tr '[:upper:]' '[:lower:]'`-`uname -m` ### Arch ``` -$ sudo pacman -S cmake base-devel patchelf python freealut apr-util boost fltk glm glu hunspell minizip nanosvg libnghttp2 openjpeg2 libpipewire sdl2 vlc libvorbis xxhash +$ sudo pacman -S cmake base-devel patchelf python freealut apr-util boost cef fltk glm glu hunspell minizip nanosvg libnghttp2 openjpeg2 libpipewire sdl2 vlc libvorbis xxhash $ export LL_BUILD="-O3 -std=c++20 -fPIC -DLL_LINUX=1" $ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DADDRESS_SIZE:STRING=64 -DUSE_OPENAL:BOOL=ON -DUSE_FMODSTUDIO:BOOL=OFF -DENABLE_MEDIA_PLUGINS:BOOL=ON -DLL_TESTS:BOOL=OFF -DNDOF:BOOL=ON -DROOT_PROJECT_NAME:STRING=Megapahit -DVIEWER_CHANNEL:STRING=Megapahit -DVIEWER_BINARY_NAME:STRING=megapahit -DBUILD_SHARED_LIBS:BOOL=OFF -DINSTALL:BOOL=ON -DPACKAGE:BOOL=ON -DCMAKE_INSTALL_PREFIX=/usr ../indra $ make -j`nproc` diff --git a/indra/cmake/CEFPlugin.cmake b/indra/cmake/CEFPlugin.cmake index ff3c28112e..117c83353e 100644 --- a/indra/cmake/CEFPlugin.cmake +++ b/indra/cmake/CEFPlugin.cmake @@ -6,7 +6,75 @@ include(UnixInstall) include_guard() add_library( ll::cef INTERFACE IMPORTED ) -if (${LINUX_DISTRO} MATCHES fedora) +if (${LINUX_DISTRO} MATCHES arch) + if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/dullahan_installed OR NOT ${dullahan_installed} EQUAL 0) + file( + COPY /usr/src/cef/libcef_dll + DESTINATION ${CMAKE_BINARY_DIR} + ) + execute_process( + COMMAND sed -i "s/macro(L/cmake_minimum_required(VERSION 3.28)\\nmacro(SET_LIBRARY_TARGET_PROPERTIES)\\nendmacro()\\nmacro(L/" CMakeLists.txt + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/libcef_dll + ) + try_compile(LIBCEF_DLL_RESULT + PROJECT libcef_dll + SOURCE_DIR ${CMAKE_BINARY_DIR}/libcef_dll + BINARY_DIR ${CMAKE_BINARY_DIR}/libcef_dll + CMAKE_FLAGS + -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} + "-DCMAKE_CXX_FLAGS:STRING=-I/usr/include/cef -I/usr/src/cef -fPIC" + ) + if (${LIBCEF_DLL_RESULT}) + file( + COPY ${CMAKE_BINARY_DIR}/libcef_dll/libcef_dll_wrapper.a + DESTINATION ${ARCH_PREBUILT_DIRS_RELEASE} + ) + endif () + if (NOT EXISTS ${CMAKE_BINARY_DIR}/dullahan-1.30.0-CEF_147.0.10.tar.gz) + file(DOWNLOAD + https://github.com/secondlife/dullahan/archive/refs/tags/v1.30.0-CEF_147.0.10.tar.gz + ${CMAKE_BINARY_DIR}/dullahan-1.30.0-CEF_147.0.10.tar.gz + ) + endif () + file(ARCHIVE_EXTRACT + INPUT ${CMAKE_BINARY_DIR}/dullahan-1.30.0-CEF_147.0.10.tar.gz + DESTINATION ${CMAKE_BINARY_DIR} + ) + try_compile(DULLAHAN_RESULT + PROJECT dullahan + SOURCE_DIR ${CMAKE_BINARY_DIR}/dullahan-1.30.0-CEF_147.0.10 + BINARY_DIR ${CMAKE_BINARY_DIR}/dullahan-1.30.0-CEF_147.0.10 + 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.30.0-CEF_147.0.10 + -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.30.0-CEF_147.0.10/dullahan_host + DESTINATION ${LIBS_PREBUILT_DIR}/bin/release + ) + file( + COPY ${CMAKE_BINARY_DIR}/dullahan-1.30.0-CEF_147.0.10/libdullahan.a + DESTINATION ${ARCH_PREBUILT_DIRS_RELEASE} + ) + file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/include/cef) + file( + COPY + ${CMAKE_BINARY_DIR}/dullahan-1.30.0-CEF_147.0.10/src/dullahan.h + ${CMAKE_BINARY_DIR}/dullahan-1.30.0-CEF_147.0.10/src/dullahan_version.h + DESTINATION ${LIBS_PREBUILT_DIR}/include/cef + ) + file(WRITE ${PREBUILD_TRACKING_DIR}/dullahan_installed "0") + endif () + endif () +elseif (${LINUX_DISTRO} MATCHES fedora) if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/dullahan_installed OR NOT ${dullahan_installed} EQUAL 0) file( COPY /usr/src/cef-146.0.11/libcef_dll @@ -128,7 +196,7 @@ execute_process( WORKING_DIRECTORY ${LIBS_PREBUILT_DIR} ) -if (${LINUX_DISTRO} MATCHES fedora) +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 @@ -202,7 +270,7 @@ elseif (DARWIN) ) elseif (LINUX) - if (${LINUX_DISTRO} MATCHES fedora) + if (${LINUX_DISTRO} MATCHES arch OR (${LINUX_DISTRO} MATCHES fedora)) target_link_directories( ll::cef INTERFACE ${INSTALL_PREFIX}/${_LIB}/cef ) endif () target_link_libraries( ll::cef INTERFACE diff --git a/indra/media_plugins/cef/CMakeLists.txt b/indra/media_plugins/cef/CMakeLists.txt index 4ac7bb93ca..9aebc786f0 100644 --- a/indra/media_plugins/cef/CMakeLists.txt +++ b/indra/media_plugins/cef/CMakeLists.txt @@ -51,7 +51,7 @@ if (LINUX) list(APPEND media_plugin_cef_SOURCE_FILES ${LINUX_VOLUME_CATCHER}) set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--build-id") - if (${LINUX_DISTRO} MATCHES fedora) + if (${LINUX_DISTRO} MATCHES arch OR (${LINUX_DISTRO} MATCHES fedora)) set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_RPATH};${INSTALL_PREFIX}/${_LIB}/cef) endif () list(APPEND media_plugin_cef_LINK_LIBRARIES llwindow ) @@ -156,27 +156,23 @@ if (INSTALL) endif () if (${LINUX_DISTRO} MATCHES arch) install( - PROGRAMS - ${AUTOBUILD_INSTALL_DIR}/bin/release/chrome-sandbox - ${AUTOBUILD_INSTALL_DIR}/bin/release/dullahan_host + PROGRAMS ${AUTOBUILD_INSTALL_DIR}/bin/release/dullahan_host DESTINATION lib/${VIEWER_BINARY_NAME} - #PERMISSIONS SETUID OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) elseif (${LINUX_DISTRO} MATCHES fedora) install( PROGRAMS ${AUTOBUILD_INSTALL_DIR}/bin/release/dullahan_host DESTINATION libexec/${VIEWER_BINARY_NAME} ) - else (${LINUX_DISTRO} MATCHES arch) + else () install( PROGRAMS ${AUTOBUILD_INSTALL_DIR}/bin/release/chrome-sandbox ${AUTOBUILD_INSTALL_DIR}/bin/release/dullahan_host DESTINATION libexec/${VIEWER_BINARY_NAME} - #PERMISSIONS SETUID OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) - endif (${LINUX_DISTRO} MATCHES arch) - if (NOT (${LINUX_DISTRO} MATCHES fedora)) + endif () + if (NOT (${LINUX_DISTRO} MATCHES arch OR (${LINUX_DISTRO} MATCHES fedora))) install( FILES ${ARCH_PREBUILT_DIRS_RELEASE}/libcef.so diff --git a/indra/newview/PKGBUILD.in b/indra/newview/PKGBUILD.in index 3de9558000..b2830ed145 100644 --- a/indra/newview/PKGBUILD.in +++ b/indra/newview/PKGBUILD.in @@ -6,7 +6,7 @@ pkgdesc="${VIEWER_PACKAGE_COMMENT}" arch=('${CMAKE_SYSTEM_PROCESSOR}') url="https://${VIEWER_PACKAGE_DOMAIN_NAME}" license=('LGPL-2.1') -depends=(freealut apr-util at-spi2-core boost-libs fltk glu hunspell libnghttp2 openjpeg2 sdl2 vlc libvorbis) +depends=(freealut apr-util at-spi2-core boost-libs cef fltk glu hunspell libnghttp2 openjpeg2 sdl2 vlc libvorbis) package() { cd "$startdir" |
