diff --git a/src/plugins/cmakeprojectmanager/makestep.cpp b/src/plugins/cmakeprojectmanager/makestep.cpp
index 33dcd1fe8a38ebd5623cc159965a3c1b0afa9ca0..fbfac0f08f6b64e052867cd0c06d83a677b93610 100644
--- a/src/plugins/cmakeprojectmanager/makestep.cpp
+++ b/src/plugins/cmakeprojectmanager/makestep.cpp
@@ -97,7 +97,10 @@ bool MakeStep::init(const QString &buildConfiguration)
 #else // Q_OS_WIN
     setCommand(buildConfiguration, "make"); // TODO give full path here?
 #endif // Q_OS_WIN
-    setArguments(buildConfiguration, value(buildConfiguration, "buildTargets").toStringList()); // TODO
+
+    QStringList arguments = value(buildConfiguration, "buildTargets").toStringList();
+    arguments << additionalArguments(buildConfiguration);
+    setArguments(buildConfiguration, arguments); // TODO
     setEnvironment(buildConfiguration, m_pro->environment(buildConfiguration));
     return AbstractProcessStep::init(buildConfiguration);
 }
@@ -219,15 +222,31 @@ void MakeStep::setBuildTarget(const QString &buildConfiguration, const QString &
         setValue(buildConfiguration, "buildTargets", old.removeOne(target));
 }
 
+QStringList MakeStep::additionalArguments(const QString &buildConfiguration) const
+{
+    return value(buildConfiguration, "additionalArguments").toStringList();
+}
+
+void MakeStep::setAdditionalArguments(const QString &buildConfiguration, const QStringList &list)
+{
+    setValue(buildConfiguration, "additionalArguments", list);
+}
+
 //
 // CMakeBuildStepConfigWidget
 //
+
 MakeBuildStepConfigWidget::MakeBuildStepConfigWidget(MakeStep *makeStep)
     : m_makeStep(makeStep)
 {
     QFormLayout *fl = new QFormLayout(this);
     setLayout(fl);
 
+    m_additionalArguments = new QLineEdit(this);
+    fl->addRow("Additional arguments:", m_additionalArguments);
+
+    connect(m_additionalArguments, SIGNAL(textEdited(const QString &)), this, SLOT(additionalArgumentsEdited()));
+
     m_targetsList = new QListWidget;
     fl->addRow("Targets:", m_targetsList);
 
@@ -238,9 +257,15 @@ MakeBuildStepConfigWidget::MakeBuildStepConfigWidget(MakeStep *makeStep)
         item->setFlags(item->flags() | Qt::ItemIsUserCheckable);
         item->setCheckState(Qt::Unchecked);
     }
+
     connect(m_targetsList, SIGNAL(itemChanged(QListWidgetItem*)), this, SLOT(itemChanged(QListWidgetItem*)));
 }
 
+void MakeBuildStepConfigWidget::additionalArgumentsEdited()
+{
+    m_makeStep->setAdditionalArguments(m_buildConfiguration, ProjectExplorer::Environment::parseCombinedArgString(m_additionalArguments->text()));
+}
+
 void MakeBuildStepConfigWidget::itemChanged(QListWidgetItem *item)
 {
     m_makeStep->setBuildTarget(m_buildConfiguration, item->text(), item->checkState() & Qt::Checked);
@@ -253,8 +278,6 @@ QString MakeBuildStepConfigWidget::displayName() const
 
 void MakeBuildStepConfigWidget::init(const QString &buildConfiguration)
 {
-    // TODO
-
     // disconnect to make the changes to the items
     disconnect(m_targetsList, SIGNAL(itemChanged(QListWidgetItem*)), this, SLOT(itemChanged(QListWidgetItem*)));
     m_buildConfiguration = buildConfiguration;
@@ -265,6 +288,8 @@ void MakeBuildStepConfigWidget::init(const QString &buildConfiguration)
     }
     // and connect again
     connect(m_targetsList, SIGNAL(itemChanged(QListWidgetItem*)), this, SLOT(itemChanged(QListWidgetItem*)));
+
+    m_additionalArguments->setText(ProjectExplorer::Environment::joinArgumentList(m_makeStep->additionalArguments(m_buildConfiguration)));
 }
 
 //
diff --git a/src/plugins/cmakeprojectmanager/makestep.h b/src/plugins/cmakeprojectmanager/makestep.h
index 0ec1017ea2639c7356b758c323b374da97d0a38c..92126c6c3367032d6d88351c1960a01bbedc731f 100644
--- a/src/plugins/cmakeprojectmanager/makestep.h
+++ b/src/plugins/cmakeprojectmanager/makestep.h
@@ -60,6 +60,8 @@ public:
     CMakeProject *project() const;
     bool buildsTarget(const QString &buildConfiguration, const QString &target) const;
     void setBuildTarget(const QString &buildConfiguration, const QString &target, bool on);
+    QStringList additionalArguments(const QString &buildConfiguration) const;
+    void setAdditionalArguments(const QString &buildConfiguration, const QStringList &list);
 private slots:
     void slotAddToTaskWindow(const QString & fn, int type, int linenumber, const QString & description);
     void addDirectory(const QString &dir);
@@ -82,10 +84,12 @@ public:
     virtual void init(const QString &buildConfiguration);
 private slots:
     void itemChanged(QListWidgetItem*);
+    void additionalArgumentsEdited();
 private:
     QString m_buildConfiguration;
     MakeStep * m_makeStep;
     QListWidget *m_targetsList;
+    QLineEdit *m_additionalArguments;
 };
 
 class MakeBuildStepFactory : public ProjectExplorer::IBuildStepFactory