Commit Graph

3443 Commits

Author SHA1 Message Date
Tobias Hunger
ea34cb2b4c CMake: Make "Run CMake" menu entry reliably run cmake
Task-number: QTCREATORBUG-19704
Change-Id: I575e530ad28641753fd57d371dbf081f4a13b337
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-07-23 11:11:12 +00:00
Tobias Hunger
20cccf53ae CMake: Make server-mode handle server restarts
Make ServerModeReader::parse handle the forceCMakeRun flag gracefully.

The problem there was two-fold:
1. The server would send a "isReadyNow" signal when its connection is
   estabilshed. This made the ServerModeReader trigger another parse run
   with the same parameters.

   That would in turn would force a new ServerMode process to be created.

2. The "configure" request that is sent races the new ServerMode
   process being connected.

Solve both issues by connecting a slot to the server-mode's
connected signal and have that do the right thing.

Change-Id: I26f9ac00d6ad6397a1fd1fab78610951f535ab53
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-07-23 08:50:20 +00:00
Christian Kandeler
b1dbd7e358 ProjectExplorer: Update run config list centrally
This prodecure requires no further information from the specific project
managers, so we can start it from the ProjectExplorer itself.
Also wait until after project parsing has officially finished and the
run configurations have updated their "enabled" state. Otherwise,
RunConfiguration::isEnabled() will always return false, potentially
leading to the active run configuration getting switched
unintentionally.

Fixes: QTCREATORBUG-21692
Change-Id: I32f4f758b5baa6222329d07b811993568eff1ee3
Reviewed-by: hjk <hjk@qt.io>
2019-07-22 14:02:57 +00:00
Tobias Hunger
700c88418c CMake: Fix inverted logic bug
This was introduced by d5383c92a8

Change-Id: I88736c14d4dc811b2b375ee2a9b97d3114524d01
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2019-07-22 11:52:29 +00:00
Tim Jenssen
333b33edbe Merge remote-tracking branch 'origin/4.10'
Change-Id: Iaf27911e4e9fb762c1a24c84c458462bafe95728
2019-07-12 15:53:56 +02:00
Christian Kandeler
f7520b7d99 Make the project managers tell the code model about include paths
... from the environment.

Fixes: QTCREATORBUG-17985
Change-Id: I9b54e550121cfcc0684a6e173337d59d235c6107
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2019-07-12 09:13:42 +00:00
hjk
79fd852f70 Cmake: Fix deprecation warning
... and use the result of the expression, which was previously computed
but not used.

Change-Id: Ic995d2842e71bf57ea404494e3586205a0c154e9
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-07-05 13:29:29 +00:00
hjk
c77cef5706 Avoid more deprecation warnings
Change-Id: Icc7bb7a4ccf7fc9f89f6f668c194ccd440e5231c
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-07-05 07:49:48 +00:00
Tim Jenssen
1df6443d4a Merge remote-tracking branch 'origin/4.10'
Conflicts:
	qbs/modules/qtc/qtc.qbs
	qtcreator_ide_branding.pri
	src/libs/utils/synchronousprocess.cpp
	src/plugins/baremetal/iarewtoolchain.cpp
	src/plugins/cmakeprojectmanager/cmakeproject.cpp
	tests/unit/unittest/CMakeLists.txt

Change-Id: I124ad492df403286751e175d27fe36487ddf6d07
2019-07-04 15:17:55 +02:00
hjk
6a58666f44 More Utils::toSet/toList
... and unrelated cosmetic changes.

Change-Id: I591b17fd5289831e701b683f8fb47816efd1fa67
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-07-04 12:28:38 +00:00
hjk
2b7fab1668 ProjectExplorer: Promote CMakeToolChainData to a global structure
... and use it in ToolChainFactory::detectForImport() overloads.

Change-Id: I107b9d5e185580b8fbef4c6e0233fdae5d253506
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-07-04 10:34:58 +00:00
hjk
5dbfd46bcf ProjectExplorer: Merge BuildConfigurationFactory::availableBuilds
... and availableSetups as far as mechanically possible.

