Commit Graph

196 Commits

Author SHA1 Message Date
Jarek Kobus
ea35ed9ffe AbstractProcessStep: Merge finish() with processFinished()
Change-Id: Ied15ec3ee9d3bcc80b03b2589d101c65f2fd062a
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
2023-01-05 08:43:21 +00:00
Eike Ziller
3f4c3a3db4 Merge remote-tracking branch 'origin/9.0'
Conflicts:
	cmake/QtCreatorIDEBranding.cmake
	qbs/modules/qtc/qtc.qbs
	qtcreator_ide_branding.pri
	src/plugins/texteditor/texteditor.cpp

Change-Id: I9c8f1331be3f5442f1fd28aeb0a9bc07128629d1
2022-12-20 11:05:01 +01:00
David Schulz
445c3624ff QMakePM: fix potential crash when accessing deleted members
Fixes: QTCREATORBUG-28370
Change-Id: I1767678221afc0d1a99194bce2d987a226998da5
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
2022-12-15 13:27:19 +00:00
Jarek Kobus
9f53ba5795 AbstractProcessStep: Devirtualize processStartupFailed()
Since the base implementation of processStartupFailed()
is always calling finish(false), we intercept this inside
QMakeStep::finish override and set m_needToRunQMake accordingly
instead of overriding processStartupFailed.

Change-Id: I1d42d0034521dfad55e5a7e75a2ab234ca76c88d
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
2022-12-13 16:20:53 +00:00
Jarek Kobus
dfd079f050 AbstractProcessStep: Merge virtual functions
Merge processSucceeded with processFinished into one virtual
function. Leave default implementation empty, so that
reimplementations don't need to call base impl. Move
processFinished into private section. Pass just one bool success
parameter into processFinished.

Change-Id: Ide3e262de0c0c5583c9fec2426fa460b6b74a49d
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>
2022-12-02 15:37:16 +00:00
Jarek Kobus
dc3a4f0002 QMakeStep: Remove unneeded override
Change-Id: Ib91ee608673c6a2b33ebfe704c8f31b647ab897e
Reviewed-by: hjk <hjk@qt.io>
2022-11-30 16:14:49 +00:00
hjk
8679138f73 QMake: Fix building of remote projects
Task-number: QTCREATORBUG-28355
Change-Id: I7e4a5b1b74fe7c95f8c56eb512a1714d2afb0a70
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2022-11-30 11:41:52 +00:00
hjk
5c03387c13 QMake: Remove some dead code
Change-Id: If78e579d777a329603cc77d94e1ec98741c1ad37
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2022-11-30 07:12:23 +00:00
BogDan Vatra
661bec83d4 Prefer ARM/X86_64 for Android, prefer 64bit
Change-Id: I8729f6975fc9d99f3ef00a087d4f4eebd0f7e8e5
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2022-11-18 14:21:06 +00:00
Eike Ziller
68388a38dd Merge remote-tracking branch 'origin/9.0'
Conflicts:
	cmake/QtCreatorIDEBranding.cmake
	qbs/modules/qtc/qtc.qbs
	qtcreator_ide_branding.pri
	src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp

Change-Id: I154a9ababa9e166cb06e98652d481fe6234f6399
2022-11-03 13:44:37 +01:00
Marcus Tillmanns
38c8e20071 QMake: Remove unnecessary build dir changed
Previously every time a qmake project was built, the
"buildDirectoryChanged()" was emitted, leading to a complete
reparse of the project file, tests, qml files and qml imports.

To keep "QmakeBuildConfiguration::updateProblemLabel" be called,
we re-introduce the "buildDirectoryInitialized" signal.

Task-number: QTCREATORBUG-27785
Change-Id: I32d881eacb8cf26050c33da643c74c2cab4dc22d
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2022-10-26 11:47:49 +00:00
Christian Kandeler
13f40f5471 Utils: Add sorted() function
For simpler calling code.

Change-Id: Ia0a16a28770fd172f74d06a626148248bf5d3c0c
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
2022-10-25 14:29:45 +00:00
Marc Mutz
8eb4d52342 Port from qAsConst() to std::as_const()
We've been requiring C++17 since Qt 6.0, and our qAsConst use finally
starts to bother us (QTBUG-99313), so time to port away from it
now.

Since qAsConst has exactly the same semantics as std::as_const (down
to rvalue treatment, constexpr'ness and noexcept'ness), there's really
nothing more to it than a global search-and-replace.

