diff --git a/indra/cmake/DragDrop.cmake b/indra/cmake/DragDrop.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..a2d7df1312958e38c0e9829d251a4d73e5bd18e1
--- /dev/null
+++ b/indra/cmake/DragDrop.cmake
@@ -0,0 +1,25 @@
+# -*- cmake -*-
+
+if (VIEWER)
+
+  OPTION (OS_DRAG_DROP
+  "Build the viewer with OS level drag and drop turned on or off"
+  OFF)
+
+  if (OS_DRAG_DROP)
+
+    if (WINDOWS)
+      add_definitions(-DLL_OS_DRAGDROP_ENABLED=1)
+    endif (WINDOWS)
+
+    if (DARWIN)
+      add_definitions(-DLL_OS_DRAGDROP_ENABLED=0)
+    endif (DARWIN)
+
+    if (LINUX)
+      add_definitions(-DLL_OS_DRAGDROP_ENABLED=0)
+    endif (LINUX)
+
+  endif (OS_DRAG_DROP)
+
+endif (VIEWER)
diff --git a/indra/llwindow/CMakeLists.txt b/indra/llwindow/CMakeLists.txt
index b4a3f744512d316bc4ed3177b31509b3328dc50c..77c6fa57b6c7185e8bb3d5c826db0bf55638b2cf 100644
--- a/indra/llwindow/CMakeLists.txt
+++ b/indra/llwindow/CMakeLists.txt
@@ -12,6 +12,7 @@ project(llwindow)
 
 include(00-Common)
 include(DirectX)
+include(DragDrop)
 include(LLCommon)
 include(LLImage)
 include(LLMath)
diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp
index aac68e71af281f4b4986b0c2f17fe747fa160ec0..471c88675dfb3f74b53905c7dc3a342f79842894 100644
--- a/indra/llwindow/lldragdropwin32.cpp
+++ b/indra/llwindow/lldragdropwin32.cpp
@@ -32,6 +32,8 @@
 
 #if LL_WINDOWS
 
+#if LL_OS_DRAGDROP_ENABLED
+
 #include "linden_common.h"
 
 #include "llwindowwin32.h"
@@ -272,4 +274,7 @@ void LLDragDropWin32::reset()
 	OleUninitialize();
 }
 
-#endif
+#endif // LL_OS_DRAGDROP_ENABLED
+
+#endif // LL_WINDOWS
+
diff --git a/indra/llwindow/lldragdropwin32.h b/indra/llwindow/lldragdropwin32.h
index 624f4ad24bc55435a095749c05b952d496c79f12..26c8e4aeff58644b637e4d3337f7dc20edf32bd5 100644
--- a/indra/llwindow/lldragdropwin32.h
+++ b/indra/llwindow/lldragdropwin32.h
@@ -30,11 +30,13 @@
  * $/LicenseInfo$
  */
 
+#if LL_WINDOWS
+
+#if LL_OS_DRAGDROP_ENABLED
+
 #ifndef LL_LLDRAGDROP32_H
 #define LL_LLDRAGDROP32_H
 
-#if LL_WINDOWS
-
 #include <windows.h>
 #include <ole2.h>
 
@@ -51,7 +53,28 @@ class LLDragDropWin32
 		IDropTarget* mDropTarget;
 		HWND mDropWindowHandle;
 };
+#endif // LL_LLDRAGDROP32_H
 
-#endif // LL_WINDOWS
+#else // LL_OS_DRAGDROP_ENABLED
 
+#ifndef LL_LLDRAGDROP32_H
+#define LL_LLDRAGDROP32_H
+
+#include <windows.h>
+#include <ole2.h>
+
+// imposter class that does nothing 
+class LLDragDropWin32
+{
+	public:
+		LLDragDropWin32() {};
+		~LLDragDropWin32() {};
+
+		bool init( HWND hWnd ) { return false; };
+		void reset() { };
+};
 #endif // LL_LLDRAGDROP32_H
+
+#endif // LL_OS_DRAGDROP_ENABLED
+
+#endif // LL_WINDOWS
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index b129bca1f3921bf520c497538bb90aebf6685164..352e9a9382002b760a23250c8508e581d1270052 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -7,6 +7,7 @@ include(Boost)
 include(BuildVersion)
 include(DBusGlib)
 include(DirectX)
+include(DragDrop)
 include(ELFIO)
 include(FMOD)
 include(OPENAL)