aboutsummaryrefslogtreecommitdiff
path: root/eclipse/plugins/com.android.ide.eclipse.ndk/src/com/android/ide/eclipse/ndk/internal/NdkHelper.java
diff options
context:
space:
mode:
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.ndk/src/com/android/ide/eclipse/ndk/internal/NdkHelper.java')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.ndk/src/com/android/ide/eclipse/ndk/internal/NdkHelper.java184
1 files changed, 0 insertions, 184 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.ndk/src/com/android/ide/eclipse/ndk/internal/NdkHelper.java b/eclipse/plugins/com.android.ide.eclipse.ndk/src/com/android/ide/eclipse/ndk/internal/NdkHelper.java
deleted file mode 100644
index 8ad1f24c4..000000000
--- a/eclipse/plugins/com.android.ide.eclipse.ndk/src/com/android/ide/eclipse/ndk/internal/NdkHelper.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * Copyright (C) 2012 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;
-
-import com.android.ide.eclipse.adt.AdtPlugin;
-import com.android.ide.eclipse.ndk.internal.launch.NdkLaunchConstants;
-
-import org.eclipse.cdt.core.CommandLauncher;
-import org.eclipse.cdt.core.ICommandLauncher;
-import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
-import org.eclipse.cdt.dsf.gdb.IGDBLaunchConfigurationConstants;
-import org.eclipse.core.resources.IProject;
-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 org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.EnumSet;
-import java.util.List;
-import java.util.Set;
-
-@SuppressWarnings("restriction")
-public class NdkHelper {
- private static final String MAKE = "make"; //$NON-NLS-1$
- private static final String CORE_MAKEFILE_PATH = "/build/core/build-local.mk"; //$NON-NLS-1$
-
- /**
- * Obtain the ABI's the application is compatible with.
- * The ABI's are obtained by reading the result of the following command:
- * make --no-print-dir -f ${NdkRoot}/build/core/build-local.mk -C <project-root> DUMP_APP_ABI
- */
- public static Collection<NativeAbi> getApplicationAbis(IProject project,
- IProgressMonitor monitor) {
- ICommandLauncher launcher = new CommandLauncher();
- launcher.setProject(project);
- String[] args = new String[] {
- "--no-print-dir", //$NON-NLS-1$
- "-f", //$NON-NLS-1$
- NdkManager.getNdkLocation() + CORE_MAKEFILE_PATH,
- "-C", //$NON-NLS-1$
- project.getLocation().toOSString(),
- "DUMP_APP_ABI", //$NON-NLS-1$
- };
- try {
- launcher.execute(getPathToMake(), args, null, project.getLocation(), monitor);
- } catch (CoreException e) {
- AdtPlugin.printErrorToConsole(e.getLocalizedMessage());
- return Collections.emptyList();
- }
-
- ByteArrayOutputStream stdout = new ByteArrayOutputStream();
- ByteArrayOutputStream stderr = new ByteArrayOutputStream();
- launcher.waitAndRead(stdout, stderr, monitor);
-
- String abis = stdout.toString().trim();
- Set<NativeAbi> nativeAbis = EnumSet.noneOf(NativeAbi.class);
- for (String abi: abis.split(" ")) { //$NON-NLS-1$
- if (abi.equals("all")) { //$NON-NLS-1$
- return EnumSet.allOf(NativeAbi.class);
- }
-
- try {
- nativeAbis.add(NativeAbi.getByString(abi));
- } catch (IllegalArgumentException e) {
- AdtPlugin.printErrorToConsole(project, "Unknown Application ABI: ", abi);
- }
- }
-
- return nativeAbis;
- }
-
- /**
- * Obtain the toolchain prefix to use for given project and abi.
- * The prefix is obtained by reading the result of:
- * make --no-print-dir -f ${NdkRoot}/build/core/build-local.mk \
- * -C <project-root> \
- * DUMP_TOOLCHAIN_PREFIX APP_ABI=abi
- */
- public static String getToolchainPrefix(IProject project, NativeAbi abi,
- IProgressMonitor monitor) {
- ICommandLauncher launcher = new CommandLauncher();
- launcher.setProject(project);
- String[] args = new String[] {
- "--no-print-dir", //$NON-NLS-1$
- "-f", //$NON-NLS-1$
- NdkManager.getNdkLocation() + CORE_MAKEFILE_PATH,
- "-C", //$NON-NLS-1$
- project.getLocation().toOSString(),
- "DUMP_TOOLCHAIN_PREFIX", //$NON-NLS-1$
- "APP_ABI=" + abi.getAbi(), //$NON-NLS-1$
- };
- try {
- launcher.execute(getPathToMake(), args, null, project.getLocation(), monitor);
- } catch (CoreException e) {
- AdtPlugin.printErrorToConsole(e.getLocalizedMessage());
- return null;
- }
-
- ByteArrayOutputStream stdout = new ByteArrayOutputStream();
- ByteArrayOutputStream stderr = new ByteArrayOutputStream();
- launcher.waitAndRead(stdout, stderr, monitor);
- return stdout.toString().trim();
- }
-
- private static IPath getPathToMake() {
- return getFullPathTo(MAKE);
- }
-
- /**
- * Obtain a path to the utilities prebuilt folder in NDK. This is typically
- * "${NdkRoot}/prebuilt/<platform>/bin/". If the executable is not found, it simply returns
- * the name of the executable (which is equal to assuming that it is available on the path).
- */
- private static synchronized IPath getFullPathTo(String executable) {
- if (Platform.getOS().equals(Platform.OS_WIN32)) {
- executable += ".exe";
- }
-
- IPath ndkRoot = new Path(NdkManager.getNdkLocation());
- IPath prebuilt = ndkRoot.append("prebuilt"); //$NON-NLS-1$
- if (!prebuilt.toFile().exists() || !prebuilt.toFile().canRead()) {
- return new Path(executable);
- }
-
- File[] platforms = prebuilt.toFile().listFiles();
- if (platforms != null) {
- for (File p: platforms) {
- IPath exePath = prebuilt.append(p.getName())
- .append("bin") //$NON-NLS-1$
- .append(executable);
- if (exePath.toFile().exists()) {
- return exePath;
- }
- }
- }
-
- return new Path(executable);
- }
-
- public static void setLaunchConfigDefaults(ILaunchConfigurationWorkingCopy config) {
- config.setAttribute(IGDBLaunchConfigurationConstants.ATTR_REMOTE_TCP, true);
- config.setAttribute(NdkLaunchConstants.ATTR_NDK_GDB, NdkLaunchConstants.DEFAULT_GDB);
- config.setAttribute(IGDBLaunchConfigurationConstants.ATTR_GDB_INIT,
- NdkLaunchConstants.DEFAULT_GDBINIT);
- config.setAttribute(IGDBLaunchConfigurationConstants.ATTR_PORT,
- NdkLaunchConstants.DEFAULT_GDB_PORT);
- config.setAttribute(IGDBLaunchConfigurationConstants.ATTR_HOST, "localhost"); //$NON-NLS-1$
- config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_DEBUGGER_STOP_AT_MAIN, false);
- config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_DEBUGGER_START_MODE,
- IGDBLaunchConfigurationConstants.DEBUGGER_MODE_REMOTE_ATTACH);
- config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME,
- NdkLaunchConstants.DEFAULT_PROGRAM);
-
- config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_DEBUGGER_START_MODE,
- IGDBLaunchConfigurationConstants.DEBUGGER_MODE_REMOTE);
- config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_DEBUGGER_ID,
- "gdbserver"); //$NON-NLS-1$
-
- List<String> solibPaths = new ArrayList<String>(2);
- solibPaths.add(NdkLaunchConstants.DEFAULT_SOLIB_PATH);
- config.setAttribute(NdkLaunchConstants.ATTR_NDK_SOLIB, solibPaths);
- }
-}