Task-number: QTBUG-99313
Change-Id: I88edd91395849574436299b8badda21bb93bea39
Reviewed-by: hjk <hjk@qt.io>
2022-10-07 13:47:53 +00:00
Alessandro Portale
76238bed6c QmakeProjectManager: Convert to using Tr::tr
Change-Id: I08393b1f27bf238c8ac0ccb99e63e56a9d21ecb5
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2022-09-29 12:08:43 +00:00
Alessandro Portale
a917770053 Replace QtSupport::QtVersionNumber with QVersionNumber
Task-number: QTCREATORBUG-27786
Change-Id: I71a44709c264829f629c9dfce702076eda297a77
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: hjk <hjk@qt.io>
2022-09-19 12:08:39 +00:00
Lucie Gérard
a7956df3ca Use SPDX license identifiers
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>
2022-08-26 12:27:18 +00:00
Jarek Kobus
9177649cab QMakeStep: Use Utils::Guard
Change-Id: I1fbc830620cb2db42ac71e3c02e1d3993197a727
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
2022-08-02 10:10:55 +00:00
hjk
b97c495d2b Utils: Make the second parameter to LayoutBuilder::attach() an enum
More explicit and more potential options (e.g. "treat grid as form")
than a bool.

Change-Id: I89413efe30410160c38b0e524ba64288dde2332e
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2022-07-26 11:52:16 +00:00
hjk
2496ffe3ce Code cosmetics
Mostly unused #include's, also sort them or reduce scope.

A few namespaces, ...

Change-Id: I9ee71e07de7157c9942125672addf87dd41e78f1
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: hjk <hjk@qt.io>
2022-06-24 14:44:13 +00:00
Christian Kandeler
958531adbf Revert "QtSupport: Add support to register Qt versions via qtpaths"
The patch breaks several plugin unit tests; at the very least QtSupport,
AutoTest and ClangCodeModel.

This reverts commit 72aa77ced7.

Change-Id: Iaa7f452d0f43d0072b0bbcf8934fa0dcd6f9b240
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: hjk <hjk@qt.io>
2022-06-01 14:24:20 +00:00
Alessandro Portale
72aa77ced7 QtSupport: Add support to register Qt versions via qtpaths
qmake is a "build tool", and it is also a "query tool" when called with
parameter "-query". Qt Creator, so far, assumes that building and
querying with a Qt installation are done with one and the same tool:
qmake. This change adds the ability to register a Qt version vie either
qmake or qtpaths and still build with qmake, if that is installed (which
is not anymore mandatory from Qt 6 on).

1) Distinguish between Qt query tool and qmake build tool:
Add QtVersion::queryToolFilePath() to the existing
QtVersion::qmakeFilePath(), and use queryToolFilePath in most "query"
related code, and qmakeFilePath when building with qmake (e.g. in
QmakeProjectManager).
Also, a couple of functions and variables were renamed from *qmake* to
*queryTool* in order to express that the affected code is about
querying/managing Qt versions rather than about building with qmake.

2) Support manual Qt Version adding by qtpaths via file dialog
This change adds qtpaths to the "Add" Qt Version file picker filter.
After selection, "qtpaths -query" is executed for testing purposes. If
that fails, (e.g. because it is an older Qt version), qmake is instead
chosen, silently.

Task-number: QTCREATORBUG-22175
Task-number: QTCREATORBUG-25546
Change-Id: I4d9c1e7eec7d5ae7c5a8d2e1a1ed95addff69966
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2022-06-01 06:09:48 +00:00
hjk
8dacb123e0 Utils: Pass MacroExpander to ArgumentsAspect constructor
In the past we wanted to keep the aspect constructor simple but
it turned out that exceptions were needed and accumulating, so those
are likely here to stay.

By passing also the MacroExpander to the ArgumentsAspect constructor
allows other single-purpose warts like the ProjectConfiguration::doPostInit()
machinery can be removed.

Change-Id: I148b0ca1ab0740270eecd0d3134620de65a86d4f
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
2022-05-20 07:06:10 +00:00
hjk
25f5771aa4 Rename QtSupport::BaseQtVersion to QtVersion
... 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>
2022-01-24 12:13:19 +00:00
Alessandro Portale
d7ed48ac6f Add missing "emit"s
Change-Id: I88a7397c7689b1e72cdd0e52077f8097443963c0
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2021-11-11 14:10:42 +00:00
Assam Boudjelthia
91117a1c36 Android: Clean up for extraData constants
clean, rename and delete unused constants, we well as unify the
usage between qmake, cmake, and qbs.

Change-Id: I8827ac2f2f7660e337694fef17f744e727bd776a
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2021-10-06 08:07:42 +00:00
Eike Ziller
8e51295959 Merge remote-tracking branch 'origin/5.0'
Conflicts:
	src/libs/utils/processreaper.cpp
	src/plugins/clangcodemodel/clangmodelmanagersupport.cpp
	src/plugins/cmakeprojectmanager/cmakeprocess.cpp

