diff --git a/src/libs/qmljs/qmljsinterpreter.cpp b/src/libs/qmljs/qmljsinterpreter.cpp
index f8ee91ca4423340d5b2d4086e5d1991ac407dfd8..149a56ccb1ab9a3e02ac4211d5688debefbb6f8f 100644
--- a/src/libs/qmljs/qmljsinterpreter.cpp
+++ b/src/libs/qmljs/qmljsinterpreter.cpp
@@ -1214,7 +1214,9 @@ Engine::Engine()
       _regexpCtor(0),
       _globalObject(0),
       _mathObject(0),
+#ifndef NO_DECLARATIVE_BACKEND
       _qmlKeysObject(0),
+#endif
       _convertToNumber(this),
       _convertToString(this),
       _convertToObject(this)
@@ -1670,14 +1672,20 @@ void Engine::initializePrototypes()
     _globalObject->setProperty("Date", dateCtor());
     _globalObject->setProperty("RegExp", regexpCtor());
 
+#ifndef NO_DECLARATIVE_BACKEND
     _qmlKeysObject = new QmlAttachedKeys(this);
     _globalObject->setProperty("Keys", _qmlKeysObject); // ### attach it to the current scope, and not to the global object
     registerObject(_qmlKeysObject);
+#endif
 }
 
 const ObjectValue *Engine::qmlKeysObject()
 {
+#ifndef NO_DECLARATIVE_BACKEND
     return _qmlKeysObject;
+#else
+    return 0;
+#endif
 }
 
 const Value *Engine::defaultValueForBuiltinType(const QString &typeName) const
diff --git a/src/libs/qmljs/qmljsinterpreter.h b/src/libs/qmljs/qmljsinterpreter.h
index ff4beffcf4c0f95d04d4b7df02220cd033f9b950..59716961ba6b11bf88a668040d960837c73d932d 100644
--- a/src/libs/qmljs/qmljsinterpreter.h
+++ b/src/libs/qmljs/qmljsinterpreter.h
@@ -504,7 +504,9 @@ private:
 
     ObjectValue *_globalObject;
     ObjectValue *_mathObject;
+#ifndef NO_DECLARATIVE_BACKEND
     ObjectValue *_qmlKeysObject;
+#endif
 
     NullValue _nullValue;
     UndefinedValue _undefinedValue;