Commit Graph

1245 Commits

Author SHA1 Message Date
hjk
7e90aba530 QbsProjectManager: Move QbsRunConfigurationWidget to .cpp
Change-Id: I4fd99a2e0a82911bd849879f50ebff24bb4d8be8
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2018-03-12 13:24:45 +00:00
hjk
9541aa7772 QbsRunConfiguration: Re-model based on RemoteLinux precedence
Task-number: QTCREATORBUG-19985
Change-Id: Ifd95187b72fed3565552ecd14f3353b7e7df0069
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: hjk <hjk@qt.io>
2018-03-12 09:38:27 +00:00
Christian Kandeler
102a058c25 QbsProjectManager: Fix "equivalent command line" contents
- We forgot to adapt to the introduction of the "config" key.
- The space character was missing before the QML debugging property.

Task-number: QTCREATORBUG-20024
Change-Id: Ie4a94a04989caa14b1ddc11c8595d679d1871625
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2018-03-12 08:12:17 +00:00
Tobias Hunger
835d4e92f3 Project: Improve default implementation of Project::needsConfiguration
Change-Id: Ic4d227334d818658f179c0589462551509274c17
Reviewed-by: hjk <hjk@qt.io>
2018-03-09 12:57:59 +00:00
Christian Kandeler
554adb7fac QbsProjectManager: Refactor updateApplicationTargets()
No functional changes.

Change-Id: I8f7f5d0e0dfd3ff753e0dbc56be9ff298fbb75e2
Reviewed-by: hjk <hjk@qt.io>
2018-03-07 16:27:58 +00:00
hjk
8b92da254e Rename IRunConfigurationFactory to RunConfigurationFactory
It's not an *I*nterface anymore

Also, remove the in-all-but-one case unused QObject parent and the
object name that was only there for debugging purposes. The class
type serves the same purpose in the debugger.

Change-Id: I0dafb01e6b4fd7c7df04a63aaa3ef3e4bd693f6f
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2018-03-07 16:07:42 +00:00
Tobias Hunger
6e419d642a RunConfigurationFactories: Fix crash opening non-qmake based projects
Make sure the Qnx RCs only get triggered for qmake-based projects and defend
against broken set-ups using QTC_ASSERT.

Task-number: QTCREATORBUG-19755
Change-Id: If64b73de49b0199308f767151d68909dc8b1bc53
Reviewed-by: hjk <hjk@qt.io>
2018-03-07 14:35:15 +00:00
Robert Loehning
37aea43479 Don't translate default windowTitle again and again
Change-Id: I4b4ff16e02c517bcd5a7c5ae73f62dd2a5bcc7cc
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2018-03-06 14:57:40 +00:00
Alessandro Portale
5915779e81 ProjectExplorer: Make the Options/Kits Category icon themable
Change-Id: I70c3fffd11b217937d6a85e88da1de688031b8e0
Reviewed-by: hjk <hjk@qt.io>
2018-02-28 18:36:00 +00:00
hjk
39b66f2cb8 Introduce and use IRunConfiguration::addSupportedTargetDeviceType
In line with addSupportedProjectType, saves a few cycles due to the
non-use of the temporary list, and in theory more flexible than the
existing set...(QList<Id>) as it potentially allows dependent plugin
to declare support for already existing configurations instead of
re-implementing their own.

Change-Id: I2b83e90de49daa9bfce6f780c5f51c2e971eb7d1
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2018-02-23 07:08:55 +00:00
Tobias Hunger
997ece4361 Project: Remove unused Project::requiresTargetPanel(...)
Change-Id: I7a5298edefd7e26841c4070be23534dd33d093cb
Reviewed-by: hjk <hjk@qt.io>
2018-02-19 13:22:21 +00:00
hjk
9f2bb5d0c5 ProjectExplorer: Simplify collection of RunConfigurationCreationInfos
Instead of calling twice for AutoCreated and UserCreated, call once
and record to which case it belongs. Only the 'both' and
'user only' combination are ever used.

Change-Id: I9c15085bcbb4bf6584a6156135f2084dbfc51c1c
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2018-02-15 14:23:02 +00:00
Eike Ziller
c7fdb93865 Merge remote-tracking branch 'origin/4.6'
Conflicts:
	qbs/modules/qtc/qtc.qbs
	qtcreator.pri
	src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp

