Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions NewAndNoteworthy/CHANGELOG-API.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,12 @@ Added method allowing extenders to customize the Core Build output directory nam

#### org.eclipse.cdt.core.build.CBuildConfiguration

Removed field:

* org.eclipse.cdt.core.build.ICBuildConfiguration.DEFAULT_NAME

This constant was removed because the name "default" is no longer used to name Core Build configurations. Naming now follows the pattern in getCBuildConfigName, described above.

Removed method:

* org.eclipse.cdt.core.build.CBuildConfiguration.setLaunchMode(String)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,30 +14,21 @@

package org.eclipse.cdt.core.autotools.core;

import java.util.HashMap;
import java.util.Map;

import org.eclipse.cdt.core.autotools.core.internal.Activator;
import org.eclipse.cdt.core.build.CBuildConfigUtils;
import org.eclipse.cdt.core.build.ICBuildConfiguration;
import org.eclipse.cdt.core.build.ICBuildConfigurationManager;
import org.eclipse.cdt.core.build.ICBuildConfigurationProvider;
import org.eclipse.cdt.core.build.IToolChain;
import org.eclipse.cdt.core.build.IToolChainManager;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Platform;
import org.eclipse.launchbar.core.target.ILaunchTarget;
import org.eclipse.launchbar.core.target.ILaunchTargetManager;

