diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..eed15c3593e16faf5dca94fcc5667b004771b1e2
--- /dev/null
+++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
@@ -0,0 +1,155 @@
+/***************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact:  Qt Software Information (qt-info@nokia.com)
+**
+**
+** Non-Open Source Usage
+**
+** Licensees may use this file in accordance with the Qt Beta Version
+** License Agreement, Agreement version 2.2 provided with the Software or,
+** alternatively, in accordance with the terms contained in a written
+** agreement between you and Nokia.
+**
+** GNU General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License versions 2.0 or 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the packaging
+** of this file.  Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+**
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt GPL Exception
+** version 1.2, included in the file GPL_EXCEPTION.txt in this package.
+**
+***************************************************************************/
+
+#include "cmakerunconfiguration.h"
+#include "cmakeprojectconstants.h"
+#include "cmakeproject.h"
+
+#include <projectexplorer/environment.h>
+
+using namespace CMakeProjectManager;
+using namespace CMakeProjectManager::Internal;
+
+CMakeRunConfiguration::CMakeRunConfiguration(CMakeProject *pro, const QString &target, const QString &workingDirectory)
+    : ProjectExplorer::ApplicationRunConfiguration(pro), m_target(target), m_workingDirectory(workingDirectory)
+{
+    setName(target);
+}
+CMakeRunConfiguration::~CMakeRunConfiguration()
+{
+
+}
+
+QString CMakeRunConfiguration::type() const
+{
+    return Constants::CMAKERUNCONFIGURATION;
+}
+
+QString CMakeRunConfiguration::executable() const
+{
+    return m_target;
+}
+
+ProjectExplorer::ApplicationRunConfiguration::RunMode CMakeRunConfiguration::runMode() const
+{
+    return ProjectExplorer::ApplicationRunConfiguration::Gui;
+}
+
+QString CMakeRunConfiguration::workingDirectory() const
+{
+    return m_workingDirectory;
+}
+
+QStringList CMakeRunConfiguration::commandLineArguments() const
+{
+    // TODO
+    return QStringList();
+}
+
+ProjectExplorer::Environment CMakeRunConfiguration::environment() const
+{
+    // TODO
+    return ProjectExplorer::Environment::systemEnvironment();
+}
+
+void CMakeRunConfiguration::save(ProjectExplorer::PersistentSettingsWriter &writer) const
+{
+    ProjectExplorer::ApplicationRunConfiguration::save(writer);
+}
+
+void CMakeRunConfiguration::restore(const ProjectExplorer::PersistentSettingsReader &reader)
+{
+    ProjectExplorer::ApplicationRunConfiguration::restore(reader);
+}
+
+QWidget *CMakeRunConfiguration::configurationWidget()
+{
+    //TODO
+    return new QWidget();
+}
+
+// Factory
+CMakeRunConfigurationFactory::CMakeRunConfigurationFactory()
+{
+
+}
+
+CMakeRunConfigurationFactory::~CMakeRunConfigurationFactory()
+{
+
+}
+
+// used to recreate the runConfigurations when restoring settings
+bool CMakeRunConfigurationFactory::canCreate(const QString &type) const
+{
+    if (type.startsWith(Constants::CMAKERUNCONFIGURATION))
+        return true;
+    return false;
+}
+
+// used to show the list of possible additons to a project, returns a list of types
+QStringList CMakeRunConfigurationFactory::canCreate(ProjectExplorer::Project *project) const
+{
+    CMakeProject *pro = qobject_cast<CMakeProject *>(project);
+    if (!pro)
+        return QStringList();
+    // TODO gather all targets and return them here
+    return QStringList();
+}
+
+// used to translate the types to names to display to the user
+QString CMakeRunConfigurationFactory::nameForType(const QString &type) const
+{
+    Q_ASSERT(type.startsWith(Constants::CMAKERUNCONFIGURATION));
+
+    if (type == Constants::CMAKERUNCONFIGURATION)
+        return "CMake"; // Doesn't happen
+    else
+        return type.mid(QString(Constants::CMAKERUNCONFIGURATION).length());
+}
+
+QSharedPointer<ProjectExplorer::RunConfiguration> CMakeRunConfigurationFactory::create(ProjectExplorer::Project *project, const QString &type)
+{
+    CMakeProject *pro = qobject_cast<CMakeProject *>(project);
+    Q_ASSERT(pro);
+    if (type == Constants::CMAKERUNCONFIGURATION) {
+        // Restoring, filename will be added by restoreSettings
+        QSharedPointer<ProjectExplorer::RunConfiguration> rc(new CMakeRunConfiguration(pro, QString::null, QString::null));
+        return rc;
+    } else {
+        // Adding new
+        QString file = type.mid(QString(Constants::CMAKERUNCONFIGURATION).length());
+        QSharedPointer<ProjectExplorer::RunConfiguration> rc(new CMakeRunConfiguration(pro, file, QString::null));
+        return rc;
+    }
+}
diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h
new file mode 100644
index 0000000000000000000000000000000000000000..082364e3042ad5a7594034f0c41715533b2932b0
--- /dev/null
+++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h
@@ -0,0 +1,93 @@
+/***************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact:  Qt Software Information (qt-info@nokia.com)
+**
+**
+** Non-Open Source Usage
+**
+** Licensees may use this file in accordance with the Qt Beta Version
+** License Agreement, Agreement version 2.2 provided with the Software or,
+** alternatively, in accordance with the terms contained in a written
+** agreement between you and Nokia.
+**
+** GNU General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License versions 2.0 or 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the packaging
+** of this file.  Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+**
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt GPL Exception
+** version 1.2, included in the file GPL_EXCEPTION.txt in this package.
+**
+***************************************************************************/
+
+#ifndef CMAKERUNCONFIGURATION_H
+#define CMAKERUNCONFIGURATION_H
+
+#include <projectexplorer/applicationrunconfiguration.h>
+#include <projectexplorer/environment.h>
+#include <projectexplorer/persistentsettings.h>
+
+namespace CMakeProjectManager {
+namespace Internal {
+
+class CMakeProject;
+
+class CMakeRunConfiguration : public ProjectExplorer::ApplicationRunConfiguration
+{
+public:
+    CMakeRunConfiguration(CMakeProject *pro, const QString &target, const QString &workingDirectory);
+    virtual ~CMakeRunConfiguration();
+    virtual QString type() const;
+    virtual QString executable() const;
+    virtual RunMode runMode() const;
+    virtual QString workingDirectory() const;
+    virtual QStringList commandLineArguments() const;
+    virtual ProjectExplorer::Environment environment() const;
+    virtual QWidget *configurationWidget();
+
+    virtual void save(ProjectExplorer::PersistentSettingsWriter &writer) const;
+    virtual void restore(const ProjectExplorer::PersistentSettingsReader &reader);
+private:
+    QString m_target;
+    QString m_workingDirectory;
+};
+
+/* The run configuration factory is used for restoring run configurations from
+ * settings. And used to create new runconfigurations in the "Run Settings" Dialog.
+ * For the first case bool canCreate(const QString &type) and
+ * QSharedPointer<RunConfiguration> create(Project *project, QString type) are used.
+ * For the second type the functions QStringList canCreate(Project *pro) and
+ * QString nameForType(const QString&) are used to generate a list of creatable
+ * RunConfigurations, and create(..) is used to create it.
+ */
+class CMakeRunConfigurationFactory : public QObject
+{
+    Q_OBJECT;
+public:
+    CMakeRunConfigurationFactory();
+    virtual ~CMakeRunConfigurationFactory();
+    // used to recreate the runConfigurations when restoring settings
+    virtual bool canCreate(const QString &type) const;
+    // used to show the list of possible additons to a project, returns a list of types
+    virtual QStringList canCreate(ProjectExplorer::Project *pro) const;
+    // used to translate the types to names to display to the user
+    virtual QString nameForType(const QString &type) const;
+    virtual QSharedPointer<ProjectExplorer::RunConfiguration> create(ProjectExplorer::Project *project, const QString &type);
+};
+
+
+}
+}
+
+#endif // CMAKERUNCONFIGURATION_H