Change-Id: I2445882a270731b866b04f28ff87d161224c539a
2018-02-13 13:37:37 +01:00
Tobias Hunger
3874b6b6ec KitInformation: Improve robustness to nullptr passed as kit
All the KitInformation methods need to gracefully handle a kit that is
a nullptr. Ensure this is indeed the case.

This might fix the actual trigger for QTCREATORBUG-19469.

Change-Id: Id78ac8a26c1be908f41a425ff1935b86888e4b8b
Reviewed-by: hjk <hjk@qt.io>
2018-02-13 08:46:35 +00:00
Christian Kandeler
8c7567c447 QbsProjectManager: Fix uniqueProductName() and productDisplayName()
These still assumed we can only multiplex on profiles.

Change-Id: Ice3dfe06c1be732ecae42db75155e930b0554b6f
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2018-02-09 16:25:39 +00:00
Christian Kandeler
d595896ea4 QbsProjectManager: Do not map QML debugging setting to Qt.declarative
QtQuick1 is no longer supported by Qt Creator.

Change-Id: I684ac12bca29779a18cc870e94071412edd29985
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2018-02-09 13:18:22 +00:00
Christian Kandeler
60a3fd59d4 QbsProjectManager: Use sensible default for enabling QML debugging
Task-number: QTCREATORBUG-19655
Change-Id: I2c330909c86c48f7c79fd2c016c41d82388e3c32
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2018-02-09 12:56:47 +00:00
Christian Kandeler
f5856f4bbc QbsProjectManager: Give build step a "linkQmlDebuggingLibrary" property
The DebuggerRunConfigurationAspect uses this property to decide
whether to enable QML debugging by default.

Task-number: QTCREATORBUG-19655
Change-Id: I71cc1127ee9d470a7cfedd424f8487f83d38db67
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2018-02-09 12:56:31 +00:00
Christian Kandeler
a343e83ba8 QbsProjectManager: Provide a FileType for QML files
This is needed later to auto-detect whether to enable QML debugging.

Task-number: QTCREATORBUG-19655
Change-Id: I9f33119c20299cd0a2e77727bbe4396fb6eb9b12
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2018-02-09 12:56:15 +00:00
Christian Kandeler
18277e7ea1 QbsProjectManager: Fix QML debugging support
The module property override needs a "modules." prefix these days.

Task-number: QTCREATORBUG-19655
Change-Id: I4d6025c479a65cf94968338884f80b0ffa5ac141
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2018-02-09 12:17:17 +00:00
Christian Kandeler
e463873d62 QbsProjectManager: Fix display of QML debugging warning icon
Due to a typo in the code, it was almost never shown, except initially
when it shouldn't have been.

Change-Id: I8d5ab3f28fddde7b996d3ca74bc69f2f549bedc1
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2018-02-09 12:16:44 +00:00
Eike Ziller
5432dd1f5c Merge remote-tracking branch 'origin/4.6'
Conflicts:
	src/plugins/coreplugin/locator/locator.cpp
	src/plugins/imageviewer/imageviewerplugin.cpp
	src/plugins/remotelinux/remotelinuxplugin.cpp
	src/tools/clangbackend/source/tokeninfo.cpp
	tests/unit/unittest/data/highlightingmarks.cpp

Change-Id: I74cc3ba3a2836cb9d0e65d3380d8c4f88d720c67
2018-02-07 11:58:23 +01:00
hjk
0c3aed2549 QbsProjectManager: Avoid use of global object pool
Change-Id: I6cce96dafda1694c46a4302ae121f7c08a9c82d8
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2018-02-07 07:51:41 +00:00
Tobias Hunger
e1409ae50f IRunConfiguration: Remove BuildTargetInfo from the RC factory APIs
Change-Id: I1d77d22a1c1ce1cbcfca8af7855ae7b935ac1c2c
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: hjk <hjk@qt.io>
2018-02-06 09:01:32 +00:00
hjk
c4b3779b42 QbsProjectManager: Cut down visible QbsManager interface a bit
Change-Id: I2c2d50f1ec0c7fdb5e9a629728f8db90cdb43b75
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2018-02-02 11:27:40 +00:00
Christian Kandeler
bc15b47487 Build Qbs QML type info dynamically
... when building with qbs. Optionally also update the copies in the
repository.

