Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/core/QtLaunchConfigurationDelegate.java')
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/core/QtLaunchConfigurationDelegate.java45
1 files changed, 40 insertions, 5 deletions
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/core/QtLaunchConfigurationDelegate.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/core/QtLaunchConfigurationDelegate.java
index 0001dd62c27..dc3862bccca 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/core/QtLaunchConfigurationDelegate.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/core/QtLaunchConfigurationDelegate.java
@@ -7,7 +7,14 @@
*******************************************************************************/
package org.eclipse.cdt.qt.core;
-import org.eclipse.cdt.internal.qt.core.build.QtBuildConfigurationFactory;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.cdt.core.build.ICBuildConfigurationManager;
+import org.eclipse.cdt.core.build.IToolChain;
+import org.eclipse.cdt.core.build.IToolChainManager;
+import org.eclipse.cdt.internal.qt.core.Activator;
+import org.eclipse.cdt.internal.qt.core.build.QtBuildConfigurationProvider;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.runtime.CoreException;
@@ -21,11 +28,11 @@ public abstract class QtLaunchConfigurationDelegate extends LaunchConfigurationT
@Override
public boolean buildForLaunch(ILaunchConfiguration configuration, String mode, ILaunchTarget target,
IProgressMonitor monitor) throws CoreException {
- QtBuildConfiguration qtBuildConfig = getQtBuildConfiguration(configuration, mode, target, monitor);
+ IQtBuildConfiguration qtBuildConfig = getQtBuildConfiguration(configuration, mode, target, monitor);
// Set it as active
if (qtBuildConfig != null) {
- IProject project = qtBuildConfig.getProject();
+ IProject project = qtBuildConfig.getBuildConfiguration().getProject();
IProjectDescription desc = project.getDescription();
desc.setActiveBuildConfig(qtBuildConfig.getBuildConfiguration().getName());
project.setDescription(desc, monitor);
@@ -43,11 +50,39 @@ public abstract class QtLaunchConfigurationDelegate extends LaunchConfigurationT
return new IProject[] { project };
}
- protected QtBuildConfiguration getQtBuildConfiguration(ILaunchConfiguration configuration, String mode,
+ protected void populateToolChainProperties(ILaunchTarget target, Map<String, String> properties) {
+ String os = target.getAttribute(ILaunchTarget.ATTR_OS, null);
+ if (os != null) {
+ properties.put(IToolChain.ATTR_OS, os);
+ }
+ String arch = target.getAttribute(ILaunchTarget.ATTR_ARCH, null);
+ if (arch != null) {
+ properties.put(IToolChain.ATTR_ARCH, arch);
+ }
+ }
+
+ protected IQtBuildConfiguration getQtBuildConfiguration(ILaunchConfiguration configuration, String mode,
ILaunchTarget target, IProgressMonitor monitor) throws CoreException {
// Find the Qt build config
+ ICBuildConfigurationManager configManager = Activator.getService(ICBuildConfigurationManager.class);
+ QtBuildConfigurationProvider provider = (QtBuildConfigurationProvider) configManager
+ .getProvider(QtBuildConfigurationProvider.ID);
IProject project = configuration.getMappedResources()[0].getProject();
- return QtBuildConfigurationFactory.getConfig(project, mode, target, monitor);
+
+ // Find the toolchains that support this target
+ Map<String, String> properties = new HashMap<>();
+ populateToolChainProperties(target, properties);
+
+ IToolChainManager toolChainManager = Activator.getService(IToolChainManager.class);
+ for (IToolChain toolChain : toolChainManager.getToolChainsMatching(properties)) {
+ IQtBuildConfiguration qtConfig = provider.createConfiguration(project, toolChain, mode, monitor);
+ if (qtConfig != null) {
+ return qtConfig;
+ }
+ }
+
+ // Couldn't find any
+ return null;
}
}

Back to the top