summaryrefslogtreecommitdiff
path: root/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h
Commit message (Collapse)AuthorAgeFilesLines
* Qmake: Use FilePath in QtVersion::reportIssueshjk2023-01-121-1/+2
| | | | | Change-Id: Ia848248525238c316d6f6f120d915b9bdb28b8fe Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* Remove GPL-3.0+ from license identifiersKai Köhne2023-01-061-1/+1
| | | | | | | | | | | | | | | Since we also license under GPL-3.0 WITH Qt-GPL-exception-1.0, this applies only to a hypothetical newer version of GPL, that doesn't exist yet. If such a version emerges, we can still decide to relicense... While at it, replace (deprecated) GPL-3.0 with more explicit GPL-3.0-only Change was done by running find . -type f -exec perl -pi -e "s/LicenseRef-Qt-Commercial OR GPL-3.0\+ OR GPL-3.0 WITH Qt-GPL-exception-1.0/LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0/g" {} \; Change-Id: I5097e6ce8d10233993ee30d7e25120e2659eb10b Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* Use SPDX license identifiersLucie Gérard2022-08-261-24/+2
| | | | | | | | | Replace the current license disclaimer in files by a SPDX-License-Identifier. Task-number: QTBUG-67283 Change-Id: I708fd1f9f2b73d60f57cc3568646929117825813 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* Rename QtSupport::BaseQtVersion to QtVersionhjk2022-01-241-4/+4
| | | | | | | | | | ... and the Utils::QtVersion enum to Utils::QtMajorVersion to avoid conflicts. Change-Id: Ib688c67388272b7204a91444155f60b8c18a56bd Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Qmake: Proliferate FilePath usehjk2021-08-201-3/+3
| | | | | Change-Id: Id9bdaf127b9b45ec01a12c21dccd8955e5fd2846 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* QmakeProjectManager: Un-export QmakeMakeStephjk2021-04-261-4/+7
| | | | | | | Not directly used in leaf plugins (iOS?) anymore. Change-Id: I5fcf7e0d976e99b5d9eb8b0e6404651b35d5db43 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* ProjectExplorer: Consolidate adding Qt host binaries to pathhjk2020-12-151-1/+0
| | | | | Change-Id: Ia301ae016d1d79e55040003280360aba095f2c03 Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
* QmakeProjectManager: Make "system" execution opt-inChristian Kandeler2020-10-161-0/+2
| | | | | | | | | | It has too many side effects. Amends fcd6384f4d. T_SYSTEM and E_SYSTEM are now treated the same. Fixes: QTCREATORBUG-24551 Change-Id: Ib6df2762d329f2ddc0dd66190454159d446a9ac9 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Utils/ProjectExplorer: Move re-usabled bits of aspects to Utilshjk2020-09-231-4/+5
| | | | | | | | | | | Classes involved are BaseAspect and some derived classes, LayoutBuilder and VariableChooser. This is mostly mechanical, with various include/using changes to make it compile. Change-Id: I624a457f3555f102e541c4c71e33a9423af32250 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* Core/Utils: Migrate further to Utils::Idhjk2020-07-061-1/+1
| | | | | | | The coreplugin/id.h header is kept for downstream for now. Change-Id: I8c44590f7b988b3770ecdc177c40783e12353e66 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* DebuggerAspect: Simplify handling of Qml debuggingTobias Hunger2020-02-191-4/+0
| | | | | | | | | | | There should not be a need to have the linkQmlDebuggingLibrary Q_PROPERTY anymore. The property is added for the benefit of the DebuggerAspect, which can just check relevant BuildConfigurationAspect directly. Change-Id: Ic47ca9e26911e096564fe77bd14bebe959b4f116 Reviewed-by: Christian Stenger <christian.stenger@qt.io> Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* ProjectExplorer: Move some of the BuildInfo setup code to central placeshjk2020-01-141-4/+0
| | | | | Change-Id: I8893366acb187ea1a94a8ca272ded2c46cb521d1 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* ProjectExplorer: De-QObject-ify BuildConfigurationFactorieshjk2020-01-101-2/+0
| | | | | | | | | | | | | The QObject was not heavily used. Object name was for debugging only, translation context can be taken from the corresponding BuildConfiguration objects, the qobject_casts in the three big importers are replaced by dynamic_cast, which is good enough in that context. Take the opportunity to re-use translations from base BuildConfiguration for the common cases and sprinkle in some 'final'. Change-Id: I8e9727c98c6e943cb333556861c24e701c2bdf45 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* ProjectExplorer: Replace BuildConfigurationFactory::availableBuildshjk2020-01-091-3/+0
| | | | | | | ... by a function object. Change-Id: I9953ba6915c0177e7c4067d36dd755fc2ba5cf84 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* ProjectExplorer: Use function object for special build config inithjk2019-12-091-2/+0
| | | | | Change-Id: I5da0f28ee1a64f8d9a3145f059019be702bee463 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* ProjectExplorer: Provide the option to build only the app to be runChristian Kandeler2019-12-051-0/+2
| | | | | | | | | | | | | ... instead of the entire project. This can speed up the development cycle by ignoring irrelevant changes in the project, potentially at the cost of missing parts that actually should be re-built (in particular with build systems where a product does not have full knowledge of its dependencies). Supported by qmake and qbs for now. Change-Id: Ic7101aa243e92ba139798d13366d256c1919dcc3 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: hjk <hjk@qt.io>
* Qmake: Simplify use of helper for creation of shadow dir pathshjk2019-12-051-2/+4
| | | | | Change-Id: Iabe22a53f51e3475854e47af9e7f7efae6e16d1b Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* ProjectExplorer: Use full class for TriState valuehjk2019-12-031-3/+3
| | | | | | | | | Allows more compact code on the user side in most cases and can hide the internal 'int-ness' from user code by wrapping Variant conversions in the TriState class itself. Change-Id: I4c91e0cd798ee988a0b9cb057749251a4efebaff Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* QmakeBuildConfiguration: Make use of Qt-related build aspectsChristian Kandeler2019-11-281-3/+15
| | | | | Change-Id: Ia14bb468fe75403839d8dcc8022c4f233c363f62 Reviewed-by: hjk <hjk@qt.io>
* QmakeBuildConfiguration: Make use of SeparateDebugInfoAspectChristian Kandeler2019-11-281-0/+6
| | | | | Change-Id: I0dceadf2a6ef34187fa4107f3fc5d6831ecb7bfe Reviewed-by: hjk <hjk@qt.io>
* Qmake: Make proper use of BuildDirectoryAspectChristian Kandeler2019-11-281-1/+1
| | | | | Change-Id: I439496c85f7e0f402ab038de6a8171dd2f7d2ffd Reviewed-by: hjk <hjk@qt.io>
* Qmake: Move some non-configuration code from build config to build systemhjk2019-11-251-2/+0
| | | | | Change-Id: I6fdf20e740c2824cabb3659f36379f9325ab97bd Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* ProjectExplorer: Move BuildSystem owership to BuildConfigurationhjk2019-11-191-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | ... or Target. This patch moves build system from conceptually "one per project" to "one per target (i.e. per project-and-kit)" or "per BuildConfigurations" for targets where the builds differ significantly. Building requires usually items from the kit (Qt version, compiler, ...) so a target-agnostic build is practically almost always wrong. Moving the build system to the target also has the potential to solve issues caused by switching targets while parsing, that used Project::activeTarget() regularly, with potentially different results before and after the switch. This patch might create performance/size regressions when several targets are set up per project as the build system implementation's internal data are duplicated in this case. The idea is to fix that by sharing per-project pieces again in the project implementation once these problems occur. Change-Id: I87f640ce418b93175b5029124eaa55f3b8721dca Reviewed-by: Christian Stenger <christian.stenger@qt.io> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* QmakePM: Remove unused explicit shadow build flaghjk2019-08-231-2/+0
| | | | | | | | | Looks like the information has been based derived from buildDirectory() != target()->project()->projectDirectory() for a while. Change-Id: Ieb64e72d8fd1d4a6a339b695422fff6355cd3969 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* ProjectExplorer: Set up hack to funnel information to buildstep ctorshjk2019-08-221-1/+1
| | | | | | | | | | | | For now, store most of BuildInfo in the BuildConfiguration. This will allow accessing it in the BuildStep ctors so the BuildSteps can be fully setup without polishing afterwards (as currently done in the main build steps of the three buildsystems, and Nim) This in meant to be temporary to a large degree. Change-Id: If6ade6052f4b96670995399ae97ef7d2313f632a Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* ProjectExplorer: Handle parsingStarted/Finished in BuildConfigurationTobias Hunger2019-08-211-6/+0
| | | | | | | | | Make all buildconfigurations disabled while the project parses. This unifies how this is handled in different build systems. Change-Id: I6afca3743ad1433529a4f9d3bfdf73042799e456 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* QmakeProject: Move QmakeBC::isShadowBuildhjk2019-07-291-1/+0
| | | | | | | ... to the config widget implementation, which is the only user. Change-Id: I7cc70b6219dacedf1ef431a1fe21345b9ad69e7b Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Qmake: Replace QmakeBC::emitQmakeBuildConfigurationChangedhjk2019-07-291-6/+0
| | | | | | | | ... by direct emission of the signal. Signals are public nowadays, so the indirection is not needed anymore. Change-Id: I82328a8fa05458e0478a52157863b7265f0a42ad Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* ProjectExplorer: Merge BuildConfigurationFactory::availableBuildshjk2019-06-271-3/+2
| | | | | | | ... and availableSetups as far as mechanically possible. Change-Id: Ia1d7babe943eea25da97cef7838187c234378673 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* ProjectExplorer: Align signatures of BuildConfigurationhjk2019-06-271-1/+2
| | | | | | | | | | ... availableBuilds() and availableSetups(). Goal is to merge them and inline all the local createBuildInfo() functions. Change-Id: I9f19093163808b6da6dc83977894420e08a1edd9 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* ProjectExplorer etc: More FilePath usagehjk2019-06-261-3/+3
| | | | | | | Mostly for project files. Change-Id: Icb6059f80758865e42cc9f9c092ec6782770dfd7 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* QmakeProject: Use QString mkspec in QmakeKitInformationhjk2019-05-281-1/+1
| | | | | | | ... and BaseQtVersion, and QmakeBuildConfiguration. Change-Id: Iac5f768b80a7f8c2ea9a37d099b285d5793270db Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Qmake: Improve the build dir location warningChristian Kandeler2019-03-061-0/+4
| | | | | | | | | | | | | | | | | | | | The infamous "build dir is not at the same level at source dir" warning for qmake projects has gone through a number of iterations in Qt Creator, having been added, removed and re-added, always to the criticism of some users. Our new approach is as follows: - The warning appears at the widgets where the build directory is set, both in the target setup page and the build config widget. - The warning also appears in the issues pane, but only if the build failed. - The user can disable the warning altogether in a newly introduced qmake settings page. - This option is disabled by default on Unix, because to my knowledge all failure reports have been for Windows hosts. This should finally please everybody. Fixes: QTCREATORBUG-16945 Change-Id: I638be1f15e8c260a5d72047d6850a3a0f685cf03 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* QmakeProjectManager: Remove some unneeded declarationshjk2019-01-301-6/+0
| | | | | Change-Id: I784369a3f449253ac8f6e9fc76185e95751203c7 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* ProjectExplorer: Collapse BuildInfo hierarchyhjk2019-01-301-7/+6
| | | | | | | | | | | | | | ... to pass it around as real values, avoiding, among others, the need of occasional explicit deletion. The formerly extra members of the derived stuff are handled via an extra variant (for data) and via a functor in the build configuration factory. The change is mechanical. Change-Id: I19ca4e0c5f0a5b196fc16dfb98bb005dc679f855 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* ProjectExplorer: Rename IBuildConfigurationFactoryhjk2019-01-291-1/+1
| | | | | | | | ... to BuildConfigurationFactory. It hasn't been an Interface for a while and the new name matches Run- and DeployConfigurationFactory Change-Id: I923c6a27e18a99628251b69e0270e910836e7b2a Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Remove unneeded member initializersOrgad Shaneh2018-11-121-1/+1
| | | | | Change-Id: Ie68b15079d93c48c5027871743c88d9e051e3fbe Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
* ProjectExplorer: Add a BuildConfiguration::regenerateBuildFileshjk2018-07-101-0/+1
| | | | | | | | That's effectively a generic hook for "re-run qmake" without the qmake/QmakeProjectManager dependency. Change-Id: I236d40690cde9047831422b2651ed2284b220959 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* Use make step base for qmake projectsEike Ziller2018-05-171-2/+2
| | | | | | | | | | | | | | There are two differences that get introduced by this change: - The configuration widget checks that there is a build configuration, but not if this build configuration is a QmakeBuildConfiguration. This should not matter, since Qmake is still the only supported project type for the qmake specific make step - It removes the automaticallyAddedArguments(). As far as I can see this never had any effect anyhow, though. They were never actually added to the arguments. Change-Id: I73be227a32117e462def38bdd040dbd7cbcc113f Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* QmakeProjectManager: Consistently use nullptrTobias Hunger2018-05-131-5/+5
| | | | | | | Fixed by clang-tidy modernize-use-nullptr. Change-Id: Ie03a95647d66b97782663b9ff87dbac595496326 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
* ProjectExplorer: Pass id directly to BuildConfigurationshjk2018-05-081-1/+1
| | | | | | | It's what the base class wants, and follows run and deploy precedence. Change-Id: I26eff43337851702417e7e4284fc390b904060f6 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* QmakeProjectManager: Use override consistentlyTobias Hunger2018-05-071-3/+3
| | | | | | | clang-tidy fixes from modernize-use-override check. Change-Id: If75d8ae6b75edf271602e9352ea4cfac849c40ee Reviewed-by: Orgad Shaneh <orgads@gmail.com>
* ProjectExplorer/all: Re-organize BuildSteps/{Deploy,Build}Config setuphjk2017-12-081-24/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This follow the rough pattern of recent *RunConfigurationFactory changes for build and deploy configurations. - Collapse the two lines of constructors similar to what 890c1906e6fb2ec did for RunConfigurations * Deploy* was purely mechanical * Build* ctors are split in connects() in the ctor body to create "empty shell for clone" etc and build step additions in initialize() functions which are only used in the create() case. -- Allows to collapse the shared 'ctor()' functions, too. - Move FooBuildConfigurationFactory::create() implementations to FooBuildConfiguration() constructor. That was a strange and unneeded ping-pong between factories and objects, and furthermore allows one level less of indirection (and for a later, left out here, some reduction of the FooBuildConfiguration interfaces that were only used to accommodate the *Factory::create() functions. - Most {Build,Deploy}Configuration{,Factory} classes had a canHandle(), but there wasn't one in the base classses. Have one there. - Most canHandle() functions were checking simple restrictions on e.g. project or target types, specify those by setters in the constructors instead and check them in the base canHandle() - clone() is generally replaced by a creation of a "shell object" and a fromMap(source->toMap()), implemented in the base, there are two cases left for Android and Qbs that needed(?) some extra polish - generally use canHandle() in base implementation, instead of doing that in all Derived::canFoo() - as a result, canCreate/create/canClone/clone reimplementations are not needed anymore, keep the base implementation for now (could be inlined into their only users later), but de-virtualize them. - Combine Ios{Preset,DSym}BuildStepFactory. There was only one 'dsym' build step they could create. - Split the 'mangled' id into the ProjectConfiguration subtype specific constant identifier, and a QString extraId() bit. Only maintain the mangled id in saved settings. - Make ProjectConfiguration::m_id a constant member, adapt all constructors of derived classe. Not done in this patch: - Finish possible cosmetic changes on top - Add a way to specify restrictions to supported Qt versions (used in Android/Ios), as the base implementation does not depend on the qtsupport plugin - Combine the QList<X> availableFoo() + createFoo(X) function pairs to somthing like a direct QList<struct { X; std::function<X()>; }> fooCreators() to avoid e.g. the baseId.withSuffix() <-> id.suffixAfter(base) pingpong - Remove the *Factories from the global object pool - Do something about priority(). Falling back to plain qmake in android+qmake setup is not helpful. Change-Id: I2be7d88d554c5aa8b7db8edf5b93278e1ae0112a Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* Qmake: Set up environment for initial project parsingTobias Hunger2017-11-281-0/+1
| | | | | | | | | Set up a better environment for initial project parsing (before Kits are configured). Task-number: QTCREATORBUG-19241 Change-Id: I2431113dbbe6fb6a66f95fb1efb36834fa184f3d Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* ProjectExplorer: Do not prepend compiler path to PATH everywhere!Tobias Hunger2017-10-181-0/+2
| | | | | | | | | | | | | | | | | | | | | Do not unconditionally prepend the (c++) compiler path to PATH for all projects using GCC-derived toolchains. Prepend the compiler path in the Qmake- and GenericBuildConfigurations instead. Also change the order: Apply buildconfiguration's addToEnvironment first, only then apply the kit's addToEnvironment. This does change a few things: * CMake and Qbs will now get the normal PATH * MSVC compilers will have their compiler path prepended to PATH by the effected BuildConfigurations. This should be harmless, since that happens before the environment setup script is appended. Task-number: QTCREATORBUG-18714 Change-Id: I548182bc447d80d24f4de4ce7cf12ee1a753ed26 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* Qmake: Remove superfluous qualificationsOrgad Shaneh2017-03-201-3/+3
| | | | | Change-Id: Ib82bd25ec9f5b27c4310fad9757ed4a6daa1907e Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* Merge remote-tracking branch 'origin/4.2'Eike Ziller2016-12-051-1/+0
|\ | | | | | | | | | | | | | | | | Conflicts: qbs/modules/qtc/qtc.qbs qtcreator.pri src/shared/qbs Change-Id: I5050baa31f4a892d00cd6f7e088d1b597921474d
| * QmakeBuildConfiguration: Pass build dir to base setterhjk2016-12-051-1/+0
| | | | | | | | | | Change-Id: I55bd47d62ef644257b49d3423c4d43a6443564aa Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* | Qmake: Initialize members of LastKitTobias Hunger2016-12-011-1/+1
|/ | | | | Change-Id: I7effa619403df78acd34cab3d41a9913a1e4aea1 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
* QmakeProjectManager: Improve signalling of parser stateTobias Hunger2016-11-091-1/+1
| | | | | | | | | | | | | | Correctly signal when parsing of a qmake project starts and stops via the build- and runconfigurations. The buildconfigurations are in the picture since they disable the run buttons when the user has selected to build before deploy and deploy before run. Task-number: QTCREATORBUG-16172 Task-number: QTCREATORBUG-15583 Change-Id: I44b5f5ce8e145cb93dc0022f66e1edcc202875e4 Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>