Change-Id: I4604eff6de95101a8cb086708d5a9ef24af0fd32
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2018-02-02 09:14:01 +00:00
Eike Ziller
32c938c4a0 Merge remote-tracking branch 'origin/4.6'
Change-Id: I724da8f761275865e735e7dce10c3b2b2d99fe94
2018-01-25 10:20:06 +01:00
hjk
5afab6f018 ProjectExplorer: Create and populate 'Kits' settings category
Kits are a central concept and structure in anything build and run
related in Creator, their organization is crucial for the functionality
of Creator and deserve to be emphasized over other, often more cosmetic
settings.

This is the first step of two, the second step would be moving
the Device (list) page also in this category, possibly after some
reorganization in the Device category.

Change-Id: I4abc89472d0575c691fc9e5051397833126e5456
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2018-01-24 16:35:39 +00:00
Christian Kandeler
327d7a495b QbsProjectManager: Set qbs.targetPlatform rather than qbs.targetOS
This is the recommended way in qbs 1.11.

Change-Id: Id20ecdc2b8332336c92c47cf05077dbe4e54cff2
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2018-01-24 15:51:53 +00:00
Christian Stenger
1d763d1941 QbsPM: Fix compile with Qt5.6 + gcc4.9
Broke with a40f11e071.

Change-Id: If647f1a66ddd47795598cc1825c17b73d712d409
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2018-01-24 06:07:13 +00:00
Christian Kandeler
a40f11e071 QbsProjectManager: Add paths of library dependencies to run environment
... with the ability to opt out, as in the qmake run configuration.

Task-number: QTCREATORBUG-19274
Change-Id: If4e996a974a82080bb09f2971b0bb5df9173fb14
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2018-01-23 16:00:19 +00:00
Christian Kandeler
ff0d67dcd2 Update qbs submodule
To HEAD of 1.11 branch. Also do the adaptations necessary because of the
branch switch.

Change-Id: Ief69ef014c10397c14fcd68a9ca770d1391d5491
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2018-01-23 08:55:40 +00:00
Eike Ziller
0af3a2d29a Merge remote-tracking branch 'origin/4.5' into 4.6
Change-Id: I9277a92341ede8292978f2684eadcade04689983
2018-01-15 09:49:21 +01:00
Christian Kandeler
c84ca9bd02 QbsProjectManager: Fix missing reparse on session loading
Task-number: QTCREATORBUG-19572
Change-Id: I71ccdf3abf370fb46dfbfd48a986674b50a04421
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2018-01-11 14:10:50 +00:00
hjk
a0753d7c34 ProjectExplorer: Simplify BuildManager::buildList() calls
The build list names are always the ones determined from the
build list id. No need to do that on the caller side.

Change-Id: Icc21ef355de535af21215819fe04daa76fed0d9c
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2018-01-11 10:49:56 +00:00
hjk
2549b9237e QbsProjectManager: Fix build directory of additional build configs
Change-Id: Ifa8cad542692b774ef91d0d4f5473c7baa1bb1ea
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2018-01-10 11:00:39 +00:00
Orgad Shaneh
8d523f1900 Qbs: Use right path for Qt libraries
Similar to 85206e216a for qmake.

Unify the lookup logic in BaseQtVersion.

Change-Id: Id0b0ff3127f0561ac36610ada16110b55252eb31
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2018-01-10 08:38:33 +00:00
Eike Ziller
cff2cc90e2 Merge remote-tracking branch 'origin/4.5'
Conflicts:
	src/plugins/cpptools/clangcompileroptionsbuilder.cpp
	src/plugins/cpptools/clangcompileroptionsbuilder.h
	src/plugins/cpptools/compileroptionsbuilder.cpp
	src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp
	src/plugins/qmlprofiler/qmlprofilerclientmanager.h
	src/plugins/qmlprofiler/qmlprofilertraceclient.cpp
	src/plugins/qmlprofiler/qmlprofilertraceclient.h
	src/shared/qbs

Change-Id: I364ababc5d41046d17e999096c4a7187c4e4e010
2018-01-09 13:13:00 +01:00
hjk
c3d87e81c5 ProjectExplorer: Return BuildTargetInfo from availableBuildTarget()
... including build target name and display names instead of
returning QString build target names and producing display names
via displayNameForBuildTarget()

This is a mechanical intermediate step on the road to use
Target::applicationTargets().list uniformly as source of build
targets.

Change-Id: I7b0b1fb398d5061b0cec0b86890f9eaf0bb53a19
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2018-01-05 09:34:29 +00:00
Christian Kandeler
af62a9590c QbsProjectManager: Fix reparsing after switching build configurations
After switching to a different build configuration, property changes in
the build config widget would no longer cause project reparsing. Likely
caused by e52ebbf217.

