Index: /trunk/Config.kmk
===================================================================
--- /trunk/Config.kmk	(revision 35283)
+++ /trunk/Config.kmk	(revision 35284)
@@ -506,4 +506,6 @@
 # Enable the VNC server in VBoxHeadless (GPL only).
 #VBOX_WITH_VNC = 1
+# Enable S3 support (requires libcurl)
+VBOX_WITH_S3 = 1
 ## @}
 
@@ -2309,4 +2311,5 @@
 SDK_VBOX_BLD_OPENSSL_LIBS ?= $(PATH_LIB)/VBoxBldProg-libcrypto$(VBOX_SUFF_LIB)
 
+ifdef VBOX_WITH_S3
 VBOX_WITH_LIBCURL = 1
 SDK_VBOX_LIBCURL       = .
@@ -2314,4 +2317,5 @@
 SDK_VBOX_LIBCURL_LIBS ?= $(PATH_LIB)/VBox-libcurl$(VBOX_SUFF_LIB)
 SDK_VBOX_LIBCURL_DEFS ?= BUILDING_LIBCURL
+endif
 
 SDK_VBOX_FFMPEG       = .
Index: /trunk/src/VBox/Main/ApplianceImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/ApplianceImpl.cpp	(revision 35283)
+++ /trunk/src/VBox/Main/ApplianceImpl.cpp	(revision 35284)
@@ -932,5 +932,9 @@
                 taskrc = pAppliance->readFS(task.get());
             else if (task->locInfo.storageType == VFSType_S3)
+#ifdef VBOX_WITH_S3
                 taskrc = pAppliance->readS3(task.get());
+#else
+                taskrc = VERR_NOT_IMPLEMENTED;
+#endif
         break;
 
@@ -939,5 +943,9 @@
                 taskrc = pAppliance->importFS(task.get());
             else if (task->locInfo.storageType == VFSType_S3)
+#ifdef VBOX_WITH_S3
                 taskrc = pAppliance->importS3(task.get());
+#else
+                taskrc = VERR_NOT_IMPLEMENTED;
+#endif
         break;
 
@@ -946,5 +954,9 @@
                 taskrc = pAppliance->writeFS(task.get());
             else if (task->locInfo.storageType == VFSType_S3)
+#ifdef VBOX_WITH_S3
                 taskrc = pAppliance->writeS3(task.get());
+#else
+                taskrc = VERR_NOT_IMPLEMENTED;
+#endif
         break;
     }
Index: /trunk/src/VBox/Main/ApplianceImplExport.cpp
===================================================================
--- /trunk/src/VBox/Main/ApplianceImplExport.cpp	(revision 35283)
+++ /trunk/src/VBox/Main/ApplianceImplExport.cpp	(revision 35284)
@@ -1906,4 +1906,5 @@
 }
 
+#ifdef VBOX_WITH_S3
 /**
  * Worker code for writing out OVF to the cloud. This is called from Appliance::taskThreadWriteOVF()
@@ -2076,3 +2077,3 @@
     return rc;
 }
-
+#endif /* VBOX_WITH_S3 */
Index: /trunk/src/VBox/Main/ApplianceImplImport.cpp
===================================================================
--- /trunk/src/VBox/Main/ApplianceImplImport.cpp	(revision 35283)
+++ /trunk/src/VBox/Main/ApplianceImplImport.cpp	(revision 35284)
@@ -952,4 +952,5 @@
 }
 
+#ifdef VBOX_WITH_S3
 /**
  * Worker code for reading OVF from the cloud. This is called from Appliance::taskThreadImportOrExport()
@@ -1078,4 +1079,5 @@
     return rc;
 }
+#endif /* VBOX_WITH_S3 */
 
 /*******************************************************************************
@@ -1385,4 +1387,5 @@
 }
 
+#ifdef VBOX_WITH_S3
 /**
  * Worker code for importing OVF from the cloud. This is called from Appliance::taskThreadImportOrExport()
@@ -1575,4 +1578,5 @@
     return rc;
 }
+#endif /* VBOX_WITH_S3 */
 
 HRESULT Appliance::readManifestFile(const Utf8Str &strFile, void **ppvBuf, size_t *pcbSize, PVDINTERFACEIO pCallbacks, PSHA1STORAGE pStorage)
Index: /trunk/src/VBox/Main/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Main/Makefile.kmk	(revision 35283)
+++ /trunk/src/VBox/Main/Makefile.kmk	(revision 35284)
@@ -228,5 +228,6 @@
 	$(if $(VBOX_WITH_LIVE_MIGRATION),VBOX_WITH_LIVE_MIGRATION,) \
 	$(if $(VBOX_WITH_EXTPACK),VBOX_WITH_EXTPACK,) \
-	$(if $(VBOX_WITH_VUSB),VBOX_WITH_VUSB,)
+	$(if $(VBOX_WITH_VUSB),VBOX_WITH_VUSB,) \
+	$(if $(VBOX_WITH_S3),VBOX_WITH_S3,)
 ifdef VBOX_WITH_USB
  VBoxSVC_DEFS += \
Index: /trunk/src/VBox/Main/VFSExplorerImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/VFSExplorerImpl.cpp	(revision 35283)
+++ /trunk/src/VBox/Main/VFSExplorerImpl.cpp	(revision 35284)
@@ -226,5 +226,9 @@
                 rc = pVFSExplorer->updateFS(task.get());
             else if (pVFSExplorer->m->storageType == VFSType_S3)
+#ifdef VBOX_WITH_S3
                 rc = pVFSExplorer->updateS3(task.get());
+#else
+                rc = VERR_NOT_IMPLEMENTED;
+#endif
             break;
         }
@@ -234,5 +238,9 @@
                 rc = pVFSExplorer->deleteFS(task.get());
             else if (pVFSExplorer->m->storageType == VFSType_S3)
+#ifdef VBOX_WITH_S3
                 rc = pVFSExplorer->deleteS3(task.get());
+#else
+                rc = VERR_NOT_IMPLEMENTED;
+#endif
             break;
         }
@@ -402,4 +410,5 @@
 }
 
+#ifdef VBOX_WITH_S3
 HRESULT VFSExplorer::updateS3(TaskVFSExplorer *aTask)
 {
@@ -532,4 +541,5 @@
     return VINF_SUCCESS;
 }
+#endif /* VBOX_WITH_S3 */
 
 STDMETHODIMP VFSExplorer::Update(IProgress **aProgress)
