From d1fcd260993aa75f46f2f7208b828ec0688c53de Mon Sep 17 00:00:00 2001
From: Rye Mutt <rye@alchemyviewer.org>
Date: Sat, 19 Jun 2021 19:20:37 -0400
Subject: [PATCH] Add build config options to enable and disable CEF and VLC

---
 indra/cmake/Variables.cmake            |  3 +++
 indra/media_plugins/CMakeLists.txt     | 17 ++++-------------
 indra/newview/CMakeLists.txt           | 24 +++++++++++++++++++++---
 indra/newview/llappviewer.cpp          | 11 +++++++++--
 indra/newview/llviewerbuildconfig.h.in |  4 ++++
 5 files changed, 41 insertions(+), 18 deletions(-)

diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake
index 8c3e1679892..4b8ccbbb165 100644
--- a/indra/cmake/Variables.cmake
+++ b/indra/cmake/Variables.cmake
@@ -43,6 +43,9 @@ endif(USE_ASAN AND USE_LEAKSAN)
 set(VIEWER_SYMBOL_FILE "" CACHE STRING "Name of tarball into which to place symbol files")
 set(BUGSPLAT_DB "" CACHE STRING "BugSplat database name, if BugSplat crash reporting is desired")
 
+option(USE_CEF "Enable CEF media plugin" ON)
+option(USE_VLC "Enable VLC media plugin" ON)
+
 if(LIBS_CLOSED_DIR)
   file(TO_CMAKE_PATH "${LIBS_CLOSED_DIR}" LIBS_CLOSED_DIR)
 else(LIBS_CLOSED_DIR)
diff --git a/indra/media_plugins/CMakeLists.txt b/indra/media_plugins/CMakeLists.txt
index 0b3ddb32b1e..888244863a1 100644
--- a/indra/media_plugins/CMakeLists.txt
+++ b/indra/media_plugins/CMakeLists.txt
@@ -3,18 +3,9 @@
 add_subdirectory(base)
 add_subdirectory(example)
 
-if (LINUX)
-    #add_subdirectory(gstreamer010)
+if (USE_CEF)
     add_subdirectory(cef)
+endif()
+if (USE_VLC)
     add_subdirectory(libvlc)
-endif (LINUX)
-
-if (DARWIN)
-    add_subdirectory(cef)
-    add_subdirectory(libvlc)
-endif (DARWIN)
-
-if (WINDOWS)
-    add_subdirectory(cef)
-    add_subdirectory(libvlc)
-endif (WINDOWS)
+endif()
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 4a0f23a4285..f4ad1c2a6d8 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1874,8 +1874,6 @@ if (WINDOWS)
       ${CMAKE_CURRENT_SOURCE_DIR}/featuretable.txt
       ${viewer_APPSETTINGS_FILES}
       SLPlugin
-      media_plugin_cef
-      media_plugin_libvlc
       media_plugin_example
       )
 
@@ -1891,6 +1889,18 @@ if (WINDOWS)
             )
     endif (ADDRESS_SIZE EQUAL 64)
 
+    if (USE_CEF)
+      list(APPEND COPY_INPUT_DEPENDENCIES
+           media_plugin_cef
+           )
+    endif ()
+
+    if (USE_VLC)
+      list(APPEND COPY_INPUT_DEPENDENCIES
+           media_plugin_libvlc
+           )
+    endif ()
+
     if (USE_FMODSTUDIO)
       list(APPEND COPY_INPUT_DEPENDENCIES
            ${SHARED_LIB_STAGING_DIR}/Release/fmod.dll
@@ -2268,7 +2278,15 @@ if (DARWIN)
       ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
     )
 
-  add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_libvlc media_plugin_cef)
+  add_dependencies(${VIEWER_BINARY_NAME} SLPlugin)
+
+  if (USE_CEF)
+      add_dependencies(${VIEWER_BINARY_NAME} media_plugin_cef)
+  endif ()
+
+  if (USE_VLC)
+      add_dependencies(${VIEWER_BINARY_NAME} media_plugin_libvlc)
+  endif ()
 
   if (ENABLE_SIGNING)
       set(SIGNING_SETTING "--signature=${SIGNING_IDENTITY}")
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index ce28a5870e5..b1dcc186e61 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -26,6 +26,8 @@
 
 #include "llviewerprecompiledheaders.h"
 
+#include "llviewerbuildconfig.h"
+
 #include "llappviewer.h"
 
 // Viewer includes
@@ -142,8 +144,13 @@
 #include "llcoros.h"
 #include "llexception.h"
 
+#if USE_CEF
 #include "cef/dullahan_version.h"
+#endif
+
+#if USE_VLC
 #include "vlc/libvlc_version.h"
+#endif
 
 // Third party library includes
 #include <boost/bind.hpp>
@@ -3253,7 +3260,7 @@ LLSD LLAppViewer::getViewerInfo() const
 		info["VOICE_VERSION"] = LLTrans::getString("NotConnected");
 	}
 
-#if defined(CEF_VERSION)
+#if USE_CEF
 	std::ostringstream cef_ver_codec;
 	cef_ver_codec << "Dullahan: ";
 	cef_ver_codec << DULLAHAN_VERSION_MAJOR;
@@ -3281,7 +3288,7 @@ LLSD LLAppViewer::getViewerInfo() const
 	info["CEF_VERSION"] = "Web Engine: Undefined";
 #endif
 
-#if defined(LIBVLC_VERSION)
+#if USE_VLC
 	std::ostringstream vlc_ver_codec;
 	vlc_ver_codec << LIBVLC_VERSION_MAJOR;
 	vlc_ver_codec << ".";
diff --git a/indra/newview/llviewerbuildconfig.h.in b/indra/newview/llviewerbuildconfig.h.in
index b952ea2fe4e..c4e72b06dd2 100644
--- a/indra/newview/llviewerbuildconfig.h.in
+++ b/indra/newview/llviewerbuildconfig.h.in
@@ -49,6 +49,10 @@
 #cmakedefine01 USE_FMODSTUDIO
 #cmakedefine01 USE_OPENAL
 
+// Media Plugins
+#cmakedefine01 USE_CEF
+#cmakedefine01 USE_VLC
+
 // Havok
 #cmakedefine01 HAVOK
 #cmakedefine01 HAVOK_TPV
-- 
GitLab