diff options
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.ndk/src/com/android/ide/eclipse/ndk/internal/build/NdkCommandLauncher.java')
-rw-r--r-- | eclipse/plugins/com.android.ide.eclipse.ndk/src/com/android/ide/eclipse/ndk/internal/build/NdkCommandLauncher.java | 133 |
1 files changed, 0 insertions, 133 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.ndk/src/com/android/ide/eclipse/ndk/internal/build/NdkCommandLauncher.java b/eclipse/plugins/com.android.ide.eclipse.ndk/src/com/android/ide/eclipse/ndk/internal/build/NdkCommandLauncher.java deleted file mode 100644 index 0a1f7dc81..000000000 --- a/eclipse/plugins/com.android.ide.eclipse.ndk/src/com/android/ide/eclipse/ndk/internal/build/NdkCommandLauncher.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Eclipse Public License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.eclipse.org/org/documents/epl-v10.php - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.ide.eclipse.ndk.internal.build; - -import com.android.ide.eclipse.adt.AdtPlugin; -import com.android.ide.eclipse.ndk.internal.NdkManager; - -import org.eclipse.cdt.core.CommandLauncher; -import org.eclipse.cdt.utils.CygPath; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.Platform; - -import java.io.File; -import java.io.IOException; -import java.util.Arrays; -import java.util.List; - -@SuppressWarnings("restriction") // for AdtPlugin internal classes -public class NdkCommandLauncher extends CommandLauncher { - private static CygPath sCygPath = null; - - private static final List<String> WINDOWS_NATIVE_EXECUTABLES = Arrays.asList( - "exe", //$NON-NLS-1$ - "cmd", //$NON-NLS-1$ - "bat" //$NON-NLS-1$ - ); - - static { - if (Platform.OS_WIN32.equals(Platform.getOS())) { - try { - sCygPath = new CygPath(); - } catch (IOException e) { - AdtPlugin.printErrorToConsole("Unable to launch cygpath. Is Cygwin on the path?", - e); - } - } - } - - @Override - public Process execute(IPath commandPath, String[] args, String[] env, IPath changeToDirectory, - IProgressMonitor monitor) - throws CoreException { - if (!commandPath.isAbsolute()) - commandPath = new Path(NdkManager.getNdkLocation()).append(commandPath); - - if (Platform.getOS().equals(Platform.OS_WIN32)) { - // convert cygwin paths to standard paths - if (sCygPath != null && commandPath.toString().startsWith("/cygdrive")) { //$NON-NLS-1$ - try { - String path = sCygPath.getFileName(commandPath.toString()); - commandPath = new Path(path); - } catch (IOException e) { - AdtPlugin.printErrorToConsole( - "Unexpected error while transforming cygwin path.", e); - } - } - - if (isWindowsExecutable(commandPath)) { - // append necessary extension - commandPath = appendExecutableExtension(commandPath); - } else { - // Invoke using Cygwin shell if this is not a native windows executable - String[] newargs = new String[args.length + 1]; - newargs[0] = commandPath.toOSString(); - System.arraycopy(args, 0, newargs, 1, args.length); - - commandPath = new Path("sh"); //$NON-NLS-1$ - args = newargs; - } - } - - return super.execute(commandPath, args, env, changeToDirectory, monitor); - } - - private boolean isWindowsExecutable(IPath commandPath) { - String ext = commandPath.getFileExtension(); - if (isWindowsExecutableExtension(ext)) { - return true; - } - - ext = findWindowsExecutableExtension(commandPath); - if (ext != null) { - return true; - } - - return false; - } - - private IPath appendExecutableExtension(IPath commandPath) { - if (isWindowsExecutableExtension(commandPath.getFileExtension())) { - return commandPath; - } - - String ext = findWindowsExecutableExtension(commandPath); - if (ext != null) { - return commandPath.addFileExtension(ext); - } - - return commandPath; - } - - private String findWindowsExecutableExtension(IPath command) { - for (String e: WINDOWS_NATIVE_EXECUTABLES) { - File exeFile = command.addFileExtension(e).toFile(); - if (exeFile.exists()) { - return e; - } - } - - return null; - } - - private boolean isWindowsExecutableExtension(String extension) { - return extension != null && WINDOWS_NATIVE_EXECUTABLES.contains(extension); - } -} |