builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideBuildConfiguration.java
branchRCL_2_4
changeset 1155 a1b3518585ae
parent 1147 c2836b036bd5
child 1222 63523a35c9b2
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideBuildConfiguration.java	Fri Apr 02 10:01:56 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideBuildConfiguration.java	Fri Apr 02 15:04:41 2010 -0500
@@ -16,17 +16,23 @@
 */
 package com.nokia.carbide.cdt.internal.builder;
 
+import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
 
 import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.ICDescriptor;
+import org.eclipse.cdt.core.ICExtensionReference;
 import org.eclipse.cdt.core.model.CoreModel;
 import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
 import org.eclipse.cdt.core.settings.model.ICProjectDescription;
 import org.eclipse.cdt.core.settings.model.ICStorageElement;
+import org.eclipse.cdt.core.settings.model.WriteAccessException;
 import org.eclipse.cdt.core.settings.model.extension.CConfigurationData;
 import org.eclipse.core.resources.IMarker;
 import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IStatus;
@@ -40,9 +46,11 @@
 import com.nokia.carbide.cdt.builder.project.IBuildArgumentsInfo;
 import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
 import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
+import com.nokia.carbide.cdt.builder.project.ICarbideProjectModifier;
 import com.nokia.carbide.cdt.builder.project.IEnvironmentVarsInfo;
 import com.nokia.carbide.cdt.builder.project.IROMBuilderInfo;
 import com.nokia.carbide.cdt.builder.project.ISISBuilderInfo;
+import com.nokia.carbide.cdt.internal.api.builder.CarbideConfigurationDataProvider;
 import com.nokia.carbide.cdt.internal.api.builder.SISBuilderInfo2;
 import com.nokia.carbide.cpp.internal.api.sdk.SDKManagerInternalAPI;
 import com.nokia.carbide.cpp.internal.api.sdk.SymbianBuildContext;
@@ -60,13 +68,19 @@
 	protected final static String ARGUMENTS_DATA_ID = "ARGUMENTS_DATA_ID"; //$NON-NLS-1$
 	protected final static String ROM_BUILDER_DATA_ID = "ROM_BUILDER_DATA_ID"; //$NON-NLS-1$
 	
+	// SBSv2 only config settings
+	protected final static String SBSV2_DATA_ID = "SBSV2_DATA_ID"; //$NON-NLS-1$
+	protected final static String ATRRIB_CONFIG_BASE_PLATFORM = "CONFIG_BASE_PLATFORM"; //$NON-NLS-1$
+	protected final static String ATTRIB_CONFIG_TARGET = "CONFIG_TARGET"; //$NON-NLS-1$
+	protected final static String ATTRIB_SBSV2_BUILD_ALIAS = "SBSV2_BUILD_ALIAS"; //$NON-NLS-1$
+	protected final static String ATTRIB_SBSV2_CONFIG_DISPLAY_STRING = "SBSV2_CONFIG_DISPLAY_STRING"; //$NON-NLS-1$
+
 	protected TrackedResource projectTracker;
 	protected List<ISISBuilderInfo> sisBuilderInfoList;
 	protected EnvironmentVarsInfo2 envVarsInfo;
 	protected BuildArgumentsInfo buildArgumentsInfo;
 	protected BuildConfigurationData buildConfigData;
 	protected ROMBuilderInfo romBuilderInfo;
-	
 
 	public CarbideBuildConfiguration(IProject project, ISymbianBuildContext context) {
 		super(context.getSDK(), context.getPlatformString(), context.getTargetString(), context.getSBSv2Alias());
@@ -117,9 +131,20 @@
 			envVarsInfo.saveToStorage(rootStorage.createChild(ENV_VAR_DATA_ID));
 			saveBuildArgsToStorage(rootStorage.createChild(ARGUMENTS_DATA_ID));
 			romBuilderInfo.saveToStorage(rootStorage.createChild(ROM_BUILDER_DATA_ID));
+			
+			if (getSBSv2Alias() != null){
+				saveSBSv2DataToStorage(rootStorage.createChild(SBSV2_DATA_ID));
+			}
 		}
 	}
 	
+	private void saveSBSv2DataToStorage(ICStorageElement createChild) {
+		createChild.setAttribute(ATRRIB_CONFIG_BASE_PLATFORM, getPlatformString());
+		createChild.setAttribute(ATTRIB_CONFIG_TARGET, getTargetString());
+		createChild.setAttribute(ATTRIB_SBSV2_BUILD_ALIAS, getSBSv2Alias());
+		createChild.setAttribute(ATTRIB_SBSV2_CONFIG_DISPLAY_STRING, getDisplayString());
+	}
+
 	private void loadBuildArgsFromStorage(ICStorageElement rootStorage) {
 		String value = rootStorage.getAttribute(BuildArgumentsInfo.BLDMAKEBLDFILESARGSSTORAGE);
 		if (value != null) {
@@ -234,7 +259,7 @@
 	}
 	
 	public boolean saveConfiguration(boolean refreshFileSystem) {
-
+		
 		try {
 			ICProjectDescription projDes = CoreModel.getDefault().getProjectDescription(projectTracker.getProject());
 			if (projDes != null) {
@@ -243,14 +268,13 @@
 					// save the CDT project description.  this saves all configs but that's the
 					// only thing CDT allows at this point.
 					CCorePlugin.getDefault().setProjectDescription(projectTracker.getProject(), projDes, true, new NullProgressMonitor());
-
 					return true;
 				}
 			}
 		} catch (CoreException e) {
 			CarbideBuilderPlugin.log(e.getStatus());
 		}
-
+		
 		return false;
 	}
 	
@@ -277,6 +301,11 @@
 			ISymbianBuildContext context = (ISymbianBuildContext)obj;
 			if (context.getDisplayString().equals(this.getDisplayString())){
 				return true;
+			} else if (context.getPlatformString().equals(this.getPlatformString()) && 
+					context.getTargetString().equals(this.getTargetString())        && 
+					context.getSDK().equals(this.getSDK()) && context.getSBSv2Alias() != null && context.getSBSv2Alias().split("_").length == 2){
+				
+				return true;
 			}
 		} else {
 			return false;
@@ -404,4 +433,5 @@
 
 		return false;
 	} 
+	
 }