Change-Id: Ie248bcb02a80f3e02ab19d73033ce2ba31e7fd83
2021-09-07 11:05:40 +02:00
Eike Ziller
f3418d8661 QMake: Fix that qmake was run on every build on macOS
The commit a71d725e46 which fixed issues
on ARM Macs also removed logic for CONFIG+=<arch> arguments to qmake,
which was removed from qmake in Qt 5.6 (since PPC and 32bit Macs are no
longer supported or relevant, qbase f58e95f098c8d78a5f2db7729606126fe093cbdf).

The commit only removed part of the logic though, leading to the
Makefile parser and the qmake step disagreeing on the architecture of
the last qmake run, leading to the qmake step being executed again.

Remove the whole architecture detection and matching logic from
everywhere, which only did anything meaningful on macOS, and is not
needed there anymore either.

Fixes: QTCREATORBUG-26212
Change-Id: Ib60ebca1143296194454a63992ab90a97fdb56b6
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2021-09-06 10:10:32 +00:00
hjk
4ec490e77e Qmake: Proliferate FilePath use
Change-Id: Id9bdaf127b9b45ec01a12c21dccd8955e5fd2846
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-08-20 04:49:34 +00:00
Tim Jenssen
22121885fe baseqtversion: commands are FilePathes
also renamed the qmlscene* qmlRuntime*

Change-Id: Ifd522e21f5ce30aaa54060fdcebee2cd8b9463c4
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2021-07-14 09:50:01 +00:00
Tor Arne Vestbø
a71d725e46 Add workarounds for running under Rosetta on macOS
When Qt Creator is built as an Intel binary, and runs on
an Apple Silicon (ARM) Mac, it will be run via the Rosetta
translation layer. This means any process spawned by QtC,
including qmake, CMake, and lldb, will launch as x86_64
binaries as well.

For qmake and CMake, this affects their default choice of
build architecture, resulting in x86_64 builds of user
applications. We want to produce native arm64 apps, even
if Qt Creator itself isn't one, so we explicitly detect
the situation, and if Qt has an arm64 slice, we default
to arm64 builds.

The logic of adding CONFIG+=x86_64 to the qmake step has
been disabled, as the assumption that a single qmake run
and build will produce only a single architecture does no
longer hold. The corresponding logic in Qt was removed
in 2015 (qtbase f58e95f098c8d78a5f2db7729606126fe093cbdf).

In the case of lldb, running it as an x86_64 binary fails
to attach to the running application. We work around this
by using the 'arch' tool to explicitly launch it as an
arm64 binary. This works for debugging both arm64 and
x86_64 applications.

Change-Id: I65cc0f600223990f25c76cef18d927895e551260
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2021-07-13 11:18:23 +00:00
hjk
1fd18e31c1 Qmake: Use local Makefile path when constructing make command
The command will be executed by qmake and make steps on the build device,
from that perspective the Makefile path is local.

Change-Id: I7a72002126975ea462daf528f2c1f490d433af77
Reviewed-by: David Schulz <david.schulz@qt.io>
2021-06-04 10:10:40 +00:00
hjk
f2f40efa03 Utils: Move process arguments class out of QtcProcess
The main QtcProcess interface is nowadays a CommandLine, with no
explicit references left to QtcProcess::Arguments and related static
helper functions, so it only clutters the QtcProcess class interface

So move these items out of QtcProcess, later potentially to a separate
file pair.

Change-Id: I45c300b656f5b30e2e2717232c855fdd97c2d1d7
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-05-11 09:45:24 +00:00
hjk
3cad2b8c74 QMakeProjectManager: Show full make command path
... including the bits referring to a device.

Change-Id: I1043a1b64e04a0d8ace45c71edc324189e93ddb0
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2021-04-28 08:36:25 +00:00
hjk
9dfdb9f0a2 QmakeProjectManager: Some code cosmetics
Namespaces, foreach, parantheses.

Change-Id: I641811d66970cbb275688a73c8765be00ba295bb
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-04-23 10:10:23 +00:00
Eike Ziller
b213c87cf4 Merge remote-tracking branch 'origin/4.15'
Conflicts:
	src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp

Change-Id: I722a94f37bdd1d78625cfae503ba6d02ff083c63
2021-03-25 11:06:59 +01:00
Eike Ziller
e9bf841dc9 Fix lupdate issues
Some wrong tr calls / missing tr functions.
Some places where we need to bring lupdate to the right track with
regard to namespace resolution.