Change-Id: Ia1d7babe943eea25da97cef7838187c234378673
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-06-27 14:19:53 +00:00
hjk
f94e55b807 ProjectExplorer: Align signatures of BuildConfiguration
... 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>
2019-06-27 13:59:39 +00:00
hjk
e7c6169d70 ProjectExplorer etc: More FilePath usage
Mostly for project files.

Change-Id: Icb6059f80758865e42cc9f9c092ec6782770dfd7
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-06-26 16:02:23 +00:00
hjk
f878486fcb Use build step ids for construction in more cases
Change-Id: If2deb7c02c082e29cc6b1f0408c0d0e06d1c584b
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-06-26 15:00:30 +00:00
Tobias Hunger
18eb0b39c5 CMake: Do not treat "Source Files" source file group special
The idea was to make the project tree a bit simpler by removing the
auto-generated "Source Files" group that CMake adds. But this left out
"Header Files", which is also auto-generated by CMake and might
surprise users.

So let's remove this special case again.

Change-Id: If87bf9f89e1ff0be855c2e9b915d64d77d51d2be
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-06-21 09:37:36 +00:00
Christian Stenger
18d96ba833 CMake: Fix compile with MSVC
Change-Id: I3f15a36579aa7bd77db1fd5d034c46cb22331a4f
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-06-21 09:19:06 +00:00
Christian Stenger
9c49cb65d3 CMake: Fix compile for gcc5.3
Change-Id: I207af16d54ad14ba27780ce82208c315db8e5170
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-06-21 08:59:21 +00:00
Nikolai Kosjar
b6a9f0245b CMake: Fix warning about unsigned expression
warning: comparison of unsigned expression >= 0 is always true

Change-Id: I0a794bd7aa27a8a23094db4d95c676080b6a63b6
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2019-06-21 07:18:01 +00:00
Tobias Hunger
66a875ac53 CMake: code cosmetics
Change-Id: Iebe736aa82bbd8f713d304d10fe6a30707b3adef
Reviewed-by: hjk <hjk@qt.io>
2019-06-20 14:41:15 +00:00
Tobias Hunger
5bcd59c94f CMake: Simplify buildkey generation
Just use the target name as buildkey. This is unique in cmake projects, so
there is no need to mangle the source directory into the whole thing.

This is a problem since different readers might report different source
directories. That will then result in RunConfigurations getting duplicated
after switching the reader types.

Task-number: QTCREATORBUG-22129
Change-Id: I849ab68f221d732341e98faa9a4e757d3a495b2a
Reviewed-by: hjk <hjk@qt.io>
2019-06-20 14:41:04 +00:00
Tobias Hunger
add60c0148 CMake: Avoid a bit of useless processing when updating the project tree
Do not pass around a list of filenodes with all the known header files.
That list gets converted into a QSet<FilePath> and then that is used.

Just generate the QSet<FilePath> directly and avoid that conversion.

Change-Id: I2444a2a6b4a1600fe476e66673a1a2e9c8900764
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: hjk <hjk@qt.io>
2019-06-20 14:40:55 +00:00
Tobias Hunger
129c0abb5a CMake: Get some timings about the data update process
This should help to remove UI blocking by pointing to the costly
operations.

Change-Id: I8b3250e9ec5995c7b6a705337d60250554b77b53
Reviewed-by: hjk <hjk@qt.io>
2019-06-20 14:40:45 +00:00
Tobias Hunger
d6d133da42 CMake server-mode: Make sure the target's source dir is absolute
Change-Id: I3c74e3a0ee9c854e4b97826a4397579d4755d8e0
Reviewed-by: hjk <hjk@qt.io>
2019-06-20 14:29:00 +00:00
Tobias Hunger
67186c761f CMake: Add logging category for generic cmake stuff
Use the category in CMakeProject.

Change-Id: Idb19a92080884f1feff082d8e9db3ca5336b9249
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2019-06-20 13:47:39 +00:00
Tobias Hunger
0679671547 CMake: Better display name in project tree when parsing fails
When project parsing fails, then the project node might be non-nullptr but
empty. This case is handled in setRootProjectNode(...), where such a
node gets discarded (rootProjectNode() will return a nullptr afterwards).