public class AutotoolsBuildConfigurationProvider implements ICBuildConfigurationProvider {

public static final String ID = Activator.PLUGIN_ID + ".provider"; //$NON-NLS-1$

private final ILaunchTargetManager launchTargetManager = Activator.getService(ILaunchTargetManager.class);

@Override
public String getId() {
return ID;
Expand All @@ -46,31 +37,10 @@ public String getId() {
@Override
public ICBuildConfiguration getCBuildConfiguration(IBuildConfiguration config, String name) throws CoreException {
if (config.getName().equals(IBuildConfiguration.DEFAULT_CONFIG_NAME)) {
IToolChain toolChain = null;

// try the toolchain for the local target
Map<String, String> properties = new HashMap<>();
properties.put(IToolChain.ATTR_OS, Platform.getOS());
properties.put(IToolChain.ATTR_ARCH, Platform.getOSArch());
IToolChainManager toolChainManager = Activator.getService(IToolChainManager.class);
for (IToolChain tc : toolChainManager.getToolChainsMatching(properties)) {
toolChain = tc;
break;
}

// local didn't work, try and find one that does
if (toolChain == null) {
for (IToolChain tc : toolChainManager.getToolChainsMatching(new HashMap<>())) {
toolChain = tc;
break;
}
}

if (toolChain != null) {
return new AutotoolsBuildConfiguration(config, name, toolChain, "run", //$NON-NLS-1$
launchTargetManager.getLocalLaunchTarget());
}
// No valid combinations
/*
* IBuildConfiguration configs with name IBuildConfiguration.DEFAULT_CONFIG_NAME
* are not supported to avoid build output directory being named "default".
*/
return null;
}
AutotoolsBuildConfiguration autotoolsConfig = new AutotoolsBuildConfiguration(config, name);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,31 +10,23 @@
*******************************************************************************/
package org.eclipse.cdt.make.core;

import java.util.HashMap;
import java.util.Map;

import org.eclipse.cdt.core.build.CBuildConfigUtils;
import org.eclipse.cdt.core.build.ICBuildConfiguration;
import org.eclipse.cdt.core.build.ICBuildConfigurationManager;
import org.eclipse.cdt.core.build.ICBuildConfigurationProvider;
import org.eclipse.cdt.core.build.IToolChain;
import org.eclipse.cdt.core.build.IToolChainManager;
import org.eclipse.cdt.core.build.StandardBuildConfiguration;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Platform;
import org.eclipse.launchbar.core.target.ILaunchTarget;
import org.eclipse.launchbar.core.target.ILaunchTargetManager;

/**
* @since 7.4
*/
public class MakefileBuildConfigurationProvider implements ICBuildConfigurationProvider {

public static final String ID = "org.eclipse.cdt.make.core.provider"; //$NON-NLS-1$
private final ILaunchTargetManager launchTargetManager = MakeCorePlugin.getService(ILaunchTargetManager.class);

@Override
public String getId() {
Expand All @@ -44,33 +36,11 @@ public String getId() {
@Override
public ICBuildConfiguration getCBuildConfiguration(IBuildConfiguration config, String name) throws CoreException {
if (config.getName().equals(IBuildConfiguration.DEFAULT_CONFIG_NAME)) {
IToolChain toolChain = null;

// try the toolchain for the local target
Map<String, String> properties = new HashMap<>();
properties.put(IToolChain.ATTR_OS, Platform.getOS());
properties.put(IToolChain.ATTR_ARCH, Platform.getOSArch());
IToolChainManager toolChainManager = MakeCorePlugin.getService(IToolChainManager.class);
for (IToolChain tc : toolChainManager.getToolChainsMatching(properties)) {
toolChain = tc;
break;
}

// local didn't work, try and find one that does
if (toolChain == null) {
for (IToolChain tc : toolChainManager.getToolChainsMatching(new HashMap<>())) {
toolChain = tc;
break;
}
}

if (toolChain != null) {
return new StandardBuildConfiguration(config, name, toolChain, "run", //$NON-NLS-1$
launchTargetManager.getLocalLaunchTarget());
} else {
// No valid combinations
return null;
}
/*
* IBuildConfiguration configs with name IBuildConfiguration.DEFAULT_CONFIG_NAME
* are not supported to avoid build output directory being named "default".
*/
return null;
}
return new StandardBuildConfiguration(config, name);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,23 +22,19 @@
import org.eclipse.cdt.core.build.ICBuildConfigurationManager;
import org.eclipse.cdt.core.build.ICBuildConfigurationProvider;
import org.eclipse.cdt.core.build.IToolChain;
import org.eclipse.cdt.core.build.IToolChainManager;
import org.eclipse.cdt.meson.core.Activator;
import org.eclipse.cdt.meson.core.IMesonToolChainFile;
import org.eclipse.cdt.meson.core.IMesonToolChainManager;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Platform;
import org.eclipse.launchbar.core.target.ILaunchTarget;
import org.eclipse.launchbar.core.target.ILaunchTargetManager;

public class MesonBuildConfigurationProvider implements ICBuildConfigurationProvider {

public static final String ID = "org.eclipse.cdt.meson.core.provider"; //$NON-NLS-1$
private final static ILaunchTargetManager launchTargetManager = Activator.getService(ILaunchTargetManager.class);
private IMesonToolChainManager manager = Activator.getService(IMesonToolChainManager.class);

@Override
public String getId() {
Expand All @@ -49,31 +45,10 @@ public String getId() {
public synchronized ICBuildConfiguration getCBuildConfiguration(IBuildConfiguration config, String name)
throws CoreException {
if (config.getName().equals(IBuildConfiguration.DEFAULT_CONFIG_NAME)) {
IToolChain toolChain = null;

// try the toolchain for the local target
Map<String, String> properties = new HashMap<>();
properties.put(IToolChain.ATTR_OS, Platform.getOS());
properties.put(IToolChain.ATTR_ARCH, Platform.getOSArch());
IToolChainManager toolChainManager = Activator.getService(IToolChainManager.class);
for (IToolChain tc : toolChainManager.getToolChainsMatching(properties)) {
toolChain = tc;
break;
}

// local didn't work, try and find one that does
if (toolChain == null) {
for (IToolChain tc : toolChainManager.getToolChainsMatching(new HashMap<>())) {
toolChain = tc;
break;
}
}

if (toolChain != null) {
return new MesonBuildConfiguration(config, name, toolChain, "run", //$NON-NLS-1$
launchTargetManager.getLocalLaunchTarget());
}
// No valid combinations
/*
* IBuildConfiguration configs with name IBuildConfiguration.DEFAULT_CONFIG_NAME
* are not supported to avoid build output directory being named "default".
*/
return null;
}
MesonBuildConfiguration mesonConfig = new MesonBuildConfiguration(config, name);
Expand All @@ -85,6 +60,7 @@ public synchronized ICBuildConfiguration getCBuildConfiguration(IBuildConfigurat
}
if (tcFile != null && !toolChain.equals(tcFile.getToolChain())) {
// toolchain changed
ILaunchTargetManager launchTargetManager = Activator.getService(ILaunchTargetManager.class);
return new MesonBuildConfiguration(config, name, tcFile.getToolChain(), tcFile, mesonConfig.getLaunchMode(),
launchTargetManager.getLocalLaunchTarget());
}
Expand All @@ -95,6 +71,7 @@ public synchronized ICBuildConfiguration getCBuildConfiguration(IBuildConfigurat
public ICBuildConfiguration createCBuildConfiguration(IProject project, IToolChain toolChain, String launchMode,
ILaunchTarget launchTarget, IProgressMonitor monitor) throws CoreException {
// get matching toolchain file if any
IMesonToolChainManager manager = Activator.getService(IMesonToolChainManager.class);
IMesonToolChainFile file = manager.getToolChainFileFor(toolChain);
if (file == null) {
Map<String, String> properties = new HashMap<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,10 @@
import org.eclipse.cdt.core.build.ICBuildConfigurationManager;
import org.eclipse.cdt.core.build.ICBuildConfigurationProvider;
import org.eclipse.cdt.core.build.IToolChain;
import org.eclipse.cdt.core.build.IToolChainManager;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Platform;
import org.eclipse.launchbar.core.target.ILaunchTarget;
import org.eclipse.launchbar.core.target.ILaunchTargetManager;

Expand Down Expand Up @@ -76,35 +74,12 @@ protected CMakeBuildConfiguration createCMakeBuildConfiguration(IBuildConfigurat
@Override
public synchronized ICBuildConfiguration getCBuildConfiguration(IBuildConfiguration config, String name)
throws CoreException {
ILaunchTargetManager launchTargetManager = Activator.getService(ILaunchTargetManager.class);
if (config.getName().equals(IBuildConfiguration.DEFAULT_CONFIG_NAME)) {
IToolChain toolChain = null;

// try the toolchain for the local target
Map<String, String> properties = new HashMap<>();
properties.put(IToolChain.ATTR_OS, Platform.getOS());
properties.put(IToolChain.ATTR_ARCH, Platform.getOSArch());
IToolChainManager toolChainManager = Activator.getService(IToolChainManager.class);
for (IToolChain tc : toolChainManager.getToolChainsMatching(properties)) {
toolChain = tc;
break;
}

// local didn't work, try and find one that does
if (toolChain == null) {
for (IToolChain tc : toolChainManager.getToolChainsMatching(new HashMap<>())) {
toolChain = tc;
break;
}
}

if (toolChain != null) {
return createCMakeBuildConfiguration(config, name, toolChain, null, "run", //$NON-NLS-1$
launchTargetManager.getLocalLaunchTarget());
} else {
// No valid combinations
return null;
}
/*
* IBuildConfiguration configs with name IBuildConfiguration.DEFAULT_CONFIG_NAME
* are not supported to avoid build output directory being named "default".
*/
return null;
}
CMakeBuildConfiguration cmakeConfig = createCMakeBuildConfiguration(config, name);
ICMakeToolChainFile tcFile = cmakeConfig.getToolChainFile();
Expand All @@ -115,6 +90,7 @@ public synchronized ICBuildConfiguration getCBuildConfiguration(IBuildConfigurat
}
if (tcFile != null && !toolChain.equals(tcFile.getToolChain())) {
// toolchain changed
ILaunchTargetManager launchTargetManager = Activator.getService(ILaunchTargetManager.class);
return createCMakeBuildConfiguration(config, name, tcFile.getToolChain(), tcFile,
cmakeConfig.getLaunchMode(), launchTargetManager.getLocalLaunchTarget());
} else {
Expand Down
6 changes: 5 additions & 1 deletion core/org.eclipse.cdt.core.tests/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,11 @@ Require-Bundle: org.eclipse.core.resources,
org.eclipse.cdt.debug.core,
org.eclipse.cdt.cmake.core,
org.eclipse.debug.core,
org.eclipse.launchbar.core;bundle-version="[3.0.0,4.0.0)"
org.eclipse.launchbar.core;bundle-version="[3.0.0,4.0.0)",
org.eclipse.cdt.make.core,
org.eclipse.cdt.meson.core,
org.eclipse.cdt.core.autotools.core,
org.mockito.mockito-core
Bundle-ActivationPolicy: lazy
Bundle-Vendor: %providerName
Bundle-RequiredExecutionEnvironment: JavaSE-17
Expand Down
Loading
Loading