Change-Id: Idf552054a34e24d9671db68c816bf37f4d403dbc
Reviewed-by: hjk <hjk@qt.io>
2021-03-22 15:00:37 +00:00
hjk
035a6ff031 Utils: Avoid intermediate widgets when using LayoutBuilder
In most cases, the layout constructed in the builder was set
on a widget which in turn was put into a vbox in the actual
widget. This is not necessary, but needs some re-ordering.

Also make sure that using not-yet-parented widgets during
layout construction does not cause visible artifacts.

Change-Id: I75727a571da093d3131ea6fba467c2c646cdb6f1
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-03-16 11:37:44 +00:00
Eike Ziller
1d2b5db02f Merge remote-tracking branch 'origin/4.14'
Change-Id: I2ae0eb18782224e48cd20d41907f9dfea6ee1771
2020-11-10 13:42:46 +01:00
Assam Boudjelthia
33b06f5b81 Android: avoid adding ANDROID_ABIS to the project file
Use buildSystem::property()/setProperty() to keep track of the
selected ABI and avoid polluting the *.pro file with it.

Task-number: QTCREATORBUG-24674
Change-Id: I5516a77c9f2d1a8975045e1d7c383e72c52db9d7
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: hjk <hjk@qt.io>
2020-11-05 17:08:46 +00:00
hjk
d26d9250b2 QmakeProjectManager: Use StringAspect for effective qmake call
... in QmakeStep.

Change-Id: Idf8ef37f99e08cd3462af4e4dd2b1639f82694df
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-11-05 16:08:45 +00:00
hjk
3ab54e91b1 QmakeProjectManager: Use ArgumentsAspect in qmake step widget
Change-Id: I7e12a571841f85f80c6439d5e7e834ff7c53305d
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-11-05 14:59:39 +00:00
hjk
7add8a81db QmakeProjectManager: Use SelectionAspect in QmakeStep
For the Debug/Release combobox.

Change-Id: I494778c0f633a34a25a97217b94321ef1944e588
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-11-03 11:47:25 +00:00
hjk
045881089f QmakeProject: Don't crash on project import
Amends fc1fc6a07a.

Fixes: QTCREATORBUG-24802
Change-Id: I62e7e0bab82ae1b025c053785b77586aa78bcd1f
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-10-26 16:30:11 +00:00
hjk
ab76991286 QmakeProjectManager: Use LayoutBuilder for QmakeStep config widget
Towards aspectification.

This intentionally also removes the extra inner margin in the
widget as a side effect, increasing the similiarity with other
step widgets.

Change-Id: Ic315369479275a317441ff2c5abbec53695102f2
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-10-06 12:59:26 +00:00
Eike Ziller
d323eeec52 Merge remote-tracking branch 'origin/master' into 4.14
Change-Id: I4b37b89cc1dd2c53217579ea554af0fb7994fa7e
2020-10-06 10:24:41 +02:00
hjk
a99127d73b QMakeProjectManager: Do not ask to rebuild too often
Due to the incomplete aspectification here, some of the connections
are set up in createConfigWidget(). Config widgets are created
and destroyed when the build configuration changes, and connections
that did not directly depend on the widget or subwidgets accumulated.

Use the the created widget as guard object to ensure connections
live only as long as the widget.

Task-number: QTCREATORBUG-24725
Change-Id: I4581f98e684ac92fd43ceba598d391c4dc8dbebe
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-10-06 08:21:00 +00:00
hjk
97c6c13dcb ProjectExplorer: Remove BuildStepConfigWidget
After the previous changes it was only an empty wrapper around QWidget.

Change-Id: I58dcd82d8342c7de5e2df537044f6cf3de878a67
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-10-06 08:06:39 +00:00
hjk
b97b7dc6f2 ProjectExplorer: Move BuildStepWidget::summary etc to BuildStep
The step is the source of information anyway, and available at the
only place of use. No need to copy that over to the widget, neither
for keeping it up-to-date there when the mechanism is already
available in the step itself.

This creates quite some potential for the simplification of
the various createConfigWidget implementations in follow-up patches.

Change-Id: I4474665f194a1ff7c5792ad086ed53c8d3ce13e6
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-10-05 08:16:51 +00:00
hjk
591e93316d Consolidate build/deploystep default display name handling
Use the display name from the factory as default, override if needed.

Change-Id: I03519c998432fea4120b0de8b2fc2686644635f2
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-10-02 13:18:45 +00:00
hjk
cec468d78a Utils/ProjectExplorer: Move re-usabled bits of aspects to Utils
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>
2020-09-23 07:44:42 +00:00