File indexing completed on 2024-05-12 08:40:06
0001 /* 0002 SPDX-FileCopyrightText: 2006-2007 Andreas Pakulat <apaku@gmx.de> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef QMAKEBUILDER_H 0008 #define QMAKEBUILDER_H 0009 0010 #include <interfaces/iplugin.h> 0011 #include "iqmakebuilder.h" 0012 0013 #include <project/builderjob.h> 0014 0015 #include <QVariantList> 0016 0017 /** 0018 @author Andreas Pakulat 0019 */ 0020 class QMakeBuilder : public KDevelop::IPlugin, public IQMakeBuilder 0021 { 0022 Q_OBJECT 0023 Q_INTERFACES( IQMakeBuilder ) 0024 Q_INTERFACES( KDevelop::IProjectBuilder ) 0025 0026 public: 0027 explicit QMakeBuilder(QObject *parent = nullptr, const QVariantList &args = QVariantList()); 0028 ~QMakeBuilder() override; 0029 0030 KJob* build(KDevelop::ProjectBaseItem *dom) override; 0031 KJob* clean(KDevelop::ProjectBaseItem *dom) override; 0032 KJob* install(KDevelop::ProjectBaseItem *dom, const QUrl& /* prefix */) override; 0033 KJob* configure(KDevelop::IProject *dom) override; 0034 KJob* prune(KDevelop::IProject *dom) override; 0035 0036 int perProjectConfigPages() const override; 0037 KDevelop::ConfigPage* perProjectConfigPage(int number, const KDevelop::ProjectConfigOptions& options, QWidget* parent) override; 0038 0039 QList<IProjectBuilder*> additionalBuilderPlugins(KDevelop::IProject* project) const override; 0040 0041 Q_SIGNALS: 0042 void built(KDevelop::ProjectBaseItem*); 0043 void failed(KDevelop::ProjectBaseItem*); 0044 void installed(KDevelop::ProjectBaseItem*); 0045 void cleaned(KDevelop::ProjectBaseItem*); 0046 void configured(KDevelop::ProjectBaseItem*); 0047 void pruned(KDevelop::ProjectBaseItem*); 0048 0049 private: 0050 /** 0051 * If @p dom needs a configure run, return a composite job consisting of configure job + @p job 0052 * 0053 * Otherwise just return @p job 0054 */ 0055 KJob* maybePrependConfigureJob(KDevelop::ProjectBaseItem* project, KJob* job, KDevelop::BuilderJob::BuildType type); 0056 0057 KDevelop::IPlugin* m_makeBuilder; 0058 }; 0059 0060 #endif // QMAKEBUILDER_H 0061