1 /****************************************************************************
2 **
3 ** Copyright (C) 2016 The Qt Company Ltd.
4 ** Contact: https://www.qt.io/licensing/
5 **
6 ** This file is part of Qt Creator.
7 **
8 ** Commercial License Usage
9 ** Licensees holding valid commercial Qt licenses may use this file in
10 ** accordance with the commercial license agreement provided with the
11 ** Software or, alternatively, in accordance with the terms contained in
12 ** a written agreement between you and The Qt Company. For licensing terms
13 ** and conditions see https://www.qt.io/terms-conditions. For further
14 ** information use the contact form at https://www.qt.io/contact-us.
15 **
16 ** GNU General Public License Usage
17 ** Alternatively, this file may be used under the terms of the GNU
18 ** General Public License version 3 as published by the Free Software
19 ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
20 ** included in the packaging of this file. Please review the following
21 ** information to ensure the GNU General Public License requirements will
22 ** be met: https://www.gnu.org/licenses/gpl-3.0.html.
23 **
24 ****************************************************************************/
25 
26 #include "genericbuildconfiguration.h"
27 
28 #include "genericmakestep.h"
29 #include "genericproject.h"
30 #include "genericprojectconstants.h"
31 
32 #include <projectexplorer/buildinfo.h>
33 #include <projectexplorer/buildsteplist.h>
34 #include <projectexplorer/kitinformation.h>
35 #include <projectexplorer/projectexplorerconstants.h>
36 #include <projectexplorer/target.h>
37 
38 #include <qtsupport/qtkitinformation.h>
39 
40 #include <utils/aspects.h>
41 #include <utils/pathchooser.h>
42 #include <utils/qtcassert.h>
43 
44 
45 using namespace ProjectExplorer;
46 using namespace Utils;
47 
48 namespace GenericProjectManager {
49 namespace Internal {
50 
GenericBuildConfiguration(Target * parent,Utils::Id id)51 GenericBuildConfiguration::GenericBuildConfiguration(Target *parent, Utils::Id id)
52     : BuildConfiguration(parent, id)
53 {
54     setConfigWidgetDisplayName(tr("Generic Manager"));
55     setBuildDirectoryHistoryCompleter("Generic.BuildDir.History");
56 
57     setInitializer([this](const BuildInfo &) {
58         buildSteps()->appendStep(Constants::GENERIC_MS_ID);
59         cleanSteps()->appendStep(Constants::GENERIC_MS_ID);
60         updateCacheAndEmitEnvironmentChanged();
61     });
62 
63     updateCacheAndEmitEnvironmentChanged();
64 }
65 
66 
67 // GenericBuildConfigurationFactory
68 
GenericBuildConfigurationFactory()69 GenericBuildConfigurationFactory::GenericBuildConfigurationFactory()
70 {
71     registerBuildConfiguration<GenericBuildConfiguration>
72         ("GenericProjectManager.GenericBuildConfiguration");
73 
74     setSupportedProjectType(Constants::GENERICPROJECT_ID);
75     setSupportedProjectMimeTypeName(Constants::GENERICMIMETYPE);
76 
77     setBuildGenerator([](const Kit *, const FilePath &projectPath, bool forSetup) {
78         BuildInfo info;
79         info.typeName = BuildConfiguration::tr("Build");
80         info.buildDirectory = forSetup ? Project::projectDirectory(projectPath) : projectPath;
81 
82         if (forSetup)  {
83             //: The name of the build configuration created by default for a generic project.
84             info.displayName = BuildConfiguration::tr("Default");
85         }
86 
87         return QList<BuildInfo>{info};
88     });
89 }
90 
addToEnvironment(Utils::Environment & env) const91 void GenericBuildConfiguration::addToEnvironment(Utils::Environment &env) const
92 {
93     QtSupport::QtKitAspect::addHostBinariesToPath(kit(), env);
94 }
95 
96 } // namespace Internal
97 } // namespace GenericProjectManager
98