In this case, do not use the project name that came in from the parser as
it might be wrong.

Change-Id: Iec11aa2d88cca7352d957f428aab24b0f1affd49
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2019-06-20 13:47:23 +00:00
Tobias Hunger
c61c499970 CMake: Add an option to override cmake reader type
Add an option to override the cmake reader type that is going to
be used.

By default the reader type is "auto" for autodetection, but that can
get changed in the cmaketools.xml settings file. Other supported options
are "tealeaf", "servermode" or "fileapi" and that will force that reader.

You can also set QTC_CMAKE_IGNORE_FILEAPI=1 in your environment to force
creator to ignore the existence of fileapi support in all cmake tools.

Change-Id: I2006616312090ce2909154dc1966f7a8eaa2949a
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-06-20 13:42:02 +00:00
Tobias Hunger
a95eb53d3b CMake: Add initial fileapireader class
Change-Id: I620cba7cc1c2a5ac56789fa9770dce573c6b19cd
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-06-20 12:25:36 +00:00
Tobias Hunger
f02fcaf02c CMake: Fix WS
Change-Id: I24a265db05f4678a07f582f2e9a66ed1a17b0ac2
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-06-20 12:22:05 +00:00
Tobias Hunger
0026d3dc3d CMake: Keep more accurate information on build types
Do not map anything vaguely library-related into DynamicLibraryType. This
will prevent creator from e.g. trying to deploy ObjectLibraries.

Change-Id: I34a0d981d2a949f587e1804268cc66231aedd545
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-06-19 14:45:32 +00:00
Tobias Hunger
e2d6c0bfea Project: Avoid copying the entire files(...) list
Avoid copying the entire list of files known to a project just to
filter out a couple of files from it.

Change-Id: I58b2e323f9678058ba482353eb777a55189fe05d
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-06-19 13:40:28 +00:00
Tobias Hunger
97392daaf3 CMake: Allow cancellation of CMake process
Allow cancellation of cmake runs in tea-leaf and fileapi modes.

At least in those modes cmake can now get stopped when it goes into
an infinite loop.

Change-Id: I4e9bd769292325b9837904cd391ff61dbc477898
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-06-19 10:14:40 +00:00
Tobias Hunger
295a0c5593 Make: Fake progress when running cmake
Neither tea-leaf nor fileapi provides progress information on cmake's
configure/generate runs. So fake it.

Change-Id: I0e336b4ba145793df6674f4847be1dddad7508cf
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-06-17 15:06:46 +00:00
Tobias Hunger
65658f411b CMake: Unify error reporting for builddirmanager's information retrieval
Use a dedicated errrorMessage out parameter for error reporting in
the builddirmanager methods related to information retrieval. Those are
called after the parsing has finished.

This frees the errrorOccured signal of the builddirmanager to be used only
when the parsing itself has failed.

Change-Id: Ieefc32c0386769479177a6bd4bc4a0e77df5db7b
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-06-13 12:36:44 +00:00
Tobias Hunger
68bcaeff64 CMake: Fix warnings in servermode reader
Change-Id: I22dd49911154fdb4f813a2ee69195d9183cb11b6
Reviewed-by: hjk <hjk@qt.io>
2019-06-13 12:34:59 +00:00
Tobias Hunger
023d995460 CMake: Move some code out of the ServerModeReader
... so that it can get re-used in the to-be-written fileapi reader.

Change-Id: I2693e6bb102d910eb505882bf3468c34272a5d04
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-06-13 12:27:44 +00:00
Eike Ziller
f3011f057c Merge remote-tracking branch 'origin/4.10'
Conflicts:
	src/plugins/debugger/cdb/cdbengine.cpp

