From f6ea2409a4e2ba41e05e8e178c13109e98be038f Mon Sep 17 00:00:00 2001 From: Doug Schaefer Date: Fri, 31 Aug 2007 19:27:59 +0000 Subject: [PATCH] Bug 194641 - reattach the isToolchainSupported to the cygwin toolchain. Also created one for mingw. Bug 201579 - added the msys directory to the mingw toolchain path if it resides next to the mingw in the eclipse install location's parent. --- .../plugin.xml | 14 ++++---- .../MingwEnvironmentVariableSupplier.java | 20 ++++++++--- .../gnu/mingw/MingwIsToolChainSupported.java | 36 +++++++++++++++++++ 3 files changed, 59 insertions(+), 11 deletions(-) create mode 100644 build/org.eclipse.cdt.managedbuilder.gnu.ui/src/org/eclipse/cdt/managedbuilder/gnu/mingw/MingwIsToolChainSupported.java diff --git a/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.xml b/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.xml index 2ed701e91b1..efada1f6908 100644 --- a/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.xml +++ b/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.xml @@ -1662,12 +1662,13 @@ + archList="all" + configurationEnvironmentSupplier="org.eclipse.cdt.managedbuilder.gnu.cygwin.GnuCygwinConfigurationEnvironmentSupplier" + id="cdt.managedbuild.toolchain.gnu.cygwin.base" + isToolChainSupported="org.eclipse.cdt.managedbuilder.gnu.cygwin.IsGnuCygwinToolChainSupported" + name="%ToolChainName.Cygwin" + osList="win32" + targetTool="cdt.managedbuild.tool.gnu.cpp.linker.cygwin.base;cdt.managedbuild.tool.gnu.c.linker.cygwin.base;cdt.managedbuild.tool.gnu.archiver"> diff --git a/build/org.eclipse.cdt.managedbuilder.gnu.ui/src/org/eclipse/cdt/managedbuilder/gnu/mingw/MingwEnvironmentVariableSupplier.java b/build/org.eclipse.cdt.managedbuilder.gnu.ui/src/org/eclipse/cdt/managedbuilder/gnu/mingw/MingwEnvironmentVariableSupplier.java index dde8d8b1752..3c0ee110e6b 100644 --- a/build/org.eclipse.cdt.managedbuilder.gnu.ui/src/org/eclipse/cdt/managedbuilder/gnu/mingw/MingwEnvironmentVariableSupplier.java +++ b/build/org.eclipse.cdt.managedbuilder.gnu.ui/src/org/eclipse/cdt/managedbuilder/gnu/mingw/MingwEnvironmentVariableSupplier.java @@ -89,13 +89,23 @@ public class MingwEnvironmentVariableSupplier implements return null; } + public static IPath getMsysBinDir() { + // Just look in the install location parent dir + IPath installPath = new Path(Platform.getInstallLocation().getURL().getFile()).removeLastSegments(1); + IPath msysBinPath = installPath.append("msys\\bin"); + return msysBinPath.toFile().isDirectory() ? msysBinPath : null; + } + public MingwEnvironmentVariableSupplier() { IPath binPath = getBinDir(); - if (binPath != null) - path = new MingwBuildEnvironmentVariable( - "PATH", - binPath.toOSString(), - IBuildEnvironmentVariable.ENVVAR_PREPEND); + if (binPath != null) { + String pathStr = binPath.toOSString(); + IPath msysBinPath = getMsysBinDir(); + if (msysBinPath != null) + pathStr += ';' + msysBinPath.toOSString(); + + path = new MingwBuildEnvironmentVariable("PATH", pathStr, IBuildEnvironmentVariable.ENVVAR_PREPEND); + } } public IBuildEnvironmentVariable getVariable(String variableName, diff --git a/build/org.eclipse.cdt.managedbuilder.gnu.ui/src/org/eclipse/cdt/managedbuilder/gnu/mingw/MingwIsToolChainSupported.java b/build/org.eclipse.cdt.managedbuilder.gnu.ui/src/org/eclipse/cdt/managedbuilder/gnu/mingw/MingwIsToolChainSupported.java new file mode 100644 index 00000000000..310204ec846 --- /dev/null +++ b/build/org.eclipse.cdt.managedbuilder.gnu.ui/src/org/eclipse/cdt/managedbuilder/gnu/mingw/MingwIsToolChainSupported.java @@ -0,0 +1,36 @@ +/********************************************************************** + * Copyright (c) 2007 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * QNX Software Systems - Initial API and implementation + **********************************************************************/ + +package org.eclipse.cdt.managedbuilder.gnu.mingw; + +import org.eclipse.cdt.managedbuilder.core.IManagedIsToolChainSupported; +import org.eclipse.cdt.managedbuilder.core.IToolChain; +import org.eclipse.core.runtime.PluginVersionIdentifier; + +/** + * @author Doug Schaefer + * + */ +public class MingwIsToolChainSupported implements IManagedIsToolChainSupported { + + private final boolean supported; + + public MingwIsToolChainSupported() { + // Only supported if we can find the mingw bin dir to run the compiler + supported = MingwEnvironmentVariableSupplier.getBinDir() != null; + } + + public boolean isSupported(IToolChain toolChain, + PluginVersionIdentifier version, String instance) { + return supported; + } + +}