debuggercdi/com.nokia.cdt.debug.cw.symbian/src/com/nokia/cdt/debug/cw/symbian/CarbideExecutablesProvider.java
author timkelly
Tue, 02 Feb 2010 10:42:23 -0600
changeset 878 70054f4362b3
parent 438 1137da10d4e5
child 994 1ffe668575e7
permissions -rw-r--r--
Fix rvct compiler parser bug 10525
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     1
/*
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     3
* All rights reserved.
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     8
*
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    11
*
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    12
* Contributors:
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    13
*
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    14
* Description: 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    15
*
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    16
*/
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    17
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    18
package com.nokia.cdt.debug.cw.symbian;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    19
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    20
import java.io.File;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    21
import java.util.ArrayList;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    22
import java.util.List;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    23
194
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    24
import org.eclipse.cdt.core.CCProjectNature;
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    25
import org.eclipse.cdt.core.CProjectNature;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    26
import org.eclipse.cdt.debug.core.executables.Executable;
194
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    27
import org.eclipse.cdt.debug.core.executables.IProjectExecutablesProvider;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    28
import org.eclipse.core.resources.IProject;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    29
import org.eclipse.core.runtime.IPath;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    30
import org.eclipse.core.runtime.IProgressMonitor;
194
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    31
import org.eclipse.core.runtime.IStatus;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    32
import org.eclipse.core.runtime.Path;
194
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    33
import org.eclipse.core.runtime.Status;
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    34
import org.eclipse.core.runtime.SubMonitor;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    35
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    36
import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    37
import com.nokia.carbide.cdt.builder.EpocEngineHelper;
438
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    38
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    39
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    40
194
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    41
public class CarbideExecutablesProvider implements IProjectExecutablesProvider {
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    42
194
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    43
	List<String> supportedNatureIds = new ArrayList<String>();
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    44
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    45
	public CarbideExecutablesProvider() {
194
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    46
		supportedNatureIds.add(CProjectNature.C_NATURE_ID);
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    47
		supportedNatureIds.add(CCProjectNature.CC_NATURE_ID);
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    48
		supportedNatureIds.add(CarbideBuilderPlugin.CARBIDE_PROJECT_NATURE_ID);
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    49
		supportedNatureIds.add(CarbideBuilderPlugin.CARBIDE_SBSV2_PROJECT_NATURE_ID);
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    50
	}
194
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    51
	
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    52
	public List<String> getProjectNatures() {
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    53
		return supportedNatureIds;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    54
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    55
194
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    56
	public List<Executable> getExecutables(IProject project, IProgressMonitor monitor) {
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    57
		List<Executable> executables = new ArrayList<Executable>();
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    58
194
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    59
		if (CarbideBuilderPlugin.getBuildManager().isCarbideProject(project)) {
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    60
			ICarbideProjectInfo cpi = CarbideBuilderPlugin.getBuildManager().getProjectInfo(project);
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    61
			if (cpi != null) {
438
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    62
				ICarbideBuildConfiguration config = cpi.getDefaultConfiguration();
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    63
				if (config != null) {
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    64
					List<IPath> mmps = EpocEngineHelper.getMMPFilesForBuildConfiguration(config);
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    65
438
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    66
					SubMonitor progress = SubMonitor.convert(monitor, mmps.size());
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    67
438
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    68
					for (IPath mmp : mmps) {
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    69
						if (progress.isCanceled()) {
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    70
							break;
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    71
						}
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    72
						
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    73
						progress.subTask("Parsing " + mmp.lastSegment());
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    74
438
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    75
	 					IPath hp = EpocEngineHelper.getHostPathForExecutable(config, mmp);
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    76
						if (hp != null) {
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    77
							File hpFile = hp.toFile();
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    78
							if (hpFile.exists()) {
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    79
								try {
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    80
									Executable exe = new Executable(new Path(hpFile.getCanonicalPath()), project, null);
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    81
									executables.add(exe);
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    82
								} catch (Exception e) {
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    83
								}
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    84
							}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    85
						}
438
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    86
						
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    87
						progress.worked(1);
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    88
					}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    89
				}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    90
			}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    91
		}
194
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    92
		
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    93
		return executables;
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    94
	}
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    95
194
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    96
	public IStatus removeExecutable(Executable executable, IProgressMonitor monitor) {
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    97
		try {
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    98
			executable.getPath().toFile().delete();
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    99
		} catch (Exception e) {
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
   100
			return new Status(IStatus.WARNING, SymbianPlugin.PLUGIN_ID, "An error occured trying to delete " + executable.getPath().toOSString());
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
   101
		}
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
   102
		return Status.OK_STATUS;
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
   103
	}
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   104
}