Index: /trunk/Config.kmk
===================================================================
--- /trunk/Config.kmk	(revision 65048)
+++ /trunk/Config.kmk	(revision 65049)
@@ -522,4 +522,6 @@
  VBOX_WITH_DEVMAPPER = 1
 endif
+# Enable unattended installation API
+VBOX_WITH_UNATTENDED = 1
 # Enable BusLogic SCSI host adapter
 VBOX_WITH_BUSLOGIC = 1
@@ -1120,4 +1122,6 @@
  VBOX_WITH_PCI_PASSTHROUGH_IMPL=
  VBOX_WITH_OS2_ADDITIONS_BIN=
+ # not yet
+ VBOX_WITH_UNATTENDED=
  VBOX_WITH_SECURELABEL=
  VBOX_WITH_KCHMVIEWER=
Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManage.h
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManage.h	(revision 65048)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManage.h	(revision 65049)
@@ -330,3 +330,2 @@
 
 #endif /* !___H_VBOXMANAGE */
-
Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageMisc.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageMisc.cpp	(revision 65048)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageMisc.cpp	(revision 65049)
@@ -1327,5 +1327,5 @@
     Utf8Str installedOSStr(installedOSBSTR);
 
-    do{
+    do {
         RTPrintf("Start unattended installation OS %s on virtual machine '%ls'.\n"
                  "UUID: %s\n",
@@ -1338,5 +1338,5 @@
         CHECK_ERROR_BREAK(unAttended, COMSETTER(Group)(group.raw()));
 
-        if(installedOSStr.contains("Windows") && productKey.isEmpty())
+        if (installedOSStr.contains("Windows") && productKey.isEmpty())
         {
             return errorSyntax(USAGE_UNATTENDEDINSTALL, "Product key has been missed.");
Index: /trunk/src/VBox/Main/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Main/Makefile.kmk	(revision 65048)
+++ /trunk/src/VBox/Main/Makefile.kmk	(revision 65049)
@@ -295,4 +295,5 @@
 	$(if $(VBOX_WITH_LINUX_COMPILER_H),VBOX_WITH_LINUX_COMPILER_H,) \
 	$(if $(VBOX_WITH_RESOURCE_USAGE_API),VBOX_WITH_RESOURCE_USAGE_API,) \
+	$(if $(VBOX_WITH_UNATTENDED),VBOX_WITH_UNATTENDED,) \
 	$(if $(VBOX_WITH_PDM_ASYNC_COMPLETION),VBOX_WITH_PDM_ASYNC_COMPLETION,) \
 	$(if $(VBOX_WITH_DBUS),VBOX_WITH_DBUS,) \
@@ -414,8 +415,8 @@
 	src-server/SystemPropertiesImpl.cpp \
 	src-server/TokenImpl.cpp \
-	src-server/UnattendedImpl.cpp \
-	src-server/UnattendedInstaller.cpp \
-	src-server/UnattendedScript.cpp \
-	src-server/UnattendedHelper.cpp \
+	src-server/$(if $(VBOX_WITH_UNATTENDED),UnattendedImpl.cpp,) \
+	src-server/$(if $(VBOX_WITH_UNATTENDED),UnattendedInstaller.cpp,) \
+	src-server/$(if $(VBOX_WITH_UNATTENDED),UnattendedScript.cpp,) \
+	src-server/$(if $(VBOX_WITH_UNATTENDED),UnattendedHelper.cpp,) \
 	src-server/USBControllerImpl.cpp \
 	src-server/USBDeviceFiltersImpl.cpp \
Index: /trunk/src/VBox/Main/include/MachineImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/MachineImpl.h	(revision 65048)
+++ /trunk/src/VBox/Main/include/MachineImpl.h	(revision 65049)
@@ -37,10 +37,11 @@
 #include "BandwidthGroupImpl.h"
 #ifdef VBOX_WITH_RESOURCE_USAGE_API
-#include "Performance.h"
-#include "PerformanceImpl.h"
-#include "ThreadTask.h"
-#include "UnattendedImpl.h"
-
-#endif /* VBOX_WITH_RESOURCE_USAGE_API */
+# include "Performance.h"
+# include "PerformanceImpl.h"
+# include "ThreadTask.h"
+#endif
+#ifdef VBOX_WITH_UNATTENDED
+# include "UnattendedImpl.h"
+#endif
 
 // generated header
@@ -774,5 +775,7 @@
     const ComObjPtr<BIOSSettings>      mBIOSSettings;
     const ComObjPtr<BandwidthControl>  mBandwidthControl;
-    const ComObjPtr<Unattended>       mUnattended;
+#ifdef VBOX_WITH_UNATTENDED
+    const ComObjPtr<Unattended>        mUnattended;
+#endif
 
     typedef std::vector<ComObjPtr<NetworkAdapter> > NetworkAdapterVector;
@@ -785,5 +788,5 @@
     Backupable<USBControllerList>      mUSBControllers;
 
-    uint64_t                        uRegistryNeedsSaving;
+    uint64_t                           uRegistryNeedsSaving;
 
     /**
Index: /trunk/src/VBox/Main/src-server/MachineImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/MachineImpl.cpp	(revision 65048)
+++ /trunk/src/VBox/Main/src-server/MachineImpl.cpp	(revision 65049)
@@ -7163,4 +7163,5 @@
 HRESULT Machine::getUnattended(ComPtr<IUnattended> &aUnattended)
 {
+#ifdef VBOX_WITH_UNATTENDED
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
 
@@ -7168,4 +7169,8 @@
 
     return S_OK;
+#else
+    NOREF(aUnattended);
+    return E_NOTIMPL;
+#endif
 }
 
@@ -8395,7 +8400,9 @@
     mBandwidthControl->init(this);
 
+#ifdef VBOX_WITH_UNATTENDED
     /* create the unattended object (always present) */
     unconst(mUnattended).createObject();
     mUnattended->init(this);
+#endif
 
     return S_OK;
@@ -8476,4 +8483,5 @@
     }
 
+#ifdef VBOX_WITH_UNATTENDED
     if (mUnattended)
     {
@@ -8481,4 +8489,5 @@
         unconst(mUnattended).setNull();
     }
+#endif
 
     /* Deassociate media (only when a real Machine or a SnapshotMachine
@@ -12529,7 +12538,9 @@
     mBandwidthControl->init(this, aMachine->mBandwidthControl);
 
+#ifdef VBOX_WITH_UNATTENDED
     /* create another unattended object that will be mutable */
     unconst(mUnattended).createObject();
     mUnattended->init(this, aMachine->mUnattended);
+#endif
 
     /* default is to delete saved state on Saved -> PoweredOff transition */