Change-Id: Idcfd19292730d2b0e67816715f7aa2cc0eb71c48
2019-06-13 14:03:02 +02:00
Eike Ziller
39477594da Merge remote-tracking branch 'gerrit/4.9' into 4.10
Change-Id: I033d6baa40af45ae1eb6ed82827ff51213c832f5
2019-06-13 13:53:02 +02:00
Tobias Hunger
66dc831398 CMake: Do not QTC_ASSERT when Qml support is disabled
Change-Id: Ifb84aeb252053e1e6d856650d6ec54c27d589fa0
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-06-13 11:48:58 +00:00
Tobias Hunger
202506ce16 CMake: Make sure to run cmake when that is requested
Pass on the request to run cmake on to the builddirreaders.

Task-number: QTCREATORBUG-19704
Change-Id: Iafeba61f46d6bb6783fc62d0504bb07dde2c4612
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-06-12 13:48:07 +00:00
hjk
0981a0af25 CMake: Compile fix
Amends d5383c92a8

Change-Id: Ie0743ac01adbae7eff1d84979acaed68474bc760
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-06-12 13:43:35 +00:00
Tobias Hunger
a51b8a061e CMakeTool: Update cmake fileapi detection
CMake rejected a patch to add fileapi detection via cmake -E capabilities
output and asked to base the detection on the version number. This decision
has been revisited now and starting with cmake 3.15 the supported fileapi
object kinds and there version are reported.

Update Creator to use this information and to fill in the missing data for
cmake 3.14.

Change-Id: I382310a098925491921acf1b59099bbe0859cde2
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-06-12 11:56:19 +00:00
Tobias Hunger
d5383c92a8 CMake: Run cmake with all arguments when no CMakeCache.txt file is found
Always run cmake with all arguments when no CMakeCache.txt file is
found. This allows for the builddirreaders to become a bit simpler.

Change-Id: I67839fd560fb77f6832b1cefc3ff016baa6bae89
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-06-12 11:55:47 +00:00
Tobias Hunger
169ced3e08 CMake: Use Utils::CommandLine in CMakeProcess
Change-Id: If8dc221232869012d38ca7c02012cb7db5482d3a
Reviewed-by: hjk <hjk@qt.io>
2019-06-11 08:35:54 +00:00
hjk
ca4ba34229 Use Utils::FilePath in SynchronousProcess
Adapt callers and surrounding code.

Change-Id: Ie6c1883a44169cf9d790d06b660f46d24dc24c89
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-06-11 08:11:07 +00:00
Tobias Hunger
1f6c0f63a7 CMake: Implement cmake true/false semantics
Implement proper support for cmakes true/false value semantics.

Change-Id: I127f73f62d1b7b21b2fee032f40c9cc448b876b8
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-06-07 11:13:11 +00:00
Tobias Hunger
08d905ae3d CMake: Store pointer to CMakeProject in BuildDirManager
Use this back-pointer to validate the buildconfiguration.

Use the validated buildconfiguration consistently. In theory
the buildconfiguration is valid at all times (since deleting
a buildconfiguration will trigger an update to the parameters
in BuildDirManager), but better be safe.

Change-Id: I614d9ce16e4974a9437a2f44756f01c71a5ede13
Reviewed-by: hjk <hjk@qt.io>
2019-06-07 11:07:16 +00:00
Tobias Hunger
daaef73682 CMake: Factor out code to run cmake from tealeafreader
Change-Id: I10947596ce08eb0148a5bf258bdf26cfced43db1
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
2019-06-07 11:07:07 +00:00
Tobias Hunger
c961d9fc9e CMake: Make all readers use isReadyNow() signal
The tealeafreader used to not ever use this signal and used
the isReady() method to short-circuit the whole mechanism.

Change-Id: I2f7caedeedf977c70a5d7807e3a92775757a6fef
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
2019-06-07 11:01:26 +00:00
Christian Kandeler
0c74f6cc21 ProjectExplorer: Add "build for current run config" menu entry
This lets users build the executable corresponding to the currently
active run configuration. It's functionally equivalent to locating the
corresponding node in the project tree and choosing "Build" from the
context menu.

Fixes: QTCREATORBUG-22403
Change-Id: Ic2b729c7ce17f1ad944dc06746bb9d6db90b6c61
Reviewed-by: hjk <hjk@qt.io>
2019-06-06 15:05:56 +00:00