From 16ecc9d734341618299327c7699168274341a864 Mon Sep 17 00:00:00 2001 From: Erik Kundiman Date: Mon, 16 Sep 2024 16:38:28 +0800 Subject: WebRTC on Fedora & openSUSE without breaking CEF Thanks to the Linux x86-64 WebRTC binary from Zenichi Amano (crow-misia). https://megapahit.com/show_bug.cgi?id=64 Haven't been tested on openSUSE, but it should work. --- indra/cmake/WebRTC.cmake | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) (limited to 'indra/cmake') diff --git a/indra/cmake/WebRTC.cmake b/indra/cmake/WebRTC.cmake index 92d9d135c6..be51957794 100644 --- a/indra/cmake/WebRTC.cmake +++ b/indra/cmake/WebRTC.cmake @@ -6,17 +6,23 @@ include_guard() add_library( ll::webrtc INTERFACE IMPORTED ) target_include_directories( ll::webrtc SYSTEM INTERFACE "${LIBS_PREBUILT_DIR}/include/webrtc" "${LIBS_PREBUILT_DIR}/include/webrtc/third_party/abseil-cpp") -if (CMAKE_OSX_ARCHITECTURES MATCHES arm64) +if (CMAKE_OSX_ARCHITECTURES MATCHES arm64 OR (${LINUX_DISTRO} MATCHES fedora) OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed)) + target_compile_definitions(ll::webrtc INTERFACE CM_WEBRTC=1) if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/webrtc_installed OR NOT ${webrtc_installed} EQUAL 0) - if (NOT EXISTS ${CMAKE_BINARY_DIR}/libwebrtc-macos-arm64.tar.xz) + if (LINUX) + set(WEBRTC_PLATFORM linux-x64) + else (LINUX) + set(WEBRTC_PLATFORM macos-arm64) + endif (LINUX) + if (NOT EXISTS ${CMAKE_BINARY_DIR}/libwebrtc-${WEBRTC_PLATFORM}.tar.xz) file(DOWNLOAD - https://github.com/crow-misia/libwebrtc-bin/releases/download/114.5735.6.1/libwebrtc-macos-arm64.tar.xz - ${CMAKE_BINARY_DIR}/libwebrtc-macos-arm64.tar.xz + https://github.com/crow-misia/libwebrtc-bin/releases/download/114.5735.6.1/libwebrtc-${WEBRTC_PLATFORM}.tar.xz + ${CMAKE_BINARY_DIR}/libwebrtc-${WEBRTC_PLATFORM}.tar.xz SHOW_PROGRESS ) - endif (NOT EXISTS ${CMAKE_BINARY_DIR}/libwebrtc-macos-arm64.tar.xz) + endif (NOT EXISTS ${CMAKE_BINARY_DIR}/libwebrtc-${WEBRTC_PLATFORM}.tar.xz) file(ARCHIVE_EXTRACT - INPUT ${CMAKE_BINARY_DIR}/libwebrtc-macos-arm64.tar.xz + INPUT ${CMAKE_BINARY_DIR}/libwebrtc-${WEBRTC_PLATFORM}.tar.xz DESTINATION ${LIBS_PREBUILT_DIR} ) file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/include/webrtc) @@ -57,17 +63,19 @@ if (CMAKE_OSX_ARCHITECTURES MATCHES arm64) ${LIBS_PREBUILT_DIR}/lib/libwebrtc.a ${LIBS_PREBUILT_DIR}/lib/release/libwebrtc.a ) - file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/lib/release/WebRTC.framework) - file(RENAME - ${LIBS_PREBUILT_DIR}/Frameworks/WebRTC.xcframework/macos-arm64/WebRTC.framework - ${LIBS_PREBUILT_DIR}/lib/release/WebRTC.framework - ) - file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/Frameworks) + if (CMAKE_OSX_ARCHITECTURES MATCHES arm64) + file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/lib/release/WebRTC.framework) + file(RENAME + ${LIBS_PREBUILT_DIR}/Frameworks/WebRTC.xcframework/${WEBRTC_PLATFORM}/WebRTC.framework + ${LIBS_PREBUILT_DIR}/lib/release/WebRTC.framework + ) + file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/Frameworks) + endif (CMAKE_OSX_ARCHITECTURES MATCHES arm64) file(WRITE ${PREBUILD_TRACKING_DIR}/webrtc_installed "0") endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/webrtc_installed OR NOT ${webrtc_installed} EQUAL 0) elseif (NOT CMAKE_SYSTEM_NAME MATCHES FreeBSD) use_prebuilt_binary(webrtc) -endif (CMAKE_OSX_ARCHITECTURES MATCHES arm64) +endif (CMAKE_OSX_ARCHITECTURES MATCHES arm64 OR (${LINUX_DISTRO} MATCHES fedora) OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed)) if (WINDOWS) target_link_libraries( ll::webrtc INTERFACE webrtc.lib ) -- cgit v1.2.3