Change-Id: Ifebec74475def49885232ad71d4de01f51568fcb
Reviewed-by: hjk <hjk@qt.io>
2018-01-05 09:25:36 +00:00
hjk
63ed6321fb QbsProject: Use base Project::isParsing() function
While the base function is not virtual the "hiding" re-implementation
effectively appears to do the same. So drop it.

Change-Id: I4ab0e0690b948ce3f590c87262d10622b169450e
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2018-01-03 13:48:44 +00:00
hjk
181c88a274 QbsProject: Remove unneeded reimplementation of rootProjectNode
Change-Id: I4a6df04902297d76df5b164ea271e0c3bb00fd4b
Reviewed-by: hjk <hjk@qt.io>
2018-01-03 08:25:56 +00:00
Oswald Buddenhagen
777ca8e655 Merge remote-tracking branch 'origin/4.5'
Conflicts:
	src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp
	src/plugins/qmlprofiler/qmlprofilertraceclient.cpp

Change-Id: I94647f59d7a9df48168ac066555afe80f5f9b91f
2017-12-21 13:20:24 +01:00
hjk
b2a16190e8 Use project id uniformly as project context
The possibly intented flexibility e.g. to have different project types
share the same idea of a common context was never used, in all cases
we had a 1:1 relation ship between project ids and ids that were used
as context. This led to oversights like the one fixed in 60fb35a2.

This patch here uses the project id unconditionally as context and
drops all context ids. If we'll ever have the situation where the
original flexibility was needed, Project::projectContext() could be
made virtual and overridden were needed.

Also, the context was never modified for any given project, so the
updating machinery is not needed.

Change-Id: I3f7fac0ed5e4704e126558987c48577f26082dfd
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2017-12-20 12:35:14 +00:00
Christian Kandeler
265d093c36 QbsProjectManager: Fix compiler name setup for GCC-like toolchains
The mapping was not quite right. In particular, cpp.cCompilerName needs
to be set if the compiler name is not the default.

Task-number: QTCREATORBUG-19467
Change-Id: I6c190fdda98ff15dce6066bfb082d24853538a78
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-12-20 10:22:52 +00:00
hjk
4a66cae854 ProjectExplorer: Use ids in RunConfigFactory:: setSupportedProjectType
More similar to what build/deploy uses.

Change-Id: Icf8bd7031d00a6e2831f8c1f3b1bdcaa8bf259b4
Reviewed-by: hjk <hjk@qt.io>
2017-12-19 09:42:01 +00:00
hjk
cc88302309 De-emphasize PluginManager::getObjects<Type>()
... by additionally keeping local (currently non-owning) pools per
"interesting" type.

Current situation:
  - The global object pool does not scale well for looking up
    objects, as iteration plus qobject_cast typically iterates
    over all pooled objects.
  - User code that can use typed results from the object
    pool need to have access to the full type definition anyway,
    i.e.  depend on the plugin of the target class anyway.

The patch here solves the scaling problem is to have local
type-specific pools to which objects register in their
constructors and deregister in their destructors.

This patch here does *not* change the ownership model of the
pooled objects, however, it opens the possibility to change
the ownership model per type (e.g. by not putting things into
the global pool at all anymore and make the local pool 'owning')
and the intent is to handle that in later patchs.

Even without the follow-up patches this here is a performance
improvement for the cases that access the local pools instead
the global one, i.e. "practically all".

Change-Id: Ib11a42df2c4ecf5e1155534730083a520dd1995b
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2017-12-15 07:08:05 +00:00
Tobias Hunger
7c35a38100 Session: Move all functionality related to Nodes into ProjectTree
Do no longer expose Nodes from the SessionManager's API. These are now
exclusively handled by the ProjectTree.

Change-Id: I585c2ac919462073870363436e767640775d9045
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2017-12-12 13:44:09 +00:00
hjk
53a151074a ProjectExplorer/all: Re-organize BuildSteps/{Deploy,Build}Config setup
This follow the rough pattern of recent *RunConfigurationFactory changes
for build and deploy configurations.

- Collapse the two lines of constructors similar to what
  890c1906e6 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>
2017-12-08 11:17:55 +00:00
Eike Ziller
a2739f55ed Merge remote-tracking branch 'origin/4.5'
Change-Id: Ic7c16091268083c0426cf29f0691a7ee458f2bd9
2017-12-07 09:16:01 +01:00