--- a/builder/com.nokia.carbide.cdt.builder.test/plugin.xml Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder.test/plugin.xml Wed Aug 25 12:42:09 2010 -0500
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.2"?>
<plugin>
+
<extension
point="com.nokia.carbide.cdt.builder.environmentModifier">
<modifier class="com.nokia.carbide.cdt.builder.test.TestEnvironmentModifier"/>
</extension>
-
+
</plugin>
--- a/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/AllTests.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/AllTests.java Wed Aug 25 12:42:09 2010 -0500
@@ -36,7 +36,9 @@
suite.addTestSuite(TestProjectExportsGatherer.class);
suite.addTestSuite(BuilderPrefConstantsTest.class);
suite.addTestSuite(TestEnvironmentModifier.class);
+ suite.addTestSuite(TestCarbideProjectSettingsModifier.class);
suite.addTestSuite(TestEpocEngineHelper.class);
+ suite.addTestSuite(SBSv2QueryTests.class);
// error parser tests....
suite.addTestSuite(com.nokia.carbide.cdt.builder.test.errorParsers.TestMakmakeErrorParser.class);
--- a/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/ProjectPropertiesTest.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/ProjectPropertiesTest.java Wed Aug 25 12:42:09 2010 -0500
@@ -26,15 +26,16 @@
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.NullProgressMonitor;
-import com.nokia.carbide.cdt.builder.BuildArgumentsInfo;
import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
-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.ISISBuilderInfo;
import com.nokia.carbide.cdt.internal.api.builder.SISBuilderInfo2;
-import com.nokia.carbide.cpp.internal.api.sdk.SymbianBuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.BuildArgumentsInfo;
+import com.nokia.carbide.cpp.internal.api.sdk.BuildContextSBSv1;
+import com.nokia.carbide.cpp.internal.api.sdk.IBuildArgumentsInfo;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
import com.nokia.carbide.cpp.project.core.ProjectCorePlugin;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
@@ -171,11 +172,11 @@
ICarbideProjectModifier cpm = CarbideBuilderPlugin.getBuildManager().getProjectModifier(project);
assertEquals(1, cpm.getBuildConfigurations().size());
- ISymbianBuildContext context2 = SymbianBuildContext.getBuildContextFromDisplayName(stockBuildConfigs.get(1).getDisplayString());
+ ISymbianBuildContext context2 = BuildContextSBSv1.getBuildContextFromDisplayName(stockBuildConfigs.get(1).getDisplayString());
assertNotNull(context2);
cpm.createNewConfiguration(context2, true);
- ISymbianBuildContext context3 = SymbianBuildContext.getBuildContextFromDisplayName(stockBuildConfigs.get(2).getDisplayString());
+ ISymbianBuildContext context3 = BuildContextSBSv1.getBuildContextFromDisplayName(stockBuildConfigs.get(2).getDisplayString());
assertNotNull(context3);
cpm.createNewConfiguration(context3, false);
@@ -270,11 +271,12 @@
assertNotNull("Ooops, ICarbideProjectInfo is null, something bad happened.", cpi);
ICarbideBuildConfiguration defaultConfig = cpi.getDefaultConfiguration();
- BuildArgumentsInfo argInfoCopyOrig = defaultConfig.getBuildArgumentsInfoCopy();
- BuildArgumentsInfo argInfoCopyMod = defaultConfig.getBuildArgumentsInfoCopy();
+ ISBSv1BuildContext sbsv1Context = (ISBSv1BuildContext)defaultConfig.getBuildContext();
+ BuildArgumentsInfo argInfoCopyOrig = sbsv1Context.getBuildArgumentsInfoCopy();
+ BuildArgumentsInfo argInfoCopyMod = sbsv1Context.getBuildArgumentsInfoCopy();
// Just sanity check to make sure deprecated methods still exist.
- IBuildArgumentsInfo testDeprecation = defaultConfig.getBuildArgumentsInfo();
+ IBuildArgumentsInfo testDeprecation = sbsv1Context.getBuildArgumentsInfo();
/*String test =*/ testDeprecation.getAbldBuildArgs();
@@ -290,10 +292,10 @@
argInfoCopyMod.abldTargetArgs += target_ARG;
// set the argument
- defaultConfig.setBuildArgumentsInfo(argInfoCopyMod);
+ sbsv1Context.setBuildArgumentsInfo(argInfoCopyMod);
// read the args from memory, make sure it's OK
- BuildArgumentsInfo argInfoCopyVerify = defaultConfig.getBuildArgumentsInfoCopy();
+ BuildArgumentsInfo argInfoCopyVerify = sbsv1Context.getBuildArgumentsInfoCopy();
assertTrue("Failed to re-read build args", argInfoCopyVerify.abldBuildArgs.contains(build_ARG));
assertTrue("Failed to re-read clean args", argInfoCopyVerify.abldCleanArgs.contains(clean_ARG));
assertTrue("Failed to re-read export args", argInfoCopyVerify.abldExportArgs.contains(export_ARG));
@@ -310,7 +312,7 @@
// now read again
// no work, how to know if it loads from disk....
- BuildArgumentsInfo argInfoFromDisk = defaultConfig.getBuildArgumentsInfoCopy();
+ BuildArgumentsInfo argInfoFromDisk = sbsv1Context.getBuildArgumentsInfoCopy();
// read the args now that were pulled from disk, make sure it's OK
assertTrue("Failed to re-read build args", argInfoFromDisk.abldBuildArgs.contains(build_ARG));
@@ -324,10 +326,10 @@
assertTrue("Failed to re-read target args", argInfoFromDisk.abldTargetArgs.contains(target_ARG));
// Now restore the settings, write to disk and verify
- defaultConfig.setBuildArgumentsInfo(argInfoCopyOrig);
+ sbsv1Context.setBuildArgumentsInfo(argInfoCopyOrig);
defaultConfig.saveConfiguration(false); // write to disk
defaultConfig = cpi.getDefaultConfiguration();
- argInfoCopyVerify = defaultConfig.getBuildArgumentsInfoCopy();
+ argInfoCopyVerify = sbsv1Context.getBuildArgumentsInfoCopy();
assertFalse("Failed to re-read build args after restore", argInfoCopyVerify.abldBuildArgs.contains(build_ARG));
assertFalse("Failed to re-read clean args after restore", argInfoCopyVerify.abldCleanArgs.contains(clean_ARG));
assertFalse("Failed to re-read export args after restore", argInfoCopyVerify.abldExportArgs.contains(export_ARG));
--- a/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/SBSv2QueryTests.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/SBSv2QueryTests.java Wed Aug 25 12:42:09 2010 -0500
@@ -17,15 +17,17 @@
*/
package com.nokia.carbide.cdt.builder.test;
-import java.util.ArrayList;
-import java.util.HashMap;
+import java.io.File;
import java.util.List;
import org.osgi.framework.Version;
-import com.nokia.carbide.cdt.builder.test.sandbox.ISBSv2ConfigData;
-import com.nokia.carbide.cdt.builder.test.sandbox.ISBSv2QueryData;
-import com.nokia.carbide.cdt.builder.test.sandbox.SBSv2QueryUtils;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.sbsv2.SBSv2QueryUtils;
+import com.nokia.carbide.cpp.internal.sdk.core.model.SDKManager;
+import com.nokia.carbide.cpp.sdk.core.ISDKBuildInfo;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
@@ -33,8 +35,6 @@
private boolean printTimingStats = true;
- private static ISBSv2QueryData sbsAliasBaseQuery;
-
private long startTime;
private final String SDK_ID1 = "K_92_WK12"; // SDK with additional aliases and products
@@ -43,10 +43,10 @@
protected void setUp() throws Exception {
super.setUp();
Version sbsVersion = SDKCorePlugin.getSDKManager().getSBSv2Version(true);
- if ((sbsVersion.getMajor() == 2 && sbsVersion.getMinor() < 14) ||
+ if ((sbsVersion.getMajor() == 2 && sbsVersion.getMinor() < 15) ||
sbsVersion.getMajor() < 2){
- fail("SBS Query tests require Raptor 2.14 or greater. Raptor version found is: " + sbsVersion);
+ fail("SBS Query tests require Raptor 2.15 or greater. Raptor version found is: " + sbsVersion);
}
}
@@ -55,121 +55,39 @@
super.tearDown();
}
- public void testQueryAliases() throws Exception {
-
- startTime = System.currentTimeMillis();
- if (sbsAliasBaseQuery == null){
- sbsAliasBaseQuery = SBSv2QueryUtils.queryAliasAndProductVariants();
- }
-
- if (printTimingStats)
- System.out.println("Time for testQueryProductsFromSDKs(): " + getTimingStats());
-
- HashMap<String, ISBSv2ConfigData> baseConfigs = sbsAliasBaseQuery.getBaseSBSConfigurations();
-
- for (String aliasKey : baseConfigs.keySet()){
- ISBSv2ConfigData config = baseConfigs.get(aliasKey);
- boolean isBaseConfig = config.getSupportingSDK() == null ? true : false;
- assertTrue("Configuration should be true : " + config.toString(), isBaseConfig);
- }
- assertEquals(18, baseConfigs.size());
-
- assertNotNull(sbsAliasBaseQuery.getSBSConfigByAlias(null, "armv5_udeb"));
- assertNotNull(sbsAliasBaseQuery.getSBSConfigByAlias(null, "armv5_urel"));
- assertNotNull(sbsAliasBaseQuery.getSBSConfigByAlias(null, "winscw_udeb"));
- assertNotNull(sbsAliasBaseQuery.getSBSConfigByAlias(null, "winscw_urel"));
- assertNotNull(sbsAliasBaseQuery.getSBSConfigByAlias(null, "armv5_urel_gcce4_4_1"));
- assertNotNull(sbsAliasBaseQuery.getSBSConfigByAlias(null, "armv5_udeb_gcce4_4_1"));
-
- assertNotNull(sbsAliasBaseQuery.getSBSConfigByMeaning(null, "arm.v5.udeb.rvct2_2"));
- assertNotNull(sbsAliasBaseQuery.getSBSConfigByMeaning(null, "arm.v5.urel.rvct2_2"));
- assertNotNull(sbsAliasBaseQuery.getSBSConfigByMeaning(null, "winscw_base.winscw_debug"));
- assertNotNull(sbsAliasBaseQuery.getSBSConfigByMeaning(null, "winscw_base.winscw_release"));
- assertNotNull(sbsAliasBaseQuery.getSBSConfigByMeaning(null, "arm.v5.urel.gcce4_4_1"));
- assertNotNull(sbsAliasBaseQuery.getSBSConfigByMeaning(null, "arm.v5.udeb.gcce4_4_1"));
-
- assertNull(sbsAliasBaseQuery.getSBSConfigByAlias(null, "armv5_udeb.foobar"));
- assertNull(sbsAliasBaseQuery.getSBSConfigByMeaning(null, "arm.v5.udeb.foo.bar"));
-
- // Get the Raptor configs that are defined in an SDK
- ISymbianSDK sdk = SDKCorePlugin.getSDKManager().getSDK(SDK_ID1, false);
- assertNotNull("Missing SDK on your system: " + SDK_ID1, sdk);
- List<ISBSv2ConfigData> sdkSpecificConfigs = sbsAliasBaseQuery.getSDKSpecificConfigData(sdk);
- assertEquals(10, sdkSpecificConfigs.size());
-
- // Get the union of the base Raptor configs and the SDK
- List<ISBSv2ConfigData> allSDKConfigUnion = sbsAliasBaseQuery.getAllConfigurationsForSDK(sdk);
- assertEquals(28, allSDKConfigUnion.size());
- }
/**
* Query data for a single configuration
* @throws Exception
*/
- public void testQuerySingleConfig() throws Exception {
+ public void testQueryBuildConfigsFromSDK() throws Exception {
- assertNotNull(sbsAliasBaseQuery);
-
- startTime = System.currentTimeMillis();
+ SBSv2QueryUtils.removeAllCachedQueries(); // ensure sbs needs to build an entirely new cache
- ISBSv2ConfigData config = sbsAliasBaseQuery.getSBSConfigByAlias(null, "armv5_udeb");
- assertNotNull(config);
- assertEquals("/epoc32/release/armv5/udeb", config.getReleaseDirectory(null));
- assertEquals("armv5", config.getTraditionalPlatform(null));
- assertEquals("udeb", config.getTraditionalTarget(null));
+ ISymbianSDK sdk = SDKCorePlugin.getSDKManager().getSDK(SDK_ID1, true);
+ assertNotNull(sdk);
+
+ ISDKBuildInfo sbsv2BuildInfo = sdk.getBuildInfo(ISymbianBuilderID.SBSV2_BUILDER);
+ assertNotNull(sbsv2BuildInfo);
+
+ List<ISymbianBuildContext> buildContexts = sbsv2BuildInfo.getFilteredBuildConfigurations();
+ assertEquals(6, buildContexts.size());
- config = sbsAliasBaseQuery.getSBSConfigByAlias(null, "armv5_udeb_gcce");
- assertNull(config); // This config should only be defined by SDK suppliers
-
- ISymbianSDK sdk = SDKCorePlugin.getSDKManager().getSDK(SDK_ID1, false);
- assertNotNull("Missing SDK on your system: " + SDK_ID1, sdk);
- config = sbsAliasBaseQuery.getSBSConfigByAlias(sdk, "armv5_udeb_gcce");
- assertNotNull(config); // This config should only be defined by SDK suppliers
-
- // TODO: This should fail if 'SBS_GCCE432BIN is not set
- // So we should have one test that will fail with known error message
- // and another that will pass when an env var is set correctly.
- // e.g. test two different versions of GCCE aliases.
-// assertEquals("/epoc32/release/armv5/udeb", config.getReleaseDirectory(null));
-// assertEquals("armv5", config.getTraditionalPlatform(null));
-// assertEquals("udeb", config.getTraditionalTarget(null));
+ for (ISymbianBuildContext context : buildContexts){
+ assertTrue(context instanceof ISBSv2BuildContext);
+ ISBSv2BuildContext sbsv2Context = (ISBSv2BuildContext)context;
+
+ assertTrue(sbsv2Context.getVariantHRHDefines().size() > 0);
+ if (sbsv2Context.getConfigQueryData().getConfigurationErrorMessage() == null || sbsv2Context.getConfigQueryData().getConfigurationErrorMessage().length() == 0){
+ assertTrue((new File(sbsv2Context.getConfigQueryData().getMetaDataVariantHRH())).exists());
+ } else {
+ System.out.println("Config " + sbsv2Context.getSBSv2Alias() + " had error, cannot fully test: " + sbsv2Context.getConfigQueryData().getConfigurationErrorMessage());
+ }
+
+ assertTrue(sbsv2Context.getConfigQueryData().getTargettypes().size() > 0);
+ }
}
-
-
- /**
- * TODO: The SBS API FOR THIS QUERY IS UNDER CONSTRUCTION.....
- * TODO; This test should be run on individual %EPOCROOT% values
- * @throws Exception
- */
- public void testQueryMultipleConfigs() throws Exception {
- assertNotNull(sbsAliasBaseQuery);
-
- startTime = System.currentTimeMillis();
-
-
- List<String> aliasOrMeaningArray = new ArrayList<String>();
- aliasOrMeaningArray.add("armv5_udeb");
- aliasOrMeaningArray.add("arm.9e.udeb.rvct2_2");
- HashMap<String, String> releaseMap = SBSv2QueryUtils.queryConfigTargetInfo(aliasOrMeaningArray , null);
-
- assertEquals(2, releaseMap.size());
-
- ISymbianSDK sdk = SDKCorePlugin.getSDKManager().getSDK(SDK_ID1, false);
- assertNotNull("Missing SDK on your system: " + SDK_ID1, sdk);
- releaseMap = SBSv2QueryUtils.queryConfigTargetInfo(aliasOrMeaningArray , sdk);
- assertEquals(2, releaseMap.size());
-// String queryResult = getSBSQueryOutput(argList, null);
-// assertTrue("No output found from " + SBSv2QueryUtils.QUERY_CONFIG_COMMAND, queryResult.length() > 0);
-//
-// HashMap<String, String> outputMap = parseQueryConfigResults(queryResult);
-// assertTrue("No configs were found in query for : " + SBSv2QueryUtils.QUERY_CONFIG_COMMAND, outputMap.size() > 0);
-//
- if (printTimingStats)
- System.out.println("Time for testQueryProductsFromSDKs(): " + getTimingStats());
-//
- }
-
/**
* This test should be run on individual %EPOCROOT% values
* Products are defined in the SDK
@@ -178,46 +96,10 @@
public void testQueryProductsFromSDKs() throws Exception {
ISymbianSDK sdk = SDKCorePlugin.getSDKManager().getSDK(SDK_ID1, false);
assertNotNull("Missing SDK on your system: " + SDK_ID1, sdk);
- List<String> products = sbsAliasBaseQuery.getProductsForSDK(sdk);
- assertEquals(19, products.size());
+ List<String> productList = SBSv2QueryUtils.getProductVariantsForSDK(sdk);
+ assertTrue(productList.size() > 0);
}
- public void testStressQueryTest() throws Exception {
-
- long stressTestStartTime = System.currentTimeMillis();
-
- testQueryAliases();
-
- testQueryMultipleConfigs();
- testQueryMultipleConfigs();
- testQueryMultipleConfigs();
- testQueryMultipleConfigs();
- testQueryMultipleConfigs();
- testQueryMultipleConfigs();
- testQueryMultipleConfigs();
- testQueryMultipleConfigs();
- testQueryMultipleConfigs();
- testQueryMultipleConfigs();
-
- testQueryProductsFromSDKs();
- testQueryProductsFromSDKs();
- testQueryProductsFromSDKs();
- testQueryProductsFromSDKs();
- testQueryProductsFromSDKs();
- testQueryProductsFromSDKs();
- testQueryProductsFromSDKs();
- testQueryProductsFromSDKs();
- testQueryProductsFromSDKs();
- testQueryProductsFromSDKs();
- testQueryProductsFromSDKs();
-
- startTime = stressTestStartTime;
-
- if (printTimingStats)
- System.out.println("Time for testStressQueryTest(): " + getTimingStats());
- }
-
-
public String getTimingStats(){
if (startTime != 0){
long millisec = (System.currentTimeMillis() - startTime);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/TestCarbideProjectSettingsModifier.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,96 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+package com.nokia.carbide.cdt.builder.test;
+
+import java.util.ArrayList;
+
+import junit.framework.TestCase;
+
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.dom.IPDOMManager;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.NullProgressMonitor;
+
+import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
+import com.nokia.carbide.cdt.builder.extension.ICarbidePrefsModifier;
+import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
+import com.nokia.carbide.cpp.project.core.ProjectCorePlugin;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+
+
+public class TestCarbideProjectSettingsModifier extends TestCase {
+ static IProject project;
+ static ISymbianSDK symbianSDKS60_30;
+
+ protected static final String PROJECT_NAME = "test-prj-modifier-project";
+
+ private static final String ABLD_BUILD_ARG_SETTING = "ABLD_BUILD_ARG_SETTING";
+
+ // First thing we have to do is actually create a project in a workspace...
+ protected void setUp() throws Exception {
+ if (project == null){
+ // turn off the indexer
+ CCorePlugin.getIndexManager().setDefaultIndexerId(IPDOMManager.ID_NO_INDEXER);
+
+ project = ProjectCorePlugin.createProject(PROJECT_NAME, null);
+
+ ProjectCorePlugin.postProjectCreatedActions(project, "group/bld.inf", TestPlugin.getUsableBuildConfigs(), new ArrayList<String>(), "Debug MMP", null, new NullProgressMonitor());
+ }
+ super.setUp();
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ // Make sure the project nature is there
+ @SuppressWarnings("deprecation")
+ public void testModifier() throws Exception{
+ assertNotNull(project);
+
+ ICarbideProjectInfo cpi = CarbideBuilderPlugin.getBuildManager().getProjectInfo(project);
+ assertNotNull(cpi);
+
+ // get
+ ICarbidePrefsModifier extProvider = CarbideBuilderPlugin.getBuildManager().getPrefsModifier();
+
+ // this will be false once abld is deprecated
+ assertTrue(extProvider.isSupportedConfigurationPrefId(cpi.getDefaultConfiguration(), ICarbidePrefsModifier.ABLD_BUILD_ARG_SETTING));
+
+ assertFalse(extProvider.isSupportedConfigurationPrefId(cpi.getDefaultConfiguration(), "bad_id"));
+
+ assertNotNull(extProvider); // will be null when SBSv1 support is removed
+
+ String original = extProvider.getConfigurationValue(cpi.getDefaultConfiguration(), ABLD_BUILD_ARG_SETTING);
+ assertTrue(original.equals(""));
+
+ extProvider.setConfigurationValue(cpi.getDefaultConfiguration(), "FOO", ABLD_BUILD_ARG_SETTING);
+
+ cpi.getDefaultConfiguration().saveConfiguration(false);
+
+ String test = extProvider.getConfigurationValue(cpi.getDefaultConfiguration(), ABLD_BUILD_ARG_SETTING);
+ assertTrue(test.equals("FOO"));
+
+ extProvider.setConfigurationValue(cpi.getDefaultConfiguration(), original, ABLD_BUILD_ARG_SETTING);
+
+ cpi.getDefaultConfiguration().saveConfiguration(false);
+ test = extProvider.getConfigurationValue(cpi.getDefaultConfiguration(), ABLD_BUILD_ARG_SETTING);
+ assertTrue(original.equals(test));
+ }
+
+
+}
--- a/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/TestEpocEngineHelper.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/TestEpocEngineHelper.java Wed Aug 25 12:42:09 2010 -0500
@@ -44,6 +44,8 @@
import com.nokia.carbide.cpp.epoc.engine.MMPViewRunnableAdapter;
import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPView;
import com.nokia.carbide.cpp.epoc.engine.preprocessor.AcceptedNodesViewFilter;
+import com.nokia.carbide.cpp.epoc.engine.preprocessor.DefineFactory;
+import com.nokia.carbide.cpp.epoc.engine.preprocessor.IDefine;
import com.nokia.carbide.cpp.project.core.ProjectCorePlugin;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
import com.nokia.cpp.internal.api.utils.core.FileUtils;
@@ -193,4 +195,21 @@
}
}
+ public void testProjectMaroRetrieval() throws Exception {
+ ICarbideProjectInfo cpi = CarbideBuilderPlugin.getBuildManager().getProjectInfo(carbideProject);
+
+ List<IDefine> projectDefines = EpocEngineHelper.getGlobalDefinesForConfiguration(cpi.getDefaultConfiguration(), null);
+
+ boolean testSpecificMacro = false;
+ for (IDefine define: projectDefines){
+ if (define.getName().equals("__SUPPORT_CPP_EXCEPTIONS__")){
+ testSpecificMacro = true;
+ break;
+ }
+ }
+ assertTrue(testSpecificMacro);
+
+ assertTrue(cpi.getDefaultConfiguration().getCompileTimeMacros().size() > 0);
+ }
+
}
--- a/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/TestPlugin.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/TestPlugin.java Wed Aug 25 12:42:09 2010 -0500
@@ -17,17 +17,21 @@
*/
package com.nokia.carbide.cdt.builder.test;
-import com.nokia.carbide.cpp.sdk.core.*;
-
-import org.eclipse.ui.plugin.*;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.osgi.framework.BundleContext;
-
+import java.io.File;
import java.util.Collections;
import java.util.List;
import junit.framework.TestCase;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
+
public class TestPlugin extends AbstractUIPlugin {
//The shared instance.
@@ -79,9 +83,12 @@
*/
public static List<ISymbianBuildContext> getUsableBuildConfigs() {
for (ISymbianSDK sdk : SDKCorePlugin.getSDKManager().getSDKList()) {
- List<ISymbianBuildContext> contexts = sdk.getUnfilteredBuildConfigurations();
- if (contexts.size() > 0) {
- return contexts.subList(0, Math.min(contexts.size(), 8));
+ if ((new File(sdk.getEPOCROOT()).exists())){
+ // TODO: Convert to SBSv2 test
+ List<ISymbianBuildContext> contexts = sdk.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER).getAllBuildConfigurations();
+ if (contexts.size() > 0) {
+ return contexts.subList(0, Math.min(contexts.size(), 8));
+ }
}
}
TestCase.fail("No installed SDKs provide build configurations");
--- a/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/CarbideErrorParserTestHarness.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/CarbideErrorParserTestHarness.java Wed Aug 25 12:42:09 2010 -0500
@@ -170,7 +170,6 @@
file = FileUtils.pluginRelativeFile(TestPlugin.getDefault(), "data/currentOutput.xml");
writeRegressionXMLFile(new java.io.PrintStream(file));
} catch (IOException e) {
- // TODO Auto-generated catch block
e.printStackTrace();
}
}
@@ -377,7 +376,6 @@
printStream.close();
} catch (IOException e) {
- // TODO Auto-generated catch block
e.printStackTrace();
}
--- a/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/ErrorParserRegressionGenerator.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/ErrorParserRegressionGenerator.java Wed Aug 25 12:42:09 2010 -0500
@@ -31,8 +31,10 @@
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
import com.nokia.carbide.cdt.builder.test.TestPlugin;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
import com.nokia.carbide.cpp.project.core.ProjectCorePlugin;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
import com.nokia.cpp.internal.api.utils.core.FileUtils;
@@ -45,7 +47,7 @@
private static final String PROJECT_NAME = "TestErrorParser";
// Platform matters, set this before you build
- private static final String PLATFORM_STRING = ISymbianBuildContext.ARMV5_PLATFORM;
+ private static final String PLATFORM_STRING = ISBSv1BuildContext.ARMV5_PLATFORM;
CarbideErrorParserTestHarness harness;
private IProject project;
@@ -59,7 +61,7 @@
// You need to set the proper default configuration so the correct set of error parsers is called
List<ISymbianSDK> sdkList = SDKCorePlugin.getSDKManager().getSDKList();
for (ISymbianSDK currSDK : sdkList){
- List<ISymbianBuildContext> contexts = currSDK.getUnfilteredBuildConfigurations();
+ List<ISymbianBuildContext> contexts = currSDK.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER).getAllBuildConfigurations();
for (ISymbianBuildContext context : contexts) {
if (context.getPlatformString().equals(PLATFORM_STRING)) {
contextList.add(context);
@@ -85,7 +87,7 @@
ICarbideBuildConfiguration buildConfig = cpi.getDefaultConfiguration();
harness = new CarbideErrorParserTestHarness(project,
new NullProgressMonitor(),
- CarbideCPPBuilder.getParserIdArray(buildConfig.getErrorParserId()),
+ buildConfig.getErrorParserList(),
cpi.getINFWorkingDirectory());
}
--- a/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/TestGcceErrorParser.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/TestGcceErrorParser.java Wed Aug 25 12:42:09 2010 -0500
@@ -30,8 +30,10 @@
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
import com.nokia.carbide.cdt.builder.test.TestPlugin;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
import com.nokia.carbide.cpp.project.core.ProjectCorePlugin;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
import com.nokia.cpp.internal.api.utils.core.FileUtils;
@@ -56,9 +58,9 @@
// You need to set the proper default configuration so the correct set of error parsers is called
List<ISymbianSDK> sdkList = SDKCorePlugin.getSDKManager().getSDKList();
for (ISymbianSDK currSDK : sdkList){
- List<ISymbianBuildContext> contexts = currSDK.getUnfilteredBuildConfigurations();
+ List<ISymbianBuildContext> contexts = currSDK.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER).getAllBuildConfigurations();
for (ISymbianBuildContext context : contexts) {
- if (context.getPlatformString().equals(ISymbianBuildContext.GCCE_PLATFORM)) {
+ if (context.getPlatformString().equals(ISBSv1BuildContext.GCCE_PLATFORM)) {
contextList.add(context);
break;
}
@@ -78,7 +80,7 @@
ICarbideBuildConfiguration buildConfig = cpi.getDefaultConfiguration();
harness = new CarbideErrorParserTestHarness(project,
new NullProgressMonitor(),
- CarbideCPPBuilder.getParserIdArray(buildConfig.getErrorParserId()),
+ buildConfig.getErrorParserList(),
cpi.getINFWorkingDirectory());
}
--- a/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/TestMakeErrorParser.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/TestMakeErrorParser.java Wed Aug 25 12:42:09 2010 -0500
@@ -30,8 +30,10 @@
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
import com.nokia.carbide.cdt.builder.test.TestPlugin;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
import com.nokia.carbide.cpp.project.core.ProjectCorePlugin;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
import com.nokia.cpp.internal.api.utils.core.FileUtils;
@@ -40,7 +42,6 @@
public TestMakeErrorParser(String name) {
super(name);
- // TODO Auto-generated constructor stub
}
CarbideErrorParserTestHarness harness;
@@ -57,9 +58,9 @@
// You need to set the proper default configuration so the correct set of error parsers is called
List<ISymbianSDK> sdkList = SDKCorePlugin.getSDKManager().getSDKList();
for (ISymbianSDK currSDK : sdkList){
- List<ISymbianBuildContext> contexts = currSDK.getUnfilteredBuildConfigurations();
+ List<ISymbianBuildContext> contexts = currSDK.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER).getAllBuildConfigurations();
for (ISymbianBuildContext context : contexts) {
- if (context.getPlatformString().equals(ISymbianBuildContext.EMULATOR_PLATFORM)) {
+ if (context.getPlatformString().equals(ISBSv1BuildContext.EMULATOR_PLATFORM)) {
contextList.add(context);
break;
}
@@ -79,7 +80,7 @@
ICarbideBuildConfiguration buildConfig = cpi.getDefaultConfiguration();
harness = new CarbideErrorParserTestHarness(project,
new NullProgressMonitor(),
- CarbideCPPBuilder.getParserIdArray(buildConfig.getErrorParserId()),
+ buildConfig.getErrorParserList(),
cpi.getINFWorkingDirectory());
}
--- a/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/TestMakmakeErrorParser.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/TestMakmakeErrorParser.java Wed Aug 25 12:42:09 2010 -0500
@@ -31,8 +31,10 @@
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
import com.nokia.carbide.cdt.builder.test.TestPlugin;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
import com.nokia.carbide.cpp.project.core.ProjectCorePlugin;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
import com.nokia.cpp.internal.api.utils.core.FileUtils;
@@ -54,9 +56,9 @@
// You need to set the proper default configuration so the correct set of error parsers is called
List<ISymbianSDK> sdkList = SDKCorePlugin.getSDKManager().getSDKList();
for (ISymbianSDK currSDK : sdkList){
- List<ISymbianBuildContext> contexts = currSDK.getUnfilteredBuildConfigurations();
+ List<ISymbianBuildContext> contexts = currSDK.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER).getAllBuildConfigurations();
for (ISymbianBuildContext context : contexts) {
- if (context.getPlatformString().equals(ISymbianBuildContext.ARMV5_PLATFORM)) {
+ if (context.getPlatformString().equals(ISBSv1BuildContext.ARMV5_PLATFORM)) {
contextList.add(context);
break;
}
@@ -79,7 +81,7 @@
ICarbideBuildConfiguration buildConfig = cpi.getDefaultConfiguration();
harness = new CarbideErrorParserTestHarness(project,
new NullProgressMonitor(),
- CarbideCPPBuilder.getParserIdArray(buildConfig.getErrorParserId()),
+ buildConfig.getErrorParserList(),
cpi.getINFWorkingDirectory());
}
--- a/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/TestRVCTErrorParser.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/TestRVCTErrorParser.java Wed Aug 25 12:42:09 2010 -0500
@@ -31,8 +31,10 @@
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
import com.nokia.carbide.cdt.builder.test.TestPlugin;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
import com.nokia.carbide.cpp.project.core.ProjectCorePlugin;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
import com.nokia.cpp.internal.api.utils.core.FileUtils;
@@ -54,9 +56,9 @@
// You need to set the proper default configuration so the correct set of error parsers is called
List<ISymbianSDK> sdkList = SDKCorePlugin.getSDKManager().getSDKList();
for (ISymbianSDK currSDK : sdkList){
- List<ISymbianBuildContext> contexts = currSDK.getUnfilteredBuildConfigurations();
+ List<ISymbianBuildContext> contexts = currSDK.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER).getAllBuildConfigurations();
for (ISymbianBuildContext context : contexts) {
- if (context.getPlatformString().equals(ISymbianBuildContext.ARMV5_PLATFORM)) {
+ if (context.getPlatformString().equals(ISBSv1BuildContext.ARMV5_PLATFORM)) {
contextList.add(context);
break;
}
@@ -81,7 +83,7 @@
ICarbideBuildConfiguration buildConfig = cpi.getDefaultConfiguration();
harness = new CarbideErrorParserTestHarness(project,
new NullProgressMonitor(),
- CarbideCPPBuilder.getParserIdArray(buildConfig.getErrorParserId()),
+ buildConfig.getErrorParserList(),
cpi.getINFWorkingDirectory());
}
--- a/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/TestSBSv2ErrorParser.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/errorParsers/TestSBSv2ErrorParser.java Wed Aug 25 12:42:09 2010 -0500
@@ -31,8 +31,10 @@
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
import com.nokia.carbide.cdt.builder.test.TestPlugin;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
import com.nokia.carbide.cpp.project.core.ProjectCorePlugin;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
import com.nokia.cpp.internal.api.utils.core.FileUtils;
@@ -54,9 +56,9 @@
// You need to set the proper default configuration so the correct set of error parsers is called
List<ISymbianSDK> sdkList = SDKCorePlugin.getSDKManager().getSDKList();
for (ISymbianSDK currSDK : sdkList){
- List<ISymbianBuildContext> contexts = currSDK.getUnfilteredBuildConfigurations();
+ List<ISymbianBuildContext> contexts = currSDK.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER).getAllBuildConfigurations();
for (ISymbianBuildContext context : contexts) {
- if (context.getPlatformString().equals(ISymbianBuildContext.ARMV5_PLATFORM)) {
+ if (context.getPlatformString().equals(ISBSv1BuildContext.ARMV5_PLATFORM)) {
contextList.add(context);
break;
}
@@ -79,7 +81,7 @@
ICarbideBuildConfiguration buildConfig = cpi.getDefaultConfiguration();
harness = new CarbideErrorParserTestHarness(project,
new NullProgressMonitor(),
- CarbideCPPBuilder.getParserIdArray(buildConfig.getErrorParserId()),
+ buildConfig.getErrorParserList(),
cpi.getINFWorkingDirectory());
}
--- a/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/sandbox/ISBSv2ConfigData.java Tue Aug 24 16:42:58 2010 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*
-* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-* Test the BldInfViewPathHelper class.
-*
-*/
-package com.nokia.carbide.cdt.builder.test.sandbox;
-
-import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
-
-/**
- * Data that describes the meaning of a single build configuration, as discovered by SBS
- *
- * @noimplement
- */
-public interface ISBSv2ConfigData {
-
- /**
- * Get the usable SBS build alias that can be used for the -c parameter
- * @return the unique build alias
- */
- String getBuildAlias();
-
- /**
- * Get the meaning (aka dotted name, component name) fo the build alias.
- * Can also be used as a -c argument in SBS
- * @return the meaning
- */
- String getMeaning();
-
- /**
- * Get the directory for a given SDK where binaries are output
- * @param sdk - use null if for base configuration
- * @return the portable OS string starting from /epoc32/
- */
- String getReleaseDirectory(ISymbianSDK sdk);
-
- /**
- * TODO: This API is not yet defined.
- * @param sdk
- * @return
- */
- ISBSv2ConfigPreprocessorInfo getBuildData(ISymbianSDK sdk);
-
- /**
- * Get the name of the folder where executable binaries are written (typically 'debug' or 'release')
- * @param sdk - use null for base configuration
- * @return string of folder name
- */
- String getTraditionalTarget(ISymbianSDK sdk);
-
- /**
- * Get the name of the folder where executable binaries are written (component before the target)
- * @param sdk - use null for base configuration
- * @return string of folder name
- */
- String getTraditionalPlatform(ISymbianSDK sdk);
-
- /**
- * Get the SDK for which this configuration was qeuried.
- * @return the SDK, or null if it's a base sbs configuration
- */
- ISymbianSDK getSupportingSDK();
-
-}
--- a/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/sandbox/ISBSv2ConfigPreprocessorInfo.java Tue Aug 24 16:42:58 2010 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
-* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-* Test the BldInfViewPathHelper class.
-*
-*/
-package com.nokia.carbide.cdt.builder.test.sandbox;
-
-import java.util.List;
-
-import org.eclipse.core.runtime.IPath;
-
-/**
- * TODO: This API is not yet developed
- *
- * @noimplement
- */
-public interface ISBSv2ConfigPreprocessorInfo {
-
- List<String> getMacroList();
-
- List<IPath> getSystemIncludes();
-
- IPath getVariantConfig();
-
- String getCompiler();
-
- IPath getCompilerPrefix();
-
- ISBSv2ConfigData getSBSv2QueryConfigData();
-
-}
--- a/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/sandbox/ISBSv2QueryData.java Tue Aug 24 16:42:58 2010 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/*
-* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-* Test the BldInfViewPathHelper class.
-*
-*/
-package com.nokia.carbide.cdt.builder.test.sandbox;
-
-import java.util.HashMap;
-import java.util.List;
-
-import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
-
-/**
- * Interface that wraps all queries to the Symbian Build System (SBSv2/Raptor)
- *
- * @noimplement
- */
-public interface ISBSv2QueryData {
-
- /**
- * For given SDK, add an SBS build configuration
- * @param sdk - use null if base SBS data
- * @param configData - The configuration to add
- */
- void addConfigurationData(ISymbianSDK sdk, ISBSv2ConfigData configData);
-
- /**
- * Get all usable SBS configurations for a given SDK, which is the union of
- * the SBS base configurations and SDK specific configurations.
- * @param sdk - should not be null
- * @return -The list of all usable SBS build configurations
- * @see {@link ISBSv2QueryData#getSDKSpecificConfigData(ISymbianSDK)}
- * @see {@link ISBSv2QueryData#getBaseSBSConfigurations()}
- */
- List<ISBSv2ConfigData> getAllConfigurationsForSDK(ISymbianSDK sdk);
-
- /**
- * Get the SBS configurations that are defined only by the SDK.
- * This does not include configurations that have altered meanings,
- * rather they provide a new unique build alias that is not defined in the base SBS installation.
- * @param sdk - never null
- * @return The unique SBS configurations to a given SDK. An empty list of none.
- */
- List<ISBSv2ConfigData> getSDKSpecificConfigData(ISymbianSDK sdk);
-
- /**
- * Get the map of build alias to sbs configuration data that Raptor defines
- * without input from any SDK
- * @return a HashMap of SBS build alias to configuration data
- */
- HashMap<String, ISBSv2ConfigData> getBaseSBSConfigurations();
-
- /**
- * Get the product variant list for a given SDK
- * @param sdk - The SDK, should not be null
- * @return The list of product variants
- */
- List<String> getProductsForSDK(ISymbianSDK sdk);
-
- /**
- * Sets the product variant list by the SDK. Products are typically defined
- * under /epoc32/sbs_config/variant_configurations.xml
- * @param sdk - The SDK, must not be null
- * @param products - The list of build variants that can be applied to any build alias or meaning
- */
- void addProductListForSDK(ISymbianSDK sdk, List<String> products);
-
- /**
- * Find SBS configuration data for a single build configuration.
- * @param sdk - The SDK that contains the build configuration. Null for a base configuration
- * @param string - The build alias (e.g. armv5_udeb)
- * @return SBS configuration data, or null if not found
- */
- ISBSv2ConfigData getSBSConfigByAlias(ISymbianSDK sdk, String alias);
-
- /**
- * Find SBS configuration data for a single build configuration.
- * @param sdk - The SDK that contains the build configuration. Null for a base configuration
- * @param string - The build meaning or dotted name (e.g. arm.v5.udeb.rvct2_2)
- * @return SBS configuration data, or null if not found
- */
- ISBSv2ConfigData getSBSConfigByMeaning(ISymbianSDK sdk, String meaning);
-}
--- a/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/sandbox/SBSv2ConfigData.java Tue Aug 24 16:42:58 2010 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,125 +0,0 @@
-/*
-* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-* Test the BldInfViewPathHelper class.
-*
-*/
-package com.nokia.carbide.cdt.builder.test.sandbox;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-
-import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
-
-public class SBSv2ConfigData implements ISBSv2ConfigData {
-
- /** The supporting SDK. May be null if it's a base configuration */
- ISymbianSDK sdk;
-
- /**
- * A unique build alias. There can only be one alias definition, but an SDK can change the meaning of the alias
- */
- String buildAlias;
- /*
- * The dotted name for the alias. One build alias can have multiple meanings, each defined in an SDK
- */
- String meaning;
-
- String target = null;
- String platform = null;
- String releaseDirectory = null;
-
- public SBSv2ConfigData(String buildAlias, String meaning, ISymbianSDK sdk){
- this.buildAlias = buildAlias;
- this.meaning = meaning;
- if (sdk != null){
- this.sdk = sdk;
- }
- }
-
- public String getBuildAlias() {
- return buildAlias;
- }
-
- public String getMeaning() {
- return meaning;
- }
-
-
- public String getReleaseDirectory(ISymbianSDK sdk) {
- if (releaseDirectory == null){
- initDefaultConfigTargetInfo(sdk);
- }
- return releaseDirectory;
- }
-
- private void initDefaultConfigTargetInfo(ISymbianSDK sdk) {
- List<String> aliasOrMeaningArray = new ArrayList<String>();
- aliasOrMeaningArray.add(buildAlias);
- HashMap <String, String> configResponse = SBSv2QueryUtils.queryConfigTargetInfo(aliasOrMeaningArray, sdk);
- String releaseTree = configResponse.get(meaning);
- if (releaseTree == null){
- // TODO: Throw Exception
- return;
- }
- IPath releasePath = new Path(releaseTree);
- int epoc32SegmentIndex = 0;
- for (String segment : releasePath.segments()){
- if (segment.toLowerCase().equals("epoc32"))
- break;
- epoc32SegmentIndex++;
- }
- platform = releasePath.segment(epoc32SegmentIndex+2);
- target = releasePath.segment(epoc32SegmentIndex+3);
- String device = releasePath.getDevice();
- releaseDirectory = releasePath.removeFirstSegments(epoc32SegmentIndex).toPortableString();
- releaseDirectory = releaseDirectory.replace(device, "");
-
- }
-
- public ISBSv2ConfigPreprocessorInfo getBuildData(ISymbianSDK sdk) {
- // TODO Auto-generated method stub
- return null;
- }
-
- public String getTraditionalTarget(ISymbianSDK sdk) {
- if (target == null){
- initDefaultConfigTargetInfo(sdk);
- }
-
- return target;
- }
-
- public String getTraditionalPlatform(ISymbianSDK sdk) {
- if (platform == null){
- initDefaultConfigTargetInfo(sdk);
- }
-
- return platform;
- }
-
- public String toString(){
- return "Alias = " + buildAlias + " : Meaning = " + meaning;
- }
-
- public ISymbianSDK getSupportingSDK() {
- return sdk;
- }
-
-
-}
--- a/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/sandbox/SBSv2QueryData.java Tue Aug 24 16:42:58 2010 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,132 +0,0 @@
-/*
-* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-* Test the BldInfViewPathHelper class.
-*
-*/
-package com.nokia.carbide.cdt.builder.test.sandbox;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
-
-public class SBSv2QueryData implements ISBSv2QueryData {
-
- /** alias to ISBSv2ConfigData - These are the standard build configs defined by Raptor, and are treated as virtual by this API */
- HashMap<String, ISBSv2ConfigData> baseSBSConfigs = new HashMap<String, ISBSv2ConfigData>();
- /** SDK ==> ISBSv2ConfigData : Contains all the SBS configs particular to a single SDK */
- HashMap<ISymbianSDK, List<ISBSv2ConfigData>> sbsSDKBuildConfigMap = new HashMap<ISymbianSDK, List<ISBSv2ConfigData>>();
- HashMap<ISymbianSDK, List<String>> sdkProductVariantList = new HashMap<ISymbianSDK, List<String>>();
-
- public void addConfigurationData(ISymbianSDK sdk, ISBSv2ConfigData configData) {
-
- if (sdk == null){
- baseSBSConfigs.put(configData.getBuildAlias(), configData);
- }
-
- List<ISBSv2ConfigData> configDataForSDK = sbsSDKBuildConfigMap.get(sdk);
-
- if (configDataForSDK == null){
- // This SDK does not exist, create the first entry
- configDataForSDK = new ArrayList<ISBSv2ConfigData>();
- configDataForSDK.add(configData);
- sbsSDKBuildConfigMap.put(sdk, configDataForSDK);
- return;
- }
-
- configDataForSDK.add(configData);
- }
-
- public HashMap<String, ISBSv2ConfigData> getBaseSBSConfigurations() {
- return baseSBSConfigs;
- }
-
- public List<ISBSv2ConfigData> getSDKSpecificConfigData(ISymbianSDK sdk) {
- List<ISBSv2ConfigData> sdkDefinedConfigs = new ArrayList<ISBSv2ConfigData>();
-
- for (ISBSv2ConfigData oneConfig : sbsSDKBuildConfigMap.get(sdk)){
- // check if the alias is already in the base list, if not add it
- boolean addConfigForReturn = true;
- for (String alias : baseSBSConfigs.keySet()){
- ISBSv2ConfigData baseConfig = baseSBSConfigs.get(alias);
- if (oneConfig.getBuildAlias().equals(baseConfig.getBuildAlias())){
- addConfigForReturn = false;
- break;
- }
- }
- if (addConfigForReturn){
- sdkDefinedConfigs.add(oneConfig);
- }
- }
-
- return sdkDefinedConfigs;
- }
-
- public List<ISBSv2ConfigData> getAllConfigurationsForSDK(ISymbianSDK sdk) {
- return sbsSDKBuildConfigMap.get(sdk);
- }
-
- public List<String> getProductsForSDK(ISymbianSDK sdk) {
- return sdkProductVariantList.get(sdk);
- }
-
- public void addProductListForSDK(ISymbianSDK sdk, List<String> products) {
- if (null == sdkProductVariantList.get(sdk) ||
- sdkProductVariantList.size() == 0){
-
- sdkProductVariantList.put(sdk, products);
- }
- }
-
- public ISBSv2ConfigData getSBSConfigByAlias(ISymbianSDK sdk, String alias) {
-
- if (sdk == null){
- return baseSBSConfigs.get(alias);
- } else {
- List<ISBSv2ConfigData> configListForSDK = sbsSDKBuildConfigMap.get(sdk);
-
- for (ISBSv2ConfigData config : configListForSDK){
- if (config.getBuildAlias().equals(alias)){
- return config;
- }
- }
- }
-
- return null;
- }
-
- public ISBSv2ConfigData getSBSConfigByMeaning(ISymbianSDK sdk, String meaning) {
- if (sdk == null){
- for (String aliasKey : baseSBSConfigs.keySet()){
- ISBSv2ConfigData config = baseSBSConfigs.get(aliasKey);
- if (config.getMeaning().equals(meaning)){
- return config;
- }
- }
- } else {
- List<ISBSv2ConfigData> configListForSDK = sbsSDKBuildConfigMap.get(sdk);
-
- for (ISBSv2ConfigData config : configListForSDK){
- if (config.getMeaning().equals(meaning)){
- return config;
- }
- }
- }
-
- return null;
- }
-
-}
--- a/builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/sandbox/SBSv2QueryUtils.java Tue Aug 24 16:42:58 2010 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,305 +0,0 @@
-/*
-* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-* Test the BldInfViewPathHelper class.
-*
-*/
-package com.nokia.carbide.cdt.builder.test.sandbox;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.StringReader;
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Properties;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
-import org.eclipse.cdt.utils.spawner.EnvironmentReader;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.InputSource;
-import org.xml.sax.helpers.DefaultHandler;
-
-import com.nokia.carbide.cpp.internal.api.sdk.SBSv2Utils;
-import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
-import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
-import com.nokia.cpp.internal.api.utils.core.Logging;
-
-public class SBSv2QueryUtils {
-
- public static final String QUERY_PRODUCTS_COMMAND = "--query=products";
- public static final String QUERY_CONFIG_COMMAND = "--query=config";
- public static final String QUERY_COMMAND = "--query=aliases";
-
- public static ISBSv2QueryData queryAliasAndProductVariants() {
- List<String> argListConfigQuery = new ArrayList<String>();
- List<String> argListProductQuery = new ArrayList<String>();
- argListConfigQuery.add(QUERY_COMMAND);
- SBSv2QueryData sbsQueryData = new SBSv2QueryData();
-
- /////// Invoke Raptor once with no EPOCROOT
- Properties envVars = EnvironmentReader.getEnvVars();
- envVars.setProperty("EPOCROOT", "FOOBAR");
- String queryResult = getSBSQueryOutput(argListConfigQuery, createEnvStringList(envVars));
-
- HashMap<String, String> sbsAliasMap = parseQueryAliasResult(queryResult);
-
- for (String aliasKey : sbsAliasMap.keySet()){
- String meaning = sbsAliasMap.get(aliasKey);
- SBSv2ConfigData oneSBSConfig = new SBSv2ConfigData(aliasKey, meaning, null);
- sbsQueryData.addConfigurationData(null, oneSBSConfig);
- }
-
- /////// Do for each SDK to build up the alias list...
- for (ISymbianSDK sdk : SDKCorePlugin.getSDKManager().getSDKList()){
- IPath epocRoot = new Path(sdk.getEPOCROOT());
- if ((sdk.getOSVersion().getMajor() <= 9 && sdk.getOSVersion().getMinor() <5)
- || !epocRoot.toFile().exists()){
-
- continue; // skip it, the sdk is not supported or broken
- }
-
- envVars = EnvironmentReader.getEnvVars();
- envVars.setProperty("EPOCROOT", sdk.getEPOCROOT());
-
- queryResult = getSBSQueryOutput(argListConfigQuery, createEnvStringList(envVars));
-
- sbsAliasMap = parseQueryAliasResult(queryResult);
-
- for (String aliasKey : sbsAliasMap.keySet()){
- String meaning = sbsAliasMap.get(aliasKey);
- SBSv2ConfigData oneSBSConfig = new SBSv2ConfigData(aliasKey, meaning, sdk);
- sbsQueryData.addConfigurationData(sdk, oneSBSConfig);
- }
-
- // Now get the products for each SDK
- argListProductQuery.add(QUERY_PRODUCTS_COMMAND);
- queryResult = getSBSQueryOutput(argListProductQuery, createEnvStringList(envVars));
- List<String> productList = parseQueryProductsResults(queryResult);
- sbsQueryData.addProductListForSDK(sdk, productList);
- }
-
- return sbsQueryData;
- }
-
- public static HashMap<String, String> queryConfigTargetInfo(List<String> aliasOrMeaningArray, ISymbianSDK sdk){
-
- List<String> argListConfigQuery = new ArrayList<String>();
-
- for (String alias : aliasOrMeaningArray){
- argListConfigQuery.add(QUERY_CONFIG_COMMAND + "[" + alias + "]");
- }
-
- Properties envVars = null;
- if (sdk != null){
- File epocRoot = new File(sdk.getEPOCROOT());
- if (epocRoot.exists()){
- envVars = EnvironmentReader.getEnvVars();
- envVars.setProperty("EPOCROOT", sdk.getEPOCROOT());
- }
- }
- String queryResult = getSBSQueryOutput(argListConfigQuery, createEnvStringList(envVars));
-
- return parseQueryConfigResults(queryResult);
- }
-
- private static String[] createEnvStringList(Properties envProps) {
-
- if (envProps == null){
- return null;
- }
- String[] env = null;
- List<String> envList = new ArrayList<String>();
- Enumeration<?> names = envProps.propertyNames();
- if (names != null) {
- while (names.hasMoreElements()) {
- String key = (String) names.nextElement();
- envList.add(key + "=" + envProps.getProperty(key));
- }
- env = (String[]) envList.toArray(new String[envList.size()]);
- }
- return env;
- }
-
- private static String getSBSQueryOutput(List<String> queryCommandList, String[] env) {
- String overallOutput = "";
-
- Runtime rt = Runtime.getRuntime();
- IPath sbsPath = SBSv2Utils.getSBSPath();
- Process p = null;
- List<String> args = new ArrayList<String>();
- args.add(sbsPath.toOSString());
- args.addAll(queryCommandList);
- try {
- p = rt.exec(args.toArray(new String[args.size()]), env);
- } catch (IOException e) {
- // no such process, SBSv2 not available
- Logging.log(
- SDKCorePlugin.getDefault(),
- Logging.newSimpleStatus(
- 0,
- IStatus.WARNING,
- MessageFormat
- .format(
- "Could not find or launch Raptor script ''{0}''; SBSv2 support will not be available",
- sbsPath), e));
- }
- if (p != null) {
- BufferedReader br = new BufferedReader(new InputStreamReader(p
- .getInputStream()));
-
- String stdErrLine = null;
- try {
-
- // Only try for 30 seconds then bail in case Raptor hangs
- int maxTries = 60;
- int numTries = 0;
- while (numTries < maxTries) {
- try {
- Thread.sleep(500);
- } catch (InterruptedException e) {
- // ignore
- }
- if (br.ready()) {
- while ((stdErrLine = br.readLine()) != null) {
- overallOutput += stdErrLine;
- numTries = maxTries;
- }
-
- }
- numTries++;
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- return overallOutput;
- }
-
- private static HashMap<String, String> parseQueryAliasResult(String queryResult) {
- /* Alias to dotted name config */
- HashMap<String, String> sbsAliasMap = new HashMap<String, String>();
-
- try {
- Element root = null;
- DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
- parser.setErrorHandler(new DefaultHandler());
-
- StringReader reader = new StringReader( queryResult );
- InputSource inputSource = new InputSource( reader );
- root = parser.parse(inputSource).getDocumentElement();
-
- NodeList children = root.getChildNodes();
- for (int i=0; i< children.getLength(); i++) {
- Node aliasNode = children.item(i);
- if (aliasNode.getNodeName().equals("alias")){
- NamedNodeMap meaning = aliasNode.getAttributes();
- String dottedName = meaning.getNamedItem("meaning").getNodeValue();
- String alias = meaning.getNamedItem("name").getNodeValue();
- //System.out.println("ALIAS QUERY ==> " + dottedName + " <==> " + alias);
- sbsAliasMap.put(alias, dottedName);
- }
- }
-
- } catch (Exception e) {
- e.printStackTrace();
- Logging.log(SDKCorePlugin.getDefault(), Logging.newStatus(SDKCorePlugin.getDefault(), e));
- }
-
-
- return sbsAliasMap;
- }
-
- private static HashMap<String, String> parseQueryConfigResults(String queryResult) {
- /* Alias to output directory */
- HashMap<String, String> sbsAliasMap = new HashMap<String, String>();
-
- try {
- Element root = null;
- DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
- parser.setErrorHandler(new DefaultHandler());
-
- StringReader reader = new StringReader( queryResult );
- InputSource inputSource = new InputSource( reader );
- root = parser.parse(inputSource).getDocumentElement();
-
- NodeList children = root.getChildNodes();
- for (int i=0; i< children.getLength(); i++) {
- Node aliasNode = children.item(i);
- if (aliasNode.getNodeName().equals("config")){
- NamedNodeMap meaning = aliasNode.getAttributes();
- String outputpath = meaning.getNamedItem("outputpath").getNodeValue();
- String fullName = meaning.getNamedItem("fullname").getNodeValue();
- //System.out.println("ALIAS QUERY ==> " + dottedName + " <==> " + alias);
- sbsAliasMap.put(fullName, outputpath);
- }
- }
-
- } catch (Exception e) {
- e.printStackTrace();
- Logging.log(SDKCorePlugin.getDefault(), Logging.newStatus(SDKCorePlugin.getDefault(), e));
- }
-
-
- return sbsAliasMap;
- }
-
- private static List<String> parseQueryProductsResults(String queryResult) {
- List<String> productList = new ArrayList<String>();
-
- try {
- Element root = null;
- DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
- parser.setErrorHandler(new DefaultHandler());
-
- StringReader reader = new StringReader( queryResult );
- InputSource inputSource = new InputSource( reader );
- root = parser.parse(inputSource).getDocumentElement();
-
- NodeList children = root.getChildNodes();
- for (int i=0; i< children.getLength(); i++) {
- Node aliasNode = children.item(i);
- if (aliasNode.getNodeName().equals("product")){
- NamedNodeMap productAttribs = aliasNode.getAttributes();
- String name = productAttribs.getNamedItem("name").getNodeValue();
- //System.out.println("ALIAS QUERY ==> " + dottedName + " <==> " + alias);
- productList.add(name);
- }
- }
-
- } catch (Exception e) {
- e.printStackTrace();
- Logging.log(SDKCorePlugin.getDefault(), Logging.newStatus(SDKCorePlugin.getDefault(), e));
- }
-
- return productList;
- }
-
-
-
-
-}
--- a/builder/com.nokia.carbide.cdt.builder/META-INF/MANIFEST.MF Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/META-INF/MANIFEST.MF Wed Aug 25 12:42:09 2010 -0500
@@ -25,8 +25,9 @@
Bundle-ActivationPolicy: lazy
Export-Package: com.nokia.carbide.cdt.builder,
com.nokia.carbide.cdt.builder.builder,
+ com.nokia.carbide.cdt.builder.extension,
com.nokia.carbide.cdt.builder.project,
com.nokia.carbide.cdt.internal.api.builder,
com.nokia.carbide.cdt.internal.api.builder.ui,
- com.nokia.carbide.cdt.builder.extension
+ com.nokia.carbide.cdt.internal.builder;x-friends:="com.nokia.carbide.cpp.builder.utils"
Bundle-RequiredExecutionEnvironment: J2SE-1.5
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/BuildArgumentsInfo.java Tue Aug 24 16:42:58 2010 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,149 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-package com.nokia.carbide.cdt.builder;
-
-import com.nokia.carbide.cdt.builder.project.IBuildArgumentsInfo;
-import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
-
-/*
- * Wrapper for the build arguments settings in Carbide Build Configuration preferences
- */
-public class BuildArgumentsInfo implements IBuildArgumentsInfo {
-
- public static final String BLDMAKEBLDFILESARGSSTORAGE = "BLDMAKEBLDFILESARGSSTORAGE"; //$NON-NLS-1$
- public static final String BLDMAKECLEANARGSSTORAGE = "BLDMAKECLEANARGSSTORAGE"; //$NON-NLS-1$
- public static final String ABLDBUILDARGSSTORAGE = "ABLDBUILDARGSSTORAGE"; //$NON-NLS-1$
- public static final String ABLDEXPORTARGSSTORAGE = "ABLDEXPORTARGSSTORAGE"; //$NON-NLS-1$
- public static final String ABLDMAKEFILEARGSSTORAGE = "ABLDMAKEFILEARGSSTORAGE"; //$NON-NLS-1$
- public static final String ABLDLIBRARYARGSSTORAGE = "ABLDLIBRARYARGSSTORAGE"; //$NON-NLS-1$
- public static final String ABLDRESOURCEARGSSTORAGE = "ABLDRESOURCEARGSSTORAGE"; //$NON-NLS-1$
- public static final String ABLDTARGETARGSSTORAGE = "ABLDTARGETARGSSTORAGE"; //$NON-NLS-1$
- public static final String ABLDFINALARGSSTORAGE = "ABLDFINALARGSSTORAGE"; //$NON-NLS-1$
- public static final String ABLDCLEANARGSSTORAGE = "ABLDCLEANARGSSTORAGE"; //$NON-NLS-1$
- public static final String ABLDFREEZEARGSSTORAGE = "ABLDFREEZEARGSSTORAGE"; //$NON-NLS-1$
-
-
- public String bldmakeBldFilesArgs;
- public String bldmakeCleanArgs;
- public String abldBuildArgs;
- public String abldExportArgs;
- public String abldMakefileArgs;
- public String abldLibraryArgs;
- public String abldResourceArgs;
- public String abldTargetArgs;
- public String abldFinalArgs;
- public String abldCleanArgs;
- public String abldFreezeArgs;
-
-
- public BuildArgumentsInfo(ISymbianSDK sdk) {
-
- this.bldmakeBldFilesArgs = ""; //$NON-NLS-1$
- this.bldmakeCleanArgs = ""; //$NON-NLS-1$
- this.abldBuildArgs = ""; //$NON-NLS-1$
- this.abldExportArgs = ""; //$NON-NLS-1$
- this.abldMakefileArgs = ""; //$NON-NLS-1$
- this.abldLibraryArgs = ""; //$NON-NLS-1$
- this.abldResourceArgs = ""; //$NON-NLS-1$
- this.abldTargetArgs = ""; //$NON-NLS-1$
- this.abldFinalArgs = ""; //$NON-NLS-1$
- this.abldCleanArgs = ""; //$NON-NLS-1$
- this.abldFreezeArgs = ""; //$NON-NLS-1$
-
- if (sdk.isEKA2()) {
- this.abldFreezeArgs = "-r"; //$NON-NLS-1$
-
- }
- }
-
- public BuildArgumentsInfo(String bldmakeBldFilesArgs, String bldmakeCleanArgs, String abldBuildArgs, String abldExportArgs,
- String abldMakefileArgs, String abldLibraryArgs, String abldResourceArgs, String abldTargetArgs, String abldFinalArgs,
- String abldCleanArgs, String abldFreezeArgs) {
-
- this.bldmakeBldFilesArgs = bldmakeBldFilesArgs;
- this.bldmakeCleanArgs = bldmakeCleanArgs;
- this.abldBuildArgs = abldBuildArgs;
- this.abldExportArgs = abldExportArgs;
- this.abldMakefileArgs = abldMakefileArgs;
- this.abldLibraryArgs = abldLibraryArgs;
- this.abldResourceArgs = abldResourceArgs;
- this.abldTargetArgs = abldTargetArgs;
- this.abldFinalArgs = abldFinalArgs;
- this.abldCleanArgs = abldCleanArgs;
- this.abldFreezeArgs = abldFreezeArgs;
- }
-
- public BuildArgumentsInfo(BuildArgumentsInfo argInfo) {
-
- this.bldmakeBldFilesArgs = argInfo.bldmakeBldFilesArgs;
- this.bldmakeCleanArgs = argInfo.bldmakeCleanArgs;
- this.abldBuildArgs = argInfo.abldBuildArgs;
- this.abldExportArgs = argInfo.abldExportArgs;
- this.abldMakefileArgs = argInfo.abldMakefileArgs;
- this.abldLibraryArgs = argInfo.abldLibraryArgs;
- this.abldResourceArgs = argInfo.abldResourceArgs;
- this.abldTargetArgs = argInfo.abldTargetArgs;
- this.abldFinalArgs = argInfo.abldFinalArgs;
- this.abldCleanArgs = argInfo.abldCleanArgs;
- this.abldFreezeArgs = argInfo.abldFreezeArgs;
- }
-
- public String getBldmakeBldFilesArgs() {
- return bldmakeBldFilesArgs;
- }
-
- public String getBldmakeCleanArgs() {
- return bldmakeCleanArgs;
- }
-
- public String getAbldBuildArgs() {
- return abldBuildArgs;
- }
-
- public String getAbldExportArgs() {
- return abldExportArgs;
- }
-
- public String getAbldMakefileArgs() {
- return abldMakefileArgs;
- }
-
- public String getAbldLibraryArgs() {
- return abldLibraryArgs;
- }
-
- public String getAbldResourceArgs() {
- return abldResourceArgs;
- }
-
- public String getAbldTargetArgs() {
- return abldTargetArgs;
- }
-
- public String getAbldFinalArgs() {
- return abldFinalArgs;
- }
-
- public String getAbldCleanArgs() {
- return abldCleanArgs;
- }
-
- public String getAbldFreezeArgs() {
- return abldFreezeArgs;
- }
-
-}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/DefaultGNUMakefileViewConfiguration.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/DefaultGNUMakefileViewConfiguration.java Wed Aug 25 12:42:09 2010 -0500
@@ -48,7 +48,7 @@
* The build context may be null.
*/
public DefaultGNUMakefileViewConfiguration(ICarbideProjectInfo info, IViewFilter viewFilter) {
- this(info.getProject(), info.getDefaultConfiguration(), viewFilter);
+ this(info.getProject(), info.getDefaultConfiguration().getBuildContext(), viewFilter);
}
/**
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/DefaultImageMakefileViewConfiguration.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/DefaultImageMakefileViewConfiguration.java Wed Aug 25 12:42:09 2010 -0500
@@ -40,7 +40,7 @@
* The build context may not be null.
*/
public DefaultImageMakefileViewConfiguration(ICarbideProjectInfo info, IViewFilter viewFilter) {
- super(info.getProject(), info.getDefaultConfiguration(), viewFilter);
+ super(info.getProject(), info.getDefaultConfiguration().getBuildContext(), viewFilter);
}
/**
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/DefaultIncludeFileLocator.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/DefaultIncludeFileLocator.java Wed Aug 25 12:42:09 2010 -0500
@@ -20,13 +20,15 @@
package com.nokia.carbide.cdt.builder;
import java.io.File;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
import org.eclipse.core.resources.IProject;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
-import com.nokia.carbide.cpp.internal.api.sdk.SymbianBuildContext;
-import com.nokia.carbide.cpp.sdk.core.*;
+import com.nokia.carbide.cpp.internal.api.sdk.BuildContextSBSv1;
+import com.nokia.carbide.cpp.internal.api.sdk.BuildContextSBSv2;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
import com.nokia.carbide.internal.api.cpp.epoc.engine.preprocessor.BasicIncludeFileLocator;
import com.nokia.cpp.internal.api.utils.core.Check;
@@ -52,9 +54,13 @@
}
// get info from context
- Check.checkState(buildContext instanceof SymbianBuildContext);
+ Check.checkState(buildContext instanceof BuildContextSBSv1 || buildContext instanceof BuildContextSBSv2);
- systemPaths.addAll(((SymbianBuildContext) buildContext).getCachedSystemIncludePaths());
+ if (buildContext instanceof BuildContextSBSv1){
+ systemPaths.addAll(((BuildContextSBSv1) buildContext).getCachedSystemIncludePaths());
+ } else if (buildContext instanceof BuildContextSBSv2){
+ systemPaths.addAll(((BuildContextSBSv2) buildContext).getCachedSystemIncludePaths());
+ }
}
setPaths(null, (File[]) systemPaths.toArray(new File[systemPaths.size()]));
}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/DefaultMMPViewConfiguration.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/DefaultMMPViewConfiguration.java Wed Aug 25 12:42:09 2010 -0500
@@ -23,14 +23,16 @@
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
import com.nokia.carbide.cpp.epoc.engine.model.mmp.EMMPStatement;
import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPViewConfiguration;
-import com.nokia.carbide.cpp.epoc.engine.preprocessor.*;
+import com.nokia.carbide.cpp.epoc.engine.preprocessor.IViewFilter;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildContext;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
public class DefaultMMPViewConfiguration extends DefaultViewConfiguration implements IMMPViewConfiguration {
/** Configuration for the default build configuration of the project */
public DefaultMMPViewConfiguration(ICarbideProjectInfo info, IViewFilter viewFilter) {
- super(info.getProject(), info.getDefaultConfiguration(), viewFilter);
+ super(info.getProject(), info.getDefaultConfiguration().getBuildContext(), viewFilter);
}
/** Configuration for the given build configuration of the project with the given filter */
public DefaultMMPViewConfiguration(IProject project, ISymbianBuildContext context, IViewFilter viewFilter) {
@@ -49,7 +51,7 @@
/** Configuration for the given build configuration of the project with the given filter */
public DefaultMMPViewConfiguration(ICarbideBuildConfiguration buildConfiguration, IViewFilter viewFilter) {
- super(buildConfiguration.getCarbideProject().getProject(), buildConfiguration, viewFilter);
+ super(buildConfiguration.getCarbideProject().getProject(), buildConfiguration.getBuildContext(), viewFilter);
}
/**
@@ -64,15 +66,20 @@
return true;
}
- public String getDefaultDefFileBase(boolean isASSP) {
+ public String getDefaultDefFileBase() {
if (context != null)
- return context.getDefaultDefFileDirectoryName(isASSP);
+ return context.getDefaultDefFileDirectoryName();
return null;
}
public boolean isEmulatorBuild() {
- if (context != null)
- return context.getPlatformString().equals(ISymbianBuildContext.EMULATOR_PLATFORM);
- return true;
+ if (context != null){
+ if (context instanceof ISBSv1BuildContext){
+ return context.getPlatformString().equals(ISBSv1BuildContext.EMULATOR_PLATFORM);
+ } else if (context instanceof ISBSv2BuildContext){
+ return ((ISBSv2BuildContext)context).getSBSv2Alias().toUpperCase().contains(ISBSv2BuildContext.TOOLCHAIN_WINSCW);
+ }
+ }
+ return false;
}
}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/DefaultViewConfiguration.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/DefaultViewConfiguration.java Wed Aug 25 12:42:09 2010 -0500
@@ -20,7 +20,12 @@
import com.nokia.carbide.cpp.epoc.engine.model.IViewConfiguration;
import com.nokia.carbide.cpp.epoc.engine.model.IViewParserConfiguration;
import com.nokia.carbide.cpp.epoc.engine.preprocessor.*;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildInfo;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildInfo;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
import com.nokia.cpp.internal.api.utils.core.Check;
import org.eclipse.core.resources.IProject;
@@ -43,7 +48,7 @@
public DefaultViewConfiguration(ICarbideProjectInfo projectInfo) {
Check.checkArg(projectInfo);
this.project = projectInfo.getProject();
- this.context = projectInfo.getDefaultConfiguration();
+ this.context = projectInfo.getDefaultConfiguration().getBuildContext();
this.bldInfPath = null;
this.viewFilter = new AllNodesViewFilter();
wrapViewFilter();
@@ -198,23 +203,15 @@
public Collection<IDefine> getMacros() {
List<IDefine> macros = new ArrayList<IDefine>();
if (context != null) {
-
- if (context.getSBSv2Alias() != null){
- macros.add(DefineFactory.createDefine("SBSV2", null));
+ ISymbianSDK sdk = context.getSDK();
+
+ for (IDefine metaDataMacro : context.getMetadataMacros()) {
+ macros.add(metaDataMacro);
}
for (IDefine macro : context.getVariantHRHDefines()) {
macros.add(macro);
}
-
- for (String platMacro : context.getSDK().getPlatformMacros(context.getPlatformString())) {
- macros.add(DefineFactory.createDefine(platMacro.trim(), platMacro.trim()));
- }
-
- for (String vendorMacro : context.getSDK().getVendorSDKMacros()){
- macros.add(DefineFactory.createDefine(vendorMacro.trim(), vendorMacro.trim()));
- }
-
}
macros.addAll(extraMacros);
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/EpocEngineHelper.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/EpocEngineHelper.java Wed Aug 25 12:42:09 2010 -0500
@@ -16,36 +16,85 @@
*/
package com.nokia.carbide.cdt.builder;
-import com.nokia.carbide.cdt.builder.builder.CarbideCPPBuilder;
-import com.nokia.carbide.cdt.builder.project.*;
-import com.nokia.carbide.cdt.internal.builder.CarbideBuildConfiguration;
-import com.nokia.carbide.cdt.internal.builder.ISBSv2BuildConfigInfo;
-import com.nokia.carbide.cpp.epoc.engine.*;
-import com.nokia.carbide.cpp.epoc.engine.image.*;
-import com.nokia.carbide.cpp.epoc.engine.model.bldinf.*;
-import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IExtension;
-import com.nokia.carbide.cpp.epoc.engine.model.makefile.image.IImageMakefileData;
-import com.nokia.carbide.cpp.epoc.engine.model.mmp.*;
-import com.nokia.carbide.cpp.epoc.engine.preprocessor.AcceptedNodesViewFilter;
-import com.nokia.carbide.cpp.epoc.engine.preprocessor.AllNodesViewFilter;
-import com.nokia.carbide.cpp.internal.api.sdk.SBSv2Utils;
-import com.nokia.carbide.cpp.internal.api.sdk.SymbianBuildContext;
-import com.nokia.carbide.cpp.internal.api.sdk.SymbianBuildContextDataCache;
-import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
-import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
-import com.nokia.carbide.internal.api.cpp.epoc.engine.model.pkg.*;
-import com.nokia.cpp.internal.api.utils.core.*;
+import java.io.File;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.InstanceScope;
-import java.io.*;
-import java.util.*;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
+import com.nokia.carbide.cdt.builder.builder.CarbideCPPBuilder;
+import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
+import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
+import com.nokia.carbide.cdt.builder.project.ISISBuilderInfo;
+import com.nokia.carbide.cdt.internal.builder.CarbideProjectInfo;
+import com.nokia.carbide.cpp.epoc.engine.BldInfDataRunnableAdapter;
+import com.nokia.carbide.cpp.epoc.engine.BldInfViewRunnableAdapter;
+import com.nokia.carbide.cpp.epoc.engine.EpocEnginePlugin;
+import com.nokia.carbide.cpp.epoc.engine.ImageMakefileDataRunnableAdapter;
+import com.nokia.carbide.cpp.epoc.engine.MMPDataRunnableAdapter;
+import com.nokia.carbide.cpp.epoc.engine.MMPViewRunnableAdapter;
+import com.nokia.carbide.cpp.epoc.engine.PKGViewRunnableAdapter;
+import com.nokia.carbide.cpp.epoc.engine.image.IBitmapSource;
+import com.nokia.carbide.cpp.epoc.engine.image.IImageSource;
+import com.nokia.carbide.cpp.epoc.engine.image.IMultiImageSource;
+import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IBldInfData;
+import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IBldInfView;
+import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IExport;
+import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IExtension;
+import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IMMPReference;
+import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IMakMakeReference;
+import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IMakefileReference;
+import com.nokia.carbide.cpp.epoc.engine.model.makefile.image.IImageMakefileData;
+import com.nokia.carbide.cpp.epoc.engine.model.mmp.EMMPLanguage;
+import com.nokia.carbide.cpp.epoc.engine.model.mmp.EMMPStatement;
+import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPAIFInfo;
+import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPBitmap;
+import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPData;
+import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPResource;
+import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPView;
+import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPViewConfiguration;
+import com.nokia.carbide.cpp.epoc.engine.preprocessor.AcceptedNodesViewFilter;
+import com.nokia.carbide.cpp.epoc.engine.preprocessor.AllNodesViewFilter;
+import com.nokia.carbide.cpp.epoc.engine.preprocessor.DefineFactory;
+import com.nokia.carbide.cpp.epoc.engine.preprocessor.IDefine;
+import com.nokia.carbide.cpp.internal.api.sdk.BuildContextSBSv1;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildInfo;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildConfigInfo;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.SymbianBuildContextDataCache;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.internal.api.cpp.epoc.engine.model.pkg.EPKGLanguage;
+import com.nokia.carbide.internal.api.cpp.epoc.engine.model.pkg.IPKGEmbeddedSISFile;
+import com.nokia.carbide.internal.api.cpp.epoc.engine.model.pkg.IPKGInstallFile;
+import com.nokia.carbide.internal.api.cpp.epoc.engine.model.pkg.IPKGView;
+import com.nokia.carbide.internal.api.cpp.epoc.engine.model.pkg.PKGModelHelper;
+import com.nokia.cpp.internal.api.utils.core.CommonPathFinder;
+import com.nokia.cpp.internal.api.utils.core.FileUtils;
+import com.nokia.cpp.internal.api.utils.core.Logging;
+import com.nokia.cpp.internal.api.utils.core.PathUtils;
+import com.nokia.cpp.internal.api.utils.core.TextUtils;
public class EpocEngineHelper {
@@ -93,6 +142,7 @@
monitor.beginTask("Scanning bld.inf for mmp and make files", buildConfigs.size());
try {
+
// let cache know we're iterating a lot
SymbianBuildContextDataCache.startProjectOperation();
@@ -369,7 +419,9 @@
&& context.getSDK().getEPOCROOT() != null
&& new File(context.getSDK().getEPOCROOT()).exists()) {
defaultContext = context;
- if (defaultContext.getSDK().getPrefixFile() != null)
+ ISymbianSDK sdk = defaultContext.getSDK();
+
+ if (context.getPrefixFromVariantCfg() != null)
break;
}
}
@@ -650,7 +702,7 @@
final Set<IPath> tempNormalProjects = new LinkedHashSet<IPath>();
for (final ICarbideBuildConfiguration buildConfig : buildConfigs) {
EpocEnginePlugin.runWithBldInfData(cpi.getWorkspaceRelativeBldInfPath(),
- new DefaultViewConfiguration(project, buildConfig, new AcceptedNodesViewFilter()),
+ new DefaultViewConfiguration(project, buildConfig.getBuildContext(), new AcceptedNodesViewFilter()),
new BldInfDataRunnableAdapter() {
public Object run(IBldInfData data) {
for (IMakMakeReference normalRef : data.getMakMakeReferences()) {
@@ -692,7 +744,7 @@
}
exePath = (String)EpocEnginePlugin.runWithBldInfData(info.getWorkspaceRelativeBldInfPath(),
- new DefaultViewConfiguration(info.getProject(), buildConfig, new AcceptedNodesViewFilter()),
+ new DefaultViewConfiguration(info.getProject(), buildConfig.getBuildContext(), new AcceptedNodesViewFilter()),
new BldInfDataRunnableAdapter() {
public Object run(IBldInfData data) {
String exePath = ""; //$NON-NLS-1$
@@ -702,7 +754,7 @@
if (mmps.length == 1) {
final IPath workspaceRelativeMMPPath = new Path(info.getProject().getName()).append(mmps[0].getPath());
exePath = (String)EpocEnginePlugin.runWithMMPData(workspaceRelativeMMPPath,
- new DefaultMMPViewConfiguration(info.getProject(), buildConfig, new AcceptedNodesViewFilter()),
+ new DefaultMMPViewConfiguration(info.getProject(), buildConfig.getBuildContext(), new AcceptedNodesViewFilter()),
new MMPDataRunnableAdapter() {
public Object run(IMMPData mmpData) {
@@ -713,17 +765,15 @@
return null;
}
- String releasePlatform = buildConfig.getSDK().getBSFCatalog().getReleasePlatform(buildConfig.getPlatformString());
- IPath path = buildConfig.getSDK().getReleaseRoot().append(releasePlatform.toLowerCase()).append(buildConfig.getTargetString().toLowerCase());
-
- // if targetpath is non-null and this is an EKA1 emulator config then add it
- if (buildConfig.getPlatformString().equals(ISymbianBuildContext.EMULATOR_PLATFORM)) {
- if (buildConfig.getSDK().getOSVersion().getMajor() < 9) {
- String targetPath = mmpData.getSingleArgumentSettings().get(EMMPStatement.TARGETPATH);
- if (targetPath != null) {
- path = path.append("z").append(targetPath); //$NON-NLS-1$
- }
- }
+ ISymbianSDK sdk = buildConfig.getSDK();
+ ISymbianBuildContext context = buildConfig.getBuildContext();
+ IPath path;
+ if (context instanceof ISBSv2BuildContext) {
+ path = new Path(((ISBSv2BuildContext)context).getConfigQueryData().getOutputPathString());
+ } else {
+ ISBSv1BuildInfo sbsv1BuildInfo = (ISBSv1BuildInfo)sdk.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER);
+ String releasePlatform = sbsv1BuildInfo.getBSFCatalog().getReleasePlatform(buildConfig.getPlatformString());
+ path = sdk.getReleaseRoot().append(releasePlatform.toLowerCase()).append(buildConfig.getTargetString().toLowerCase());
}
// adapt to variant, if needed
@@ -736,7 +786,9 @@
}
exePath = targetPath.toOSString();
+
return exePath;
+
}
});
}
@@ -782,7 +834,7 @@
final ICarbideBuildConfiguration buildConfig = info.getDefaultConfiguration();
exePath = (IPath)EpocEnginePlugin.runWithBldInfData(info.getWorkspaceRelativeBldInfPath(),
- new DefaultViewConfiguration(info.getProject(), buildConfig, new AcceptedNodesViewFilter()),
+ new DefaultViewConfiguration(info.getProject(), buildConfig.getBuildContext(), new AcceptedNodesViewFilter()),
new BldInfDataRunnableAdapter() {
public Object run(IBldInfData data) {
IPath exePath = null;
@@ -792,7 +844,7 @@
if (mmps.length == 1) {
final IPath workspaceRelativeMMPPath = new Path(info.getProject().getName()).append(mmps[0].getPath());
exePath = (IPath)EpocEnginePlugin.runWithMMPData(workspaceRelativeMMPPath,
- new DefaultMMPViewConfiguration(info.getProject(), buildConfig, new AcceptedNodesViewFilter()),
+ new DefaultMMPViewConfiguration(info.getProject(), buildConfig.getBuildContext(), new AcceptedNodesViewFilter()),
new MMPDataRunnableAdapter() {
public Object run(IMMPData mmpData) {
IPath exePath = null;
@@ -860,7 +912,8 @@
// adapt the exe filename to the variant, if any
IPath tempPath = null;
- if (isVariantBldInf(cpi.getAbsoluteBldInfPath()) || isFeatureVariantMMP(mmpData, cpi.getProject())) {
+ if ((isVariantBldInf(cpi.getAbsoluteBldInfPath()) || isFeatureVariantMMP(mmpData, cpi.getProject()))
+ && !CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(cpi.getProject())) {
tempPath = getBinaryVariantTargetName(mmpData, PathUtils.createPath(exePath), cpi.getProject());
if (tempPath == null){
return null;
@@ -868,21 +921,46 @@
exePath = tempPath.lastSegment();
}
- IPath path = buildConfig.getTargetOutputDirectory();
-
- // if targetpath is non-null and this is an EKA1 emulator config then add it
- if (buildConfig.getPlatformString().equals(ISymbianBuildContext.EMULATOR_PLATFORM)) {
- if (buildConfig.getSDK().getOSVersion().getMajor() < 9) {
- String targetPath = mmpData.getSingleArgumentSettings().get(EMMPStatement.TARGETPATH);
- if (targetPath != null) {
- path = path.append("z").append(targetPath); //$NON-NLS-1$
- }
+ IPath path = null;
+ if (CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(cpi.getProject()) &&
+ isFeatureVariantMMP(mmpData, cpi.getProject())){
+
+ path = buildConfig.getTargetOutputDirectory();
+
+ } else {
+ // Not a variant
+ path = buildConfig.getTargetOutputDirectory();
+ if (CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(cpi.getProject())){
+ // For SBSv2, it's not a variant, so it goes under the standard output dir
+ path = stripVariationFolder(path);
}
+
}
path = path.append(exePath);
return path;
}
+
+ private IPath stripVariationFolder(IPath path) {
+ if (!path.toOSString().contains(".")){
+ return path;
+ }
+ String[] segments = path.segments();
+ int segmentCount = path.segmentCount();
+ path = path.removeFirstSegments(segmentCount);
+ int count = 0;
+ path = path.addTrailingSeparator();
+ for (String segment : segments){
+ if (count == segmentCount - 2 && segment.contains(".")){
+ path = path.append(segment.split("\\.")[0]);
+ } else {
+ path = path.append(segment);
+ }
+ count ++;
+ }
+ return path;
+
+ }
});
}
@@ -916,9 +994,7 @@
// if the target path is not set then by default it will usually
// be left blank. for EKA2 though binaries need to go in \sys\bin\
exePath = Path.ROOT.setDevice("C:"); //$NON-NLS-1$
- if (buildConfig.getSDK().getOSVersion().getMajor() > 8) {
- exePath = exePath.append("sys/bin/"); //$NON-NLS-1$
- }
+ exePath = exePath.append("sys/bin/"); //$NON-NLS-1$
String targetName = mmpData.getSingleArgumentSettings().get(EMMPStatement.TARGET);
if (targetName != null) {
exePath = exePath.append(targetName);
@@ -985,7 +1061,7 @@
final ICarbideBuildConfiguration buildConfig = info.getDefaultConfiguration();
EpocEnginePlugin.runWithBldInfData(info.getWorkspaceRelativeBldInfPath(),
- new DefaultViewConfiguration(info.getProject(), buildConfig, new AcceptedNodesViewFilter()),
+ new DefaultViewConfiguration(info.getProject(), buildConfig.getBuildContext(), new AcceptedNodesViewFilter()),
new BldInfDataRunnableAdapter() {
public Object run(IBldInfData data) {
@@ -994,7 +1070,7 @@
if (mmps.length == 1) {
final IPath workspaceRelativeMMPPath = new Path(info.getProject().getName()).append(mmps[0].getPath());
EpocEnginePlugin.runWithMMPData(workspaceRelativeMMPPath,
- new DefaultMMPViewConfiguration(info.getProject(), buildConfig, new AcceptedNodesViewFilter()),
+ new DefaultMMPViewConfiguration(info.getProject(), buildConfig.getBuildContext(), new AcceptedNodesViewFilter()),
new MMPDataRunnableAdapter() {
public Object run(IMMPData mmpData) {
@@ -1045,12 +1121,8 @@
if (targetPathStr != null) {
targetPath = PathUtils.createPath(targetPathStr).makeAbsolute();
} else {
- // for EKA1 just leave empty. for EKA2 use sys\bin\
- if (buildConfig.getSDK().getOSVersion().getMajor() > 8) {
- targetPath = new Path("/sys/bin/"); //$NON-NLS-1$
- } else {
- targetPath = Path.ROOT; //$NON-NLS-1$
- }
+ //for EKA2 use sys\bin\
+ targetPath = new Path("/sys/bin/"); //$NON-NLS-1$
}
IPath dataZDir = buildConfig.getSDK().getReleaseRoot().removeLastSegments(1).append("/data/z/"); //$NON-NLS-1$
@@ -1151,12 +1223,11 @@
final ICarbideProjectInfo cpi = buildConfig.getCarbideProject();
EpocEnginePlugin.runWithBldInfView(cpi.getWorkspaceRelativeBldInfPath(),
- new DefaultViewConfiguration(cpi.getProject(), buildConfig, new AcceptedNodesViewFilter()),
+ new DefaultViewConfiguration(cpi.getProject(), buildConfig.getBuildContext(), new AcceptedNodesViewFilter()),
new BldInfViewRunnableAdapter() {
public Object run(IBldInfView view) {
EpocEnginePathHelper helper = new EpocEnginePathHelper(buildConfig);
-
final String dataZDir = buildConfig.getSDK().getReleaseRoot().removeLastSegments(1).toOSString() + "\\data\\z\\"; //$NON-NLS-1$
for (IMakefileReference ref : view.getAllMakefileReferences()) {
@@ -1280,7 +1351,7 @@
if (mmpName.toUpperCase().equals(mmpName2.toUpperCase())){
EpocEnginePlugin.runWithMMPData(workspaceRelativeMMPPath,
- new DefaultMMPViewConfiguration(info.getProject(), buildConfig, new AcceptedNodesViewFilter()),
+ new DefaultMMPViewConfiguration(info.getProject(), buildConfig.getBuildContext(), new AcceptedNodesViewFilter()),
new MMPDataRunnableAdapter() {
public Object run(IMMPData mmpData) {
@@ -1629,7 +1700,7 @@
final IPath workspaceRelativeldInfPath = buildConfig.getCarbideProject().getWorkspaceRelativeBldInfPath();
EpocEnginePlugin.runWithBldInfData(workspaceRelativeldInfPath,
- new DefaultViewConfiguration(buildConfig.getCarbideProject().getProject(), buildConfig, new AcceptedNodesViewFilter()),
+ new DefaultViewConfiguration(buildConfig.getCarbideProject().getProject(), buildConfig.getBuildContext(), new AcceptedNodesViewFilter()),
new BldInfDataRunnableAdapter() {
public Object run(IBldInfData data) {
@@ -1660,7 +1731,7 @@
final List<String> macros = new ArrayList<String>();
EpocEnginePlugin.runWithMMPData(workspaceRelativeMMPPath,
- new DefaultMMPViewConfiguration(buildConfig.getCarbideProject().getProject(), buildConfig, new AcceptedNodesViewFilter()),
+ new DefaultMMPViewConfiguration(buildConfig.getCarbideProject().getProject(), buildConfig.getBuildContext(), new AcceptedNodesViewFilter()),
new MMPDataRunnableAdapter() {
public Object run(IMMPData mmpData) {
@@ -1692,7 +1763,7 @@
IPath mmp, final ICarbideBuildConfiguration buildConfiguration,
final List<File> userPaths, final List<File> systemPaths) {
IMMPViewConfiguration viewConfiguration = new DefaultMMPViewConfiguration(
- project, buildConfiguration, new AcceptedNodesViewFilter());
+ project, buildConfiguration.getBuildContext(), new AcceptedNodesViewFilter());
final IPath epocRoot = new Path(buildConfiguration.getSDK().getEPOCROOT());
EpocEnginePlugin.runWithMMPData(new Path(project.getName()).append(mmp),
@@ -1742,14 +1813,27 @@
*/
public static IPath[] getLibDirectoriesForBuildContext(ISymbianBuildContext buildContext) {
ArrayList<IPath> dirList = new ArrayList<IPath>();
- ISymbianSDK sdk = buildContext.getSDK();
- IPath releaseRoot = sdk.getReleaseRoot();
+ IPath releaseRoot = buildContext.getSDK().getReleaseRoot();
String platformString = buildContext.getPlatformString();
boolean isDebug = ISymbianBuildContext.DEBUG_TARGET.equals(buildContext.getTargetString());
// TODO is this correct, what about ARMv6?
- boolean isARMv5 = ISymbianBuildContext.ARMV5_PLATFORM.equals(platformString) ||
- ISymbianBuildContext.ARMV5_ABIV2_PLATFORM.equals(platformString);
- boolean isGCCE = ISymbianBuildContext.GCCE_PLATFORM.equals(platformString);
+ boolean isARMv5 = false;
+ boolean isGCCE = false;
+
+ if (buildContext instanceof ISBSv1BuildContext) {
+ isARMv5 = ISBSv1BuildContext.ARMV5_PLATFORM.equals(platformString) ||
+ ISBSv1BuildContext.ARMV5_ABIV2_PLATFORM.equals(platformString);
+ isGCCE = ISBSv1BuildContext.GCCE_PLATFORM.equals(platformString);
+ } else if (buildContext instanceof ISBSv2BuildContext){
+ String alias = ((ISBSv2BuildContext)buildContext).getSBSv2Alias();
+ if (alias.toUpperCase().contains(ISBSv2BuildContext.TOOLCHAIN_ARM)){
+ isARMv5 = true;
+ }
+ if (alias.toUpperCase().contains(ISBSv2BuildContext.TOOLCHAIN_GCCE)){
+ isGCCE = true;
+ }
+ }
+
if (isARMv5 || isGCCE) {
if (isDebug) {
dirList.add(releaseRoot.append("armv5/udeb/")); //$NON-NLS-1$
@@ -1819,15 +1903,22 @@
final ICarbideBuildConfiguration buildConfig = info.getDefaultConfiguration();
final List<IPath>mmpPaths = new ArrayList<IPath>();
EpocEnginePlugin.runWithBldInfData(info.getWorkspaceRelativeBldInfPath(),
- new DefaultViewConfiguration(info.getProject(), buildConfig, new AcceptedNodesViewFilter()),
+ new DefaultViewConfiguration(info.getProject(), buildConfig.getBuildContext(), new AcceptedNodesViewFilter()),
new BldInfDataRunnableAdapter() {
public Object run(IBldInfData infView) {
for (final IMMPReference mmp : infView.getAllMMPReferences()) {
- final IPath workspaceRelativeMMPPath = new Path(info.getProject().getName()).append(mmp.getPath());
+
+ IPath workspaceRelativeMMPPath1 = null;
+ if (info.getProjectRelativeBldInfPath().isAbsolute()){
+ workspaceRelativeMMPPath1 = mmp.getPath();
+ } else {
+ workspaceRelativeMMPPath1 = new Path(info.getProject().getName()).append(mmp.getPath());
+ }
+ final IPath workspaceRelativeMMPPath = workspaceRelativeMMPPath1;
EpocEnginePlugin.runWithMMPData(workspaceRelativeMMPPath,
- new DefaultMMPViewConfiguration(info.getProject(), buildConfig, new AcceptedNodesViewFilter()),
+ new DefaultMMPViewConfiguration(info.getProject(), buildConfig.getBuildContext(), new AcceptedNodesViewFilter()),
new MMPDataRunnableAdapter() {
public Object run(IMMPData mmpData) {
@@ -1927,7 +2018,7 @@
final ICarbideProjectInfo cpi = buildConfig.getCarbideProject();
EpocEnginePlugin.runWithBldInfData(cpi.getWorkspaceRelativeBldInfPath(),
- new DefaultViewConfiguration(cpi, buildConfig),
+ new DefaultViewConfiguration(cpi, buildConfig.getBuildContext()),
new BldInfDataRunnableAdapter() {
public Object run(IBldInfData infView) {
@@ -2013,7 +2104,7 @@
continue;
EpocEnginePlugin.runWithMMPData(mmpPath,
- new DefaultMMPViewConfiguration(buildConfig.getCarbideProject().getProject(), buildConfig, new AcceptedNodesViewFilter()),
+ new DefaultMMPViewConfiguration(buildConfig.getCarbideProject().getProject(), buildConfig.getBuildContext(), new AcceptedNodesViewFilter()),
new MMPDataRunnableAdapter() {
public Object run(IMMPData mmpData) {
@@ -2150,9 +2241,11 @@
if (cpi != null){
ICarbideBuildConfiguration defaultConfig = cpi.getDefaultConfiguration();
if (defaultConfig != null){
- if (defaultConfig.getBuildVariationName().length() > 0 &&
+ if (defaultConfig.getBuildContext().getBuildVariationName().length() > 0 &&
mmpData.getFlags().contains(EMMPStatement.FEATUREVARIANT)) {
-
+ isFeatureVariant = true;
+ } else if (CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(project) &&
+ mmpData.getFlags().contains(EMMPStatement.FEATUREVARIANT)){
isFeatureVariant = true;
}
}
@@ -2238,10 +2331,11 @@
}
/**
- * Get the MD5 hash for a configuration if it is a true binary variation.
+ * Get the MD5 hash for a configuration if it is a true binary variation. This is for abld buidler only.
* @param config - The Carbide build configuration to check against
* @param mmpFullPath - The path to the MMP file that builds the binary
* @return A string of the MD5 hash. Returns an empty string if the configuration is not a binary variant or cannot be determined.
+ * @deprecated - ABLD support to be removed vFuture
*/
static public String getMD5HashForBinaryVariant(final ICarbideBuildConfiguration config, final IPath mmpFullPath){
@@ -2263,7 +2357,13 @@
});
}
-
+ /**
+ * NOTE: This only works for ABLD. Not SBSv2/Raptor!
+ * @param mmpData
+ * @param config
+ * @return
+ * @deprecated - Abld support to be be removed vFuture
+ */
private static File getMakeFileForSymbianBinaryVariant(IMMPData mmpData, ICarbideBuildConfiguration config){
IPath makefileDir = CarbideCPPBuilder.getBuilderMakefileDir(config);
@@ -2272,8 +2372,13 @@
mmpFile = mmpFile.removeFileExtension();
String mmpRootName = mmpFile.lastSegment();
String plat = config.getPlatformString();
- String basePlat = config.getBasePlatformForVariation();
- String variantPlat = config.getBuildVariationName();
+ String basePlat = "";
+ if (config.getBuildContext() instanceof ISBSv2BuildConfigInfo){
+ basePlat = ((ISBSv1BuildContext)config.getBuildContext()).getBasePlatformForVariation();
+ } else {
+ basePlat = config.getPlatformString();
+ }
+ String variantPlat = config.getBuildContext().getBuildVariationName();
if (variantPlat.length() == 0){
plat = plat + "." + ISymbianBuildContext.DEFAULT_VARIANT;
@@ -2287,13 +2392,14 @@
}
/**
- * Get the MD5 hash value for an existing configuration by parsing its makefile.
+ * Get the MD5 hash value for an existing configuration by parsing its makefile. Should only be used for ABLD build system.
* @param makefile - The build makefile to parse to check for the MD5
* @param config - The build configuration to check under
* @return The string for the MD5 hash. An empty string if it cannot be determined.
+ * @deprecated - abld support to be removed
*/
private static String getMD5VariantFromMakefile(File makefile, ICarbideBuildConfiguration config){
- // TODO: We can also use the .vmap in the release folder as well.
+ // We could also use the .vmap in the release folder as well.
// we can parse the makefile and get the variant name for each in the comments:
//
//# FeatureVariantURELLabel d41d8cd98f00b204e9800998ecf8427e
@@ -2309,7 +2415,7 @@
}
String searchString = "";
- if (config.getTargetString().equals(SymbianBuildContext.DEBUG_TARGET)){
+ if (config.getTargetString().equals(BuildContextSBSv1.DEBUG_TARGET)){
searchString = "# FeatureVariantUDEBLabel";
} else {
searchString = "# FeatureVariantURELLabel";
@@ -2405,7 +2511,7 @@
*/
public static void addIncludedFilesFromBldInf(ICarbideProjectInfo projectInfo, ICarbideBuildConfiguration buildConfig, IPath bldinfPath, final Collection<IPath> pathList) {
DefaultViewConfiguration viewConfig = buildConfig != null ?
- new DefaultViewConfiguration(projectInfo, buildConfig) :
+ new DefaultViewConfiguration(projectInfo, buildConfig.getBuildContext()) :
new DefaultViewConfiguration(projectInfo);
EpocEnginePlugin.runWithBldInfData(bldinfPath,
viewConfig,
@@ -2454,7 +2560,7 @@
final List<IPath> filePaths = new ArrayList<IPath>();
PKGModelHelper.runWithPKGView(pkgPath,
- new DefaultViewConfiguration(buildConfig.getCarbideProject(), buildConfig),
+ new DefaultViewConfiguration(buildConfig.getCarbideProject(), buildConfig.getBuildContext()),
new PKGViewRunnableAdapter() {
public Object run(IPKGView view) {
@@ -2623,7 +2729,7 @@
final ICarbideProjectInfo cpi = buildConfig.getCarbideProject();
EpocEnginePlugin.runWithBldInfData(cpi.getWorkspaceRelativeBldInfPath(),
- new DefaultViewConfiguration(cpi, buildConfig),
+ new DefaultViewConfiguration(cpi, buildConfig.getBuildContext()),
new BldInfDataRunnableAdapter() {
public Object run(IBldInfData infView) {
@@ -2660,4 +2766,50 @@
return paths;
}
+
+ /**
+ * Retrieves all macros used for indexing a given ICarbideBuildConfiguration.
+ * @param config - The CarbideBuildConfiguration
+ * @param mmpFiles - null if for all MMPs in the project
+ * @return list of IDefine
+ * @since 3.0
+ */
+ public static List<IDefine> getGlobalDefinesForConfiguration(ICarbideBuildConfiguration config, List<IPath> mmpFiles){
+
+ List<IDefine> projectDefines = config.getCompileTimeMacros();
+
+ if (mmpFiles == null){
+ // get all macros from all mmps
+ mmpFiles = getMMPFilesForProject(config.getCarbideProject());
+ }
+
+ for (IPath mmpPath : mmpFiles){
+ if (hasSTDCPPSupport(config.getCarbideProject(), mmpPath)){
+ projectDefines.add(DefineFactory.createDefine("__SYMBIAN_STDCPP_SUPPORT__"));
+ break;
+ }
+ }
+
+ if (((CarbideProjectInfo)config.getCarbideProject()).shouldUseMMPMacros()){
+ // Only return the macros from the mmps if project pref Macro Settings
+ // is enabled (Use preprocessor symbols....)
+ for (IPath mmpPath : mmpFiles) {
+
+ List<String> mmpMacros = getMMPMacrosForBuildConfiguration(
+ mmpPath, config);
+ for (String macro : mmpMacros) {
+ // Symbian docs say they are converted to upper case always
+ projectDefines.add(DefineFactory.createDefine(macro.toUpperCase()));
+ }
+ }
+ }
+
+ List<String> targetTypes = getTargetTypesForBuildConfiguration(config);
+ if (targetTypes.size() > 0){
+ projectDefines.add(config.getBuildContext().getTargetTypeMacro(targetTypes.get(0)));
+ }
+
+ return projectDefines;
+ }
+
}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/ICarbideBuildManager.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/ICarbideBuildManager.java Wed Aug 25 12:42:09 2010 -0500
@@ -22,6 +22,7 @@
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.core.resources.IProject;
+import com.nokia.carbide.cdt.builder.extension.ICarbidePrefsModifier;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectModifier;
@@ -83,4 +84,12 @@
*/
public void setProjectInfo(ICarbideProjectInfo newInfo);
+ /**
+ * Retrieve the ICarbidePrefsModifier interface to allow getting and setting
+ * of certain preferences by ID. This only sets values in memory, does not write
+ * to disk.
+ * @return ICarbidePrefsModifier
+ */
+ ICarbidePrefsModifier getPrefsModifier();
+
}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/PKGViewPathHelper.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/PKGViewPathHelper.java Wed Aug 25 12:42:09 2010 -0500
@@ -22,9 +22,7 @@
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cdt.builder.project.ISISBuilderInfo;
-import com.nokia.carbide.cdt.internal.builder.CarbideBuildConfiguration;
-import com.nokia.carbide.cdt.internal.builder.ISBSv2BuildConfigInfo;
-import com.nokia.carbide.cpp.internal.api.sdk.SBSv2Utils;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildContext;
import com.nokia.carbide.internal.api.cpp.epoc.engine.model.pkg.IPKGView;
import com.nokia.cpp.internal.api.utils.core.Check;
@@ -75,10 +73,7 @@
this.platform = buildConfig.getPlatformString();
if (CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(buildConfig.getCarbideProject().getProject())){
// Test is this is an SBSv2 build binary variant (changes the output directory)
- ISBSv2BuildConfigInfo sbsv2Info = ((CarbideBuildConfiguration)buildConfig).getSBSv2BuildConfigInfo();
- if ( sbsv2Info != null && SBSv2Utils.getVariantOutputDirModifier(sbsv2Info.getSBSv2Setting(ISBSv2BuildConfigInfo.ATTRIB_SBSV2_VARIANT)) != null && !platform.contains(".") ){
- this.platform = this.platform + SBSv2Utils.getVariantOutputDirModifier(sbsv2Info.getSBSv2Setting(ISBSv2BuildConfigInfo.ATTRIB_SBSV2_VARIANT));
- }
+ this.platform = ((ISBSv2BuildContext)buildConfig.getBuildContext()).getPlatformReleaseDirName();
}
this.target = buildConfig.getTargetString();
this.mainDirectory = pkgFilePath.removeLastSegments(1);
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/builder/CarbideCPPBuilder.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/builder/CarbideCPPBuilder.java Wed Aug 25 12:42:09 2010 -0500
@@ -57,14 +57,12 @@
import com.nokia.carbide.cdt.builder.PKGViewPathHelper;
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
-import com.nokia.carbide.cdt.builder.project.IROMBuilderInfo;
import com.nokia.carbide.cdt.builder.project.ISISBuilderInfo;
import com.nokia.carbide.cdt.internal.api.builder.SISBuilderInfo2;
import com.nokia.carbide.cdt.internal.builder.CarbideBuildConfiguration;
import com.nokia.carbide.cdt.internal.builder.CarbideSBSv1Builder;
import com.nokia.carbide.cdt.internal.builder.CarbideSBSv2Builder;
import com.nokia.carbide.cdt.internal.builder.ICarbideBuilder;
-import com.nokia.carbide.cdt.internal.builder.ISBSv2BuildConfigInfo;
import com.nokia.carbide.cdt.internal.builder.ui.BuilderPreferencePage;
import com.nokia.carbide.cdt.internal.builder.ui.MMPSelectionDialog;
import com.nokia.carbide.cpp.epoc.engine.EpocEnginePlugin;
@@ -76,9 +74,9 @@
import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPData;
import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPResource;
import com.nokia.carbide.cpp.epoc.engine.preprocessor.AcceptedNodesViewFilter;
-import com.nokia.carbide.cpp.internal.api.sdk.SBSv2Utils;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildContext;
import com.nokia.carbide.cpp.internal.qt.core.QtCorePlugin;
-import com.nokia.carbide.cpp.internal.sdk.core.model.SDKManager;
import com.nokia.carbide.cpp.internal.x86build.X86BuildPlugin;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
@@ -195,7 +193,7 @@
}
if (defaultConfig != null) {
- CarbideCommandLauncher launcher = new CarbideCommandLauncher(currentProject, monitor, getParserIdArray(defaultConfig.getErrorParserId()), cpi.getINFWorkingDirectory());
+ CarbideCommandLauncher launcher = new CarbideCommandLauncher(currentProject, monitor, defaultConfig.getErrorParserList(), cpi.getINFWorkingDirectory());
launcher.showCommand(true);
invokeBuild(defaultConfig, launcher, subMonitor.newChild(1), true);
} else {
@@ -340,7 +338,6 @@
// build ROM if necessary
subMonitor = SubMonitor.convert(monitor, 1);
- invokeROMBuilder(buildConfig, launcher, subMonitor.newChild(1));
} else {
launcher.writeToConsole("\n***Errors were detected in build. See the Problems or Console view for details.\n");
@@ -382,7 +379,7 @@
getBuilder(cpi.getProject()).preCleanStep(buildConfig);
- CarbideCommandLauncher launcher = new CarbideCommandLauncher(project, monitor, getParserIdArray(buildConfig.getErrorParserId()), cpi.getINFWorkingDirectory());
+ CarbideCommandLauncher launcher = new CarbideCommandLauncher(project, monitor, buildConfig.getErrorParserList(), cpi.getINFWorkingDirectory());
launcher.showCommand(true);
calculateComponentLists(buildConfig, launcher);
@@ -425,7 +422,7 @@
ICarbideProjectInfo cpi = buildConfig.getCarbideProject();
IProject project = cpi.getProject();
- CarbideCommandLauncher launcher = new CarbideCommandLauncher(project, monitor, getParserIdArray(buildConfig.getErrorParserId()), cpi.getINFWorkingDirectory());
+ CarbideCommandLauncher launcher = new CarbideCommandLauncher(project, monitor, buildConfig.getErrorParserList(), cpi.getINFWorkingDirectory());
launcher.showCommand(true);
// make sure the project is built
@@ -461,7 +458,7 @@
ICarbideProjectInfo cpi = buildConfig.getCarbideProject();
List<ISymbianBuildContext> buildConfigList = new ArrayList<ISymbianBuildContext>(1);
- buildConfigList.add(buildConfig);
+ buildConfigList.add(buildConfig.getBuildContext());
if (clearMarkers) {
try {
@@ -623,7 +620,7 @@
final List<IPath> rules = new ArrayList<IPath>();
EpocEnginePlugin.runWithMMPData(workspaceRelativeMMPPath,
- new DefaultMMPViewConfiguration(buildConfig.getCarbideProject().getProject(), buildConfig, new AcceptedNodesViewFilter()),
+ new DefaultMMPViewConfiguration(buildConfig.getCarbideProject().getProject(), buildConfig.getBuildContext(), new AcceptedNodesViewFilter()),
new MMPDataRunnableAdapter() {
public Object run(IMMPData mmpData) {
@@ -719,7 +716,7 @@
}
protected static void runPreBuildChecks(ICarbideBuildConfiguration buildConfig, CarbideCommandLauncher launcher) {
- if (buildConfig.getPlatformString().equals(ISymbianBuildContext.EMULATOR_PLATFORM) && BuilderPreferencePage.useBuiltInX86Vars()) {
+ if (buildConfig.getPlatformString().toUpperCase().equals(ISBSv1BuildContext.EMULATOR_PLATFORM) && BuilderPreferencePage.useBuiltInX86Vars()) {
X86BuildPlugin.checkForUpdates();
}
}
@@ -733,7 +730,7 @@
ICarbideProjectInfo cpi = buildConfig.getCarbideProject();
List<ISymbianBuildContext> buildConfigList = new ArrayList<ISymbianBuildContext>(1);
- buildConfigList.add(buildConfig);
+ buildConfigList.add(buildConfig.getBuildContext());
// get the list of mmp/make files for this build configuration
EpocEngineHelper.getMakMakeFiles(cpi.getAbsoluteBldInfPath(), buildConfigList, normalMakMakePaths, testMakMakePaths, new NullProgressMonitor());
@@ -821,6 +818,7 @@
* @param bldmakeArgs array of String arguments to be passed to bldmake
* @param removeMarkers project markers will be removed when true
* @return true if operation was successful, false otherwise
+ * @deprecated - Abld support to be be removed vFuture
*/
public static boolean invokeBldmakeCommand(ICarbideBuildConfiguration buildConfig, CarbideCommandLauncher launcher, String[] bldmakeArgs, boolean removeMarkers) {
ICarbideProjectInfo cpi = buildConfig.getCarbideProject();
@@ -844,6 +842,7 @@
* @param abldArgs array of String arguments to be passed to abld
* @param removeMarkers project markers will be removed when true
* @return true if operation was successful, false otherwise
+ * @deprecated - ABLD is deprecated
*/
public static boolean invokeAbldCommand(ICarbideBuildConfiguration buildConfig, CarbideCommandLauncher launcher, String[] abldArgs, boolean removeMarkers) {
ICarbideProjectInfo cpi = buildConfig.getCarbideProject();
@@ -899,16 +898,25 @@
* @param config the build configuration context
* @param launcher the Carbide launcher
* @return false if makefile generation was necessary but failed, true otherwise
+ * @deprecated - Abld support to be be removed vFuture
*/
public static boolean generateBldmakeMakefilesIfNecessary(ICarbideBuildConfiguration config, CarbideCommandLauncher launcher) {
+ if (!(config.getBuildContext() instanceof ISBSv1BuildContext)){
+ return false; // SBSv1 only!
+ }
+
if (needsBldmakeMakefileGeneration(config)) {
List<String> argsList = new ArrayList<String>();
argsList.add("bldfiles");
- argsList.add(config.getBasePlatformForVariation().toLowerCase());
+ if (config instanceof ISBSv1BuildContext){
+ argsList.add(((ISBSv1BuildContext)config.getBuildContext()).getBasePlatformForVariation().toLowerCase());
+ }
- for (String arg : config.getBuildArgumentsInfo().getBldmakeBldFilesArgs().split(" ")) {
+ ISBSv1BuildContext sbsv1Context = (ISBSv1BuildContext)config.getBuildContext();
+
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getBldmakeBldFilesArgs().split(" ")) {
argsList.add(arg);
}
@@ -928,6 +936,7 @@
* is newer than any of the makefiles, then returns true.
* @param config - The build configuration to check the makefiles for
* @return true if makefiles need to be regenerated (bldmake bldfiles platform)
+ * @deprecated - Abld support to be be removed vFuture
*/
protected static boolean needsBldmakeMakefileGeneration(ICarbideBuildConfiguration config) {
return getBuilder(config.getCarbideProject().getProject()).needsBldmakeMakefileGeneration(config);
@@ -985,6 +994,7 @@
* @param progress monitor to allow user to cancel
* @return false if any makefile generation was necessary but failed, true otherwise
* @since 2.0
+ * @deprecated - Abld support to be be removed vFuture
*/
public static boolean generateAbldMakefilesIfNecessary(ICarbideBuildConfiguration config, CarbideCommandLauncher launcher, boolean calculateComponentLists, IProgressMonitor progress) {
@@ -1007,7 +1017,7 @@
return true;
}
-
+
/**
* Generates the abld makefile if necessary.
* Generates the makefile for the given mmp file if:
@@ -1021,26 +1031,7 @@
* @param componentPath the absolute file system path of the component
* @param isTest true for test components, false otherwise
* @return false if any makefile generation was necessary but failed, true otherwise
- *
- * @deprecated use {@link #generateAbldMakefileIfNecessary(ICarbideBuildConfiguration, CarbideCommandLauncher, IPath, boolean, IProgressMonitor)} instead
- */
- protected static boolean generateAbldMakefileIfNecessary(ICarbideBuildConfiguration config, CarbideCommandLauncher launcher, IPath componentPath, boolean isTest) {
- return generateAbldMakefileIfNecessary(config, launcher, componentPath, isTest, new NullProgressMonitor());
- }
-
- /**
- * Generates the abld makefile if necessary.
- * Generates the makefile for the given mmp file if:
- * 1) the makefile for the mmp does not exist
- * 2) if the mmp or any of its includes is newer than the makefile
- * 3) the makefile does not have the necessary Carbide changes
- *
- * The command used will be 'abld [test] makefile platform mmpname'
- * @param config the build configuration context
- * @param launcher the Carbide launcher
- * @param componentPath the absolute file system path of the component
- * @param isTest true for test components, false otherwise
- * @return false if any makefile generation was necessary but failed, true otherwise
+ * @deprecated - Abld support to be be removed vFuture
*/
protected static boolean generateAbldMakefileIfNecessary(ICarbideBuildConfiguration config, CarbideCommandLauncher launcher, IPath componentPath, boolean isTest, IProgressMonitor progress) {
return getBuilder(config.getCarbideProject().getProject()).generateAbldMakefileIfNecessary(config, launcher, componentPath, isTest, progress);
@@ -1352,7 +1343,7 @@
IPath tmpPKGPath = buildDirPath.append(prefix + pkgPath.lastSegment());
- IPath resolvedPKGPath = resolvePKGFile(pkgPath, config, tmpPKGPath);
+ IPath resolvedPKGPath = resolvePKGFile(pkgPath, config.getBuildContext(), tmpPKGPath);
List<String> args = new ArrayList<String>();
@@ -1626,7 +1617,7 @@
// update the temp pkg file by setting the PU flag and removing any files that have not been modified
PKGModelHelper.runWithPKGView(tempPkgBuildTreePath,
- new DefaultViewConfiguration(config.getCarbideProject(), config),
+ new DefaultViewConfiguration(config.getCarbideProject(), config.getBuildContext()),
new PKGViewRunnableAdapter() {
public Object run(IPKGView view) {
@@ -1710,7 +1701,7 @@
}
});
- tempPkgBuildTreePath = resolvePKGFile(tempPkgBuildTreePath, config, tempPkgBuildTreePath);
+ tempPkgBuildTreePath = resolvePKGFile(tempPkgBuildTreePath, config.getBuildContext(), tempPkgBuildTreePath);
// create link to temp pkg file and mark it as derived.
IFile tempPkgFileLink = getTempPkgIFile(pkgPath, tempPkgBuildTreePath, config);
@@ -1941,12 +1932,9 @@
// need to create a new PKG file, resolved...
pkgFileStr = pkgFileStr.replace(PKG_SYMBOL_EPOCROOT, context.getSDK().getEPOCROOT());
String platSubst = context.getPlatformString().toLowerCase();
- if (context instanceof CarbideBuildConfiguration){
+ if (context instanceof ISBSv2BuildContext){
// Test is this is an SBSv2 build binary variant (changes the output directory)
- ISBSv2BuildConfigInfo sbsv2Info = ((CarbideBuildConfiguration)context).getSBSv2BuildConfigInfo();
- if (sbsv2Info != null && SBSv2Utils.getVariantOutputDirModifier(sbsv2Info.getSBSv2Setting(ISBSv2BuildConfigInfo.ATTRIB_SBSV2_VARIANT)) != null){
- platSubst = platSubst + SBSv2Utils.getVariantOutputDirModifier(sbsv2Info.getSBSv2Setting(ISBSv2BuildConfigInfo.ATTRIB_SBSV2_VARIANT));
- }
+ platSubst = ((ISBSv2BuildContext)context).getPlatformReleaseDirName();
}
pkgFileStr = pkgFileStr.replace(PKG_SYMBOL_PLATFORM, platSubst);
pkgFileStr = pkgFileStr.replace(PKG_SYMBOL_TARGET, context.getTargetString().toLowerCase());
@@ -1992,53 +1980,6 @@
return null;
}
- /**
- * Invoke the ROM builder for the given build configuration
- * @param config - The current configuration from where to get the settings from
- * @param cmdLauncher - The object to use for the process execution
- * @param monitor - An IProgressMonitor
- */
- public static void invokeROMBuilder(ICarbideBuildConfiguration config, CarbideCommandLauncher cmdLauncher, IProgressMonitor monitor) {
-
- IROMBuilderInfo info = config.getROMBuildInfo();
- if (info != null) {
- String commandLine = info.getCommandLine().trim();
- if (commandLine.length() > 0) {
-
- monitor.setTaskName("Building ROM Image");
-
- IPath workingDir = config.getCarbideProject().getINFWorkingDirectory();
- String workingDirString = info.getWorkingDirectory().trim();
- if (workingDirString.length() > 0) {
- workingDir = new Path(workingDirString);
- }
-
- cmdLauncher.writeToConsole("\n***Building ROM Image ....\n");
- List<String> args = tokenizeArgsWithQuotes(commandLine);
- args.add(0, "/c");
-
- cmdLauncher.setErrorParserManager(workingDir, getParserIdArray(ICarbideBuildConfiguration.ERROR_PARSERS_ROM_BUILDER));
- int retVal = cmdLauncher.executeCommand(CarbideCommandLauncher.getCmdExeLocation(), args.toArray(new String[args.size()]), getResolvedEnvVars(config), workingDir);
- if (retVal != 0){
- cmdLauncher.writeToConsole("***Non-Zero Status: Specified rom build command returned with exit value = " + retVal); //$NON-NLS-1$
- CarbideBuilderPlugin.createCarbideProjectMarker(config.getCarbideProject().getProject(), IMarker.SEVERITY_ERROR, "Specified rom build command returned with exit value = " + retVal, IMarker.PRIORITY_LOW); //$NON-NLS-1$
- cmdLauncher.writeToConsole("\nRom build failed\n");
- } else {
- cmdLauncher.writeToConsole("\nRom build completed\n"); //$NON-NLS-1$
- }
- cmdLauncher.writeToConsole(cmdLauncher.getTimingStats());
-
-
- monitor.worked(1);
- if (monitor.isCanceled()) {
- return;
- }
- }
- }
-
- monitor.done();
- }
-
/**
* Returns a list of arguments as strings. The given string is basically split at spaces, but not if the space(s)
* is contained in quotes. Arguments are typically quoted if they contain spaces.
@@ -2067,59 +2008,6 @@
return allTokens;
}
- /**
- * This method performs a build for a given Carbide build configuration.
- * @param config - The Carbide configuration to build
- * @param monitor - A progress monitor so user can cancel build (can be null)
- * @param console - Where to pipe the output. If null, a new CConole will be created and existing console cleared.
- * @param buildKind - FULL_BUILD, else incremental build assumed.
- *
- * @deprecated use {@link #invokeBuild(ICarbideBuildConfiguration, IConsole, IProgressMonitor)} instead
- */
- public static void callAbldBuildForConfiguration(ICarbideBuildConfiguration config, IProgressMonitor monitor, IConsole console, int buildKind, boolean clearMarkers){
-
- if (monitor == null) {
- monitor = new NullProgressMonitor();
- }
-
- if (console == null){
- console = CCorePlugin.getDefault().getConsole();
- }
-
- CarbideCommandLauncher launcher = new CarbideCommandLauncher(config.getCarbideProject().getProject(), monitor, console, getParserIdArray(config.getErrorParserId()), config.getCarbideProject().getINFWorkingDirectory());
- launcher.showCommand(true);
-
- invokeBuild(config, launcher, monitor, clearMarkers);
- }
-
- /**
- * Invoke bldmake bldfiles on the current bld.inf and SDK.
- * @param config - Config to generate makefiles for.
- * @param cmdLauncher - The process launcher
- * @param monitor - The progress monitor
- * @param console - The console to write the messages to.
- * @param env - The array of environment variables to be used for the process
- * @param workingDir - The full path to the bld.inf file to be used as the current working directory
- *
- * @deprecated use {@link #generateBldmakeMakefilesIfNecessary(ICarbideBuildConfiguration, CarbideCommandLauncher, IConsole, IProgressMonitor, boolean)} instead
- */
- public static boolean invokeBldmakeBldFiles(ICarbideBuildConfiguration config, CarbideCommandLauncher cmdLauncher, IProgressMonitor monitor, IConsole console, String[] env, IPath workingDir ){
- return generateBldmakeMakefilesIfNecessary(config, cmdLauncher);
- }
-
- /**
- * Check to see if abld.bat and the SDK's platform makefile exists. If either don't exist, re-generate makefiles
- * This also tests to make sure the makefile target is OLDER than the bld.inf file.
- * @param bldInfDir - The working dir of the bld.inf file (should not contain 'bld.inf')
- * @param defaultConfig - The ISymbianBuildConfiguration to be built.
- * @return true if makefiles need to be regenerated
- *
- * @deprecated use {@link #needsBldmakeMakefileGeneration(ICarbideBuildConfiguration)}
- */
- public static boolean projectNeedsMakefileGeneration(IPath bldInfDir, ICarbideBuildConfiguration defaultConfig){
- return needsBldmakeMakefileGeneration(defaultConfig);
- }
-
/**
* Checks the Problems view for any error markers.
* @param project - IProject to check for problem markers
@@ -2144,6 +2032,11 @@
return false;
}
+ /**
+ * @deprecated - Abld support to be be removed vFuture
+ * @param config
+ * @return
+ */
public static IPath getBuilderMakefileDir(ICarbideBuildConfiguration config){
return getBuilder(config.getCarbideProject().getProject()).getMakefileDirectory(config);
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/extension/ICarbidePrefsModifier.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+package com.nokia.carbide.cdt.builder.extension;
+
+import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
+
+/**
+ * Allows those using the Carbide Preferences Modifier extension point to to read
+ * and/or modify certain project preferences
+ *
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @since 3.0
+ *
+ */
+public interface ICarbidePrefsModifier {
+
+ /**
+ * @deprecated - limited support for abld, String will be removed in the future so reference
+ * with your own local String.
+ * @since 3.0
+ */
+ final String ABLD_BUILD_ARG_SETTING = "ABLD_BUILD_ARG_SETTING";
+
+ /**
+ * Get the project configuration setting by ID.
+ * @param ISymbianBuildContext
+ * @param prefID
+ * @return The String value. Or null if the the pref id is unknown or no longer in use.
+ * @since 3.0
+ */
+ String getConfigurationValue(ICarbideBuildConfiguration newParam, String prefID);
+
+ /**
+ * Set the project configuration setting by ID.
+ * @param ISymbianBuildContext
+ * @param String - the argument value
+ * @param prefID
+ * @since 3.0
+ */
+ void setConfigurationValue(ICarbideBuildConfiguration context, String arg, String prefID);
+
+ /**
+ * Test whether or not a particular prefID is supported for read/write.
+ * The ID tests support first by the ID, then, if configuration specific, by the ISymbianBuildContext
+ * @param config
+ * @param prefID
+ * @return true if the prefID is supported, false otherwise.
+ */
+ boolean isSupportedConfigurationPrefId(ICarbideBuildConfiguration config, String prefID);
+
+}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/project/IBuildArgumentsInfo.java Tue Aug 24 16:42:58 2010 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-package com.nokia.carbide.cdt.builder.project;
-
-/**
- * IBuildArgumentsInfo represents one instance of configuration data for the Arguments tab.
- * This interface only applies for the Symbian 'abld' build system (SBSv1)
- * @see ICarbideBuildConfiguration
- *
- * @deprecated use BuildArgumentsInfo directly
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IBuildArgumentsInfo {
-
- /**
- * Get the arguments to pass to bldmake bldfiles
- * @return string of arguments which may be empty
- */
- String getBldmakeBldFilesArgs();
-
- /**
- * Get the arguments to pass to bldmake clean
- * @return string of arguments which may be empty
- */
- String getBldmakeCleanArgs();
-
- /**
- * Get the arguments to pass to abld build
- * @return string of arguments which may be empty
- */
- String getAbldBuildArgs();
-
- /**
- * Get the arguments to pass to abld export
- * @return string of arguments which may be empty
- */
- String getAbldExportArgs();
-
- /**
- * Get the arguments to pass to abld makefile
- * @return string of arguments which may be empty
- */
- String getAbldMakefileArgs();
-
- /**
- * Get the arguments to pass to abld library
- * @return string of arguments which may be empty
- */
- String getAbldLibraryArgs();
-
- /**
- * Get the arguments to pass to abld resource
- * @return string of arguments which may be empty
- */
- String getAbldResourceArgs();
-
- /**
- * Get the arguments to pass to abld target
- * @return string of arguments which may be empty
- */
- String getAbldTargetArgs();
-
- /**
- * Get the arguments to pass to abld final
- * @return string of arguments which may be empty
- */
- String getAbldFinalArgs();
-
- /**
- * Get the arguments to pass to abld clean
- * @return string of arguments which may be empty
- */
- String getAbldCleanArgs();
-
- /**
- * Get the arguments to pass to abld freeze
- * @return string of arguments which may be empty
- */
- String getAbldFreezeArgs();
-}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/project/ICarbideBuildConfiguration.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/project/ICarbideBuildConfiguration.java Wed Aug 25 12:42:09 2010 -0500
@@ -20,8 +20,10 @@
import org.eclipse.core.runtime.IPath;
-import com.nokia.carbide.cdt.builder.BuildArgumentsInfo;
+import com.nokia.carbide.cdt.builder.builder.CarbideCPPBuilder;
+import com.nokia.carbide.cpp.epoc.engine.preprocessor.IDefine;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
/**
* An ICarbideBuildConfiguration interface represents on buildable target for a project. A single
@@ -29,7 +31,7 @@
*
* @noimplement This interface is not intended to be implemented by clients.
*/
-public interface ICarbideBuildConfiguration extends ISymbianBuildContext {
+public interface ICarbideBuildConfiguration {
/** Integer identifier for the set of parser to be used for building the WINSCW platform */
public static final int ERROR_PARSERS_WINSCW = 1;
@@ -47,8 +49,9 @@
public static final int ERROR_PARSERS_ALL = 99;
/**
- * Get a list of error parser ID's
+ * Get a list of error parser ID's for this configuration.
* @return A full list of error parser IDs. Returns an empty array if none are specified
+ * @see {@link CarbideCPPBuilder#getParserIdArray(int)}
*/
String[] getErrorParserList();
@@ -66,29 +69,7 @@
*/
List<ISISBuilderInfo> getSISBuilderInfoList();
- /**
- * Get the (abld)build arguments info. Contains pref settings from the Arguments tab.
- * This only applies when building with SBSv1 (bldmake, abld)
- * @return IBuildArgumentsInfo instance, never null
- *
- * @deprecated use
- */
- IBuildArgumentsInfo getBuildArgumentsInfo();
-
- /**
- * Get the (abld)build arguments info. Contains pref settings from the Arguments tab.
- * This only applies when building with SBSv1 (bldmake, abld)
- * @return A copy of BuildArgumentsInfo instance, never null
- */
- BuildArgumentsInfo getBuildArgumentsInfoCopy();
-
- /**
- * Set the build arguments info for SBSv2 build arguments. This only sets values in memory, does
- * not write settings to disk. See
- * @return IBuildArgumentsInfo instance, never null
- */
- void setBuildArgumentsInfo(BuildArgumentsInfo bldArgInfo);
-
+
/**
* Get the parent Carbide project of this configuration.
* @return ICarbideProjectInfo
@@ -101,34 +82,6 @@
*/
IEnvironmentVarsInfo getEnvironmentVarsInfo();
- /**
- * Get the id that specifies the array of error parsers to use for a given build platform.
- * @return The integer ID of the parser to be use.
- * @see CarbideCPPBuilder.getParserIds(int id)
- */
- int getErrorParserId();
-
- /**
- * Returns the list of all built in macros for this configuration
- * <p>
- * Macros will be just a name, e.g. "_DEBUG", "__SYMBIAN32__", etc..
- * </p>
- *
- * @return a list of macros which may be empty.
- */
- List<String> getBuiltinMacros();
-
- /**
- * Returns the ROM builder info from the ROM Builder tab.
- * @return
- */
- IROMBuilderInfo getROMBuildInfo();
-
- /**
- * Compares two configurations to see if their display names are equivalent.
- */
- boolean equals(Object obj);
-
/** Get the full path of the release directory into the SDK where binaries are built
* NOTE: This does not account for whether or not a project has the FEATUREVARIANT keyword
* @return IPath
@@ -137,4 +90,38 @@
*/
IPath getTargetOutputDirectory();
+ /**
+ * Retrieve the build context specific info.
+ * @return ISymbianBuildContext
+ * @since 3.0
+ */
+ ISymbianBuildContext getBuildContext();
+
+ /** ISymbianBuildContext wrapper
+ * @since 3.0 */
+ String getDisplayString();
+
+ /** ISymbianBuildContext wrapper
+ * @since 3.0 */
+ ISymbianSDK getSDK();
+
+ /** ISymbianBuildContext wrapper
+ * @since 3.0 */
+ String getPlatformString();
+
+ /** ISymbianBuildContext wrapper
+ * @since 3.0 */
+ String getTargetString();
+
+ /**
+ * Provides a list of macros suitable for preprocessing a CPP source file. This includes
+ * macros from the compiler prefix, Symbian HRH, buit-in build macros, and metadata macros.
+ * Note: If you don't want the macro values from the preincludes, you should use the methods
+ * directly under ISymbianBuildContext for more specificity.
+ * @return a list of macro defines
+ * @since 3.0
+ */
+ List<IDefine> getCompileTimeMacros();
+
+
}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/project/ICarbideProjectInfo.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/project/ICarbideProjectInfo.java Wed Aug 25 12:42:09 2010 -0500
@@ -52,11 +52,12 @@
public static final int ACTION_LINK_ONLY = 1;
public static final int ACTION_COMPILE_AND_LINK = 2;
+
/**
* Load all the configurations associated with this project. If this is a new project,
* then a dummy .settings file will be created which can be used to generate new build
* configurations.
- * @return A list of ICarbideBuildConfiguration objects, which may be empty
+ * @return A copy of the list of ICarbideBuildConfiguration objects, which may be empty. Modifying the result does not affect the project.
*/
public List<ICarbideBuildConfiguration> getBuildConfigurations();
@@ -82,7 +83,7 @@
/**
* Check whether or not all components of the inf are built or subcomponents.
- * Building from inf means that only 'abld build' is invoked rather than invoking 'abld build' on specific MMP and makefiles
+ * Building from inf means that the build system is invoked on a single bld.inf, rather than build steps for individual MMPs
* @return true when building from bld.inf
*/
public boolean isBuildingFromInf();
@@ -106,14 +107,6 @@
public IPath getWorkspaceRelativeBldInfPath();
/**
- * Get the name of the MMP file that is used to calculate the target output (final artifact) for setting up launch configurations
- * @return
- *
- * @deprecated no longer used in 1.3. now returns an empty string.
- */
- public String getMMPTargetFile();
-
- /**
* Get the IProject for the Carbide.c++ project.
* @return IProject object
*/
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/project/IROMBuilderInfo.java Tue Aug 24 16:42:58 2010 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-package com.nokia.carbide.cdt.builder.project;
-
-/**
- * IROMBuilderInfo represents one instance of configuration data for the ROM Builder tab.
- * @see ICarbideBuildConfiguration
- */
-public interface IROMBuilderInfo {
-
- /**
- * Get the command line to build the ROM
- * @return string which may be empty
- */
- String getCommandLine();
-
- /**
- * Set the command line with which to build the ROM
- * @param commandLine
- */
- void setCommandLine(String commandLine);
-
- /**
- * Get the working directory to run the build from
- * @return string which may be empty
- */
- String getWorkingDirectory();
-
- /**
- * Set the working directory from which to run the build
- * @param workingDirectory
- */
- void setWorkingDirectory(String workingDirectory);
-
-}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/CarbideConfigurationDataProvider.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/CarbideConfigurationDataProvider.java Wed Aug 25 12:42:09 2010 -0500
@@ -28,6 +28,7 @@
import org.eclipse.cdt.core.ICExtensionReference;
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.extension.CConfigurationData;
import org.eclipse.cdt.core.settings.model.extension.CConfigurationDataProvider;
import org.eclipse.core.resources.IFolder;
@@ -39,8 +40,8 @@
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.ISchedulingRule;
import org.eclipse.core.runtime.jobs.Job;
+import org.osgi.framework.Version;
-import com.nokia.carbide.cdt.builder.BuildArgumentsInfo;
import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
@@ -56,8 +57,17 @@
import com.nokia.carbide.cdt.internal.builder.gen.CarbideBuildConfig.CarbideBuilderConfigInfoType;
import com.nokia.carbide.cdt.internal.builder.gen.CarbideBuildConfig.ConfigurationType;
import com.nokia.carbide.cdt.internal.builder.xml.CarbideBuildConfigurationLoader;
-import com.nokia.carbide.cpp.internal.api.sdk.SymbianBuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.BuildArgumentsInfo;
+import com.nokia.carbide.cpp.internal.api.sdk.BuildContextSBSv1;
+import com.nokia.carbide.cpp.internal.api.sdk.BuildContextSBSv2;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildConfigInfo;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.SBSv2BuilderInfo;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
+import com.nokia.carbide.cpp.sdk.core.SymbianSDKFactory;
/**
* Main interface point with CDT with regards to our build configurations. Note that
@@ -109,6 +119,7 @@
return baseData;
}
+ @SuppressWarnings("restriction")
@Override
public CConfigurationData loadConfiguration(ICConfigurationDescription des,
IProgressMonitor monitor) throws CoreException {
@@ -119,9 +130,24 @@
throw new CoreException(new Status(IStatus.ERROR, CarbideBuilderPlugin.PLUGIN_ID, IStatus.OK, "Project " + project.getName() + " is not a valid Carbide project.", null));
}
- // find the configuration that matches the id (sdk, platform, target)
- String configId = des.getConfiguration().getId();
- ISymbianBuildContext context = SymbianBuildContext.getBuildContextFromDisplayName(configId);
+ ISymbianBuildContext context = null;
+ if (CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(project)){
+
+ context = loadSBSv2Configuration(des, monitor);
+
+ if (context == null){
+ throw new CoreException(new Status(IStatus.ERROR,
+ CarbideBuilderPlugin.PLUGIN_ID, IStatus.OK,
+ "Unable to load Carbide settings for project "
+ + project.getProject().getName(), null));
+ }
+ } else {
+ // Presume it's SBSv1
+ // find the configuration that matches the id (sdk, platform, target)
+ String configId = des.getConfiguration().getId();
+ context = BuildContextSBSv1.getBuildContextFromDisplayName(configId);
+ }
+
if (context == null) {
throw new CoreException(new Status(IStatus.ERROR, CarbideBuilderPlugin.PLUGIN_ID, IStatus.OK, "SDK specified in project " + project.getName() + " is not installed, please set it up from project property", null));
}
@@ -140,6 +166,75 @@
return null;
}
+ @SuppressWarnings("restriction")
+ private ISymbianBuildContext loadSBSv2Configuration(ICConfigurationDescription des,
+ IProgressMonitor monitor) {
+
+ ICStorageElement rootStorage;
+ try {
+ rootStorage = des.getStorage(CarbideBuildConfiguration.CARBIDE_STORAGE_ID, false);
+ } catch (CoreException e) {
+ return null;
+ }
+ String configID = des.getConfiguration().getId();
+ String buidAlias = null;
+ String platform = null;
+ String target = null;
+ String displayString = null;
+ String sdkID = null;
+ if (rootStorage != null) {
+ for (ICStorageElement se : rootStorage.getChildren()) {
+ if (se.getName().equals(
+ ISBSv2BuildContext.SBSV2_DATA_ID)) {
+
+ SBSv2BuilderInfo sbsv2BuilderInfo = new SBSv2BuilderInfo();
+ sbsv2BuilderInfo.loadFromStorage(se);
+ platform = sbsv2BuilderInfo.getSBSv2Setting(ISBSv2BuildConfigInfo.ATRRIB_CONFIG_BASE_PLATFORM);
+ target = sbsv2BuilderInfo.getSBSv2Setting(ISBSv2BuildConfigInfo.ATTRIB_CONFIG_TARGET);
+ buidAlias = sbsv2BuilderInfo.getSBSv2Setting(ISBSv2BuildConfigInfo.ATTRIB_SBSV2_BUILD_ALIAS);
+ displayString = sbsv2BuilderInfo.getSBSv2Setting(ISBSv2BuildConfigInfo.ATTRIB_SBSV2_CONFIG_DISPLAY_STRING);
+ sdkID = sbsv2BuilderInfo.getSBSv2Setting(ISBSv2BuildConfigInfo.ATTRIB_SBSV2_SDK_ID);
+ }
+ }
+ } else {
+ return null;
+ }
+
+ ISymbianSDK sdk = null;
+ if (!configID.startsWith(ISBSv2BuildContext.BUILDER_ID)){
+ // pre-C3 (Carbide 2.x) project, get SDK id from config name
+ if (displayString == null){
+ displayString = configID;
+ }
+ if (sdkID == null){
+ sdkID = BuildContextSBSv2.getSDKIDFromV1ConfigName(displayString);
+ }
+ if (platform == null){
+ platform = BuildContextSBSv2.getPlatformFromV1ConfigName(displayString);
+ }
+ if (target == null){
+ target = BuildContextSBSv2.getTargetFromV1ConfigName(displayString);
+ }
+ if (buidAlias == null){
+ buidAlias = BuildContextSBSv2.getBuildAliasFromV1ConfigName(displayString);
+ }
+ }
+ if (sdkID != null){
+ sdk = SDKCorePlugin.getSDKManager().getSDK(sdkID, true);
+ if (sdk != null){
+ return new BuildContextSBSv2(sdk, platform, target, buidAlias, displayString, configID);
+ } else {
+ ISymbianSDK deadSDK = SymbianSDKFactory.createInstance(sdkID, ISymbianSDK.BAD_EPOCROOT, new Version("9.5"));
+ SDKCorePlugin.getSDKManager().addSDK(deadSDK);
+
+ return new BuildContextSBSv2(deadSDK, platform, target, buidAlias, displayString, configID);
+ }
+ }
+
+ return null;
+
+ }
+
@Override
public void removeConfiguration(ICConfigurationDescription des,
CConfigurationData data, IProgressMonitor monitor) {
@@ -175,12 +270,14 @@
protected static void convertSettingsData(IProject project, CarbideBuilderConfigInfoType buildConfigType) {
if (buildConfigType.getVersion() == CarbideBuildConfigurationLoader.SETTINGS_VERSION_0) {
- // Iteraate through all the configurations and convert from version 0 to 1.
+ // Iterate through all the configurations and convert from version 0 to 1.
// Reset all PATH, EPOCROOT, and MW* variables set back to their defaults
// as they are computed dynamically now.
for (Iterator i = buildConfigType.getConfiguration().iterator(); i.hasNext();) {
ConfigurationType currConfig = (ConfigurationType)i.next();
- ISymbianBuildContext context = SymbianBuildContext.getBuildContextFromDisplayName(currConfig.getName());
+
+ @SuppressWarnings("restriction")
+ ISymbianBuildContext context = BuildContextSBSv1.getBuildContextFromDisplayName(currConfig.getName());
IEnvironmentVarsInfo envSettings = new EnvironmentVarsInfo(project, context, currConfig.getEnvVars());
List<IEnvironmentVariable> varsFromSettings = envSettings.getModifiedEnvVarsListFromSettings();
List<IEnvironmentVariable> updatedEnvList = new ArrayList<IEnvironmentVariable>();
@@ -305,7 +402,8 @@
for (Iterator i = oldConfigInfo.getConfiguration().iterator(); i.hasNext();) {
ConfigurationType currConfig = (ConfigurationType)i.next();
- ISymbianBuildContext context = SymbianBuildContext.getBuildContextFromDisplayName(currConfig.getName());
+ @SuppressWarnings("restriction")
+ ISymbianBuildContext context = BuildContextSBSv1.getBuildContextFromDisplayName(currConfig.getName());
if (context != null) {
configs.add(context);
}
@@ -340,8 +438,9 @@
EnvironmentVarsInfo oldEnvVars = new EnvironmentVarsInfo(project, context, currConfig.getEnvVars());
buildConfiguration.setEnvironmentVarsInfo(new EnvironmentVarsInfo2(oldEnvVars));
+ if (context instanceof ISBSv1BuildContext)
if (wasVerboseChecked) {
- buildConfiguration.setBuildArgumentsInfo(new BuildArgumentsInfo("", "", "-v", "", "", "", "", "", "", "-v", "-v"));
+ ((ISBSv1BuildContext)context).setBuildArgumentsInfo(new BuildArgumentsInfo("", "", "-v", "", "", "", "", "", "", "-v", "-v"));
}
buildConfiguration.saveConfiguration(false);
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/ui/BrokenConfigurationInProjectTreeNode.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/ui/BrokenConfigurationInProjectTreeNode.java Wed Aug 25 12:42:09 2010 -0500
@@ -41,7 +41,7 @@
for (ICarbideBuildConfiguration config : buildConfigList) {
if (config.getSDK().getUniqueId().equals(value.getUniqueId())) {
- childConfig.add(config);
+ childConfig.add(config.getBuildContext());
}
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/ui/CarbidePrefsModifier.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+package com.nokia.carbide.cdt.internal.api.builder.ui;
+
+import com.nokia.carbide.cdt.builder.extension.ICarbidePrefsModifier;
+import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
+import com.nokia.carbide.cpp.internal.api.sdk.BuildArgumentsInfo;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildContext;
+
+public class CarbidePrefsModifier implements ICarbidePrefsModifier {
+
+ @SuppressWarnings("deprecation")
+ public String getConfigurationValue(ICarbideBuildConfiguration config, String prefID) {
+
+ if (prefID.equals(ICarbidePrefsModifier.ABLD_BUILD_ARG_SETTING)){
+ if (config.getBuildContext() instanceof ISBSv1BuildContext){
+ BuildArgumentsInfo info = ((ISBSv1BuildContext)config.getBuildContext()).getBuildArgumentsInfoCopy();
+ return info.getAbldBuildArgs();
+ }
+ }
+
+ return null;
+ }
+
+ @SuppressWarnings("deprecation")
+ public void setConfigurationValue(ICarbideBuildConfiguration config, String arg, String prefID) {
+
+ if (prefID.equals(ICarbidePrefsModifier.ABLD_BUILD_ARG_SETTING)){
+ if (config.getBuildContext() instanceof ISBSv1BuildContext){
+ BuildArgumentsInfo info = ((ISBSv1BuildContext)config.getBuildContext()).getBuildArgumentsInfoCopy();
+ info.abldBuildArgs = arg;
+ ((ISBSv1BuildContext)config.getBuildContext()).setBuildArgumentsInfo(info);
+ }
+ }
+ }
+
+ @SuppressWarnings("deprecation")
+ public boolean isSupportedConfigurationPrefId(
+ ICarbideBuildConfiguration config, String prefID) {
+
+ if (prefID.equals(ICarbidePrefsModifier.ABLD_BUILD_ARG_SETTING)){
+ if (config.getBuildContext() instanceof ISBSv2BuildContext){
+ return false; // SBSv1 only
+ }
+ return true;
+ }
+
+ return false;
+ }
+
+}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/ui/MMPSelectionUI.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/ui/MMPSelectionUI.java Wed Aug 25 12:42:09 2010 -0500
@@ -17,6 +17,7 @@
package com.nokia.carbide.cdt.internal.api.builder.ui;
import com.nokia.carbide.cdt.builder.EpocEngineHelper;
+import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IExtension;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
@@ -168,7 +169,7 @@
private Button excludeExtensionMakefilesCheckbox;
private Button excludeTestComponentsCheckbox;
private ListenerList<ISelectionChangedListener> listeners;
- private List<? extends ISymbianBuildContext> buildConfigs;
+ private List<ISymbianBuildContext> buildConfigs;
private IPath bldInfFile;
private final IRunnableContext runnableContext;
private List<FileInfo> data = Collections.emptyList();
@@ -370,12 +371,12 @@
* @param bldInfFile IPath
* @param buildConfigs List<ISymbianBuildContext>
*/
- public void setBldInfFile(final IPath bldInfFile, final List buildConfigs, final boolean useSBSv2Builder) {
+ public void setBldInfFile(final IPath bldInfFile, final List<ISymbianBuildContext> buildContexts, final boolean useSBSv2Builder) {
if (bldInfFile.equals(this.bldInfFile) && buildConfigs.equals(this.buildConfigs))
return;
this.bldInfFile = bldInfFile;
- this.buildConfigs = buildConfigs;
+ this.buildConfigs = buildContexts;
this.useSBSv2Builder = useSBSv2Builder;
try {
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/ui/ManageConfigurationsDialog.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/ui/ManageConfigurationsDialog.java Wed Aug 25 12:42:09 2010 -0500
@@ -17,6 +17,7 @@
package com.nokia.carbide.cdt.internal.api.builder.ui;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -24,6 +25,7 @@
import org.eclipse.jface.dialogs.TrayDialog;
import org.eclipse.jface.viewers.CheckStateChangedEvent;
import org.eclipse.jface.viewers.ICheckStateListener;
+import org.eclipse.jface.viewers.IColorProvider;
import org.eclipse.jface.viewers.IFilter;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
@@ -34,6 +36,7 @@
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
@@ -52,21 +55,25 @@
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectModifier;
import com.nokia.carbide.cdt.internal.builder.ui.CarbideCPPBuilderUIHelpIds;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildContext;
import com.nokia.carbide.cpp.internal.api.sdk.ISDKManagerInternal;
import com.nokia.carbide.cpp.internal.qt.core.QtConfigFilter;
import com.nokia.carbide.cpp.internal.qt.core.QtCorePlugin;
import com.nokia.carbide.cpp.internal.qt.core.QtSDKFilter;
+import com.nokia.carbide.cpp.internal.sdk.core.model.SDKManager;
import com.nokia.carbide.cpp.sdk.core.ISDKManager;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
import com.nokia.carbide.cpp.sdk.ui.shared.BuildTargetTreeNode;
import com.nokia.cpp.internal.api.utils.core.Check;
+import com.nokia.cpp.internal.api.utils.core.HostOS;
+import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils;
+@SuppressWarnings("restriction")
public class ManageConfigurationsDialog extends TrayDialog {
protected ContainerCheckedTreeViewer properSdkViewer;
- protected ContainerCheckedTreeViewer missingSdkViewer;
private FilteringContentProviderWrapper filteringContentProviderWrapper;
private final ICarbideProjectInfo cpi;
@@ -142,12 +149,14 @@
this.cpi = cpi;
setShellStyle(getShellStyle() | SWT.RESIZE);
- ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
- if (!sdkMgr.checkDevicesXMLSynchronized()){
- if (sdkMgr instanceof ISDKManagerInternal){
- ISDKManagerInternal sdkMgrInternal = (ISDKManagerInternal)sdkMgr;
- sdkMgrInternal.fireDevicesXMLChanged();
- }
+ if (HostOS.IS_WIN32){
+ ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
+ if (!((SDKManager)sdkMgr).checkDevicesXMLSynchronized()){
+ if (sdkMgr instanceof ISDKManagerInternal){
+ ISDKManagerInternal sdkMgrInternal = (ISDKManagerInternal)sdkMgr;
+ sdkMgrInternal.fireDevicesXMLChanged();
+ }
+ }
}
}
@@ -184,7 +193,28 @@
properSdkViewer = new ContainerCheckedTreeViewer(container, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
properSdkViewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
- properSdkViewer.setLabelProvider(new LabelProvider());
+
+ class SDKNodeLabelProvider extends LabelProvider implements IColorProvider {
+
+ public Color getForeground(Object element) {
+ if (element instanceof BuildTargetTreeNode){
+ BuildTargetTreeNode treeNode = (BuildTargetTreeNode)element;
+ if (treeNode.getValue() instanceof ISymbianSDK){
+ if (treeNode.toString().contains(BuildTargetTreeNode.SDK_NODE_ERROR_EPOCROOT_INVALID)){
+ return WorkbenchUtils.getSafeShell().getDisplay().getSystemColor(SWT.COLOR_RED);
+ }
+ }
+ }
+
+ return null;
+ }
+
+ public Color getBackground(Object element) {
+ return null;
+ }
+ }
+
+ properSdkViewer.setLabelProvider(new SDKNodeLabelProvider());
TreeNodeContentProvider treeNodeContentProvider = new TreeNodeContentProvider();
filteringContentProviderWrapper =
new FilteringContentProviderWrapper(treeNodeContentProvider);
@@ -202,36 +232,17 @@
final Label uninstalledSdkConfigLabel = new Label(container, SWT.NONE);
uninstalledSdkConfigLabel.setToolTipText(Messages.getString("ManageConfigurationsDialog.Unavailable_Config_Label_ToolTip")); //$NON-NLS-1$
uninstalledSdkConfigLabel.setText(Messages.getString("ManageConfigurationsDialog.Unavailable_SDks_and_Configs")); //$NON-NLS-1$
- missingSdkViewer = new ContainerCheckedTreeViewer(container, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
- missingSdkViewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
- missingSdkViewer.setLabelProvider(new LabelProvider());
- filteringContentProviderWrapper =
- new FilteringContentProviderWrapper(treeNodeContentProvider);
- missingSdkViewer.setContentProvider(filteringContentProviderWrapper);
- missingSdkViewer.setInput(brokenTreeInput);
- propagateMissingSdkTree();
- missingSdkViewer.addCheckStateListener(new ICheckStateListener() {
- public void checkStateChanged(CheckStateChangedEvent event) {
- // Disclose the tree if the user selected the parent node
- Object obj = event.getElement();
- if (obj instanceof BrokenConfigurationInProjectTreeNode){
- BrokenConfigurationInProjectTreeNode bttn = (BrokenConfigurationInProjectTreeNode)obj;
- missingSdkViewer.setExpandedState(bttn, true);
- }
- validatePage();
- }
- });
}
final Label sdkStaticHelp = new Label(parent, SWT.WRAP);
sdkStaticHelp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
sdkStaticHelp.setText(Messages.getString("ManageConfigurationsDialog.Select_config_help_text")); //$NON-NLS-1$
- Link fLink = new Link(parent, SWT.WRAP);
- fLink.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- fLink.setText(Messages.getString("ManageConfigurationsDialog.Select_Filtering_Prefs_Link")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- fLink.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 3, 1));
- fLink.addSelectionListener(new SelectionAdapter() {
+ Link configPrefLink = new Link(parent, SWT.WRAP);
+ configPrefLink.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ configPrefLink.setText(Messages.getString("ManageConfigurationsDialog.Select_Filtering_Prefs_Link")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ configPrefLink.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 3, 1));
+ configPrefLink.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
// I don't see a way to open it to a specific tab, only the page
if (Window.OK == PreferencesUtil.createPreferenceDialogOn(getShell(), "com.nokia.carbide.cpp.sdk.ui.preferences.BuildPlatformFilterPage", null, null, 0).open()){ //$NON-NLS-1$
@@ -240,6 +251,19 @@
}
});
+ Link sdkLink = new Link(parent, SWT.WRAP);
+ sdkLink.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ sdkLink.setText(Messages.getString("ManageConfigurationsDialog.Select_SymbianSDKs_Prefs_Link")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ sdkLink.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 3, 1));
+ sdkLink.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ // I don't see a way to open it to a specific tab, only the page
+ if (Window.OK == PreferencesUtil.createPreferenceDialogOn(getShell(), "com.nokia.carbide.cpp.sdk.ui.preferences.SDKPreferencePage", null, null, 0).open()){ //$NON-NLS-1$
+ drawSDKConfigTree();
+ }
+ }
+ });
+
PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, CarbideCPPBuilderUIHelpIds.CARBIDE_BUILDER_MANAGE_CONFIGURATIONS_DLG);
return container;
@@ -249,7 +273,12 @@
boolean sbsv2Project = CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(cpi.getProject());
properSdkViewer.setContentProvider(filteringContentProviderWrapper);
- properSdkViewer.setInput(BuildTargetTreeNode.getTreeViewerInput(sbsv2Project));
+ BuildTargetTreeNode[] sdkConfigTreeNodes = BuildTargetTreeNode.getTreeViewerInput(sbsv2Project);
+ if (sbsv2Project){
+ replaceFilteredConfigsFromProject(sdkConfigTreeNodes);
+ }
+
+ properSdkViewer.setInput(sdkConfigTreeNodes);
propagateSdkTree();
properSdkViewer.addCheckStateListener(new ICheckStateListener() {
public void checkStateChanged(CheckStateChangedEvent event) {
@@ -266,6 +295,122 @@
}
/**
+ * When displaying build configs there may be configurations in the project that may not be displayed
+ * We add those back in so they reside in the checked tree viewer in case the user wants to remove them.
+ * @param sdkConfigTreeNodes
+ */
+ private void replaceFilteredConfigsFromProject(BuildTargetTreeNode[] sdkConfigTreeNodes) {
+ List<ICarbideBuildConfiguration> bldConfigs = cpi.getBuildConfigurations();
+
+ HashMap<BuildTargetTreeNode, List<ISymbianBuildContext>> missingConfigMap = new HashMap<BuildTargetTreeNode, List<ISymbianBuildContext>>();
+ for (ICarbideBuildConfiguration config : bldConfigs){
+ boolean foundConfig = false;
+ // Add in configs that are only defined in the project and not the
+ // suggested filtered config cache
+ for (BuildTargetTreeNode sdkConfigNode : sdkConfigTreeNodes){
+ ISymbianSDK sdk = sdkConfigNode.getSymbianSDK();
+ if (!sdk.getUniqueId().equals(config.getSDK().getUniqueId())){
+ continue; // not in this SDK, don't bother looking at all configs
+ } else {
+ // Found the right SDK, now check and see if the config exists
+ TreeNode[] configNodes = sdkConfigNode.getChildren();
+ if (configNodes != null){
+ for (TreeNode childConfig : configNodes){
+ if (childConfig == null){
+ continue;
+ }
+ if (childConfig.getValue() instanceof ISymbianBuildContext){
+ ISymbianBuildContext context = (ISymbianBuildContext)(childConfig.getValue());
+ if (config.getBuildContext().equals(context)){
+ foundConfig = true;
+ break;
+ }
+ }
+ }
+ }
+ if (!foundConfig){
+ // save config off, we'll add it back in later
+ List<ISymbianBuildContext> contextsToAdd = new ArrayList<ISymbianBuildContext>();
+ if (null == missingConfigMap.get(sdkConfigNode)){
+ contextsToAdd.add(config.getBuildContext());
+ } else {
+ contextsToAdd = missingConfigMap.get(sdkConfigNode);
+ contextsToAdd.add(config.getBuildContext());
+ }
+ missingConfigMap.put(sdkConfigNode, contextsToAdd);
+
+ }
+ }
+ }
+ }
+
+ for (BuildTargetTreeNode sdkNode : missingConfigMap.keySet()){
+ List<ISymbianBuildContext> configsToAdd = missingConfigMap.get(sdkNode);
+ TreeNode[] oldConfigNodes = sdkNode.getChildren();
+ if (oldConfigNodes == null || oldConfigNodes.length == 0){
+ continue;
+ }
+ TreeNode[] newConfigNodes = new TreeNode[oldConfigNodes.length + configsToAdd.size()];
+ int index = 0;
+ // build up the old list....
+ for (TreeNode newConfigNode : oldConfigNodes){
+ if (newConfigNode == null){
+ continue;
+ }
+ if (newConfigNode.getValue() instanceof ISymbianBuildContext){
+ ISymbianBuildContext context = (ISymbianBuildContext)(newConfigNode.getValue());
+ newConfigNodes[index++] = new TreeNode(context) {
+ @Override
+ public String toString() {
+ ISymbianBuildContext context = (ISymbianBuildContext)getValue();
+ String sdkId = context.getSDK().getUniqueId();
+ String newDisplayString = stripSDKIDFromConfigName(context.getDisplayString(), sdkId);
+ if (context instanceof ISBSv2BuildContext){
+ ISBSv2BuildContext v2Context = (ISBSv2BuildContext)context;
+ if (v2Context.getConfigQueryData() == null){
+ newDisplayString += " ERROR: " + "Unable to load configuration data because the query to sbs failed."; // $NON-NLS-N$
+ }
+ else if (v2Context.getConfigQueryData().getConfigurationErrorMessage() != null &&
+ v2Context.getConfigQueryData().getConfigurationErrorMessage().length() > 0){
+ newDisplayString += " ERROR: " + v2Context.getConfigQueryData().getConfigurationErrorMessage();
+ }
+ }
+ return newDisplayString;
+ }
+ };
+ }
+ }
+
+ // ... then add the project specific items...
+ for (ISymbianBuildContext newContext : configsToAdd){
+ newConfigNodes[index++] = new TreeNode(newContext) {
+ @Override
+ public String toString() {
+ ISymbianBuildContext context = (ISymbianBuildContext)getValue();
+ String sdkId = context.getSDK().getUniqueId();
+ String newDisplayString = stripSDKIDFromConfigName(context.getDisplayString(), sdkId);
+ if (context instanceof ISBSv2BuildContext){
+ ISBSv2BuildContext v2Context = (ISBSv2BuildContext)context;
+ if (v2Context.getConfigQueryData() == null){
+ newDisplayString += " ERROR: " + "Unable to load configuration data because the query to sbs failed."; // $NON-NLS-N$
+ }
+ else if (v2Context.getConfigQueryData().getConfigurationErrorMessage() != null &&
+ v2Context.getConfigQueryData().getConfigurationErrorMessage().length() > 0){
+ newDisplayString += " ERROR: " + v2Context.getConfigQueryData().getConfigurationErrorMessage();
+ }
+ }
+ return newDisplayString;
+ }
+ };
+ }
+
+ sdkNode.setChildren(newConfigNodes);
+
+ }
+
+ }
+
+ /**
* Create contents of the button bar
* @param parent
*/
@@ -309,17 +454,19 @@
ISymbianBuildContext buildContext = (ISymbianBuildContext)currConfigNode.getValue();
for (ICarbideBuildConfiguration currExistingConfig : buildConfigList){
boolean checkIt = false;
- checkIt = currExistingConfig.equals(buildContext);
+ checkIt = currExistingConfig.getBuildContext().equals(buildContext);
if (CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(cpi.getProject()) &&
- !checkIt && currExistingConfig.getSBSv2Alias() == null){
+ !checkIt){
- // extra check to see if we're using SBSv2 and config display name is older SBSv1 style
- if (buildContext.getTargetString().equals(currExistingConfig.getTargetString()) &&
- buildContext.getPlatformString().equals(currExistingConfig.getPlatformString()) &&
- buildContext.getSDK().getUniqueId().equals(currExistingConfig.getSDK().getUniqueId() )
- && buildContext.getSBSv2Alias() != null && buildContext.getSBSv2Alias().split("_").length == 2){
-
- checkIt = true;
+ if (buildContext instanceof ISBSv2BuildContext){
+ ISBSv2BuildContext v2Context = (ISBSv2BuildContext)buildContext;
+ ISBSv2BuildContext currV2Context = (ISBSv2BuildContext)currExistingConfig.getBuildContext();
+ // extra check to see if we're using SBSv2 and config display name is older SBSv1 style
+ if (currV2Context.getConfigID().startsWith(ISBSv2BuildContext.BUILDER_ID)){
+ if (v2Context.getConfigID().equals(currV2Context.getConfigID()) ){
+ checkIt = true;
+ }
+ }
}
}
if (checkIt){
@@ -336,19 +483,6 @@
properSdkViewer.refresh();
}
- private void propagateMissingSdkTree() {
- TreeItem[] items = missingSdkViewer.getTree().getItems();
- // all nodes in this tree are select, as the tree only reflect selected config with bad SDK
- for (int i=0; i<items.length; i++) {
- TreeNode sdkNode = (TreeNode)items[i].getData();
- if (sdkNode.getValue() instanceof ISymbianSDK) {
- missingSdkViewer.setExpandedState(sdkNode, true);
- missingSdkViewer.setChecked(sdkNode, true);
- }
- }
- missingSdkViewer.refresh();
- }
-
private void saveConfigurations(){
// get the modifier
@@ -366,7 +500,7 @@
ISymbianBuildContext context = (ISymbianBuildContext)node.getValue();
// Now check to see if the config already exists, if not create a new one
for (ICarbideBuildConfiguration currExistingConfig : buildConfigList){
- if (currExistingConfig.equals(context)){
+ if (currExistingConfig.getBuildContext().equals(context)){
configAlreadyExists = true;
break;
}
@@ -390,24 +524,26 @@
TreeNode sdkNode = (TreeNode)currTreeItem.getData();
if (sdkNode.getValue() instanceof ISymbianSDK) {
TreeNode[] configNode = sdkNode.getChildren();
- for (TreeNode currConfigNode : configNode){
- if (currConfigNode.getValue() instanceof ISymbianBuildContext){
- // if the current config is already a config set it to checked.
- ISymbianBuildContext buildContext = (ISymbianBuildContext)currConfigNode.getValue();
- if (currExistingConfig.equals(buildContext)){
- // The configuration is in both the tree viewer and the .settings
- // Now find out if it's checked. If it's not checked remove it
- if (!properSdkViewer.getChecked(currConfigNode)){
- ICarbideBuildConfiguration config = cpm.getNamedConfiguration(buildContext.getDisplayString());
- if (config == null){
- config = cpm.getNamedConfiguration(currExistingConfig.getDisplayString());
- }
- if (config != null){
- cpm.deleteConfiguration(config);
- break;
- }
-
- }
+ if (configNode != null){
+ for (TreeNode currConfigNode : configNode){
+ if (currConfigNode.getValue() instanceof ISymbianBuildContext){
+ // if the current config is already a config set it to checked.
+ ISymbianBuildContext buildContext = (ISymbianBuildContext)currConfigNode.getValue();
+ if (currExistingConfig.getBuildContext().equals(buildContext)){
+ // The configuration is in both the tree viewer and the .settings
+ // Now find out if it's checked. If it's not checked remove it
+ if (!properSdkViewer.getChecked(currConfigNode)){
+ ICarbideBuildConfiguration config = cpm.getNamedConfiguration(buildContext.getDisplayString());
+ if (config == null){
+ config = cpm.getNamedConfiguration(currExistingConfig.getDisplayString());
+ }
+ if (config != null){
+ cpm.deleteConfiguration(config);
+ break;
+ }
+
+ }
+ }
}
}
}
@@ -415,28 +551,13 @@
}
}
- // now look for dead SDK config we removed
- if (missingSdkViewer != null) {
- TreeItem[] items = missingSdkViewer.getTree().getItems();
- for (TreeItem currentTreeItem : items) {
- TreeNode sdkNode = (TreeNode)currentTreeItem.getData();
- if (sdkNode.getValue() instanceof ISymbianSDK) {
- TreeNode[] configNode = sdkNode.getChildren();
- for (TreeNode currConfigNode : configNode){
- if (missingSdkViewer.getChecked(currConfigNode) == false) {
- ISymbianBuildContext buildContext = (ISymbianBuildContext)currConfigNode.getValue();
- ICarbideBuildConfiguration config = cpm.getNamedConfiguration(buildContext.getDisplayString());
- if (config != null) {
- cpm.deleteConfiguration(config);
- }
- }
- }
- }
- }
- }
-
// now apply any changes
cpm.saveChanges();
}
+
+ private static String stripSDKIDFromConfigName(String configName, String sdkID){
+ return configName.replace("[" + sdkID + "]", "");
+ }
+
}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/ui/messages.properties Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/ui/messages.properties Wed Aug 25 12:42:09 2010 -0500
@@ -4,7 +4,8 @@
ManageConfigurationsDialog.Unavailable_Config_Label_ToolTip=Show the SDKs and build configurations that are unavailable to the current project
ManageConfigurationsDialog.Unavailable_SDks_and_Configs=\n Unavailable SDKs and Configurations:\n\n
ManageConfigurationsDialog.Select_config_help_text=\n Checkmark a configuration to add it to the current project, or uncheck a configuration to remove it from the build configuration.
-ManageConfigurationsDialog.Select_Filtering_Prefs_Link=\n See <a>Platform Filtering Preferences</a> to configure displayed build configurations.
+ManageConfigurationsDialog.Select_Filtering_Prefs_Link=\n See <a>Build Configuration Filtering Preferences</a> to configure displayed build configurations.
+ManageConfigurationsDialog.Select_SymbianSDKs_Prefs_Link=\n See <a>Symbian SDKs</a> to manage your Symbian SDK installations.
MMPSelectionUI.BuildOrderColumnLabel=Build order
MMPSelectionUI.FileNameColumnLabel=File name
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/BuildConfigurationData.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/BuildConfigurationData.java Wed Aug 25 12:42:09 2010 -0500
@@ -48,6 +48,8 @@
import com.nokia.carbide.cdt.builder.EpocEngineHelper;
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildContext;
import com.nokia.cpp.internal.api.utils.core.TextUtils;
/**
@@ -125,12 +127,18 @@
@Override
public String getId() {
- return carbideBuildConfig.getDisplayString();
+ if (carbideBuildConfig.getBuildContext() instanceof ISBSv1BuildContext){
+ return carbideBuildConfig.getBuildContext().getDisplayString();
+ } else if (carbideBuildConfig.getBuildContext() instanceof ISBSv2BuildContext) {
+ return ((ISBSv2BuildContext)carbideBuildConfig.getBuildContext()).getConfigID();
+ }
+
+ return null;
}
@Override
public String getName() {
- return carbideBuildConfig.getDisplayString();
+ return carbideBuildConfig.getBuildContext().getDisplayString();
}
@Override
@@ -277,7 +285,7 @@
ICProjectDescription projDes = CoreModel.getDefault().getProjectDescription(cpi.getProject());
if (projDes != null) {
- ICConfigurationDescription configDes = projDes.getConfigurationById(carbideBuildConfig.getDisplayString());
+ ICConfigurationDescription configDes = projDes.getConfigurationById(carbideBuildConfig.getBuildContext().getConfigurationID());
if (configDes != null) {
String sourcesCacheValue = "";
for (ICSourceEntry src : sourceEntries) {
@@ -308,7 +316,7 @@
try {
ICProjectDescription projDes = CoreModel.getDefault().getProjectDescription(project);
if (projDes != null) {
- ICConfigurationDescription configDes = projDes.getConfigurationById(carbideBuildConfig.getDisplayString());
+ ICConfigurationDescription configDes = projDes.getConfigurationById(((CarbideBuildConfiguration)carbideBuildConfig).getBuildContext().getConfigurationID());
if (configDes != null) {
ICStorageElement storage = configDes.getStorage(CONFIG_DATA_CACHE, false);
if (storage != null) {
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideBuildConfiguration.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideBuildConfiguration.java Wed Aug 25 12:42:09 2010 -0500
@@ -31,59 +31,57 @@
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
-import com.nokia.carbide.cdt.builder.BuildArgumentsInfo;
import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
import com.nokia.carbide.cdt.builder.EpocEngineHelper;
import com.nokia.carbide.cdt.builder.builder.CarbideCPPBuilder;
-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.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.SISBuilderInfo2;
-import com.nokia.carbide.cpp.internal.api.sdk.SBSv2Utils;
+import com.nokia.carbide.cpp.epoc.engine.preprocessor.DefineFactory;
+import com.nokia.carbide.cpp.epoc.engine.preprocessor.IDefine;
+import com.nokia.carbide.cpp.internal.api.sdk.BuildContextSBSv1;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildInfo;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildContext;
import com.nokia.carbide.cpp.internal.api.sdk.SDKManagerInternalAPI;
-import com.nokia.carbide.cpp.internal.api.sdk.SymbianBuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.sbsv2.SBSv2QueryUtils;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
import com.nokia.cpp.internal.api.utils.core.TrackedResource;
-public class CarbideBuildConfiguration extends SymbianBuildContext implements ICarbideBuildConfiguration {
+@SuppressWarnings("deprecation")
+public class CarbideBuildConfiguration implements ICarbideBuildConfiguration {
static final String NOT_INSTALLED = "(SDK not found)"; //$NON-NLS-1$
- protected static final String CARBIDE_STORAGE_ID = "CarbideConfigurationDataProvider"; //$NON-NLS-1$
+ public static final String CARBIDE_STORAGE_ID = "CarbideConfigurationDataProvider"; //$NON-NLS-1$
protected final static String SIS_BUILDER_DATA_ID = "SIS_BUILDER_DATA_ID"; //$NON-NLS-1$
protected final static String ENV_VAR_DATA_ID = "ENV_VAR_DATA_ID"; //$NON-NLS-1$
- 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 ISymbianBuildContext context;
protected TrackedResource projectTracker;
protected List<ISISBuilderInfo> sisBuilderInfoList;
protected EnvironmentVarsInfo2 envVarsInfo;
- protected BuildArgumentsInfo buildArgumentsInfo;
+
protected BuildConfigurationData buildConfigData;
- protected ROMBuilderInfo romBuilderInfo;
- protected SBSv2BuilderInfo sbsv2BuilderInfo;
+
protected boolean rebuildNeeded;
public CarbideBuildConfiguration(IProject project, ISymbianBuildContext context) {
- super(context.getSDK(), context.getPlatformString(), context.getTargetString(), context.getSBSv2Alias());
+ this.context = context;
projectTracker = new TrackedResource(project);
sisBuilderInfoList = new ArrayList<ISISBuilderInfo>(0);
envVarsInfo = new EnvironmentVarsInfo2(project, context);
- buildArgumentsInfo = new BuildArgumentsInfo(getSDK());
+
buildConfigData = new BuildConfigurationData(this);
- romBuilderInfo = new ROMBuilderInfo(getSDK());
- if (CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(project)){
- sbsv2BuilderInfo = new SBSv2BuilderInfo(context);
- }
+
rebuildNeeded = true;
}
@@ -102,15 +100,11 @@
}
} else if (se.getName().equals(ENV_VAR_DATA_ID)) {
envVarsInfo.loadFromStorage(se);
- } else if (se.getName().equals(ARGUMENTS_DATA_ID)) {
- loadBuildArgsFromStorage(se);
- } else if (se.getName().equals(ROM_BUILDER_DATA_ID)) {
- romBuilderInfo.loadFromStorage(se);
- } else if (se.getName().equals(SBSV2_DATA_ID)){
- if (sbsv2BuilderInfo != null){
- sbsv2BuilderInfo.loadFromStorage(se);
- }
- }
+ }
+
+ // Load build context specific settings.
+ getBuildContext().loadConfigurationSettings(se);
+
}
} else {
throw new CoreException(new Status(IStatus.ERROR, CarbideBuilderPlugin.PLUGIN_ID, IStatus.OK, "Unable to load Carbide settings for project " + projectTracker.getProject().getName() + ", " + getDisplayString(), null));
@@ -128,115 +122,9 @@
}
envVarsInfo.saveToStorage(rootStorage.createChild(ENV_VAR_DATA_ID));
- saveBuildArgsToStorage(rootStorage.createChild(ARGUMENTS_DATA_ID));
- romBuilderInfo.saveToStorage(rootStorage.createChild(ROM_BUILDER_DATA_ID));
- if (CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(getCarbideProject().getProject())){
- sbsv2BuilderInfo.saveToStorage(rootStorage.createChild(SBSV2_DATA_ID));
- }
- }
- }
-
- private void loadBuildArgsFromStorage(ICStorageElement rootStorage) {
- String value = rootStorage.getAttribute(BuildArgumentsInfo.BLDMAKEBLDFILESARGSSTORAGE);
- if (value != null) {
- buildArgumentsInfo.bldmakeBldFilesArgs = value;
- }
-
- value = rootStorage.getAttribute(BuildArgumentsInfo.BLDMAKECLEANARGSSTORAGE);
- if (value != null) {
- buildArgumentsInfo.bldmakeCleanArgs = value;
- }
-
- value = rootStorage.getAttribute(BuildArgumentsInfo.ABLDBUILDARGSSTORAGE);
- if (value != null) {
- buildArgumentsInfo.abldBuildArgs = value;
- }
-
- value = rootStorage.getAttribute(BuildArgumentsInfo.ABLDEXPORTARGSSTORAGE);
- if (value != null) {
- buildArgumentsInfo.abldExportArgs = value;
- }
-
- value = rootStorage.getAttribute(BuildArgumentsInfo.ABLDMAKEFILEARGSSTORAGE);
- if (value != null) {
- buildArgumentsInfo.abldMakefileArgs = value;
- }
-
- value = rootStorage.getAttribute(BuildArgumentsInfo.ABLDLIBRARYARGSSTORAGE);
- if (value != null) {
- buildArgumentsInfo.abldLibraryArgs = value;
- }
-
- value = rootStorage.getAttribute(BuildArgumentsInfo.ABLDRESOURCEARGSSTORAGE);
- if (value != null) {
- buildArgumentsInfo.abldResourceArgs = value;
- }
-
- value = rootStorage.getAttribute(BuildArgumentsInfo.ABLDTARGETARGSSTORAGE);
- if (value != null) {
- buildArgumentsInfo.abldTargetArgs = value;
- }
-
- value = rootStorage.getAttribute(BuildArgumentsInfo.ABLDFINALARGSSTORAGE);
- if (value != null) {
- buildArgumentsInfo.abldFinalArgs = value;
- }
-
- value = rootStorage.getAttribute(BuildArgumentsInfo.ABLDCLEANARGSSTORAGE);
- if (value != null) {
- buildArgumentsInfo.abldCleanArgs = value;
- }
-
- value = rootStorage.getAttribute(BuildArgumentsInfo.ABLDFREEZEARGSSTORAGE);
- if (value != null) {
- buildArgumentsInfo.abldFreezeArgs = value;
- }
- }
-
- public void saveBuildArgsToStorage(ICStorageElement rootStorage) {
- if (buildArgumentsInfo.bldmakeBldFilesArgs.trim().length() > 0) {
- rootStorage.setAttribute(BuildArgumentsInfo.BLDMAKEBLDFILESARGSSTORAGE, buildArgumentsInfo.bldmakeBldFilesArgs);
- }
-
- if (buildArgumentsInfo.bldmakeCleanArgs.trim().length() > 0) {
- rootStorage.setAttribute(BuildArgumentsInfo.BLDMAKECLEANARGSSTORAGE, buildArgumentsInfo.bldmakeCleanArgs);
- }
-
- if (buildArgumentsInfo.abldBuildArgs.trim().length() > 0) {
- rootStorage.setAttribute(BuildArgumentsInfo.ABLDBUILDARGSSTORAGE, buildArgumentsInfo.abldBuildArgs);
- }
-
- if (buildArgumentsInfo.abldExportArgs.trim().length() > 0) {
- rootStorage.setAttribute(BuildArgumentsInfo.ABLDEXPORTARGSSTORAGE, buildArgumentsInfo.abldExportArgs);
- }
-
- if (buildArgumentsInfo.abldMakefileArgs.trim().length() > 0) {
- rootStorage.setAttribute(BuildArgumentsInfo.ABLDMAKEFILEARGSSTORAGE, buildArgumentsInfo.abldMakefileArgs);
- }
-
- if (buildArgumentsInfo.abldLibraryArgs.trim().length() > 0) {
- rootStorage.setAttribute(BuildArgumentsInfo.ABLDLIBRARYARGSSTORAGE, buildArgumentsInfo.abldLibraryArgs);
- }
-
- if (buildArgumentsInfo.abldResourceArgs.trim().length() > 0) {
- rootStorage.setAttribute(BuildArgumentsInfo.ABLDRESOURCEARGSSTORAGE, buildArgumentsInfo.abldResourceArgs);
- }
-
- if (buildArgumentsInfo.abldTargetArgs.trim().length() > 0) {
- rootStorage.setAttribute(BuildArgumentsInfo.ABLDTARGETARGSSTORAGE, buildArgumentsInfo.abldTargetArgs);
- }
-
- if (buildArgumentsInfo.abldFinalArgs.trim().length() > 0) {
- rootStorage.setAttribute(BuildArgumentsInfo.ABLDFINALARGSSTORAGE, buildArgumentsInfo.abldFinalArgs);
- }
-
- if (buildArgumentsInfo.abldCleanArgs.trim().length() > 0) {
- rootStorage.setAttribute(BuildArgumentsInfo.ABLDCLEANARGSSTORAGE, buildArgumentsInfo.abldCleanArgs);
- }
-
- if (buildArgumentsInfo.abldFreezeArgs.trim().length() > 0) {
- rootStorage.setAttribute(BuildArgumentsInfo.ABLDFREEZEARGSSTORAGE, buildArgumentsInfo.abldFreezeArgs);
+ // Save build context specific settings.
+ this.getBuildContext().saveConfigurationSettings(rootStorage, getBuildContext());
}
}
@@ -255,7 +143,8 @@
try {
ICProjectDescription projDes = CoreModel.getDefault().getProjectDescription(projectTracker.getProject());
if (projDes != null) {
- ICConfigurationDescription configDes = projDes.getConfigurationById(getDisplayString());
+
+ ICConfigurationDescription configDes = projDes.getConfigurationById(getBuildContext().getConfigurationID());
if (configDes != null) {
// save the CDT project description. this saves all configs but that's the
// only thing CDT allows at this point.
@@ -270,7 +159,7 @@
return false;
}
-
+
public List<ISISBuilderInfo> getSISBuilderInfoList() {
return sisBuilderInfoList;
}
@@ -289,53 +178,32 @@
}
}
- public int getErrorParserId(){
+ private int getErrorParserId(){
String plat = this.getPlatformString();
- if (this.getSBSv2Alias() != null && this.getSBSv2Alias().toUpperCase().contains(ISymbianBuildContext.GCCE_PLATFORM)){
- return ERROR_PARSERS_GCCE;
- }
-
- if (plat.equals(ISymbianBuildContext.EMULATOR_PLATFORM)){
- return ERROR_PARSERS_WINSCW;
- } else if (plat.startsWith("ARMV")){
- return ERROR_PARSERS_ARMVx;
- } else if (plat.equals(ISymbianBuildContext.GCCE_PLATFORM)){
- return ERROR_PARSERS_GCCE;
+ if (context instanceof ISBSv2BuildContext){
+ String toolChain = ((ISBSv2BuildContext)context).getToolChain();
+ if (toolChain.equalsIgnoreCase(ISBSv2BuildContext.TOOLCHAIN_ARM)){
+ return ERROR_PARSERS_ARMVx;
+ } else if (toolChain.equalsIgnoreCase(ISBSv2BuildContext.TOOLCHAIN_GCCE)){
+ return ERROR_PARSERS_GCCE;
+ } else if (toolChain.equalsIgnoreCase(ISBSv2BuildContext.TOOLCHAIN_WINSCW)){
+ return ERROR_PARSERS_WINSCW;
+ }
+ } else {
+ // SBSV1
+ if (plat.equals(ISBSv1BuildContext.EMULATOR_PLATFORM)){
+ return ERROR_PARSERS_WINSCW;
+ } else if (plat.startsWith("ARMV")){
+ return ERROR_PARSERS_ARMVx;
+ } else if (plat.equals(ISBSv1BuildContext.GCCE_PLATFORM)){
+ return ERROR_PARSERS_GCCE;
+ }
}
return ERROR_PARSERS_ALL;
}
- public List<String> getBuiltinMacros() {
- List<String> macros = new ArrayList<String>();
-
- if (CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(getCarbideProject().getProject())){
- macros.add("SBSV2"); //$NON-NLS-1$
- }
-
- // add the macros that should always be defined
- macros.add("__SYMBIAN32__"); //$NON-NLS-1$
- macros.add("_UNICODE"); //$NON-NLS-1$
-
- ISymbianSDK sdk = getSDK();
- if (sdk != null && sdk.getOSVersion().getMajor() >= 9) {
- macros.add("__SUPPORT_CPP_EXCEPTIONS__"); //$NON-NLS-1$
- }
-
- if (getTargetString().equals(DEBUG_TARGET)) {
- macros.add("_DEBUG"); //$NON-NLS-1$
- } else {
- macros.add("NDEBUG"); //$NON-NLS-1$
- }
-
- if (hasSTDCPPSupport()){
- macros.add("__SYMBIAN_STDCPP_SUPPORT__");
- }
-
- return macros;
- }
-
public CConfigurationData getBuildConfigurationData() {
return buildConfigData;
}
@@ -358,7 +226,7 @@
public static String toMarkedConfig(String config) {
if (config == null)
return null;
- if (SDKManagerInternalAPI.getMissingSdk(SymbianBuildContext.getSDKIDFromConfigName(config)) != null) {
+ if (SDKManagerInternalAPI.getMissingSdk(BuildContextSBSv1.getSDKIDFromConfigName(config)) != null) {
return badSdkString() + config;
}
return config;
@@ -374,34 +242,63 @@
return config;
}
- public IBuildArgumentsInfo getBuildArgumentsInfo() {
- return (IBuildArgumentsInfo)buildArgumentsInfo;
+ public IPath getTargetOutputDirectory() {
+ if (context instanceof ISBSv2BuildContext){
+ if (((ISBSv2BuildContext) context).getConfigQueryData() != null){
+ return new Path(((ISBSv2BuildContext)context).getConfigQueryData().getOutputPathString());
+ } else {
+ return new Path("/" + SBSv2QueryUtils.BAD_EPOCROOT);
+ }
+ } else {
+ ISymbianSDK sdk = getSDK();
+ ISBSv1BuildContext v1Context = (ISBSv1BuildContext)context;
+ ISBSv1BuildInfo sbsv1BuildInfo = (ISBSv1BuildInfo)sdk.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER);
+ String releasePlatform = sbsv1BuildInfo.getBSFCatalog().getReleasePlatform(v1Context.getBasePlatformForVariation());
+ return sdk.getReleaseRoot().append(releasePlatform.toLowerCase()).append(getTargetString().toLowerCase());
+ }
+ }
+
+ public boolean getRebuildNeeded() {
+ return rebuildNeeded;
}
- public BuildArgumentsInfo getBuildArgumentsInfoCopy() {
- return new BuildArgumentsInfo(buildArgumentsInfo);
- }
-
- public void setBuildArgumentsInfo(BuildArgumentsInfo buildArgumentsInfo) {
- this.buildArgumentsInfo = buildArgumentsInfo;
+ public void setRebuildNeeded(boolean value) {
+ rebuildNeeded = value;
}
- public IROMBuilderInfo getROMBuildInfo() {
- return romBuilderInfo;
+ public ISymbianSDK getSDK() {
+ return context.getSDK();
+ }
+
+ public String getPlatformString() {
+ return context.getPlatformString();
+ }
+
+ public String getTargetString() {
+ return context.getTargetString();
}
- public ISBSv2BuildConfigInfo getSBSv2BuildConfigInfo(){
- return sbsv2BuilderInfo;
+ public String getDisplayString() {
+ return context.getDisplayString();
}
- private boolean hasSTDCPPSupport() {
+ public ISymbianBuildContext getBuildContext() {
+ return context;
+ }
+
+ /**
+ * Check that at least one MMP in the project configuration has stdcpp support keyword
+ * @return
+ * @since 3.0
+ */
+ public boolean hasSTDCPPSupport() {
- ICarbideProjectInfo cpi = getCarbideProject();
+ ICarbideProjectInfo cpi = this.getCarbideProject();
List<ISymbianBuildContext> buildConfig = new ArrayList<ISymbianBuildContext>();
List<IPath> normalMakMakePaths = new ArrayList<IPath>();
List<IPath> testMakMakePaths = new ArrayList<IPath>();
- buildConfig.add(this);
+ buildConfig.add(this.getBuildContext());
EpocEngineHelper.getMakMakeFiles(cpi.getAbsoluteBldInfPath(), buildConfig, normalMakMakePaths, testMakMakePaths, new NullProgressMonitor());
for (IPath mmpPath : normalMakMakePaths){
@@ -413,28 +310,17 @@
return false;
}
- public ISBSv2BuildConfigInfo getSBSv2ConfigInfo() {
- return sbsv2BuilderInfo;
- }
-
- public IPath getTargetOutputDirectory() {
- String releasePlatform = getSDK().getBSFCatalog().getReleasePlatform(getBasePlatformForVariation());
- if (CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(getCarbideProject().getProject())){
- // Test is this is an SBSv2 build binary variant (changes the output directory)
- ISBSv2BuildConfigInfo sbsv2Info = getSBSv2BuildConfigInfo();
- if ( sbsv2Info != null && SBSv2Utils.getVariantOutputDirModifier(sbsv2Info.getSBSv2Setting(ISBSv2BuildConfigInfo.ATTRIB_SBSV2_VARIANT)) != null && !releasePlatform.contains(".") ){
- releasePlatform = releasePlatform + SBSv2Utils.getVariantOutputDirModifier(sbsv2Info.getSBSv2Setting(ISBSv2BuildConfigInfo.ATTRIB_SBSV2_VARIANT));
- }
- }
- return getSDK().getReleaseRoot().append(releasePlatform.toLowerCase()).append(getTargetString().toLowerCase());
- }
-
- public boolean getRebuildNeeded() {
- return rebuildNeeded;
- }
-
- public void setRebuildNeeded(boolean value) {
- rebuildNeeded = value;
+ public List<IDefine> getCompileTimeMacros() {
+
+ List<IDefine> defines = new ArrayList<IDefine>();
+
+ defines.addAll(context.getBuildMacros());
+ defines.addAll(context.getCompilerPreincludeDefines());
+ defines.addAll(context.getVariantHRHDefines());
+ defines.addAll(context.getMetadataMacros());
+
+ return defines;
+
}
}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideBuildManager.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideBuildManager.java Wed Aug 25 12:42:09 2010 -0500
@@ -46,9 +46,11 @@
import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
import com.nokia.carbide.cdt.builder.EpocEngineHelper;
import com.nokia.carbide.cdt.builder.ICarbideBuildManager;
+import com.nokia.carbide.cdt.builder.extension.ICarbidePrefsModifier;
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.internal.api.builder.ui.CarbidePrefsModifier;
import com.nokia.carbide.cpp.sdk.core.ICarbideInstalledSDKChangeListener;
import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
import com.nokia.cpp.internal.api.utils.core.FileUtils;
@@ -70,9 +72,15 @@
private Map<IProject, ICarbideProjectInfo> projectInfoMap = new HashMap<IProject, ICarbideProjectInfo>();
private MultiResourceChangeListenerDispatcher resourceChangedListener = new MultiResourceChangeListenerDispatcher();
+ ICarbidePrefsModifier clientPrefsModifier;
+
public CarbideBuildManager() {
SDKCorePlugin.getSDKManager().addInstalledSdkChangeListener(this);
+
+ if (clientPrefsModifier == null){
+ clientPrefsModifier = new CarbidePrefsModifier();
+ }
}
public boolean isCarbideProject(IProject project) {
@@ -389,20 +397,27 @@
CarbideBuilderPlugin.getDefault().getPreferenceStore().setValue(CONVERTED_SRC_MAPPINGS_2X_TO_3X, true);
}
- synchronized(projectInfoMap){
- for (IProject currPrj : projectInfoMap.keySet()){
- try {
- ICProjectDescription projDes = CoreModel.getDefault().getProjectDescription(currPrj);
- if (projDes != null) {
- CCorePlugin.getDefault().setProjectDescription(currPrj, projDes, true, null);
- }
- } catch (CoreException e) {
- e.printStackTrace();
- CarbideBuilderPlugin.log(e);
- }
- }
- }
+ // TODO: This is causing deadlocks with the indexer and generally when other project info is being retrieved
+ // Need to consider what this is actually doing and why it even needs to be here.
+
+// synchronized(projectInfoMap){
+// for (IProject currPrj : projectInfoMap.keySet()){
+// try {
+// ICProjectDescription projDes = CoreModel.getDefault().getProjectDescription(currPrj);
+// if (projDes != null) {
+// CCorePlugin.getDefault().setProjectDescription(currPrj, projDes, true, null);
+// }
+// } catch (CoreException e) {
+// e.printStackTrace();
+// CarbideBuilderPlugin.log(e);
+// }
+// }
+// }
}
}
+
+ public ICarbidePrefsModifier getPrefsModifier(){
+ return clientPrefsModifier;
+ }
}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideLanguageData.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideLanguageData.java Wed Aug 25 12:42:09 2010 -0500
@@ -17,25 +17,46 @@
package com.nokia.carbide.cdt.internal.builder;
import java.io.File;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Set;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.model.CoreModel;
-import org.eclipse.cdt.core.settings.model.*;
+import org.eclipse.cdt.core.settings.model.CIncludePathEntry;
+import org.eclipse.cdt.core.settings.model.CMacroEntry;
+import org.eclipse.cdt.core.settings.model.CMacroFileEntry;
+import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
+import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
+import org.eclipse.cdt.core.settings.model.ICProjectDescription;
+import org.eclipse.cdt.core.settings.model.ICSettingEntry;
+import org.eclipse.cdt.core.settings.model.ICStorageElement;
import org.eclipse.cdt.core.settings.model.extension.CLanguageData;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ProjectScope;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.content.*;
-import org.eclipse.swt.widgets.Display;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.content.IContentType;
+import org.eclipse.core.runtime.content.IContentTypeManager;
+import org.eclipse.core.runtime.content.IContentTypeSettings;
import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
import com.nokia.carbide.cdt.builder.EpocEngineHelper;
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cpp.epoc.engine.model.sbv.ISBVView;
import com.nokia.carbide.cpp.epoc.engine.preprocessor.IDefine;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildInfo;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildContext;
import com.nokia.carbide.cpp.sdk.core.IBSFPlatform;
import com.nokia.carbide.cpp.sdk.core.ISBVPlatform;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
import com.nokia.cpp.internal.api.utils.core.FileUtils;
import com.nokia.cpp.internal.api.utils.core.TextUtils;
/**
@@ -132,11 +153,11 @@
Set<ICLanguageSettingEntry> macros = new HashSet<ICLanguageSettingEntry>();
macros.addAll(macroEntries);
- for (IDefine define : carbideBuildConfig.getVariantHRHDefines()) {
+ for (IDefine define : carbideBuildConfig.getBuildContext().getVariantHRHDefines()) {
macros.add(new CMacroEntry(define.getNameAndArguments(), define.getExpansion(), 0));
}
- for (IDefine define : carbideBuildConfig.getCompilerMacros()) {
+ for (IDefine define : carbideBuildConfig.getBuildContext().getCompilerPreincludeDefines()) {
macros.add(new CMacroEntry(define.getNameAndArguments(), define.getExpansion(), 0));
}
@@ -174,10 +195,18 @@
CarbideProjectInfo cpi = (CarbideProjectInfo)carbideBuildConfig.getCarbideProject();
IProject project = cpi.getProject();
+ ISymbianSDK sdk = carbideBuildConfig.getSDK();
+ ISymbianBuildContext context = carbideBuildConfig.getBuildContext();
// add platform includes first
- IBSFPlatform platform = carbideBuildConfig.getSDK().getBSFCatalog().findPlatform(carbideBuildConfig.getPlatformString());
- ISBVPlatform sbvPlat = carbideBuildConfig.getSDK().getSBVCatalog().findPlatform(carbideBuildConfig.getPlatformString());
+ IBSFPlatform platform = null;
+ ISBVPlatform sbvPlat = null;
+ if (context instanceof ISBSv1BuildContext) {
+ // SBSv1 only
+ ISBSv1BuildInfo sbsv1BuildInfo = (ISBSv1BuildInfo)sdk.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER);
+ platform = sbsv1BuildInfo.getBSFCatalog().findPlatform(carbideBuildConfig.getPlatformString());
+ sbvPlat = sbsv1BuildInfo.getSBVCatalog().findPlatform(carbideBuildConfig.getPlatformString());
+ }
if (platform != null) {
IPath[] systemIncludePaths = platform.getSystemIncludePaths();
for (IPath path : systemIncludePaths) {
@@ -212,6 +241,28 @@
includeEntries.add(new CIncludePathEntry(incPath, ICSettingEntry.LOCAL));
}
}
+
+ if (context instanceof ISBSv2BuildContext) {
+ // SBSv2 only system includes
+ if (((ISBSv2BuildContext)context).getSystemIncludes() != null){
+
+ for (IPath incPath : ((ISBSv2BuildContext)context).getSystemIncludes()) {
+ IPath projRelIncPath = FileUtils.removePrefixFromPath(projectPath, incPath);
+ if (projRelIncPath != null) {
+ includeEntries.add(new CIncludePathEntry(projectPath.append(projRelIncPath), 0));
+ } else {
+ includeEntries.add(new CIncludePathEntry(incPath, 0));
+ }
+
+ // remove duplicate system includes
+ File inc = incPath.toFile();
+ if (systemIncludes.contains(inc)) {
+ systemIncludes.remove(inc);
+ }
+ }
+ }
+ }
+
for (File inc : systemIncludes) {
// convert the absolute path to project relative if possible
IPath incPath = new Path(inc.toString());
@@ -224,8 +275,11 @@
}
// add OEM dir
- File oemDir = carbideBuildConfig.getSDK().getIncludePath().append("oem").toFile();
- if (oemDir.exists()) {
+ File oemDir = null;
+ if (sdk.getIncludePath() != null){
+ oemDir = sdk.getIncludePath().append("oem").toFile();
+ }
+ if (oemDir != null && oemDir.exists()) {
includeEntries.add(new CIncludePathEntry(new Path(oemDir.getAbsolutePath()), 0));
}
@@ -233,59 +287,31 @@
macroEntries = new ArrayList<ICLanguageSettingEntry>(0);
lastUseMMPMacrosValue = cpi.shouldUseMMPMacros();
-
- Map<String, String> macros = new HashMap<String, String>();
-
- // platform macros
- for (String platMacro : carbideBuildConfig.getSDK().getPlatformMacros(carbideBuildConfig.getPlatformString())) {
- macros.put("__" + platMacro + "__", ""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
-
- // built in macros
- for (String builtinMacro : carbideBuildConfig.getBuiltinMacros()) {
- macros.put(builtinMacro, ""); //$NON-NLS-1$
- }
-
- // vendor macros (e.g. __SERIES60_3x__)
- for (String builtinMacro : carbideBuildConfig.getSDK().getVendorSDKMacros()) {
- macros.put(builtinMacro, ""); //$NON-NLS-1$
- }
-
- // target type macros (e.g. __DLL__)
- List<String> targetTypes = EpocEngineHelper.getTargetTypesForBuildConfiguration(carbideBuildConfig);
- // only add these if there is one target type. this is the case when there is only one mmp file, or
- // more than one but all have the same target type macro. it wouldn't make sense to add different
- // target type macros like __EXE__ and __DLL__.
- if (targetTypes.size() == 1) {
- for (String targetTypeMacro : carbideBuildConfig.getSDK().getTargetTypeMacros(targetTypes.get(0))) {
- macros.put(targetTypeMacro, ""); //$NON-NLS-1$
- }
- }
// get the list of all mmp files selected for the build configuration
// a null buildComponents list means all MMPs are included - so leave it null when indexing all files
List<String> buildComponents = null;
if (!EpocEngineHelper.getIndexAllPreference())
buildComponents = carbideBuildConfig.getCarbideProject().isBuildingFromInf() ? null : carbideBuildConfig.getCarbideProject().getInfBuildComponents();
-
- // if the pref option is enabled, then check the mmp's for MACRO's.
- if (cpi.shouldUseMMPMacros()) {
- List<IPath> mmps = EpocEngineHelper.getMMPFilesForBuildConfiguration(carbideBuildConfig);
- for (IPath mmp : mmps) {
- if (buildComponents != null && !TextUtils.listContainsIgnoreCase(buildComponents, mmp.lastSegment()))
- continue;
-
- List<String> mmpMacros = EpocEngineHelper.getMMPMacrosForBuildConfiguration(mmp, carbideBuildConfig);
- for (String mmpMacro : mmpMacros) {
- // Symbian docs say they are converted to upper case always
- macros.put(mmpMacro.toUpperCase(), ""); //$NON-NLS-1$
+
+ List<IPath> mmpFiles = null;
+ List<IDefine> projectDefines = new ArrayList<IDefine>();
+ if (buildComponents != null){
+ // Get the list of mmp files we are building so we only get those macros
+ List<IPath> tmpMMPFiles = EpocEngineHelper.getMMPFilesForBuildConfiguration(carbideBuildConfig);
+ mmpFiles = new ArrayList<IPath>();
+ for (IPath mmp : tmpMMPFiles){
+ if (TextUtils.listContainsIgnoreCase(buildComponents, mmp.lastSegment())){
+ mmpFiles.add(mmp);
}
}
- }
-
+ }
+
+ projectDefines = EpocEngineHelper.getGlobalDefinesForConfiguration(carbideBuildConfig, mmpFiles);
+
// now create the path entries for the macros
- for (String macro : macros.keySet()) {
- macroEntries.add(new CMacroEntry(macro, macros.get(macro), 0));
+ for (IDefine define : projectDefines) {
+ macroEntries.add(new CMacroEntry(define.getName(), define.getExpansion(), 0));
}
// get the list of files the engine references when parsing the bld.inf and mmp files
@@ -306,7 +332,7 @@
// the cache.
cacheTimestamp = System.currentTimeMillis();
}
-
+
private void persistCache() {
// persist the cache between IDE launches.
try {
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideProjectInfo.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideProjectInfo.java Wed Aug 25 12:42:09 2010 -0500
@@ -24,6 +24,7 @@
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.cdt.core.settings.model.ICStorageElement;
import org.eclipse.cdt.core.settings.model.extension.CConfigurationData;
+import org.eclipse.cdt.internal.core.settings.model.CProjectDescriptionManager;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
@@ -302,6 +303,10 @@
ICConfigurationDescription config = projectDescription.getActiveConfiguration();
if (config != null) {
CConfigurationData data = config.getConfigurationData();
+ if (data == null){
+ ICConfigurationDescription[] config2 = projectDescription.getConfigurations();
+ data = config2[0].getConfigurationData();
+ }
if (data instanceof BuildConfigurationData) {
return ((BuildConfigurationData)data).getConfiguration();
}
@@ -322,6 +327,9 @@
}
public IPath getAbsoluteBldInfPath(){
+ if (projectRelativeBldInfPath.isAbsolute()){
+ return projectRelativeBldInfPath;
+ }
return CarbideBuilderPlugin.getProjectRoot(projectTracker.getProject()).append(projectRelativeBldInfPath);
}
@@ -330,13 +338,11 @@
}
public IPath getWorkspaceRelativeBldInfPath(){
+ if (projectRelativeBldInfPath.isAbsolute()){
+ return projectRelativeBldInfPath;
+ }
return new Path(projectTracker.getProject().getName()).append(projectRelativeBldInfPath);
}
-
- public String getMMPTargetFile(){
- // now deprecated in 1.3
- return "";
- }
public IProject getProject(){
return projectTracker.getProject();
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideProjectModifier.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideProjectModifier.java Wed Aug 25 12:42:09 2010 -0500
@@ -16,22 +16,32 @@
*/
package com.nokia.carbide.cdt.internal.builder;
+import java.util.ArrayList;
+
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.model.ICProject;
+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.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Plugin;
+
import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectModifier;
import com.nokia.carbide.cdt.internal.api.builder.CarbideConfigurationDataProvider;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildContext;
import com.nokia.carbide.cpp.internal.api.sdk.SymbianBuildContextDataCache;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
import com.nokia.cpp.internal.api.utils.core.Logging;
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.model.CoreModel;
-import org.eclipse.cdt.core.model.ICProject;
-import org.eclipse.cdt.core.settings.model.*;
-import org.eclipse.core.runtime.*;
-
-import java.util.ArrayList;
-
public class CarbideProjectModifier extends CarbideProjectInfo implements ICarbideProjectModifier {
// need to make all changes to the same description and save it
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideSBSv1Builder.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideSBSv1Builder.java Wed Aug 25 12:42:09 2010 -0500
@@ -16,35 +16,77 @@
*/
package com.nokia.carbide.cdt.internal.builder;
-import java.io.*;
-import java.util.*;
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileFilter;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.RandomAccessFile;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
-import org.eclipse.cdt.make.core.makefile.*;
+import org.eclipse.cdt.make.core.makefile.ICommand;
+import org.eclipse.cdt.make.core.makefile.IMacroDefinition;
+import org.eclipse.cdt.make.core.makefile.IRule;
+import org.eclipse.cdt.make.core.makefile.ITargetRule;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.*;
-import org.eclipse.jface.dialogs.*;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.*;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
-import com.nokia.carbide.cdt.builder.*;
+import com.nokia.carbide.cdt.builder.BuilderPreferenceConstants;
+import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
+import com.nokia.carbide.cdt.builder.DefaultGNUMakefileViewConfiguration;
+import com.nokia.carbide.cdt.builder.DefaultMMPViewConfiguration;
+import com.nokia.carbide.cdt.builder.DefaultViewConfiguration;
+import com.nokia.carbide.cdt.builder.EpocEngineHelper;
+import com.nokia.carbide.cdt.builder.EpocEnginePathHelper;
import com.nokia.carbide.cdt.builder.builder.CarbideCPPBuilder;
import com.nokia.carbide.cdt.builder.builder.CarbideCommandLauncher;
-import com.nokia.carbide.cdt.builder.project.*;
+import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
+import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
import com.nokia.carbide.cdt.internal.builder.ui.MMPChangedActionDialog;
+import com.nokia.carbide.cdt.internal.builder.ui.MMPChangedActionDialog.MMPChangedAction;
import com.nokia.carbide.cdt.internal.builder.ui.TrackDependenciesQueryDialog;
-import com.nokia.carbide.cdt.internal.builder.ui.MMPChangedActionDialog.MMPChangedAction;
-import com.nokia.carbide.cpp.epoc.engine.*;
+import com.nokia.carbide.cpp.epoc.engine.BldInfViewRunnableAdapter;
+import com.nokia.carbide.cpp.epoc.engine.EpocEnginePlugin;
+import com.nokia.carbide.cpp.epoc.engine.MMPDataRunnableAdapter;
import com.nokia.carbide.cpp.epoc.engine.model.IModel;
import com.nokia.carbide.cpp.epoc.engine.model.IModelProvider;
import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IBldInfView;
import com.nokia.carbide.cpp.epoc.engine.model.makefile.IMakefileView;
-import com.nokia.carbide.cpp.epoc.engine.model.mmp.*;
+import com.nokia.carbide.cpp.epoc.engine.model.mmp.EMMPLanguage;
+import com.nokia.carbide.cpp.epoc.engine.model.mmp.EMMPStatement;
+import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPData;
+import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPResource;
import com.nokia.carbide.cpp.epoc.engine.preprocessor.AcceptedNodesViewFilter;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildInfo;
import com.nokia.carbide.cpp.internal.qt.core.QtCorePlugin;
-import com.nokia.carbide.cpp.sdk.core.*;
+import com.nokia.carbide.cpp.sdk.core.IBSFPlatform;
+import com.nokia.carbide.cpp.sdk.core.ISBVPlatform;
+import com.nokia.carbide.cpp.sdk.core.ISDKBuildInfo;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
import com.nokia.cpp.internal.api.utils.core.FileUtils;
import com.nokia.cpp.internal.api.utils.core.HostOS;
import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils;
@@ -98,14 +140,18 @@
areWeManagingTheMakeFiles = shouldManageMakeFiles(buildConfig);
// if variant BSF, let them know the other platforms that will be built as a result
- IBSFPlatform[] bsfPlatforms = buildConfig.getSDK().getBSFCatalog().getAdditionalBuiltPlatforms(buildConfig.getPlatformString());
- if (bsfPlatforms.length > 0) {
- String plats = "";
- for (IBSFPlatform plat : bsfPlatforms) {
- plats = ", " + plat.getName();
+ ISymbianSDK sdk = buildConfig.getSDK();
+ ISBSv1BuildInfo sbsv1BuildInfo = (ISBSv1BuildInfo)sdk.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER);
+ if (sbsv1BuildInfo != null) {
+ IBSFPlatform[] bsfPlatforms = sbsv1BuildInfo.getBSFCatalog().getAdditionalBuiltPlatforms(buildConfig.getPlatformString());
+ if (bsfPlatforms.length > 0) {
+ String plats = "";
+ for (IBSFPlatform plat : bsfPlatforms) {
+ plats = ", " + plat.getName();
+ }
+ plats = plats.replaceFirst(", ", "");
+ launcher.writeToConsole("\n***Additionally built platforms: " + plats + "\n");
}
- plats = plats.replaceFirst(", ", "");
- launcher.writeToConsole("\n***Additionally built platforms: " + plats + "\n");
}
}
@@ -116,18 +162,20 @@
public boolean buildComponent(ICarbideBuildConfiguration buildConfig, IPath componentPath, boolean isTest, CarbideCommandLauncher launcher, IProgressMonitor monitor) {
areWeManagingTheMakeFiles = shouldManageMakeFiles(buildConfig);
-
+ ISBSv1BuildContext sbsv1Context = (ISBSv1BuildContext)buildConfig.getBuildContext();
+
+
if (!CarbideCPPBuilder.generateBldmakeMakefilesIfNecessary(buildConfig, launcher)) {
return false;
}
String componentName = componentPath.removeFileExtension().lastSegment();
String buildPlatform = "";
- if ( buildConfig.getPlatformString().startsWith(ISymbianBuildContext.ARMV5_PLATFORM) &&
+ if ( buildConfig.getPlatformString().startsWith(ISBSv1BuildContext.ARMV5_PLATFORM) &&
EpocEngineHelper.hasFeatureVariantKeyword(buildConfig.getCarbideProject(), componentPath)){
buildPlatform = buildConfig.getPlatformString().toLowerCase();
- } else {
- buildPlatform = buildConfig.getBasePlatformForVariation().toLowerCase();
+ } else if (buildConfig.getBuildContext() instanceof ISBSv1BuildContext) {
+ buildPlatform = ((ISBSv1BuildContext)buildConfig.getBuildContext()).getBasePlatformForVariation().toLowerCase();
}
// need to run individual build steps when managing makefiles or doing concurrent builds
@@ -143,7 +191,7 @@
}
args.add(EXPORT_CMD);
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldExportArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldExportArgs().split(" ")) {
args.add(arg);
}
@@ -179,7 +227,7 @@
args.add(buildPlatform);
args.add(componentName);
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldLibraryArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldLibraryArgs().split(" ")) {
args.add(arg);
}
@@ -203,7 +251,7 @@
args.add(buildConfig.getTargetString().toLowerCase());
args.add(componentName);
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldResourceArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldResourceArgs().split(" ")) {
args.add(arg);
}
@@ -227,7 +275,7 @@
args.add(buildConfig.getTargetString().toLowerCase());
args.add(componentName);
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldTargetArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldTargetArgs().split(" ")) {
args.add(arg);
}
@@ -250,7 +298,7 @@
args.add(buildConfig.getTargetString().toLowerCase());
args.add(componentName);
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldFinalArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldFinalArgs().split(" ")) {
args.add(arg);
}
@@ -276,7 +324,7 @@
argsList.add(buildConfig.getTargetString().toLowerCase());
argsList.add(componentName);
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldBuildArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldBuildArgs().split(" ")) {
argsList.add(arg);
}
@@ -298,18 +346,19 @@
public boolean cleanComponent(ICarbideBuildConfiguration buildConfig, IPath componentPath, boolean isTest, CarbideCommandLauncher launcher, IProgressMonitor monitor) {
areWeManagingTheMakeFiles = shouldManageMakeFiles(buildConfig);
-
+ ISBSv1BuildContext sbsv1Context = (ISBSv1BuildContext)buildConfig.getBuildContext();
+
if (!CarbideCPPBuilder.generateBldmakeMakefilesIfNecessary(buildConfig, launcher)) {
return false;
}
String componentName = componentPath.removeFileExtension().lastSegment();
String buildPlatform = "";
- if ( buildConfig.getPlatformString().startsWith(ISymbianBuildContext.ARMV5_PLATFORM) &&
+ if ( buildConfig.getPlatformString().startsWith(ISBSv1BuildContext.ARMV5_PLATFORM) &&
EpocEngineHelper.hasFeatureVariantKeyword(buildConfig.getCarbideProject(), componentPath)){
buildPlatform = buildConfig.getPlatformString().toLowerCase();
- } else {
- buildPlatform = buildConfig.getBasePlatformForVariation().toLowerCase();
+ } else if (buildConfig.getBuildContext() instanceof ISBSv1BuildContext) {
+ buildPlatform = ((ISBSv1BuildContext)buildConfig).getBasePlatformForVariation().toLowerCase();
}
SubMonitor progress = SubMonitor.convert(monitor, 2);
@@ -340,7 +389,7 @@
argsList.add(buildConfig.getTargetString().toLowerCase());
argsList.add(componentName);
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldCleanArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldCleanArgs().split(" ")) {
argsList.add(arg);
}
@@ -361,18 +410,19 @@
public boolean freezeComponent(ICarbideBuildConfiguration buildConfig, IPath componentPath, boolean isTest, CarbideCommandLauncher launcher, IProgressMonitor monitor) {
areWeManagingTheMakeFiles = shouldManageMakeFiles(buildConfig);
-
+ ISBSv1BuildContext sbsv1Context = (ISBSv1BuildContext)buildConfig.getBuildContext();
+
if (!CarbideCPPBuilder.generateBldmakeMakefilesIfNecessary(buildConfig, launcher)) {
return false;
}
String componentName = componentPath.removeFileExtension().lastSegment();
String buildPlatform = "";
- if ( buildConfig.getPlatformString().startsWith(ISymbianBuildContext.ARMV5_PLATFORM) &&
+ if ( buildConfig.getPlatformString().startsWith(ISBSv1BuildContext.ARMV5_PLATFORM) &&
EpocEngineHelper.hasFeatureVariantKeyword(buildConfig.getCarbideProject(), componentPath)){
buildPlatform = buildConfig.getPlatformString().toLowerCase();
- } else {
- buildPlatform = buildConfig.getBasePlatformForVariation().toLowerCase();
+ } else if (buildConfig.getBuildContext() instanceof ISBSv1BuildContext) {
+ buildPlatform = ((ISBSv1BuildContext)buildConfig).getBasePlatformForVariation().toLowerCase();
}
// run abld makefile platform for each component to be built if needed
@@ -393,7 +443,7 @@
argsList.add(buildPlatform);
argsList.add(componentName);
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldFreezeArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldFreezeArgs().split(" ")) {
argsList.add(arg);
}
@@ -425,7 +475,7 @@
}
List<ISymbianBuildContext> buildConfigList = new ArrayList<ISymbianBuildContext>(1);
- buildConfigList.add(buildConfig);
+ buildConfigList.add(buildConfig.getBuildContext());
List<IPath> normalMakMakePaths = new ArrayList<IPath>();
List<IPath> testMakMakePaths = new ArrayList<IPath>();
@@ -520,7 +570,7 @@
modelProvider.releaseSharedModel(model);
IPath objectDir = null;
- if ( buildConfig.getPlatformString().startsWith(ISymbianBuildContext.ARMV5_PLATFORM) &&
+ if ( buildConfig.getPlatformString().startsWith(ISBSv1BuildContext.ARMV5_PLATFORM) &&
EpocEngineHelper.hasFeatureVariantKeyword(cpi, fullMMPPath)){
// if symbian binary variation, then the object file dir will be in sub-directory with <md5>/udeb/<obj>
// The platform can only be a variant if the MMP file has FEATUREVARIANT keyword && The platform is ARMV5-based.
@@ -597,7 +647,7 @@
final List<IPath> rules = new ArrayList<IPath>();
EpocEnginePlugin.runWithMMPData(workspaceRelativeMMPPath,
- new DefaultMMPViewConfiguration(buildConfig.getCarbideProject().getProject(), buildConfig, new AcceptedNodesViewFilter()),
+ new DefaultMMPViewConfiguration(buildConfig.getCarbideProject().getProject(), buildConfig.getBuildContext(), new AcceptedNodesViewFilter()),
new MMPDataRunnableAdapter() {
public Object run(IMMPData mmpData) {
@@ -608,12 +658,8 @@
IPath targetP = new Path(targetPath).makeRelative().addTrailingSeparator();
targetPath = targetP.toOSString();
} else {
- // for EKA1 just leave empty. for EKA2 use sys\bin\
- if (buildConfig.getSDK().getOSVersion().getMajor() > 8) {
- targetPath = "sys\\bin\\"; //$NON-NLS-1$
- } else {
- targetPath = ""; //$NON-NLS-1$
- }
+ // for EKA2 use sys\bin\
+ targetPath = "sys\\bin\\"; //$NON-NLS-1$
}
String dataZDir = buildConfig.getSDK().getReleaseRoot().removeLastSegments(1).toOSString() + "\\Data\\z\\"; //$NON-NLS-1$
@@ -710,13 +756,14 @@
// add the following to the top of the the Deps_GenDependsL subroutine in makdeps.pm
String change = "\r\n\t# Carbide.c++ change. See CARBIDE_CHANGES.TXT for more details.\r\n\tif ($ENV{CARBIDE_NO_DEPENDENCIES}) {\r\n\t\treturn;\r\n\t}\r\n";
+ IPath toolsPath = sdk.getToolsPath();
boolean updated = false;
try {
- File mdFile = sdk.getToolsPath().append("makdeps.pm").toFile();
+ File mdFile = toolsPath.append("makdeps.pm").toFile();
RandomAccessFile makDepsFile = new RandomAccessFile(mdFile, "rw");
// back up the file first
- File backupFile = sdk.getToolsPath().append("makdeps.pmbak").toFile();
+ File backupFile = toolsPath.append("makdeps.pmbak").toFile();
if (backupFile.createNewFile()) {
FileUtils.copyFile(mdFile, backupFile);
}
@@ -753,7 +800,7 @@
}
// now create the CARBIDE_CHANGES.TXT file
- File ourFile = sdk.getToolsPath().append(CARBIDE_CHANGES_FILE).toFile();
+ File ourFile = toolsPath.append(CARBIDE_CHANGES_FILE).toFile();
try {
if (!ourFile.createNewFile()) {
return false;
@@ -781,6 +828,8 @@
public boolean buildAllComponents(ICarbideBuildConfiguration buildConfig, List<IPath> normalMakMakePaths, List<IPath> testMakMakePaths, CarbideCommandLauncher launcher, IProgressMonitor monitor) {
+ ISBSv1BuildContext sbsv1Context = (ISBSv1BuildContext)buildConfig.getBuildContext();
+
//TODO: do we really want to bail if abld returns an error? is this the keepgoing flag? see what the command line builds do.
// they bail on an individual build step, but keep building the other steps even if there's an error and keepgoing is not specified
@@ -811,7 +860,7 @@
argsList.add(buildConfig.getPlatformString().toLowerCase());
argsList.add(buildConfig.getTargetString().toLowerCase());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldBuildArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldBuildArgs().split(" ")) {
argsList.add(arg);
}
@@ -835,7 +884,7 @@
argsList.add(buildConfig.getPlatformString().toLowerCase());
argsList.add(buildConfig.getTargetString().toLowerCase());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldBuildArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldBuildArgs().split(" ")) {
argsList.add(arg);
}
@@ -881,7 +930,7 @@
List<String> args = new ArrayList<String>();
args.add(EXPORT_CMD);
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldExportArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldExportArgs().split(" ")) {
args.add(arg);
}
@@ -916,7 +965,7 @@
args.add(LIBRARY_CMD);
args.add(buildConfig.getPlatformString().toLowerCase());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldLibraryArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldLibraryArgs().split(" ")) {
args.add(arg);
}
@@ -936,7 +985,7 @@
args.add(buildConfig.getPlatformString().toLowerCase());
args.add(buildConfig.getTargetString().toLowerCase());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldResourceArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldResourceArgs().split(" ")) {
args.add(arg);
}
@@ -956,7 +1005,7 @@
args.add(buildConfig.getPlatformString().toLowerCase());
args.add(buildConfig.getTargetString().toLowerCase());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldTargetArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldTargetArgs().split(" ")) {
args.add(arg);
}
@@ -975,7 +1024,7 @@
args.add(buildConfig.getPlatformString().toLowerCase());
args.add(buildConfig.getTargetString().toLowerCase());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldFinalArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldFinalArgs().split(" ")) {
args.add(arg);
}
@@ -997,7 +1046,7 @@
args.add(TEST_CMD);
args.add(EXPORT_CMD);
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldExportArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldExportArgs().split(" ")) {
args.add(arg);
}
@@ -1020,7 +1069,7 @@
args.add(LIBRARY_CMD);
args.add(buildConfig.getPlatformString().toLowerCase());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldLibraryArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldLibraryArgs().split(" ")) {
args.add(arg);
}
@@ -1041,7 +1090,7 @@
args.add(buildConfig.getPlatformString().toLowerCase());
args.add(buildConfig.getTargetString().toLowerCase());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldResourceArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldResourceArgs().split(" ")) {
args.add(arg);
}
@@ -1062,7 +1111,7 @@
args.add(buildConfig.getPlatformString().toLowerCase());
args.add(buildConfig.getTargetString().toLowerCase());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldTargetArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldTargetArgs().split(" ")) {
args.add(arg);
}
@@ -1082,7 +1131,7 @@
args.add(buildConfig.getPlatformString().toLowerCase());
args.add(buildConfig.getTargetString().toLowerCase());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldFinalArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldFinalArgs().split(" ")) {
args.add(arg);
}
@@ -1101,6 +1150,8 @@
public boolean buildComponentSubset(ICarbideBuildConfiguration buildConfig, List<IPath> normalMakMakePaths, List<IPath> testMakMakePaths, CarbideCommandLauncher launcher, IProgressMonitor monitor) {
+ ISBSv1BuildContext sbsv1Context = (ISBSv1BuildContext)buildConfig.getBuildContext();
+
// need to run individual build steps when managing makefiles or doing concurrent builds
if (!areWeManagingTheMakeFiles && !buildConfig.getCarbideProject().isConcurrentBuildingEnabled()) {
// not using our dependency stuff. just call abld [test] build. note that we need
@@ -1123,13 +1174,13 @@
for (IPath path : normalMakMakePaths) {
String buildPlatform = "";
- if ( buildConfig.getPlatformString().startsWith(ISymbianBuildContext.ARMV5_PLATFORM) &&
+ if ( buildConfig.getPlatformString().startsWith(ISBSv1BuildContext.ARMV5_PLATFORM) &&
EpocEngineHelper.hasFeatureVariantKeyword(buildConfig.getCarbideProject(), path)) {
buildPlatform = buildConfig.getPlatformString().toLowerCase();
- } else {
- buildPlatform = buildConfig.getBasePlatformForVariation().toLowerCase();
+ } else if (buildConfig.getBuildContext() instanceof ISBSv1BuildContext) {
+ buildPlatform = ((ISBSv1BuildContext)buildConfig).getBasePlatformForVariation().toLowerCase();
}
List<String> argsList = new ArrayList<String>();
@@ -1138,7 +1189,7 @@
argsList.add(buildConfig.getTargetString().toLowerCase());
argsList.add(path.removeFileExtension().lastSegment());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldBuildArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldBuildArgs().split(" ")) {
argsList.add(arg);
}
@@ -1155,13 +1206,13 @@
for (IPath path : testMakMakePaths) {
String buildPlatform = "";
- if ( buildConfig.getPlatformString().startsWith(ISymbianBuildContext.ARMV5_PLATFORM) &&
+ if ( buildConfig.getPlatformString().startsWith(ISBSv1BuildContext.ARMV5_PLATFORM) &&
EpocEngineHelper.hasFeatureVariantKeyword(buildConfig.getCarbideProject(), path)) {
buildPlatform = buildConfig.getPlatformString().toLowerCase();
- } else {
- buildPlatform = buildConfig.getBasePlatformForVariation().toLowerCase();
+ } else if (buildConfig.getBuildContext() instanceof ISBSv1BuildContext) {
+ buildPlatform = ((ISBSv1BuildContext)buildConfig).getBasePlatformForVariation().toLowerCase();
}
List<String> argsList = new ArrayList<String>();
@@ -1171,7 +1222,7 @@
argsList.add(buildConfig.getTargetString().toLowerCase());
argsList.add(path.removeFileExtension().lastSegment());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldBuildArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldBuildArgs().split(" ")) {
argsList.add(arg);
}
@@ -1216,7 +1267,7 @@
List<String> argsList = new ArrayList<String>();
argsList.add(EXPORT_CMD);
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldExportArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldExportArgs().split(" ")) {
argsList.add(arg);
}
@@ -1250,13 +1301,13 @@
for (IPath path : normalMakMakePaths) {
String buildPlatform = "";
- if ( buildConfig.getPlatformString().startsWith(ISymbianBuildContext.ARMV5_PLATFORM) &&
+ if ( buildConfig.getPlatformString().startsWith(ISBSv1BuildContext.ARMV5_PLATFORM) &&
EpocEngineHelper.hasFeatureVariantKeyword(buildConfig.getCarbideProject(), path)) {
buildPlatform = buildConfig.getPlatformString().toLowerCase();
- } else {
- buildPlatform = buildConfig.getBasePlatformForVariation().toLowerCase();
+ } else if (buildConfig.getBuildContext() instanceof ISBSv1BuildContext) {
+ buildPlatform = ((ISBSv1BuildContext)buildConfig).getBasePlatformForVariation().toLowerCase();
}
argsList.clear();
@@ -1264,7 +1315,7 @@
argsList.add(buildPlatform);
argsList.add(path.removeFileExtension().lastSegment());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldLibraryArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldLibraryArgs().split(" ")) {
argsList.add(arg);
}
@@ -1282,13 +1333,13 @@
for (IPath path : normalMakMakePaths) {
String buildPlatform = "";
- if ( buildConfig.getPlatformString().startsWith(ISymbianBuildContext.ARMV5_PLATFORM) &&
+ if ( buildConfig.getPlatformString().startsWith(ISBSv1BuildContext.ARMV5_PLATFORM) &&
EpocEngineHelper.hasFeatureVariantKeyword(buildConfig.getCarbideProject(), path)) {
buildPlatform = buildConfig.getPlatformString().toLowerCase();
- } else {
- buildPlatform = buildConfig.getBasePlatformForVariation().toLowerCase();
+ } else if (buildConfig.getBuildContext() instanceof ISBSv1BuildContext) {
+ buildPlatform = ((ISBSv1BuildContext)buildConfig).getBasePlatformForVariation().toLowerCase();
}
argsList.clear();
@@ -1297,7 +1348,7 @@
argsList.add(buildConfig.getTargetString().toLowerCase());
argsList.add(path.removeFileExtension().lastSegment());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldResourceArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldResourceArgs().split(" ")) {
argsList.add(arg);
}
@@ -1315,13 +1366,13 @@
for (IPath path : normalMakMakePaths) {
String buildPlatform = "";
- if ( buildConfig.getPlatformString().startsWith(ISymbianBuildContext.ARMV5_PLATFORM) &&
+ if ( buildConfig.getPlatformString().startsWith(ISBSv1BuildContext.ARMV5_PLATFORM) &&
EpocEngineHelper.hasFeatureVariantKeyword(buildConfig.getCarbideProject(), path)) {
buildPlatform = buildConfig.getPlatformString().toLowerCase();
- } else {
- buildPlatform = buildConfig.getBasePlatformForVariation().toLowerCase();
+ } else if (buildConfig.getBuildContext() instanceof ISBSv1BuildContext) {
+ buildPlatform = ((ISBSv1BuildContext)buildConfig).getBasePlatformForVariation().toLowerCase();
}
argsList.clear();
@@ -1330,7 +1381,7 @@
argsList.add(buildConfig.getTargetString().toLowerCase());
argsList.add(path.removeFileExtension().lastSegment());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldTargetArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldTargetArgs().split(" ")) {
argsList.add(arg);
}
@@ -1346,13 +1397,13 @@
// run abld final platform target for each component
for (IPath path : normalMakMakePaths) {
String buildPlatform = "";
- if ( buildConfig.getPlatformString().startsWith(ISymbianBuildContext.ARMV5_PLATFORM) &&
+ if ( buildConfig.getPlatformString().startsWith(ISBSv1BuildContext.ARMV5_PLATFORM) &&
EpocEngineHelper.hasFeatureVariantKeyword(buildConfig.getCarbideProject(), path)) {
buildPlatform = buildConfig.getPlatformString().toLowerCase();
- } else {
- buildPlatform = buildConfig.getBasePlatformForVariation().toLowerCase();
+ } else if (buildConfig.getBuildContext() instanceof ISBSv1BuildContext) {
+ buildPlatform = ((ISBSv1BuildContext)buildConfig).getBasePlatformForVariation().toLowerCase();
}
argsList.clear();
@@ -1361,7 +1412,7 @@
argsList.add(buildConfig.getTargetString().toLowerCase());
argsList.add(path.removeFileExtension().lastSegment());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldFinalArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldFinalArgs().split(" ")) {
argsList.add(arg);
}
@@ -1380,7 +1431,7 @@
argsList.add(TEST_CMD);
argsList.add(EXPORT_CMD);
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldExportArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldExportArgs().split(" ")) {
argsList.add(arg);
}
@@ -1400,13 +1451,13 @@
for (IPath path : testMakMakePaths) {
String buildPlatform = "";
- if ( buildConfig.getPlatformString().startsWith(ISymbianBuildContext.ARMV5_PLATFORM) &&
+ if ( buildConfig.getPlatformString().startsWith(ISBSv1BuildContext.ARMV5_PLATFORM) &&
EpocEngineHelper.hasFeatureVariantKeyword(buildConfig.getCarbideProject(), path)) {
buildPlatform = buildConfig.getPlatformString().toLowerCase();
- } else {
- buildPlatform = buildConfig.getBasePlatformForVariation().toLowerCase();
+ } else if (buildConfig.getBuildContext() instanceof ISBSv1BuildContext) {
+ buildPlatform = ((ISBSv1BuildContext)buildConfig).getBasePlatformForVariation().toLowerCase();
}
argsList.clear();
@@ -1415,7 +1466,7 @@
argsList.add(buildPlatform);
argsList.add(path.removeFileExtension().lastSegment());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldLibraryArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldLibraryArgs().split(" ")) {
argsList.add(arg);
}
@@ -1433,13 +1484,13 @@
for (IPath path : testMakMakePaths) {
String buildPlatform = "";
- if ( buildConfig.getPlatformString().startsWith(ISymbianBuildContext.ARMV5_PLATFORM) &&
+ if ( buildConfig.getPlatformString().startsWith(ISBSv1BuildContext.ARMV5_PLATFORM) &&
EpocEngineHelper.hasFeatureVariantKeyword(buildConfig.getCarbideProject(), path)) {
buildPlatform = buildConfig.getPlatformString().toLowerCase();
- } else {
- buildPlatform = buildConfig.getBasePlatformForVariation().toLowerCase();
+ } else if (buildConfig.getBuildContext() instanceof ISBSv1BuildContext) {
+ buildPlatform = ((ISBSv1BuildContext)buildConfig).getBasePlatformForVariation().toLowerCase();
}
argsList.clear();
@@ -1449,7 +1500,7 @@
argsList.add(buildConfig.getTargetString().toLowerCase());
argsList.add(path.removeFileExtension().lastSegment());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldResourceArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldResourceArgs().split(" ")) {
argsList.add(arg);
}
@@ -1467,13 +1518,13 @@
for (IPath path : testMakMakePaths) {
String buildPlatform = "";
- if ( buildConfig.getPlatformString().startsWith(ISymbianBuildContext.ARMV5_PLATFORM) &&
+ if ( buildConfig.getPlatformString().startsWith(ISBSv1BuildContext.ARMV5_PLATFORM) &&
EpocEngineHelper.hasFeatureVariantKeyword(buildConfig.getCarbideProject(), path)) {
buildPlatform = buildConfig.getPlatformString().toLowerCase();
} else {
- buildPlatform = buildConfig.getBasePlatformForVariation().toLowerCase();
+ buildPlatform = ((ISBSv1BuildContext)buildConfig).getBasePlatformForVariation().toLowerCase();
}
argsList.clear();
@@ -1483,7 +1534,7 @@
argsList.add(buildConfig.getTargetString().toLowerCase());
argsList.add(path.removeFileExtension().lastSegment());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldTargetArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldTargetArgs().split(" ")) {
argsList.add(arg);
}
@@ -1500,13 +1551,13 @@
for (IPath path : testMakMakePaths) {
String buildPlatform = "";
- if ( buildConfig.getPlatformString().startsWith(ISymbianBuildContext.ARMV5_PLATFORM) &&
+ if ( buildConfig.getPlatformString().startsWith(ISBSv1BuildContext.ARMV5_PLATFORM) &&
EpocEngineHelper.hasFeatureVariantKeyword(buildConfig.getCarbideProject(), path)) {
buildPlatform = buildConfig.getPlatformString().toLowerCase();
- } else {
- buildPlatform = buildConfig.getBasePlatformForVariation().toLowerCase();
+ } else if (buildConfig.getBuildContext() instanceof ISBSv1BuildContext) {
+ buildPlatform = ((ISBSv1BuildContext)buildConfig).getBasePlatformForVariation().toLowerCase();
}
argsList.clear();
@@ -1516,7 +1567,7 @@
argsList.add(buildConfig.getTargetString().toLowerCase());
argsList.add(path.removeFileExtension().lastSegment());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldFinalArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldFinalArgs().split(" ")) {
argsList.add(arg);
}
@@ -1538,6 +1589,8 @@
SubMonitor progress = SubMonitor.convert(monitor, 5);
progress.setTaskName("Cleaning " + buildConfig.getDisplayString());
+ ISBSv1BuildContext sbsv1Context = (ISBSv1BuildContext)buildConfig.getBuildContext();
+
if (!CarbideCPPBuilder.generateBldmakeMakefilesIfNecessary(buildConfig, launcher)) {
return;
}
@@ -1572,7 +1625,7 @@
argsList.add(buildConfig.getPlatformString().toLowerCase());
argsList.add(buildConfig.getTargetString().toLowerCase());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldCleanArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldCleanArgs().split(" ")) {
argsList.add(arg);
}
@@ -1596,7 +1649,7 @@
argsList.add(buildConfig.getPlatformString().toLowerCase());
argsList.add(buildConfig.getTargetString().toLowerCase());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldCleanArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldCleanArgs().split(" ")) {
argsList.add(arg);
}
@@ -1618,7 +1671,7 @@
argsList.add(CLEAN_CMD);
argsList.add(buildConfig.getPlatformString().toLowerCase());
- for (String arg : buildConfig.getBuildArgumentsInfo().getBldmakeCleanArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getBldmakeCleanArgs().split(" ")) {
argsList.add(arg);
}
@@ -1636,6 +1689,8 @@
SubMonitor progress = SubMonitor.convert(monitor, 3 + normalMakMakePaths.size() + testMakMakePaths.size());
progress.setTaskName("Cleaning " + buildConfig.getDisplayString());
+ ISBSv1BuildContext sbsv1Context = (ISBSv1BuildContext)buildConfig.getBuildContext();
+
if (!CarbideCPPBuilder.generateBldmakeMakefilesIfNecessary(buildConfig, launcher)) {
return;
}
@@ -1669,13 +1724,13 @@
for (IPath path : normalMakMakePaths) {
String buildPlatform = "";
- if ( buildConfig.getPlatformString().startsWith(ISymbianBuildContext.ARMV5_PLATFORM) &&
+ if ( buildConfig.getPlatformString().startsWith(ISBSv1BuildContext.ARMV5_PLATFORM) &&
EpocEngineHelper.hasFeatureVariantKeyword(buildConfig.getCarbideProject(), path)) {
buildPlatform = buildConfig.getPlatformString().toLowerCase();
- } else {
- buildPlatform = buildConfig.getBasePlatformForVariation().toLowerCase();
+ } else if (buildConfig.getBuildContext() instanceof ISBSv1BuildContext) {
+ buildPlatform = ((ISBSv1BuildContext)buildConfig).getBasePlatformForVariation().toLowerCase();
}
List<String> argsList = new ArrayList<String>();
@@ -1684,7 +1739,7 @@
argsList.add(buildConfig.getTargetString().toLowerCase());
argsList.add(path.removeFileExtension().lastSegment());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldCleanArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldCleanArgs().split(" ")) {
argsList.add(arg);
}
@@ -1711,7 +1766,7 @@
argsList.add(buildConfig.getTargetString().toLowerCase());
argsList.add(path.removeFileExtension().lastSegment());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldCleanArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldCleanArgs().split(" ")) {
argsList.add(arg);
}
@@ -1732,7 +1787,7 @@
argsList.add(CLEAN_CMD);
argsList.add(buildConfig.getPlatformString().toLowerCase());
- for (String arg : buildConfig.getBuildArgumentsInfo().getBldmakeCleanArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getBldmakeCleanArgs().split(" ")) {
argsList.add(arg);
}
@@ -1749,7 +1804,8 @@
SubMonitor progress = SubMonitor.convert(monitor, 4);
progress.setTaskName("Freezing " + buildConfig.getDisplayString());
-
+ ISBSv1BuildContext sbsv1Context = (ISBSv1BuildContext)buildConfig.getBuildContext();
+
if (!CarbideCPPBuilder.generateBldmakeMakefilesIfNecessary(buildConfig, launcher)) {
return;
}
@@ -1775,7 +1831,7 @@
argsList.add(FREEZE_CMD);
argsList.add(buildConfig.getPlatformString().toLowerCase());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldFreezeArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldFreezeArgs().split(" ")) {
argsList.add(arg);
}
@@ -1798,7 +1854,7 @@
argsList.add(FREEZE_CMD);
argsList.add(buildConfig.getPlatformString().toLowerCase());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldFreezeArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldFreezeArgs().split(" ")) {
argsList.add(arg);
}
@@ -1818,7 +1874,8 @@
SubMonitor progress = SubMonitor.convert(monitor, 2 + normalMakMakePaths.size() + testMakMakePaths.size());
progress.setTaskName("Freezing " + buildConfig.getDisplayString());
-
+ ISBSv1BuildContext sbsv1Context = (ISBSv1BuildContext)buildConfig.getBuildContext();
+
if (!CarbideCPPBuilder.generateBldmakeMakefilesIfNecessary(buildConfig, launcher)) {
return;
}
@@ -1844,13 +1901,13 @@
for (IPath path : normalMakMakePaths) {
String buildPlatform = "";
- if ( buildConfig.getPlatformString().startsWith(ISymbianBuildContext.ARMV5_PLATFORM) &&
+ if ( buildConfig.getPlatformString().startsWith(ISBSv1BuildContext.ARMV5_PLATFORM) &&
EpocEngineHelper.hasFeatureVariantKeyword(buildConfig.getCarbideProject(), path)) {
buildPlatform = buildConfig.getPlatformString().toLowerCase();
- } else {
- buildPlatform = buildConfig.getBasePlatformForVariation().toLowerCase();
+ } else if (buildConfig.getBuildContext() instanceof ISBSv1BuildContext) {
+ buildPlatform = ((ISBSv1BuildContext)buildConfig).getBasePlatformForVariation().toLowerCase();
}
List<String> argsList = new ArrayList<String>();
@@ -1858,7 +1915,7 @@
argsList.add(buildPlatform);
argsList.add(path.removeFileExtension().lastSegment());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldFreezeArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldFreezeArgs().split(" ")) {
argsList.add(arg);
}
@@ -1884,7 +1941,7 @@
argsList.add(buildConfig.getPlatformString().toLowerCase());
argsList.add(path.removeFileExtension().lastSegment());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldFreezeArgs().split(" ")) {
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldFreezeArgs().split(" ")) {
argsList.add(arg);
}
@@ -2095,7 +2152,8 @@
argsList.add(buildConfig.getTargetString().toLowerCase());
argsList.add(componentName);
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldCleanArgs().split(" ")) {
+ ISBSv1BuildContext sbsv1Context = (ISBSv1BuildContext)buildConfig.getBuildContext();
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldCleanArgs().split(" ")) {
argsList.add(arg);
}
@@ -2261,12 +2319,12 @@
}
// we need to check the variant hrh files as well
- File prefixFile = config.getSDK().getPrefixFile();
+ File prefixFile = config.getBuildContext().getPrefixFromVariantCfg().toFile();
if (prefixFile != null && prefixFile.lastModified() > oldestMakefileTimestamp) {
return true;
}
- for (File file : config.getPrefixFileIncludes()) {
+ for (File file : config.getBuildContext().getVariantHRHIncludes()) {
if (file.lastModified() > oldestMakefileTimestamp) {
return true;
}
@@ -2275,7 +2333,7 @@
// all make files exist. now make sure the oldest of them is newer than the bld.inf or any of its includes
final long finalOldestMakefileTimestamp = oldestMakefileTimestamp;
Boolean regenerate = (Boolean)EpocEnginePlugin.runWithBldInfView(bldInfPath,
- new DefaultViewConfiguration(config, bldInfPath, new AcceptedNodesViewFilter()),
+ new DefaultViewConfiguration(config.getBuildContext(), bldInfPath, new AcceptedNodesViewFilter()),
new BldInfViewRunnableAdapter() {
public Object run(IBldInfView view) {
for (IPath file : view.getReferencedFiles()) {
@@ -2303,12 +2361,12 @@
ICarbideProjectInfo cpi = config.getCarbideProject();
IPath workingDir = cpi.getINFWorkingDirectory();
- launcher.setErrorParserManager(workingDir, CarbideCPPBuilder.getParserIdArray(config.getErrorParserId()));
+ launcher.setErrorParserManager(workingDir, config.getErrorParserList());
launcher.writeToConsole("\n***Generating abld makefile.\n");
// delete the *.uid.cpp file if it exists so it gets regenerated. makmake won't regenerate it if only an mmp include
// file has changed. see bug #4590 for details.
- if (config.getPlatformString().equals(ISymbianBuildContext.EMULATOR_PLATFORM)) {
+ if (config.getPlatformString().equals(ISBSv1BuildContext.EMULATOR_PLATFORM)) {
File uidFile = new Path(getMakefileForMMP(config, componentPath).getAbsolutePath()).removeFileExtension().addFileExtension("UID.CPP").toFile();
if (uidFile.exists()) {
uidFile.delete();
@@ -2325,18 +2383,19 @@
}
String buildPlatform = "";
- if ( config.getPlatformString().startsWith(ISymbianBuildContext.ARMV5_PLATFORM) &&
+ if ( config.getPlatformString().startsWith(ISBSv1BuildContext.ARMV5_PLATFORM) &&
EpocEngineHelper.hasFeatureVariantKeyword(config.getCarbideProject(), componentPath)){
buildPlatform = config.getPlatformString().toLowerCase();
- } else {
- buildPlatform = config.getBasePlatformForVariation().toLowerCase();
+ } else if (config.getBuildContext() instanceof ISBSv1BuildContext) {
+ buildPlatform = ((ISBSv1BuildContext)config.getBuildContext()).getBasePlatformForVariation().toLowerCase();
}
abldArgs.add(MAKEFILE_CMD); //$NON-NLS-1$
abldArgs.add(buildPlatform);
abldArgs.add(componentPath.removeFileExtension().lastSegment());
- for (String arg : config.getBuildArgumentsInfo().getAbldMakefileArgs().split(" ")) {
+ ISBSv1BuildContext sbsv1Context = (ISBSv1BuildContext)config.getBuildContext();
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldMakefileArgs().split(" ")) {
abldArgs.add(arg);
}
@@ -2358,7 +2417,6 @@
} catch (CoreException e) {
CarbideBuilderPlugin.log(e);
e.printStackTrace();
- //TODO is this enough?
}
}
}
@@ -2382,12 +2440,12 @@
final long makefileTimestamp = makefile.lastModified();
// we need to check the variant hrh files as well
- File prefixFile = config.getSDK().getPrefixFile();
+ File prefixFile = config.getBuildContext().getPrefixFromVariantCfg().toFile();
if (prefixFile != null && prefixFile.lastModified() > makefileTimestamp) {
return true;
}
- for (File file : config.getPrefixFileIncludes()) {
+ for (File file : config.getBuildContext().getVariantHRHIncludes()) {
if (file.lastModified() > makefileTimestamp) {
return true;
}
@@ -2395,7 +2453,7 @@
// see if the makefile is newer than the mmp and all of its includes
Boolean regenerate = (Boolean)EpocEnginePlugin.runWithMMPData(componentPath,
- new DefaultMMPViewConfiguration(cpi.getProject(), config, new AcceptedNodesViewFilter()),
+ new DefaultMMPViewConfiguration(cpi.getProject(), config.getBuildContext(), new AcceptedNodesViewFilter()),
new MMPDataRunnableAdapter() {
public Object run(IMMPData data) {
for (IPath path : data.getReferencedFiles()) {
@@ -2465,12 +2523,12 @@
final long makefileTimestamp = makefile.lastModified();
// we need to check the variant hrh files as well
- File prefixFile = config.getSDK().getPrefixFile();
+ File prefixFile = config.getBuildContext().getPrefixFromVariantCfg().toFile();
if (prefixFile != null && prefixFile.lastModified() > makefileTimestamp) {
return true;
}
- for (File file : config.getPrefixFileIncludes()) {
+ for (File file : config.getBuildContext().getVariantHRHIncludes()) {
if (file.lastModified() > makefileTimestamp) {
return true;
}
@@ -2478,7 +2536,7 @@
// see if the makefile is newer than the mmp and all of its includes
Boolean regenerate = (Boolean)EpocEnginePlugin.runWithMMPData(componentPath,
- new DefaultMMPViewConfiguration(cpi.getProject(), config, new AcceptedNodesViewFilter()),
+ new DefaultMMPViewConfiguration(cpi.getProject(), config.getBuildContext(), new AcceptedNodesViewFilter()),
new MMPDataRunnableAdapter() {
public Object run(IMMPData data) {
for (IPath path : data.getReferencedFiles()) {
@@ -2547,11 +2605,11 @@
String platformName = "";
if (EpocEngineHelper.hasFeatureVariantKeyword(config.getCarbideProject(), componentPath)){
platformName = config.getPlatformString().toUpperCase();
- } else {
- platformName = config.getBasePlatformForVariation();
+ } else if (config.getBuildContext() instanceof ISBSv1BuildContext) {
+ platformName = ((ISBSv1BuildContext)config.getBuildContext()).getBasePlatformForVariation();
}
- makefilePath = makefilePath.append(config.getBasePlatformForVariation().toUpperCase());
+ makefilePath = makefilePath.append(((ISBSv1BuildContext)config.getBuildContext()).getBasePlatformForVariation().toUpperCase());
// and the makefile has the form MMPNAME.PLATFORM
makefilePath = makefilePath.append(mmpName + "." + platformName);
@@ -2607,7 +2665,7 @@
// .d for everything but WINSCW
String dependencyFileExt = "d";
- if (config.getPlatformString().equals(ISymbianBuildContext.EMULATOR_PLATFORM)) {
+ if (config.getPlatformString().equals(ISBSv1BuildContext.EMULATOR_PLATFORM)) {
dependencyFileExt = "dep";
}
@@ -2624,7 +2682,7 @@
// now add the -MD switch to the compiler args
final String platform = config.getPlatformString();
- if (platform.equals(ISymbianBuildContext.EMULATOR_PLATFORM)) {
+ if (platform.equals(ISBSv1BuildContext.EMULATOR_PLATFORM)) {
// append the -MD and -gccdep switches to the CWFLAGS macro
IMacroDefinition[] macros = view.getAllMacroDefinitions("CWFLAGS");
if (macros.length < 1) {
@@ -2639,7 +2697,7 @@
macroText = macroText + " -MD -gccdep" + view.getEOL();
view.replaceDirective(macro, macroText);
- } else if (platform.equals(ISymbianBuildContext.GCCE_PLATFORM)) {
+ } else if (platform.equals(ISBSv1BuildContext.GCCE_PLATFORM)) {
// append the -MD switch to the CCFLAGS macro. there may be more than one so take the last one
IMacroDefinition[] macros = view.getAllMacroDefinitions("CCFLAGS");
if (macros.length < 1) {
@@ -2747,7 +2805,7 @@
newRule = newRule + "\t" + cpp + " -undef -M -nostdinc ";
// add the compiler prefix file if any
- IPath compilerPrefix = config.getCompilerPrefixFile();
+ IPath compilerPrefix = config.getBuildContext().getCompilerPrefixFile();
if (compilerPrefix != null) {
newRule = newRule + "-include \"" + compilerPrefix.toOSString() + "\" ";
}
@@ -2778,7 +2836,7 @@
// find the macros we need to pass, and replace the -u switch with them
String macros = null;
- if (platform.equals(ISymbianBuildContext.EMULATOR_PLATFORM)) {
+ if (platform.equals(ISBSv1BuildContext.EMULATOR_PLATFORM)) {
// the macros are listed in the CWDEFS macro
IMacroDefinition[] defs = view.getAllMacroDefinitions("CWDEFS");
if (defs.length != 1) {
@@ -2793,7 +2851,7 @@
macros = macros.replaceAll("\"", "");
macros = macros.replaceAll("-d ", "-D");
- } else if (platform.equals(ISymbianBuildContext.GCCE_PLATFORM)) {
+ } else if (platform.equals(ISBSv1BuildContext.GCCE_PLATFORM)) {
// the macros are listed in the CCDEFS macro
IMacroDefinition[] defs = view.getAllMacroDefinitions("CCDEFS");
if (defs.length != 1) {
@@ -2835,8 +2893,11 @@
}
// add the compiler prefix file if any
- ISBVPlatform sbvPlatform = config.getSDK().getSBVCatalog().findPlatform(config.getPlatformString());
- File sdkPrefix = config.getSDK().getPrefixFile();
+ ISymbianSDK sdk = config.getSDK();
+ ISBSv1BuildInfo sbsv1BuildInfo = (ISBSv1BuildInfo)sdk.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER);
+ ISBVPlatform sbvPlatform = sbsv1BuildInfo.getSBVCatalog().findPlatform(config.getPlatformString());
+ File sdkPrefix = config.getBuildContext().getPrefixFromVariantCfg().toFile();
+
if (sbvPlatform != null){
// might be an alternate HRH file to use
IPath varVarHRH = sbvPlatform.getBuildVariantHRHFile();
@@ -2849,7 +2910,6 @@
newRule = newRule + "-include \"" + sdkPrefix.getAbsolutePath() + "\" ";
}
-
newRule += " -o " + depFilePath + view.getEOL();
// for some reason cpp.exe doesn't like paths without the drive letter when working on a subst'ed drive.
@@ -2906,8 +2966,8 @@
}
boolean moveDepFile = false;
- if (!platform.equals(ISymbianBuildContext.EMULATOR_PLATFORM) &&
- !platform.equals(ISymbianBuildContext.GCCE_PLATFORM)) {
+ if (!platform.equals(ISBSv1BuildContext.EMULATOR_PLATFORM) &&
+ !platform.equals(ISBSv1BuildContext.GCCE_PLATFORM)) {
// some form of ARMV5|6
moveDepFile = true;
@@ -2919,9 +2979,9 @@
}
String plat = "";
- if (platform.equals(ISymbianBuildContext.EMULATOR_PLATFORM)) {
+ if (platform.equals(ISBSv1BuildContext.EMULATOR_PLATFORM)) {
plat = "winscw";
- } else if (platform.equals(ISymbianBuildContext.GCCE_PLATFORM)) {
+ } else if (platform.equals(ISBSv1BuildContext.GCCE_PLATFORM)) {
plat = "gcce";
}
@@ -2938,7 +2998,7 @@
// fix for bug #7748. we may need to update the listing rule as well since it could generate
// a dependency file
- if (!platform.equals(ISymbianBuildContext.EMULATOR_PLATFORM)) {
+ if (!platform.equals(ISBSv1BuildContext.EMULATOR_PLATFORM)) {
// only non-WINSCW platforms are affected
rule = view.findRuleForTarget(new Path(rule.getTarget().toString()).removeFileExtension().addFileExtension("lis").toOSString(), true);
if (rule != null) {
@@ -3056,4 +3116,6 @@
public IPath getMakefileDirectory(ICarbideBuildConfiguration config) {
return new Path(config.getSDK().getEPOCROOT()).append(EPOC_BUILD_DIR).append(config.getCarbideProject().getAbsoluteBldInfPath().removeLastSegments(1).setDevice(null));
}
+
+
}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideSBSv2Builder.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideSBSv2Builder.java Wed Aug 25 12:42:09 2010 -0500
@@ -28,10 +28,11 @@
import org.eclipse.core.runtime.SubMonitor;
import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
-import com.nokia.carbide.cdt.builder.builder.CarbideCPPBuilder;
+import com.nokia.carbide.cdt.builder.EpocEngineHelper;
import com.nokia.carbide.cdt.builder.builder.CarbideCommandLauncher;
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildContext;
import com.nokia.carbide.cpp.internal.api.sdk.SBSv2Utils;
public class CarbideSBSv2Builder implements ICarbideBuilder {
@@ -47,10 +48,6 @@
SubMonitor progress = SubMonitor.convert(monitor, 3);
progress.setTaskName(CarbideBuildManagerUtils.getBuildLabel(buildConfig, null));
-
- if (!CarbideCPPBuilder.generateBldmakeMakefilesIfNecessary(buildConfig, launcher)) {
- return false;
- }
progress.worked(1);
if (progress.isCanceled()) {
@@ -87,36 +84,32 @@
}
/** Get the build-able configuration from the command line (i.e. build alias). This is passed after the sbs -c parameter */
- protected String getConfigName(ICarbideBuildConfiguration buildConfig) {
- String buildAlias = buildConfig.getSBSv2Alias();
+ protected String getConfigName(ICarbideBuildConfiguration buildConfig, IPath componentPath) {
+ String buildAlias = ((ISBSv2BuildContext)buildConfig.getBuildContext()).getSBSv2Alias();
if (buildAlias == null){
// Just get the default target. This is a SBSv1 style configuration name...
buildAlias = buildConfig.getPlatformString().toLowerCase() + "_" + buildConfig.getTargetString().toLowerCase();
}
- ISBSv2BuildConfigInfo sbsv2Info = ((CarbideBuildConfiguration)buildConfig).getSBSv2BuildConfigInfo();
- if (sbsv2Info != null){
- String variant = sbsv2Info.getSBSv2Setting(ISBSv2BuildConfigInfo.ATTRIB_SBSV2_VARIANT);
- if (variant != null && variant.length() > 1){
- buildAlias = buildAlias + variant;
- }
+
+ if (buildAlias.contains(".") && componentPath != null &&
+ !EpocEngineHelper.hasFeatureVariantKeyword(buildConfig.getCarbideProject(), componentPath)){
+ // This is a variant build, but the MMP is not a variant so just take the base alias.
+ buildAlias = buildAlias.split("\\.")[0];
}
+
return buildAlias;
}
public boolean buildComponent(ICarbideBuildConfiguration buildConfig, IPath componentPath, boolean isTest, CarbideCommandLauncher launcher, IProgressMonitor monitor) {
String componentName = componentPath.lastSegment();
- if (!CarbideCPPBuilder.generateBldmakeMakefilesIfNecessary(buildConfig, launcher)) {
- return false;
- }
-
SubMonitor progress = SubMonitor.convert(monitor, 1);
progress.setTaskName(CarbideBuildManagerUtils.getBuildLabel(buildConfig, componentName));
List<String> argsList = new ArrayList<String>();
argsList.add(COMPONENT_ARG);
- argsList.add(componentName);
+ argsList.add(componentPath.toOSString());
if (!invokeSBSCommand(buildConfig, launcher, argsList, isTest)) {
return false;
@@ -137,10 +130,6 @@
SubMonitor progress = SubMonitor.convert(monitor, 1 + normalMakMakePaths.size() + testMakMakePaths.size());
progress.setTaskName(CarbideBuildManagerUtils.getBuildLabel(buildConfig, null));
- if (!CarbideCPPBuilder.generateBldmakeMakefilesIfNecessary(buildConfig, launcher)) {
- return false;
- }
-
progress.worked(1);
if (progress.isCanceled()) {
return false;
@@ -191,10 +180,6 @@
SubMonitor progress = SubMonitor.convert(monitor, 3);
progress.setTaskName("Cleaning " + buildConfig.getDisplayString());
- if (!CarbideCPPBuilder.generateBldmakeMakefilesIfNecessary(buildConfig, launcher)) {
- return;
- }
-
progress.worked(1);
if (progress.isCanceled()) {
return;
@@ -244,10 +229,6 @@
SubMonitor progress = SubMonitor.convert(monitor, 2);
progress.setTaskName("Cleaning " + componentName);
- if (!CarbideCPPBuilder.generateBldmakeMakefilesIfNecessary(buildConfig, launcher)) {
- return false;
- }
-
int cleanLevel = buildConfig.getCarbideProject().getCleanLevel();
String cleanCmd = REALLYCLEAN_CMD;
if (0 == cleanLevel) {
@@ -257,7 +238,7 @@
List<String> argsList = new ArrayList<String>();
argsList.add(cleanCmd);
argsList.add(COMPONENT_ARG);
- argsList.add(componentName);
+ argsList.add(componentPath.toOSString());
if (!invokeSBSCommand(buildConfig, launcher, argsList, isTest)) {
return false;
@@ -278,10 +259,6 @@
SubMonitor progress = SubMonitor.convert(monitor, 1 + normalMakMakePaths.size() + testMakMakePaths.size());
progress.setTaskName("Cleaning " + buildConfig.getDisplayString());
- if (!CarbideCPPBuilder.generateBldmakeMakefilesIfNecessary(buildConfig, launcher)) {
- return;
- }
-
progress.worked(1);
if (progress.isCanceled()) {
return;
@@ -343,10 +320,6 @@
SubMonitor progress = SubMonitor.convert(monitor, 3);
progress.setTaskName("Freezing " + buildConfig.getDisplayString());
- if (!CarbideCPPBuilder.generateBldmakeMakefilesIfNecessary(buildConfig, launcher)) {
- return;
- }
-
progress.worked(1);
if (progress.isCanceled()) {
return;
@@ -383,14 +356,11 @@
}
public boolean freezeComponent(ICarbideBuildConfiguration buildConfig, IPath componentPath, boolean isTest, CarbideCommandLauncher launcher, IProgressMonitor monitor) {
- if (!CarbideCPPBuilder.generateBldmakeMakefilesIfNecessary(buildConfig, launcher)) {
- return false;
- }
List<String> argsList = new ArrayList<String>();
argsList.add(FREEZE_CMD);
argsList.add(COMPONENT_ARG);
- argsList.add(componentPath.lastSegment());
+ argsList.add(componentPath.toOSString());
if (!invokeSBSCommand(buildConfig, launcher, argsList, isTest)) {
return false;
@@ -410,10 +380,6 @@
SubMonitor progress = SubMonitor.convert(monitor, 1 + normalMakMakePaths.size() + testMakMakePaths.size());
progress.setTaskName("Freezing " + buildConfig.getDisplayString());
- if (!CarbideCPPBuilder.generateBldmakeMakefilesIfNecessary(buildConfig, launcher)) {
- return;
- }
-
progress.worked(1);
if (progress.isCanceled()) {
return;
@@ -508,7 +474,13 @@
args.add("-b"); //$NON-NLS-1$
args.add(cpi.getAbsoluteBldInfPath().toOSString());
args.add("-c"); //$NON-NLS-1$
- String configName = getConfigName(buildConfig);
+ IPath componentPath = null;
+ if (sbsArgs.size() >= 2){
+ componentPath = new Path(sbsArgs.get(sbsArgs.indexOf("-p")+ 1));
+ sbsArgs.remove(1);
+ sbsArgs.add(componentPath.lastSegment());
+ }
+ String configName = getConfigName(buildConfig, componentPath);
if (isTest) {
configName = configName + ".test"; //$NON-NLS-1$
@@ -516,6 +488,12 @@
args.add(configName);
+ if (!sbsArgs.contains("-p") && configName.contains(".")){
+ // normal build, we also need to add an extra -c param for non-variation build
+ args.add("-c");
+ args.add(configName.split("\\.")[0]);
+ }
+
//TODO this causes output to go to stdout, but only at the end of the build. should we specify a logfile name and tail the file?
args.add("-f"); //$NON-NLS-1$
args.add("-"); //$NON-NLS-1$
@@ -590,7 +568,7 @@
ICarbideProjectInfo cpi = buildConfig.getCarbideProject();
IPath workingDirectory = cpi.getINFWorkingDirectory();
- String configName = getConfigName(buildConfig);
+ String configName = getConfigName(buildConfig, fullMMPPath);
String[] sbsArgs = new String[] {"--source-target=" + file.toOSString(), COMPILE_ARG, configName, COMPONENT_ARG, fullMMPPath.toFile().getName()};
launcher.setErrorParserManager(buildConfig.getCarbideProject().getINFWorkingDirectory(), buildConfig.getErrorParserList());
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/EnvironmentVarsInfo.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/EnvironmentVarsInfo.java Wed Aug 25 12:42:09 2010 -0500
@@ -16,15 +16,12 @@
*/
package com.nokia.carbide.cdt.internal.builder;
-import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
-import com.nokia.carbide.cdt.builder.project.*;
-import com.nokia.carbide.cdt.internal.api.builder.CarbideConfigurationDataProvider;
-import com.nokia.carbide.cdt.internal.builder.gen.CarbideBuildConfig.*;
-import com.nokia.carbide.cdt.internal.builder.ui.BuilderPreferencePage;
-import com.nokia.carbide.cdt.internal.builder.xml.CarbideBuildConfigurationLoader;
-import com.nokia.carbide.cpp.internal.x86build.X86BuildPlugin;
-import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
-import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import java.io.File;
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
import org.eclipse.cdt.utils.spawner.EnvironmentReader;
import org.eclipse.core.resources.IProject;
@@ -32,10 +29,24 @@
import org.eclipse.core.runtime.Path;
import org.eclipse.emf.common.util.EList;
-import java.io.File;
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.util.*;
+import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
+import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
+import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
+import com.nokia.carbide.cdt.builder.project.IEnvironmentVariable;
+import com.nokia.carbide.cdt.builder.project.IEnvironmentVarsInfo;
+import com.nokia.carbide.cdt.internal.api.builder.CarbideConfigurationDataProvider;
+import com.nokia.carbide.cdt.internal.builder.gen.CarbideBuildConfig.CarbideBuildConfigFactory;
+import com.nokia.carbide.cdt.internal.builder.gen.CarbideBuildConfig.CarbideBuilderConfigInfoType;
+import com.nokia.carbide.cdt.internal.builder.gen.CarbideBuildConfig.ConfigurationType;
+import com.nokia.carbide.cdt.internal.builder.gen.CarbideBuildConfig.EnvVarsType;
+import com.nokia.carbide.cdt.internal.builder.gen.CarbideBuildConfig.UseType;
+import com.nokia.carbide.cdt.internal.builder.gen.CarbideBuildConfig.VarType;
+import com.nokia.carbide.cdt.internal.builder.ui.BuilderPreferencePage;
+import com.nokia.carbide.cdt.internal.builder.xml.CarbideBuildConfigurationLoader;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
+import com.nokia.carbide.cpp.internal.x86build.X86BuildPlugin;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
/**
* @deprecated use {@link EnvironmentVarsInfo2} instead
@@ -206,7 +217,7 @@
// Now check for specific variables relating to the Nokia x86 environment
// and update the environment that we just updated, if at all.
- if (context.getPlatformString().equals(ISymbianBuildContext.EMULATOR_PLATFORM) &&
+ if (context.getPlatformString().toUpperCase().equals(ISBSv1BuildContext.EMULATOR_PLATFORM) &&
BuilderPreferencePage.useBuiltInX86Vars()){
int i = 0;
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/EnvironmentVarsInfo2.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/EnvironmentVarsInfo2.java Wed Aug 25 12:42:09 2010 -0500
@@ -16,10 +16,26 @@
*/
package com.nokia.carbide.cdt.internal.builder;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.cdt.core.settings.model.ICStorageElement;
+import org.eclipse.cdt.utils.spawner.EnvironmentReader;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+
import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
import com.nokia.carbide.cdt.builder.extension.IEnvironmentModifier;
-import com.nokia.carbide.cdt.builder.project.*;
+import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
+import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
+import com.nokia.carbide.cdt.builder.project.IEnvironmentVariable;
+import com.nokia.carbide.cdt.builder.project.IEnvironmentVarsInfo;
import com.nokia.carbide.cdt.internal.builder.ui.BuilderPreferencePage;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
import com.nokia.carbide.cpp.internal.api.sdk.SBSv2Utils;
import com.nokia.carbide.cpp.internal.x86build.X86BuildPlugin;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
@@ -28,15 +44,6 @@
import com.nokia.cpp.internal.api.utils.core.PathUtils;
import com.nokia.cpp.internal.api.utils.core.TrackedResource;
-import org.eclipse.cdt.core.settings.model.ICStorageElement;
-import org.eclipse.cdt.utils.spawner.EnvironmentReader;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-
-import java.io.File;
-import java.util.*;
-
public class EnvironmentVarsInfo2 implements IEnvironmentVarsInfo {
// NOTE: all the paths below use Win32 paths. We convert these to Unix format at the end of the
@@ -195,7 +202,7 @@
// Now check for specific variables relating to the Nokia x86 environment
// and update the environment that we just updated, if at all.
- if (context.getPlatformString().equals(ISymbianBuildContext.EMULATOR_PLATFORM) &&
+ if (context.getPlatformString().toUpperCase().equals(ISBSv1BuildContext.EMULATOR_PLATFORM) &&
BuilderPreferencePage.useBuiltInX86Vars()) {
int i = 0;
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ISBSv2BuildConfigInfo.java Tue Aug 24 16:42:58 2010 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
-* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-package com.nokia.carbide.cdt.internal.builder;
-
-/**
- * Interface to SBSv2 build configuration specific data
- */
-public interface ISBSv2BuildConfigInfo {
-
- // Data attribute id's saved in .cproject file
- public final static String ATRRIB_CONFIG_BASE_PLATFORM = "CONFIG_BASE_PLATFORM"; //$NON-NLS-1$
- public final static String ATTRIB_CONFIG_TARGET = "CONFIG_TARGET"; //$NON-NLS-1$
- public final static String ATTRIB_SBSV2_BUILD_ALIAS = "SBSV2_BUILD_ALIAS"; //$NON-NLS-1$
- public final static String ATTRIB_SBSV2_CONFIG_DISPLAY_STRING = "SBSV2_CONFIG_DISPLAY_STRING"; //$NON-NLS-1$
- public final static String ATTRIB_SBSV2_VARIANT = "ATTRIB_SBSV2_VARIANT";
-
- /** Retrieve a specfic .cproject SBSv2 data value from a given ID */
- String getSBSv2Setting(String id);
-
- /**
- * Set a specific SBSv2 configuration specific data value
- * @param id
- * @param value
- */
- void setSBSv2Setting(String id, String value);
-}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ROMBuilderInfo.java Tue Aug 24 16:42:58 2010 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-package com.nokia.carbide.cdt.internal.builder;
-
-import java.io.File;
-
-import org.eclipse.cdt.core.settings.model.ICStorageElement;
-
-import com.nokia.carbide.cdt.builder.project.IROMBuilderInfo;
-import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
-import com.nokia.cpp.internal.api.utils.core.HostOS;
-
-
-public class ROMBuilderInfo implements IROMBuilderInfo {
-
- private static final String ROMBUILDCOMMANDLINESTORAGE = "ROMBUILDCOMMANDLINESTORAGE"; //$NON-NLS-1$
- private static final String ROMBUILDWORKINGDIRECTORYSTORAGE = "ROMBUILDWORKINGDIRECTORYSTORAGE"; //$NON-NLS-1$
-
-
- private String romBuildCommandLine;
- private String romBuildWorkingDirectory;
-
-
- public ROMBuilderInfo(ISymbianSDK sdk) {
-
- this.romBuildCommandLine = ""; //$NON-NLS-1$
- this.romBuildWorkingDirectory = HostOS.IS_WIN32 ? "C:\\" : "/tmp"; //$NON-NLS-1$ //$NON-NLS-2$
-
- // now set epoc32\rom folder in the sdk as the default working dir
- // this is most common folder that rom images are built from for most symbian kits..
- String dir = sdk.getEPOCROOT() + "epoc32/rom/"; //$NON-NLS-1$
- if (new File(dir).exists())
- romBuildWorkingDirectory = dir;
- }
-
- public void loadFromStorage(ICStorageElement rootStorage) {
- String value = rootStorage.getAttribute(ROMBUILDCOMMANDLINESTORAGE);
- if (value != null) {
- romBuildCommandLine = value;
- }
-
- value = rootStorage.getAttribute(ROMBUILDWORKINGDIRECTORYSTORAGE);
- if (value != null) {
- romBuildWorkingDirectory = value;
- }
- }
-
- public void saveToStorage(ICStorageElement rootStorage) {
- if (romBuildCommandLine.trim().length() > 0) {
- rootStorage.setAttribute(ROMBUILDCOMMANDLINESTORAGE, romBuildCommandLine);
- }
-
- if (romBuildWorkingDirectory.trim().length() > 0) {
- rootStorage.setAttribute(ROMBUILDWORKINGDIRECTORYSTORAGE, romBuildWorkingDirectory);
- }
- }
-
- public String getCommandLine() {
- return romBuildCommandLine;
- }
-
- public String getWorkingDirectory() {
- return romBuildWorkingDirectory;
- }
-
- public void setCommandLine(String romBuildCommandLine) {
- this.romBuildCommandLine = romBuildCommandLine;
- }
-
- public void setWorkingDirectory(String romBuildWorkingDirectory) {
- this.romBuildWorkingDirectory = romBuildWorkingDirectory;
- }
-}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/SBSv2BuilderInfo.java Tue Aug 24 16:42:58 2010 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-/*
-* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-package com.nokia.carbide.cdt.internal.builder;
-
-import java.util.HashMap;
-
-import org.eclipse.cdt.core.settings.model.ICStorageElement;
-
-import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
-
-public class SBSv2BuilderInfo implements ISBSv2BuildConfigInfo {
-
- HashMap<String, String> sbsv2ConfigDataMap = new HashMap<String, String>();
-
-// private static String TRUE = "true";
-// private static String FALSE = "false";
-
- ISymbianBuildContext context;
-
- public SBSv2BuilderInfo(ISymbianBuildContext context) {
- String buildAlias = context.getSBSv2Alias() != null ? context.getSBSv2Alias() : "";
- sbsv2ConfigDataMap.put(ISBSv2BuildConfigInfo.ATTRIB_SBSV2_BUILD_ALIAS, buildAlias);
- sbsv2ConfigDataMap.put(ISBSv2BuildConfigInfo.ATRRIB_CONFIG_BASE_PLATFORM, context.getBasePlatformForVariation());
- sbsv2ConfigDataMap.put(ISBSv2BuildConfigInfo.ATTRIB_CONFIG_TARGET, context.getTargetString());
- sbsv2ConfigDataMap.put(ISBSv2BuildConfigInfo.ATTRIB_SBSV2_CONFIG_DISPLAY_STRING, context.getDisplayString());
- sbsv2ConfigDataMap.put(ISBSv2BuildConfigInfo.ATTRIB_SBSV2_VARIANT, "");
- this.context = context;
- }
-
- public void loadFromStorage(ICStorageElement rootStorage) {
-
- String value = rootStorage.getAttribute(ATRRIB_CONFIG_BASE_PLATFORM);
- if (value != null) {
- sbsv2ConfigDataMap.put(ATRRIB_CONFIG_BASE_PLATFORM, value);
- }
-
- value = rootStorage.getAttribute(ATTRIB_SBSV2_VARIANT);
- if (value != null) {
- sbsv2ConfigDataMap.put(ATTRIB_SBSV2_VARIANT, value);
- }
-
- value = rootStorage.getAttribute(ATTRIB_CONFIG_TARGET);
- if (value != null) {
- sbsv2ConfigDataMap.put(ATTRIB_CONFIG_TARGET, value);
- }
-
- value = rootStorage.getAttribute(ATTRIB_SBSV2_BUILD_ALIAS);
- if (value != null) {
- sbsv2ConfigDataMap.put(ATTRIB_SBSV2_BUILD_ALIAS, value);
- }
-
- value = rootStorage.getAttribute(ATTRIB_SBSV2_CONFIG_DISPLAY_STRING);
- if (value != null) {
- sbsv2ConfigDataMap.put(ATTRIB_SBSV2_CONFIG_DISPLAY_STRING, value);
- }
-
- }
-
- public void saveToStorage(ICStorageElement rootStorage) {
-
- String value = sbsv2ConfigDataMap.get(ATRRIB_CONFIG_BASE_PLATFORM);
- if (value != null && value.trim().length() > 0){
- rootStorage.setAttribute(ATRRIB_CONFIG_BASE_PLATFORM, value);
- }
-
- value = sbsv2ConfigDataMap.get(ATTRIB_SBSV2_VARIANT);
- if (value != null && value.trim().length() > 0){
- rootStorage.setAttribute(ATTRIB_SBSV2_VARIANT, value);
- }
-
- value = sbsv2ConfigDataMap.get(ATTRIB_CONFIG_TARGET);
- if (value != null && value.trim().length() > 0){
- rootStorage.setAttribute(ATTRIB_CONFIG_TARGET, value);
- }
-
- value = sbsv2ConfigDataMap.get(ATTRIB_SBSV2_BUILD_ALIAS);
- if (value != null && value.trim().length() > 0){
- rootStorage.setAttribute(ATTRIB_SBSV2_BUILD_ALIAS, value);
- }
-
- value = sbsv2ConfigDataMap.get(ATTRIB_SBSV2_CONFIG_DISPLAY_STRING);
- if (value != null && value.trim().length() > 0){
- rootStorage.setAttribute(ATTRIB_SBSV2_CONFIG_DISPLAY_STRING, value);
- }
-
- }
-
- public String getSBSv2Setting(String id) {
- return sbsv2ConfigDataMap.get(id);
- }
-
- public void setSBSv2Setting(String id, String value) {
- sbsv2ConfigDataMap.put(id, value);
- }
-
-}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/SISBuilderInfo.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/SISBuilderInfo.java Wed Aug 25 12:42:09 2010 -0500
@@ -27,6 +27,7 @@
import com.nokia.carbide.cdt.internal.builder.gen.CarbideBuildConfig.CarbideBuildConfigFactory;
import com.nokia.carbide.cdt.internal.builder.gen.CarbideBuildConfig.SisBuilderType;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDKFeatures;
/**
* @deprecated use {@link SISBuilderInfo2} instead
@@ -250,7 +251,7 @@
if (getCertificate().length() > 0) {
return KEY_CERT_SIGN;
}
- if (sdk.isEKA2()) {
+ if (sdk.getSupportedFeatures().contains(ISymbianSDKFeatures.IS_EKA2)) {
return SELF_SIGN;
}
return DONT_SIGN;
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/ArgumentsTabComposite.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/ArgumentsTabComposite.java Wed Aug 25 12:42:09 2010 -0500
@@ -25,11 +25,13 @@
import org.eclipse.swt.widgets.TabItem;
import org.eclipse.swt.widgets.Text;
-import com.nokia.carbide.cdt.builder.BuildArgumentsInfo;
-import com.nokia.carbide.cdt.builder.project.IBuildArgumentsInfo;
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cdt.internal.builder.CarbideBuildConfiguration;
+import com.nokia.carbide.cpp.internal.api.sdk.BuildArgumentsInfo;
+import com.nokia.carbide.cpp.internal.api.sdk.IBuildArgumentsInfo;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDKFeatures;
/**
* Arguments tab for the Carbide Build Configurations page
@@ -159,7 +161,8 @@
}
public void initData(ICarbideBuildConfiguration buildConfig) {
- IBuildArgumentsInfo argsInfo = buildConfig.getBuildArgumentsInfo();
+ ISBSv1BuildContext sbsv1Context = (ISBSv1BuildContext)buildConfig.getBuildContext();
+ IBuildArgumentsInfo argsInfo = sbsv1Context.getBuildArgumentsInfo();
bldMakeBldfilesEdit.setText(argsInfo.getBldmakeBldFilesArgs());
bldMakeCleanEdit.setText(argsInfo.getBldmakeCleanArgs());
abldBuildEdit.setText(argsInfo.getAbldBuildArgs());
@@ -176,7 +179,8 @@
public boolean compareConfigurationSettings(ICarbideBuildConfiguration selectedConfig, boolean writeToConfig) {
boolean settingsEqual = true;
- IBuildArgumentsInfo existingInfo = selectedConfig.getBuildArgumentsInfo();
+ ISBSv1BuildContext sbsv1Context = (ISBSv1BuildContext)selectedConfig.getBuildContext();
+ IBuildArgumentsInfo existingInfo = sbsv1Context.getBuildArgumentsInfo();
settingsEqual = existingInfo.getBldmakeBldFilesArgs().equals(bldMakeBldfilesEdit.getText()) &&
existingInfo.getBldmakeCleanArgs().equals(bldMakeCleanEdit.getText()) &&
existingInfo.getAbldBuildArgs().equals(abldBuildEdit.getText()) &&
@@ -190,7 +194,7 @@
existingInfo.getAbldFreezeArgs().equals(abldFreezeEdit.getText());
if (!settingsEqual && writeToConfig) {
- ((CarbideBuildConfiguration)selectedConfig).setBuildArgumentsInfo(new BuildArgumentsInfo(bldMakeBldfilesEdit.getText(), bldMakeCleanEdit.getText(),
+ sbsv1Context.setBuildArgumentsInfo(new BuildArgumentsInfo(bldMakeBldfilesEdit.getText(), bldMakeCleanEdit.getText(),
abldBuildEdit.getText(), abldExportEdit.getText(), abldMakefileEdit.getText(), abldLibraryEdit.getText(), abldResourceEdit.getText(),
abldTargetEdit.getText(), abldFinalEdit.getText(), abldCleanEdit.getText(), abldFreezeEdit.getText()));
}
@@ -211,7 +215,7 @@
abldCleanEdit.setText(""); //$NON-NLS-1$
abldFreezeEdit.setText(""); //$NON-NLS-1$
- if (sdk.isEKA2()) {
+ if (sdk.getSupportedFeatures().contains(ISymbianSDKFeatures.IS_EKA2)) {
abldFreezeEdit.setText("-r"); //$NON-NLS-1$
}
}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/CarbideBuildConfigurationsPage.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/CarbideBuildConfigurationsPage.java Wed Aug 25 12:42:09 2010 -0500
@@ -151,12 +151,6 @@
// paths and symbols tab
PathsAndSymbolsTabComposite pathsAndSymbolsTabComposite;
- // rom builder tab
- ROMBuilderTabComposite romBuilderTabComposite;
-
- // SBSv2 config data tab
- SBSv2BuildConfigTabComposite sbsv2BuildConfigTabComposite;
-
// Configuration management/switching
private IProject project;
private BuildConfigCombo buildConfigurationCombo;
@@ -226,20 +220,6 @@
data.horizontalIndent = 18;
data.verticalIndent = 18;
control.setLayoutData(data);
-
- //////////////////// SBSv2 Config Data Tab /////////////
- if (CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(project)) {
-
- TabItem sbsV2TabItem = new TabItem(tabFolder, SWT.NONE);
- sbsV2TabItem.setText(Messages.getString("CarbideBuildConfigurationsPage.SBSv2_Tab")); //$NON-NLS-1$
- sbsV2TabItem.setToolTipText(Messages.getString("CarbideBuildConfigurationsPage.Environement_Tab_ToolTip")); //$NON-NLS-1$
-
- sbsv2BuildConfigTabComposite = new SBSv2BuildConfigTabComposite(sbsV2TabItem);
- sbsv2BuildConfigTabComposite.createControls();
- sbsV2TabItem.setControl(sbsv2BuildConfigTabComposite);
- }
- ////////////////////////////////////////////////////////
-
////////////////////// Environment Tab ////////////////
TabItem envTabItem = new TabItem(tabFolder, SWT.NONE);
@@ -364,15 +344,6 @@
pathsAndSymbolsTabComposite.createControls();
pathsAndSymbolsTabItem.setControl(pathsAndSymbolsTabComposite);
- /////////////////// ROM Builder Tab /////////////////
- TabItem romBuilderTabItem = new TabItem(tabFolder, SWT.NONE);
- romBuilderTabItem.setText(Messages.getString("CarbideRomBuilderTab.Title")); //$NON-NLS-1$
- romBuilderTabItem.setToolTipText(Messages.getString("CarbideRomBuilderTab.ToolTip")); //$NON-NLS-1$
-
- romBuilderTabComposite = new ROMBuilderTabComposite(romBuilderTabItem);
- romBuilderTabComposite.createControls();
- romBuilderTabItem.setControl(romBuilderTabComposite);
-
// read in the settings and populate the prefs...
if (project != null) {
loadConfigurationSettings();
@@ -381,14 +352,11 @@
ICarbideBuildConfiguration config = cpi.getDefaultConfiguration();
if (config != null) {
sisFilesBlock.initData(config);
- if (CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(project)) {
- sbsv2BuildConfigTabComposite.initData(config);
- }
+
if (argumentsTabcomposite != null) {
argumentsTabcomposite.initData(config);
}
pathsAndSymbolsTabComposite.initData(config);
- romBuilderTabComposite.initData(config);
}
}
setUpEnvVarsTable(new String[0], null);
@@ -660,9 +628,7 @@
boolean sisSettingsEqual = sisFilesBlock.compareConfigurationSettings(selectedConfig, writeToConfig);
boolean sbsv2ConfigEqual = true;
- if (sbsv2BuildConfigTabComposite != null) {
- sbsv2ConfigEqual = sbsv2BuildConfigTabComposite.compareConfigurationSettings(selectedConfig, writeToConfig);
- }
+
// Compare envVars settings
boolean envVarsSettingsEqual = envVarList.size() == envVarListOrig.size() && envVarList.equals(envVarListOrig);
if (!envVarsSettingsEqual && writeToConfig) {
@@ -676,9 +642,7 @@
boolean pathsAndSynmbolsSettingsEqual = pathsAndSymbolsTabComposite.compareConfigurationSettings(selectedConfig, writeToConfig);
- boolean romBuilderSettingsEqual = romBuilderTabComposite.compareConfigurationSettings(selectedConfig, writeToConfig);
-
- return sisSettingsEqual && sbsv2ConfigEqual && envVarsSettingsEqual && argsSettingsEqual && pathsAndSynmbolsSettingsEqual && romBuilderSettingsEqual;
+ return sisSettingsEqual && sbsv2ConfigEqual && envVarsSettingsEqual && argsSettingsEqual && pathsAndSynmbolsSettingsEqual;
}
private void saveConfigurationSettings(ICarbideBuildConfiguration config) {
@@ -981,15 +945,12 @@
ICarbideBuildConfiguration lastConfig = cpi.getNamedConfiguration(lastSelectedConfigName);
if (lastConfig != null) {
sisFilesBlock.initData(lastConfig);
- if (CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(project)) {
- sbsv2BuildConfigTabComposite.initData(lastConfig);
- }
+
setUpEnvVarsTable(new String[0], null); // refresh env vars info
if (argumentsTabcomposite != null) {
argumentsTabcomposite.initData(lastConfig);
}
pathsAndSymbolsTabComposite.initData(lastConfig);
- romBuilderTabComposite.initData(lastConfig);
}
}
@@ -1001,14 +962,13 @@
sisFilesBlock.performDefaults();
IEnvironmentVarsInfo envVarsDefaults = cpi.getNamedConfiguration(lastSelectedConfigName).getEnvironmentVarsInfo();
- String[] defaultVars = envVarsDefaults.getDefaultEnvVarsSettings(cpi, cpi.getNamedConfiguration(lastSelectedConfigName));
- setUpEnvVarsTable(defaultVars, envVarsDefaults.getDefaultEnvVarsList(cpi, cpi.getNamedConfiguration(lastSelectedConfigName)));
+ String[] defaultVars = envVarsDefaults.getDefaultEnvVarsSettings(cpi, cpi.getNamedConfiguration(lastSelectedConfigName).getBuildContext());
+ setUpEnvVarsTable(defaultVars, envVarsDefaults.getDefaultEnvVarsList(cpi, cpi.getNamedConfiguration(lastSelectedConfigName).getBuildContext()));
if (argumentsTabcomposite != null) {
argumentsTabcomposite.performDefaults(cpi.getNamedConfiguration(lastSelectedConfigName).getSDK());
}
pathsAndSymbolsTabComposite.performDefaults(cpi.getNamedConfiguration(lastSelectedConfigName).getSDK());
- romBuilderTabComposite.performDefaults(cpi.getNamedConfiguration(lastSelectedConfigName).getSDK());
super.performDefaults();
}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/CarbideCPPProjectSettingsPage.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/CarbideCPPProjectSettingsPage.java Wed Aug 25 12:42:09 2010 -0500
@@ -52,6 +52,7 @@
import org.eclipse.ui.dialogs.PropertyPage;
import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
+import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
import com.nokia.carbide.cdt.internal.api.builder.ui.MMPSelectionUI;
import com.nokia.carbide.cdt.internal.api.builder.ui.MMPSelectionUI.FileInfo;
@@ -355,7 +356,9 @@
// get the list of normal and test project extensions
List<ISymbianBuildContext> buildConfigList = new ArrayList<ISymbianBuildContext>();
- buildConfigList.addAll(cpi.getBuildConfigurations());
+ for (ICarbideBuildConfiguration config : cpi.getBuildConfigurations()){
+ buildConfigList.add(config.getBuildContext());
+ }
enableOrDisableControls();
}
@@ -398,7 +401,11 @@
selectionUI.setLayoutData(gridData);
// set the data
- selectionUI.setBldInfFile(cpi.getAbsoluteBldInfPath(), cpi.getBuildConfigurations(), CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(cpi.getProject()));
+ List<ISymbianBuildContext> buildContexts = new ArrayList<ISymbianBuildContext>();
+ for (ICarbideBuildConfiguration config : cpi.getBuildConfigurations()){
+ buildContexts.add(config.getBuildContext());
+ }
+ selectionUI.setBldInfFile(cpi.getAbsoluteBldInfPath(), buildContexts, CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(cpi.getProject()));
// set checked state
selectionUI.setAllChecked(false);
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/PathsAndSymbolsTabComposite.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/PathsAndSymbolsTabComposite.java Wed Aug 25 12:42:09 2010 -0500
@@ -116,7 +116,7 @@
String macrosFile = cpi.getMacrosFile();
if (macrosFile != null && macrosFile.length() > 0) {
MacroScanner scanner = new MacroScanner(
- new DefaultIncludeFileLocator(buildConfig.getCarbideProject().getProject(), buildConfig),
+ new DefaultIncludeFileLocator(buildConfig.getCarbideProject().getProject(), buildConfig.getBuildContext()),
DefaultModelDocumentProvider.getInstance(),
DefaultTranslationUnitProvider.getInstance());
scanner.scanFile(new File(macrosFile));
@@ -256,7 +256,7 @@
ICProjectDescription projDes = CoreModel.getDefault().getProjectDescription(buildConfig.getCarbideProject().getProject());
if (projDes != null) {
- ICConfigurationDescription configDes = projDes.getConfigurationById(buildConfig.getDisplayString());
+ ICConfigurationDescription configDes = projDes.getConfigurationById(buildConfig.getBuildContext().getConfigurationID());
if (configDes != null) {
CConfigurationData configData = configDes.getConfigurationData();
if (configData != null) {
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/ROMBuilderTabComposite.java Tue Aug 24 16:42:58 2010 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,120 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-package com.nokia.carbide.cdt.internal.builder.ui;
-
-import java.io.File;
-
-import org.eclipse.cdt.utils.ui.controls.ControlFactory;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.DirectoryDialog;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.TabItem;
-import org.eclipse.swt.widgets.Text;
-
-import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
-import com.nokia.carbide.cdt.builder.project.IROMBuilderInfo;
-import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
-import com.nokia.cpp.internal.api.utils.ui.BrowseDialogUtils;
-
-/**
- * Arguments tab for the Carbide Build Configurations page
- *
- */
-public class ROMBuilderTabComposite extends Composite {
-
- private Text cmdLineEdit;
- private Text workingDirEdit;
- private Button workingDirBrowse;
-
-
- public ROMBuilderTabComposite(TabItem tabItem) {
- super(tabItem.getParent(), SWT.NONE);
- }
-
- public void createControls() {
- setLayout(new GridLayout(3, false));
-
- Label cmdLineLabel = new Label(this, SWT.NONE);
- cmdLineLabel.setText(Messages.getString("CarbideRomBuilderTab.Cmd_Line")); //$NON-NLS-1$
- cmdLineLabel.setToolTipText(Messages.getString("CarbideRomBuilderTab.Cmd_Line_Tool_Tip")); //$NON-NLS-1$
-
- cmdLineEdit = new Text(this, SWT.BORDER);
- cmdLineEdit.setToolTipText(Messages.getString("CarbideRomBuilderTab.BldfilesArgumentsToolTip")); //$NON-NLS-1$
- cmdLineEdit.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
-
- Label workingDirLabel = new Label(this, SWT.NONE);
- workingDirLabel.setText(Messages.getString("CarbideRomBuilderTab.Working_Dir")); //$NON-NLS-1$
- workingDirLabel.setToolTipText(Messages.getString("CarbideRomBuilderTab.Working_Dir_Tool_Tip")); //$NON-NLS-1$
-
- workingDirEdit = new Text(this, SWT.BORDER);
- workingDirEdit.setToolTipText(Messages.getString("CarbideRomBuilderTab.Working_Dir_Tool_Tip")); //$NON-NLS-1$
- workingDirEdit.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-
- workingDirBrowse = ControlFactory.createPushButton(this, Messages.getString("CarbideRomBuilderTab.Browse")); //$NON-NLS-1$
- workingDirBrowse.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent evt) {
- DirectoryDialog dialog = new DirectoryDialog(getShell(), SWT.NONE);
- BrowseDialogUtils.initializeFrom(dialog, workingDirEdit);
-
- dialog.setText(Messages.getString("CarbideRomBuilderTab.Rom_Dir_Dialog_Title")); //$NON-NLS-1$
- String result = dialog.open();
-
- if (result != null) {
- workingDirEdit.setText(result);
- }
- }
- });
- }
-
- public void initData(ICarbideBuildConfiguration buildConfig) {
- IROMBuilderInfo romInfo = buildConfig.getROMBuildInfo();
- cmdLineEdit.setText(romInfo.getCommandLine());
- workingDirEdit.setText(romInfo.getWorkingDirectory());
- }
-
- public boolean compareConfigurationSettings(ICarbideBuildConfiguration selectedConfig, boolean writeToConfig) {
- boolean settingsEqual = true;
-
- IROMBuilderInfo existingInfo = selectedConfig.getROMBuildInfo();
- settingsEqual = existingInfo.getCommandLine().equals(cmdLineEdit.getText()) &&
- existingInfo.getWorkingDirectory().equals(workingDirEdit.getText());
-
- if (!settingsEqual && writeToConfig) {
- existingInfo.setCommandLine(cmdLineEdit.getText());
- existingInfo.setWorkingDirectory(workingDirEdit.getText());
- }
-
- return settingsEqual;
- }
-
- public void performDefaults(ISymbianSDK sdk) {
- cmdLineEdit.setText(""); //$NON-NLS-1$
- workingDirEdit.setText("C:\\"); //$NON-NLS-1$
-
- // now set epoc32\rom folder in the sdk as the default working dir
- // this is most common folder that rom images are built from for most symbian kits..
- String dir = sdk.getEPOCROOT() + "epoc32\\rom\\"; //$NON-NLS-1$
- if (new File(dir).exists())
- workingDirEdit.setText(dir);
- }
-}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/SBSv2BuildConfigTabComposite.java Tue Aug 24 16:42:58 2010 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,142 +0,0 @@
-/*
-* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-package com.nokia.carbide.cdt.internal.builder.ui;
-
-import java.io.File;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.TabItem;
-import org.eclipse.swt.widgets.Text;
-
-import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
-import com.nokia.carbide.cdt.internal.builder.CarbideBuildConfiguration;
-import com.nokia.carbide.cdt.internal.builder.ISBSv2BuildConfigInfo;
-import com.nokia.carbide.cpp.internal.api.sdk.SBSv2Utils;
-import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
-
-public class SBSv2BuildConfigTabComposite extends Composite {
-
- private static final String configCmdLabelPrefixText = "Configuration Command: -c "; // $NON-NLS-N$
- private static final String releaseTreeLabelPrefixText = "Release Tree: "; // $NON-NLS-N$
-
- Text variantEdit;
-
- Label configCmdLabel;
- Label releaseTreeLabel;
- private ICarbideBuildConfiguration config;
-
- public SBSv2BuildConfigTabComposite(TabItem tabItem) {
- super(tabItem.getParent(), SWT.NONE);
- }
-
- public void createControls() {
- setLayout(new GridLayout(2, false));
-
- Label variantLabel = new Label(this, SWT.NONE);
- variantLabel.setText(Messages.getString("CarbideSBSv2ConfigTab.VariantLabel")); //$NON-NLS-1$
- variantLabel.setToolTipText(Messages.getString("CarbideSBSv2ConfigTab.VariantLabel_ToolTip")); //$NON-NLS-1$
-
- variantEdit = new Text(this, SWT.BORDER);
- variantEdit.setToolTipText(Messages.getString("CarbideSBSv2ConfigTab.VariantLabel_ToolTip")); //$NON-NLS-1$
- variantEdit.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
- SelectionListener listener;
- variantEdit.addKeyListener( new KeyListener() {
-
- public void keyReleased(KeyEvent e) {
- setVaraintDetailsText();
- }
-
- public void keyPressed(KeyEvent e) {
- // ignore
- }
- });
-
- Group emulatorBuildOptionsGroup;
- emulatorBuildOptionsGroup = new Group(this, SWT.NONE);
- emulatorBuildOptionsGroup.setLayout(new GridLayout(1, false));
- GridData gd = new GridData(SWT.FILL, SWT.CENTER, true, false, 3, 1);
- emulatorBuildOptionsGroup.setLayoutData(gd);
- emulatorBuildOptionsGroup.setText("Build Variant Details"); //$NON-NLS-1$
-
- configCmdLabel = new Label(emulatorBuildOptionsGroup, SWT.CHECK);
- configCmdLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
- releaseTreeLabel = new Label(emulatorBuildOptionsGroup, SWT.CHECK);
- releaseTreeLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
- }
-
- public void initData(ICarbideBuildConfiguration buildConfig) {
- this.config = buildConfig;
- ISBSv2BuildConfigInfo sbsv2ConfigInfo = ((CarbideBuildConfiguration)buildConfig).getSBSv2ConfigInfo();
- if (sbsv2ConfigInfo != null && sbsv2ConfigInfo.getSBSv2Setting(ISBSv2BuildConfigInfo.ATTRIB_SBSV2_VARIANT) != null){
- variantEdit.setText(sbsv2ConfigInfo.getSBSv2Setting(ISBSv2BuildConfigInfo.ATTRIB_SBSV2_VARIANT));
- } else {
- variantEdit.setText("");
- }
-
- setVaraintDetailsText();
- }
-
- private void setVaraintDetailsText() {
-
- String configCmdText = configCmdLabelPrefixText;
- if (config != null){
- if (config.getSBSv2Alias() == null){
- configCmdText += config.getPlatformString().toLowerCase() + "_" + config.getTargetString().toLowerCase() + variantEdit.getText();
- } else {
- configCmdText += config.getSBSv2Alias() + variantEdit.getText();
- }
- }
- configCmdLabel.setText(configCmdText);
-
- String variantText = SBSv2Utils.getVariantOutputDirModifier(variantEdit.getText());
- if (variantText == null) variantText = "";
- String relTreeText = releaseTreeLabelPrefixText;
- if (config != null){
- relTreeText += " " + config.getSDK().getEPOCROOT() + "epoc32" + File.separator + "release" + File.separator + config.getPlatformString().toLowerCase() + variantText + File.separator + config.getTargetString().toLowerCase();
- }
- releaseTreeLabel.setText(relTreeText);
- }
-
-
-
- public boolean compareConfigurationSettings(ICarbideBuildConfiguration selectedConfig, boolean writeToConfig) {
- boolean settingsEqual = true;
-
- ISBSv2BuildConfigInfo currSBSv2Info = ((CarbideBuildConfiguration)selectedConfig).getSBSv2ConfigInfo();
- if (currSBSv2Info != null){
- settingsEqual = currSBSv2Info.getSBSv2Setting(ISBSv2BuildConfigInfo.ATTRIB_SBSV2_VARIANT).equals(variantEdit.getText());
-
- if (!settingsEqual && writeToConfig) {
- currSBSv2Info.setSBSv2Setting(ISBSv2BuildConfigInfo.ATTRIB_SBSV2_VARIANT, variantEdit.getText());
- }
- }
-
- return settingsEqual;
- }
-
- public void performDefaults(ISymbianSDK sdk) {
- variantEdit.setText("");
- }
-}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/SisFilesBlock.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/SisFilesBlock.java Wed Aug 25 12:42:09 2010 -0500
@@ -61,6 +61,7 @@
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cdt.builder.project.ISISBuilderInfo;
import com.nokia.carbide.cdt.internal.api.builder.SISBuilderInfo2;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDKFeatures;
/**
* A composite that displays files in a table. Files can be
@@ -297,7 +298,7 @@
listCopy.add(new SISBuilderInfo2(info));
}
- isEKA2 = buildConfig.getSDK().isEKA2();
+ isEKA2 = buildConfig.getSDK().getSupportedFeatures().contains(ISymbianSDKFeatures.IS_EKA2);
setFiles(listCopy);
--- a/builder/com.nokia.carbide.cpp.builder.utils/src/com/nokia/carbide/cpp/internal/builder/utils/handlers/ABLDCommandHandler.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cpp.builder.utils/src/com/nokia/carbide/cpp/internal/builder/utils/handlers/ABLDCommandHandler.java Wed Aug 25 12:42:09 2010 -0500
@@ -37,6 +37,7 @@
import com.nokia.carbide.cdt.builder.builder.CarbideCommandLauncher;
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils;
public class ABLDCommandHandler extends ProjectCommandHandler {
@@ -180,7 +181,8 @@
args.add(buildConfig.getPlatformString().toLowerCase());
args.add(buildConfig.getTargetString().toLowerCase());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldTargetArgs().split(" ")) { //$NON-NLS-1$
+ ISBSv1BuildContext sbsv1Context = (ISBSv1BuildContext)buildConfig;
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldTargetArgs().split(" ")) { //$NON-NLS-1$
args.add(arg);
}
@@ -191,7 +193,8 @@
List<String> args = new ArrayList<String>();
args.add("export"); //$NON-NLS-1$
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldExportArgs().split(" ")) { //$NON-NLS-1$
+ ISBSv1BuildContext sbsv1Context = (ISBSv1BuildContext)buildConfig;
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldExportArgs().split(" ")) { //$NON-NLS-1$
args.add(arg);
}
@@ -204,7 +207,8 @@
args.add(buildConfig.getPlatformString().toLowerCase());
args.add(buildConfig.getTargetString().toLowerCase());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldResourceArgs().split(" ")) { //$NON-NLS-1$
+ ISBSv1BuildContext sbsv1Context = (ISBSv1BuildContext)buildConfig;
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldResourceArgs().split(" ")) { //$NON-NLS-1$
args.add(arg);
}
@@ -217,7 +221,8 @@
args.add(buildConfig.getPlatformString().toLowerCase());
args.add(buildConfig.getTargetString().toLowerCase());
- for (String arg : buildConfig.getBuildArgumentsInfo().getAbldFinalArgs().split(" ")) { //$NON-NLS-1$
+ ISBSv1BuildContext sbsv1Context = (ISBSv1BuildContext)buildConfig;
+ for (String arg : sbsv1Context.getBuildArgumentsInfo().getAbldFinalArgs().split(" ")) { //$NON-NLS-1$
args.add(arg);
}
--- a/builder/com.nokia.carbide.cpp.builder.utils/src/com/nokia/carbide/cpp/internal/builder/utils/handlers/BuildPKGCommandHandler.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cpp.builder.utils/src/com/nokia/carbide/cpp/internal/builder/utils/handlers/BuildPKGCommandHandler.java Wed Aug 25 12:42:09 2010 -0500
@@ -48,7 +48,7 @@
import com.nokia.carbide.cdt.builder.builder.CarbideCommandLauncher;
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
-import com.nokia.carbide.cpp.internal.api.sdk.SymbianBuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.BuildContextSBSv1;
import com.nokia.carbide.cpp.internal.builder.utils.Activator;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils;
@@ -153,7 +153,8 @@
bldMakeLauncher.showCommand(true);
String defaultConfigName = cpi.getDefaultBuildConfigName();
ICarbideBuildConfiguration defaultConfig = cpi.getDefaultConfiguration();
- ISymbianBuildContext context = SymbianBuildContext.getBuildContextFromDisplayName(defaultConfigName);
+ // TODO: YUCKY!!!
+ ISymbianBuildContext context = BuildContextSBSv1.getBuildContextFromDisplayName(defaultConfigName);
bldMakeLauncher.startTimingStats();
--- a/builder/com.nokia.carbide.cpp.builder.utils/src/com/nokia/carbide/cpp/internal/builder/utils/handlers/BuilderUtilsPropertyTester.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cpp.builder.utils/src/com/nokia/carbide/cpp/internal/builder/utils/handlers/BuilderUtilsPropertyTester.java Wed Aug 25 12:42:09 2010 -0500
@@ -61,14 +61,6 @@
if (!CarbideBuilderPlugin.getBuildManager().isCarbideProject(file.getProject())) {
return false;
}
-
- if (CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(file.getProject())) {
- Version sbsVers = SDKCorePlugin.getSDKManager().getSBSv2Version(false);
- if (sbsVers.compareTo(SDKCorePlugin.getSDKManager().getMinimumSupportedSBSv2Version()) >= 0)
- return true;
- else
- return false;
- }
}
return true;
}
--- a/builder/com.nokia.carbide.cpp.builder.utils/src/com/nokia/carbide/cpp/internal/builder/utils/handlers/CompileHandler.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cpp.builder.utils/src/com/nokia/carbide/cpp/internal/builder/utils/handlers/CompileHandler.java Wed Aug 25 12:42:09 2010 -0500
@@ -80,7 +80,7 @@
IProject lastProject = selectedFiles.get(0).getProject();
ICarbideProjectInfo cpi = CarbideBuilderPlugin.getBuildManager().getProjectInfo(lastProject);
- String[] errorParserIds = CarbideCPPBuilder.getParserIdArray(cpi.getDefaultConfiguration().getErrorParserId());
+ String[] errorParserIds = cpi.getDefaultConfiguration().getErrorParserList();
IPath workingDirectory = cpi.getINFWorkingDirectory();
// create the launcher for the first file's project. if there are files selected for other projects, change the
@@ -104,7 +104,7 @@
if (lastProject != project && path != null) {
lastProject = project;
cpi = CarbideBuilderPlugin.getBuildManager().getProjectInfo(lastProject);
- errorParserIds = CarbideCPPBuilder.getParserIdArray(cpi.getDefaultConfiguration().getErrorParserId());
+ errorParserIds = cpi.getDefaultConfiguration().getErrorParserList();
workingDirectory = cpi.getINFWorkingDirectory();
launcher = new CarbideCommandLauncher(lastProject, monitor, errorParserIds, workingDirectory);
launcher.showCommand(true);
--- a/builder/com.nokia.carbide.cpp.builder.utils/src/com/nokia/carbide/cpp/internal/builder/utils/handlers/ComponentCommandHandler.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cpp.builder.utils/src/com/nokia/carbide/cpp/internal/builder/utils/handlers/ComponentCommandHandler.java Wed Aug 25 12:42:09 2010 -0500
@@ -242,7 +242,7 @@
IProject lastProject = selectedFiles.get(0).getProject();
ICarbideProjectInfo cpi = CarbideBuilderPlugin.getBuildManager().getProjectInfo(lastProject);
- String[] errorParserIds = CarbideCPPBuilder.getParserIdArray(cpi.getDefaultConfiguration().getErrorParserId());
+ String[] errorParserIds = cpi.getDefaultConfiguration().getErrorParserList();
IPath workingDirectory = cpi.getINFWorkingDirectory();
// create the launcher for the first file's project. if there are files selected for other projects, change the
@@ -273,7 +273,7 @@
lastProject = project;
cpi = CarbideBuilderPlugin.getBuildManager().getProjectInfo(lastProject);
- errorParserIds = CarbideCPPBuilder.getParserIdArray(cpi.getDefaultConfiguration().getErrorParserId());
+ errorParserIds = cpi.getDefaultConfiguration().getErrorParserList();
workingDirectory = cpi.getINFWorkingDirectory();
launcher = new CarbideCommandLauncher(lastProject, monitor, errorParserIds, workingDirectory);
launcher.showCommand(true);
--- a/builder/com.nokia.carbide.cpp.builder.utils/src/com/nokia/carbide/cpp/internal/builder/utils/handlers/PreprocessHandler.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cpp.builder.utils/src/com/nokia/carbide/cpp/internal/builder/utils/handlers/PreprocessHandler.java Wed Aug 25 12:42:09 2010 -0500
@@ -73,6 +73,7 @@
import com.nokia.carbide.cdt.builder.builder.CarbideCommandLauncher;
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
+import com.nokia.carbide.cdt.internal.builder.CarbideBuildConfiguration;
import com.nokia.carbide.cpp.epoc.engine.EpocEnginePlugin;
import com.nokia.carbide.cpp.epoc.engine.MMPDataRunnableAdapter;
import com.nokia.carbide.cpp.epoc.engine.model.mmp.EMMPLanguage;
@@ -80,6 +81,7 @@
import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPData;
import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPResource;
import com.nokia.carbide.cpp.epoc.engine.preprocessor.AcceptedNodesViewFilter;
+import com.nokia.carbide.cpp.epoc.engine.preprocessor.IDefine;
import com.nokia.carbide.cpp.internal.builder.utils.Activator;
import com.nokia.carbide.cpp.internal.builder.utils.ui.LanguageSelectionDialog;
import com.nokia.carbide.cpp.internal.builder.utils.ui.PreprocessPreferencePage;
@@ -128,7 +130,7 @@
e.printStackTrace();
}
- CarbideCommandLauncher launcher = new CarbideCommandLauncher(project, monitor, CarbideCPPBuilder.getParserIdArray(buildConfig.getErrorParserId()), cpi.getINFWorkingDirectory());
+ CarbideCommandLauncher launcher = new CarbideCommandLauncher(project, monitor, buildConfig.getErrorParserList(), cpi.getINFWorkingDirectory());
launcher.showCommand(true);
String cppTool = "cpp" + HostOS.EXE_EXT; //$NON-NLS-1$
@@ -189,14 +191,15 @@
}
// add the compiler prefix file if any
- IPath compilerPrefix = buildConfig.getCompilerPrefixFile();
+ IPath compilerPrefix = buildConfig.getBuildContext().getCompilerPrefixFile();
if (compilerPrefix != null) {
args.add("-include"); //$NON-NLS-1$
args.add("\"" + compilerPrefix.toOSString() + "\""); //$NON-NLS-1$ //$NON-NLS-2$
}
// add the sdk prefix file if any
- File sdkPrefix = buildConfig.getSDK().getPrefixFile();
+ File sdkPrefix = buildConfig.getBuildContext().getPrefixFromVariantCfg().toFile();
+
if (sdkPrefix != null && sdkPrefix.exists()) {
args.add("-include"); //$NON-NLS-1$
args.add("\"" + sdkPrefix.getAbsolutePath() + "\""); //$NON-NLS-1$ //$NON-NLS-2$
@@ -404,19 +407,18 @@
private List<String> getMacros(ICarbideBuildConfiguration buildConfig, final IPath filePath, final IProgressMonitor monitor) {
final List<String> macros = new ArrayList<String>();
- // platform macros
- for (String platMacro : buildConfig.getSDK().getPlatformMacros(buildConfig.getPlatformString())) {
- macros.add("__" + platMacro + "__"); //$NON-NLS-1$ //$NON-NLS-2$
+ List<IDefine> buildMacros = buildConfig.getBuildContext().getBuildMacros();
+ for (IDefine define : buildMacros){
+ macros.add(define.getName());
}
- // built in macros
- for (String builtinMacro : buildConfig.getBuiltinMacros()) {
- macros.add(builtinMacro);
+ List<IDefine> metaDataMacros = buildConfig.getBuildContext().getMetadataMacros();
+ for (IDefine define : metaDataMacros){
+ macros.add(define.getName());
}
- // vendor macros (e.g. __SERIES60_3x__)
- for (String builtinMacro : buildConfig.getSDK().getVendorSDKMacros()) {
- macros.add(builtinMacro);
+ if (((CarbideBuildConfiguration)buildConfig).hasSTDCPPSupport()){
+ macros.add("__SYMBIAN_STDCPP_SUPPORT__");
}
IProject project = buildConfig.getCarbideProject().getProject();
@@ -429,14 +431,14 @@
// target type macro (e.g. __DLL__)
EpocEnginePlugin.runWithMMPData(workspaceRelativeMMPPath,
- new DefaultMMPViewConfiguration(project, buildConfig, new AcceptedNodesViewFilter()),
+ new DefaultMMPViewConfiguration(project, buildConfig.getBuildContext(), new AcceptedNodesViewFilter()),
new MMPDataRunnableAdapter() {
public Object run(IMMPData mmpData) {
String targetType = mmpData.getSingleArgumentSettings().get(EMMPStatement.TARGETTYPE);
if (targetType != null) {
targetType = targetType.toUpperCase();
- macros.add(targetType);
+ macros.add("__" + targetType + "__");
}
// mmp macros
--- a/builder/com.nokia.carbide.cpp.builder.utils/src/com/nokia/carbide/cpp/internal/builder/utils/handlers/ProjectCommandHandler.java Tue Aug 24 16:42:58 2010 -0500
+++ b/builder/com.nokia.carbide.cpp.builder.utils/src/com/nokia/carbide/cpp/internal/builder/utils/handlers/ProjectCommandHandler.java Wed Aug 25 12:42:09 2010 -0500
@@ -180,7 +180,7 @@
SubMonitor subMonitor = SubMonitor.convert(monitor, buildConfigList.size());
for (final ICarbideBuildConfiguration currConfig : buildConfigList) {
- launcher.setErrorParserManager(cpi.getINFWorkingDirectory(), CarbideCPPBuilder.getParserIdArray(currConfig.getErrorParserId()));
+ launcher.setErrorParserManager(cpi.getINFWorkingDirectory(), currConfig.getErrorParserList());
if (monitor.isCanceled()) {
return new Status(IStatus.CANCEL, "Carbide.c++ builder utils plugin", IStatus.CANCEL, "Build Cancelled", null);
@@ -221,7 +221,7 @@
ICarbideProjectInfo cpi = CarbideBuilderPlugin.getBuildManager().getProjectInfo(project);
final ICarbideBuildConfiguration defaultConfig = cpi.getDefaultConfiguration();
- Job buildJob = new Job("Freezing Configuration - " + defaultConfig.getDisplayString()) {
+ Job buildJob = new Job("Freezing Configuration - " + defaultConfig.getBuildContext().getDisplayString()) {
protected IStatus run(IProgressMonitor monitor) {
CarbideCPPBuilder.invokeFreeze(defaultConfig, monitor, true);
Activator.refreshProjectAfterFreeze(project);
--- a/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/reference/api_Change_Notes.htm Tue Aug 24 16:42:58 2010 -0500
+++ b/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/reference/api_Change_Notes.htm Wed Aug 25 12:42:09 2010 -0500
@@ -107,13 +107,44 @@
<li>Added <em> com.nokia.carbide.cdt.builder.project.ISymbianBuildConfiguration#getTargetOutputDirectory( )</em>.</li>
</ul>
-<p>Since Carbide 3.0.0</p>
+<p>Since Carbide 3.0.0 (C3)</p>
<ul>
- <li>IConnectionsManager was updated to indicate it is not intended to be implemented by clients.
+
+ <li>C3 is an API breaking release, primarily around areas of Symbian SDK management and Symbian build support.
+ This release removes support for Symbian OS versions prior to 9.4 (i.e. only support for Symbian^2 and up are supported).
+ Management of Symbian SDKs has been simplified and the APIs have been trimmed to reflect this.</li>
+
+ <li><i>ISymbianSDK</i></li>
+ <ul>
+ <li>added <i>getSupportedFeatures()</i> - see <i>com.nokia.carbide.cpp.sdk.core#ISymbianSDKFeatures</i> for supported feature constants.</li>
+ <li>added <i>ISDKBuildInfo getBuildInfo(String builderId)</i> - This is used to get the base data (ISymbianBuildContext) for a build configuration, depending on the builder you are using (e.g. abld versus sbsv2). See also <i>com.nokia.carbide.cpp.sdk.core#ISDKBuildInfo</i> </li>
+ </ul>
+
+ <li><i>com.nokia.carbide.cpp.sdk.core#ISDKBuildInfo</i> was added.</li>
+ <li><i>com.nokia.carbide.cpp.sdk.core#ISBSv1BuildContext</i> was added.</li>
+ <li><i>com.nokia.carbide.cpp.sdk.core#ISBSv2BuildContext</i> was added.</li>
+ <li><i>com.nokia.carbide.cpp.sdk.core#ISBSv2BuiISymbianSDKFeatures</i> was added.</li>
+
+ <li><i>ICarbideBuildConfiguration</i></li>
+ <ul>
+ <li>added <i>ISymbianBuildContext getBuildContext()</i></li>
+ <li>added <i>getDisplayString()</i> - A convenience wrapper for ISymbiabBuildContext</li>
+ <li>added <i>getSDK()</i> - A convenience wrapper for ISymbiabBuildContext</li>
+ <li>added <i>getPlatformString()</i> - A convenience wrapper for ISymbiabBuildContext</li>
+ <li>added <i>getTargetString()</i> - A convenience wrapper for ISymbiabBuildContext</li>
+ <li>added <i>hasSTDCPPSupport()</i></li>
+ </ul>
+
+ <li><i>ISymbianBuildContext</i> - This interface is no longer implemented by ICarbideBuildConfiguration. Rather, it is now an abstracted interface for builders to provide base build data for an <i>ICarbideBuildConfiguration</i> instance</li>
+ <p/>
+ <ul>Due to this change, methods that take ISymbiabBuildContext as a parameter may have been using the ICarbideBuildConfiguraiton interface. For example, in <i>com.nokia.carbide.cdt.builder#DefaultMMPViewConfiguration.</i>
+ For these calls, simply add <i>.getBuildContext()</i> to the <i>ICarbideBuildConfiguration</i> instance to explicitly pass the <i>ISymbianBuildContext</i>.</ul>
+
+ <li><i>IConnectionsManager</i> was updated to indicate it is not intended to be implemented by clients.
<li>Added several new methods to support automated connection/device discovery agents and default connections.</li>
- <li>Deprecated IClientServiceSiteUI and adding new IClientServiceSiteUI2 to support concept of default connection
+ <li>Deprecated <i>IClientServiceSiteUI</i> and adding new <i>IClientServiceSiteUI2</i> to support concept of default connection
<ul>
- <li>getSelectedConnection() and selectConnection() now use connection ids rather than connection objects
+ <li><i>getSelectedConnection()</i> and <i>selectConnection()</i> now use connection ids rather than connection objects
<li>Exposing new selection status to allow reporting when default connection is not supported by client service
</ul>
</ul>
@@ -162,6 +193,12 @@
<ul>
<li><i>com.nokia.carbide.cdt.builder.builder.CarbideCPPBuilder#generateAbldMakefileIfNecessary(ICarbideBuildConfiguration config, CarbideCommandLauncher launcher, IPath componentPath, boolean isTest)</i></li>
</ul>
+
+<p>Since Carbide 3.0</p>
+<ul>
+ <li><i>ISymbiabSDK#getOSVersion</i> - use ISymbianSDK#getSupportedFeatures instead to test for properties of an SDK.</li>
+</ul>
+
<h3>Removed APIs</h3>
<p>The following Carbide APIs have been removed and are no longer available to plug-ins.</p>
<p>Since Carbide 1.2.0</p>
@@ -192,6 +229,33 @@
<li>None</li>
</ul>
+<p>Since Carbide 3.0</p>
+<ul>
+ <li><i>com.nokia.carbide.cpp.sdk.core#ISymbianSDK</i> removed several methods. Please refer to the source code.</li>
+ <p/>
+ <ul>
+ <li><i>getFilteredBuildConfigurations()</i> has been removed. Please use <i>ISymbianSDK#getBuildInfo(String builderId).getFilteredBuildConfigurations()</i> instead. </li>
+ <li><i>getSDKVersion()</i> has been removed. Users should not use SDK and OS version any longer but use <i>ISymbianSDK#getSupportedFeatures()</i> instead.</li>
+ </ul>
+
+ <li><i>ICarbideBuildConfiguration</i> no longer implements <i>ISymbianBuildContext</i>. You will need to use the <i>ICarbideBuildConfiguration#getBuildContext()</i> to access most build context specific data.</li>
+
+ <li><i>com.nokia.carbide.cpp.sdk.core#ISDKManager</i> removed several methods.</li>
+ <p/>
+ <ul>
+ <li><i>getSymbianMacroStore()</i> has been removed. </li>
+ <li><i>getBSFScannerEnabled()</i> has been removed.</li>
+ <li><i>enableBSFScanner(boolean enabled)</i> has been removed.</li>
+ <li><i>setPlatformList(List<BuildPlat> platList)</i> has been removed.</li>
+ <li><i>getPlatformList()</i> has been removed.</li>
+ <li><i>getCSLArmToolchainInstallPathAndCheckReqTools()</i> has been removed.</li>
+ <li><i>checkDevicesXMLSynchronized()</i> has been removed.</li>
+ <li><i>getSBSv2Version(boolean forceScan)</i> has been removed.</li>
+ <li><i>getMinimumSupportedSBSv2Version()</i> has been removed.</li>
+ </ul>
+
+</ul>
+
<div id="footer">Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
</div></body>
</html>
--- a/carbidesdk/com.nokia.carbide.cpp.sdk.examples/src/com/nokia/carbide/cpp/sdk/examples/jobs/NewProjectJob.java Tue Aug 24 16:42:58 2010 -0500
+++ b/carbidesdk/com.nokia.carbide.cpp.sdk.examples/src/com/nokia/carbide/cpp/sdk/examples/jobs/NewProjectJob.java Wed Aug 25 12:42:09 2010 -0500
@@ -142,7 +142,7 @@
List<ISymbianBuildContext> result = new ArrayList<ISymbianBuildContext>();
List<ISymbianSDK> sdks = SDKCorePlugin.getSDKManager().getSDKList();
ISymbianSDK sdk = sdks.get(0);
- result.addAll(sdk.getFilteredBuildConfigurations());
+ result.addAll(sdk.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER).getFilteredBuildConfigurations());
return result;
}
--- a/carbidesdk/com.nokia.carbide.cpp.sdk.examples/src/com/nokia/carbide/cpp/sdk/examples/jobs/ProjectReportJob.java Tue Aug 24 16:42:58 2010 -0500
+++ b/carbidesdk/com.nokia.carbide.cpp.sdk.examples/src/com/nokia/carbide/cpp/sdk/examples/jobs/ProjectReportJob.java Wed Aug 25 12:42:09 2010 -0500
@@ -310,7 +310,7 @@
emitPara(infPath.toString(), null);
IResource resource = project.findMember(infPath);
IPath bldInfPath = resource.getFullPath();
- IViewConfiguration viewConfig = new DefaultViewConfiguration(info, buildConfiguration);
+ IViewConfiguration viewConfig = new DefaultViewConfiguration(info, buildConfiguration.getBuildContext());
EpocEnginePlugin.runWithBldInfView(bldInfPath, viewConfig, this);
worked(1);
@@ -394,7 +394,7 @@
IResource mmpResource = project.findMember(mmpPath);
if (mmpResource != null ) {
IMMPViewConfiguration viewConfig = new DefaultMMPViewConfiguration(project,
- buildConfiguration, new AcceptedNodesViewFilter());
+ buildConfiguration.getBuildContext(), new AcceptedNodesViewFilter());
EpocEnginePlugin.runWithMMPView(mmpResource.getFullPath(), viewConfig, this);
} else {
emitPara(mmpPath.toString() + " not found.", null);
--- a/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/CSScanner.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/CSScanner.java Wed Aug 25 12:42:09 2010 -0500
@@ -274,7 +274,7 @@
ICarbideProjectInfo cpi = CarbideBuilderPlugin.getBuildManager().getProjectInfo(project);
if (cpi != null) {
ICarbideBuildConfiguration buildConfig = cpi.getDefaultConfiguration();
- IMMPViewConfiguration viewConfiguration = new DefaultMMPViewConfiguration(project, buildConfig, new AcceptedNodesViewFilter());
+ IMMPViewConfiguration viewConfiguration = new DefaultMMPViewConfiguration(project, buildConfig.getBuildContext(), new AcceptedNodesViewFilter());
EpocEnginePathHelper helper = new EpocEnginePathHelper(cpi.getProject());
IPath workspaceRelativeMMPPath = helper.convertToWorkspace(inMMPPath);
final String epocRoot = buildConfig.getSDK().getEPOCROOT();
@@ -312,7 +312,7 @@
ICarbideProjectInfo cpi = CarbideBuilderPlugin.getBuildManager().getProjectInfo(project);
if (cpi != null) {
ICarbideBuildConfiguration buildConfig = cpi.getDefaultConfiguration();
- IMMPViewConfiguration viewConfiguration = new DefaultMMPViewConfiguration(project, buildConfig, new AcceptedNodesViewFilter());
+ IMMPViewConfiguration viewConfiguration = new DefaultMMPViewConfiguration(project, buildConfig.getBuildContext(), new AcceptedNodesViewFilter());
final EpocEnginePathHelper pathHelper = new EpocEnginePathHelper(cpi.getProject());
IPath workspaceRelativeMMPPath = pathHelper.convertToWorkspace(inMMPPath);
final String epocRoot = buildConfig.getSDK().getEPOCROOT();
--- a/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/kb/CSKbManager.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/kb/CSKbManager.java Wed Aug 25 12:42:09 2010 -0500
@@ -40,6 +40,7 @@
import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildInfo;
import com.nokia.carbide.cpp.internal.codescanner.CSPlugin;
import com.nokia.carbide.cpp.internal.codescanner.Messages;
import com.nokia.carbide.cpp.internal.codescanner.config.CSConfigSettings;
@@ -68,6 +69,7 @@
import com.nokia.carbide.cpp.internal.codescanner.gen.Kbdata.SolutionType;
import com.nokia.carbide.cpp.internal.codescanner.gen.Kbdata.SymptomType;
import com.nokia.carbide.cpp.internal.codescanner.xml.CSKbdataXMLLoader;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
/**
@@ -392,8 +394,9 @@
List<ICarbideBuildConfiguration> buildConfigList = projectInfo.getBuildConfigurations();
for (Iterator<ICarbideBuildConfiguration> iterator = buildConfigList.iterator(); iterator.hasNext();) {
ICarbideBuildConfiguration buildConfig = iterator.next();
- ISymbianSDK sdk = buildConfig.getSDK();
- Version version = sdk.getSDKVersion();
+ // TODO: What is SDK version used for for codescanner?
+// Version version = buildConfig.getSDK().getSDKVersion();
+ Version version = new Version("5.0.0");
sdkVersions.add(version);
}
}
--- a/core/com.nokia.carbide.cpp.sdk.core.test/src/com/nokia/carbide/cpp/sdk/core/test/AllTests.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core.test/src/com/nokia/carbide/cpp/sdk/core/test/AllTests.java Wed Aug 25 12:42:09 2010 -0500
@@ -33,6 +33,8 @@
suite.addTestSuite(SymbianContextTest.class);
suite.addTestSuite(TestSDKChangeListener.class);
suite.addTestSuite(TestDevicesXMLListener.class);
+ suite.addTestSuite(TestCarbideSDKCache.class);
+ suite.addTestSuite(TestSBSv2BuildContext.class);
//$JUnit-END$
return suite;
}
--- a/core/com.nokia.carbide.cpp.sdk.core.test/src/com/nokia/carbide/cpp/sdk/core/test/DevicesLoaderTest.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core.test/src/com/nokia/carbide/cpp/sdk/core/test/DevicesLoaderTest.java Wed Aug 25 12:42:09 2010 -0500
@@ -16,6 +16,12 @@
*/
package com.nokia.carbide.cpp.sdk.core.test;
+import java.util.Iterator;
+
+import org.eclipse.emf.common.util.EList;
+import org.osgi.framework.Version;
+
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildInfo;
import com.nokia.carbide.cpp.internal.sdk.core.gen.Devices.DeviceType;
import com.nokia.carbide.cpp.internal.sdk.core.gen.Devices.DevicesType;
import com.nokia.carbide.cpp.internal.sdk.core.xml.DevicesLoader;
@@ -24,11 +30,6 @@
import com.nokia.cpp.internal.api.utils.core.FileUtils;
import com.nokia.cpp.internal.api.utils.core.HostOS;
-import org.eclipse.emf.common.util.EList;
-import org.osgi.framework.Version;
-
-import java.util.Iterator;
-
/**
* NOTE: this test expects all three methods to be run in order.
*
@@ -59,13 +60,13 @@
Version osVersion = new Version("9.1");
Version sdkVersion = new Version("3.0");
- ISymbianSDK sdk = SymbianSDKFactory.createInstance(S60_SDKID, M_DRIVE, ISymbianSDK.SERIES60_SDK_NAME, osVersion, "", sdkVersion, true);
+ ISymbianSDK sdk = SymbianSDKFactory.createInstance(S60_SDKID, M_DRIVE, osVersion);
DevicesLoader.updateDevice(sdk, devicesFile.toURI().toURL());
- sdk = SymbianSDKFactory.createInstance(TV_SDKID, P_DRIVE, ISymbianSDK.TECHVIEW_SDK_NAME, osVersion, "", sdkVersion, false);
+ sdk = SymbianSDKFactory.createInstance(TV_SDKID, P_DRIVE, osVersion);
DevicesLoader.updateDevice(sdk, devicesFile.toURI().toURL());
- sdk = SymbianSDKFactory.createInstance(UIQ3_SDKID, UIQ3_EPOCROOT, ISymbianSDK.UIQ_SDK_NAME, osVersion, "", sdkVersion, false);
+ sdk = SymbianSDKFactory.createInstance(UIQ3_SDKID, UIQ3_EPOCROOT, osVersion);
DevicesLoader.updateDevice(sdk, devicesFile.toURI().toURL());
}
--- a/core/com.nokia.carbide.cpp.sdk.core.test/src/com/nokia/carbide/cpp/sdk/core/test/SDKCreationTest.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core.test/src/com/nokia/carbide/cpp/sdk/core/test/SDKCreationTest.java Wed Aug 25 12:42:09 2010 -0500
@@ -16,18 +16,20 @@
*/
package com.nokia.carbide.cpp.sdk.core.test;
+import java.io.File;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.common.util.EList;
+
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildInfo;
import com.nokia.carbide.cpp.internal.sdk.core.gen.Devices.DeviceType;
import com.nokia.carbide.cpp.internal.sdk.core.gen.Devices.DevicesType;
import com.nokia.carbide.cpp.internal.sdk.core.model.SymbianSDK;
import com.nokia.carbide.cpp.internal.sdk.core.xml.DevicesLoader;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
import com.nokia.cpp.internal.api.utils.core.FileUtils;
-import org.eclipse.emf.common.util.EList;
-
-import java.io.File;
-import java.util.Iterator;
-import java.util.List;
-
public class SDKCreationTest extends BaseDeviceModifierTest {
protected void setUp() throws Exception {
@@ -48,22 +50,22 @@
for (Iterator iter = devices.iterator(); iter.hasNext();) {
SymbianSDK sdk = new SymbianSDK((DeviceType) iter.next());
assertNotNull(sdk);
+ ISBSv1BuildInfo sbsv1BuildInfo = (ISBSv1BuildInfo)sdk.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER);
// Test an SDK that exists and we know OS version
if (sdk.getUniqueId().equals("UIQ3")){
- List<String> platMacros = sdk.getPlatformMacros("WINSCW");
+ List<String> platMacros = sbsv1BuildInfo.getPlatformMacros("WINSCW");
assertTrue(platMacros != null);
assertEquals(3, platMacros.size());
- assertTrue(sdk.getFilteredBuildConfigurations().size() > 0);
+ assertTrue(sbsv1BuildInfo.getFilteredBuildConfigurations().size() > 0);
}
// Test an SDK that does not exist. Check for proper null values
else if (sdk.getUniqueId().equals("SDK_No_Exist")){
+ if (sbsv1BuildInfo != null) {
+ assertTrue(sbsv1BuildInfo.getAvailablePlatforms().size() == 0);
+ assertTrue(sbsv1BuildInfo.getFilteredBuildConfigurations().size() == 0);
+ }
assertTrue(sdk.getOSVersion().getMajor() == 0);
- assertTrue(sdk.getSDKVersion().getMajor() == 0);
- assertTrue(sdk.getPlatformMacros("WINSCW").size() == 0);
- assertTrue(sdk.getProjectVariantHRHMacros().size() == 0);
- assertTrue(sdk.getAvailablePlatforms().size() == 0);
- assertTrue(sdk.getFilteredBuildConfigurations().size() == 0);
- assertTrue(sdk.getSupportedTargetTypes().size() == 0);
+ assertTrue(sbsv1BuildInfo.getPlatformMacros("WINSCW").size() == 0);
File epocRoot = new File(sdk.getEPOCROOT());
assertTrue(epocRoot.exists() == false);
}
--- a/core/com.nokia.carbide.cpp.sdk.core.test/src/com/nokia/carbide/cpp/sdk/core/test/SymbianContextTest.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core.test/src/com/nokia/carbide/cpp/sdk/core/test/SymbianContextTest.java Wed Aug 25 12:42:09 2010 -0500
@@ -18,14 +18,16 @@
import java.util.List;
+import junit.framework.TestCase;
+
import org.osgi.framework.Version;
-import com.nokia.carbide.cpp.internal.api.sdk.SymbianBuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.BuildContextSBSv1;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildInfo;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
-import junit.framework.TestCase;
-
/**
* This test the creation and APIs of the Symbian build context class.
* Much of this functionality is covered by com.nokia.carbide.cpp.build plugin
@@ -58,27 +60,18 @@
* @param sdk
*/
private void doTestSDK(ISymbianSDK sdk) {
- if (sdk.getName().equals("S60_5th_Edition_SDK_v1.0")) {
- // test that we get the SDK version
- Version sdkVer = sdk.getSDKVersion();
- assertEquals(5,sdkVer.getMajor());
- assertEquals(0,sdkVer.getMinor());
-
- // test that we get the OS version
- Version osVer = sdk.getOSVersion();
- assertEquals(9,osVer.getMajor());
- assertEquals(4,osVer.getMinor());
- }
+ ISBSv1BuildInfo sbsv1BuildInfo = (ISBSv1BuildInfo)sdk.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER);
- SymbianBuildContext context = new SymbianBuildContext(sdk, "WINSCW", "UDEB");
+ BuildContextSBSv1 context = new BuildContextSBSv1(sdk, "WINSCW", "UDEB");
ISymbianSDK contextSDK = context.getSDK();
+ sbsv1BuildInfo = (ISBSv1BuildInfo)contextSDK.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER);
assertEquals(sdk, contextSDK);
// test that we can get the macros for valid SDKs
// (if the default of 0.0, then we never fetch macros)
- if (sdk.getOSVersion().compareTo(new Version(0, 0, 0)) > 0) {
- List<String> platMacros = contextSDK.getPlatformMacros("WINSCW");
+ if (sbsv1BuildInfo != null && sdk.getOSVersion().compareTo(new Version(0, 0, 0)) > 0) {
+ List<String> platMacros = sbsv1BuildInfo.getPlatformMacros("WINSCW");
if (platMacros.size() == 0)
fail("WINSCW platform macros should be > 0");
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.core.test/src/com/nokia/carbide/cpp/sdk/core/test/TestCarbideSDKCache.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,129 @@
+package com.nokia.carbide.cpp.sdk.core.test;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.runtime.jobs.IJobChangeEvent;
+import org.eclipse.core.runtime.jobs.IJobChangeListener;
+import org.eclipse.core.runtime.jobs.Job;
+import org.osgi.framework.Version;
+
+import com.nokia.carbide.cpp.internal.api.sdk.SDKCacheUtils;
+import com.nokia.carbide.cpp.internal.api.sdk.sbsv2.SBSv2QueryUtils;
+import com.nokia.carbide.cpp.internal.sdk.core.model.AbstractSDKManager;
+import com.nokia.carbide.cpp.internal.sdk.core.model.SDKManager;
+import com.nokia.carbide.cpp.internal.sdk.core.model.SDKManagerCacheEntry;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.SymbianSDKFactory;
+
+public class TestCarbideSDKCache extends TestCase {
+
+ private class TestSDKManager extends SDKManager {
+
+ @SuppressWarnings("unchecked")
+ public TestSDKManager() {
+ Map<String, SDKManagerCacheEntry> cache = SDKCacheUtils.getCache().getCachedData(SDK_MANAGER_CACHE_KEY, Map.class, 0);
+ if (cache == null) {
+ cache = new HashMap<String, SDKManagerCacheEntry>();
+ SDKCacheUtils.getCache().putCachedData(SDK_MANAGER_CACHE_KEY, (Serializable)cache, 0);
+ }
+ }
+
+ public void clearCache() {
+ clearSDKCache();
+ }
+
+ @SuppressWarnings("unchecked")
+ public Map<String, SDKManagerCacheEntry> getCache() {
+ Map<String, SDKManagerCacheEntry> cache = SDKCacheUtils.getCache().getCachedData(SDK_MANAGER_CACHE_KEY, Map.class, 0);
+ if (cache == null) {
+ cache = new HashMap<String, SDKManagerCacheEntry>();
+ SDKCacheUtils.getCache().putCachedData(SDK_MANAGER_CACHE_KEY, (Serializable)cache, 0);
+ }
+ return cache;
+ }
+
+ public SDKManagerCacheEntry getCacheEntry(String id) {
+ return getSDKCacheEntry(id);
+ }
+
+ public Job getScanJob() {
+ return scanJob;
+ }
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ public void testCacheCreation() throws Exception {
+ final TestSDKManager manager = new TestSDKManager();
+ manager.clearCache();
+ IJobChangeListener listener = new IJobChangeListener() {
+
+ public void sleeping(IJobChangeEvent event) {
+ }
+
+ public void scheduled(IJobChangeEvent event) {
+ }
+
+ public void running(IJobChangeEvent event) {
+ }
+
+ public void done(IJobChangeEvent event) {
+ Map<String, SDKManagerCacheEntry> cache = manager.getCache();
+ assertNotNull(cache);
+ }
+
+ public void awake(IJobChangeEvent event) {
+ }
+
+ public void aboutToRun(IJobChangeEvent event) {
+ }
+ };
+ manager.addScanJobListner(listener);
+ manager.scanSDKs();
+ manager.getScanJob().join();
+ manager.removeScanJobLisner(listener);
+ }
+
+ public void testCacheModification() throws Exception {
+ final TestSDKManager manager = new TestSDKManager();
+ manager.scanSDKs();
+ manager.getScanJob().join();
+ assertTrue(manager.getSDKList().isEmpty() == manager.getCache().isEmpty());
+ manager.clearCache();
+ assertNull(SDKCacheUtils.getCache().getCache(AbstractSDKManager.SDK_MANAGER_CACHE_KEY));
+ final String sdkId = "test";
+ ISymbianSDK sdk = SymbianSDKFactory.createInstance(sdkId, "C:\\", new Version("9.5"));
+ manager.addSDK(sdk);
+ assertFalse(manager.getCache().isEmpty());
+ assertNotNull(manager.getCacheEntry(sdkId));
+ manager.updateSDK(sdk);
+ assertFalse(manager.getCache().isEmpty());
+ assertNotNull(manager.getCacheEntry(sdkId));
+ manager.removeSDK(sdkId);
+ assertNull(manager.getCacheEntry(sdkId));
+ }
+
+ public void testSBSv2QueryCache() throws Exception {
+ SBSv2QueryUtils.removeAllCachedQueries();
+ assertNull(SDKCacheUtils.getCache().getCache(SBSv2QueryUtils.ALIAS_CACHE_KEY));
+ assertNull(SDKCacheUtils.getCache().getCache(SBSv2QueryUtils.PRODUCT_CACHE_KEY));
+ assertNull(SDKCacheUtils.getCache().getCache(SBSv2QueryUtils.CONFIG_CACHE_KEY));
+ final TestSDKManager manager = new TestSDKManager();
+ manager.scanSDKs();
+ manager.getScanJob().join();
+ assertNull(SDKCacheUtils.getCache().getCache(SBSv2QueryUtils.ALIAS_CACHE_KEY));
+ assertNull(SDKCacheUtils.getCache().getCache(SBSv2QueryUtils.PRODUCT_CACHE_KEY));
+ assertNull(SDKCacheUtils.getCache().getCache(SBSv2QueryUtils.CONFIG_CACHE_KEY));
+ }
+
+}
--- a/core/com.nokia.carbide.cpp.sdk.core.test/src/com/nokia/carbide/cpp/sdk/core/test/TestDevicesXMLListener.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core.test/src/com/nokia/carbide/cpp/sdk/core/test/TestDevicesXMLListener.java Wed Aug 25 12:42:09 2010 -0500
@@ -16,7 +16,10 @@
*/
package com.nokia.carbide.cpp.sdk.core.test;
-import java.io.*;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
import java.net.URL;
import junit.framework.TestCase;
@@ -28,7 +31,11 @@
import com.nokia.carbide.cpp.internal.api.sdk.ICarbideDevicesXMLChangeListener;
import com.nokia.carbide.cpp.internal.api.sdk.ISDKManagerInternal;
import com.nokia.carbide.cpp.internal.api.sdk.SBSv2Utils;
-import com.nokia.carbide.cpp.sdk.core.*;
+import com.nokia.carbide.cpp.internal.sdk.core.model.SDKManager;
+import com.nokia.carbide.cpp.internal.sdk.core.model.SymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.ISDKManager;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
/**
* Tests the ICarbideDevicesXMLChangeListener class
@@ -88,17 +95,17 @@
// Here we just changed the time stamp and not the contents so it should be OK.
- assertTrue("Devices.xml has changed only timestamp, bad return value", sdkMgr.checkDevicesXMLSynchronized());
+ assertTrue("Devices.xml has changed only timestamp, bad return value", ((SDKManager)sdkMgr).checkDevicesXMLSynchronized());
ISymbianSDK sdk = sdkMgr.getSDKList().get(0);
- sdk.setEPOCROOT("K:\\");
+ ((SymbianSDK)sdk).setEPOCROOT("K:\\");
sdkMgr.updateSDK(sdk);
- assertTrue("Devices.xml should still be true with sdk update via APIs", sdkMgr.checkDevicesXMLSynchronized());
+ assertTrue("Devices.xml should still be true with sdk update via APIs", ((SDKManager)sdkMgr).checkDevicesXMLSynchronized());
// copy a different devices.xml file over.
copyFile (pluginRelativeFile(devicesTestFile), devicesFile);
- assertFalse("Devices.xml has changed changed content, should reutrn false. ", sdkMgr.checkDevicesXMLSynchronized());
+ assertFalse("Devices.xml has changed changed content, should reutrn false. ", ((SDKManager)sdkMgr).checkDevicesXMLSynchronized());
ISDKManagerInternal sdkMgrInternal = (ISDKManagerInternal)sdkMgr;
sdkMgrInternal.fireDevicesXMLChanged();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.core.test/src/com/nokia/carbide/cpp/sdk/core/test/TestSBSv2BuildContext.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,107 @@
+package com.nokia.carbide.cpp.sdk.core.test;
+
+import java.io.File;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.TestCase;
+
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildInfo;
+import com.nokia.carbide.cpp.sdk.core.ISDKBuildInfo;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
+
+public class TestSBSv2BuildContext extends TestCase {
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ public void testBuildContextsInSDKs() throws Exception {
+ List<ISymbianSDK> sdkList = SDKCorePlugin.getSDKManager().getSDKList();
+ for (Iterator<ISymbianSDK> sdkItr = sdkList.iterator(); sdkItr.hasNext();) {
+ ISymbianSDK sdk = sdkItr.next();
+ ISDKBuildInfo buildInfo = sdk.getBuildInfo(ISymbianBuilderID.SBSV2_BUILDER);
+ if (buildInfo != null) {
+ assertTrue(buildInfo instanceof ISBSv2BuildInfo);
+ List<ISymbianBuildContext> contextList = buildInfo.getFilteredBuildConfigurations();
+ if (contextList != null && contextList.size() > 0) {
+ for (Iterator<ISymbianBuildContext> cItr = contextList.iterator(); cItr.hasNext();) {
+ ISymbianBuildContext context = cItr.next();
+ assertTrue(context instanceof ISBSv2BuildContext);
+ testBuildContext((ISBSv2BuildContext)context);
+ }
+ }
+ }
+ }
+ }
+
+ private void testBuildContext(ISBSv2BuildContext context) {
+ // getConfigQueryData()
+ assertNotNull(context.getConfigQueryData());
+
+ // getConfigID()
+ assertNotNull(context.getConfigID());
+
+ // getDisplayString()
+ assertNotNull(context.getDisplayString());
+
+ // getDefaultDefFileDirectoryName()
+ assertNotNull(context.getDefaultDefFileDirectoryName());
+
+ // getPlatformString()
+ assertNotNull(context.getPlatformString());
+
+ // getSBSv2Alias()
+ assertNotNull(context.getSBSv2Alias());
+ String sbsv2Alias = context.getSBSv2Alias();
+
+ // getTargetString()
+ assertNotNull(context.getTargetString());
+
+ // getCompilerPrefixFile()
+ if (sbsv2Alias.toUpperCase().contains(ISBSv2BuildContext.TOOLCHAIN_GCCE) ||
+ sbsv2Alias.toUpperCase().contains(ISBSv2BuildContext.TOOLCHAIN_ARM)) {
+ assertNotNull(context.getCompilerPrefixFile());
+ }
+
+ // getVariantHRHDefines()
+ assertNotNull(context.getVariantHRHDefines());
+
+ // getPrefixFileIncludes()
+ assertNotNull(context.getVariantHRHIncludes());
+ for (Iterator<File> itr = context.getVariantHRHIncludes().iterator(); itr.hasNext();) {
+ File includeFile = itr.next();
+ assertTrue(includeFile.exists());
+ }
+
+ // getCompilerMacros()
+ assertNotNull(context.getCompilerPreincludeDefines());
+
+ // getToolChain()
+ String toolChain = context.getToolChain();
+ assertNotNull(toolChain);
+ Map<String, String> buildMacros = context.getConfigQueryData().getBuildMacros();
+ if (buildMacros != null) {
+ if (buildMacros.containsKey(ISBSv2BuildContext.MACRO_ARM)) {
+ assertTrue(toolChain.equals(ISBSv2BuildContext.TOOLCHAIN_ARM));
+ } else if (buildMacros.containsKey(ISBSv2BuildContext.MACRO_GCCE)) {
+ assertTrue(toolChain.equals(ISBSv2BuildContext.TOOLCHAIN_GCCE));
+ } else if (buildMacros.containsKey(ISBSv2BuildContext.MACRO_WINSCW)) {
+ assertTrue(toolChain.equals(ISBSv2BuildContext.TOOLCHAIN_WINSCW));
+ } else {
+ assertTrue(toolChain.equals(ISBSv2BuildContext.TOOLCHAIN_UNKNOWN));
+ }
+ }
+
+ }
+
+}
--- a/core/com.nokia.carbide.cpp.sdk.core/META-INF/MANIFEST.MF Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/META-INF/MANIFEST.MF Wed Aug 25 12:42:09 2010 -0500
@@ -16,14 +16,26 @@
org.eclipse.core.filesystem,
com.nokia.cpp.utils.ui
Bundle-ActivationPolicy: lazy
-Export-Package: com.nokia.carbide.cpp.internal.api.sdk,
- com.nokia.carbide.cpp.internal.sdk.core.model;x-friends:="com.nokia.carbide.cpp.sdk.core.test",
- com.nokia.carbide.cpp.internal.sdk.core.xml;x-friends:="com.nokia.carbide.cpp.sdk.core.test",
- com.nokia.carbide.cpp.sdk.core,
+Export-Package: com.nokia.carbide.cpp.internal.api.sdk;
+ x-friends:="com.nokia.carbide.cpp.sdk.core.test,
+ com.nokia.carbide.cpp.sdk.ui,
+ com.nokia.carbide.cdt.builder,
+ com.nokia.carbide.cdt.builder.test,
+ com.nokia.carbide.cpp.builder.utils,
+ com.nokia.carbide.cpp.project.ui,
+ com.nokia.carbide.cpp.qt.core,
+ com.nokia.carbide.cpp.qt.ui,
+ com.nokia.cdt.debug.cw.symbian,
+ com.nokia.cdt.debug.launch,
+ com.nokia.carbide.cpp.epoc.engine.tests",
+ com.nokia.carbide.cpp.internal.api.sdk.sbsv2;x-friends:="com.nokia.carbide.cdt.builder.test,com.nokia.carbide.cpp.sdk.core.test",
com.nokia.carbide.cpp.internal.sdk.core.gen.Devices;x-friends:="com.nokia.carbide.cpp.sdk.core.test,com.nokia.carbide.cpp.sdk.ui",
com.nokia.carbide.cpp.internal.sdk.core.gen.Devices.impl;x-friends:="com.nokia.carbide.cpp.sdk.core.test",
com.nokia.carbide.cpp.internal.sdk.core.gen.Devices.util;x-friends:="com.nokia.carbide.cpp.sdk.core.test",
com.nokia.carbide.cpp.internal.sdk.core.gen.SymbianMacroStore;x-friends:="com.nokia.carbide.cpp.sdk.core.test",
com.nokia.carbide.cpp.internal.sdk.core.gen.SymbianMacroStore.impl;x-friends:="com.nokia.carbide.cpp.sdk.core.test",
- com.nokia.carbide.cpp.internal.sdk.core.gen.SymbianMacroStore.util;x-friends:="com.nokia.carbide.cpp.sdk.core.test"
+ com.nokia.carbide.cpp.internal.sdk.core.gen.SymbianMacroStore.util;x-friends:="com.nokia.carbide.cpp.sdk.core.test",
+ com.nokia.carbide.cpp.internal.sdk.core.model;x-friends:="com.nokia.carbide.cpp.sdk.core.test,com.nokia.carbide.cpp.sdk.ui",
+ com.nokia.carbide.cpp.internal.sdk.core.xml;x-friends:="com.nokia.carbide.cpp.sdk.core.test",
+ com.nokia.carbide.cpp.sdk.core
Bundle-ClassPath: sdkCorePlugin.jar
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/BuildArgumentsInfo.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,149 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+package com.nokia.carbide.cpp.internal.api.sdk;
+
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDKFeatures;
+
+/**
+ * Wrapper for the build arguments settings in Carbide Build Configuration preferences
+ */
+public class BuildArgumentsInfo implements IBuildArgumentsInfo {
+
+ public static final String BLDMAKEBLDFILESARGSSTORAGE = "BLDMAKEBLDFILESARGSSTORAGE"; //$NON-NLS-1$
+ public static final String BLDMAKECLEANARGSSTORAGE = "BLDMAKECLEANARGSSTORAGE"; //$NON-NLS-1$
+ public static final String ABLDBUILDARGSSTORAGE = "ABLDBUILDARGSSTORAGE"; //$NON-NLS-1$
+ public static final String ABLDEXPORTARGSSTORAGE = "ABLDEXPORTARGSSTORAGE"; //$NON-NLS-1$
+ public static final String ABLDMAKEFILEARGSSTORAGE = "ABLDMAKEFILEARGSSTORAGE"; //$NON-NLS-1$
+ public static final String ABLDLIBRARYARGSSTORAGE = "ABLDLIBRARYARGSSTORAGE"; //$NON-NLS-1$
+ public static final String ABLDRESOURCEARGSSTORAGE = "ABLDRESOURCEARGSSTORAGE"; //$NON-NLS-1$
+ public static final String ABLDTARGETARGSSTORAGE = "ABLDTARGETARGSSTORAGE"; //$NON-NLS-1$
+ public static final String ABLDFINALARGSSTORAGE = "ABLDFINALARGSSTORAGE"; //$NON-NLS-1$
+ public static final String ABLDCLEANARGSSTORAGE = "ABLDCLEANARGSSTORAGE"; //$NON-NLS-1$
+ public static final String ABLDFREEZEARGSSTORAGE = "ABLDFREEZEARGSSTORAGE"; //$NON-NLS-1$
+
+
+ public String bldmakeBldFilesArgs;
+ public String bldmakeCleanArgs;
+ public String abldBuildArgs;
+ public String abldExportArgs;
+ public String abldMakefileArgs;
+ public String abldLibraryArgs;
+ public String abldResourceArgs;
+ public String abldTargetArgs;
+ public String abldFinalArgs;
+ public String abldCleanArgs;
+ public String abldFreezeArgs;
+
+
+ public BuildArgumentsInfo(ISymbianSDK sdk) {
+
+ this.bldmakeBldFilesArgs = ""; //$NON-NLS-1$
+ this.bldmakeCleanArgs = ""; //$NON-NLS-1$
+ this.abldBuildArgs = ""; //$NON-NLS-1$
+ this.abldExportArgs = ""; //$NON-NLS-1$
+ this.abldMakefileArgs = ""; //$NON-NLS-1$
+ this.abldLibraryArgs = ""; //$NON-NLS-1$
+ this.abldResourceArgs = ""; //$NON-NLS-1$
+ this.abldTargetArgs = ""; //$NON-NLS-1$
+ this.abldFinalArgs = ""; //$NON-NLS-1$
+ this.abldCleanArgs = ""; //$NON-NLS-1$
+ this.abldFreezeArgs = ""; //$NON-NLS-1$
+
+ if (sdk.getSupportedFeatures().contains(ISymbianSDKFeatures.IS_EKA2)) {
+ this.abldFreezeArgs = "-r"; //$NON-NLS-1$
+
+ }
+ }
+
+ public BuildArgumentsInfo(String bldmakeBldFilesArgs, String bldmakeCleanArgs, String abldBuildArgs, String abldExportArgs,
+ String abldMakefileArgs, String abldLibraryArgs, String abldResourceArgs, String abldTargetArgs, String abldFinalArgs,
+ String abldCleanArgs, String abldFreezeArgs) {
+
+ this.bldmakeBldFilesArgs = bldmakeBldFilesArgs;
+ this.bldmakeCleanArgs = bldmakeCleanArgs;
+ this.abldBuildArgs = abldBuildArgs;
+ this.abldExportArgs = abldExportArgs;
+ this.abldMakefileArgs = abldMakefileArgs;
+ this.abldLibraryArgs = abldLibraryArgs;
+ this.abldResourceArgs = abldResourceArgs;
+ this.abldTargetArgs = abldTargetArgs;
+ this.abldFinalArgs = abldFinalArgs;
+ this.abldCleanArgs = abldCleanArgs;
+ this.abldFreezeArgs = abldFreezeArgs;
+ }
+
+ public BuildArgumentsInfo(BuildArgumentsInfo argInfo) {
+
+ this.bldmakeBldFilesArgs = argInfo.bldmakeBldFilesArgs;
+ this.bldmakeCleanArgs = argInfo.bldmakeCleanArgs;
+ this.abldBuildArgs = argInfo.abldBuildArgs;
+ this.abldExportArgs = argInfo.abldExportArgs;
+ this.abldMakefileArgs = argInfo.abldMakefileArgs;
+ this.abldLibraryArgs = argInfo.abldLibraryArgs;
+ this.abldResourceArgs = argInfo.abldResourceArgs;
+ this.abldTargetArgs = argInfo.abldTargetArgs;
+ this.abldFinalArgs = argInfo.abldFinalArgs;
+ this.abldCleanArgs = argInfo.abldCleanArgs;
+ this.abldFreezeArgs = argInfo.abldFreezeArgs;
+ }
+
+ public String getBldmakeBldFilesArgs() {
+ return bldmakeBldFilesArgs;
+ }
+
+ public String getBldmakeCleanArgs() {
+ return bldmakeCleanArgs;
+ }
+
+ public String getAbldBuildArgs() {
+ return abldBuildArgs;
+ }
+
+ public String getAbldExportArgs() {
+ return abldExportArgs;
+ }
+
+ public String getAbldMakefileArgs() {
+ return abldMakefileArgs;
+ }
+
+ public String getAbldLibraryArgs() {
+ return abldLibraryArgs;
+ }
+
+ public String getAbldResourceArgs() {
+ return abldResourceArgs;
+ }
+
+ public String getAbldTargetArgs() {
+ return abldTargetArgs;
+ }
+
+ public String getAbldFinalArgs() {
+ return abldFinalArgs;
+ }
+
+ public String getAbldCleanArgs() {
+ return abldCleanArgs;
+ }
+
+ public String getAbldFreezeArgs() {
+ return abldFreezeArgs;
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/BuildContextSBSv1.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,709 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+*/
+package com.nokia.carbide.cpp.internal.api.sdk;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.eclipse.cdt.core.settings.model.ICStorageElement;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.osgi.framework.Version;
+
+import com.nokia.carbide.cpp.epoc.engine.preprocessor.DefineFactory;
+import com.nokia.carbide.cpp.epoc.engine.preprocessor.IDefine;
+import com.nokia.carbide.cpp.internal.sdk.core.model.SBSv1BuildInfo;
+import com.nokia.carbide.cpp.internal.sdk.core.model.SDKManager;
+import com.nokia.carbide.cpp.internal.sdk.core.model.SymbianMissingSDKFactory;
+import com.nokia.carbide.cpp.internal.sdk.core.model.SymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.IBSFCatalog;
+import com.nokia.carbide.cpp.sdk.core.IBSFPlatform;
+import com.nokia.carbide.cpp.sdk.core.IRVCTToolChainInfo;
+import com.nokia.carbide.cpp.sdk.core.ISDKManager;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
+import com.nokia.cpp.internal.api.utils.core.PathUtils;
+
+/**
+ * @deprecated - Temporary support exists for abld on Symbian^2 but will be removed, vFuture
+ *
+ */
+public class BuildContextSBSv1 implements ISBSv1BuildContext {
+
+ private String sdkId;
+ private String platform;
+ private String target;
+ private String displayString = null;
+
+ private static String EMULATOR_DISPLAY_TEXT = "Emulator"; //$NON-NLS-1$
+ private static String PHONE_DISPLAY_TEXT = "Phone"; //$NON-NLS-1$
+ private static String DEBUG_DISPLAY_TEXT = "Debug"; //$NON-NLS-1$
+ private static String RELEASE_DISPLAY_TEXT = "Release"; //$NON-NLS-1$
+ private static String SPACE_DISPLAY_TEXT = " "; //$NON-NLS-1$
+ private static String SDK_NOT_INSTALLED = "SDK not installed"; //$NON-NLS-1$
+
+ // a copy of bad SDK default to fall back
+ private static ISymbianSDK fallbackForBadSdk = SymbianMissingSDKFactory.createInstance("dummy_ID"); //$NON-NLS-1$
+
+ // Preference data
+ protected BuildArgumentsInfo buildArgumentsInfo;
+ protected final static String ARGUMENTS_DATA_ID = "ARGUMENTS_DATA_ID"; //$NON-NLS-1$
+
+ // --> variant.cfg info
+ // greedy match means the filename is in the last group
+ public static Pattern VARIANT_HRH_LINE_PATTERN = Pattern.compile("(?i)(.*)(/|\\\\)(.*hrh)");
+ private IPath variantFilePath;
+ public static final String VARIANT_CFG_FILE = "epoc32/tools/variant/variant.cfg"; //$NON-NLS-1$
+ public static final String SPP_VARIANT_CFG_FILE = "epoc32/tools/variant/spp_variant.cfg"; //$NON-NLS-1$
+ // <--
+
+ public BuildContextSBSv1(ISymbianSDK theSDK, String thePlatform, String theTarget) {
+ sdkId = theSDK.getUniqueId();
+ platform = thePlatform.toUpperCase();
+ target = theTarget.toUpperCase();
+
+ getDisplayString();
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result
+ + ((platform == null) ? 0 : platform.hashCode());
+ result = prime * result + ((getSDK() == null) ? 0 : getSDK().getEPOCROOT().hashCode());
+ result = prime * result + ((target == null) ? 0 : target.hashCode());
+ return result;
+ }
+
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (!(obj instanceof BuildContextSBSv1))
+ return false;
+ final BuildContextSBSv1 other = (BuildContextSBSv1) obj;
+ if (platform == null) {
+ if (other.platform != null)
+ return false;
+ } else if (!platform.equals(other.platform))
+ return false;
+ if (getSDK() == null) {
+ if (other.getSDK() != null)
+ return false;
+ } else if (!getSDK().getEPOCROOT().equals(other.getSDK().getEPOCROOT()))
+ return false;
+ if (target == null) {
+ if (other.target != null)
+ return false;
+ } else if (!target.equals(other.target)) {
+ return false;
+ }
+ return true;
+ }
+
+
+ public ISymbianSDK getSDK() {
+
+ ISymbianSDK sdk = SDKCorePlugin.getSDKManager().getSDK(sdkId, true);
+ if (sdk == null){
+ sdk = fallbackForBadSdk;
+ }
+
+ return sdk;
+ }
+
+ public String getPlatformString() {
+ return platform.toUpperCase();
+ }
+
+ public String getTargetString() {
+ return target.toUpperCase();
+ }
+
+ public String getDisplayString() {
+ if (displayString == null) {
+ // in the form Emulation Debug (WINSCW) [S60_3rd_MR] or
+ // Phone Release (GCCE) [S60_3rd_MR]
+ if (platform.compareTo(EMULATOR_PLATFORM) == 0) {
+ displayString = EMULATOR_DISPLAY_TEXT;
+ } else {
+ displayString = PHONE_DISPLAY_TEXT;
+ }
+
+ if (target.compareTo(ISymbianBuildContext.DEBUG_TARGET) == 0) {
+ displayString = displayString + SPACE_DISPLAY_TEXT + DEBUG_DISPLAY_TEXT;
+ } else {
+ displayString = displayString + SPACE_DISPLAY_TEXT + RELEASE_DISPLAY_TEXT;
+ }
+
+ String basePlatform = platform;
+
+ displayString = displayString + " (" + basePlatform + ") [" + getSDK().getUniqueId() + "]"; //$NON-NLS-1$
+ }
+ return displayString;
+ }
+
+ public static ISymbianBuildContext getBuildContextFromDisplayName(String displayName) {
+ if (isValidConfigName(displayName)) {
+ String sdkId = getSDKIDFromConfigName(displayName);
+ ISymbianSDK sdk = SDKCorePlugin.getSDKManager().getSDK(sdkId, true);
+ if (sdk == null) {
+ // add a dummy should a build context ask for a removed SDK
+ sdk = SDKManagerInternalAPI.addMissingSdk(sdkId);
+ }
+
+ return new BuildContextSBSv1(sdk,
+ getPlatformFromBuildConfigName(displayName),
+ getTargetFromBuildConfigName(displayName));
+ }
+ return new BuildContextSBSv1(fallbackForBadSdk, SDK_NOT_INSTALLED, SDK_NOT_INSTALLED);
+ }
+
+ private static String getPlatformFromBuildConfigName(String configName) {
+ String[] tokens = configName.split(SPACE_DISPLAY_TEXT);
+ String sdkIdToken = tokens[2];
+ if (sdkIdToken.contains("_")){
+ sdkIdToken = sdkIdToken.substring(1, sdkIdToken.length()-1);
+ String[] aliasTokens = sdkIdToken.split("_");
+ return aliasTokens[0];
+ } else {
+ return sdkIdToken.substring(1, sdkIdToken.length()-1);
+ }
+
+ }
+
+ public static String getSDKIDFromConfigName(String configName) {
+ int indexBegin = configName.indexOf("["); //$NON-NLS-1$
+ int indexEnd = configName.indexOf("]"); //$NON-NLS-1$
+ if (indexBegin > 0 && indexEnd > 0){
+ return configName.substring(indexBegin+1, indexEnd);
+ } else {
+ return ""; //$NON-NLS-1$
+ }
+ }
+
+ private static String getTargetFromBuildConfigName(String configName) {
+ String[] tokens = configName.split(SPACE_DISPLAY_TEXT);
+ if (tokens[1].compareTo(DEBUG_DISPLAY_TEXT) == 0) {
+ return ISymbianBuildContext.DEBUG_TARGET;
+ } else {
+ return ISymbianBuildContext.RELEASE_TARGET;
+ }
+ }
+
+ private static boolean isValidConfigName(String configName) {
+ // <Phone | Emulator> <Target> (<Platform>) [<SDK ID>]
+ if (configName != null && !configName.equals("")) { //$NON-NLS-1$
+ String[] tokens = configName.split(SPACE_DISPLAY_TEXT);
+ if (tokens.length >= 4) {
+ if (tokens[0].compareTo(EMULATOR_DISPLAY_TEXT) == 0 || tokens[0].compareTo(PHONE_DISPLAY_TEXT) == 0) {
+ if (tokens[1].compareTo(DEBUG_DISPLAY_TEXT) == 0 || tokens[1].compareTo(RELEASE_DISPLAY_TEXT) == 0) {
+ if (tokens[2].matches("(.*)")) { //$NON-NLS-1$
+ if (tokens[3].matches("\\[.*")) { //$NON-NLS-1$
+ return true;
+ }
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ public String toString() {
+ return getDisplayString();
+ }
+
+ private ISBSv1BuildInfo getBuildInfo() {
+ ISBSv1BuildInfo buildInfo = (ISBSv1BuildInfo)getSDK().getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER);
+ if (buildInfo == null) {
+ buildInfo = new SBSv1BuildInfo(getSDK());
+ ((SymbianSDK)getSDK()).setBuildInfo(buildInfo, ISymbianBuilderID.SBSV1_BUILDER);
+ }
+ return buildInfo;
+ }
+
+ public String getDefaultDefFileDirectoryName() {
+
+ String dirName = getDefFileDirectoryNameForPlatform(platform);
+ if (dirName == null) {
+ // check BSF's
+ IBSFCatalog catalog = getBuildInfo().getBSFCatalog();
+ if (catalog != null) {
+ for (IBSFPlatform plat : catalog.getPlatforms()) {
+ if (plat.getName().compareToIgnoreCase(platform) == 0) {
+ String mainPlatform = catalog.getReleasePlatform(platform);
+ if (mainPlatform != null) {
+ dirName = getDefFileDirectoryNameForPlatform(mainPlatform);
+ if (dirName == null || dirName.length() < 1) {
+ // fallback - all BSF's should be EABI anyway
+ return "EABI"; //$NON-NLS-1$
+ }
+ }
+ }
+ }
+ }
+ }
+
+ if (dirName == null) {
+ // fallback for unknown cases
+ dirName = platform;
+ }
+
+ return dirName;
+ }
+
+ private String getDefFileDirectoryNameForPlatform(String platform) {
+ if (platform.equals(EMULATOR_PLATFORM)) {
+ return "BWINS"; //$NON-NLS-1$
+ } else if (platform.equals(ARMV5_PLATFORM)
+ || platform.equals(ARMV5_ABIV2_PLATFORM)
+ || platform.equals(ARMV6_PLATFORM)
+ || platform.equals(ARMV6_ABIV2_PLATFORM)
+ || platform.equals(GCCE_PLATFORM)) {
+ return "EABI"; //$NON-NLS-1$
+ }
+ return null;
+ }
+
+ public IPath getCompilerPrefixFile() {
+ if (platform.equals(GCCE_PLATFORM)) {
+ return getGCCEPrefixFilePath();
+ } else if (platform.equals(ARMV5_PLATFORM)
+ || platform.equals(ARMV5_ABIV2_PLATFORM)
+ || platform.equals(ARMV6_PLATFORM)
+ || platform.equals(ARMV6_ABIV2_PLATFORM)) {
+ return getRVCTPrefixFilePath();
+ } else {
+ // check BSF's
+ IBSFCatalog catalog = getBuildInfo().getBSFCatalog();
+ if (catalog != null) {
+ for (IBSFPlatform plat : catalog.getPlatforms()) {
+ if (plat.getName().compareToIgnoreCase(platform) == 0) {
+ String mainPlatform = catalog.getReleasePlatform(platform);
+ if (mainPlatform != null) {
+ if (mainPlatform.equals(GCCE_PLATFORM)) {
+ return getGCCEPrefixFilePath();
+ } else if (mainPlatform.equals(ARMV5_PLATFORM)
+ || mainPlatform.equals(ARMV5_ABIV2_PLATFORM)
+ || mainPlatform.equals(ARMV6_PLATFORM)
+ || mainPlatform.equals(ARMV6_ABIV2_PLATFORM)) {
+ return getRVCTPrefixFilePath();
+ } else {
+ // fallback - all BSF's should be EABI anyway
+ return getRVCTPrefixFilePath();
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // fallback for WINSCW, MSVC, etc.
+ return null;
+ }
+
+ private IPath getIncludePath() {
+ return getSDK().getIncludePath();
+ }
+
+ private IPath getGCCEPrefixFilePath() {
+ return getIncludePath().append("gcce/gcce.h"); //$NON-NLS-1$
+ }
+
+ private IPath getRVCTPrefixFilePath() {
+ ISDKManager sdkManager = SDKCorePlugin.getSDKManager();
+ IRVCTToolChainInfo[] installedRVCTTools = ((SDKManager)sdkManager).getInstalledRVCTTools();
+ // use default in case tools aren't installed
+ String rvctFragment = "rvct2_2"; //$NON-NLS-1$
+ if (installedRVCTTools.length > 0) {
+ rvctFragment = getRVCTFragment(installedRVCTTools[0]);
+ }
+ IPath prefixFilePath = getIncludePath().append(rvctFragment).append(rvctFragment + ".h"); //$NON-NLS-1$
+ if (prefixFilePath.toFile().exists()){
+ return prefixFilePath;
+ } else {
+ // SF kits around SF^3 started to only use a single rvct.h header instead of specific versioned ones
+ // based on the default installation
+ return getIncludePath().append("rvct").append("rvct" + ".h");
+ }
+ }
+
+ private String getRVCTFragment(IRVCTToolChainInfo info) {
+ int major = 0, minor = 0;
+ if (info != null) {
+ Version rvctToolsVersion = info.getRvctToolsVersion();
+ if (rvctToolsVersion != null) {
+ major = info.getRvctToolsVersion().getMajor();
+ minor = info.getRvctToolsVersion().getMinor();
+ }
+ }
+ return "rvct" + major + "_" + minor; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ public List<IDefine> getVariantHRHDefines() {
+
+ return getCachedData().getVariantHRHDefines();
+ }
+
+ public List<File> getVariantHRHIncludes() {
+ return getCachedData().getPrefixFileIncludes();
+ }
+
+
+ public List<IDefine> getCompilerPreincludeDefines() {
+ // we parse the compiler prefix file to gather macros. this can be time consuming so do it
+ // once and cache the values. only reset the cache when the compiler prefix has changed.
+
+ IPath prefixFile = getCompilerPrefixFile();
+ if (prefixFile == null) {
+ return Collections.emptyList();
+ }
+
+ return getCachedData().getCompilerMacros(prefixFile);
+ }
+
+
+ public String getBuildVariationName() {
+ String varName = "";
+
+ String[] tokens = getPlatformString().split("\\.");
+ if (tokens.length == 2){
+ varName = tokens[1];
+ }
+
+ return varName;
+ }
+
+// public boolean isSymbianBinaryVariation() {
+// if (getPlatformString().split("\\.").length == 2){
+// return true;
+// } else {
+// return false;
+// }
+// }
+
+ /**
+ * Get the cache holding the data that applies to this build context globally.
+ * A build context is subclassed by CarbideBuildConfiguration, which has multiple
+ * instances at runtime, thus, a SymbianBuildContext instance should not hold a cache itself.
+ * @return cache, never <code>null</code>
+ */
+ private SymbianBuildContextDataCache getCachedData() {
+ return SymbianBuildContextDataCache.getCache(this);
+ }
+
+
+ public String getBasePlatformForVariation() {
+ String plat = "";
+
+ String[] tokens = getPlatformString().split("\\.");
+ if (tokens.length == 2){
+ plat = tokens[0];
+ } else {
+ return platform;
+ }
+
+ return plat;
+ }
+
+
+ /**
+ * Get the list of #include paths detected for this context.
+ * @return List or <code>null</code>
+ */
+ public List<File> getCachedSystemIncludePaths() {
+ return getCachedData().getSystemIncludePaths();
+ }
+
+ public void loadConfigurationSettings(ICStorageElement se) {
+ if (se.getName().equals(ARGUMENTS_DATA_ID)) {
+ loadBuildArgsFromStorage(se);
+ }
+ }
+
+ public IBuildArgumentsInfo getBuildArgumentsInfo() {
+ return (IBuildArgumentsInfo)buildArgumentsInfo;
+ }
+
+ public BuildArgumentsInfo getBuildArgumentsInfoCopy() {
+ return new BuildArgumentsInfo(buildArgumentsInfo);
+ }
+
+ public void setBuildArgumentsInfo(BuildArgumentsInfo buildArgumentsInfo) {
+ this.buildArgumentsInfo = buildArgumentsInfo;
+ }
+
+ private void loadBuildArgsFromStorage(ICStorageElement rootStorage) {
+ buildArgumentsInfo = new BuildArgumentsInfo(getSDK());
+ String value = rootStorage.getAttribute(BuildArgumentsInfo.BLDMAKEBLDFILESARGSSTORAGE);
+ if (value != null) {
+ buildArgumentsInfo.bldmakeBldFilesArgs = value;
+ }
+
+ value = rootStorage.getAttribute(BuildArgumentsInfo.BLDMAKECLEANARGSSTORAGE);
+ if (value != null) {
+ buildArgumentsInfo.bldmakeCleanArgs = value;
+ }
+
+ value = rootStorage.getAttribute(BuildArgumentsInfo.ABLDBUILDARGSSTORAGE);
+ if (value != null) {
+ buildArgumentsInfo.abldBuildArgs = value;
+ }
+
+ value = rootStorage.getAttribute(BuildArgumentsInfo.ABLDEXPORTARGSSTORAGE);
+ if (value != null) {
+ buildArgumentsInfo.abldExportArgs = value;
+ }
+
+ value = rootStorage.getAttribute(BuildArgumentsInfo.ABLDMAKEFILEARGSSTORAGE);
+ if (value != null) {
+ buildArgumentsInfo.abldMakefileArgs = value;
+ }
+
+ value = rootStorage.getAttribute(BuildArgumentsInfo.ABLDLIBRARYARGSSTORAGE);
+ if (value != null) {
+ buildArgumentsInfo.abldLibraryArgs = value;
+ }
+
+ value = rootStorage.getAttribute(BuildArgumentsInfo.ABLDRESOURCEARGSSTORAGE);
+ if (value != null) {
+ buildArgumentsInfo.abldResourceArgs = value;
+ }
+
+ value = rootStorage.getAttribute(BuildArgumentsInfo.ABLDTARGETARGSSTORAGE);
+ if (value != null) {
+ buildArgumentsInfo.abldTargetArgs = value;
+ }
+
+ value = rootStorage.getAttribute(BuildArgumentsInfo.ABLDFINALARGSSTORAGE);
+ if (value != null) {
+ buildArgumentsInfo.abldFinalArgs = value;
+ }
+
+ value = rootStorage.getAttribute(BuildArgumentsInfo.ABLDCLEANARGSSTORAGE);
+ if (value != null) {
+ buildArgumentsInfo.abldCleanArgs = value;
+ }
+
+ value = rootStorage.getAttribute(BuildArgumentsInfo.ABLDFREEZEARGSSTORAGE);
+ if (value != null) {
+ buildArgumentsInfo.abldFreezeArgs = value;
+ }
+ }
+
+ public void saveBuildArgsToStorage(ICStorageElement rootStorage) {
+ if (buildArgumentsInfo == null){
+ buildArgumentsInfo = new BuildArgumentsInfo(getSDK());
+ }
+
+ if (buildArgumentsInfo.bldmakeBldFilesArgs.trim().length() > 0) {
+ rootStorage.setAttribute(BuildArgumentsInfo.BLDMAKEBLDFILESARGSSTORAGE, buildArgumentsInfo.bldmakeBldFilesArgs);
+ }
+
+ if (buildArgumentsInfo.bldmakeCleanArgs.trim().length() > 0) {
+ rootStorage.setAttribute(BuildArgumentsInfo.BLDMAKECLEANARGSSTORAGE, buildArgumentsInfo.bldmakeCleanArgs);
+ }
+
+ if (buildArgumentsInfo.abldBuildArgs.trim().length() > 0) {
+ rootStorage.setAttribute(BuildArgumentsInfo.ABLDBUILDARGSSTORAGE, buildArgumentsInfo.abldBuildArgs);
+ }
+
+ if (buildArgumentsInfo.abldExportArgs.trim().length() > 0) {
+ rootStorage.setAttribute(BuildArgumentsInfo.ABLDEXPORTARGSSTORAGE, buildArgumentsInfo.abldExportArgs);
+ }
+
+ if (buildArgumentsInfo.abldMakefileArgs.trim().length() > 0) {
+ rootStorage.setAttribute(BuildArgumentsInfo.ABLDMAKEFILEARGSSTORAGE, buildArgumentsInfo.abldMakefileArgs);
+ }
+
+ if (buildArgumentsInfo.abldLibraryArgs.trim().length() > 0) {
+ rootStorage.setAttribute(BuildArgumentsInfo.ABLDLIBRARYARGSSTORAGE, buildArgumentsInfo.abldLibraryArgs);
+ }
+
+ if (buildArgumentsInfo.abldResourceArgs.trim().length() > 0) {
+ rootStorage.setAttribute(BuildArgumentsInfo.ABLDRESOURCEARGSSTORAGE, buildArgumentsInfo.abldResourceArgs);
+ }
+
+ if (buildArgumentsInfo.abldTargetArgs.trim().length() > 0) {
+ rootStorage.setAttribute(BuildArgumentsInfo.ABLDTARGETARGSSTORAGE, buildArgumentsInfo.abldTargetArgs);
+ }
+
+ if (buildArgumentsInfo.abldFinalArgs.trim().length() > 0) {
+ rootStorage.setAttribute(BuildArgumentsInfo.ABLDFINALARGSSTORAGE, buildArgumentsInfo.abldFinalArgs);
+ }
+
+ if (buildArgumentsInfo.abldCleanArgs.trim().length() > 0) {
+ rootStorage.setAttribute(BuildArgumentsInfo.ABLDCLEANARGSSTORAGE, buildArgumentsInfo.abldCleanArgs);
+ }
+
+ if (buildArgumentsInfo.abldFreezeArgs.trim().length() > 0) {
+ rootStorage.setAttribute(BuildArgumentsInfo.ABLDFREEZEARGSSTORAGE, buildArgumentsInfo.abldFreezeArgs);
+ }
+ }
+
+ public void saveConfigurationSettings(ICStorageElement se, ISymbianBuildContext context) {
+ saveBuildArgsToStorage(se.createChild(ARGUMENTS_DATA_ID));
+ }
+
+ /**
+ * Get the unique ID for this build configuration.
+ * For ABLD it is the display name, for SBSv2, it is the builder ID
+ * @return
+ */
+ public String getConfigurationID() {
+ return getDisplayString();
+ }
+
+ /**
+ * Get the full path to the prefix file defined under \epoc32\tools\variant\variant.cfg
+ * @return A path object, or null if the variant.cfg does not exist. This routine does not check to see if the returned path exists.
+ */
+ public IPath getPrefixFromVariantCfg(){
+
+ if (variantFilePath != null){
+ return variantFilePath;
+ }
+
+ File epocRoot = new File(getSDK().getEPOCROOT());
+ File variantCfg;
+ variantCfg = new File(epocRoot, SPP_VARIANT_CFG_FILE);
+ if (!variantCfg.exists()) {
+ variantCfg = new File(epocRoot, VARIANT_CFG_FILE);
+ if (!variantCfg.exists())
+ return null;
+ }
+
+ String variantDir = null;
+ String variantFile = null;
+ try {
+ char[] cbuf = new char[(int) variantCfg.length()];
+ Reader reader = new FileReader(variantCfg);
+ reader.read(cbuf);
+ reader.close();
+ String[] lines = new String(cbuf).split("\r\n|\r|\n");
+ for (int i = 0; i < lines.length; i++) {
+ // skip comments and blank lines
+ String line = SymbianSDK.removeComments(lines[i]);
+ if (line.matches("\\s*#.*") || line.trim().length() == 0)
+ continue;
+
+ // parse the variant line, which is an EPOCROOT-relative
+ // path to a bldvariant.hrh file
+ Matcher matcher = VARIANT_HRH_LINE_PATTERN.matcher(line);
+ if (matcher.matches()) {
+ variantDir = matcher.group(1);
+ variantFile = matcher.group(3);
+ File variantFullPathFile = new File(epocRoot, variantDir + File.separator + variantFile);
+ variantFilePath = new Path(PathUtils.convertPathToUnix(variantFullPathFile.getAbsolutePath()));
+ return variantFilePath;
+ }
+ }
+ } catch (IOException e) {
+ }
+
+ return null; // can't find the file...
+ }
+
+ @SuppressWarnings("unchecked")
+ public List<String> getVariantCFGMacros(){
+
+ List<String> variantCFGMacros = new ArrayList<String>();
+ File epocRoot = new File(getSDK().getEPOCROOT());
+ File variantCfg;
+ variantCfg = new File(epocRoot, SPP_VARIANT_CFG_FILE);
+ if (!variantCfg.exists()) {
+ variantCfg = new File(epocRoot, VARIANT_CFG_FILE);
+ if (!variantCfg.exists())
+ return Collections.EMPTY_LIST;
+ }
+
+ try {
+ char[] cbuf = new char[(int) variantCfg.length()];
+ Reader reader = new FileReader(variantCfg);
+ reader.read(cbuf);
+ reader.close();
+ String[] lines = new String(cbuf).split("\r\n|\r|\n");
+ for (int i = 0; i < lines.length; i++) {
+ // skip comments and blank lines
+ String line = SymbianSDK.removeComments(lines[i]);
+ if (line.matches("\\s*#.*") || line.trim().length() == 0)
+ continue;
+
+ // parse the variant line, which is an EPOCROOT-relative
+ // path to a bldvariant.hrh file
+ Matcher matcher = VARIANT_HRH_LINE_PATTERN.matcher(line);
+ if (matcher.matches()) {
+ continue; // Skip this it's the file
+ } else {
+ // all other patterns are assumed to be macro
+ variantCFGMacros.add(line.trim());
+ }
+ }
+ } catch (IOException e) {
+ }
+
+ return variantCFGMacros;
+ }
+
+ public List<IDefine> getBuildMacros() {
+ ISBSv1BuildInfo sbsv1BuildInfo = (ISBSv1BuildInfo)getSDK().getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER);
+ List<IDefine> defines = new ArrayList<IDefine>();
+ for (String builtinMacro : sbsv1BuildInfo.getVendorSDKMacros()) {
+ defines.add(DefineFactory.createDefine(builtinMacro));
+ }
+
+ for (String builtinMacro : sbsv1BuildInfo.getBuiltinMacros(this)) {
+ defines.add(DefineFactory.createDefine(builtinMacro));
+ }
+
+ for (String variantCFGMacro : getVariantCFGMacros()) {
+ defines.add(DefineFactory.createDefine(variantCFGMacro));
+ }
+
+ for (String platMacro : sbsv1BuildInfo.getPlatformMacros(getPlatformString())) {
+ defines.add(DefineFactory.createDefine("__" + platMacro + "__")); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ return defines;
+ }
+
+ public List<IDefine> getMetadataMacros() {
+ ISBSv1BuildInfo sbsv1BuildInfo = (ISBSv1BuildInfo)getSDK().getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER);
+ List<IDefine> defines = new ArrayList<IDefine>();
+ for (String platMacro : sbsv1BuildInfo.getPlatformMacros(getPlatformString())) {
+ defines.add(DefineFactory.createDefine(platMacro)); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ return defines;
+ }
+
+ public IDefine getTargetTypeMacro(String targettype) {
+ ISBSv1BuildInfo sbsv1BuildInfo = (ISBSv1BuildInfo)getSDK().getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER);
+ return DefineFactory.createDefine(sbsv1BuildInfo.getTargetTypeMacro(targettype));
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/BuildContextSBSv2.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,426 @@
+package com.nokia.carbide.cpp.internal.api.sdk;
+
+import java.io.File;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.cdt.core.settings.model.ICStorageElement;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.ui.PlatformUI;
+
+import com.nokia.carbide.cpp.epoc.engine.preprocessor.DefineFactory;
+import com.nokia.carbide.cpp.epoc.engine.preprocessor.IDefine;
+import com.nokia.carbide.cpp.internal.api.sdk.sbsv2.SBSv2ConfigQueryData;
+import com.nokia.carbide.cpp.internal.api.sdk.sbsv2.SBSv2MinimumVersionException;
+import com.nokia.carbide.cpp.internal.api.sdk.sbsv2.SBSv2QueryUtils;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
+import com.nokia.cpp.internal.api.utils.core.Check;
+import com.nokia.cpp.internal.api.utils.core.Logging;
+import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils;
+
+public class BuildContextSBSv2 implements ISBSv2BuildContext {
+
+ private String platform;
+ private String target;
+ private String sbsv2Alias;
+ private ISymbianSDK sdk;
+ private String displayString;
+ private String configID; // cconfiguration 'id' attribute from .cproject
+
+ private boolean reportedSBSVersionError;
+
+ // Raptor config query data
+ private ISBSv2ConfigQueryData configQueryData;
+
+ // cconfiguration data store
+ private SBSv2BuilderInfo sbsv2BuildInfo;
+
+ private IPath cachedVariantHRHFile = null;
+
+ public BuildContextSBSv2(ISymbianSDK sdk, String platform, String target, String alias, String displayString, String configID) {
+ this.sdk = sdk;
+ if (platform == null){
+ this.platform = "unknown_platform";
+ } else {
+ this.platform = platform.toUpperCase();
+ }
+
+ if (target == null){
+ this.target = "unknown_target";
+ } else {
+ this.target = target.toUpperCase();
+ }
+ this.sbsv2Alias = alias;
+ this.displayString = displayString;
+ this.configID = configID;
+ this.configQueryData = setConfigQueryData(sdk, alias);
+ }
+
+ public BuildContextSBSv2(ISymbianSDK sdk, String alias, ISBSv2ConfigQueryData configData) {
+ this.sdk = sdk;
+ this.sbsv2Alias = alias;
+ this.configQueryData = configData;
+ setPlatformAndTargetFromOutputPath();
+ this.configID = ISBSv2BuildContext.BUILDER_ID + "." + sbsv2Alias + "." + sdk.getUniqueId();
+ this.displayString = sbsv2Alias + " [" + sdk.getUniqueId() + "]";
+ }
+
+ public ISymbianSDK getSDK() {
+ return sdk;
+ }
+
+ public String getPlatformString() {
+
+ if (platform == null){
+ return configQueryData.getConfigurationErrorMessage();
+ }
+
+ if (platform.contains(".")){
+ String[] tok = platform.split(".");
+ if (tok.length > 0) return tok[0];
+ }
+ return platform;
+ }
+
+ public String getPlatformReleaseDirName() {
+ return platform;
+ }
+
+ public String getTargetString() {
+ if (target == null){
+ return configQueryData.getConfigurationErrorMessage();
+ }
+ return target;
+ }
+
+ public String getConfigID(){
+ return configID;
+ }
+
+ public String getDisplayString() {
+ Check.checkState(displayString != null);
+ return displayString;
+ }
+
+ @Override
+ public String toString() {
+ return getConfigID();
+ }
+
+ public String getDefaultDefFileDirectoryName() {
+
+ String dirName = getDefFileDirectoryNameForPlatform(platform);
+
+ if (dirName == null) {
+ // fallback for unknown cases
+ dirName = platform;
+ }
+
+ return dirName;
+ }
+
+ private String getDefFileDirectoryNameForPlatform(String platform) {
+ if (sbsv2Alias.toUpperCase().contains("WINSCW")) {
+ return "BWINS"; //$NON-NLS-1$
+ } else if (sbsv2Alias.toUpperCase().contains("ARM")) {
+ return "EABI"; //$NON-NLS-1$
+ }
+ return null;
+ }
+
+ public IPath getCompilerPrefixFile() {
+
+ if (sbsv2Alias.toUpperCase().contains(TOOLCHAIN_GCCE) ||
+ sbsv2Alias.toUpperCase().contains(TOOLCHAIN_ARM)) {
+ if (configQueryData != null) {
+ return new Path(configQueryData.getBuildPrefix());
+ }
+ }
+
+ // fallback for WINSCW, MSVC, etc.
+ return null;
+ }
+
+ public List<IDefine> getVariantHRHDefines() {
+ return getCachedData().getVariantHRHDefines();
+ }
+
+ public List<File> getVariantHRHIncludes() {
+ return getCachedData().getPrefixFileIncludes();
+ }
+
+ public List<IDefine> getCompilerPreincludeDefines() {
+ IPath prefixFile = getCompilerPrefixFile();
+ if (prefixFile == null || !prefixFile.toFile().exists()) {
+ return getCachedData().getCompilerMacros(null);
+ }
+
+ return getCachedData().getCompilerMacros(prefixFile);
+ }
+
+ public String getBuildVariationName() {
+ // Not needed for Raptor
+ return "";
+ }
+
+ public String getSBSv2Alias() {
+ return sbsv2Alias;
+ }
+
+ /**
+ * Get the cache holding the data that applies to this build context globally.
+ * A build context is subclassed by CarbideBuildConfiguration, which has multiple
+ * instances at runtime, thus, a SymbianBuildContext instance should not hold a cache itself.
+ * @return cache, never <code>null</code>
+ */
+ private SymbianBuildContextDataCache getCachedData() {
+ return SymbianBuildContextDataCache.getCache(this);
+ }
+
+ /**
+ * Get the list of #include paths detected for this context.
+ * @return List or <code>null</code>
+ */
+ public List<File> getCachedSystemIncludePaths() {
+ return getCachedData().getSystemIncludePaths();
+ }
+
+
+ public static String getPlatformFromV1ConfigName(String displayString) {
+ String[] tokens = displayString.split(" ");
+ String sdkIdToken = tokens[2];
+ if (sdkIdToken.contains("_")){
+ sdkIdToken = sdkIdToken.substring(1, sdkIdToken.length()-1);
+ String[] aliasTokens = sdkIdToken.split("_");
+ return aliasTokens[0];
+ } else {
+ return sdkIdToken.substring(1, sdkIdToken.length()-1);
+ }
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result
+ + ((configID == null) ? 0 : configID.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ BuildContextSBSv2 other = (BuildContextSBSv2) obj;
+ if (configID == null) {
+ if (other.configID != null)
+ return false;
+ } else if (!configID.equals(other.configID))
+ return false;
+ return true;
+ }
+
+ public static String getTargetFromV1ConfigName(String displayString) {
+ String[] tokens = displayString.split(" ");
+ if (tokens[1].compareTo("Debug") == 0) {
+ return ISymbianBuildContext.DEBUG_TARGET;
+ } else {
+ return ISymbianBuildContext.RELEASE_TARGET;
+ }
+ }
+
+ public static String getBuildAliasFromV1ConfigName(String displayString) {
+ String target = getTargetFromV1ConfigName(displayString);
+ String platform = getPlatformFromV1ConfigName(displayString);
+ return platform.toLowerCase() + "_" + target.toLowerCase();
+ }
+
+ // Fall-back to get SDK id from old config name
+ public static String getSDKIDFromV1ConfigName(String configName) {
+ int indexBegin = configName.indexOf("["); //$NON-NLS-1$
+ int indexEnd = configName.indexOf("]"); //$NON-NLS-1$
+ if (indexBegin > 0 && indexEnd > 0){
+ return configName.substring(indexBegin+1, indexEnd);
+ } else {
+ return ""; //$NON-NLS-1$
+ }
+ }
+
+ private void setPlatformAndTargetFromOutputPath() {
+ String pathString = configQueryData.getOutputPathString();
+ if (pathString == null || pathString.length() == 0) {
+ platform = "";
+ target = "";
+ return;
+ }
+
+ IPath releasePath = new Path(configQueryData.getOutputPathString());
+ int epoc32SegmentIndex = 0;
+ for (String segment : releasePath.segments()){
+ if (segment.toLowerCase().equals("epoc32"))
+ break;
+ epoc32SegmentIndex++;
+ }
+ // assuming /epoc32/<release>/<target>/
+ platform = releasePath.segment(epoc32SegmentIndex+2).toUpperCase();
+ target = releasePath.segment(epoc32SegmentIndex+3).toUpperCase();
+ }
+
+ private ISBSv2ConfigQueryData setConfigQueryData(ISymbianSDK sdk, String alias) {
+ SBSv2ConfigQueryData configQueryData = null;
+ try {
+ configQueryData = SBSv2QueryUtils.getConfigQueryDataForSDK(sdk, alias);
+ if (configQueryData == null) {
+ Map<String, String> aliasToMeaningMap = SBSv2QueryUtils.getAliasesForSDK(sdk);
+ List<String> aliasList = new ArrayList<String>();
+ aliasList.add(alias);
+ String configQueryXML = SBSv2QueryUtils.getConfigQueryXMLforSDK(sdk, aliasList);
+ if (aliasToMeaningMap.get(alias) != null){
+ configQueryData = new SBSv2ConfigQueryData(alias, aliasToMeaningMap.get(alias), configQueryXML);
+ }
+ }
+ } catch (final SBSv2MinimumVersionException e) {
+ reportedSBSVersionError = true; // only report once per IDE session.
+ PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ if (!reportedSBSVersionError){
+ MessageDialog.openError(WorkbenchUtils.getSafeShell(), "Minimum sbs version not met.", e.getMessage());
+ }
+ }
+ });
+ Logging.log(SDKCorePlugin.getDefault(), Logging.newSimpleStatus(0, IStatus.ERROR,
+ MessageFormat.format(e.getMessage(), ""), e));
+ }
+
+ return configQueryData;
+ }
+
+ public ISBSv2ConfigQueryData getConfigQueryData() {
+ return configQueryData;
+ }
+
+ public String getToolChain() {
+
+ if (configQueryData != null) {
+ Map<String, String> buildMacros = configQueryData.getBuildMacros();
+ // try to figure out the tool chain using macros from Raptor config query
+ if (buildMacros.containsKey(MACRO_ARM)) {
+ return TOOLCHAIN_ARM;
+ } else if (buildMacros.containsKey(MACRO_GCCE)) {
+ return TOOLCHAIN_GCCE;
+ } else if (buildMacros.containsKey(MACRO_WINSCW)) {
+ return TOOLCHAIN_WINSCW;
+ }
+ } else {
+ // if no macros available, use alias name instead
+ if (sbsv2Alias.toUpperCase().contains(TOOLCHAIN_ARM)) {
+ return TOOLCHAIN_ARM;
+ } else if (sbsv2Alias.toUpperCase().contains(TOOLCHAIN_GCCE)) {
+ return TOOLCHAIN_GCCE;
+ } else if (sbsv2Alias.toUpperCase().contains(TOOLCHAIN_WINSCW)) {
+ return TOOLCHAIN_WINSCW;
+ }
+ }
+ return TOOLCHAIN_UNKNOWN;
+ }
+
+ public List<IPath> getSystemIncludes() {
+ if (configQueryData != null) {
+ List<String> includes = configQueryData.getMetaDataIncludes();
+ if (includes != null && !includes.isEmpty()) {
+ List<IPath> includePaths = new ArrayList<IPath>();
+ for (Iterator<String> itr = includes.iterator(); itr.hasNext();) {
+ String include = itr.next();
+ if (include.length() == 0 || include.equals(".")) {
+ continue;
+ }
+ Path includePath = new Path(include);
+ if (!includePaths.contains(includePath)) {
+ includePaths.add(includePath);
+ }
+ }
+ return includePaths;
+ }
+ }
+ return null;
+ }
+
+ public List<String> getSupportedTargettypes() {
+ return configQueryData.getTargettypes();
+ }
+
+
+ public void loadConfigurationSettings(ICStorageElement se) {
+ if (sbsv2BuildInfo == null){
+ sbsv2BuildInfo = new SBSv2BuilderInfo();
+ }
+
+ sbsv2BuildInfo.loadFromStorage(se);
+ }
+
+ public void saveConfigurationSettings(ICStorageElement se, ISymbianBuildContext context) {
+ sbsv2BuildInfo = new SBSv2BuilderInfo((ISBSv2BuildContext)context);
+ sbsv2BuildInfo.saveToStorage(se.createChild(SBSV2_DATA_ID));
+ }
+
+ /**
+ * Get the unique ID for this build configuration.
+ * For ABLD it is the display name, for SBSv2, it is the builder ID (cconfiguration 'id')
+ * @return
+ */
+ public String getConfigurationID() {
+ return getConfigID();
+ }
+
+ /**
+ * Get the full path to the prefix file defined under \epoc32\tools\variant\variant.cfg
+ * @return A path object, or null if the variant.cfg does not exist. This routine does not check to see if the returned path exists.
+ */
+ public IPath getPrefixFromVariantCfg(){
+ ISBSv2BuildInfo sbsv2BldInfo = ((ISBSv2BuildInfo)getSDK().getBuildInfo(ISymbianBuilderID.SBSV2_BUILDER));
+ return sbsv2BldInfo.getPrefixFromVariantCfg();
+ }
+
+ public List<IDefine> getBuildMacros() {
+ ISBSv2BuildInfo sbsv2BldInfo = ((ISBSv2BuildInfo)getSDK().getBuildInfo(ISymbianBuilderID.SBSV2_BUILDER));
+ Map<String, String> buildMacroMap = sbsv2BldInfo.getBuildMacros(getSBSv2Alias());
+ List<IDefine> defines = new ArrayList<IDefine>();
+ for (String macroName : buildMacroMap.keySet()){
+ defines.add(DefineFactory.createDefine(macroName, buildMacroMap.get(macroName)));
+ }
+
+ return defines;
+ }
+
+ public List<IDefine> getMetadataMacros() {
+ ISBSv2BuildInfo sbsv2BldInfo = ((ISBSv2BuildInfo)getSDK().getBuildInfo(ISymbianBuilderID.SBSV2_BUILDER));
+ Map<String, String> platMacroMap = sbsv2BldInfo.getMetadataMacros(getSBSv2Alias());
+ List<IDefine> defines = new ArrayList<IDefine>();
+ for (String macroName : platMacroMap.keySet()){
+ defines.add(DefineFactory.createDefine(macroName, platMacroMap.get(macroName)));
+ }
+
+ return defines;
+ }
+
+ public IDefine getTargetTypeMacro(String targettype) {
+ ISBSv2BuildInfo sbsv2BuildInfo = (ISBSv2BuildInfo)sdk.getBuildInfo(ISymbianBuilderID.SBSV2_BUILDER);
+ return DefineFactory.createDefine(sbsv2BuildInfo.getTargetTypeMacro(targettype));
+ }
+
+
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/IBuildArgumentsInfo.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,93 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+package com.nokia.carbide.cpp.internal.api.sdk;
+
+/**
+ * IBuildArgumentsInfo represents one instance of configuration data for the Arguments tab.
+ * This interface only applies for the Symbian 'abld' build system (SBSv1)
+ * @see ICarbideBuildConfiguration
+ *
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface IBuildArgumentsInfo {
+
+ /**
+ * Get the arguments to pass to bldmake bldfiles
+ * @return string of arguments which may be empty
+ */
+ String getBldmakeBldFilesArgs();
+
+ /**
+ * Get the arguments to pass to bldmake clean
+ * @return string of arguments which may be empty
+ */
+ String getBldmakeCleanArgs();
+
+ /**
+ * Get the arguments to pass to abld build
+ * @return string of arguments which may be empty
+ */
+ String getAbldBuildArgs();
+
+ /**
+ * Get the arguments to pass to abld export
+ * @return string of arguments which may be empty
+ */
+ String getAbldExportArgs();
+
+ /**
+ * Get the arguments to pass to abld makefile
+ * @return string of arguments which may be empty
+ */
+ String getAbldMakefileArgs();
+
+ /**
+ * Get the arguments to pass to abld library
+ * @return string of arguments which may be empty
+ */
+ String getAbldLibraryArgs();
+
+ /**
+ * Get the arguments to pass to abld resource
+ * @return string of arguments which may be empty
+ */
+ String getAbldResourceArgs();
+
+ /**
+ * Get the arguments to pass to abld target
+ * @return string of arguments which may be empty
+ */
+ String getAbldTargetArgs();
+
+ /**
+ * Get the arguments to pass to abld final
+ * @return string of arguments which may be empty
+ */
+ String getAbldFinalArgs();
+
+ /**
+ * Get the arguments to pass to abld clean
+ * @return string of arguments which may be empty
+ */
+ String getAbldCleanArgs();
+
+ /**
+ * Get the arguments to pass to abld freeze
+ * @return string of arguments which may be empty
+ */
+ String getAbldFreezeArgs();
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/ISBSv1BuildContext.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,69 @@
+package com.nokia.carbide.cpp.internal.api.sdk;
+
+import java.util.List;
+
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+
+/**
+ * Build Context specific information for the SBS/Raptor Symbian Builder.
+ * @see ICarbideBuildConfigation
+ * @since 3.0
+ * @deprecated - Temporary support exists for abld on Symbian^2 but will be removed, vFuture
+ *
+ */
+public interface ISBSv1BuildContext extends ISymbianBuildContext {
+
+ /**
+ * Platform constants
+ */
+ public static final String EMULATOR_PLATFORM = "WINSCW";
+ public static final String GCCE_PLATFORM = "GCCE";
+ public static final String ARMV5_PLATFORM = "ARMV5";
+ public static final String ARMV6_PLATFORM = "ARMV6";
+ public static final String ARMV5_ABIV2_PLATFORM = "ARMV5_ABIV2";
+ public static final String ARMV6_ABIV2_PLATFORM = "ARMV6_ABIV2";
+
+ /**
+ * For Symbian Bianry Variation, platforms will be names <plat>.<variation>
+ * So in some cases you need to know only the platforms that the variant is based on.
+ * For example, a build platform name of "armv5.myvariant" will return "armv5".
+ * @return The base platform string.
+ * @see isSymbianBinaryVariation()
+ * @since 2.0
+ * @deprecated
+ */
+ public String getBasePlatformForVariation();
+
+ /**
+ * Get the (abld)build arguments info. Contains pref settings from the Arguments tab.
+ * This only applies when building with SBSv1 (bldmake, abld)
+ * @return IBuildArgumentsInfo instance, never null
+ * @deprecated
+ */
+ IBuildArgumentsInfo getBuildArgumentsInfo();
+
+ /**
+ * Get the (abld)build arguments info. Contains pref settings from the Arguments tab.
+ * This only applies when building with SBSv1 (bldmake, abld)
+ * @return A copy of BuildArgumentsInfo instance, never null
+ * @deprecated
+ */
+ BuildArgumentsInfo getBuildArgumentsInfoCopy();
+
+ /**
+ * Set the build arguments info for SBSv2 build arguments. This only sets values in memory, does
+ * not write settings to disk.
+ * @return IBuildArgumentsInfo instance, never null
+ * @deprecated
+ */
+ void setBuildArgumentsInfo(BuildArgumentsInfo bldArgInfo);
+
+ /**
+ * Returns a list of the macros defined in the variant.cfg file. This is NOT the macros
+ * in the HRH file, but the actual maros written to the variant.cfg file.
+ * @return A String list of macros found as is, or an empty list if none.
+ */
+ public List<String> getVariantCFGMacros();
+
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/ISBSv1BuildInfo.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,116 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+*/
+
+package com.nokia.carbide.cpp.internal.api.sdk;
+
+import java.util.List;
+
+import com.nokia.carbide.cpp.sdk.core.IBSFCatalog;
+import com.nokia.carbide.cpp.sdk.core.ISBVCatalog;
+import com.nokia.carbide.cpp.sdk.core.ISDKBuildInfo;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+
+/**
+ * Interface for SBSv1 specific build information.
+ * @since 3.0
+ * @deprecated - Temporary support exists for abld on Symbian^2 but will be removed, vFuture
+ *
+ */
+public interface ISBSv1BuildInfo extends ISDKBuildInfo {
+
+ /**
+ * Clears the list of macros specific to all abld build platforms
+ * @deprecated
+ */
+ void clearPlatformMacros();
+
+ /**
+ * Returns the list of all available platforms for a SDK.
+ * @return a list of platform names which may be empty.
+ * @deprecated
+ */
+ List<String> getAvailablePlatforms();
+
+ /**
+ * Get the BSF catalog for a SDK.
+ * @deprecated
+ */
+ IBSFCatalog getBSFCatalog();
+
+ /**
+ * Returns the list of all platform macros for a SDK.
+ * <p>
+ * This is somewhat equivalent to calling "bldmake plat" on the command line
+ * These are the macros that can be used in MMP and INF files. They are only given by name (no value)
+ * </p>
+ * @param platform the platform name
+ * @return a list of macros, which may be empty.
+ * @deprecated
+ */
+ List<String> getPlatformMacros(String platform);
+
+ /**
+ * Get the Symbian Binary Variation (SBV) catalog for a SDK.
+ * @deprecated
+ */
+ ISBVCatalog getSBVCatalog();
+
+ /**
+ * Get the macro for the given target type, e.g. "__EXE__" or "__DLL__"
+ * @param targettype
+ * @return list of macro strings, may be empty
+ * @deprecated
+ */
+ String getTargetTypeMacro(String targettype);
+
+ /**
+ * Get a list of macros that are used to distinguish a SDK. Typically only
+ * S603rd edition SDKs contain this information and it's used to differentiate between
+ * varios S60 SDK releases. Other vendors, such as UIQ may put their macros in the variant HRH file.
+ * @return A list of macros just returned by name.
+ * @deprecated
+ */
+ public List<String> getVendorSDKMacros();
+
+ /**
+ * Tells whether or not the plug-in installer has sniffed this SDK for eclipse plug-ins to install.
+ * @return true if the SDK was scanned
+ * @deprecated
+ */
+ boolean isPreviouslyScanned();
+
+ /**
+ * @deprecated
+ */
+ void setPreviouslyScanned(boolean wasScanned);
+
+ /**
+ * Returns the list of all built in macros for this configuration. This is ABLD specific. SBSv2 gets these macros from the --query=config.
+ * <p>
+ * Macros will be just a name, e.g. "_DEBUG", "__SYMBIAN32__", etc..
+ * </p>
+ *
+ * @return a list of macros which may be empty.
+ * @deprecated
+ */
+ List<String> getBuiltinMacros(ISymbianBuildContext context);
+
+ /**
+ * Get a list of supported targettypes listed by this SDK. This routine parses the
+ * \epoc32\tools\trgttype.pm file to build it's list.
+ * @return A list of targettype names that can be used in an MMP file
+ * @deprecated
+ */
+ List<String> getSupportedTargetTypes();
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/ISBSv2BuildConfigInfo.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+package com.nokia.carbide.cpp.internal.api.sdk;
+
+/**
+ * Interface to SBSv2 build configuration specific data
+ */
+public interface ISBSv2BuildConfigInfo {
+
+ // Data attribute id's saved in .cproject file
+ public final static String ATRRIB_CONFIG_BASE_PLATFORM = "CONFIG_BASE_PLATFORM"; //$NON-NLS-1$
+ public final static String ATTRIB_CONFIG_TARGET = "CONFIG_TARGET"; //$NON-NLS-1$
+ public final static String ATTRIB_SBSV2_BUILD_ALIAS = "SBSV2_BUILD_ALIAS"; //$NON-NLS-1$
+ public final static String ATTRIB_SBSV2_CONFIG_DISPLAY_STRING = "SBSV2_CONFIG_DISPLAY_STRING"; //$NON-NLS-1$
+ public final static String ATTRIB_SBSV2_SDK_ID = "ATTRIB_SBSV2_SDK_ID";
+
+ /** Retrieve a specfic .cproject SBSv2 data value from a given ID */
+ String getSBSv2Setting(String id);
+
+ /**
+ * Set a specific SBSv2 configuration specific data value
+ * @param id
+ * @param value
+ */
+ void setSBSv2Setting(String id, String value);
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/ISBSv2BuildContext.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,80 @@
+package com.nokia.carbide.cpp.internal.api.sdk;
+
+import java.util.List;
+
+import org.eclipse.core.runtime.IPath;
+
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+
+/**
+ * Build Context specific information for the SBS/Raptor Symbian Builder.
+ * @see ICarbideBuildConfigation
+ * @since 3.0
+ *
+ */
+public interface ISBSv2BuildContext extends ISymbianBuildContext {
+
+ public static final String BUILDER_ID = "com.nokia.carbide.builder.raptor";
+
+ public static final String TOOLCHAIN_ARM = "ARM";
+ public static final String TOOLCHAIN_GCCE = "GCCE";
+ public static final String TOOLCHAIN_WINSCW = "WINSCW";
+ public static final String TOOLCHAIN_UNKNOWN = "UNKNOWN";
+
+ public static final String MACRO_ARM = "__ARMCC__";
+ public static final String MACRO_GCCE = "__GCCE__";
+ public static final String MACRO_WINSCW = "__WINSCW__";
+
+ // SBSv2 only config settings
+ public final static String SBSV2_DATA_ID = "SBSV2_DATA_ID"; //$NON-NLS-1$
+
+ /**
+ * Retrieve the build-able configuration; a valid command that cab be passed with Raptor's -c parameter.
+ * This should not be used and should return null for abld-configurations.
+ * @return the configuration name, or null if none.
+ */
+ public String getSBSv2Alias();
+
+ /**
+ * Get the unique configuration ID for the SBSv2 build configuration.
+ * @return configuration ID
+ */
+ public String getConfigID();
+
+ /**
+ * Get the implicit directory searched for *.def files by the DEFFILE statement.
+ * @return bare directory name (e.g. 'BWINS', 'BMARM', 'EABI')
+ */
+ public String getDefaultDefFileDirectoryName();
+
+ /**
+ * Get stored result from Raptor config query.
+ * @return ISBSv2ConfigQueryData object
+ */
+ public ISBSv2ConfigQueryData getConfigQueryData();
+
+ /**
+ * Get tool chain for the build context
+ * @return tool chain name (e.g. 'ARM', 'GCCE', 'WINSCW')
+ */
+ public String getToolChain();
+
+ /**
+ * Get system include paths returned by Raptor config query.
+ * @return list of include paths
+ */
+ public List<IPath> getSystemIncludes();
+
+ /**
+ * Retrieve the actual \epoc32\release directory a binary is targeted for.
+ * @return
+ */
+ public String getPlatformReleaseDirName();
+
+ /**
+ * Get the supported targettypes for this build configuration
+ * @return
+ */
+ public List<String> getSupportedTargettypes();
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/ISBSv2BuildInfo.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,72 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+*/
+
+package com.nokia.carbide.cpp.internal.api.sdk;
+
+import java.util.Map;
+
+import org.eclipse.core.runtime.IPath;
+
+import com.nokia.carbide.cpp.sdk.core.ISDKBuildInfo;
+
+/**
+ * Interface for SBSv2 specific build information.
+ *
+ */
+public interface ISBSv2BuildInfo extends ISDKBuildInfo {
+
+ /**
+ * Returns the list of all platform/metadata macros for a given build alias (sbs configuration).
+ * <p>
+ * These are the <metadata/> macros from a query to Raptor with 'sbs --query=config[<config>].
+ * These are the macros that can be used in MMP and INF files.
+ * </p>
+ * @param sbs build alias
+ * @return a map of macros and value pairs, which may be empty.
+ */
+ Map<String, String> getMetadataMacros(String buildAlias);
+
+ /**
+ * Returns the list of all build macros fro a given build alias (sbs configuration).
+ * <p>
+ * These are the <build/> macros from a query to Raptor with 'sbs --query=config[<config>].
+ * These are the macros that can be used in C/C++ files.
+ * </p>
+ * @param buildAlias
+ * @return a map of macros and value pairs, which may be empty.
+ */
+ public Map<String, String> getBuildMacros(String buildAlias);
+
+ /**
+ * Get the full path to the prefix file defined under \epoc32\tools\variant\variant.cfg
+ * @return A path object, or null if the variant.cfg does not exist. This routine does not check to see if the returned path exists.
+ */
+ public IPath getPrefixFromVariantCfg();
+
+ /**
+ * Get the macro for the given target type, e.g. "__EXE__" or "__DLL__"
+ * @param targettype
+ * @return list of macro strings, may be empty
+ */
+ String getTargetTypeMacro(String targettype);
+
+ /**
+ * Tells whether or not the plug-in installer has sniffed this SDK for eclipse plug-ins to install.
+ * @return true if the SDK was scanned.
+ * @since 2.0
+ */
+ boolean isPreviouslyScanned();
+
+ void setPreviouslyScanned(boolean wasScanned);
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/ISBSv2ConfigQueryData.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,21 @@
+package com.nokia.carbide.cpp.internal.api.sdk;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Interface to interact directly with results for Raptor configuration query data (--query=config{<config>])
+ * @since 3.0
+ */
+public interface ISBSv2ConfigQueryData extends Serializable {
+ public String getAlias();
+ public String getBuildPrefix();
+ public Map<String, String> getBuildMacros();
+ public String getConfigurationErrorMessage();
+ public Map<String, String> getMetaDataMacros();
+ public List<String> getMetaDataIncludes();
+ public String getMetaDataVariantHRH();
+ public String getOutputPathString();
+ public List<String> getTargettypes();
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/ISymbianSDKModifier.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,77 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+*/
+
+package com.nokia.carbide.cpp.internal.api.sdk;
+
+import org.eclipse.core.runtime.IPath;
+import org.osgi.framework.Version;
+
+import com.nokia.carbide.cpp.sdk.core.ISDKBuildInfo;
+
+/**
+ * Interface for modifying various attributes of Symbian OS SDK.
+ *
+ */
+public interface ISymbianSDKModifier {
+
+ /**
+ * Add a feature supported by the SDK.
+ * @param feature supported feature
+ */
+ void addSupportedFeature(Object feature);
+
+ /**
+ * Sets the build info for a particular builder.
+ * @param buildInfo build info
+ * @param builderId id string of a builder
+ */
+ void setBuildInfo(ISDKBuildInfo buildInfo, String builderId);
+
+ /**
+ * Marks the SDK as enabled or disabled.
+ * @param enable whether to enable or disable the SDK
+ */
+ void setEnabled(boolean enable);
+
+ /**
+ * Set the absolute path to the epoc32 directory of this SDK.
+ * @param epocRoot absolute path to the epoc32 directory
+ */
+ void setEPOCROOT(String epocRoot);
+
+ /**
+ * Sets display name of a SDK. This is the com.vendor.family identifier.
+ * @param name SDK display name
+ */
+ void setName(String name);
+
+ /**
+ * Sets the OS version string of a SDK.
+ * @param osVer OS version
+ */
+ public void setOSVersion(Version osVer);
+
+ /**
+ * Sets the prefix file for a particular builder.
+ * @param prefixFile path of prefix file
+ * @param builderId id string of a builder
+ */
+ void setPrefixFile(IPath prefixFile, String builderId);
+
+ /**
+ * Sets the unique id of a SDK.
+ * @param id id string of a SDK
+ */
+ void setUniqueId(String id);
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/SBSv2BuilderInfo.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,121 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+package com.nokia.carbide.cpp.internal.api.sdk;
+
+import java.util.HashMap;
+
+import org.eclipse.cdt.core.settings.model.ICStorageElement;
+
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+
+public class SBSv2BuilderInfo implements ISBSv2BuildConfigInfo {
+
+ HashMap<String, String> sbsv2ConfigDataMap = new HashMap<String, String>();
+
+ ISymbianBuildContext context;
+
+ public SBSv2BuilderInfo(ISBSv2BuildContext context) {
+ String buildAlias = context.getSBSv2Alias() != null ? context.getSBSv2Alias() : "";
+ sbsv2ConfigDataMap.put(ISBSv2BuildConfigInfo.ATTRIB_SBSV2_BUILD_ALIAS, buildAlias);
+ sbsv2ConfigDataMap.put(ISBSv2BuildConfigInfo.ATRRIB_CONFIG_BASE_PLATFORM, context.getPlatformString());
+ sbsv2ConfigDataMap.put(ISBSv2BuildConfigInfo.ATTRIB_CONFIG_TARGET, context.getTargetString());
+ sbsv2ConfigDataMap.put(ISBSv2BuildConfigInfo.ATTRIB_SBSV2_CONFIG_DISPLAY_STRING, context.getDisplayString());
+ sbsv2ConfigDataMap.put(ISBSv2BuildConfigInfo.ATTRIB_SBSV2_SDK_ID, context.getSDK().getUniqueId());
+ this.context = context;
+ }
+
+ /**
+ * Using the default constructor presumes the sbsv2ConfigDataMap will be filled out by subsequent calls to loadFromStorage(ICStorageElement rootStorage)
+ * or setSBSv2Setting(String id, String value)
+ */
+ public SBSv2BuilderInfo(){
+
+ }
+
+ public void loadFromStorage(ICStorageElement rootStorage) {
+
+ String value = rootStorage.getAttribute(ATRRIB_CONFIG_BASE_PLATFORM);
+ if (value != null) {
+ sbsv2ConfigDataMap.put(ATRRIB_CONFIG_BASE_PLATFORM, value);
+ }
+
+ value = rootStorage.getAttribute(ATTRIB_CONFIG_TARGET);
+ if (value != null) {
+ sbsv2ConfigDataMap.put(ATTRIB_CONFIG_TARGET, value);
+ }
+
+ value = rootStorage.getAttribute(ATTRIB_SBSV2_BUILD_ALIAS);
+ if (value != null) {
+ sbsv2ConfigDataMap.put(ATTRIB_SBSV2_BUILD_ALIAS, value);
+ }
+
+ value = rootStorage.getAttribute(ATTRIB_SBSV2_CONFIG_DISPLAY_STRING);
+ if (value != null) {
+ sbsv2ConfigDataMap.put(ATTRIB_SBSV2_CONFIG_DISPLAY_STRING, value);
+ }
+
+ value = rootStorage.getAttribute(ATTRIB_SBSV2_SDK_ID);
+ if (value != null) {
+ sbsv2ConfigDataMap.put(ATTRIB_SBSV2_SDK_ID, value);
+ }
+ }
+
+ public void saveToStorage(ICStorageElement rootStorage) {
+
+ String value = sbsv2ConfigDataMap.get(ATRRIB_CONFIG_BASE_PLATFORM);
+ if (value != null && value.trim().length() > 0){
+ rootStorage.setAttribute(ATRRIB_CONFIG_BASE_PLATFORM, value);
+ }
+
+ value = sbsv2ConfigDataMap.get(ATTRIB_CONFIG_TARGET);
+ if (value != null && value.trim().length() > 0){
+ rootStorage.setAttribute(ATTRIB_CONFIG_TARGET, value);
+ }
+
+ value = sbsv2ConfigDataMap.get(ATTRIB_SBSV2_BUILD_ALIAS);
+ if (value != null && value.trim().length() > 0){
+ rootStorage.setAttribute(ATTRIB_SBSV2_BUILD_ALIAS, value);
+ }
+
+ value = sbsv2ConfigDataMap.get(ATTRIB_SBSV2_CONFIG_DISPLAY_STRING);
+ if (value != null && value.trim().length() > 0){
+ rootStorage.setAttribute(ATTRIB_SBSV2_CONFIG_DISPLAY_STRING, value);
+ }
+
+ value = sbsv2ConfigDataMap.get(ATTRIB_SBSV2_SDK_ID);
+ if (value != null && value.trim().length() > 0){
+ rootStorage.setAttribute(ATTRIB_SBSV2_SDK_ID, value);
+ }
+
+ }
+
+ /**
+ * @see {@link ISBSv2BuildConfigInfo} for id values
+ */
+ public String getSBSv2Setting(String id) {
+ return sbsv2ConfigDataMap.get(id);
+ }
+
+ /**
+ * @see {@link ISBSv2BuildConfigInfo} for id values
+ */
+ public void setSBSv2Setting(String id, String value) {
+ sbsv2ConfigDataMap.put(id, value);
+ }
+
+}
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/SBSv2Utils.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/SBSv2Utils.java Wed Aug 25 12:42:09 2010 -0500
@@ -13,38 +13,24 @@
package com.nokia.carbide.cpp.internal.api.sdk;
import java.io.File;
-import java.io.FileFilter;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
-import java.util.Map;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
import org.eclipse.cdt.utils.spawner.EnvironmentReader;
-import org.eclipse.core.filesystem.URIUtil;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.InstanceScope;
import org.osgi.framework.Version;
import org.osgi.service.prefs.BackingStoreException;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.InputSource;
-import org.xml.sax.helpers.DefaultHandler;
import com.nokia.carbide.cpp.sdk.core.ISDKManager;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
-import com.nokia.cpp.internal.api.utils.core.FileUtils;
import com.nokia.cpp.internal.api.utils.core.HostOS;
import com.nokia.cpp.internal.api.utils.core.Logging;
@@ -54,15 +40,17 @@
*/
public class SBSv2Utils {
- private static final String SBSV2_FILTERED_CONFIGS_STORE = "sbsv2FilteredConfigs"; //$NON-NLS-1$
- private static final String SBSV2_FILTERED_CONFIGS_STORE_INITED = "sbsv2FilteredConfigsInited"; //$NON-NLS-1$
+ //private static final String SBSV2_FILTERED_CONFIGS_STORE = "sbsv2FilteredConfigs"; //$NON-NLS-1$
+ private static final String SBSV2_FILTERED_CONFIGS_STORE_V2 = "sbsv2FilteredConfigs_V2"; //$NON-NLS-1$
+ //private static final String SBSV2_FILTERED_CONFIGS_STORE_INITED = "sbsv2FilteredConfigsInited"; //$NON-NLS-1$
+ private static final String SBSV2_FILTERED_CONFIGS_STORE_INITED_V2 = "sbsv2FilteredConfigsInited_V2"; //$NON-NLS-1$
private static final String SBSV2_FILTERED_CONFIGS_DELIMETER = ";"; //$NON-NLS-1$
private static final long VALID_ABLD_SIZE = 1024;
/**
* Map of usable Raptor alias for -c parameter and base platform: <alise, base plat>
*/
- private static Map<String, String> unfilteredSBSv2ConfigNames;
+// private static Map<String, String> unfilteredSBSv2ConfigNames;
/** Path, to and including the SBS script */
protected static IPath sbsPath;
@@ -85,50 +73,6 @@
}
/**
- * Get the build configurations supported by SBSv2
- * @param refreshList whether or not to parse the configuration xml files again
- * @return A map of raptor aliases (key) to base build platform. Never null;
- */
- public static Map<String, String> getUnfilteredSBSv2BuildConfigurations(boolean refreshList) {
-
- if (unfilteredSBSv2ConfigNames == null || refreshList || unfilteredSBSv2ConfigNames.size() == 0) {
- unfilteredSBSv2ConfigNames = new HashMap<String, String>();
-
- // parse the xml files in <sbs-install>/lib/config/ to get SBSv2 configs
- try {
-
- IPath configPath = getSBSBinDirectory();
- if (configPath != null) {
- configPath = configPath.removeLastSegments(1).append("lib/config"); //$NON-NLS-1$
- File configDir = configPath.toFile();
- if (configDir.exists() && configDir.isDirectory()) {
- File[] configFiles = FileUtils.listFilesInTree(configDir, new FileFilter() {
-
- public boolean accept(File arg0) {
- if (arg0.isDirectory()) {
- return true;
- }
- return arg0.getName().toLowerCase().endsWith("xml"); //$NON-NLS-1$
- }
-
- }, false);
-
- for (File file : configFiles) {
- getConfigsForFile(file);
- }
- }
- }
-
- } catch (Exception e) {
- e.printStackTrace();
- Logging.log(SDKCorePlugin.getDefault(), Logging.newStatus(SDKCorePlugin.getDefault(), e));
- }
- }
-
- return unfilteredSBSv2ConfigNames;
- }
-
- /**
* Given a list of SDKs, returns the list of the SDK's supported by SBSv2
* @param sdks list of SDK's to check
* @return list of SBSv2 supported SDK's, may be empty
@@ -140,12 +84,11 @@
if (!enableSBSv1Support()) {
supportedSDKs.addAll(sdks);
} else {
- //TODO need a better way to do this from Symbian.
- // For now, just filter out anything older than 9.4
+ // Filter out anything older than 9.4
for (ISymbianSDK sdk : sdks) {
Version osVersion = sdk.getOSVersion();
- if (osVersion.getMajor() > 8 ||
- (osVersion.getMajor() == 8 && osVersion.getMinor() > 3)) {
+ if (osVersion.getMajor() > 8 || osVersion.getMajor() == 0 ||
+ (osVersion.getMajor() == 9 && osVersion.getMinor() > 3)) {
supportedSDKs.add(sdk);
}
}
@@ -155,23 +98,32 @@
/**
* Returns the list of SBSv2 build configuration names that should
- * be filtered out of any UI
+ * INCLUDED in any UI. Only configs to be displayed are saved
*/
- public static String[] getSBSv2ConfigurationsToFilter() {
+ public static List<String> getSBSv2FilteredConfigPreferences() {
+ List<String> buildAliasList = new ArrayList<String>();
IEclipsePreferences prefs = new InstanceScope().getNode(SDKCorePlugin.PLUGIN_ID);
if (prefs != null) {
- String configs = prefs.get(SBSV2_FILTERED_CONFIGS_STORE, "");
- return configs.split(SBSV2_FILTERED_CONFIGS_DELIMETER);
+ String configs = prefs.get(SBSV2_FILTERED_CONFIGS_STORE_V2, "");
+ if (configs.length() == 0){
+ initDefaultConfigsToFilter();
+ configs = prefs.get(SBSV2_FILTERED_CONFIGS_STORE_V2, "");
+ }
+ String aliasesToInclude[] = configs.split(SBSV2_FILTERED_CONFIGS_DELIMETER);
+ for (String alias : aliasesToInclude){
+ buildAliasList.add(alias);
+ }
}
- return new String[0];
+
+ return buildAliasList;
}
/**
- * Set the list of SBSv2 build configurations that should be filtered
- * out of any UI
+ * Set the list of SBSv2 build configurations that should be included in a build config list
+ * All others will be filtered out
* @param configs configs to be filtered
*/
- public static void setSBSv2ConfigurationsToFilter(String[] configs) {
+ public static void setSBSv2FilteredConfigs(String[] configs) {
IEclipsePreferences prefs = new InstanceScope().getNode(SDKCorePlugin.PLUGIN_ID);
if (prefs != null) {
String store = ""; //$NON-NLS-1$
@@ -185,7 +137,7 @@
}
if (store.length() >= 0){
// lenght of zero means there are not configs to filter (or show them all)
- prefs.put(SBSV2_FILTERED_CONFIGS_STORE, store);
+ prefs.put(SBSV2_FILTERED_CONFIGS_STORE_V2, store);
try {
prefs.flush();
} catch (BackingStoreException e) {
@@ -197,77 +149,24 @@
}
/**
- * Gets the list of SBSv2 build contexts for the given SDK
- * @param sdk the SDK to get the build contexts for
- * @return the list of SBSv2 build contexts. the list may be empty
- */
- public static List<ISymbianBuildContext> getFilteredSBSv2BuildContexts(ISymbianSDK sdk) {
- List<ISymbianBuildContext> contexts = new ArrayList<ISymbianBuildContext>();
-
- initDefaultConfigsToFilter();
-
- Iterator it = getUnfilteredSBSv2BuildConfigurations(false).entrySet().iterator();
-
- while (it.hasNext()){
-
- Map.Entry buildConfigPair = (Map.Entry)it.next();
- String alias = (String)buildConfigPair.getKey(); // The sbsv2 alias
- String basePlat = (String)buildConfigPair.getValue();
- boolean addConfig = true;
-
- for (String filteredConfig : getSBSv2ConfigurationsToFilter()) {
- if (filteredConfig.compareTo(alias) == 0) {
- addConfig = false;
- break;
- }
- }
-
- if (addConfig) {
-
- // only support configs that fall into something we can make a build context
- // out of. They must have a platform and a target.
- String targetString = null;
- String[] configTokens = alias.split("_"); // $//$NON-NLS-N$
- // We presume that aliases have the second token as the "target".
- if (configTokens[1].toLowerCase().endsWith("deb")) { //$NON-NLS-1$ //$NON-NLS-2$
- targetString = ISymbianBuildContext.DEBUG_TARGET;
- } else if (configTokens[1].toLowerCase().endsWith("rel")) { //$NON-NLS-1$ //$NON-NLS-2$
- targetString = ISymbianBuildContext.RELEASE_TARGET;
- }
-
- if (targetString != null) {
- SymbianBuildContext context = null;
- context = new SymbianBuildContext(sdk, basePlat, targetString, alias);
- if (context != null)
- contexts.add(context);
- }
- }
- }
-
- return sortContexts(contexts);
- }
-
- /**
* There are many build aliases presented by default from Raptor
* Filter out those that are less commonly used on new workspace creation.
*/
public static void initDefaultConfigsToFilter() {
IEclipsePreferences prefs = new InstanceScope().getNode(SDKCorePlugin.getPluginId());
- String inited = prefs.get(SBSV2_FILTERED_CONFIGS_STORE_INITED, "");
+ String inited = prefs.get(SBSV2_FILTERED_CONFIGS_STORE_INITED_V2, "");
if (inited == null || inited.length() == 0){
- Iterator it = getUnfilteredSBSv2BuildConfigurations(false).entrySet().iterator();
List<String> defaultConfigsToFilter = new ArrayList<String>();
- while (it.hasNext()){
- Map.Entry buildConfigPair = (Map.Entry)it.next();
- String buildAlias = (String)buildConfigPair.getKey();
- if (buildAlias.toLowerCase().startsWith("armv6") ||
- buildAlias.toLowerCase().startsWith("armv7") ||
- buildAlias.toLowerCase().startsWith("armv9")){
- defaultConfigsToFilter.add(buildAlias);
- }
- }
- prefs.put(SBSV2_FILTERED_CONFIGS_STORE_INITED, "true");
- setSBSv2ConfigurationsToFilter(defaultConfigsToFilter.toArray(new String[defaultConfigsToFilter.size()]));
+
+ defaultConfigsToFilter.add("armv5_udeb");
+ defaultConfigsToFilter.add("armv5_urel");
+ defaultConfigsToFilter.add("armv5_udeb_gcce");
+ defaultConfigsToFilter.add("armv5_urel_gcce");
+ defaultConfigsToFilter.add("winscw_urel");
+ defaultConfigsToFilter.add("winscw_udeb");
+
+ prefs.put(SBSV2_FILTERED_CONFIGS_STORE_INITED_V2, "true");
+ setSBSv2FilteredConfigs(defaultConfigsToFilter.toArray(new String[defaultConfigsToFilter.size()]));
}
}
@@ -277,16 +176,14 @@
* @return true if SBSv1 is available, false otherwise
*/
- @SuppressWarnings("unused")
public static boolean enableSBSv1Support() {
+ // hard-coded shut off
if (!SDKCorePlugin.SUPPORTS_SBSV1_BUILDER)
return false;
- else if (!enableSBSv2Support())
- return true;
-
- else if (isSBSv1Supported())
+ // check perl script
+ else if (isSBSv1Supported())
return true;
return false;
@@ -304,66 +201,6 @@
return false;
}
- private static void getConfigsForFile(File file) {
-
- try {
- Element root = null;
- DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
- parser.setErrorHandler(new DefaultHandler());
-
- InputSource source = new InputSource(URIUtil.toURI(file.getAbsolutePath()).getPath());
- root = parser.parse(source).getDocumentElement();
-
- NodeList children = root.getChildNodes();
- for (int i=0; i< children.getLength(); i++) {
- getConfigsForNode(children.item(i), root);
- }
-
- } catch (Exception e) {
- e.printStackTrace();
- Logging.log(SDKCorePlugin.getDefault(), Logging.newStatus(SDKCorePlugin.getDefault(), e));
- }
- }
-
- private static void getConfigsForNode(Node node, Node parentNode) {
- if (node.getNodeName().equals("config")) { //$NON-NLS-1$
- Node abstractNode = node.getAttributes().getNamedItem("abstract"); //$NON-NLS-1$
- Node namedNode = node.getAttributes().getNamedItem("name"); //$NON-NLS-1$
- if (abstractNode == null || abstractNode.getNodeValue().equals("false")) { //$NON-NLS-1$
- if (namedNode != null) {
-
- // Get the parent base build platform
- String baseBuildPlatform = null;
- if (parentNode != null){
- baseBuildPlatform = parentNode.getAttributes().getNamedItem("name").getNodeValue();
- if (baseBuildPlatform.split("_").length > 1){
- baseBuildPlatform = baseBuildPlatform.split("_")[0];
- }
- }
-
- // only support configs that fall into something we can make a build context
- // out of. They must have a platform and a target.
- String configName = namedNode.getNodeValue();
- String[] configTokens = configName.split("_");
- if (configTokens.length >= 2) { //$NON-NLS-1$
- String target = configTokens[1];
- if (target.endsWith("deb") || target.endsWith("rel")){ //$NON-NLS-1$
- if (baseBuildPlatform == null){
- baseBuildPlatform = "unknown";
- }
- unfilteredSBSv2ConfigNames.put(configName, baseBuildPlatform);
- }
- }
- }
- }
-
- NodeList children = node.getChildNodes();
- for (int i=0; i< children.getLength(); i++) {
- getConfigsForNode(children.item(i), node);
- }
- }
- }
-
/**
* (Re-)scan the SBSv2 / Raptor configuration
* @return message if error, else null
@@ -402,107 +239,20 @@
}
private static List<ISymbianBuildContext> sortContexts(List<ISymbianBuildContext> contexts){
-
- // 2 sorting stages to handle long Raptor aliases, and multiple aliases that have a similar platform and target prefix (e.g. armv5_urel)
-
Collections.sort(contexts, new Comparator<ISymbianBuildContext>() {
-
- // First sort the target name (Debug / Release) and push Emulation to the top
public int compare(ISymbianBuildContext o1, ISymbianBuildContext o2) {
- String sbsAlias1 = o1.getSBSv2Alias();
- String sbsAlias2 = o2.getSBSv2Alias();
-
- if (o1.getPlatformString().equals(o2.getPlatformString())) {
- if (o1.getSBSv2Alias().split("_").length != o2.getSBSv2Alias().split("_").length)
- return o1.getTargetString().compareTo(o2.getTargetString());
- else if (sbsAlias1.split("_").length >= 3){
- String temp1[] = sbsAlias1.split("_");
- String temp2[] = sbsAlias2.split("_");
- String suffix1 = "";
- String suffix2 = "";
- for (int i = 2; i < temp1.length; i++){
- suffix1 += temp1[i] + "_";
- }
-
- for (int i = 2; i < temp2.length; i++){
- suffix2 += temp2[i] + "_";
- }
-
- return suffix1.compareTo(suffix2);
- }
- } else {
- if (sbsAlias1.toUpperCase().startsWith(ISymbianBuildContext.EMULATOR_PLATFORM)) {
- return -1;
- }else if (sbsAlias2.toUpperCase().startsWith(ISymbianBuildContext.EMULATOR_PLATFORM)) {
- return 1;
- }
- }
- return sbsAlias1.compareTo(sbsAlias2);
- }
-
- });
-
- // Sort long alias names
- Collections.sort(contexts, new Comparator<ISymbianBuildContext>() {
-
- public int compare(ISymbianBuildContext o1, ISymbianBuildContext o2) {
- String sbsAlias1 = o1.getSBSv2Alias();
- String sbsAlias2 = o2.getSBSv2Alias();
-
- if (o1.getSBSv2Alias().split("_").length == 3 && o2.getSBSv2Alias().split("_").length == 3 &&
- o1.getPlatformString().equals(o2.getPlatformString()))
- return o1.getTargetString().compareTo(o2.getTargetString());
- else if (sbsAlias1.split("_").length >= 3 && sbsAlias1.split("_").length >= 3 && !sbsAlias1.equals(sbsAlias2)){
- String temp1[] = sbsAlias1.split("_");
- String temp2[] = sbsAlias2.split("_");
- String suffix1 = "";
- String suffix2 = "";
- for (int i = 2; i < temp1.length; i++){
- suffix1 += temp1[i] + "_";
- }
-
- for (int i = 2; i < temp2.length; i++){
- suffix2 += temp2[i] + "_";
- }
-
- return suffix1.compareTo(suffix2);
- }
-
- return 0;
+ return o2.getDisplayString().compareTo(o1.getDisplayString());
}
});
- return contexts;
- }
+ return contexts;
+ }
- /**
- * If a variant is defined and it changes the output directory, return the directory name.
- * For example, armv5_udeb.phone1 would return '.phone1'. If not variant that changes the release tree, then null
- * NOTE: This method deals with variant text applied to the end of a build alias, specifically testing for
- * variant text defined in the SBSv2 Build Configuration tab.
- * @return null if not a variant or the value to append to the platform release tree directory
- * @see com.nokia.carbide.cdt.internal.builder.ui#SBSv2BuildConfigTab
- */
- public static String getVariantOutputDirModifier(String variantText) {
-
- String[] ignoredVariants = { "generic", "tracecompiler", "trace", "test", "savespace",
- "bfc", "smp", "rvct2_2", "rvct4_0", "rvct3_1", "gcce4_3_2", "remove_freeze" };
+ private static boolean isSBSv1Supported() {
+ if (HostOS.IS_UNIX){
+ return false;
+ }
- String newOutputDir = null;
- if (variantText != null && variantText.length() > 1){
- String[] variantTok = variantText.split("\\.");
- if (variantTok.length > 1){
- for (String ignore : ignoredVariants){
- if (variantTok[1].toLowerCase().equals(ignore))
- return null;
- }
- newOutputDir = "." + variantTok[1];
- }
- }
- return newOutputDir;
- }
-
- private static boolean isSBSv1Supported() {
ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
for (ISymbianSDK sdk : sdkMgr.getSDKList()) {
File abld = new File(sdk.getEPOCROOT(), "epoc32/tools/abld.pl"); //$NON-NLS-1$
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/SDKCacheUtils.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Nokia 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:
+ * Nokia - Initial API and implementation
+ *******************************************************************************/
+
+package com.nokia.carbide.cpp.internal.api.sdk;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectStreamClass;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
+import com.nokia.cpp.internal.api.utils.core.CacheUtils;
+
+public class SDKCacheUtils extends CacheUtils {
+
+ private static final String CACHE_FOLDER_NAME = "CarbideSDKCache"; //$NON-NLS-1$
+ private static SDKCacheUtils cache;
+
+ public static SDKCacheUtils getCache() {
+ if (cache == null)
+ {
+ IPath path = new Path(System.getProperty("user.home"));
+ cache = new SDKCacheUtils(path.append(CACHE_FOLDER_NAME));
+ }
+ return cache;
+ }
+
+ public SDKCacheUtils(IPath defaultLocation) {
+ super(defaultLocation);
+ }
+
+ protected CacheEntry loadCachedData(IPath location, String cacheIdentifier) {
+ IPath flushPath = location.append(Integer.toString(cacheIdentifier.hashCode())).addFileExtension("txt");
+
+ if (flushPath.toFile().exists()) {
+ try {
+ final ClassLoader classLoader = SDKCorePlugin.getDefault().getClass().getClassLoader();
+ FileInputStream fis = new FileInputStream(flushPath.toFile());
+ ObjectInputStream ois = new ObjectInputStream(fis) {
+
+ @Override
+ protected Class<?> resolveClass(ObjectStreamClass desc)
+ throws IOException, ClassNotFoundException {
+ String name = desc.getName();
+ try {
+ return classLoader.loadClass(name);
+ } catch (ClassNotFoundException e) {
+ return super.resolveClass(desc);
+ }
+ }};
+ return new CacheEntry(ois);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ return null;
+ }
+
+}
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/SDKManagerInternalAPI.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/SDKManagerInternalAPI.java Wed Aug 25 12:42:09 2010 -0500
@@ -19,10 +19,18 @@
public class SDKManagerInternalAPI {
+ public static void addMissingSdk(ISymbianSDK sdk) {
+ ((AbstractSDKManager)SDKCorePlugin.getSDKManager()).addMissingSdk(sdk);
+ }
+
public static ISymbianSDK addMissingSdk(String uid) {
return ((AbstractSDKManager)SDKCorePlugin.getSDKManager()).addMissingSdk(uid);
}
+ public static void removeMissingSdk(ISymbianSDK sdk) {
+ ((AbstractSDKManager)SDKCorePlugin.getSDKManager()).removeMissingSdk(sdk);
+ }
+
public static void removeMissingSdk(String uid) {
((AbstractSDKManager)SDKCorePlugin.getSDKManager()).removeMissingSdk(uid);
}
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/SymbianBuildContext.java Tue Aug 24 16:42:58 2010 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,433 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-*/
-package com.nokia.carbide.cpp.internal.api.sdk;
-
-import java.io.File;
-import java.util.*;
-
-import org.eclipse.core.runtime.IPath;
-import org.osgi.framework.Version;
-
-import com.nokia.carbide.cpp.epoc.engine.preprocessor.*;
-import com.nokia.carbide.cpp.internal.sdk.core.model.SymbianMissingSDKFactory;
-import com.nokia.carbide.cpp.sdk.core.*;
-
-public class SymbianBuildContext implements ISymbianBuildContext {
-
- private String sdkId;
- private String platform;
- private String target;
- private String displayString = null;
- private String sbsv2Alias = null;
-
- private static String EMULATOR_DISPLAY_TEXT = "Emulator"; //$NON-NLS-1$
- private static String PHONE_DISPLAY_TEXT = "Phone"; //$NON-NLS-1$
- private static String DEBUG_DISPLAY_TEXT = "Debug"; //$NON-NLS-1$
- private static String RELEASE_DISPLAY_TEXT = "Release"; //$NON-NLS-1$
- private static String SPACE_DISPLAY_TEXT = " "; //$NON-NLS-1$
- private static String SDK_NOT_INSTALLED = "SDK not installed"; //$NON-NLS-1$
-
- // a copy of bad SDK default to fall back
- private static ISymbianSDK fallbackForBadSdk = SymbianMissingSDKFactory.createInstance("dummy_ID"); //$NON-NLS-1$
-
- public SymbianBuildContext(ISymbianSDK theSDK, String thePlatform, String theTarget) {
- sdkId = theSDK.getUniqueId();
- platform = thePlatform.toUpperCase();
- target = theTarget.toUpperCase();
-
- getDisplayString();
- }
-
- public SymbianBuildContext(ISymbianSDK theSDK, String thePlatform, String theTarget, String theSBSv2Alias) {
- sdkId = theSDK.getUniqueId();
- platform = thePlatform.toUpperCase();
- target = theTarget.toUpperCase();
- sbsv2Alias = theSBSv2Alias;
-
- getDisplayString();
- }
-
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result
- + ((platform == null) ? 0 : platform.hashCode());
- result = prime * result + ((getSDK() == null) ? 0 : getSDK().getEPOCROOT().hashCode());
- result = prime * result + ((target == null) ? 0 : target.hashCode());
- return result;
- }
-
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (!(obj instanceof SymbianBuildContext))
- return false;
- final SymbianBuildContext other = (SymbianBuildContext) obj;
- if (platform == null) {
- if (other.platform != null)
- return false;
- } else if (!platform.equals(other.platform))
- return false;
- if (getSDK() == null) {
- if (other.getSDK() != null)
- return false;
- } else if (!getSDK().getEPOCROOT().equals(other.getSDK().getEPOCROOT()))
- return false;
- if (target == null) {
- if (other.target != null)
- return false;
- } else if (!target.equals(other.target)) {
- return false;
- } else if (sbsv2Alias!= null && !sbsv2Alias.equals(other.sbsv2Alias)) {
- return false;
- }
- return true;
- }
-
-
- public ISymbianSDK getSDK() {
-
- ISymbianSDK sdk = SDKCorePlugin.getSDKManager().getSDK(sdkId, true);
- if (sdk == null){
- sdk = fallbackForBadSdk;
- }
-
- return sdk;
- }
-
- public String getPlatformString() {
- return platform.toUpperCase();
- }
-
- public String getTargetString() {
- return target.toUpperCase();
- }
-
- public String getDisplayString() {
- if (displayString == null) {
- // in the form Emulation Debug (WINSCW) [S60_3rd_MR] or
- // Phone Release (GCCE) [S60_3rd_MR]
- if (platform.compareTo(ISymbianBuildContext.EMULATOR_PLATFORM) == 0) {
- displayString = EMULATOR_DISPLAY_TEXT;
- } else {
- displayString = PHONE_DISPLAY_TEXT;
- }
-
- if (target.compareTo(ISymbianBuildContext.DEBUG_TARGET) == 0) {
- displayString = displayString + SPACE_DISPLAY_TEXT + DEBUG_DISPLAY_TEXT;
- } else {
- displayString = displayString + SPACE_DISPLAY_TEXT + RELEASE_DISPLAY_TEXT;
- }
-
- String basePlatform;
- if (sbsv2Alias != null)
- basePlatform = sbsv2Alias;
- else
- basePlatform = platform;
-
- displayString = displayString + " (" + basePlatform + ") [" + getSDK().getUniqueId() + "]"; //$NON-NLS-1$
- }
- return displayString;
- }
-
- public static ISymbianBuildContext getBuildContextFromDisplayName(String displayName) {
- if (isValidConfigName(displayName)) {
- String sdkId = getSDKIDFromConfigName(displayName);
- ISymbianSDK sdk = SDKCorePlugin.getSDKManager().getSDK(sdkId, true);
- if (sdk == null) {
- // add a dummy should a build context ask for a removed SDK
- sdk = SDKManagerInternalAPI.addMissingSdk(sdkId);
- }
-
- return new SymbianBuildContext(sdk,
- getPlatformFromBuildConfigName(displayName),
- getTargetFromBuildConfigName(displayName),
- getSBSv2AliasFromConfigName(displayName));
- }
- return new SymbianBuildContext(fallbackForBadSdk, SDK_NOT_INSTALLED, SDK_NOT_INSTALLED);
- }
-
- /**
- * See if the build configuration is an SBSv2 alias, and if so get the build-able alias name
- * @param displayName
- * @return The full SBSv2 alias that can be used with -c, otherwise null if not SBSv2
- */
- private static String getSBSv2AliasFromConfigName(String displayName) {
- int indexBegin = displayName.indexOf("("); //$NON-NLS-1$
- int indexEnd = displayName.indexOf(")"); //$NON-NLS-1$
- if (indexBegin > 0 && indexEnd > 0){
- String configPart = displayName.substring(indexBegin+1, indexEnd);
- if (configPart.split("_").length > 1){
- return configPart;
- }
- }
-
- return null;
- }
-
- private static String getPlatformFromBuildConfigName(String configName) {
- String[] tokens = configName.split(SPACE_DISPLAY_TEXT);
- String sdkIdToken = tokens[2];
- if (sdkIdToken.contains("_")){
- sdkIdToken = sdkIdToken.substring(1, sdkIdToken.length()-1);
- String[] aliasTokens = sdkIdToken.split("_");
- return aliasTokens[0];
- } else {
- return sdkIdToken.substring(1, sdkIdToken.length()-1);
- }
-
- }
-
- public static String getSDKIDFromConfigName(String configName) {
- int indexBegin = configName.indexOf("["); //$NON-NLS-1$
- int indexEnd = configName.indexOf("]"); //$NON-NLS-1$
- if (indexBegin > 0 && indexEnd > 0){
- return configName.substring(indexBegin+1, indexEnd);
- } else {
- return ""; //$NON-NLS-1$
- }
- }
-
- private static String getTargetFromBuildConfigName(String configName) {
- String[] tokens = configName.split(SPACE_DISPLAY_TEXT);
- if (tokens[1].compareTo(DEBUG_DISPLAY_TEXT) == 0) {
- return ISymbianBuildContext.DEBUG_TARGET;
- } else {
- return ISymbianBuildContext.RELEASE_TARGET;
- }
- }
-
- private static boolean isValidConfigName(String configName) {
- // <Phone | Emulator> <Target> (<Platform>) [<SDK ID>]
- if (configName != null && !configName.equals("")) { //$NON-NLS-1$
- String[] tokens = configName.split(SPACE_DISPLAY_TEXT);
- if (tokens.length >= 4) {
- if (tokens[0].compareTo(EMULATOR_DISPLAY_TEXT) == 0 || tokens[0].compareTo(PHONE_DISPLAY_TEXT) == 0) {
- if (tokens[1].compareTo(DEBUG_DISPLAY_TEXT) == 0 || tokens[1].compareTo(RELEASE_DISPLAY_TEXT) == 0) {
- if (tokens[2].matches("(.*)")) { //$NON-NLS-1$
- if (tokens[3].matches("\\[.*")) { //$NON-NLS-1$
- return true;
- }
- }
- }
- }
- }
- }
- return false;
- }
-
- public String toString() {
- return getDisplayString();
- }
-
- public String getDefaultDefFileDirectoryName(boolean isASSP) {
- // TODO: How the ASSP option affects the path?
-
- String dirName = getDefFileDirectoryNameForPlatform(platform);
- if (dirName == null) {
- // check BSF's
- IBSFCatalog catalog = getSDK().getBSFCatalog();
- if (catalog != null) {
- for (IBSFPlatform plat : catalog.getPlatforms()) {
- if (plat.getName().compareToIgnoreCase(platform) == 0) {
- String mainPlatform = catalog.getReleasePlatform(platform);
- if (mainPlatform != null) {
- dirName = getDefFileDirectoryNameForPlatform(mainPlatform);
- if (dirName == null || dirName.length() < 1) {
- // fallback - all BSF's should be EABI anyway
- return "EABI"; //$NON-NLS-1$
- }
- }
- }
- }
- }
- }
-
- if (dirName == null) {
- // fallback for unknown cases
- dirName = platform;
- }
-
- return dirName;
- }
-
- private String getDefFileDirectoryNameForPlatform(String platform) {
- if (platform.equals(EMULATOR_PLATFORM)) {
- return "BWINS"; //$NON-NLS-1$
- } else if (platform.equals(ARMV5_PLATFORM)
- || platform.equals(ARMV5_ABIV2_PLATFORM)
- || platform.equals(ARMV6_PLATFORM)
- || platform.equals(ARMV6_ABIV2_PLATFORM)
- || platform.equals(GCCE_PLATFORM)) {
- return "EABI"; //$NON-NLS-1$
- }
- return null;
- }
-
- public IPath getCompilerPrefixFile() {
- if (platform.equals(GCCE_PLATFORM) ||
- (sbsv2Alias != null && sbsv2Alias.toUpperCase().contains(GCCE_PLATFORM))) {
- return getGCCEPrefixFilePath();
- } else if (platform.equals(ARMV5_PLATFORM)
- || platform.equals(ARMV5_ABIV2_PLATFORM)
- || platform.equals(ARMV6_PLATFORM)
- || platform.equals(ARMV6_ABIV2_PLATFORM)) {
- return getRVCTPrefixFilePath();
- } else {
- // check BSF's
- IBSFCatalog catalog = getSDK().getBSFCatalog();
- if (catalog != null) {
- for (IBSFPlatform plat : catalog.getPlatforms()) {
- if (plat.getName().compareToIgnoreCase(platform) == 0) {
- String mainPlatform = catalog.getReleasePlatform(platform);
- if (mainPlatform != null) {
- if (mainPlatform.equals(GCCE_PLATFORM)) {
- return getGCCEPrefixFilePath();
- } else if (mainPlatform.equals(ARMV5_PLATFORM)
- || mainPlatform.equals(ARMV5_ABIV2_PLATFORM)
- || mainPlatform.equals(ARMV6_PLATFORM)
- || mainPlatform.equals(ARMV6_ABIV2_PLATFORM)) {
- return getRVCTPrefixFilePath();
- } else {
- // fallback - all BSF's should be EABI anyway
- return getRVCTPrefixFilePath();
- }
- }
- }
- }
- }
- }
-
- // fallback for WINSCW, MSVC, etc.
- return null;
- }
-
- private IPath getGCCEPrefixFilePath() {
- return getSDK().getIncludePath().append("gcce/gcce.h"); //$NON-NLS-1$
- }
-
- private IPath getRVCTPrefixFilePath() {
- IRVCTToolChainInfo[] installedRVCTTools = SDKCorePlugin.getSDKManager().getInstalledRVCTTools();
- // use default in case tools aren't installed
- String rvctFragment = "rvct2_2"; //$NON-NLS-1$
- if (installedRVCTTools.length > 0) {
- rvctFragment = getRVCTFragment(installedRVCTTools[0]);
- }
- IPath prefixFilePath = getSDK().getIncludePath().append(rvctFragment).append(rvctFragment + ".h"); //$NON-NLS-1$
- if (prefixFilePath.toFile().exists()){
- return prefixFilePath;
- } else {
- // SF kits around SF^3 started to only use a single rvct.h header instead of specific versioned ones
- // based on the default installation
- return getSDK().getIncludePath().append("rvct").append("rvct" + ".h");
- }
- }
-
- private String getRVCTFragment(IRVCTToolChainInfo info) {
- int major = 0, minor = 0;
- if (info != null) {
- Version rvctToolsVersion = info.getRvctToolsVersion();
- if (rvctToolsVersion != null) {
- major = info.getRvctToolsVersion().getMajor();
- minor = info.getRvctToolsVersion().getMinor();
- }
- }
- return "rvct" + major + "_" + minor; //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- public List<IDefine> getVariantHRHDefines() {
-
- return getCachedData().getVariantHRHDefines();
- }
-
- public List<File> getPrefixFileIncludes() {
- return getCachedData().getPrefixFileIncludes();
- }
-
-
- public List<IDefine> getCompilerMacros() {
- // we parse the compiler prefix file to gather macros. this can be time consuming so do it
- // once and cache the values. only reset the cache when the compiler prefix has changed.
-
- IPath prefixFile = getCompilerPrefixFile();
- if (prefixFile == null) {
- return Collections.emptyList();
- }
-
- return getCachedData().getCompilerMacros(prefixFile);
- }
-
-
- public String getBuildVariationName() {
- String varName = "";
-
- String[] tokens = getPlatformString().split("\\.");
- if (tokens.length == 2){
- varName = tokens[1];
- }
-
- return varName;
- }
-
-
- public boolean isSymbianBinaryVariation() {
- if (getPlatformString().split("\\.").length == 2){
- return true;
- } else {
- return false;
- }
- }
-
- /**
- * Get the cache holding the data that applies to this build context globally.
- * A build context is subclassed by CarbideBuildConfiguration, which has multiple
- * instances at runtime, thus, a SymbianBuildContext instance should not hold a cache itself.
- * @return cache, never <code>null</code>
- */
- private SymbianBuildContextDataCache getCachedData() {
- return SymbianBuildContextDataCache.getCache(this);
- }
-
-
- public String getBasePlatformForVariation() {
- String plat = "";
-
- String[] tokens = getPlatformString().split("\\.");
- if (tokens.length == 2){
- plat = tokens[0];
- } else {
- return platform;
- }
-
- return plat;
- }
-
-
- /**
- * Get the list of #include paths detected for this context.
- * @return List or <code>null</code>
- */
- public List<File> getCachedSystemIncludePaths() {
- return getCachedData().getSystemIncludePaths();
- }
-
- public String getSBSv2Alias() {
- return sbsv2Alias;
- }
-}
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/SymbianBuildContextDataCache.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/SymbianBuildContextDataCache.java Wed Aug 25 12:42:09 2010 -0500
@@ -87,7 +87,16 @@
* @return
*/
private static String getBuildContextKey(ISymbianBuildContext context) {
- String key = context.getPlatformString() + "/" + context.getTargetString() + "/";
+ String key;
+ if (context instanceof ISBSv2BuildContext) {
+ // use config ID instead of platform + target since
+ // platform and target can be the same for different build contexts
+ ISBSv2BuildContext v2Context = (ISBSv2BuildContext) context;
+ key = v2Context.getConfigID() + "/";
+ }
+ else {
+ key = context.getPlatformString() + "/" + context.getTargetString() + "/";
+ }
ISymbianSDK sdk = context.getSDK();
if (sdk != null)
key += sdk.getEPOCROOT();
@@ -102,6 +111,7 @@
private ExternalFileInfoCollection compilerPrefixFileInfo = null;
private List<File> systemIncludes;
private ISymbianSDK sdk;
+ private ISymbianBuildContext context;
private IPath compilerPrefixFile;
private String platformString;
@@ -109,17 +119,28 @@
private String displayString;
private String contextKey;
-
+
+ /**
+ * One of {@link ISymbianBuilderID}
+ */
+ private String builderId;
+
private boolean changed;
private File cacheFile;
private SymbianBuildContextDataCache(ISymbianBuildContext context) {
if (DEBUG) System.out.println("Creating cache for " + context.getDisplayString());
+ this.context = context;
this.platformString = context.getPlatformString();
this.displayString = context.getDisplayString();
this.sdk = context.getSDK();
this.contextKey = getBuildContextKey(context);
+ if (context instanceof ISBSv1BuildContext) {
+ builderId = ISymbianBuilderID.SBSV1_BUILDER;
+ } else {
+ builderId = ISymbianBuilderID.SBSV2_BUILDER;
+ }
}
/* (non-Javadoc)
@@ -166,15 +187,21 @@
List<IDefine> macros = new ArrayList<IDefine>();
Map<String, IDefine> namedMacros = new HashMap<String, IDefine>();
- File prefixFile = sdk.getPrefixFile();
+
+ File prefixFile = null;
+ if (context.getPrefixFromVariantCfg() != null){
+ prefixFile = context.getPrefixFromVariantCfg().toFile();
+ }
+
+ ISDKBuildInfo buildInfo = sdk.getBuildInfo(builderId);
if (prefixFile == null){
// Check that the prefix file may have become available since the SDK was scanned last.
// This can happen, for e.g., if the user opens the IDE _then_ does a subst on a drive that already has an SDK entry.
- IPath prefixCheck = ((SymbianSDK)sdk).getPrefixFromVariantCfg();
+ IPath prefixCheck = context.getPrefixFromVariantCfg();
if (prefixCheck != null){
prefixFile = prefixCheck.toFile();
- sdk.setPrefixFile(prefixCheck);
+ ((SymbianSDK)sdk).setPrefixFile(prefixCheck, builderId);
}
}
@@ -186,23 +213,28 @@
// Always add epoc32/include to the search path as this is implicit for includes in the HRH
systemPaths.add(new File(sdk.getEPOCROOT() + "epoc32/include"));
- // add any BSF/SBV includes so the headers are picked up from the correct location
- IBSFPlatform bsfPlat = sdk.getBSFCatalog().findPlatform(platformString);
- ISBVPlatform sbvPlat = sdk.getSBVCatalog().findPlatform(platformString);
- if (bsfPlat != null) {
- for (IPath path : bsfPlat.getSystemIncludePaths()) {
- systemPaths.add(path.toFile());
- }
- } else if (sbvPlat != null) {
- LinkedHashMap<IPath, String> platPaths = sbvPlat.getBuildIncludePaths();
- Set<IPath> set = platPaths.keySet();
- for (IPath path : set) {
- String pathType = platPaths.get(path);
- if (pathType.equalsIgnoreCase(ISBVView.INCLUDE_FLAG_PREPEND) || pathType.equalsIgnoreCase(ISBVView.INCLUDE_FLAG_SET)){
+ if (buildInfo instanceof ISBSv1BuildInfo) {
+ // add any BSF/SBV includes so the headers are picked up from the correct location
+ // SBSv1 only
+ ISBSv1BuildInfo sbsv1BuildInfo = (ISBSv1BuildInfo)buildInfo;
+ IBSFPlatform bsfPlat = sbsv1BuildInfo.getBSFCatalog().findPlatform(platformString);
+ ISBVPlatform sbvPlat = sbsv1BuildInfo.getSBVCatalog().findPlatform(platformString);
+
+ if (bsfPlat != null) {
+ for (IPath path : bsfPlat.getSystemIncludePaths()) {
systemPaths.add(path.toFile());
}
+ } else if (sbvPlat != null) {
+ LinkedHashMap<IPath, String> platPaths = sbvPlat.getBuildIncludePaths();
+ Set<IPath> set = platPaths.keySet();
+ for (IPath path : set) {
+ String pathType = platPaths.get(path);
+ if (pathType.equalsIgnoreCase(ISBVView.INCLUDE_FLAG_PREPEND) || pathType.equalsIgnoreCase(ISBVView.INCLUDE_FLAG_SET)){
+ systemPaths.add(path.toFile());
+ }
+ }
}
- }
+ }
MacroScanner scanner = new MacroScanner(
new BasicIncludeFileLocator(null, systemPaths.toArray(new File[systemPaths.size()])),
@@ -230,18 +262,20 @@
hrhFilesParsed.add(inc);
}
- List<String> variantCFGMacros = new ArrayList<String>();
- variantCFGMacros = sdk.getVariantCFGMacros();
- for (String cfgMacros : variantCFGMacros){
- // we don't want duplicate macros, so check to see if it's already there.
- IDefine existingMacro = namedMacros.get(cfgMacros);
- if (existingMacro != null) {
- macros.remove(existingMacro);
+ if (buildInfo instanceof ISBSv1BuildInfo) {
+ // SBSv2 does not parse the variant.cfg file to collect macros.
+ List<String> variantCFGMacros = ((ISBSv1BuildContext)context).getVariantCFGMacros();
+ for (String cfgMacros : variantCFGMacros){
+ // we don't want duplicate macros, so check to see if it's already there.
+ IDefine existingMacro = namedMacros.get(cfgMacros);
+ if (existingMacro != null) {
+ macros.remove(existingMacro);
+ }
+
+ IDefine macro = DefineFactory.createSimpleFreeformDefine(cfgMacros);
+ macros.add(macro);
+ namedMacros.put(macro.getName(), macro);
}
-
- IDefine macro = DefineFactory.createSimpleFreeformDefine(cfgMacros);
- macros.add(macro);
- namedMacros.put(macro.getName(), macro);
}
}
@@ -270,7 +304,8 @@
// we assume that the prefix file will not change often,
// (if at all) for a build context, so dump the cache if the prefix file changes.
- if (compilerPrefixFile != null && !compilerPrefixFile.equals(prefixFile)) {
+ if (compilerPrefixFile != null && prefixFile != null &&
+ !compilerPrefixFile.equals(prefixFile)) {
compilerPrefixFileInfo = null;
}
@@ -324,6 +359,22 @@
compilerPrefixFileInfo.setFiles(files);
}
+ if (context instanceof ISBSv2BuildContext) {
+ // add macros from raptor query
+ ISBSv2BuildContext v2Context = (ISBSv2BuildContext) context;
+ ISBSv2ConfigQueryData configData = v2Context.getConfigQueryData();
+ if (configData != null) {
+ Map<String, String> buildMacros = configData.getBuildMacros();
+ if (buildMacros != null) {
+ for (Iterator<String> itr = buildMacros.keySet().iterator(); itr.hasNext(); ) {
+ String name = itr.next();
+ String value = buildMacros.get(name);
+ macros.add(DefineFactory.createDefine(name, value));
+ }
+ }
+ }
+ }
+
compilerPrefixMacros = macros;
saveCacheFile();
@@ -354,8 +405,15 @@
if (DEBUG) System.out.println("Scanning include paths for " + displayString);
- IBSFPlatform bsfplatform = sdk.getBSFCatalog().findPlatform(platformString);
- ISBVPlatform sbvPlatform = sdk.getSBVCatalog().findPlatform(platformString);
+ IBSFPlatform bsfplatform = null;
+ ISBVPlatform sbvPlatform = null;
+ ISDKBuildInfo buildInfo = sdk.getBuildInfo(builderId);
+ if (buildInfo instanceof ISBSv1BuildInfo) {
+ // SBSv1 only
+ ISBSv1BuildInfo sbsv1BuildInfo = (ISBSv1BuildInfo)buildInfo;
+ bsfplatform = sbsv1BuildInfo.getBSFCatalog().findPlatform(platformString);
+ sbvPlatform = sbsv1BuildInfo.getSBVCatalog().findPlatform(platformString);
+ }
// look in the epoc32 directory of the SDK
IPath includePath = sdk.getIncludePath();
@@ -386,7 +444,7 @@
}
else {
// legacy behavior
- if (platformString.equals(ISymbianBuildContext.EMULATOR_PLATFORM)) {
+ if (platformString.equals(ISBSv1BuildContext.EMULATOR_PLATFORM)) {
dir = new File(includeDir, "wins"); //$NON-NLS-1$
if (dir.exists() && dir.isDirectory()) {
systemIncludes.add(dir);
@@ -419,7 +477,10 @@
}
// also search files in same folder as variant.hrh
- File prefix = sdk.getPrefixFile();
+ File prefix = null;
+ if (context.getPrefixFromVariantCfg() != null){
+ prefix = context.getPrefixFromVariantCfg().toFile();
+ }
if (sbvPlatform != null){
// might be an alternate HRH file to use
IPath varVarHRH = sbvPlatform.getBuildVariantHRHFile();
@@ -427,7 +488,7 @@
prefix = varVarHRH.toFile();
}
}
- if (prefix != null) {
+ if (prefix != null && prefix.getParentFile() != null) {
systemIncludes.add(prefix.getParentFile());
}
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/SymbianMacroStore.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/SymbianMacroStore.java Wed Aug 25 12:42:09 2010 -0500
@@ -178,19 +178,31 @@
}
/**
- * Get a list of Macros for a given OS. Format will just be the name (e.g. "FOO")
+ * Get a list of Macros for a given OS. Format will just be the name (e.g. "FOO").
* @param osVersion - A version object. Only the major and minor rev are checked.
* @param branch - An OS branch (e.g. 'a' or 'b') or an empty string if none.
* @return A full list of define macro names (no values). Returns an empty list if the OS version is not in the store
+ * @deprecated - use getOSMacros(Version osVersion)
*/
public List<String> getOSMacros(Version osVersion, String branch){
+ return getOSMacros(osVersion);
+ }
+
+ /**
+ * Get a list of Macros for a given OS. Format will just be the name (e.g. "FOO").
+ * @param osVersion - A version object. Only the major and minor rev are checked.
+ * @param branch - An OS branch (e.g. 'a' or 'b') or an empty string if none.
+ * @return A full list of define macro names (no values). Returns an empty list if the OS version is not in the store
+ * @deprecated - use {@link ISymbianBuildContext#getVariantHRHDefines()}
+ */
+ public List<String> getOSMacros(Version osVersion){
List<String> osMacroList = new ArrayList<String>();
String majStr = String.valueOf(osVersion.getMajor());
String minStr = String.valueOf(osVersion.getMinor());
if (majStr.length() > 0 && minStr.length() > 0){
String osVerStr = majStr + "." + minStr;
- osMacroList = osMacros.get(osVerStr + branch);
+ osMacroList = osMacros.get(osVerStr);
}
if (osMacroList == null){
@@ -200,6 +212,7 @@
}
+
/**
* Get a hash map of all the platforms and their associated macros for a given OS version
* For OS version, only major/minor are checked in the store.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/sbsv2/SBSv2ConfigQueryData.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,211 @@
+package com.nokia.carbide.cpp.internal.api.sdk.sbsv2;
+
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+import org.xml.sax.helpers.DefaultHandler;
+
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2ConfigQueryData;
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
+import com.nokia.cpp.internal.api.utils.core.Logging;
+
+public class SBSv2ConfigQueryData implements ISBSv2ConfigQueryData {
+
+ private static final long serialVersionUID = 3358697901364441158L;
+
+ private String alias = "";
+ private String meaning = "";
+
+ // Raptor config query data
+ private Map<String, String> buildMacros = new HashMap<String, String>(); // cpp preprocessor macros
+ private Map<String, String> metaDataMacros = new HashMap<String, String>(); // macros to parse the INF/MMPs files (these do not contain values)
+ private List<String> metaDataIncludes = new ArrayList<String>();
+ private List<String> targettypes = new ArrayList<String>();
+ private String buildPrefix = "";
+ private String metaDataVariantHRH = "";
+ private String outputPathString = "";
+ private String configurationErrorMessage = "";
+
+ public SBSv2ConfigQueryData() {
+ this.alias = "";
+ this.meaning = "";
+ }
+
+ public SBSv2ConfigQueryData(String alias, String meaning, String queryResult) {
+ this.alias = alias;
+ this.meaning = meaning;
+ parseQueryConfigResults(queryResult);
+ }
+
+ public String getAlias() {
+ return alias;
+ }
+
+ public String getBuildPrefix() {
+ return buildPrefix;
+ }
+
+ public Map<String, String> getBuildMacros() {
+ return buildMacros;
+ }
+
+ public List<String> getTargettypes() {
+ return targettypes;
+ }
+
+ public String getConfigurationErrorMessage() {
+ return configurationErrorMessage;
+ }
+
+ public Map<String, String> getMetaDataMacros() {
+ return metaDataMacros;
+ }
+
+ public List<String> getMetaDataIncludes() {
+ return metaDataIncludes;
+ }
+
+ public String getMetaDataVariantHRH() {
+ return metaDataVariantHRH;
+ }
+
+ public String getOutputPathString() {
+ return outputPathString;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((alias == null) ? 0 : alias.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ SBSv2ConfigQueryData other = (SBSv2ConfigQueryData) obj;
+ if (alias == null) {
+ if (other.alias != null)
+ return false;
+ } else if (!alias.equals(other.alias))
+ return false;
+ return true;
+ }
+
+ private void parseQueryConfigResults(String queryResult) {
+ try {
+ Element root = null;
+ DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ parser.setErrorHandler(new DefaultHandler());
+
+ StringReader reader = new StringReader( queryResult );
+ InputSource inputSource = new InputSource( reader );
+ root = parser.parse(inputSource).getDocumentElement();
+
+ NodeList children = root.getChildNodes();
+ for (int i=0; i< children.getLength(); i++) {
+ Node configNode = children.item(i);
+ if (configNode.getNodeName().equals("config")){
+ NamedNodeMap aliasAttribs = configNode.getAttributes();
+ String dottedName = aliasAttribs.getNamedItem("meaning").getNodeValue();
+ if (!dottedName.equalsIgnoreCase(meaning) && meaning != null){
+ continue;
+ }
+ if (configNode.getTextContent() != null && configNode.getTextContent().trim().length() > 0){
+ configurationErrorMessage = configNode.getTextContent().trim();
+ break;
+ }
+
+ String outputpath = aliasAttribs.getNamedItem("outputpath").getNodeValue();
+ if (outputpath != null){
+ outputPathString = outputpath;
+ }
+
+ NodeList configChillens = configNode.getChildNodes();
+ for (int ii = 0; ii < configChillens.getLength(); ii++){
+ Node dataNode = configChillens.item(ii);
+ if (dataNode.getNodeName().equals("metadata")){
+ // get <metadata>
+ NodeList metaDataChillens = dataNode.getChildNodes();
+ for (int iii = 0; iii < metaDataChillens.getLength(); iii++){
+ Node metaChild = metaDataChillens.item(iii);
+ NamedNodeMap attribs = metaChild.getAttributes();
+ try {
+ if (metaChild.getNodeName().equals("macro")){
+ String name = attribs.getNamedItem("name").getNodeValue();
+ String value = "";
+ Node valueNode = attribs.getNamedItem("value");
+ if (valueNode != null) {
+ value = valueNode.getNodeValue();
+ }
+ metaDataMacros.put(name, value);
+ } else if (metaChild.getNodeName().equals("include")){
+ String path = attribs.getNamedItem("path").getNodeValue();
+ metaDataIncludes.add(path);
+ } else if (metaChild.getNodeName().equals("preinclude")){
+ metaDataVariantHRH = attribs.getNamedItem("file").getNodeValue();
+ }
+ } catch (Exception e) {
+ // skip it
+ e.printStackTrace();
+ }
+ }
+ } else if (dataNode.getNodeName().equals("build")){
+ // get <build>
+ NodeList buildChillens = dataNode.getChildNodes();
+ for (int iii = 0; iii < buildChillens.getLength(); iii++){
+ Node buildChild = buildChillens.item(iii);
+ NamedNodeMap attribs = buildChild.getAttributes();
+ try {
+ if (buildChild.getNodeName().equals("macro")){
+ String name = attribs.getNamedItem("name").getNodeValue();
+ String value = "";
+ Node valueNode = attribs.getNamedItem("value");
+ if (valueNode != null) {
+ value = valueNode.getNodeValue();
+ }
+ buildMacros.put(name, value);
+ } else if (buildChild.getNodeName().equals("preinclude")){
+ buildPrefix = attribs.getNamedItem("file").getNodeValue();
+ } else if (buildChild.getNodeName().equals("targettype")){
+ String targettype = attribs.getNamedItem("name").getNodeValue();
+ if (targettype != null && targettype.length() > 0){
+ targettypes.add(targettype);
+ }
+ }
+ } catch (Exception e) {
+ // skip it
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+
+ break;
+ }
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ Logging.log(SDKCorePlugin.getDefault(), Logging.newStatus(SDKCorePlugin.getDefault(), e));
+ }
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/sbsv2/SBSv2MinimumVersionException.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,39 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+*/
+package com.nokia.carbide.cpp.internal.api.sdk.sbsv2;
+
+/**
+ * Exception thrown in case something fails when trying
+ * find out facts about current SDK/Platform environment tools.
+ * @since 3.0
+ */
+public class SBSv2MinimumVersionException extends Exception {
+
+ static final long serialVersionUID = -6103977959623981590L;
+
+ /**
+ * Default constructor.
+ */
+ public SBSv2MinimumVersionException(){
+ super();
+ }
+
+ /**
+ * Constructor with attached message.
+ * @param message Informative message about situation causing the exception.
+ */
+ public SBSv2MinimumVersionException(String message){
+ super(message);
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/sbsv2/SBSv2QueryUtils.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,486 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Test the BldInfViewPathHelper class.
+*
+*/
+package com.nokia.carbide.cpp.internal.api.sdk.sbsv2;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Serializable;
+import java.io.StringReader;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.eclipse.cdt.utils.spawner.EnvironmentReader;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.osgi.framework.Version;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+import org.xml.sax.helpers.DefaultHandler;
+
+import com.nokia.carbide.cpp.internal.api.sdk.SBSv2Utils;
+import com.nokia.carbide.cpp.internal.api.sdk.SDKCacheUtils;
+import com.nokia.carbide.cpp.sdk.core.ISDKManager;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
+import com.nokia.cpp.internal.api.utils.core.Logging;
+
+public class SBSv2QueryUtils {
+
+ public static final String QUERY_ALIASES_COMMAND = "--query=aliases";
+ public static final String QUERY_PRODUCTS_COMMAND = "--query=products";
+ public static final String QUERY_CONFIG_COMMAND = "--query=config";
+
+ public static final String ALIAS_CACHE_KEY = "alias_cache";
+ public static final String CONFIG_CACHE_KEY = "config_cache";
+ public static final String PRODUCT_CACHE_KEY = "product_cache";
+
+ public static final String BAD_EPOCROOT = "BADEPOCROOT";
+
+ @SuppressWarnings("unchecked")
+ public static HashMap<String, String> getAliasesForSDK(ISymbianSDK sdk) throws SBSv2MinimumVersionException {
+ HashMap<String, String> aliases;
+ Map<String, HashMap<String, String>> aliasesMap = SDKCacheUtils.getCache().getCachedData(ALIAS_CACHE_KEY, Map.class, 0);
+ SBSv2SDKKey key = new SBSv2SDKKey(sdk);
+
+ if (aliasesMap == null) {
+ aliasesMap = new HashMap<String, HashMap<String, String>>();
+ }
+ else {
+ aliases = aliasesMap.get(key.toString());
+ if (aliases != null && !aliases.containsKey(BAD_EPOCROOT)) {
+ return aliases;
+ }
+ }
+
+ aliases = getAliasesQuery(sdk);
+ aliasesMap.put(key.toString(), aliases);
+ SDKCacheUtils.getCache().putCachedData(ALIAS_CACHE_KEY, (Serializable)aliasesMap, 0);
+ return aliases;
+ }
+
+ @SuppressWarnings("unchecked")
+ public static List<String> getProductVariantsForSDK(ISymbianSDK sdk) throws SBSv2MinimumVersionException {
+ List<String> products;
+ Map<String, List<String>> productsMap = SDKCacheUtils.getCache().getCachedData(PRODUCT_CACHE_KEY, Map.class, 0);
+ SBSv2SDKKey key = new SBSv2SDKKey(sdk);
+
+ if (productsMap == null) {
+ productsMap = new HashMap<String, List<String>>();
+ }
+ else {
+ products = productsMap.get(key.toString());
+ if (products != null && !products.contains(BAD_EPOCROOT)) {
+ return products;
+ }
+ }
+
+ products = getProductsQuery(sdk);
+ productsMap.put(key.toString(), products);
+ SDKCacheUtils.getCache().putCachedData(PRODUCT_CACHE_KEY, (Serializable)productsMap, 0);
+ return products;
+ }
+
+ public static String getConfigQueryXMLforSDK(ISymbianSDK sdk, List<String> aliasOrMeaningArray) throws SBSv2MinimumVersionException {
+
+ checkForMinimumRaptorVersion();
+
+ List<String> argListConfigQuery = new ArrayList<String>();
+ for (String alias : aliasOrMeaningArray){
+ argListConfigQuery.add(QUERY_CONFIG_COMMAND + "[" + alias + "]");
+ }
+
+ Properties envVars = null;
+ if (sdk != null){
+ File epocRoot = new File(sdk.getEPOCROOT());
+ if (epocRoot.exists()){
+ envVars = EnvironmentReader.getEnvVars();
+ envVars.setProperty("EPOCROOT", sdk.getEPOCROOT());
+ }
+ }
+
+ return getSBSQueryOutput(argListConfigQuery, createEnvStringList(envVars));
+ }
+
+ @SuppressWarnings("unchecked")
+ public static SBSv2ConfigQueryData getConfigQueryDataForSDK(ISymbianSDK sdk, String alias) {
+ SBSv2ConfigQueryData configQueryData = null;
+ Map<String, SBSv2ConfigQueryData> configsMap = SDKCacheUtils.getCache().getCachedData(CONFIG_CACHE_KEY, Map.class, 0);
+ String key = (new SBSv2SDKKey(sdk)).toString() + "[" + alias + "]";
+
+ if (configsMap != null) {
+ configQueryData = configsMap.get(key);
+ }
+ return configQueryData;
+ }
+
+ @SuppressWarnings("unchecked")
+ public static void storeConfigQueryDataForSDK(ISymbianSDK sdk, String alias, SBSv2ConfigQueryData configQueryData) {
+ Map<String, SBSv2ConfigQueryData> configsMap = SDKCacheUtils.getCache().getCachedData(CONFIG_CACHE_KEY, Map.class, 0);
+ String key = (new SBSv2SDKKey(sdk)).toString() + "[" + alias + "]";
+
+ if (configsMap == null) {
+ configsMap = new HashMap<String, SBSv2ConfigQueryData>();
+ } else {
+ if (configsMap.get(key) != null) {
+ // configQueryData already exist in cache
+ return;
+ }
+ }
+
+ configsMap.put(key, configQueryData);
+ SDKCacheUtils.getCache().putCachedData(CONFIG_CACHE_KEY, (Serializable)configsMap, 0);
+ }
+
+ public static HashMap<String, String> queryConfigTargetInfo(ISymbianSDK sdk, List<String> aliasOrMeaningArray) throws SBSv2MinimumVersionException{
+
+ checkForMinimumRaptorVersion();
+
+ List<String> argListConfigQuery = new ArrayList<String>();
+
+ for (String alias : aliasOrMeaningArray){
+ argListConfigQuery.add(QUERY_CONFIG_COMMAND + "[" + alias + "]");
+ }
+
+ Properties envVars = null;
+ if (sdk != null){
+ File epocRoot = new File(sdk.getEPOCROOT());
+ if (epocRoot.exists()){
+ envVars = EnvironmentReader.getEnvVars();
+ envVars.setProperty("EPOCROOT", sdk.getEPOCROOT());
+ }
+ }
+ String queryResult = getSBSQueryOutput(argListConfigQuery, createEnvStringList(envVars));
+
+ return parseQueryConfigResults(queryResult);
+ }
+
+ private static String[] createEnvStringList(Properties envProps) {
+
+ if (envProps == null){
+ return null;
+ }
+ String[] env = null;
+ List<String> envList = new ArrayList<String>();
+ Enumeration<?> names = envProps.propertyNames();
+ if (names != null) {
+ while (names.hasMoreElements()) {
+ String key = (String) names.nextElement();
+ envList.add(key + "=" + envProps.getProperty(key));
+ }
+ env = (String[]) envList.toArray(new String[envList.size()]);
+ }
+ return env;
+ }
+
+ private static HashMap<String, String> getAliasesQuery(ISymbianSDK sdk) throws SBSv2MinimumVersionException {
+
+ checkForMinimumRaptorVersion();
+ if (!isEpocRootValid(sdk)) {
+ HashMap<String, String> result = new HashMap<String, String>();
+ result.put(BAD_EPOCROOT, "");
+ }
+
+ List<String> argListAliasQuery = new ArrayList<String>();
+ argListAliasQuery.add(QUERY_ALIASES_COMMAND);
+
+ Properties envVars = EnvironmentReader.getEnvVars();
+ if (sdk != null){
+ envVars.setProperty("EPOCROOT", sdk.getEPOCROOT());
+ } else {
+ envVars.setProperty("EPOCROOT", "FOOBAR");
+ }
+
+ String queryResult = getSBSQueryOutput(argListAliasQuery, createEnvStringList(envVars));
+
+ return parseQueryAliasResult(queryResult);
+ }
+
+ private static List<String> getProductsQuery(ISymbianSDK sdk) throws SBSv2MinimumVersionException {
+
+ checkForMinimumRaptorVersion();
+ if (!isEpocRootValid(sdk)) {
+ List<String> result = new ArrayList<String>();
+ result.add(BAD_EPOCROOT);
+ return result;
+ }
+
+ List<String> argListProductQuery = new ArrayList<String>();
+ argListProductQuery.add(QUERY_PRODUCTS_COMMAND);
+
+ Properties envVars = EnvironmentReader.getEnvVars();
+ if (sdk != null){
+ envVars.setProperty("EPOCROOT", sdk.getEPOCROOT());
+ } else {
+ envVars.setProperty("EPOCROOT", "FOOBAR");
+ }
+
+ String queryResult = getSBSQueryOutput(argListProductQuery, createEnvStringList(envVars));
+ return parseQueryProductsResults(queryResult);
+ }
+
+ private static String getSBSQueryOutput(List<String> queryCommandList, String[] env) {
+ String overallOutput = "";
+
+ Runtime rt = Runtime.getRuntime();
+ IPath sbsPath = SBSv2Utils.getSBSPath();
+ Process p = null;
+ List<String> args = new ArrayList<String>();
+ args.add(sbsPath.toOSString());
+ args.addAll(queryCommandList);
+ try {
+ p = rt.exec(args.toArray(new String[args.size()]), env);
+ } catch (IOException e) {
+ // no such process, SBSv2 not available
+ Logging.log(
+ SDKCorePlugin.getDefault(),
+ Logging.newSimpleStatus(
+ 0,
+ IStatus.WARNING,
+ MessageFormat
+ .format(
+ "Could not find or launch Raptor script ''{0}''; SBSv2 support will not be available",
+ sbsPath), e));
+ }
+ if (p != null) {
+ BufferedReader br = new BufferedReader(new InputStreamReader(p
+ .getInputStream()));
+
+ String stdErrLine = null;
+ try {
+
+ // Only try for 30 seconds then bail in case Raptor hangs
+ int maxTries = 60;
+ int numTries = 0;
+ while (numTries < maxTries) {
+ try {
+ Thread.sleep(500);
+ } catch (InterruptedException e) {
+ // ignore
+ }
+ if (br.ready()) {
+ while ((stdErrLine = br.readLine()) != null) {
+ overallOutput += stdErrLine;
+ numTries = maxTries;
+ }
+
+ }
+ numTries++;
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ return overallOutput;
+ }
+
+ private static Boolean isEpocRootValid(ISymbianSDK sdk) {
+ IPath epocRoot = new Path(sdk.getEPOCROOT());
+ epocRoot = epocRoot.append("epoc32");
+ File epocRootFile = epocRoot.toFile();
+ if (epocRootFile.exists()) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ private static HashMap<String, String> parseQueryAliasResult(String queryResult) {
+ /* Alias to dotted name config */
+ HashMap<String, String> sbsAliasMap = new HashMap<String, String>();
+
+ try {
+ Element root = null;
+ DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ parser.setErrorHandler(new DefaultHandler());
+
+ StringReader reader = new StringReader( queryResult );
+ InputSource inputSource = new InputSource( reader );
+ root = parser.parse(inputSource).getDocumentElement();
+
+ NodeList children = root.getChildNodes();
+ for (int i=0; i< children.getLength(); i++) {
+ Node aliasNode = children.item(i);
+ if (aliasNode.getNodeName().equals("alias")){
+ NamedNodeMap meaning = aliasNode.getAttributes();
+ String dottedName = meaning.getNamedItem("meaning").getNodeValue();
+ String alias = meaning.getNamedItem("name").getNodeValue();
+ //System.out.println("ALIAS QUERY ==> " + dottedName + " <==> " + alias);
+ sbsAliasMap.put(alias, dottedName);
+ }
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ Logging.log(SDKCorePlugin.getDefault(), Logging.newStatus(SDKCorePlugin.getDefault(), e));
+ }
+
+
+ return sbsAliasMap;
+ }
+
+ private static HashMap<String, String> parseQueryConfigResults(String queryResult) {
+ /* Alias to output directory */
+ HashMap<String, String> sbsAliasMap = new HashMap<String, String>();
+
+ try {
+ Element root = null;
+ DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ parser.setErrorHandler(new DefaultHandler());
+
+ StringReader reader = new StringReader( queryResult );
+ InputSource inputSource = new InputSource( reader );
+ root = parser.parse(inputSource).getDocumentElement();
+
+ NodeList children = root.getChildNodes();
+ for (int i=0; i< children.getLength(); i++) {
+ Node aliasNode = children.item(i);
+ if (aliasNode.getNodeName().equals("config")){
+ NamedNodeMap meaning = aliasNode.getAttributes();
+ String outputpath = meaning.getNamedItem("outputpath").getNodeValue();
+ String fullName = meaning.getNamedItem("meaning").getNodeValue();
+ //System.out.println("ALIAS QUERY ==> " + dottedName + " <==> " + alias);
+ sbsAliasMap.put(fullName, outputpath);
+ }
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ Logging.log(SDKCorePlugin.getDefault(), Logging.newStatus(SDKCorePlugin.getDefault(), e));
+ }
+
+
+ return sbsAliasMap;
+ }
+
+ private static List<String> parseQueryProductsResults(String queryResult) {
+ List<String> productList = new ArrayList<String>();
+
+ try {
+ Element root = null;
+ DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ parser.setErrorHandler(new DefaultHandler());
+
+ StringReader reader = new StringReader( queryResult );
+ InputSource inputSource = new InputSource( reader );
+ root = parser.parse(inputSource).getDocumentElement();
+
+ NodeList children = root.getChildNodes();
+ for (int i=0; i< children.getLength(); i++) {
+ Node aliasNode = children.item(i);
+ if (aliasNode.getNodeName().equals("product")){
+ NamedNodeMap productAttribs = aliasNode.getAttributes();
+ String name = productAttribs.getNamedItem("name").getNodeValue();
+ productList.add(name);
+ }
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ Logging.log(SDKCorePlugin.getDefault(), Logging.newStatus(SDKCorePlugin.getDefault(), e));
+ }
+
+ return productList;
+ }
+
+ private static boolean checkForMinimumRaptorVersion() throws SBSv2MinimumVersionException{
+ ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
+ Version sbsVers = sdkMgr.getSBSv2Version(false);
+ if (sbsVers.compareTo(sdkMgr.getMinimumSupportedSBSv2Version()) >= 0)
+ return true;
+ else {
+ String message = "Raptor/SBSv2 minimum version supported in Carbide.c++ is " + sdkMgr.getMinimumSupportedSBSv2Version() + ". Your sbs version is " + sbsVers + ". Please update your sbs installation and 'Rescan' from the Build Configuration Filtering preference page .";
+ throw new SBSv2MinimumVersionException(message);
+ }
+ }
+
+ public static HashMap<String, String> getCompleteAliasList() throws SBSv2MinimumVersionException {
+ HashMap<String, String> resultMap = new HashMap<String, String>();
+
+ // iterate all SDKs and build the map up
+ for (ISymbianSDK sdk : SDKCorePlugin.getSDKManager().getSDKList()) {
+ if (sdk.isEnabled() && isEpocRootValid(sdk)) {
+ HashMap<String, String> aliasMap = getAliasesForSDK(sdk);
+ for (String alias : aliasMap.keySet()) {
+ if (alias.equals(BAD_EPOCROOT)) {
+ continue;
+ }
+ if (resultMap.get(alias) == null) {
+ resultMap.put(alias, aliasMap.get(alias));
+ }
+ }
+ }
+ }
+
+ return resultMap;
+ }
+
+ public static List<String> getCompleteProductVariantList() throws SBSv2MinimumVersionException {
+ List<String> resultList = new ArrayList<String>();
+
+ // iterate all SDKs and build the map up
+ for (ISymbianSDK sdk : SDKCorePlugin.getSDKManager().getSDKList()) {
+ if (sdk.isEnabled() && isEpocRootValid(sdk)) {
+ List<String> productList = getProductVariantsForSDK(sdk);
+ for (String variant : productList) {
+ if (variant.equals(BAD_EPOCROOT)) {
+ continue;
+ }
+ if (!resultList.contains(variant)) {
+ resultList.add(variant);
+ }
+ }
+ }
+ }
+
+ return resultList;
+ }
+
+ public static void removeAllCachedQueries() {
+ removeCachedAliases();
+ removeCachedProducts();
+ removeCachedConfigurations();
+ }
+
+ public static void removeCachedAliases() {
+ SDKCacheUtils.getCache().removeCache(ALIAS_CACHE_KEY, true);
+ }
+
+ public static void removeCachedProducts() {
+ SDKCacheUtils.getCache().removeCache(PRODUCT_CACHE_KEY, true);
+ }
+
+ public static void removeCachedConfigurations() {
+ SDKCacheUtils.getCache().removeCache(CONFIG_CACHE_KEY, true);
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/sbsv2/SBSv2SDKKey.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,95 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Test the BldInfViewPathHelper class.
+*
+*/
+
+package com.nokia.carbide.cpp.internal.api.sdk.sbsv2;
+
+import java.io.Serializable;
+
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+
+public class SBSv2SDKKey implements Serializable {
+
+ private static final long serialVersionUID = -5672527971643437442L;
+
+ private String uniqueId;
+ private String epocRoot;
+
+ public SBSv2SDKKey() {
+ uniqueId = "";
+ epocRoot = "";
+ }
+
+ public SBSv2SDKKey(ISymbianSDK sdk) {
+ uniqueId = sdk.getUniqueId();
+ epocRoot = sdk.getEPOCROOT();
+ }
+
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ SBSv2SDKKey other = (SBSv2SDKKey) obj;
+ if (epocRoot == null) {
+ if (other.epocRoot != null)
+ return false;
+ } else if (!epocRoot.equals(other.epocRoot))
+ return false;
+ if (uniqueId == null) {
+ if (other.uniqueId != null)
+ return false;
+ } else if (!uniqueId.equals(other.uniqueId))
+ return false;
+ return true;
+ }
+
+ public String getUniqueId() {
+ return uniqueId;
+ }
+
+ public String getEpocRoot() {
+ return epocRoot;
+ }
+
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result
+ + ((epocRoot == null) ? 0 : epocRoot.hashCode());
+ result = prime * result
+ + ((uniqueId == null) ? 0 : uniqueId.hashCode());
+ return result;
+ }
+
+ public void setUniqueId(String id) {
+ uniqueId = id;
+ }
+
+ public void setEpocRoot(String root) {
+ epocRoot = root;
+ }
+
+ @Override
+ public String toString() {
+ return "SBSv2SDKKey [uniqueId=" + uniqueId + ", epocRoot=" + epocRoot
+ + "]";
+ }
+
+}
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/AbstractSDKManager.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/AbstractSDKManager.java Wed Aug 25 12:42:09 2010 -0500
@@ -13,26 +13,15 @@
package com.nokia.carbide.cpp.internal.sdk.core.model;
import java.io.BufferedReader;
-import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
-import java.net.MalformedURLException;
-import java.net.URL;
+import java.io.Serializable;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.Result;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
+import java.util.Map;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
@@ -41,52 +30,46 @@
import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
-import org.eclipse.osgi.service.datalocation.Location;
+import org.eclipse.core.runtime.jobs.IJobChangeEvent;
+import org.eclipse.core.runtime.jobs.IJobChangeListener;
+import org.eclipse.core.runtime.jobs.Job;
import org.osgi.framework.Version;
-import org.w3c.dom.Document;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.traversal.NodeIterator;
-import org.xml.sax.SAXException;
import com.nokia.carbide.cpp.internal.api.sdk.BuildPlat;
import com.nokia.carbide.cpp.internal.api.sdk.ICarbideDevicesXMLChangeListener;
import com.nokia.carbide.cpp.internal.api.sdk.ISDKManagerInternal;
import com.nokia.carbide.cpp.internal.api.sdk.ISDKManagerLoadedHook;
import com.nokia.carbide.cpp.internal.api.sdk.SBSv2Utils;
+import com.nokia.carbide.cpp.internal.api.sdk.SDKCacheUtils;
import com.nokia.carbide.cpp.internal.api.sdk.SDKManagerInternalAPI;
import com.nokia.carbide.cpp.internal.api.sdk.SymbianBuildContextDataCache;
import com.nokia.carbide.cpp.internal.api.sdk.SymbianMacroStore;
+import com.nokia.carbide.cpp.internal.api.sdk.sbsv2.SBSv2QueryUtils;
import com.nokia.carbide.cpp.sdk.core.ICarbideInstalledSDKChangeListener;
+import com.nokia.carbide.cpp.sdk.core.ICarbideInstalledSDKChangeListener.SDKChangeEventType;
import com.nokia.carbide.cpp.sdk.core.IRVCTToolChainInfo;
import com.nokia.carbide.cpp.sdk.core.ISDKManager;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDKFeatures;
import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
-import com.nokia.carbide.cpp.sdk.core.ICarbideInstalledSDKChangeListener.SDKChangeEventType;
-import com.nokia.cpp.internal.api.utils.core.FileUtils;
+import com.nokia.carbide.cpp.sdk.core.SymbianSDKFactory;
import com.nokia.cpp.internal.api.utils.core.ListenerList;
import com.nokia.cpp.internal.api.utils.core.Logging;
import com.nokia.cpp.internal.api.utils.core.PathUtils;
import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils;
-import com.sun.org.apache.xpath.internal.XPathAPI;
public abstract class AbstractSDKManager implements ISDKManager, ISDKManagerInternal {
protected static List<ISymbianSDK> sdkList = new ArrayList<ISymbianSDK>();
protected HashMap<String,ISymbianSDK> missingSdkMap = new HashMap<String,ISymbianSDK>();
+ protected Job scanJob;
- protected static final String CARBIDE_SDK_CACHE_FILE_NAME = "carbideSDKCache.xml";
- protected static final String SDK_CACHE_ID_ATTRIB = "id";
- protected static final String SDK_CACHE_ENABLED_ATTRIB = "isEnabled";
- protected static final String SDK_CACHE_OS_VERSION_ATTRIB = "osVersion";
- protected static final String SDK_CACHE_OS_BRANCH_ATTRIB = "osBranch";
- protected static final String SDK_CACHE_SDK_VERSION_ATTRIB = "sdkVersion";
- protected static final String SDK_SCANNED_FOR_PLUGINS = "sdkScanned";
-
- protected static final String SDK_CACHE_EPOCROOT_ATTRIB = "epocroot";
+ public static final String SDK_MANAGER_CACHE_KEY = "sdk_manager_cache";
protected static final String EMPTY_STRING = "";
protected static boolean enableBSFScanner;
@@ -104,7 +87,7 @@
/**
* Minimum SBSv2 version supported with Carbide
*/
- public static final Version MINIMUM_RAPTOR_VERSION = new Version(2, 8, 6);
+ public static final Version MINIMUM_RAPTOR_VERSION = new Version(2, 15, 0);
static boolean hasScannedSDKs = false; // make sure we only scan SDKs when needed
@@ -122,9 +105,29 @@
*/
protected static ListenerList<ICarbideDevicesXMLChangeListener> devicesXMLListeners = new ListenerList<ICarbideDevicesXMLChangeListener>();
+ IJobChangeListener scanJobListener = new IJobChangeListener() {
+ public void sleeping(IJobChangeEvent event) {}
+ public void scheduled(IJobChangeEvent event) {}
+ public void running(IJobChangeEvent event) {}
+ public void awake(IJobChangeEvent event) {}
+ public void aboutToRun(IJobChangeEvent event) {}
+ public void done(IJobChangeEvent event) {
+ fireInstalledSdkChanged(SDKChangeEventType.eSDKScanned);
+ }
+ };
+
+
public AbstractSDKManager() {
macroStore = SymbianMacroStore.getInstance();
+ scanJob = new Job ("Scan for installed SDKs") {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ return handleScan(monitor);
+ }
+ };
+
+ addScanJobListner(scanJobListener);
}
public SymbianMacroStore getSymbianMacroStore(){
@@ -132,6 +135,14 @@
}
public void scanSDKs() {
+ SBSv2QueryUtils.removeAllCachedQueries();
+ // do the real sdk scanning in a job.
+ if (scanJob.getState() == Job.NONE) {
+ scanJob.schedule();
+ }
+ }
+
+ private IStatus handleScan(IProgressMonitor monitor) {
synchronized (sdkList)
{
ArrayList<ISymbianSDK> oldSDKList = new ArrayList<ISymbianSDK>(sdkList);
@@ -142,14 +153,13 @@
sdkList.clear();
}
- if (!doScanSDKs())
- return;
-
+ if (!doScanSDKs(monitor))
+ return Status.OK_STATUS;;
+
// now these SDK's are newly added, remove from internal list
for (ISymbianSDK sdk : sdkList) {
if (SDKManagerInternalAPI.getMissingSdk(sdk.getUniqueId()) != null) {
- SDKManagerInternalAPI.removeMissingSdk(sdk
- .getUniqueId());
+ SDKManagerInternalAPI.removeMissingSdk(sdk);
}
}
@@ -164,29 +174,27 @@
}
}
if (found == false) {
- SDKManagerInternalAPI.addMissingSdk(oldSdk
- .getUniqueId());
+ SDKManagerInternalAPI.addMissingSdk(oldSdk);
// flush cache
SymbianBuildContextDataCache.refreshForSDKs(new ISymbianSDK[] { oldSdk });
}
}
-
-
}
// make sure we don't rescan over and over again
hasScannedSDKs = true;
- // tell others about it
- fireInstalledSdkChanged(SDKChangeEventType.eSDKScanned);
- scanCarbideSDKCache();
+ updateCarbideSDKCache();
// Notify any plugins that want to know if the SDKManager has scanned plugins.
if (!sdkHookExtenstionsNotified) {
notifySDKManagerLoaded();
sdkHookExtenstionsNotified = true;
}
-
+ if (monitor.isCanceled()) {
+ return Status.CANCEL_STATUS;
+ }
+ return Status.OK_STATUS;
}
/**
@@ -195,12 +203,24 @@
* when SDKs are newly missing
* @return true if scan succeeded
*/
- abstract protected boolean doScanSDKs();
+ abstract protected boolean doScanSDKs(IProgressMonitor monitor);
+ public void addScanJobListner(IJobChangeListener listener) {
+ if (scanJob != null && listener != null) {
+ scanJob.addJobChangeListener(listener);
+ }
+ }
+
+ public void removeScanJobLisner(IJobChangeListener listener) {
+ if (scanJob != null && listener != null) {
+ scanJob.removeJobChangeListener(listener);
+ }
+ }
protected void ensureScannedSDKs() {
if (!hasScannedSDKs) {
- scanSDKs();
+ handleScan(new NullProgressMonitor());
+ fireInstalledSdkChanged(SDKChangeEventType.eSDKScanned);
}
}
@@ -237,9 +257,9 @@
synchronized(sdkList)
{
try {
+ sdkList.add(sdk);
updateSDK(sdk);
- sdkList.add(sdk);
- SDKManagerInternalAPI.removeMissingSdk(sdk.getUniqueId());
+ SDKManagerInternalAPI.removeMissingSdk(sdk);
// tell others about it
fireInstalledSdkChanged(SDKChangeEventType.eSDKAdded);
}
@@ -259,12 +279,15 @@
if (currSDK.getUniqueId().equals(sdkId)){
sdkList.remove(currSDK);
- SDKManagerInternalAPI.addMissingSdk(currSDK.getUniqueId());
+ SDKManagerInternalAPI.addMissingSdk(currSDK);
// tell others about it
fireInstalledSdkChanged(SDKChangeEventType.eSDKRemoved);
-
- doRemoveSDK(sdkId);
+
+ // only remove sdk from devices.xml if the sdk is defined in it
+ if (((SymbianSDK)currSDK).getSupportedFeatures().contains(ISymbianSDKFeatures.IS_FROM_DEVICES_XML)) {
+ doRemoveSDK(sdkId);
+ }
break;
}
@@ -282,215 +305,45 @@
abstract protected boolean doRemoveSDK(String sdkId);
protected void scanCarbideSDKCache(){
-
- DocumentBuilder docBuilder = null;
- try {
- docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
- } catch (ParserConfigurationException e) {
- ResourcesPlugin.getPlugin().getLog().log(new Status(IStatus.ERROR, SDKCorePlugin.PLUGIN_ID, IStatus.ERROR, e.getMessage(), e));
- throw new RuntimeException(e);
- }
-
- // NOTE: If debugging runtime workbench and you clear your configuraiton at each launch
- // the data in the configuration location will be lost
- Location configurationLocation = Platform.getConfigurationLocation();
- try {
- URL url = new URL(configurationLocation.getURL(), SDKCorePlugin.PLUGIN_ID);
- File configFolder = new File(url.getFile());
- if (!configFolder.exists()) {
- configFolder.mkdirs();
+ List<String> idList = getSDKCacheIdList();
+ for (Iterator<String> itr = idList.iterator(); itr.hasNext();) {
+ String id = itr.next();
+ SDKManagerCacheEntry entry = getSDKCacheEntry(id);
+ ISymbianSDK sdk = getSDK(id, false);
+ if (sdk == null) {
+ Version osVersion = new Version(entry.getOsVersion());
+ if (osVersion.getMajor() == 0) {
+ osVersion = new Version("9.5");
+ }
+ sdk = SymbianSDKFactory.createInstance(id,
+ entry.getEpocRoot(),
+ osVersion);
+ ((SymbianSDK)sdk).setEnabled(entry.isEnabled());
+ synchronized (sdkList) {
+ sdkList.add(sdk);
+ }
+ } else {
+ ((SymbianSDK)sdk).setEnabled(entry.isEnabled());
}
-
- File carbideSDKCacheFile = new File(configFolder, CARBIDE_SDK_CACHE_FILE_NAME);
- if (!carbideSDKCacheFile.exists()){
- try {
- FileUtils.writeFileContents(carbideSDKCacheFile, EMPTY_STRING.toCharArray(), null);
- } catch (CoreException e){
- e.printStackTrace();
- }
- }else if (carbideSDKCacheFile.length() > 0) {
- Document lastKnownDoc = docBuilder.parse(carbideSDKCacheFile);
-
- NodeIterator ni = XPathAPI.selectNodeIterator(lastKnownDoc, "/sdks/sdk");
- for (Node n = ni.nextNode(); n != null; n = ni.nextNode()) {
-
- // get the unique ID
- NamedNodeMap attribs = n.getAttributes();
- String id = attribs.getNamedItem(SDK_CACHE_ID_ATTRIB).getNodeValue();
-
- // get whether or not the SDK is enabled
- String sdkEnabled = "true";
- Node sdkEnabledItem = attribs.getNamedItem(SDK_CACHE_ENABLED_ATTRIB);
- if (sdkEnabledItem != null)
- sdkEnabled = sdkEnabledItem.getNodeValue();
-
- // get the os version
- String osVersion = "";
- Node osVersionItem = attribs.getNamedItem(SDK_CACHE_OS_VERSION_ATTRIB);
- if (osVersionItem != null)
- osVersion = osVersionItem.getNodeValue();
-
- // get the os branch
- String osBranch = "";
- Node osBranchItem = attribs.getNamedItem(SDK_CACHE_OS_BRANCH_ATTRIB);
- if (osBranchItem != null)
- osBranch = osBranchItem.getNodeValue();
-
- // get the sdk version
- String sdkVersion = "";
- Node sdkVersionItem = attribs.getNamedItem(SDK_CACHE_SDK_VERSION_ATTRIB);
- if (sdkVersionItem != null)
- sdkVersion = sdkVersionItem.getNodeValue();
-
- // get the custom EPOCROOT, if allowed
- String customEpocroot = null;
- if (!isEPOCRootFixed()) {
- Node epocrootItem = attribs.getNamedItem(SDK_CACHE_EPOCROOT_ATTRIB);
- if (epocrootItem != null)
- customEpocroot = epocrootItem.getNodeValue();
- }
-
- // get whether or not this SDK has been scanned
- String wasScanned = "false";
- Node sdkScannedItem = attribs.getNamedItem(SDK_SCANNED_FOR_PLUGINS);
- if (sdkScannedItem != null)
- wasScanned = sdkScannedItem.getNodeValue();
-
- ISymbianSDK sdk = getSDK(id, false);
- if (sdk != null){
-
- if (wasScanned.equalsIgnoreCase("true")){
- sdk.setPreviouslyScanned(true);
- } else {
- sdk.setPreviouslyScanned(false);
- }
-
- if (sdkEnabled.equalsIgnoreCase("true")){
- sdk.setEnabled(true);
- } else {
- sdk.setEnabled(false);
- }
-
- if (!osVersion.equals("")){
- if (Version.parseVersion(osVersion).getMajor() != 0){
- sdk.setOSVersion(Version.parseVersion(osVersion));
- }
- }
-
- if (!osBranch.equals("")){
- sdk.setOSSDKBranch(osBranch);
- }
-
- if (!sdkVersion.equals("")){
- if (Version.parseVersion(sdkVersion).getMajor() != 0){
- sdk.setSDKVersion(Version.parseVersion(sdkVersion));
- }
- }
-
- if (customEpocroot != null) {
- sdk.setEPOCROOT(customEpocroot);
- }
-
- }
-
- } // for
- }
- } catch (TransformerException e) {
- } catch (SAXException e) {
- } catch (IOException e) {
- }
+ }
}
public void updateCarbideSDKCache() {
if (!Platform.isRunning())
return;
-
- DocumentBuilder docBuilder = null;
- try {
- docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
- } catch (ParserConfigurationException e) {
- ResourcesPlugin.getPlugin().getLog().log(new Status(IStatus.ERROR, SDKCorePlugin.PLUGIN_ID, IStatus.ERROR, e.getMessage(), e));
- return;
- }
-
- Location configurationLocation = Platform.getConfigurationLocation();
- try {
-
- URL url = new URL(configurationLocation.getURL(), SDKCorePlugin.PLUGIN_ID);
- File configFolder = new File(url.getFile());
- if (!configFolder.exists()) {
- configFolder.mkdirs();
+
+ clearSDKCache();
+ synchronized(sdkList)
+ {
+ for (ISymbianSDK currSDK: sdkList) {
+ SDKManagerCacheEntry entry = new SDKManagerCacheEntry();
+ entry.setId(currSDK.getUniqueId());
+ entry.setEpocRoot(currSDK.getEPOCROOT());
+ entry.setOsVersion(currSDK.getOSVersion().toString());
+ entry.setEnabled(currSDK.isEnabled());
+ setSDKCacheEntry(entry);
}
-
- File carbideSDKCacheFile = new File(configFolder, CARBIDE_SDK_CACHE_FILE_NAME);
- if (!carbideSDKCacheFile.exists()){
- try {
- FileUtils.writeFileContents(carbideSDKCacheFile, EMPTY_STRING.toCharArray(), null);
- } catch (CoreException e){
- e.printStackTrace();
- }
- }
-
- Document d = docBuilder.newDocument();
- Node sdks = d.appendChild(d.createElement("sdks"));
-
- synchronized(sdkList)
- {
- for (ISymbianSDK currSDK: sdkList) {
- Node sdk = sdks.appendChild(d.createElement("sdk"));
- NamedNodeMap attribs = sdk.getAttributes();
- Node idNode = d.createAttribute(SDK_CACHE_ID_ATTRIB);
- idNode.setNodeValue(currSDK.getUniqueId());
- attribs.setNamedItem(idNode);
-
- // Hide the build config from view in the build config list?
- Node enabledNode = d.createAttribute(SDK_CACHE_ENABLED_ATTRIB);
- if (true == currSDK.isEnabled()) {
- enabledNode.setNodeValue("true");
- } else {
- enabledNode.setNodeValue("false");
- }
- attribs.setNamedItem(enabledNode);
-
- Node wasScannedNode = d.createAttribute(SDK_SCANNED_FOR_PLUGINS);
- if (true == currSDK.isPreviouslyScanned()) {
- wasScannedNode.setNodeValue("true");
- } else {
- wasScannedNode.setNodeValue("false");
- }
- attribs.setNamedItem(wasScannedNode);
-
- Node osVerNode = d.createAttribute(SDK_CACHE_OS_VERSION_ATTRIB);
- osVerNode.setNodeValue(currSDK.getOSVersion().toString());
- attribs.setNamedItem(osVerNode);
-
- Node osBranchNode = d.createAttribute(SDK_CACHE_OS_BRANCH_ATTRIB);
- osBranchNode.setNodeValue(currSDK.getSDKOSBranch());
- attribs.setNamedItem(osBranchNode);
-
- Node sdkVerNode = d.createAttribute(SDK_CACHE_SDK_VERSION_ATTRIB);
- sdkVerNode.setNodeValue(currSDK.getSDKVersion().toString());
- attribs.setNamedItem(sdkVerNode);
-
- if (!isEPOCRootFixed()) {
- Node sdkEpocRootNode = d.createAttribute(SDK_CACHE_EPOCROOT_ATTRIB);
- sdkEpocRootNode.setNodeValue(currSDK.getEPOCROOT());
- attribs.setNamedItem(sdkEpocRootNode);
- }
- }
- }
- DOMSource domSource = new DOMSource(d);
- TransformerFactory transFactory = TransformerFactory.newInstance();
- Result fileResult = new StreamResult(carbideSDKCacheFile);
- try {
- transFactory.newTransformer().transform(domSource, fileResult);
- } catch (TransformerConfigurationException e) {
- ResourcesPlugin.getPlugin().getLog().log(new Status(IStatus.ERROR, SDKCorePlugin.PLUGIN_ID, IStatus.ERROR, e.getMessage(), e));
- } catch (TransformerException e) {
- ResourcesPlugin.getPlugin().getLog().log(new Status(IStatus.ERROR, SDKCorePlugin.PLUGIN_ID, IStatus.ERROR, e.getMessage(), e));
- }
- } catch (MalformedURLException e){
-
+ flushSDKCache();
}
}
@@ -500,10 +353,18 @@
*/
abstract protected boolean isEPOCRootFixed();
+ /**
+ * Get whether or not the UI has enabled BSF scanning.
+ * @return true if BSF scanning is enabled.
+ */
public boolean getBSFScannerEnabled(){
return enableBSFScanner;
}
+ /**
+ * Set whether or not build platforms should be added for SDKs that contain .bsf extensions.
+ * @param enabled - When true, add BSF platforms.
+ */
public void enableBSFScanner(boolean enabled){
enableBSFScanner = enabled;
}
@@ -516,6 +377,10 @@
return platList;
}
+ /**
+ * Returns toolchain info for all detected RVCT tools.
+ * @return Array of toolchain information objects.
+ */
public synchronized IRVCTToolChainInfo[] getInstalledRVCTTools() {
// the path wn't change inside one invocation so cache the results
if (rvctInfoList == null) {
@@ -548,9 +413,9 @@
// RVCT waits for like 4 minutes trying to find a license when the computer is
// not connected to the network. in such cases, the call to br.readline doesn't
// return for 4 minutes which is unacceptable here. Instead we'll poll at 1/2 second
- // intervals for 40 seconds and see if we get a response. On the first response we break out
+ // intervals for 5 seconds and see if we get a response. On the first response we break out
// of the loop and read the output. So in most normal circumstances it will take 1/2 to 1 seconds.
- int maxTries = 80;
+ int maxTries = 10;
int numTries = 0;
while (numTries < maxTries) {
try {
@@ -590,6 +455,10 @@
return rvctToolList;
}
+ public void addMissingSdk(ISymbianSDK sdk) {
+ missingSdkMap.put(sdk.getUniqueId(), sdk);
+ }
+
public ISymbianSDK addMissingSdk(String uid) {
ISymbianSDK sdk = getMissingSdk(uid);
if (sdk == null) {
@@ -599,6 +468,10 @@
return sdk;
}
+ public void removeMissingSdk(ISymbianSDK sdk) {
+ missingSdkMap.remove(sdk.getUniqueId());
+ }
+
public void removeMissingSdk(String uid) {
missingSdkMap.remove(uid);
}
@@ -665,7 +538,7 @@
MessageFormat.format(
"Could not find or launch Raptor script ''{0}''; SBSv2 support will not be available",
sbsPath), e));
- }
+ }
if (p != null) {
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String overallOutput = "";
@@ -727,6 +600,11 @@
return sbsV2Version;
}
+ /**
+ * Retrieve the minimum supported version of SBSv2 for Carbide.c++
+ * @return Version
+ * @since 2.3
+ */
public Version getMinimumSupportedSBSv2Version() {
return MINIMUM_RAPTOR_VERSION;
}
@@ -766,6 +644,54 @@
return;
}
-
-
+
+ protected void clearSDKCache() {
+ SDKCacheUtils.getCache().removeCache(SDK_MANAGER_CACHE_KEY, false);
+ }
+
+ protected void flushSDKCache() {
+ try {
+ SDKCacheUtils.getCache().flushCache(SDK_MANAGER_CACHE_KEY);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ protected List<String> getSDKCacheIdList() {
+ Map<String, SDKManagerCacheEntry> cacheMap = SDKCacheUtils.getCache().getCachedData(SDK_MANAGER_CACHE_KEY, Map.class, 0);
+ List<String> idList = new ArrayList<String>();
+
+ if (cacheMap != null) {
+ idList.addAll(cacheMap.keySet());
+ }
+
+ return idList;
+ }
+
+ @SuppressWarnings("unchecked")
+ protected SDKManagerCacheEntry getSDKCacheEntry(String id) {
+ SDKManagerCacheEntry entry = null;
+ Map<String, SDKManagerCacheEntry> cacheMap = SDKCacheUtils.getCache().getCachedData(SDK_MANAGER_CACHE_KEY, Map.class, 0);
+
+ if (cacheMap != null) {
+ entry = cacheMap.get(id);
+ }
+
+ return entry;
+ }
+
+ @SuppressWarnings("unchecked")
+ protected void setSDKCacheEntry(SDKManagerCacheEntry entry) {
+ String id = entry.getId();
+ Map<String, SDKManagerCacheEntry> cacheMap = SDKCacheUtils.getCache().getCachedData(SDK_MANAGER_CACHE_KEY, Map.class, 0);
+
+ if (cacheMap == null) {
+ cacheMap = new HashMap<String, SDKManagerCacheEntry>();
+ }
+
+ cacheMap.put(id, entry);
+ SDKCacheUtils.getCache().putCachedData(SDK_MANAGER_CACHE_KEY, (Serializable)cacheMap, 0);
+ }
+
}
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/BSFCatalogFactory.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/BSFCatalogFactory.java Wed Aug 25 12:42:09 2010 -0500
@@ -12,12 +12,12 @@
*/
package com.nokia.carbide.cpp.internal.sdk.core.model;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+
import com.nokia.carbide.cpp.sdk.core.IBSFCatalog;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-
/**
* This factory creates BSF catalogs.
*
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/DynamicFeatureInstaller.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/DynamicFeatureInstaller.java Wed Aug 25 12:42:09 2010 -0500
@@ -137,7 +137,6 @@
for (IConfiguredSite site : configuredSites) {
installedFeatureRefs.addAll(Arrays.asList(site.getConfiguredFeatures()));
if (localSite == null && site.isUpdatable()) {
- // TODO: If there are multiple sites should the user be presented a list to choose from?
localSite = site;
}
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SBSv1BuildInfo.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,330 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+*/
+
+package com.nokia.carbide.cpp.internal.sdk.core.model;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import com.nokia.carbide.cpp.internal.api.sdk.BuildContextSBSv1;
+import com.nokia.carbide.cpp.internal.api.sdk.BuildPlat;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildInfo;
+import com.nokia.carbide.cpp.internal.api.sdk.SBSv2Utils;
+import com.nokia.carbide.cpp.sdk.core.IBSFCatalog;
+import com.nokia.carbide.cpp.sdk.core.IBSFPlatform;
+import com.nokia.carbide.cpp.sdk.core.ISBVCatalog;
+import com.nokia.carbide.cpp.sdk.core.ISBVPlatform;
+import com.nokia.carbide.cpp.sdk.core.ISDKManager;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDKFeatures;
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
+
+/**
+ * SBSv1 specific build information.
+ *
+ */
+public class SBSv1BuildInfo implements ISBSv1BuildInfo {
+
+ private ISymbianSDK sdk;
+ private IBSFCatalog bsfCatalog;
+ private ISBVCatalog sbvCatalog;
+ private boolean wasScanned = false;
+ private List<ISymbianBuildContext> binaryVariantContextList = new ArrayList<ISymbianBuildContext>(0);
+ private List<ISymbianBuildContext> bsfContextList = new ArrayList<ISymbianBuildContext>(0);
+ private Map<String, List<String>> cachedPlatformMacros = new HashMap<String, List<String>>();
+ private List<String> supportedTargetTypesList = new ArrayList<String>();
+
+ private static final String TARGETTYPE_PM_FILE = "epoc32/tools/trgtype.pm"; //$NON-NLS-1$
+
+ public SBSv1BuildInfo(ISymbianSDK sdk) {
+ this.sdk = sdk;
+ }
+
+ public void clearPlatformMacros() {
+ cachedPlatformMacros.clear();
+ }
+
+ public List<String> getAvailablePlatforms() {
+ ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
+ return ((SDKManager)sdkMgr).getSymbianMacroStore().getSupportedPlatforms(((SymbianSDK)sdk).getOSVersion(), "", getBSFCatalog());
+ }
+
+ @SuppressWarnings("rawtypes")
+ public List<ISymbianBuildContext> getAllBuildConfigurations() {
+ Set sdkFeatures = sdk.getSupportedFeatures();
+ List<ISymbianBuildContext> buildTargets = new ArrayList<ISymbianBuildContext>();
+
+ // note that this gets variant platforms but not regular BSF's
+ List <String>buildPlats = getAvailablePlatforms();
+
+ if (buildPlats.size() == 0){
+ return Collections.emptyList();
+ }
+
+ if (sdkFeatures.contains(ISymbianSDKFeatures.IS_WINSCW_UREL_SUPPORTED)){
+ buildTargets.add(new BuildContextSBSv1(sdk, ISBSv1BuildContext.EMULATOR_PLATFORM, ISymbianBuildContext.RELEASE_TARGET));
+ }
+
+ if (sdkFeatures.contains(ISymbianSDKFeatures.IS_WINSCW_UDEB_SUPPORTED)){
+ buildTargets.add(new BuildContextSBSv1(sdk, ISBSv1BuildContext.EMULATOR_PLATFORM, ISymbianBuildContext.DEBUG_TARGET));
+ }
+
+ for (String currPlat : buildPlats){
+ if (currPlat.equals(ISBSv1BuildContext.EMULATOR_PLATFORM) ) {
+ // emulation targets already determined (some SDKs don't get WISNCW UREL
+ continue;
+ }
+ buildTargets.add(new BuildContextSBSv1(sdk, currPlat, ISymbianBuildContext.DEBUG_TARGET));
+
+ // everything gets release except for WINSCW
+ buildTargets.add(new BuildContextSBSv1(sdk, currPlat, ISymbianBuildContext.RELEASE_TARGET));
+ }
+
+ ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
+ if (((SDKManager)sdkMgr).getBSFScannerEnabled()){
+ buildTargets.addAll(getBSFPlatformContexts());
+ buildTargets.addAll(getBinaryVariationPlatformContexts()); // Symbian Binary Variation (.var)
+ }
+
+ return buildTargets;
+ }
+
+ public IBSFCatalog getBSFCatalog() {
+ synchronized (sdk) {
+ if (bsfCatalog == null) {
+ bsfCatalog = BSFCatalogFactory.createCatalog(sdk);
+ }
+ }
+ return bsfCatalog;
+ }
+
+ public List<ISymbianBuildContext> getFilteredBuildConfigurations() {
+ // This is probably a bug, but the filtering only uses SBSv1 preferences if SBSv1 is enabled...
+ List<ISymbianBuildContext> filteredContexts;
+ if (SBSv2Utils.enableSBSv1Support()) {
+ filteredContexts = getSBSv1FilteredBuildConfigurations();
+ } else {
+ // be optimistic in this case... SBSv3? ;)
+ filteredContexts = getAllBuildConfigurations();
+ }
+ return filteredContexts;
+ }
+
+ public List<String> getPlatformMacros(String platform) {
+ List<String> platformMacros = cachedPlatformMacros.get(platform.toUpperCase());
+ if (platformMacros == null) {
+ synchronized (cachedPlatformMacros) {
+ IBSFCatalog bsfCatalog = getBSFCatalog();
+ ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
+ platformMacros = ((SDKManager)sdkMgr).getSymbianMacroStore().getPlatformMacros(sdk.getOSVersion(), "", bsfCatalog, platform);
+ cachedPlatformMacros.put(platform.toUpperCase(), platformMacros);
+ }
+ }
+ return platformMacros;
+ }
+
+
+
+ public ISBVCatalog getSBVCatalog() {
+ synchronized (sdk) {
+ if (sbvCatalog == null) {
+ sbvCatalog = SBVCatalogFactory.createCatalog(sdk);
+ }
+ }
+ return sbvCatalog;
+ }
+
+ public String getTargetTypeMacro(String targettype) {
+ // this is based on \epoc32\tools\trgtype.pm which changes from
+ // OS version to OS version, but largely remains constant with
+ // regards to the basic type.
+
+ // if it's not one of these then it's a DLL
+ if (targettype.compareToIgnoreCase("EPOCEXE") == 0) {
+ return "__EXEDLL__";
+ } else if (targettype.compareToIgnoreCase("EXEDLL") == 0) {
+ return "__EXEDLL__";
+ } else if (targettype.compareToIgnoreCase("EXE") == 0) {
+ return "__EXE__";
+ } else if (targettype.compareToIgnoreCase("EXEXP") == 0) {
+ return "__EXE__";
+ } else if (targettype.compareToIgnoreCase("IMPLIB") == 0) {
+ return "__IMPLIB__";
+ } else if (targettype.compareToIgnoreCase("KLIB") == 0) {
+ return "__LIB__";
+ } else if (targettype.compareToIgnoreCase("LIB") == 0) {
+ return "__LIB__";
+ } else {
+ return "__DLL__";
+ }
+
+ }
+
+ public List<String> getVendorSDKMacros() {
+ return new ArrayList<String>(); // vendor macros no longer apply for Symbian^3 and up
+ }
+
+ public boolean isPreviouslyScanned() {
+ return wasScanned;
+ }
+
+ public void setPreviouslyScanned(boolean wasScanned) {
+ this.wasScanned = wasScanned;
+ }
+
+ protected List<ISymbianBuildContext> getBinaryVariationPlatformContexts() {
+ synchronized (binaryVariantContextList) {
+ if (!binaryVariantContextList.isEmpty()){
+ return binaryVariantContextList;
+ }
+
+ ISBVCatalog catalog = getSBVCatalog();
+ for (ISBVPlatform sbvPlatform : catalog.getPlatforms()) {
+ // Currently only variation of ARMV5 is supported... So just hard code the variated platform
+ // Only add the build platform if it's not virtual.
+ if (!sbvPlatform.isVirtual()){
+ binaryVariantContextList.add(new BuildContextSBSv1(sdk, BuildContextSBSv1.ARMV5_PLATFORM + "." + sbvPlatform.getName(), ISymbianBuildContext.DEBUG_TARGET));
+ binaryVariantContextList.add(new BuildContextSBSv1(sdk, BuildContextSBSv1.ARMV5_PLATFORM + "." + sbvPlatform.getName(), ISymbianBuildContext.RELEASE_TARGET));
+ }
+ }
+ }
+ return binaryVariantContextList;
+ }
+
+ protected List<ISymbianBuildContext> getBSFPlatformContexts() {
+ synchronized (bsfContextList) {
+ if (!bsfContextList.isEmpty()){
+ return bsfContextList;
+ }
+
+ IBSFCatalog catalog = getBSFCatalog();
+ for (IBSFPlatform platform : catalog.getPlatforms()) {
+ // only return non-variant style BSF's. see boog #4533 for details.
+ if (!platform.isVariant()) {
+ bsfContextList.add(new BuildContextSBSv1(sdk, platform.getName().toUpperCase(), ISymbianBuildContext.DEBUG_TARGET));
+ bsfContextList.add(new BuildContextSBSv1(sdk, platform.getName().toUpperCase(), ISymbianBuildContext.RELEASE_TARGET));
+ }
+ }
+ }
+ return bsfContextList;
+ }
+
+ @SuppressWarnings("rawtypes")
+ protected List<ISymbianBuildContext> getSBSv1FilteredBuildConfigurations() {
+ Set sdkFeatures = sdk.getSupportedFeatures();
+ List<ISymbianBuildContext> buildContexts = getAllBuildConfigurations();
+ if (buildContexts.size() == 0){
+ return Collections.emptyList();
+ }
+
+ ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
+ List<BuildPlat> platFilterList = ((SDKManager)sdkMgr).getPlatformList();
+ Iterator<ISymbianBuildContext> li = buildContexts.iterator();
+ while(li.hasNext()){
+ ISymbianBuildContext currContext = li.next();
+ for (BuildPlat currPlat : platFilterList){ // see which ones need to be filtered out.
+
+ if (currPlat.getPlatName().equals(currContext.getPlatformString())){
+ if (!currPlat.isEnabled()){
+ if (sdkFeatures.contains(ISymbianSDKFeatures.IS_EKA2) &&
+ currPlat.getOsIdentifier().equals(BuildPlat.EKA2_IDENTIFIER)){
+ li.remove(); // filtered out in UI, don't show
+ break;
+ }
+ }
+ }
+ }
+ }
+ return buildContexts;
+ }
+
+ public List<String> getBuiltinMacros(ISymbianBuildContext context) {
+ List<String> macros = new ArrayList<String>();
+
+ // add the macros that should always be defined
+ macros.add("__SYMBIAN32__"); //$NON-NLS-1$
+ macros.add("_UNICODE"); //$NON-NLS-1$
+
+ macros.add("__SUPPORT_CPP_EXCEPTIONS__"); //$NON-NLS-1$
+
+ if (context.getTargetString().equals(ISymbianBuildContext.DEBUG_TARGET)) {
+ macros.add("_DEBUG"); //$NON-NLS-1$
+ } else {
+ macros.add("NDEBUG"); //$NON-NLS-1$
+ }
+
+ return macros;
+ }
+
+ /**
+ * ABLD specifc mechanism of parsing perl script to get targettypes. This is imperfect
+ * but is the best way to generalize targettypes. Raptor/SBSv2 API improves on this
+ * by retrieving configuration specific targettypes.
+ */
+ public List<String> getSupportedTargetTypes() {
+
+ synchronized (supportedTargetTypesList) {
+ if (supportedTargetTypesList.size() > 0){
+ return supportedTargetTypesList;
+ }
+
+ File epocRoot = new File(sdk.getEPOCROOT());
+ File targetTypePM = new File(epocRoot, TARGETTYPE_PM_FILE);
+ if (!targetTypePM.exists())
+ return supportedTargetTypesList;
+
+ // greedy match means the filename is in the last group
+ try {
+ char[] cbuf = new char[(int) targetTypePM.length()];
+ Reader reader = new FileReader(targetTypePM);
+ reader.read(cbuf);
+ reader.close();
+ String[] lines = new String(cbuf).split("\r|\r\n|\n");
+ for (int i = 0; i < lines.length; i++) {
+ // skip comments and blank lines
+ String line = SymbianSDK.removeComments(lines[i]);
+ if (line.matches("\\s*#.*") || line.trim().length() == 0)
+ continue;
+
+ // parse current line... the slitting could be done better with more efficent reg exp....
+ line = line.trim();
+ line = line.replaceAll(" ", "");
+ if (line.endsWith("=>{")){
+ String[] lineSplit = line.split("=>");
+ if (lineSplit.length == 2 && Character.isLetter(lineSplit[0].charAt(0))){
+ supportedTargetTypesList.add(lineSplit[0]);
+ }
+ }
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ return supportedTargetTypesList;
+ }
+
+
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SBSv2BuildInfo.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,326 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+*/
+
+package com.nokia.carbide.cpp.internal.sdk.core.model;
+
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.ui.PlatformUI;
+
+import com.nokia.carbide.cpp.internal.api.sdk.BuildContextSBSv2;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildInfo;
+import com.nokia.carbide.cpp.internal.api.sdk.SBSv2Utils;
+import com.nokia.carbide.cpp.internal.api.sdk.sbsv2.SBSv2ConfigQueryData;
+import com.nokia.carbide.cpp.internal.api.sdk.sbsv2.SBSv2MinimumVersionException;
+import com.nokia.carbide.cpp.internal.api.sdk.sbsv2.SBSv2QueryUtils;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDKFeatures;
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
+import com.nokia.cpp.internal.api.utils.core.Logging;
+import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils;
+
+/**
+ * SBSv2 specific build information. Serves as a container for build data container for a Symbian SDK using SBSv2
+ * @since 3.0
+ *
+ */
+public class SBSv2BuildInfo implements ISBSv2BuildInfo {
+
+ private ISymbianSDK sdk;
+ private List<ISymbianBuildContext> sbsv2FilteredContexts = new ArrayList<ISymbianBuildContext>();
+ private boolean wasScanned = false;
+ /** from <metadata> element from sbs --query=config[] */
+ private Map<String, Map<String, String>> cachedMetadataMacros = new HashMap<String, Map<String, String>>();
+ /** from <build> element from sbs --query=config[] */
+ private Map<String, Map<String, String>> cachedBuildMacros = new HashMap<String, Map<String, String>>();
+
+ private Map<String, String> aliasToMeaningMap = new HashMap<String, String>();
+ private List<String> productList = null;
+ private IPath cachedVariantHRHFile = null;
+ private static boolean hasShownDialog;
+
+ public SBSv2BuildInfo(ISymbianSDK sdk) {
+ this.sdk = sdk;
+ }
+
+ public List<ISymbianBuildContext> getAllBuildConfigurations() {
+ // This really only applies to SBSv1. We never return the full list of configs for SBSv2, only the filtered ones
+ return sbsv2FilteredContexts;
+ }
+
+ public void clearDataFromBuildCache(){
+ aliasToMeaningMap.clear();
+ if (productList != null) productList.clear();
+ sbsv2FilteredContexts.clear();
+ cachedBuildMacros.clear();
+ cachedMetadataMacros.clear();
+ cachedVariantHRHFile = null;
+ }
+
+ public List<ISymbianBuildContext> getFilteredBuildConfigurations() {
+
+ if (aliasToMeaningMap.size() == 0){
+ try {
+ aliasToMeaningMap = SBSv2QueryUtils.getAliasesForSDK(sdk);
+ } catch (final SBSv2MinimumVersionException e) {
+ if (hasShownDialog == false){
+
+ PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ MessageDialog.openError(WorkbenchUtils.getSafeShell(), "Minimum sbs version not met.", e.getMessage());
+ }
+ });
+
+ Logging.log( SDKCorePlugin.getDefault(),
+ Logging.newSimpleStatus(0, IStatus.ERROR,
+ MessageFormat.format(e.getMessage(), ""), e));
+
+ hasShownDialog = true;
+ }
+ }
+ }
+
+ if (productList == null){
+ // Not all SDKs will have products, so size of 0 is acceptable
+ productList = new ArrayList<String>();
+ try {
+ productList = SBSv2QueryUtils.getProductVariantsForSDK(sdk);
+ } catch (SBSv2MinimumVersionException e) {
+ // ignore
+ }
+ }
+ List<String> allowedConfigs = SBSv2Utils.getSBSv2FilteredConfigPreferences(); // From global prefs
+ if (SBSv2Utils.enableSBSv2Support()){
+
+ try {
+ initSBSv2BuildContextList(allowedConfigs);
+ } catch (SBSv2MinimumVersionException e) {
+ // igore, would be caught above
+ }
+ }
+
+ return sbsv2FilteredContexts;
+ }
+
+ private void initSBSv2BuildContextList(List<String> allowedConfigs) throws SBSv2MinimumVersionException {
+ List<String> filteredAliasList = new ArrayList<String>();
+
+ for (String alias : aliasToMeaningMap.keySet()){
+ for (String checkedAlias : allowedConfigs){
+ if (checkedAlias.equalsIgnoreCase(alias)){
+ filteredAliasList.add(alias);
+ break;
+ }
+ }
+ }
+
+ if (productList != null && productList.size() > 0){
+ for (String testConfig : allowedConfigs) {
+ if (testConfig.contains(".")){
+ String tokens[] = testConfig.split("\\.");
+ for (String tok : tokens){
+ if (productList.contains(tok)){
+ filteredAliasList.add(testConfig);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ List<String> processedAliasList = new ArrayList<String>();
+ sbsv2FilteredContexts.clear();
+ for (String alias : filteredAliasList) {
+ SBSv2ConfigQueryData configQueryData = SBSv2QueryUtils.getConfigQueryDataForSDK(sdk, alias);
+ if (configQueryData != null && configQueryData.getConfigurationErrorMessage().trim().length() == 0) {
+ ISBSv2BuildContext sbsv2Context = new BuildContextSBSv2(sdk, alias, configQueryData);
+ sbsv2FilteredContexts.add(sbsv2Context);
+ processedAliasList.add(alias);
+ }
+ }
+
+ if (!processedAliasList.isEmpty()) {
+ filteredAliasList.removeAll(processedAliasList);
+ }
+
+ if (!filteredAliasList.isEmpty()) {
+ String configQueryXML = SBSv2QueryUtils.getConfigQueryXMLforSDK(sdk, filteredAliasList);
+
+ for (String alias : filteredAliasList) {
+ String meaning = "";
+ if (alias.contains(".")){
+ meaning = getMeaningForVariant(alias);
+ } else {
+ meaning = aliasToMeaningMap.get(alias);
+ }
+ if (meaning == null){
+ continue;
+ }
+ SBSv2ConfigQueryData configQueryData = new SBSv2ConfigQueryData(alias, meaning, configQueryXML);
+ ISBSv2BuildContext sbsv2Context = new BuildContextSBSv2(sdk, alias, configQueryData);
+ sbsv2FilteredContexts.add(sbsv2Context);
+ SBSv2QueryUtils.storeConfigQueryDataForSDK(sdk, alias, configQueryData);
+ }
+ }
+
+ checkWINSCWSupport();
+ }
+
+ private void checkWINSCWSupport() {
+ List<ISymbianBuildContext> contextList = new ArrayList<ISymbianBuildContext>();
+ for (Iterator<ISymbianBuildContext> itr = sbsv2FilteredContexts.iterator(); itr.hasNext();) {
+ ISBSv2BuildContext context = (ISBSv2BuildContext) itr.next();
+ if (context.getPlatformString().equalsIgnoreCase(ISBSv2BuildContext.TOOLCHAIN_WINSCW)) {
+ if (context.getTargetString().equalsIgnoreCase(ISymbianBuildContext.DEBUG_TARGET)) {
+ if (sdk.getSupportedFeatures().contains(ISymbianSDKFeatures.IS_WINSCW_UDEB_SUPPORTED)){
+ contextList.add(context);
+ }
+ }
+ else
+ if (context.getTargetString().equalsIgnoreCase(ISymbianBuildContext.RELEASE_TARGET)) {
+ if (sdk.getSupportedFeatures().contains(ISymbianSDKFeatures.IS_WINSCW_UREL_SUPPORTED)){
+ contextList.add(context);
+ }
+ }
+ } else {
+ contextList.add(context);
+ }
+ }
+ sbsv2FilteredContexts = contextList;
+ }
+
+ private String getMeaningForVariant(String alias) {
+ String meaning = null;
+
+ // The alias is the first token when splitting on a dot.
+ String tokens[] = alias.split("\\.");
+ if (tokens.length > 0){
+ meaning = aliasToMeaningMap.get(tokens[0]);
+ for (int i = 1; i < tokens.length; i++){
+ meaning += "." + tokens[i];
+ }
+ }
+
+ return meaning;
+ }
+
+ public Map<String, String> getMetadataMacros(String buildAlias) {
+ Map<String, String> platformMacros = cachedMetadataMacros.get(buildAlias);
+ if (platformMacros == null) {
+ platformMacros = new HashMap<String, String>();
+ synchronized (cachedMetadataMacros) {
+ if (sbsv2FilteredContexts == null || sbsv2FilteredContexts.size() == 0) {
+ getFilteredBuildConfigurations();
+ }
+ if (sbsv2FilteredContexts.size() > 0) {
+ for (ISymbianBuildContext context : sbsv2FilteredContexts) {
+ if (((ISBSv2BuildContext)context).getSBSv2Alias().equalsIgnoreCase(buildAlias)) {
+ platformMacros.putAll(((ISBSv2BuildContext)context).getConfigQueryData().getMetaDataMacros());
+ }
+ }
+ cachedMetadataMacros.put(buildAlias, platformMacros);
+ }
+ }
+ }
+ return platformMacros;
+ }
+
+ public Map<String, String> getBuildMacros(String buildAlias) {
+ Map<String, String> buildMacros = cachedBuildMacros.get(buildAlias);
+ if (buildMacros == null) {
+ buildMacros = new HashMap<String, String>();
+ synchronized (cachedBuildMacros) {
+ if (sbsv2FilteredContexts == null || sbsv2FilteredContexts.size() == 0) {
+ getFilteredBuildConfigurations();
+ }
+ if (sbsv2FilteredContexts.size() > 0) {
+ for (ISymbianBuildContext context : sbsv2FilteredContexts) {
+ if (((ISBSv2BuildContext)context).getSBSv2Alias().equalsIgnoreCase(buildAlias)) {
+ buildMacros.putAll(((ISBSv2BuildContext)context).getConfigQueryData().getBuildMacros());
+ }
+ }
+ cachedBuildMacros.put(buildAlias, buildMacros);
+ }
+ }
+ }
+ return buildMacros;
+ }
+
+ /**
+ * Get the full path to the prefix file defined under \epoc32\tools\variant\variant.cfg
+ * @return A path object, or null if the variant.cfg does not exist. This routine does not check to see if the returned path exists.
+ */
+ public IPath getPrefixFromVariantCfg(){
+ if (cachedVariantHRHFile == null) {
+ if (sbsv2FilteredContexts == null || sbsv2FilteredContexts.size() == 0) {
+ getFilteredBuildConfigurations();
+ }
+ if (sbsv2FilteredContexts.size() > 0) {
+ for (ISymbianBuildContext context : sbsv2FilteredContexts) {
+ String vStr = ((ISBSv2BuildContext)context).getConfigQueryData().getMetaDataVariantHRH();
+ if (vStr != null) {
+ cachedVariantHRHFile = new Path(vStr);
+ break;
+ }
+ }
+ }
+ }
+ return cachedVariantHRHFile;
+ }
+
+ public String getTargetTypeMacro(String targettype) {
+ // this is based on \epoc32\tools\trgtype.pm which changes from
+ // OS version to OS version, but largely remains constant with
+ // regards to the basic type.
+
+ // if it's not one of these then it's a DLL
+ if (targettype.compareToIgnoreCase("EPOCEXE") == 0) {
+ return "__EXEDLL__";
+ } else if (targettype.compareToIgnoreCase("EXEDLL") == 0) {
+ return "__EXEDLL__";
+ } else if (targettype.compareToIgnoreCase("EXE") == 0) {
+ return "__EXE__";
+ } else if (targettype.compareToIgnoreCase("EXEXP") == 0) {
+ return "__EXE__";
+ } else if (targettype.compareToIgnoreCase("IMPLIB") == 0) {
+ return "__IMPLIB__";
+ } else if (targettype.compareToIgnoreCase("KLIB") == 0) {
+ return "__LIB__";
+ } else if (targettype.compareToIgnoreCase("LIB") == 0) {
+ return "__LIB__";
+ } else {
+ return "__DLL__";
+ }
+
+ }
+
+ public boolean isPreviouslyScanned() {
+ return wasScanned;
+ }
+
+ public void setPreviouslyScanned(boolean wasScanned) {
+ this.wasScanned = wasScanned;
+ }
+
+}
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SBVCatalogFactory.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SBVCatalogFactory.java Wed Aug 25 12:42:09 2010 -0500
@@ -12,12 +12,12 @@
*/
package com.nokia.carbide.cpp.internal.sdk.core.model;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+
import com.nokia.carbide.cpp.sdk.core.ISBVCatalog;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-
/**
* This factory creates SBV catalogs.
*
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SDKManager.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SDKManager.java Wed Aug 25 12:42:09 2010 -0500
@@ -12,11 +12,9 @@
*/
package com.nokia.carbide.cpp.internal.sdk.core.model;
-import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
-import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.text.MessageFormat;
@@ -25,22 +23,23 @@
import java.util.List;
import org.eclipse.cdt.utils.WindowsRegistry;
-import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Status;
import org.eclipse.emf.common.util.EList;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
+import org.osgi.framework.Version;
+import com.nokia.carbide.cpp.internal.sdk.core.gen.Devices.DefaultType;
import com.nokia.carbide.cpp.internal.sdk.core.gen.Devices.DeviceType;
+import com.nokia.carbide.cpp.internal.sdk.core.gen.Devices.DevicesFactory;
import com.nokia.carbide.cpp.internal.sdk.core.gen.Devices.DevicesType;
import com.nokia.carbide.cpp.internal.sdk.core.xml.DevicesLoader;
+import com.nokia.carbide.cpp.sdk.core.ISDKManager;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
-import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDKFeatures;
import com.nokia.carbide.cpp.sdk.core.SDKEnvInfoFailureException;
import com.nokia.cpp.internal.api.utils.core.HostOS;
import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils;
@@ -54,7 +53,12 @@
private static final String WINDOWS_SYSTEM_ROOT_KEY = "SystemRoot";
private static final String EMPTY_DEVICES_XML_CONTENT = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><devices version=\"1.0\"></devices>";
-
+
+ private static final String QMAKE_FILE = "epoc32/tools/qt/qmake" + HostOS.EXE_EXT; //$NON-NLS-1$
+ private static final String MIFCONV_FILE = "epoc32/tools/mifconv" + HostOS.EXE_EXT; //$NON-NLS-1$
+ private static final String ABLD_FILE = "epoc32/tools/abld.pl"; //$NON-NLS-1$
+ private static final long VALID_ABLD_SIZE = 1024;
+
static boolean hasPromptedForDevicesXML = false; // make sure we only ask once at startup if devices.xml does not exist
long devicesXLMLastModified;
@@ -70,85 +74,63 @@
public SDKManager() {
super();
- checkPerlInstallation();
-
}
- protected boolean doScanSDKs() {
-
+ protected boolean doScanSDKs(IProgressMonitor monitor) {
+ boolean result = true;
DevicesType devicesType;
try {
File devicesFile = getDevicesXMLFile();
if (devicesFile == null || !devicesFile.exists()) {
- // There is no devices.xml. Ask the user if he/she wants to
- // add it
- if (hasPromptedForDevicesXML == false) {
- hasPromptedForDevicesXML = true;
- doAsynchPromptCreateDevicesXML();
+ // It's ok if there is no devices.xml.
+ // Raptor based SDKs no longer depends on it.
+ } else {
+ devicesXLMLastModified = devicesFile.lastModified();
+ devicesType = DevicesLoader.loadDevices(devicesFile.toURL());
+ EList devices = devicesType.getDevice();
+ for (Iterator iter = devices.iterator(); iter.hasNext();) {
+ SymbianSDK sdk = new SymbianSDK((DeviceType) iter.next());
+ sdk.addSupportedFeature(ISymbianSDKFeatures.IS_FROM_DEVICES_XML);
+ sdkList.add(sdk);
}
- return false; // no devices.xml file..
}
+ } catch (Exception e) {
+ logError("Failed to scan devices.xml", e);
+ result = false;
+ }
- devicesXLMLastModified = devicesFile.lastModified();
- devicesType = DevicesLoader.loadDevices(devicesFile.toURL());
- EList devices = devicesType.getDevice();
- for (Iterator iter = devices.iterator(); iter.hasNext();) {
- SymbianSDK sdk = new SymbianSDK((DeviceType) iter.next());
- sdkList.add(sdk);
- }
-
- return true;
- } catch (Exception e) {
- logError("Failed to scan SDKs", e);
- return false;
- }
+ scanCarbideSDKCache();
+ doScanDrives(monitor);
+ return result;
}
-
public void updateSDK(ISymbianSDK sdk) {
- try {
- File devicesFile = getDevicesXMLFile();
-
- // If file does not exist exception will catch it
- DevicesLoader.updateDevice(sdk, devicesFile.toURL());
- updateCarbideSDKCache();
-
- } catch (Exception e) {
- // must catch and rethrow as unchecked exception this
- // because no throws clause in API method
- throw new RuntimeException(e);
+ if (((SymbianSDK)sdk).getSupportedFeatures().contains(ISymbianSDKFeatures.IS_FROM_DEVICES_XML)) {
+ try {
+ File devicesFile = getDevicesXMLFile();
+
+ if (devicesFile == null || !devicesFile.exists()) {
+ // There is no devices.xml. Ask the user if he/she wants to
+ // add it
+ doAsynchPromptCreateDevicesXML();
+ return;
+ }
+
+ // If file does not exist exception will catch it
+ DevicesLoader.updateDevice(sdk, devicesFile.toURL());
+
+ } catch (Exception e) {
+ // must catch and rethrow as unchecked exception this
+ // because no throws clause in API method
+ throw new RuntimeException(e);
+ }
}
+ updateCarbideSDKCache();
}
- public void setDefaultSDK(ISymbianSDK sdk){
- try {
- File devicesFile = getDevicesXMLFile();
-
- synchronized(sdkList)
- {
- for (ISymbianSDK currSDK : sdkList){
- if (!currSDK.getUniqueId().equals(sdk.getUniqueId())){
- currSDK.setIsDefaultSDK(false); // set all to false, except the input one
- }
- }
- }
-
- DevicesLoader.setDefaultDevice(sdk, devicesFile.toURL());
- updateCarbideSDKCache();
-
- } catch (MalformedURLException e) {
- e.printStackTrace();
- } catch (URISyntaxException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
-
protected boolean doRemoveSDK(String sdkId) {
- // Now actually remove it from the file...
+ // Now actually remove it from devices.xml...
DevicesType devicesType;
try {
File devicesFile = getDevicesXMLFile();
@@ -168,7 +150,7 @@
return true;
} catch (Exception e) {
- logError("Failed to remove SDK", e);
+ logError("Failed to remove SDK from devices.xml", e);
}
return false;
@@ -192,8 +174,8 @@
// registry entry exists, check existence of file
regPath = regPath.append(DEVICES_FILE_NAME);
if (!regPath.toFile().exists()){
- String errMsg = MessageFormat.format("Devices.xml does not exist at: {0}", regPath);
- logError(errMsg, null);
+// String errMsg = MessageFormat.format("Devices.xml does not exist at: {0}", regPath);
+// logError(errMsg, null);
return null;
}
@@ -216,6 +198,13 @@
return deviceDirPath.append(DEVICES_FILE_NAME).toFile();
}
+ /**
+ * Getting installation path of CSL (GCCE) Arm Toolchain from the registry.
+ * The method also check that the all required tools exist.
+ * @return Path to tool binaries under installation path directory,
+ * successful. Otherwise throws an exception.
+ * @throws SDKEnvInfoFailureException
+ */
public String getCSLArmToolchainInstallPathAndCheckReqTools() throws SDKEnvInfoFailureException{
String installPath = null;
@@ -225,17 +214,15 @@
installPath = wr.getLocalMachineValue(CSL_ARM_TOOLCHAIN_REG_PATH,
CSL_ARM_TOOLCHAIN_REG_KEY);
} catch (Exception e) {
- //TODO: Localise
String errMsg = "Could not read registry for local machine key: '" + CSL_ARM_TOOLCHAIN_REG_PATH
- + " (" + e.getMessage() +").";
+ + " (" + e.getMessage() +")."; //$NON-NLS-N$
throw new SDKEnvInfoFailureException(errMsg);
}
if (!new File(installPath).exists()){
- //TODO: Localise
String errMsg = "CSL Arm Toolchain installation path pointed by registry key '"
+ CSL_ARM_TOOLCHAIN_REG_PATH
- + "' does not exist.";
+ + "' does not exist."; //$NON-NLS-N$
throw new SDKEnvInfoFailureException(errMsg);
}
@@ -252,9 +239,8 @@
toolPathName = gcceToolDir + "\\" + toolName;
if (!new File(toolPathName).exists()){
- //TODO: Localise
String errMsg = "Required tool from CSL Arm Toolchain is missing: "
- + toolPathName;
+ + toolPathName; //$NON-NLS-N$
throw new SDKEnvInfoFailureException(errMsg);
}
}
@@ -305,42 +291,15 @@
return false;
}
- protected void checkPerlInstallation(){
-
- Runtime rt=Runtime.getRuntime();
-
- // check for Perl
- try {
- Process p = rt.exec("perl.exe -v");
-
- BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
- String overallOutput = null;
- String stdErrLine = null;
- while ((stdErrLine = br.readLine()) != null) {
- overallOutput += stdErrLine;
- }
-
- if (overallOutput != null && !overallOutput.contains("v5.6.1")){
- ResourcesPlugin.getPlugin().getLog().log(new Status(IStatus.WARNING, SDKCorePlugin.PLUGIN_ID, IStatus.WARNING, "Perl v5.6.1 was not detected. Some SDKs do not work with other Perl versions.", null));
- }
-
- p.destroy();
-
- }
- catch (IOException e) {
- // report error to PDE log
- ResourcesPlugin.getPlugin().getLog().log(new Status(IStatus.ERROR, SDKCorePlugin.PLUGIN_ID, IStatus.ERROR, "Perl was not found on the PATH environment variable. Some tools will not function properly. Perl 5.6.1 is recommended for Carbide use (free download at www.activestate.com).", e));
- // Report dialog since this is always fatal for future work and the error log
- // may be hidden
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
- MessageDialog.openError(window.getShell(), "Missing Perl", "Perl was not found on your PATH. The Symbian build tools cannot work successfully without Perl. Please install Perl (v5.6.1 recommended).");
- }
- });
- }
- }
+ /**
+ * Checks to see if the devices.xml on disk contains the same current information
+ * as what we have in the sdk list. When not synchronized, when an SDK is add or removed
+ * outside of Carbide for example, this means an SDK rescan operation is needed.
+ * @return true if synchronized (no rescan needed), otherwise false (not up to date). Will also return true when devices.xml does not exist
+ * @see ISDKManager.fireDevicesXMLChanged
+ * @since 2.0
+ */
public boolean checkDevicesXMLSynchronized(){
if (devicesXLMLastModified == 0){
return true; // no devices.xml file
@@ -376,27 +335,19 @@
e.printStackTrace();
}
- if (localSDKList.size() != sdkList.size()){
- needsRescan = true;
- } else {
- for (ISymbianSDK sdk : localSDKList){
- ISymbianSDK currSDK = getSDK(sdk.getUniqueId(), false);
- if (currSDK == null){
- // sdk id has been changed
- needsRescan = true;
- break;
- }
- // check that the data are the same.
- // Other than the 'id' attrib, all we really care is whether or not
- // the EPOCROOT or vendor 'name' has changed.
- if (!sdk.getEPOCROOT().equalsIgnoreCase(currSDK.getEPOCROOT())){
- needsRescan = true;
- break;
- }
- if (!sdk.getName().equalsIgnoreCase(currSDK.getName())){
- needsRescan = true;
- break;
- }
+ for (ISymbianSDK sdk : localSDKList){
+ ISymbianSDK currSDK = getSDK(sdk.getUniqueId(), false);
+ if (currSDK == null){
+ // sdk id has been changed
+ needsRescan = true;
+ break;
+ }
+ // check that the data are the same.
+ // Other than the 'id' attrib, all we really care is whether or not
+ // the EPOCROOT or vendor 'name' has changed.
+ if (!sdk.getEPOCROOT().equalsIgnoreCase(currSDK.getEPOCROOT())){
+ needsRescan = true;
+ break;
}
}
@@ -416,4 +367,125 @@
protected boolean isEPOCRootFixed() {
return true;
}
+
+ /**
+ * Scan system drives for installed SDKs
+ */
+ protected void doScanDrives(IProgressMonitor monitor) {
+ File[] drives = getSystemDrives();
+ monitor.beginTask("Scanning system drives for installed SDKs", drives.length);
+ for (File drive : drives) {
+ if (!isEPOCRoot(drive)) {
+ continue;
+ }
+
+ String sdkId = getUniqueSDKId(drive);
+ DeviceType deviceType = DevicesFactory.eINSTANCE.createDeviceType();
+ deviceType.setAlias(drive.toString());
+ deviceType.setDefault(DefaultType.NO_LITERAL);
+ deviceType.setEpocroot(drive.getAbsolutePath());
+ deviceType.setId(sdkId);
+ deviceType.setName("com.nokia.s60");
+ deviceType.setToolsroot(drive.getAbsolutePath());
+ deviceType.setUserdeletable("false");
+ deviceType.setUserdeletetable("false");
+ ISymbianSDK sdk = new SymbianSDK(deviceType);
+ if (sdk.getOSVersion().toString().equals("0.0")) {
+ ((SymbianSDK)sdk).setOSVersion(new Version("9.5"));
+ }
+
+ if (!isSupportedSDK(sdk)) {
+ continue;
+ }
+
+ if (isInSDKList(sdk)) {
+ continue;
+ }
+
+ sdkList.add(sdk);
+ monitor.worked(1);
+ if (monitor.isCanceled()) {
+ monitor.done();
+ return;
+ }
+ }
+ monitor.done();
+ }
+
+ private File[] getSystemDrives() {
+ if (HostOS.IS_WIN32) {
+ return File.listRoots();
+ }
+ return new File[0];
+ }
+
+ private String getUniqueSDKId(File drive) {
+ String sdkId = drive.toString().charAt(0) + "_SDK";
+ int suffice = 1;
+ while (!isUniqueSDKId(sdkId)) {
+ sdkId = drive.toString().charAt(0) + "_SDK" + suffice;
+ suffice++;
+ }
+ return sdkId;
+ }
+
+ private boolean hasAbldSupport(ISymbianSDK sdk) {
+ File abld = new File(sdk.getEPOCROOT(), ABLD_FILE);
+ if (abld.exists()) {
+ long size = abld.length();
+ if (size >= VALID_ABLD_SIZE)
+ return true;
+ }
+ return false;
+ }
+
+ private boolean hasQmake(ISymbianSDK sdk) {
+ File qmake = new File(sdk.getEPOCROOT(), QMAKE_FILE);
+ if (qmake.exists()) {
+ return true;
+ }
+ return false;
+ }
+
+ private boolean hasRaptor(ISymbianSDK sdk) {
+ File mifconv = new File(sdk.getEPOCROOT(), MIFCONV_FILE);
+ if (mifconv.exists()) {
+ return true;
+ }
+ return false;
+ }
+
+ private boolean isEPOCRoot(File drive) {
+ IPath epocInclude = new Path(drive.getAbsolutePath()).append("epoc32").append("include");
+ if (epocInclude.toFile().exists()) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ private boolean isInSDKList(ISymbianSDK sdk) {
+ for (ISymbianSDK entry : sdkList) {
+ if (entry.getEPOCROOT().equalsIgnoreCase(sdk.getEPOCROOT())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private boolean isSupportedSDK(ISymbianSDK sdk) {
+ if (!hasAbldSupport(sdk) || hasQmake(sdk) || hasRaptor(sdk)) {
+ return true;
+ }
+ return false;
+ }
+
+ private boolean isUniqueSDKId(String sdkId) {
+ for (ISymbianSDK sdk : sdkList){
+ if (sdk.getUniqueId().equalsIgnoreCase(sdkId)){
+ return false;
+ }
+ }
+ return true;
+ }
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SDKManagerCacheEntry.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,102 @@
+package com.nokia.carbide.cpp.internal.sdk.core.model;
+
+import java.io.Serializable;
+
+public class SDKManagerCacheEntry implements Serializable {
+
+ private static final long serialVersionUID = 3694246766733614433L;
+
+ private String id;
+ private String epocRoot;
+ private String osVersion;
+ private boolean isEnabled;
+
+ public SDKManagerCacheEntry() {
+ this.id = "";
+ this.epocRoot = "";
+ this.osVersion = "";
+ this.isEnabled = false;
+ }
+
+ public SDKManagerCacheEntry(String id, String epocRoot, String osVersion, boolean isEnabled) {
+ this.id = id;
+ this.epocRoot = epocRoot;
+ this.osVersion = osVersion;
+ this.isEnabled = isEnabled;
+ }
+
+ public String getEpocRoot() {
+ return epocRoot;
+ }
+
+ public String getId() {
+ return this.id;
+ }
+
+ public String getOsVersion() {
+ return this.osVersion;
+ }
+
+ public boolean isEnabled() {
+ return this.isEnabled;
+ }
+
+ public void setEnabled(boolean isEnabled) {
+ this.isEnabled = isEnabled;
+ }
+
+ public void setEpocRoot(String epocRoot) {
+ this.epocRoot = epocRoot;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public void setOsVersion(String osVersion) {
+ this.osVersion = osVersion;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result
+ + ((epocRoot == null) ? 0 : epocRoot.hashCode());
+ result = prime * result + ((id == null) ? 0 : id.hashCode());
+ result = prime * result + (isEnabled ? 1231 : 1237);
+ result = prime * result
+ + ((osVersion == null) ? 0 : osVersion.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ SDKManagerCacheEntry other = (SDKManagerCacheEntry) obj;
+ if (epocRoot == null) {
+ if (other.epocRoot != null)
+ return false;
+ } else if (!epocRoot.equals(other.epocRoot))
+ return false;
+ if (id == null) {
+ if (other.id != null)
+ return false;
+ } else if (!id.equals(other.id))
+ return false;
+ if (isEnabled != other.isEnabled)
+ return false;
+ if (osVersion == null) {
+ if (other.osVersion != null)
+ return false;
+ } else if (!osVersion.equals(other.osVersion))
+ return false;
+ return true;
+ }
+
+}
\ No newline at end of file
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SDKManagerRaptorOnly.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SDKManagerRaptorOnly.java Wed Aug 25 12:42:09 2010 -0500
@@ -19,6 +19,7 @@
import java.io.File;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Display;
@@ -39,11 +40,16 @@
* @see com.nokia.carbide.cpp.internal.sdk.core.model.AbstractSDKManager#doScanSDKs()
*/
@Override
- protected boolean doScanSDKs() {
+ protected boolean doScanSDKs(IProgressMonitor monitor) {
+
+ scanCarbideSDKCache();
String message = SBSv2Utils.scanSBSv2();
if (message != null) {
- reportError(message);
+ // If Raptor is not installed version will be 0.0
+ // and a message will be displayed saying that
+ // the minimum version is not met.
+ //reportError(message);
// no good will come from checking over and over...
return true;
@@ -122,12 +128,6 @@
return new File(System.getProperty("user.home"), "devices.xml");
}
- /* (non-Javadoc)
- * @see com.nokia.carbide.cpp.sdk.core.ISDKManager#setDefaultSDK(com.nokia.carbide.cpp.sdk.core.ISymbianSDK)
- */
- public void setDefaultSDK(ISymbianSDK sdk) {
- // ignore
- }
/* (non-Javadoc)
* @see com.nokia.carbide.cpp.sdk.core.ISDKManager#updateSDK(com.nokia.carbide.cpp.sdk.core.ISymbianSDK)
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SymbianMissingSDKFactory.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SymbianMissingSDKFactory.java Wed Aug 25 12:42:09 2010 -0500
@@ -31,16 +31,11 @@
SymbianMissingSDK sdk = new SymbianMissingSDK(newDeviceEntry); // create SDK and set the attribs found in devices.xml
// Set other essential paramaters not in devices.xml
-
if (sdk.getOSVersion().getMajor() != 0){
// use the version detected from the SDK creation
} else {
- sdk.setOSVersion(new Version("0.0")); //$NON-NLS-1$
- sdk.setOSSDKBranch("0.0"); //$NON-NLS-1$
+ sdk.setOSVersion(new Version("9.5")); //$NON-NLS-1$
}
-
- sdk.setSDKVersion(new Version("0.0")); //$NON-NLS-1$
return sdk;
}
-
}
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SymbianSDK.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SymbianSDK.java Wed Aug 25 12:42:09 2010 -0500
@@ -12,148 +12,91 @@
*/
package com.nokia.carbide.cpp.internal.sdk.core.model;
-import com.nokia.carbide.cpp.epoc.engine.preprocessor.*;
-import com.nokia.carbide.cpp.internal.api.sdk.BuildPlat;
-import com.nokia.carbide.cpp.internal.api.sdk.SBSv2Utils;
-import com.nokia.carbide.cpp.internal.api.sdk.SymbianBuildContext;
-import com.nokia.carbide.cpp.internal.sdk.core.gen.Devices.DefaultType;
-import com.nokia.carbide.cpp.internal.sdk.core.gen.Devices.DeviceType;
-import com.nokia.carbide.cpp.sdk.core.*;
-import com.nokia.carbide.internal.api.cpp.epoc.engine.preprocessor.BasicIncludeFileLocator;
-import com.nokia.carbide.internal.api.cpp.epoc.engine.preprocessor.MacroScanner;
-import com.nokia.cpp.internal.api.utils.core.PathUtils;
-import com.sun.org.apache.xpath.internal.XPathAPI;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Reader;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import javax.xml.XMLConstants;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Source;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.stream.StreamSource;
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
+import javax.xml.validation.Validator;
import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
import org.osgi.framework.Version;
-import org.w3c.dom.*;
+import org.w3c.dom.Document;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
import org.w3c.dom.traversal.NodeIterator;
import org.xml.sax.SAXException;
-import java.io.*;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.util.*;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildInfo;
+import com.nokia.carbide.cpp.internal.api.sdk.ISymbianSDKModifier;
+import com.nokia.carbide.cpp.internal.sdk.core.gen.Devices.DeviceType;
+import com.nokia.carbide.cpp.sdk.core.ISDKBuildInfo;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDKFeatures;
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
+import com.sun.org.apache.xpath.internal.XPathAPI;
-import javax.xml.XMLConstants;
-import javax.xml.parsers.*;
-import javax.xml.transform.Source;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.stream.StreamSource;
-import javax.xml.validation.*;
-
-public class SymbianSDK implements ISymbianSDK {
+public class SymbianSDK implements ISymbianSDK, ISymbianSDKModifier {
public static final String MANIFEST_XML_LOCATION = "/epoc32/kit/manifest.xml"; //$NON-NLS-1$
// manifest.xml attributes
- private static final String PATH_ID_EPOC32DIR = "epoc32Dir"; //$NON-NLS-1$
private static final String PATH_ID_INCLUDEDIR = "includeDir"; //$NON-NLS-1$
private static final String PATH_ID_TOOLSDIR = "toolsDir"; //$NON-NLS-1$
private static final String PATH_ID_SRCDIR = "srcDir"; //$NON-NLS-1$
- private static final String INCLUDE = "include"; //$NON-NLS-1$
private static final String RELEASE = "release"; //$NON-NLS-1$
- private static final String TOOLS = "tools"; //$NON-NLS-1$
- private static final String EPOC32_DIR = "epoc32"; //$NON-NLS-1$
- private static final String INCLUDE_SUBDIR = "epoc32/" + INCLUDE; //$NON-NLS-1$
- private static final String RELEASE_SUBDIR = "epoc32/" + RELEASE; //$NON-NLS-1$
- private static final String TOOLS_SUBDIR = "epoc32/" + TOOLS; //$NON-NLS-1$
- private static final String VARIANT_CFG_FILE = "epoc32/tools/variant/variant.cfg"; //$NON-NLS-1$
- private static final String SPP_VARIANT_CFG_FILE = "epoc32/tools/variant/spp_variant.cfg"; //$NON-NLS-1$
- private static final String TARGETTYPE_PM_FILE = "epoc32/tools/trgtype.pm"; //$NON-NLS-1$
private static final String BUILD_INFO_TXT_FILE = "epoc32/data/buildinfo.txt"; //$NON-NLS-1$
private static final String BUILD_INFO_KEYWORD = "ManufacturerSoftwareBuild";
private static final String WINSCW_UREL_DIR = "epoc32/release/winscw/urel";
+ private static final String WINSCW_UDEB_DIR = "epoc32/release/winscw/udeb";
+ private static final String ARMV5_UDEB_DIR = "epoc32/release/armv5/udeb";
protected DeviceType deviceEntry = null;
private boolean enabled = true;
- private boolean wasScanned = false;
private Version osVersion;
- private Version sdkVersion;
- private String sdkOSBranch;
+ private Map<String, ISDKBuildInfo> buildInfoMap = new HashMap<String, ISDKBuildInfo>();
+ private Map<String, File> prefixFileMap = new HashMap<String, File>();
+ private Set<Object> sdkFeatures = new HashSet<Object>();
- private File licenseFile;
- private File prefixFile;
-
- private List<IDefine> variantHRHMacros = null;
- private List<ISymbianBuildContext> bsfContextList = new ArrayList<ISymbianBuildContext>(0);
-
- private List<ISymbianBuildContext> binaryVariantContextList = new ArrayList<ISymbianBuildContext>(0);
-
- private Date createDate;
- private URL publisherURL;
- private String sdkDescription;
- private String publisherName;
-
- private boolean supportsWINSCW_UREL;
-
- List<String> supportedTargetTypesList = new ArrayList<String>();
-
- private IBSFCatalog bsfCatalog;
- private ISBVCatalog sbvCatalog;
-
- private Map<String, List<String>> cachedPlatformMacros = new HashMap<String, List<String>>();
-
- // greedy match means the filename is in the last group
- private static Pattern VARIANT_HRH_LINE_PATTERN = Pattern.compile("(?i)(.*)(/|\\\\)(.*hrh)");
-
- private long hrhFileTimeStamp = 0;
-
public SymbianSDK(DeviceType device) {
deviceEntry = device;
scanSDK();
}
-
- public void scanSDK(){
-
- cachedPlatformMacros.clear();
- variantHRHMacros = null;
-
- if (!setDataFromManifestXML()){
- // must derive the OS and SDK version
- if (!deriveOSVersionFromDeviceId()){
- //need to scan SDK files for OS and SDK version
- scanSDKForVersionInfo();
+
+ public void addSupportedFeature(Object feature) {
+ sdkFeatures.add(feature);
+ }
+
+ public ISDKBuildInfo getBuildInfo(String builderId) {
+ ISDKBuildInfo buildInfo = buildInfoMap.get(builderId);
+ if (buildInfo == null) {
+ if (builderId.equals(ISymbianBuilderID.SBSV1_BUILDER)) {
+ buildInfo = createSBSv1BuildInfo();
+ } else if (builderId.equals(ISymbianBuilderID.SBSV2_BUILDER)) {
+ buildInfo = createSBSv2BuildInfo();
}
}
-
- IPath prefixFileFullPath = getPrefixFromVariantCfg();
- if (prefixFileFullPath != null){
- setPrefixFile(prefixFileFullPath);
- }
-
- // Trick for SEMC. Try to set the SDK version based on a UIQ HRH file
- // if there's is no SDK version
- if (getSDKVersion().getMajor() == 0 && getName().equalsIgnoreCase(ISymbianSDK.UIQ_SDK_NAME)){
- // This might be an SEMC CustKit, get the version from the HRH file
- if (getPrefixFile() != null){
- String prefixFileStr = getPrefixFile().toString();
- if (prefixFileStr.indexOf("UIQ_") != -1 && prefixFileStr.indexOf(".hrh") != -1){
- prefixFileStr = prefixFileStr.substring(prefixFileStr.indexOf("UIQ_")+4, prefixFileStr.indexOf(".hrh"));
- if (prefixFileStr.length() == 3 && prefixFileStr.contains(".")){
- setSDKVersion(new Version(prefixFileStr));
- }
- }
- }
- }
-
- scanForWINSCW_UREL();
- }
-
- public List<String> getAvailablePlatforms() {
- ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
- return sdkMgr.getSymbianMacroStore().getSupportedPlatforms(getOSVersion(), getSDKOSBranch(), getBSFCatalog());
- }
-
- public Date getCreationDate() {
- return createDate;
+ return buildInfo;
}
public String getEPOCROOT() {
@@ -183,189 +126,6 @@
return "";
}
- public boolean isEnabled() {
- if (!SDKCorePlugin.SUPPORTS_SBSV1_BUILDER &&
- (getOSVersion().getMajor() < 9 ||
- (getOSVersion().getMajor() == 9 && getOSVersion().getMinor() <= 4))){
- return false;
- }
- return enabled;
- }
-
- public void setEnabled(boolean enable) {
- enabled = enable;
- }
-
- public String getFamily() {
- String[] parts = getName().split("\\.");
- if (parts.length == 3){
- if (getSDKVersion().getMajor() == 5 && getName().equalsIgnoreCase(NOKIA_SF_SDK_NAME)){
- // A vendor of "symbian" and SDK major version 5 is the same as prior naming for "com.nokia.s60" & 5th Edition.
- // Return "s60" so that project template generation continues to work as it's a S60 5th ed. SDK.
- return ISymbianSDK.S60_FAMILY_ID;
- } else {
- return parts[2];
- }
- }
-
- return "";
- }
-
-
- public List<String> getTargetTypeMacros(String targettype) {
- // this is based on \epoc32\tools\trgtype.pm which changes from
- // OS version to OS version, but largely remains constant with
- // regards to the basic type.
- List<String> macros = new ArrayList<String>();
-
- // if it's not one of these then it's a DLL
- if (targettype.compareToIgnoreCase("EPOCEXE") == 0) {
- macros.add("__EXEDLL__");
- } else if (targettype.compareToIgnoreCase("EXEDLL") == 0) {
- macros.add("__EXEDLL__");
- } else if (targettype.compareToIgnoreCase("EXE") == 0) {
- macros.add("__EXE__");
- } else if (targettype.compareToIgnoreCase("EXEXP") == 0) {
- macros.add("__EXE__");
- } else if (targettype.compareToIgnoreCase("IMPLIB") == 0) {
- macros.add("__IMPLIB__");
- } else if (targettype.compareToIgnoreCase("KLIB") == 0) {
- macros.add("__LIB__");
- } else if (targettype.compareToIgnoreCase("LIB") == 0) {
- macros.add("__LIB__");
- } else {
- macros.add("__DLL__");
- }
- return macros;
- }
-
-
- public List<ISymbianBuildContext> getUnfilteredBuildConfigurations() {
-
- List<ISymbianBuildContext> buildTargets = new ArrayList<ISymbianBuildContext>();
-
- // note that this gets variant platforms but not regular BSF's
- List <String>buildPlats = getAvailablePlatforms();
-
- if (buildPlats.size() == 0){
- return Collections.emptyList();
- }
-
- buildTargets.add(new SymbianBuildContext(this, ISymbianBuildContext.EMULATOR_PLATFORM, ISymbianBuildContext.DEBUG_TARGET));
-
- if (supportsWINSCW_UREL()){
- buildTargets.add(new SymbianBuildContext(this, ISymbianBuildContext.EMULATOR_PLATFORM, ISymbianBuildContext.RELEASE_TARGET));
- }
-
- for (String currPlat : buildPlats){
-
- if (currPlat.equals(ISymbianBuildContext.EMULATOR_PLATFORM) ) {
- // emulation targets already determined (some SDKs don't get WISNCW UREL
- continue;
- }
-
- buildTargets.add(new SymbianBuildContext(this, currPlat, ISymbianBuildContext.DEBUG_TARGET));
-
- // everything gets release except for WINSCW
- buildTargets.add(new SymbianBuildContext(this, currPlat, ISymbianBuildContext.RELEASE_TARGET));
- }
-
- ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
- if (sdkMgr.getBSFScannerEnabled()){
- buildTargets.addAll(getBSFPlatformContexts());
- buildTargets.addAll(getBinaryVariationPlatformContexts()); // Symbian Binary Variation (.var)
- }
-
- return buildTargets;
- }
-
- public List<ISymbianBuildContext> getBSFPlatformContexts(){
-
- synchronized (bsfContextList) {
- if (!bsfContextList.isEmpty()){
- return bsfContextList;
- }
-
- IBSFCatalog catalog = getBSFCatalog();
- for (IBSFPlatform platform : catalog.getPlatforms()) {
- // only return non-variant style BSF's. see boog #4533 for details.
- if (!platform.isVariant()) {
- bsfContextList.add(new SymbianBuildContext(this, platform.getName().toUpperCase(), ISymbianBuildContext.DEBUG_TARGET));
- bsfContextList.add(new SymbianBuildContext(this, platform.getName().toUpperCase(), ISymbianBuildContext.RELEASE_TARGET));
- }
- }
- }
-
- return bsfContextList;
- }
-
-public List<ISymbianBuildContext> getBinaryVariationPlatformContexts(){
-
- synchronized (binaryVariantContextList) {
- if (!binaryVariantContextList.isEmpty()){
- return binaryVariantContextList;
- }
-
- ISBVCatalog catalog = getSBVCatalog();
- for (ISBVPlatform sbvPlatform : catalog.getPlatforms()) {
- // Currently only variation of ARMV5 is supported... So just hard code the variated platform
- // Only add the build platform if it's not virtual.
- if (!sbvPlatform.isVirtual()){
- binaryVariantContextList.add(new SymbianBuildContext(this, SymbianBuildContext.ARMV5_PLATFORM + "." + sbvPlatform.getName(), ISymbianBuildContext.DEBUG_TARGET));
- binaryVariantContextList.add(new SymbianBuildContext(this, SymbianBuildContext.ARMV5_PLATFORM + "." + sbvPlatform.getName(), ISymbianBuildContext.RELEASE_TARGET));
- }
- }
- }
-
- return binaryVariantContextList;
- }
-
- public List<ISymbianBuildContext> getFilteredBuildConfigurations() {
- // This is probably a bug, but the filtering only uses SBSv1 preferences if SBSv1 is enabled...
- List<ISymbianBuildContext> filteredContexts;
- if (SBSv2Utils.enableSBSv1Support()) {
- filteredContexts = getSBSv1FilteredBuildConfigurations();
- } else {
- if (SBSv2Utils.enableSBSv2Support()) {
- filteredContexts = SBSv2Utils.getFilteredSBSv2BuildContexts(this);
- } else {
- // be optimistic in this case... SBSv3? ;)
- filteredContexts = getUnfilteredBuildConfigurations();
- }
- }
- return filteredContexts;
- }
-
- protected List<ISymbianBuildContext> getSBSv1FilteredBuildConfigurations() {
- List<ISymbianBuildContext> buildContexts = getUnfilteredBuildConfigurations();
-
- if (buildContexts.size() == 0){
- return Collections.emptyList();
- }
-
- ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
- List<BuildPlat> platFilterList = sdkMgr.getPlatformList();
-
- Iterator<ISymbianBuildContext> li = buildContexts.iterator();
-
- while(li.hasNext()){
- ISymbianBuildContext currContext = li.next();
- for (BuildPlat currPlat : platFilterList){ // see which ones need to be filtered out.
-
- if (currPlat.getPlatName().equals(currContext.getPlatformString())){
- if (!currPlat.isEnabled()){
- if (isEKA2() && currPlat.getOsIdentifier().equals(BuildPlat.EKA2_IDENTIFIER)){
- li.remove(); // filtered out in UI, don't show
- break;
- }
- }
- }
- }
- }
-
- return buildContexts;
- }
-
public IPath getIncludePath() {
String epocRoot = getEPOCROOT();
if (epocRoot.length() > 0) {
@@ -380,55 +140,27 @@
return null;
}
- public File getLicenseFile() {
- return licenseFile;
- }
-
- public String getName() {
- if (deviceEntry != null) {
- return deviceEntry.getName();
- }
- return "";
- }
-
public Version getOSVersion() {
if (osVersion == null){
- return new Version("0.0");
+ return new Version("9.5");
}
return osVersion;
}
-
- public Version getSDKVersion() {
- if (sdkVersion == null){
- return new Version("0.0");
- }
- return sdkVersion;
- }
- public List<String> getPlatformMacros(String platform) {
- List<String> platformMacros = cachedPlatformMacros.get(platform.toUpperCase());
- if (platformMacros == null) {
- synchronized (cachedPlatformMacros) {
- ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
- platformMacros = sdkMgr.getSymbianMacroStore().getPlatformMacros(getOSVersion(), getSDKOSBranch(), getBSFCatalog(), platform);
- cachedPlatformMacros.put(platform.toUpperCase(), platformMacros);
- }
- }
- return platformMacros;
- }
-
- public List<String> getVendorSDKMacros() {
- ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
- return sdkMgr.getSymbianMacroStore().getVendorMacros(getSDKVersion(), getName());
- }
-
- public File getPrefixFile() {
- return prefixFile;
- }
-
- public URL getPublisherURL() {
- return publisherURL;
- }
+// public File getPrefixFile(String builderId) {
+// File prefixFile = prefixFileMap.get(builderId);
+// if (prefixFile == null) {
+// ISDKBuildInfo buildInfo = getBuildInfo(builderId);
+// if (buildInfo != null) {
+// IPath prefixFilePath = buildInfo.getPrefixFromVariantCfg();
+// if (prefixFilePath != null) {
+// prefixFile = prefixFilePath.toFile();
+// setPrefixFile(prefixFilePath, builderId);
+// }
+// }
+// }
+// return prefixFile;
+// }
public IPath getReleaseRoot() {
String epocRoot = getEPOCROOT();
@@ -444,19 +176,9 @@
return null;
}
- public String getSDKDescription() {
- if (sdkDescription == null){
- return "";
- }
- return sdkDescription;
- }
-
- public String getSDKOSBranch() {
- if (sdkOSBranch == null){
- return "";
- }
-
- return sdkOSBranch;
+ @SuppressWarnings("rawtypes")
+ public Set getSupportedFeatures() {
+ return sdkFeatures;
}
public IPath getToolsPath() {
@@ -480,207 +202,106 @@
return "";
}
- public String getVendor() {
- String[] parts = getName().split("\\.");
- if (parts.length == 3)
- return parts[1];
-
- return "";
+
+
+ public boolean isEnabled() {
+ if (!SDKCorePlugin.SUPPORTS_SBSV1_BUILDER &&
+ (getOSVersion().getMajor() < 9 ||
+ (getOSVersion().getMajor() == 9 && getOSVersion().getMinor() <= 4))){
+ return false;
+ }
+ return enabled;
}
- public List<IDefine> getProjectVariantHRHDefines() {
- // this is deprecated. should use the one in ISymbianBuildContext instead.
-
- long hrhTime = 0;
- if (getPrefixFile() != null){
- hrhTime = getPrefixFile().lastModified();
- }
+ /**
+ * Remove single line C-style comments, multi-line C++-style comments and blank lines
+ */
+ public static String removeComments(String aIntermediateContent) {
+ // Strip out comments. There are uncovered cases here where this regex approach fails
+ // when combining cpp and c style comments.
+ String lNewline = "(\\r\\n|\\r|\\n)";
- if (variantHRHMacros == null || variantHRHMacros.size() == 0 || hrhTime != hrhFileTimeStamp) {
- synchronized (this) {
- hrhFileTimeStamp = hrhTime; // update time stamp to latest
- List<IDefine> macros = new ArrayList<IDefine>();
- Map<String, IDefine> namedMacros = new HashMap<String, IDefine>();
- File file = getPrefixFile();
- if (file != null){
-
- // Note: MacroScanner argument 'BasicIncludeFileLocation' can take
- // paramaters for user/system includes, however, for getting macros
- // from the prefix file it should not be necessary.
- MacroScanner scanner = new MacroScanner(
- new BasicIncludeFileLocator(null, null),
- DefaultModelDocumentProvider.getInstance(),
- DefaultTranslationUnitProvider.getInstance());
- scanner.scanFile(file);
+ // Note: we used to use the regex below for cpp comments (from http://ostermiller.org/findcomment.html )
+ // String lCppStyleComments = "/\\*(?:.|[\\n\\r])*?\\*/";
+ // but it throws StackOverFlowExceptions for large inputs
+ // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5050507
+ // suggests that regex OR is the cause - therefore use dotall mode: (?s) instead
- List<IDefine> scannedMacros = (List<IDefine>)scanner.getMacroDefinitions();
- for (IDefine scannedMacro : scannedMacros){
- // we don't want duplicate macros, so check to see if it's already there.
- // if it is, remove it and then add the newer one. this is consistent with
- // how it would be from a compiler standpoint.
- IDefine macro = namedMacros.get(scannedMacro.getName());
- if (macro != null) {
- macros.remove(macro);
- }
-
- macros.add(scannedMacro);
- namedMacros.put(scannedMacro.getName(), scannedMacro);
- }
-
- List<String> variantCFGMacros = getVariantCFGMacros();
- for (String cfgMacros : variantCFGMacros){
- // we don't want duplicate macros, so check to see if it's already there.
- IDefine existingMacro = namedMacros.get(cfgMacros);
- if (existingMacro != null) {
- macros.remove(existingMacro);
- }
-
- IDefine macro = DefineFactory.createSimpleFreeformDefine(cfgMacros);
- macros.add(macro);
- namedMacros.put(macro.getName(), macro);
- }
- }
- variantHRHMacros = macros;
- }
+ String lCStyleComments = "(?m)//(.*)$";
+ String lCppStyleComments = "(?s)/\\*.*?\\*/";
+ String lBlankLines = "(?m)(^(\\s)*$"+lNewline+")+";
+ aIntermediateContent = aIntermediateContent.replaceAll(lCStyleComments, "");
+ aIntermediateContent = aIntermediateContent.replaceAll(lCppStyleComments, "");
+ aIntermediateContent = aIntermediateContent.replaceAll(lBlankLines,"");
+ return aIntermediateContent;
+ }
+
+ public void scanSDK(){
+ ISBSv1BuildInfo sbsv1BuildInfo = (ISBSv1BuildInfo)getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER);
+
+ sbsv1BuildInfo.clearPlatformMacros();
+
+ if (!setDataFromManifestXML()){
+ //need to scan SDK files for OS version
+ scanSDKForVersionInfo();
}
- return variantHRHMacros;
- }
-
- public List<String> getProjectVariantHRHMacros() {
- // this API is deprecated, so don't cache this
- List<IDefine> defines = getProjectVariantHRHDefines();
- List<String> macros = new ArrayList<String>(defines.size());
- for (IDefine define : defines) {
- macros.add(define.getDefinitionText());
- }
- return macros;
+ setSupportFeatures();
}
-
- @SuppressWarnings("unchecked")
- public List<String> getVariantCFGMacros(){
-
- List<String> variantCFGMacros = new ArrayList<String>();
- File epocRoot = new File(getEPOCROOT());
- File variantCfg;
- variantCfg = new File(epocRoot, SPP_VARIANT_CFG_FILE);
- if (!variantCfg.exists()) {
- variantCfg = new File(epocRoot, VARIANT_CFG_FILE);
- if (!variantCfg.exists())
- return Collections.EMPTY_LIST;
- }
-
- try {
- char[] cbuf = new char[(int) variantCfg.length()];
- Reader reader = new FileReader(variantCfg);
- reader.read(cbuf);
- reader.close();
- String[] lines = new String(cbuf).split("\r\n|\r|\n");
- for (int i = 0; i < lines.length; i++) {
- // skip comments and blank lines
- String line = removeComments(lines[i]);
- if (line.matches("\\s*#.*") || line.trim().length() == 0)
- continue;
-
- // parse the variant line, which is an EPOCROOT-relative
- // path to a bldvariant.hrh file
- Matcher matcher = VARIANT_HRH_LINE_PATTERN.matcher(line);
- if (matcher.matches()) {
- continue; // Skip this it's the file
- } else {
- // all other patterns are assumed to be macro
- variantCFGMacros.add(line.trim());
- }
- }
- } catch (IOException e) {
- }
-
- return variantCFGMacros;
+
+ public void setBuildInfo(ISDKBuildInfo buildInfo, String builderId) {
+ buildInfoMap.put(builderId, buildInfo);
}
-
-
- public List<String> getSupportedTargetTypes() {
-
- synchronized (supportedTargetTypesList) {
- if (supportedTargetTypesList.size() > 0){
- return supportedTargetTypesList;
- }
-
- File epocRoot = new File(getEPOCROOT());
- File targetTypePM = new File(epocRoot, TARGETTYPE_PM_FILE);
- if (!targetTypePM.exists())
- return supportedTargetTypesList;
-
- // greedy match means the filename is in the last group
- try {
- char[] cbuf = new char[(int) targetTypePM.length()];
- Reader reader = new FileReader(targetTypePM);
- reader.read(cbuf);
- reader.close();
- String[] lines = new String(cbuf).split("\r|\r\n|\n");
- for (int i = 0; i < lines.length; i++) {
- // skip comments and blank lines
- String line = removeComments(lines[i]);
- if (line.matches("\\s*#.*") || line.trim().length() == 0)
- continue;
-
- // parse current line... the slitting could be done better with more efficent reg exp....
- line = line.trim();
- line = line.replaceAll(" ", "");
- if (line.endsWith("=>{")){
- String[] lineSplit = line.split("=>");
- if (lineSplit.length == 2 && Character.isLetter(lineSplit[0].charAt(0))){
- supportedTargetTypesList.add(lineSplit[0]);
- }
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
+
+ public void setEnabled(boolean enable) {
+ enabled = enable;
+ }
- return supportedTargetTypesList;
+ public void setEPOCROOT(String epocRoot) {
+ deviceEntry.setEpocroot(epocRoot);
}
-
- public boolean isDefaultSDK() {
- if (deviceEntry == null) {
- return false;
- }
-
- if (deviceEntry.getDefault().equals(DefaultType.YES_LITERAL)){
- return true;
- } else {
- return false;
+
+ public void setName(String name) {
+ if (deviceEntry != null) {
+ deviceEntry.setName(name);
}
}
- public boolean isValid() {
- // TODO: What makes us valid? We only need a valid devices.xml entry
- // to do a build, but we need the other data for most everything else.
- // this should probably return false unless we get everything we need.
- return false;
+ public void setOSVersion(Version osVer) {
+ this.osVersion = osVer;
+ }
+
+ public void setPrefixFile(IPath prefixFile, String builderId) {
+ if (prefixFile == null)
+ return;
+ File file = prefixFile.toFile();
+ prefixFileMap.put(builderId, file);
}
- public List<String> validationErrors() {
- // TODO return error strings for everything that is not setup
- // properly.
- return null;
+ public void setUniqueId(String id) {
+ deviceEntry.setId(id);
}
- private boolean setDataFromManifestXML(){
- if (hasManifestXML()){
-
- if (processManifest(new File(deviceEntry.getEpocroot(), MANIFEST_XML_LOCATION))){
- return true;
- } else {
- return false;
- }
-
- } else {
- return false;
- }
+ /* (non-Javadoc)
+ * @see java.lang.Object#toString()
+ */
+ @Override
+ public String toString() {
+ return getUniqueId();
}
+ private SBSv1BuildInfo createSBSv1BuildInfo() {
+ SBSv1BuildInfo buildInfo = new SBSv1BuildInfo(this);
+ setBuildInfo(buildInfo, ISymbianBuilderID.SBSV1_BUILDER);
+ return buildInfo;
+ }
+
+ private SBSv2BuildInfo createSBSv2BuildInfo() {
+ SBSv2BuildInfo buildInfo = new SBSv2BuildInfo(this);
+ setBuildInfo(buildInfo, ISymbianBuilderID.SBSV2_BUILDER);
+ return buildInfo;
+ }
+
private boolean hasManifestXML(){
File manifestXML = new File(deviceEntry.getEpocroot(), MANIFEST_XML_LOCATION);
if (manifestXML.exists()){
@@ -692,7 +313,6 @@
/**
* Parses the epoc32\kit\manifest.xml file and add the relavant SDK information
- * Currently this is just a bunch of hackish code to parse the simplest manifest.xml file that really does nothing useful at all
* For a manifest to be properly mapped you need at minimum: epocRoot, id, and label filled out.
*/
@@ -703,71 +323,59 @@
// XML Valiation code from: http://java.sun.com/developer/technicalArticles/xml/validationxpath/
try {
- // Parse an XML document into a DOM tree.
- DocumentBuilder parser =
- DocumentBuilderFactory.newInstance().newDocumentBuilder();
- doc = parser.parse(manifestFile);
-
- // Create a SchemaFactory capable of understanding WXS schemas.
- SchemaFactory factory =
- SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
-
- // Load a WXS schema, represented by a Schema instance.
- String tempStr = manifestFile.getAbsolutePath();
- int index = tempStr.lastIndexOf(File.separator);
- tempStr = tempStr.substring(0, index);
- tempStr += File.separator + "sdkManifest.xsd";
- Source schemaFile = new StreamSource(new File(tempStr));
- Schema schema = factory.newSchema(schemaFile);
-
- // Create a Validator object, which can be used to validate
- // an instance document.
- Validator validator = schema.newValidator();
+ // Parse an XML document into a DOM tree.
+ DocumentBuilder parser =
+ DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ doc = parser.parse(manifestFile);
+
+ // Create a SchemaFactory capable of understanding WXS schemas.
+ SchemaFactory factory =
+ SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+
+ // Load a WXS schema, represented by a Schema instance.
+ String tempStr = manifestFile.getAbsolutePath();
+ int index = tempStr.lastIndexOf(File.separator);
+ tempStr = tempStr.substring(0, index);
+ tempStr += File.separator + "sdkManifest.xsd";
+ Source schemaFile = new StreamSource(new File(tempStr));
+ Schema schema = factory.newSchema(schemaFile);
+
+ // Create a Validator object, which can be used to validate
+ // an instance document.
+ Validator validator = schema.newValidator();
+
+ // Validate the DOM tree.
+ // Don't use new DOMSource(doc) for manifest, that requires namespace
+ // and some (e.g. S60) manifest.xml says xsi:noNamespaceSchemaLocation.
+ // Failure will show in Java 6
+ // see detail in XERCESJ-1163 boog report
+ // http://issues.apache.org/jira/browse/XERCESJ-1163?page=all
+ validator.validate(new StreamSource(manifestFile));
- // Validate the DOM tree.
- // Don't use new DOMSource(doc) for manifest, that requires namespace
- // and some (e.g. S60) manifest.xml says xsi:noNamespaceSchemaLocation.
- // Failure will show in Java 6
- // see detail in XERCESJ-1163 boog report
- // http://issues.apache.org/jira/browse/XERCESJ-1163?page=all
- validator.validate(new StreamSource(manifestFile));
-
- } catch (ParserConfigurationException e) {
- ResourcesPlugin.getPlugin().getLog().log(new Status(IStatus.ERROR, SDKCorePlugin.getPluginId(), IStatus.ERROR, "SDK Manifest could not be parsed correctly.", e));
- hasParseError = true;
- } catch (SAXException e) {
- ResourcesPlugin.getPlugin().getLog().log(new Status(IStatus.ERROR, SDKCorePlugin.getPluginId(), IStatus.ERROR, "SDK Manifest failed schema validation.", e));
- hasParseError = true;
- // exception handling - document not valid!
- } catch (IOException e) {
- // This SDK has not manifest, don't post error
- hasParseError = true;
- }
+ } catch (ParserConfigurationException e) {
+ ResourcesPlugin.getPlugin().getLog().log(new Status(IStatus.ERROR, SDKCorePlugin.getPluginId(), IStatus.ERROR, "SDK Manifest could not be parsed correctly.", e));
+ hasParseError = true;
+ } catch (SAXException e) {
+ ResourcesPlugin.getPlugin().getLog().log(new Status(IStatus.ERROR, SDKCorePlugin.getPluginId(), IStatus.ERROR, "SDK Manifest failed schema validation.", e));
+ hasParseError = true;
+ // exception handling - document not valid!
+ } catch (IOException e) {
+ // This SDK has not manifest, don't post error
+ hasParseError = true;
+ }
- // if there were any parse errors, throw an exception so that suitable defaults
- // can be calculated from the devices.xml entry.
- if (hasParseError) {
- return false;
- }
-
- try {
+ // if there were any parse errors, throw an exception so that suitable defaults
+ // can be calculated from the devices.xml entry.
+ if (hasParseError) {
+ return false;
+ }
+
+ try {
Node node = XPathAPI.selectSingleNode(doc, "sdk/paths");
for (NodeIterator nodeIter = XPathAPI.selectNodeIterator(doc, "sdk"); (node = nodeIter.nextNode()) != null;) {
NamedNodeMap attribs = node.getAttributes();
- node = XPathAPI.selectSingleNode(doc, "sdk/@id");
- if (node != null) {
- // currently ignored...
- String tempStr = node.getNodeValue();
-
-
- }
-
- // name is currently ignored
- node = attribs.getNamedItem("name");
- String sdkFamily = node == null ? null : node.getNodeValue();
-
node = XPathAPI.selectSingleNode(doc, "sdk/paths/@root");
String path = node == null ? null : node.getNodeValue();
if (null != path) {
@@ -782,68 +390,30 @@
// Loop through the sdk:paths:root elements and pick out check all the 'id' attriutes for matches...
attribs = node.getAttributes();
String rootType = attribs.getNamedItem("id").getNodeValue();
- if (rootType.equals(PATH_ID_INCLUDEDIR)) {
- node = attribs.getNamedItem("path");
- /*if (null!=node){
- setIncludePath(new Path(path + node.getNodeName()));
- }*/
- } else if (rootType.equals(RELEASE)) {
- node = attribs.getNamedItem("path");
- /*if (null!=node){
- setReleaseRoot(new Path(path + node.getNodeName()));
- }*/
- } else if (rootType.equals(PATH_ID_TOOLSDIR)) {
- node = attribs.getNamedItem("path");
- /*if (null!=node){
- setToolsPath(new Path(path + node.getNodeName()));
- }*/
- } else if (rootType.equals(PATH_ID_SRCDIR)) {
- node = attribs.getNamedItem("path");
- /*if (null!=node){
- setSourcePath(new Path(path + node.getNodeName()));
- }*/
- } /*
- else if (rootType.equals(PATH_ID_EPOC32DIR)) {
- node = attribs.getNamedItem("path");
- if (null!=node){
- set(new File(path, node.getNodeName()));
- }
- }
- */
+ if (rootType.equals(PATH_ID_INCLUDEDIR)) {
+ node = attribs.getNamedItem("path");
+ /*if (null!=node){
+ setIncludePath(new Path(path + node.getNodeName()));
+ }*/
+ } else if (rootType.equals(RELEASE)) {
+ node = attribs.getNamedItem("path");
+ /*if (null!=node){
+ setReleaseRoot(new Path(path + node.getNodeName()));
+ }*/
+ } else if (rootType.equals(PATH_ID_TOOLSDIR)) {
+ node = attribs.getNamedItem("path");
+ /*if (null!=node){
+ setToolsPath(new Path(path + node.getNodeName()));
+ }*/
+ } else if (rootType.equals(PATH_ID_SRCDIR)) {
+ node = attribs.getNamedItem("path");
+ /*if (null!=node){
+ setSourcePath(new Path(path + node.getNodeName()));
+ }*/
}
+ }
}
-
- node = XPathAPI.selectSingleNode(doc, "sdk/paths/license/@file");
- if (node != null){
- String licenseStr = node.getNodeValue();
- this.setLicenseFile(new File(path, licenseStr));
- }
- // Get the general SDK description...
- node = XPathAPI.selectSingleNode(doc, "sdk/description");
- if (null != node) {
- setSDKDescription(node.getTextContent());
- }
-
- // Get the build configuration to use...
- /*
- node = XPathAPI.selectSingleNode(doc, "sdk/buildConfig");
- if (null != node) {
- sdkManifest.setSDKBuildConfig(node.getTextContent());
- this.id = sdkManifest.getSDKBuildConfig();
- }
- */
-
- // Get the SDK Version...
- node = XPathAPI.selectSingleNode(doc, "sdk/sdkVersion");
- if (null != node) {
- try {
- setSDKVersion(new Version(node.getTextContent()));
- }
- catch (IllegalArgumentException e){
- // ignored...improper format
- }
- }
-
+
// Get the osInfo
node = XPathAPI.selectSingleNode(doc, "sdk/osInfo");
if (null != node){
@@ -858,159 +428,26 @@
// ignored...improper format
}
}
- node = attribs.getNamedItem("branch");
- if (null != node)
- {
- if (getOSVersion().getMajor() == 9){
- setOSSDKBranch("");
- }else {
- setOSSDKBranch(node.getNodeValue());
- }
- }
- }
- // Get the creation time/date
- node = XPathAPI.selectSingleNode(doc, "sdk/createdDate");
- if (null != node){
- try {
- // Get the default MEDIUM/SHORT DateFormat
- DateFormat format = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.SHORT);
- setCreateDate(format.parse(node.getTextContent()));
- }
- catch (ParseException pe) {
- // ignore, we're just using the date for info, not critical if missing
- }
}
- // Get the publisher
- node = XPathAPI.selectSingleNode(doc, "sdk/publisher");
- if (null != node){
- attribs = node.getAttributes();
- node = attribs.getNamedItem("link");
- if (null != node)
- {
- try {
- setPublisherURL(new URL(node.getNodeValue()));
- }
- catch (IllegalArgumentException e){
- // ignored...improper format
- }
+ // Get the SDK Version...
+ node = XPathAPI.selectSingleNode(doc, "sdk/sdkVersion");
+ if (null != node) {
+ try {
+ // ignored
}
- node = attribs.getNamedItem("logo");
- /*if (null != node){
- setPublisherLogo(new File(path, node.getNodeValue()));
- }*/
- node = attribs.getNamedItem("name");
- if (null != node)
- {
- setPublisherName(node.getNodeValue());
- }
- }
+ catch (IllegalArgumentException e){
+ // ignored...improper format
+ }
+ }
}
-
} catch (TransformerException e){
e.printStackTrace();
- } catch (MalformedURLException e){
- e.printStackTrace();
}
return true;
}
-
- public void setLicenseFile(File licenseFile) {
- this.licenseFile = licenseFile;
- }
- public void setCreateDate(Date createDate) {
- this.createDate = createDate;
- }
-
-
- public void setIsDefaultSDK(boolean isDefault) {
- if (isDefault){
- deviceEntry.setDefault(DefaultType.YES_LITERAL);
- } else {
- deviceEntry.setDefault(DefaultType.NO_LITERAL);
- }
-
- }
-
- public void setOSSDKBranch(String branch) {
- sdkOSBranch = branch;
-
- }
-
- public void setOSVersion(Version osVer) {
- this.osVersion = osVer;
-
- }
-
- public void setPrefixFile(IPath prefixFile) {
- this.prefixFile = new File(prefixFile.toOSString());
- }
-
-
- public void setPublisherURL(URL publisherURL) {
- this.publisherURL = publisherURL;
- }
-
- public void setSDKVersion(Version sdkVers) {
- sdkVersion = sdkVers;
- }
-
- public void setSDKDescription(String sdkDescription) {
- this.sdkDescription = sdkDescription;
- }
-
- public void setPublisherName(String publisherName) {
- this.publisherName = publisherName;
- }
-
- private boolean deriveOSVersionFromDeviceId(){
- boolean foundOSVersion = false;
-
- if (getUniqueId().equals("S60_3rd")){
- setOSVersion(new Version("9.1.0"));
- setSDKVersion(new Version("3.0.0"));
- foundOSVersion = true;
- } else if (getUniqueId().equals("UIQ3") || getUniqueId().equals("UIQ_3_PB2")){
- setOSVersion(new Version("9.1.0"));
- setSDKVersion(new Version("3.0.0"));
- foundOSVersion = true;
- } else if (getUniqueId().equals("Series60_1_2_CW")){
- setOSVersion(new Version("6.1.0"));
- setSDKVersion(new Version("1.2.0"));
- foundOSVersion = true;
- } else if (getUniqueId().equals("Series60_2_0_CW")){
- setOSVersion(new Version("7.0.0"));
- setSDKVersion(new Version("2.0.0"));
- foundOSVersion = true;
- } else if (getUniqueId().equals("Series60_v21_CW")){
- setOSVersion(new Version("7.0.0"));
- setSDKVersion(new Version("2.1.0"));
- foundOSVersion = true;
- } else if (getUniqueId().equals("S60_2nd_FP2_CW")){
- setOSVersion(new Version("8.0.0"));
- setSDKVersion(new Version("2.6.0"));
- setOSSDKBranch(EKA1_A_BRANCH_IDENTIFIER);
- foundOSVersion = true;
- } else if (getUniqueId().equals("S60_2nd_FP3") || getUniqueId().equals("S60_2nd_FP3_CW") || getUniqueId().equals("S60_2nd_FP3_B")){
- setOSVersion(new Version("8.1.0"));
- setSDKVersion(new Version("2.8.0"));
- setOSSDKBranch(EKA1_A_BRANCH_IDENTIFIER);
- foundOSVersion = true;
- } else if (getUniqueId().equals("UIQ_21")){
- setOSVersion(new Version("7.0.15"));
- setSDKVersion(new Version("2.1.0"));
- foundOSVersion = true;
- } else if (getUniqueId().equals("Series80_DP2_0_SDK_CW")){
- setOSVersion(new Version("7.0.0"));
- setSDKVersion(new Version("2.0.0"));
- foundOSVersion = true;
- }
- return foundOSVersion;
-
- }
-
/**
* Scans the SDK's epoc32\data\buildinfo.txt file and tries to build the Version
* and branch identifiers. This should not be called when a manifest.xml file exits
@@ -1044,31 +481,18 @@
if (versionTokens[2].toUpperCase().contains("TB92SF")){
setOSVersion(new Version("9.5.0"));
- setSDKVersion(new Version("5.2.0"));
break;
} else if (versionTokens[2].toUpperCase().contains("TB101SF")){
setOSVersion(new Version("9.6.0"));
- setSDKVersion(new Version("6.0.0"));
break;
} else if (versionTokens[2].toUpperCase().contains("TB102SF")){
setOSVersion(new Version("9.6.0"));
- setSDKVersion(new Version("6.0.0"));
break;
}
else if (versionTokens[2].lastIndexOf("v") > 0){
int index = versionTokens[2].lastIndexOf("v");
String osVersionString = versionTokens[2].substring(index+1, versionTokens[2].length());
- if (osVersionString.endsWith(EKA1_A_BRANCH_IDENTIFIER) ||
- osVersionString.endsWith(EKA2_B_BRANCH_IDENTIFIER) ||
- osVersionString.endsWith(EKA1_S_BRANCH_IDENTIFIER)){
-
- String branch = osVersionString.substring(osVersionString.length()-1, osVersionString.length());
- if (branch != null){
- setOSSDKBranch(branch);
- }
- }
-
// Set the version, split on alphanumeric to get rid of any junk at the end
String[] tempStr = osVersionString.split("[a-zA-Z_]");
if (tempStr.length != 0){
@@ -1089,178 +513,82 @@
}
- /* (non-Javadoc)
- * @see java.lang.Object#toString()
- */
- @Override
- public String toString() {
- return getUniqueId();
- }
-
- /**
- * Get the full path to the prefix file defined under \epoc32\tools\variant\variant.cfg
- * @return A path object, or null if the variant.cfg does not exist. This routine does not check to see if the returned path exists.
- */
- public IPath getPrefixFromVariantCfg(){
- File epocRoot = new File(getEPOCROOT());
- File variantCfg;
- variantCfg = new File(epocRoot, SPP_VARIANT_CFG_FILE);
- if (!variantCfg.exists()) {
- variantCfg = new File(epocRoot, VARIANT_CFG_FILE);
- if (!variantCfg.exists())
- return null;
+ private boolean setDataFromManifestXML(){
+ if (hasManifestXML()){
+
+ if (processManifest(new File(deviceEntry.getEpocroot(), MANIFEST_XML_LOCATION))){
+ return true;
+ } else {
+ return false;
+ }
+
+ } else {
+ return false;
}
-
- String variantDir = null;
- String variantFile = null;
- try {
- char[] cbuf = new char[(int) variantCfg.length()];
- Reader reader = new FileReader(variantCfg);
- reader.read(cbuf);
- reader.close();
- String[] lines = new String(cbuf).split("\r\n|\r|\n");
- for (int i = 0; i < lines.length; i++) {
- // skip comments and blank lines
- String line = removeComments(lines[i]);
- if (line.matches("\\s*#.*") || line.trim().length() == 0)
- continue;
-
- // parse the variant line, which is an EPOCROOT-relative
- // path to a bldvariant.hrh file
- Matcher matcher = VARIANT_HRH_LINE_PATTERN.matcher(line);
- if (matcher.matches()) {
- variantDir = matcher.group(1);
- variantFile = matcher.group(3);
- File variantFullPathFile = new File(epocRoot, variantDir + File.separator + variantFile);
- IPath variantFilePath = new Path(PathUtils.convertPathToUnix(variantFullPathFile.getAbsolutePath()));
- return variantFilePath;
- }
- }
- } catch (IOException e) {
- }
-
- return null; // can't find the file...
}
- /**
- * Remove single line C-style comments, multi-line C++-style comments and blank lines
- */
- private static String removeComments(String aIntermediateContent) {
- // Strip out comments. There are uncovered cases here where this regex approach fails
- // when combining cpp and c style comments.
- String lNewline = "(\\r\\n|\\r|\\n)";
-
- // Note: we used to use the regex below for cpp comments (from http://ostermiller.org/findcomment.html )
- // String lCppStyleComments = "/\\*(?:.|[\\n\\r])*?\\*/";
- // but it throws StackOverFlowExceptions for large inputs
- // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5050507
- // suggests that regex OR is the cause - therefore use dotall mode: (?s) instead
-
- String lCStyleComments = "(?m)//(.*)$";
- String lCppStyleComments = "(?s)/\\*.*?\\*/";
- String lBlankLines = "(?m)(^(\\s)*$"+lNewline+")+";
- aIntermediateContent = aIntermediateContent.replaceAll(lCStyleComments, "");
- aIntermediateContent = aIntermediateContent.replaceAll(lCppStyleComments, "");
- aIntermediateContent = aIntermediateContent.replaceAll(lBlankLines,"");
- return aIntermediateContent;
- }
-
- public void setEPOCROOT(String epocRoot) {
- deviceEntry.setEpocroot(epocRoot);
- }
-
- public void setName(String name) {
- deviceEntry.setName(name);
+ private void setSupportFeatures() {
+ scanForWINSCW_UREL();
+ scanForWINSCW_UDEB();
+ scanForAvkon();
+ sdkFeatures.add(ISymbianSDKFeatures.IS_EKA2);
}
- public void setUniqueID(String id) {
- deviceEntry.setId(id);
- }
-
- @Deprecated
- public boolean getRequiresRestart() {
- return false;
- }
-
- public String getPublisherName() {
- return publisherName;
- }
-
- public boolean isEKA1() {
- return !isEKA2() && getOSVersion().getMajor() < 9 && getOSVersion().getMajor() >= 6;
- }
-
- public boolean isEKA2() {
- if (getOSVersion().getMajor() >= 9) {
- return true;
+ /**
+ * Check if avkon is a supported feature.
+ */
+ private void scanForAvkon() {
+ String armv5UDEBFullPathStr = getEPOCROOT();
+ armv5UDEBFullPathStr += ARMV5_UDEB_DIR;
+ IPath armv5UDEBPath = new Path(armv5UDEBFullPathStr);
+ if (armv5UDEBPath != null && armv5UDEBPath.toFile().exists()){
+ if (armv5UDEBPath.append("avkon.dll").toFile().exists()){
+ sdkFeatures.add(ISymbianSDKFeatures.IS_AVKON_SUPPORTED);
+ return;
+ }
+ // not there, check winscw
+ String winscwURELFullPathStr = getEPOCROOT();
+ winscwURELFullPathStr += WINSCW_UREL_DIR;
+ IPath winscwURELPath = new Path(winscwURELFullPathStr);
+ if (winscwURELPath != null && winscwURELPath.toFile().exists()){
+ if (winscwURELPath.append("avkon.dll").toFile().exists()){
+ sdkFeatures.add(ISymbianSDKFeatures.IS_AVKON_SUPPORTED);
+ return;
+ }
+ }
}
- if (getOSVersion().getMajor() == 8
- && getSDKOSBranch().equals(ISymbianSDK.EKA2_B_BRANCH_IDENTIFIER)){
- return true;
- }
- return false;
- }
-
- public boolean isS60() {
- return getFamily().equals(ISymbianSDK.S60_FAMILY_ID)
- || getFamily().equals(ISymbianSDK.SERIES60_FAMILY_ID);
- }
-
- public void setSupportsWINSCW_UREL(boolean isSupported) {
- supportsWINSCW_UREL = isSupported;
- }
-
- public boolean supportsWINSCW_UREL() {
- return supportsWINSCW_UREL;
}
/**
* Check to see whether or not we should support WINSCW UREL
*/
private void scanForWINSCW_UREL(){
- supportsWINSCW_UREL = false;
String winscwURELFullPathStr = getEPOCROOT();
winscwURELFullPathStr += WINSCW_UREL_DIR;
IPath winscwURELPath = new Path(winscwURELFullPathStr);
if (winscwURELPath != null && winscwURELPath.toFile().exists()){
if (winscwURELPath.append("epoc.exe").toFile().exists()){
if (winscwURELPath.append("euser.dll").toFile().exists()){
- supportsWINSCW_UREL = true;
+ sdkFeatures.add(ISymbianSDKFeatures.IS_WINSCW_UREL_SUPPORTED);
}
}
}
}
-
- /* (non-Javadoc)
- * @see com.nokia.carbide.cpp.sdk.core.ISymbianSDK#getBSFCatalog()
+
+ /**
+ * Check to see whether or not we should support WINSCW UDEB
*/
- public IBSFCatalog getBSFCatalog() {
- synchronized (this) {
- if (bsfCatalog == null) {
- bsfCatalog = BSFCatalogFactory.createCatalog(this);
+ private void scanForWINSCW_UDEB(){
+ String winscwURELFullPathStr = getEPOCROOT();
+ winscwURELFullPathStr += WINSCW_UDEB_DIR;
+ IPath winscwURELPath = new Path(winscwURELFullPathStr);
+ if (winscwURELPath != null && winscwURELPath.toFile().exists()){
+ if (winscwURELPath.append("epoc.exe").toFile().exists()){
+ if (winscwURELPath.append("euser.dll").toFile().exists()){
+ sdkFeatures.add(ISymbianSDKFeatures.IS_WINSCW_UDEB_SUPPORTED);
+ }
}
}
- return bsfCatalog;
- }
-
- /* (non-Javadoc)
- * @see com.nokia.carbide.cpp.sdk.core.ISymbianSDK#getBSFCatalog()
- */
- public ISBVCatalog getSBVCatalog() {
- synchronized (this) {
- if (sbvCatalog == null) {
- sbvCatalog = SBVCatalogFactory.createCatalog(this);
- }
- }
- return sbvCatalog;
}
- public void setPreviouslyScanned(boolean wasScanned) {
- this.wasScanned = wasScanned;
- }
-
- public boolean isPreviouslyScanned() {
- return wasScanned;
- }
-
}
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/processes/CheckS60CustKitSupport.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/processes/CheckS60CustKitSupport.java Wed Aug 25 12:42:09 2010 -0500
@@ -138,9 +138,6 @@
helpCompilerNames = new String[] { HELP_COMPILER_WIN32, HELP_COMPILER_PERL };
} else {
- // TODO: the infrastructure for the techview/bldhelp.mk is a total mess
- // currently, and it also appears that help is obsolete in recent devkits,
- // so just drop this
if (!SBSv2Utils.enableSBSv1Support() && isSBSv2Project(template))
return null;
@@ -178,7 +175,7 @@
// the 3.2 CustKit
// has the middleware folder but doesn't use the new build
// macros for include paths
- if (sdk.getSDKVersion().getMajor() >= 5 && middleWareInclude.exists()) {
+ if (middleWareInclude.exists()) {
// add symbol as at least one build config is a CustKit
S60_50_Macros_String = S60_INC_MACROS;
break;
@@ -187,7 +184,7 @@
middleWareInclude = new File(sdk.getEPOCROOT(), S60_MIDDWARE_INC2);
File sfoPath = new File(sdk.getEPOCROOT(), S60_SF_FOLDER);
// check for middleware paths and /sf path (if SFO kit)
- if (sdk.getSDKVersion().getMajor() >= 5 && middleWareInclude.exists() && sfoPath.exists()) {
+ if (middleWareInclude.exists() && sfoPath.exists()) {
// add symbol as at least one build config is a CustKit
S60_50_Macros_String = S60_INC_MACROS_SF;
break;
@@ -195,7 +192,7 @@
// try newer middleware paths moved to app layer includes
- if (sdk.getSDKVersion().getMajor() >= 5 && middleWareInclude.exists()) {
+ if (middleWareInclude.exists()) {
// add symbol as at least one build config is a CustKit
File domainPath = new File(sdk.getEPOCROOT(), S60_DOMAND_OSTEXT_PLAT_PATHS);
if (domainPath.exists()){
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/scripting/SymbianSDKs.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/scripting/SymbianSDKs.java Wed Aug 25 12:42:09 2010 -0500
@@ -29,7 +29,6 @@
private static final String KEY_SDK_ID = "KEY_SDK_ID";
private static final String KEY_SDK_EPOCROOT = "KEY_SDK_EPOCROOT";
- private static final String KEY_SDK_NAME = "KEY_SDK_NAME";
static private ISDKManager getSDKManager(){
return SDKCorePlugin.getSDKManager();
@@ -41,12 +40,10 @@
for (ISymbianSDK sdk : sdkList){
Map<String,String> mp = new HashMap<String, String>();
mp.put(KEY_SDK_ID, sdk.getUniqueId());
- mp.put(KEY_SDK_NAME, sdk.getName());
mp.put(KEY_SDK_EPOCROOT, sdk.getEPOCROOT());
sdkMapArray.add(mp);
}
-
return sdkMapArray.toArray(new HashMap<?, ?>[sdkMapArray.size()]);
}
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/xml/DevicesLoader.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/xml/DevicesLoader.java Wed Aug 25 12:42:09 2010 -0500
@@ -109,11 +109,11 @@
boolean deviceExists = false;
for (Iterator i = devicesList.iterator(); i.hasNext();) {
DeviceType currDevice = (DeviceType)i.next();
- if (currDevice.getId().equals(sdk.getUniqueId())){
+ if (currDevice.getId().equals(sdk.getUniqueId()) ||
+ currDevice.getEpocroot().toLowerCase().equals(sdk.getEPOCROOT().toLowerCase())){
deviceExists = true;
currDevice.setEpocroot(sdk.getEPOCROOT());
currDevice.setId(sdk.getUniqueId());
- currDevice.setName(sdk.getName());
if (currDevice.getUserdeletetable() != null){
currDevice.setUserdeletable(currDevice.getUserdeletetable());
}
@@ -132,12 +132,7 @@
DeviceType newDeviceEntry = DevicesFactory.eINSTANCE.createDeviceType();
newDeviceEntry.setId(sdk.getUniqueId());
newDeviceEntry.setEpocroot(sdk.getEPOCROOT());
- newDeviceEntry.setName(sdk.getName());
- if (sdk.isDefaultSDK() == true){
- newDeviceEntry.setDefault(DefaultType.YES_LITERAL);
- } else {
- newDeviceEntry.setDefault(DefaultType.NO_LITERAL);
- }
+ newDeviceEntry.setDefault(DefaultType.NO_LITERAL);
newDeviceEntry.setUserdeletable("no");
newDeviceEntry.setUserdeletetable(null); // just to be sure it doens't get written out
devicesList.add(newDeviceEntry); // Add the new/modified config to the list so new data is written
@@ -172,15 +167,7 @@
// Set the input sdk paramater's default to whatever it's default value is
for (Iterator i = devicesList.iterator(); i.hasNext();) {
DeviceType currDevice = (DeviceType)i.next();
- if (currDevice.getId().equals(sdk.getUniqueId())){
- if (sdk.isDefaultSDK()){
- currDevice.setDefault(DefaultType.YES_LITERAL);
- } else {
- currDevice.setDefault(DefaultType.NO_LITERAL);
- }
- }else {
- currDevice.setDefault(DefaultType.NO_LITERAL);
- }
+ currDevice.setDefault(DefaultType.NO_LITERAL);
}
// write to disk
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISDKBuildInfo.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,37 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+*/
+
+package com.nokia.carbide.cpp.sdk.core;
+
+import java.util.List;
+
+/**
+ * Interface for build related information of a Symbian SDK.
+ * @since 3.0
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface ISDKBuildInfo {
+
+ /**
+ * Returns all available build configurations for a Symbian SDK.
+ * @return list of ISymbianBuildContext
+ */
+ List<ISymbianBuildContext> getAllBuildConfigurations();
+
+ /**
+ * Returns platform-filtered build configurations for a Symbian SDK.
+ * @return list of ISymbianBuildContext
+ */
+ List<ISymbianBuildContext> getFilteredBuildConfigurations();
+
+}
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISDKManager.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISDKManager.java Wed Aug 25 12:42:09 2010 -0500
@@ -17,9 +17,6 @@
import org.osgi.framework.Version;
-import com.nokia.carbide.cpp.internal.api.sdk.BuildPlat;
-import com.nokia.carbide.cpp.internal.api.sdk.SymbianMacroStore;
-
/**
* Interface to Symbian OS SDK's. Use this interface to get the list of all SDKs.
* @see ISymianSDK
@@ -86,53 +83,12 @@
void updateSDK(ISymbianSDK sdkId);
/**
- * Retrieves the instance of the Symbian Macro Store
- * @return
- */
- SymbianMacroStore getSymbianMacroStore();
-
- /**
- * Refresh the configuration cache that contains additional information that the devices.xml
- * data does not have, such as OS and SDK version.
+ * Refresh the configuration cache that contains Symbian SDK info such as 'id' and EPOCROOT
*
*/
public void updateCarbideSDKCache();
/**
- * Sets the default SDK attribute for the input SDK.
- * Sets all other sdks in devcies.xml to 'default=false'
- * @param sdk - ISymbianSDK object
- */
- public void setDefaultSDK(ISymbianSDK sdk);
-
-
- /**
- * Get whether or not the UI has enabled BSF scanning.
- * @return true if BSF scanning is enabled.
- */
- public boolean getBSFScannerEnabled();
-
- /**
- * Set whether or not build platforms should be added for SDKs that contain .bsf extensions.
- * @param enabled - When true, add BSF platforms.
- */
- public void enableBSFScanner(boolean enabled);
-
- /**
- * Sets the list of available build platforms
- * @param platList, a list of BuildPlat objects
- * @see BuildPlat
- */
- public void setPlatformList(List<BuildPlat> platList);
-
- /**
- * Get the list of all available built-in platforms
- * @return A list of BuildPlat objects
- * @see BuildPlat
- */
- public List<BuildPlat> getPlatformList();
-
- /**
* Get the absolute path to the devices.xml file.
* This first scans the windows registry under 'SOFTWARE\Symbian\EPOC SDKs\CommonPath'.
* If CommonPath is not defined then the system drive spec is used with the folder location at:
@@ -140,23 +96,8 @@
* @return File object. Clients should check File.exists() to make sure the file exists on disk.
*/
public File getDevicesXMLFile();
-
- /**
- * Getting installation path of CSL (GCCE) Arm Toolchain from the registry.
- * The method also check that the all required tools exist.
- * @return Path to tool binaries under installation path directory,
- * successful. Otherwise throws an exception.
- * @throws SDKEnvInfoFailureException
- */
- public String getCSLArmToolchainInstallPathAndCheckReqTools() throws SDKEnvInfoFailureException;
/**
- * Returns toolchain info for all detected RVCT tools.
- * @return Array of toolchain information objects.
- */
- public IRVCTToolChainInfo[] getInstalledRVCTTools();
-
- /**
* Add an ICarbideInstalledSDKChangeListener listener
* @param listener - An instance of ICarbideInstalledSDKChangeListener
*/
@@ -169,16 +110,6 @@
public void removeInstalledSdkChangeListener(ICarbideInstalledSDKChangeListener listener);
/**
- * Checks to see if the devices.xml on disk contains the same current information
- * as what we have in the sdk list. When not synchronized, when an SDK is add or removed
- * outside of Carbide for example, this means an SDK rescan operation is needed.
- * @return true if synchronized (no rescan needed), otherwise false (not up to date). Will also return true when devices.xml does not exist
- * @see ISDKManager.fireDevicesXMLChanged
- * @since 2.0
- */
- public boolean checkDevicesXMLSynchronized();
-
- /**
* Get the version of SBSv2 installed on the PATH.
* @param boolean forceScan - forceScan even if version already determined.
* @return A Verion object of the installed SBSv2 version. Version will be 0.0.0 if not found.
@@ -189,7 +120,8 @@
/**
* Retrieve the minimum supported version of SBSv2 for Carbide.c++
* @return Version
- * @since 2.3
+ * @since 3.0
*/
public Version getMinimumSupportedSBSv2Version();
+
}
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISymbianBuildContext.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISymbianBuildContext.java Wed Aug 25 12:42:09 2010 -0500
@@ -15,6 +15,7 @@
import java.io.File;
import java.util.List;
+import org.eclipse.cdt.core.settings.model.ICStorageElement;
import org.eclipse.core.runtime.IPath;
import com.nokia.carbide.cpp.epoc.engine.preprocessor.IDefine;
@@ -30,17 +31,7 @@
public interface ISymbianBuildContext {
/**
- * Platform constants
- */
- public static final String EMULATOR_PLATFORM = "WINSCW";
- public static final String GCCE_PLATFORM = "GCCE";
- public static final String ARMV5_PLATFORM = "ARMV5";
- public static final String ARMV6_PLATFORM = "ARMV6";
- public static final String ARMV5_ABIV2_PLATFORM = "ARMV5_ABIV2";
- public static final String ARMV6_ABIV2_PLATFORM = "ARMV6_ABIV2";
-
- /**
- * DEFAULT suffix to use for components that are specified as variant, but don't buid as variants. For example, plain ARMV5, when specified as
+ * DEFAULT suffix to use for components that are specified as variant, but don't build as variants. For example, plain ARMV5, when specified as
* as a FEATUREVARIANT, will build as ARMV5.DEFAULT
* @since 2.0
*/
@@ -66,15 +57,6 @@
*/
public String getPlatformString();
- /**
- * For Symbian Bianry Variation, platforms will be names <plat>.<variation>
- * So in some cases you need to know only the platforms that the variant is based on.
- * For example, a build platform name of "armv5.myvariant" will return "armv5".
- * @return The base platform string.
- * @see isSymbianBinaryVariation()
- * @since 2.0
- */
- public String getBasePlatformForVariation();
/**
* The debug or release target the platform is building for.
@@ -91,10 +73,9 @@
/**
* Get the implicit directory searched for *.def files by the DEFFILE statement.
- * @param isASSP true if targeting ASSP
* @return bare directory name (e.g. 'BWINS', 'BMARM', 'EABI')
*/
- public String getDefaultDefFileDirectoryName(boolean isASSP);
+ public String getDefaultDefFileDirectoryName();
/**
* Get the prefix file used at build time. This usually provides
@@ -104,27 +85,35 @@
public IPath getCompilerPrefixFile();
/**
- * Returns the list of all vendor specific C/C++ macros for this SDK. The list of macros is defined in
- * the variant configuration file inside \epoc32\tools\variant.cfg (or \epoc32\tools\spp_variant.cfg
- * for platform variation SDKs). The file itself contains an HRH file entry and may also contain macro definitions
- * thereafter.
+ * Get the full path to the prefix file defined under \epoc32\tools\variant\variant.cfg
+ * @return A path object, or null if the variant.cfg does not exist. This routine does not check to see if the returned path exists.
+ * @since 3.0
+ */
+ public IPath getPrefixFromVariantCfg();
+
+ /**
+ * Returns the list of all vendor specific C/C++ macros for this SDK. This is the result of preprocessing
+ * the HRH file defined under /epoc32/tools/variant/variant.cfg
* @return a list of macros which may be empty.
*/
public List<IDefine> getVariantHRHDefines();
/**
- * Returns the list of all header files recursively included by the SDK prefix file. Note that the list of
+ * Returns the list of all header files recursively included by the SDK prefix file (defined in /epoc32/tools/variant/variant.cfg). Note that the list of
* files could be different for different context's since the platform can potentially change the list of include
* paths.
* @return a list of header files which may be empty
+ * @since 3.0
*/
- public List<File> getPrefixFileIncludes();
+ public List<File> getVariantHRHIncludes();
/**
- * Returns the list of compiler macros from the compiler prefix file (if any).
+ * Returns the list of compiler macros from the compiler prefix file (if any). This is the result
+ * of preprocessing the actual compiler pre-include file, e.g. rvct.h or gcce.h. WINSCW platform builds will return an empty list.
* @return a list of macros which may be empty.
+ * @since 3.0
*/
- public List<IDefine> getCompilerMacros();
+ public List<IDefine> getCompilerPreincludeDefines();
/**
* For platforms that are building with Symbian Binary Variation, this suffix will be included in the configuration name
@@ -135,17 +124,49 @@
public String getBuildVariationName();
/**
- * Is the current build context building as a Symbian Binary Variation? Not to be confused with BSF.
- * @return true if this is a binary variant build
- * @since 2.0
+ * Load build context specific configuration settings
+ * @param ICStorageElement - a child of CARBIDE_STORAGE_ID ("CarbideConfigurationDataProvider") in .cproject data
+ * @since 3.0
+ *
*/
- public boolean isSymbianBinaryVariation();
+ public void loadConfigurationSettings(ICStorageElement se);
+
+ /**
+ * Save build context specific configuration settings
+ * @param ISymbianBuildContext
+ * @param ICStorageElement - a child of CARBIDE_STORAGE_ID ("CarbideConfigurationDataProvider") in .cproject data
+ * @since 3.0
+ */
+ public void saveConfigurationSettings(ICStorageElement se, ISymbianBuildContext ISymbianBuildContext);
+
+ /**
+ * Get the <cconfiguration/> 'id' attribute for this configuration (from .cproject file). This is an ISymbianBuildContext wrapper.
+ * @return String
+ * @since 3.0
+ */
+ String getConfigurationID();
/**
- * Retrieve the build-able configuration; a valid command that cab be passed with Raptor's -c parameter.
- * This should not be used and should return null for abld-configurations.
- * @return the configuration name, or null if none.
+ * This is the list of macros used to preprocess CPP source files.
+ * @return a list of defines.
+ * @since
+ */
+ List<IDefine> getBuildMacros();
+
+ /**
+ * This is the list of macros used to preprocess Symbian build files (bld.inf & mmp)
+ * @return a list of defines
+ * @since 3.0
*/
- public String getSBSv2Alias();
+ List<IDefine> getMetadataMacros();
+
+ /**
+ * Get a list of macros specific to the given target type, e.g. "__EXE__" or "__DLL__"
+ * @param targettype
+ * @return list of macro strings, may be empty
+ * @since 3.0
+ */
+ IDefine getTargetTypeMacro(String targettype);
+
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISymbianBuilderID.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,28 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+*/
+
+package com.nokia.carbide.cpp.sdk.core;
+
+/**
+ * A collection of Symbian builder IDs.
+ * @since 3.0
+ */
+public interface ISymbianBuilderID {
+
+ /**
+ * @deprecated - SBSv1 / ABLD builder will be removed in vFuture.
+ */
+ public static final String SBSV1_BUILDER = "SBSv1Builder";
+ public static final String SBSV2_BUILDER = "SBSv2Builder";
+
+}
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISymbianSDK.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISymbianSDK.java Wed Aug 25 12:42:09 2010 -0500
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "Eclipse Public License v1.0"
@@ -12,12 +12,7 @@
*/
package com.nokia.carbide.cpp.sdk.core;
-import com.nokia.carbide.cpp.epoc.engine.preprocessor.IDefine;
-
-import java.io.File;
-import java.net.URL;
-import java.util.Date;
-import java.util.List;
+import java.util.Set;
import org.eclipse.core.runtime.IPath;
import org.osgi.framework.Version;
@@ -35,51 +30,81 @@
public interface ISymbianSDK {
- /** Branch identifier to note Beech branch, OS 8.1a and prior */
- public static final String EKA1_A_BRANCH_IDENTIFIER = "a";
- /** Branch identifier to note S branch, OS 7.0x */
- public static final String EKA1_S_BRANCH_IDENTIFIER = "s";
- /** Branch identifier to note Cedar branch, OS 8.0b and later (not used for OS 9.x and greater) */
- public static final String EKA2_B_BRANCH_IDENTIFIER = "b";
+ /**
+ * Value given for an SDK that is created when a build configuration
+ * references an non-existent SDK.
+ * @since 3.0
+ */
+ public static String BAD_EPOCROOT = "/BAD_SDK_ROOT";
- // Family Ids don't include the vendor
- public static final String SERIES60_FAMILY_ID = "series60"; //deprecated
- public static final String S60_FAMILY_ID = "s60";
- public static final String S80_FAMILY_ID = "Series80";
- public static final String UIQ_FAMILY_ID = "UIQ";
- public static final String TECHVIEW_FAMILY_ID = "TechView";
- public static final String SYMBIAN_FOUNDATION_FAMILY_ID = "symbian"; // Symbian Foundation, starting with Symbian^3
-
- // Unique Ids include the vendor
- public static final String SERIES60_SDK_NAME = "com.nokia." + SERIES60_FAMILY_ID;
- public static final String S60_SDK_NAME = "com.nokia." + S60_FAMILY_ID;
- public static final String NOKIA_SF_SDK_NAME = "com.nokia." + SYMBIAN_FOUNDATION_FAMILY_ID; // Nokia+Symbian Foundation SDK
- public static final String S80_SDK_NAME = "com.nokia." + S80_FAMILY_ID;
- public static final String UIQ_SDK_NAME = "com.symbian." + UIQ_FAMILY_ID;
- public static final String TECHVIEW_SDK_NAME = "com.symbian." + TECHVIEW_FAMILY_ID;
-
- public static final String PUBLISHER_NOKIA = "Nokia, Inc.";
- public static final String PUBLISHER_UIQ = "UIQ Technology";
- public static final String PUBLISHER_SYMBIAN = "Symbian, Ltd.";
+ /**
+ * Returns build info for a particular builder.
+ * @param builderId id string of a builder (ISymbianBuilderID constant)
+ * @return ISDKBuildInfo - may be null if the builderId is deprecated.
+ * @since 3.0
+ * @see {@link ISymbianBuilderID}
+ */
+ ISDKBuildInfo getBuildInfo(String builderId);
/**
- * Returns true if the SDK is configured properly, false otherwise.
+ * Returns the absolute path to the epoc32 directory of this SDK. This method is guaranteed to
+ * return the path with a trailing File.separator.
*
- * @return <code>true</code> if the SDK is configured properly, and
- * <code>false</code> otherwise
+ * @return the absolute path to the epoc32 directory.
*/
- boolean isValid();
-
+ String getEPOCROOT();
+
+ /**
+ * Returns an IPath for the epoc32\include directory of a SDK.
+ * @return an IPath for the epoc32\include directory, or <code>null</code>.
+ */
+ IPath getIncludePath();
+
/**
- * Returns a list of human readable error strings desribing why the
- * SDK is not configured properly.
+ * Returns the OS version string of this SDK.
*
- * @return a list of strings which may be empty.
- * @see #isValid()
+ * @return the OS Version object. If the version cannot be determined it will be "9.5".
+ * @deprecated - use ISymbianSDK{@link #getSupportedFeatures()} to figure out the properties of an SDK
+ */
+ Version getOSVersion();
+
+// /**
+// * Returns the prefix file for a particular builder.
+// * @param builderId id string of a builder
+// * @return the File object for the prefix file, or
+// * <code>null</code> if there isn't one for the SDK.
+// */
+// File getPrefixFile(String builderId);
+
+ /**
+ * Returns an IPath for the epoc32\release directory of a SDK.
+ * @return an IPath for the epoc32\release directory, or <code>null</code>.
*/
- List<String> validationErrors();
+ IPath getReleaseRoot();
/**
+ * Returns a set of features supported by the SDK.
+ * Feature IDs are defined in ISymbianSDKFeatures.
+ * @return set of features
+ * @since 3.0
+ */
+ @SuppressWarnings("rawtypes")
+ Set getSupportedFeatures();
+
+ /**
+ * Returns an IPath for the epoc32\tools directory of a SDK.
+ * @return an IPath for the epoc32\tools directory, or <code>null</code>.
+ */
+ IPath getToolsPath();
+
+ /**
+ * Returns the unique id of this SDK. This is the devices.xml 'id' attribute.
+ *
+ * @return the id string of this SDK.
+ */
+ String getUniqueId();
+
+ /**
* Returns true if the SDK is enabled, false otherwise.
*
* @return <code>true</code> if the SDK is enabled, and
@@ -88,300 +113,8 @@
boolean isEnabled();
/**
- * Marks the SDK as enabled or disabled
- *
- * @param enable whether to enable or disable the SDK
- */
- void setEnabled(boolean enable);
-
- /**
- * Returns the list of all platform macros for this SDK.
- * <p>
- * This is somewhat equivalent to calling "bldmake plat" on the command line
- * These are the macros that can be used in MMP and INF files. They are only given by name (no value)
- * </p>
- * @param platform the platform name
- * @return a list of macros, which may be empty.
- */
- List<String> getPlatformMacros(String platform);
-
-
- /**
- * Returns the list of all vendor specific C/C++ macros for this SDK. The list of macros is defined in
- * the variant configuration file inside \epoc32\tools\variant.cfg (or \epoc32\tools\spp_variant.cfg
- * for platform variation SDKs). The file itself contains an HRH file entry and may also contain macro definitions
- * thereafter.
- * <p>
- * Macros follow the form of a #define statement, excluding the "#define", e.g.:<br>
- * "FOO", "BAR=1", "_INCLUDE_=\"\\mydir\\prefix.hrh\\\"", "INCLUDE(x)=\epoc32\include\##x"
- * </p>
- *
- * @return a list of macros which may be empty.
- * @deprecated use #getProjectVariantHRHDefines() which returns a list of IDefine instead.
- */
- List<String> getProjectVariantHRHMacros();
-
-
- /**
- * Returns the list of all vendor specific C/C++ macros for this SDK. The list of macros is defined in
- * the variant configuration file inside \epoc32\tools\variant.cfg (or \epoc32\tools\spp_variant.cfg
- * for platform variation SDKs). The file itself contains an HRH file entry and may also contain macro definitions
- * thereafter.
- * @return a list of macros which may be empty.
- * @deprecated use {@link ISymbianBuildContext#getVariantHRHDefines()} instead. This was moved because the include paths
- * in which to find any header files included from the main .hrh file may be build configuration specific.
- */
- List<IDefine> getProjectVariantHRHDefines();
-
- /**
- * Returns a list of the macros defined in the variant.cfg file. This is NOT the macros
- * in the HRH file, but the actual maros written to the variant.cfg file.
- * @return A String list of macros found as is, or an empty list if none.
- */
- List<String> getVariantCFGMacros();
-
- /**
- * Get a list of macros that are used to distinguish this SDK. Typically only
- * S603rd edition SDKs contain this information and it's used to differentiate between
- * varios S60 SDK releases. Other vendors, such as UIQ may put their macros in the variant HRH file.
- * @return A list of macros just returned by name.
- */
- public List<String> getVendorSDKMacros();
-
- /**
- * Returns the list of all available platforms for this SDK.
- *
- * @return a list of platform names which may be empty.
- */
- List<String> getAvailablePlatforms();
-
- /**
- * Returns the filtered list of build configurations for this SDK.
- * <p>
- * Build configs to display can be filtered by the user using the SBSv1 or SBSv2
- * panes of the Platform Filtering Preferences global preference page.
- * </p><p>
- * If SBSv1 building is supported, the platforms are filtered with SBSv1 preferences.
- * If SBSv2 building but not SBSv1 is supported, the platforms are filtered with SBSv2 preferences.
- * If both builders are supported, SBSv1 preferences are used.
- * </p>
- *
- * @return a list build configuration names which may be empty.
- */
- List<ISymbianBuildContext> getFilteredBuildConfigurations();
-
- /**
- * Returns the unfiltered list of build configurations for this SDK.
- *
- * @return a list build configuration names which may be empty.
- */
- List<ISymbianBuildContext> getUnfilteredBuildConfigurations();
-
- /**
- * Returns the unique id of this SDK. This is the devices.xml 'id' attribute.
- *
- * @return the id string of this sdk.
- */
- String getUniqueId();
-
- /**
- * Returns the display name of this SDK. This is the com.vendor.family identifier.
- *
- * @return the name of this sdk.
- */
- String getName();
-
- /**
- * Returns the vendor name of this SDK. This is parsed from the 'name' attribute from devices.xml.
- *
- * @return the vendor name of this sdk.
- */
- String getVendor();
-
- /**
- * Returns the family name of this SDK. This is parsed from the 'vendor' attribute from devices.xml.
- *
- * @return the family name of this sdk.
- */
- String getFamily();
-
- /**
- * Returns the absolute path to the epoc32 directory of this SDK. This method is guaranteed to
- * return the path with a trailing File.separator.
- *
- * @return the absolute path to the epoc32 directory.
- */
- String getEPOCROOT();
-
- /**
- * Returns whether or not this is the default SDK in the devices.xml file.
- *
- * @return <code>true</code> if the SDK is the default, and
- * <code>false</code> otherwise
- */
- boolean isDefaultSDK();
-
- /**
- * Returns the OS version string of this SDK.
- *
- * @return the OS Version object. If the version cannot be determined it will be "0.0".
- */
- Version getOSVersion();
-
- /**
- * Returns the SDK version string of this SDK.
- *
- * @return the SDK Version object. If the version cannot be determined it will be "0.0".
- */
- Version getSDKVersion();
-
- /**
- * Returns the File object for the prefix file for this SDK.
- *
- * @return the File object for the prefix file, or
- * <code>null</code> if there isn't one for this SDK.
- */
- File getPrefixFile();
-
- /**
- * Returns an IPath for the epoc32\tools directory of this SDK.
- *
- * @return an IPath for the epoc32\tools directory, or <code>null</code>.
- */
- IPath getToolsPath();
-
- /**
- * Returns an IPath for the epoc32\release directory of this SDK.
- *
- * @return an IPath for the epoc32\release directory, or <code>null</code>.
- */
- IPath getReleaseRoot();
-
- /**
- * Returns an IPath for the epoc32\include directory of this SDK.
- *
- * @return an IPath for the epoc32\include directory, or <code>null</code>.
- */
- IPath getIncludePath();
-
- /**
- * Get the human readable description of the SDK.
- * @return The description string, empty string for none.
- */
- String getSDKDescription();
-
- /**
- * Get the creation date of the manifest.xml
- * @return a Date object
- */
- Date getCreationDate();
-
- /**
- * Get the licese file location in the SDK. Comes from manifest.xml.
- * @return File, full path to the license file.
- */
- File getLicenseFile();
-
- /**
- * Get the branch qualifier for the OS. Typically "a" or "b" to denote the Beech and Cedar code branchs respectively.
- * This is typically used to denote EKA1 from EKA2.
- * @return the branch, or empty string if none.
- */
- String getSDKOSBranch();
-
- /**
- * Get the HTTP location for the SDK publisher. Comes from manifest.xml.
- * @return A (hopefully) valid URL.
- */
- URL getPublisherURL();
-
- /**
- * Get the publisher name present in manifest.xml
- * @return The name entry or empty string if not present.
- */
- String getPublisherName();
-
- /**
- * Get a list of supported targettypes listed by this SDK. This routine parses the
- * \epoc32\tools\trgttype.pm file to build it's list.
- * @return A list of targettype names that can be used in an MMP file
- */
- List<String> getSupportedTargetTypes();
-
- /**
- * Get a list of macros specific to the given target type, e.g. "__EXE__" or "__DLL__"
- * @param targettype
- * @return list of macro strings, may be empty
- */
- List<String> getTargetTypeMacros(String targettype);
-
- @Deprecated
- public boolean getRequiresRestart();
- void setLicenseFile(File licenseFile);
- void setPrefixFile(IPath prefixFile);
- void setOSVersion(Version osVer);
- void setSDKVersion(Version sdkVers);
- void setPublisherURL(URL pubURL);
- void setCreateDate(Date createDate);
- void setOSSDKBranch(String branch);
- void setIsDefaultSDK(boolean isDefault);
- void setSDKDescription(String descr);
- void setPublisherName(String pubName);
-
- void setUniqueID(String id);
- void setEPOCROOT(String epocRoot);
- void setName(String name);
-
- /** Tell if the SDK is EKA1 */
- boolean isEKA1();
-
- /** Tell if the SDK is EKA2 */
- boolean isEKA2();
-
- /** Tell if the SDK is Series60 */
- boolean isS60();
-
- /**
- * Get whether or not this SDK has WINSCW UREL binary support
- * @return true if the SDK has the WINSCW/UREL folder with epoc.exe components.
- */
- boolean supportsWINSCW_UREL();
-
- /**
- * Set the flag wheter or not this SDK has WINSCW UREL binary support
- * @param isSuported
- * @return
- */
- void setSupportsWINSCW_UREL(boolean isSupported);
-
- /**
* Scans/Rescans the SDK for info such as prefix file, variant macros, manifest.xml, etc.
*/
void scanSDK();
-
- /**
- * Get the BSF catalog for the SDK.
- */
- IBSFCatalog getBSFCatalog();
-
- /**
- * Get the Symbian Binary Variation (SBV) catalog for the SDK.
- * @since 2.0
- */
- ISBVCatalog getSBVCatalog();
-
- /**
- * Tells whether or not the plug-in installer has sniffed this SDK for eclipse plug-ins to install.
- * @return true if the SDK was scanned.
- * @since 2.0
- */
- boolean isPreviouslyScanned();
-
- /**
- * Set flag to tell whether or not the SDK was scanned for eclipse plugins to install.
- * @param wasScanned was the SDK scanned for plugins?
- * @since 2.0
- */
- void setPreviouslyScanned(boolean wasScanned);
-
+
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISymbianSDKFeatures.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,31 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+*/
+
+package com.nokia.carbide.cpp.sdk.core;
+
+/**
+ * A collection of Symbian SDK feature IDs.
+ * @since 3.0
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface ISymbianSDKFeatures {
+
+ public static final String IS_QT_INSTALLED = "isQtInstalled";
+ public static final String IS_AVKON_SUPPORTED = "isAvkonSupported";
+ public static final String IS_WINSCW_UREL_SUPPORTED = "isWINSCWURELSupported";
+ public static final String IS_WINSCW_UDEB_SUPPORTED = "isWINSCWUDEBSupported";
+ public static final String IS_EKA1 = "isEKA1";
+ public static final String IS_EKA2 = "isEKA2";
+ public static final String IS_FROM_DEVICES_XML = "isFromDevicesXml";
+
+}
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/SDKCorePlugin.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/SDKCorePlugin.java Wed Aug 25 12:42:09 2010 -0500
@@ -15,6 +15,7 @@
import org.eclipse.core.runtime.Plugin;
import org.osgi.framework.BundleContext;
+import com.nokia.carbide.cpp.internal.api.sdk.SDKCacheUtils;
import com.nokia.carbide.cpp.internal.sdk.core.model.SDKManager;
import com.nokia.carbide.cpp.internal.sdk.core.model.SDKManagerRaptorOnly;
import com.nokia.cpp.internal.api.utils.core.HostOS;
@@ -26,6 +27,7 @@
*/
public class SDKCorePlugin extends Plugin {
+ /** @since 3.0 */
public static final boolean SUPPORTS_SBSV1_BUILDER = true;
// The plug-in ID
@@ -56,6 +58,11 @@
* @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
*/
public void stop(BundleContext context) throws Exception {
+ try {
+ SDKCacheUtils.getCache().flushAll();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
plugin = null;
super.stop(context);
}
@@ -81,6 +88,7 @@
if (sdkManager == null) {
// TODO: SDKManagerRaptorOnly, currently only works on Linux
// ... and SDKManager depends on Windows
+ // Win32 can use this instead once ABLD support is dropped from Carbide
if (HostOS.IS_WIN32)
sdkManager = new SDKManager();
else
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/SymbianSDKFactory.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/SymbianSDKFactory.java Wed Aug 25 12:42:09 2010 -0500
@@ -38,35 +38,21 @@
*/
public static ISymbianSDK createInstance(String id,
String epocRoot,
- String name,
- Version osVersion,
- String osBranch,
- Version sdkVersion,
- boolean isDefault){
+ Version osVersion) {
DeviceType newDeviceEntry = DevicesFactory.eINSTANCE.createDeviceType();
newDeviceEntry.setId(id);
newDeviceEntry.setEpocroot(epocRoot);
- newDeviceEntry.setName(name);
- if (isDefault){
- newDeviceEntry.setDefault(DefaultType.YES_LITERAL);
- } else {
- newDeviceEntry.setDefault(DefaultType.NO_LITERAL);
- }
+ newDeviceEntry.setDefault(DefaultType.NO_LITERAL);
SymbianSDK sdk = new SymbianSDK(newDeviceEntry); // create SDK and set the attribs found in devices.xml
- // Set other essential paramaters not in devices.xml
-
- if (sdk.getOSVersion().getMajor() != 0){
+ // Set other essential parameters not in devices.xml
+ if (sdk.getOSVersion().getMajor() != 0) {
// use the version detected from the SDK creation
} else {
sdk.setOSVersion(osVersion);
- sdk.setOSSDKBranch(osBranch);
- }
-
- if (sdk.getSDKVersion().getMajor() == 0){
- sdk.setSDKVersion(sdkVersion);
}
return sdk;
}
+
}
--- a/core/com.nokia.carbide.cpp.sdk.ui/META-INF/MANIFEST.MF Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.ui/META-INF/MANIFEST.MF Wed Aug 25 12:42:09 2010 -0500
@@ -10,6 +10,7 @@
org.eclipse.core.runtime,
org.eclipse.core.resources,
com.nokia.carbide.cpp.sdk.core,
+ com.nokia.carbide.cpp.ui,
com.nokia.carbide.templatewizard,
com.nokia.cpp.utils.core,
com.nokia.cpp.utils.ui,
--- a/core/com.nokia.carbide.cpp.sdk.ui/plugin.properties Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.ui/plugin.properties Wed Aug 25 12:42:09 2010 -0500
@@ -1,7 +1,7 @@
// Copyright 2007 Nokia, Inc.
-SDKUIPlugin.SDK_Preferences=SDK Preferences
-SDKUIPlugin.Platform_Filtering_Preferences=Platform Filtering Preferences
+SDKUIPlugin.SDK_Preferences=Symbian SDKs
+SDKUIPlugin.Platform_Filtering_Preferences=Build Configuration Filtering
#Keywords for Carbide preferences
carbcPreference.common=carbide symbian c cpp cplusplus
--- a/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/api/sdk/ui/BuildPlatformFilterPage.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/api/sdk/ui/BuildPlatformFilterPage.java Wed Aug 25 12:42:09 2010 -0500
@@ -53,15 +53,13 @@
GridData tabFolderGridData = new GridData(SWT.FILL, SWT.FILL, true, true);
tabFolder.setLayoutData(tabFolderGridData);
- if (SBSv2Utils.enableSBSv2Support()) {
- TabItem sbsv2TabItem = new TabItem(tabFolder, SWT.NONE);
- sbsv2TabItem.setText(Messages.getString("BuildPlatformFilterPage.SBSv2TabText")); //$NON-NLS-1$
- sbsv2TabItem.setToolTipText(Messages.getString("BuildPlatformFilterPage.SBSv2TabToolTip")); //$NON-NLS-1$
+ TabItem sbsv2TabItem = new TabItem(tabFolder, SWT.NONE);
+ sbsv2TabItem.setText(Messages.getString("BuildPlatformFilterPage.SBSv2TabText")); //$NON-NLS-1$
+ sbsv2TabItem.setToolTipText(Messages.getString("BuildPlatformFilterPage.SBSv2TabToolTip")); //$NON-NLS-1$
- sbsv2Tab = new SBSv2PlatformFilterComposite(tabFolder);
- sbsv2Tab.createControls();
- sbsv2TabItem.setControl(sbsv2Tab);
- }
+ sbsv2Tab = new SBSv2PlatformFilterComposite(tabFolder);
+ sbsv2Tab.createControls();
+ sbsv2TabItem.setControl(sbsv2Tab);
if (SBSv2Utils.enableSBSv1Support()) {
TabItem sbsv1TabItem = new TabItem(tabFolder, SWT.NONE);
--- a/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/api/sdk/ui/SBSv1PlatformFilterComposite.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/api/sdk/ui/SBSv1PlatformFilterComposite.java Wed Aug 25 12:42:09 2010 -0500
@@ -29,6 +29,7 @@
import org.eclipse.swt.widgets.Label;
import com.nokia.carbide.cpp.internal.api.sdk.BuildPlat;
+import com.nokia.carbide.cpp.internal.sdk.core.model.SDKManager;
import com.nokia.carbide.cpp.internal.sdk.ui.Messages;
import com.nokia.carbide.cpp.internal.sdk.ui.SDKUIPreferenceConstants;
import com.nokia.carbide.cpp.sdk.core.ISDKManager;
@@ -96,7 +97,7 @@
bldPlatList = getPlatFilterPrefsStore();
ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
- enableBSFScanner.setSelection(sdkMgr.getBSFScannerEnabled());
+ enableBSFScanner.setSelection(((SDKManager)sdkMgr).getBSFScannerEnabled());
for (BuildPlat currBldPlat : bldPlatList) {
if (currBldPlat.getPlatName().equals("WINSCW")){ //$NON-NLS-1$
@@ -120,7 +121,7 @@
IPreferenceStore prefsStore = SDKUIPlugin.getDefault().getPreferenceStore();
ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
- sdkMgr.enableBSFScanner(prefsStore.getBoolean(SDKUIPreferenceConstants.ENABLE_BSF_SCANNER));
+ ((SDKManager)sdkMgr).enableBSFScanner(prefsStore.getBoolean(SDKUIPreferenceConstants.ENABLE_BSF_SCANNER));
buildPlatList.add(new BuildPlat("WINSCW", BuildPlat.EKA2_IDENTIFIER, prefsStore.getBoolean(SDKUIPreferenceConstants.PLAT_EKA2_WINSCW)));
buildPlatList.add(new BuildPlat("ARMV5", BuildPlat.EKA2_IDENTIFIER, prefsStore.getBoolean(SDKUIPreferenceConstants.PLAT_EKA2_ARMV5)));
@@ -129,7 +130,7 @@
buildPlatList.add(new BuildPlat("GCCE", BuildPlat.EKA2_IDENTIFIER, prefsStore.getBoolean(SDKUIPreferenceConstants.PLAT_EKA2_GCCE)));
- sdkMgr.setPlatformList(buildPlatList);
+ ((SDKManager)sdkMgr).setPlatformList(buildPlatList);
return buildPlatList;
}
--- a/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/api/sdk/ui/SBSv2PlatformFilterComposite.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/api/sdk/ui/SBSv2PlatformFilterComposite.java Wed Aug 25 12:42:09 2010 -0500
@@ -18,11 +18,19 @@
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.TrayDialog;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.CheckboxTableViewer;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
@@ -30,92 +38,254 @@
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.TableItem;
import com.nokia.carbide.cpp.internal.api.sdk.SBSv2Utils;
+import com.nokia.carbide.cpp.internal.api.sdk.sbsv2.SBSv2MinimumVersionException;
+import com.nokia.carbide.cpp.internal.api.sdk.sbsv2.SBSv2QueryUtils;
+import com.nokia.carbide.cpp.internal.sdk.core.model.SBSv2BuildInfo;
+import com.nokia.carbide.cpp.internal.sdk.core.model.SDKManager;
+import com.nokia.carbide.cpp.internal.sdk.ui.AddSBSv2ProductVariant;
import com.nokia.carbide.cpp.internal.sdk.ui.Messages;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
+import com.nokia.cpp.internal.api.utils.core.HostOS;
/**
* @since 1.4
*/
+@SuppressWarnings("restriction")
public class SBSv2PlatformFilterComposite extends Composite {
- private CheckboxTableViewer tableViewer;
+ private static HashMap<String, String> aliasMap = new HashMap<String, String>();
+ private static List<String> productVariantList = new ArrayList<String>();
+
+ private CheckboxTableViewer buildAliasTableViewer;
+ private ListViewer customVariantListViewer;
private Button refreshButton;
+ private Button addVariantButton;
+ private Button removeVariantButton;
-
SBSv2PlatformFilterComposite(Composite parent) {
super(parent, SWT.NONE);
}
public void createControls() {
GridLayout gridLayout = new GridLayout();
+ gridLayout.numColumns = 2;
setLayout(gridLayout);
- Group platformsGroup = new Group(this, SWT.NONE);
- platformsGroup.setText(Messages.getString("SBSv2PlatformFilterComposite.PlatformsGroupText")); //$NON-NLS-1$
- platformsGroup.setToolTipText(Messages.getString("SBSv2PlatformFilterComposite.PlatformsGroupToolTip")); //$NON-NLS-1$
- GridData gd = new GridData(SWT.FILL, SWT.CENTER, true, false);
- gd.widthHint = 350;
- platformsGroup.setLayoutData(gd);
- platformsGroup.setLayout(new GridLayout());
+ GridData gd = new GridData(SWT.LEFT, SWT.LEFT, true, false);
+ gd.widthHint = 200;
+ gd.heightHint = 350;
- tableViewer = CheckboxTableViewer.newCheckList(platformsGroup, SWT.BORDER);
- tableViewer.getTable().setLayoutData(gd);
- tableViewer.setContentProvider(new ArrayContentProvider());
- tableViewer.setLabelProvider(new LabelProvider());
+ Label aliasBoxLabel = new Label(this, SWT.NONE);
+ aliasBoxLabel.setText(Messages.getString("SBSv2PlatformFilterComposite.PlatformsGroupText"));
+ aliasBoxLabel.setToolTipText(Messages.getString("SBSv2PlatformFilterComposite.PlatformsGroupToolTip"));
+
+ Label variantBoxLabel = new Label(this, SWT.NONE);
+ variantBoxLabel.setText(Messages.getString("SBSv2PlatformFilterComposite.ProductsGroupText"));
+ variantBoxLabel.setToolTipText(Messages.getString("SBSv2PlatformFilterComposite.ProductsGroupToolTip"));
+
+ buildAliasTableViewer = CheckboxTableViewer.newCheckList(this, SWT.BORDER);
+ buildAliasTableViewer.getTable().setLayoutData(gd);
+ buildAliasTableViewer.setContentProvider(new ArrayContentProvider());
+ buildAliasTableViewer.setLabelProvider(new LabelProvider());
+
+ customVariantListViewer = new ListViewer(this);
+ customVariantListViewer.getList().setLayoutData(gd);
+ customVariantListViewer.setContentProvider(new ArrayContentProvider());
+ customVariantListViewer.setLabelProvider(new LabelProvider());
+ customVariantListViewer.addSelectionChangedListener( new ISelectionChangedListener() {
+
+ public void selectionChanged(SelectionChangedEvent event) {
+ if (customVariantListViewer.getSelection() != null && !customVariantListViewer.getSelection().isEmpty()){
+ removeVariantButton.setEnabled(true);
+ } else {
+ removeVariantButton.setEnabled(false);
+ }
+ }
+ });
refreshButton = new Button(this, SWT.NONE);
refreshButton.setText(Messages.getString("SBSv2PlatformFilterComposite.RefreshButtonText")); //$NON-NLS-1$
refreshButton.setToolTipText(Messages.getString("SBSv2PlatformFilterComposite.RefreshButtonToolTip")); //$NON-NLS-1$
+
refreshButton.addSelectionListener(new SelectionListener() {
-
+
public void widgetDefaultSelected(SelectionEvent e) {
widgetSelected(e);
}
public void widgetSelected(SelectionEvent e) {
- initTable(true);
+ refreshButton.setEnabled(false);
+ refreshButton.setText(Messages.getString("SBSv2PlatformFilterComposite.RefreshButtonScanningText")); //$NON-NLS-1$
+ SBSv2QueryUtils.removeAllCachedQueries();
+ clearLocalSBSCacheData();
+ initTable();
+
+ for (ISymbianSDK sdk : SDKCorePlugin.getSDKManager().getSDKList()){
+ ((SBSv2BuildInfo)sdk.getBuildInfo(ISymbianBuilderID.SBSV2_BUILDER)).clearDataFromBuildCache();
+ }
+
+ refreshButton.setText(Messages.getString("SBSv2PlatformFilterComposite.RefreshButtonText")); //$NON-NLS-1$
+ refreshButton.setEnabled(true);
+ }
+
+ private void clearLocalSBSCacheData(){
+ aliasMap.clear();
+ productVariantList.clear();
+ }
+
+
+ });
+
+ Composite variantButtonsComposite = new Composite(this, SWT.NONE);
+ gridLayout = new GridLayout();
+ gridLayout.makeColumnsEqualWidth = true;
+ gridLayout.numColumns = 2;
+ variantButtonsComposite.setLayout(gridLayout);
+ GridData gridData = new GridData(SWT.LEFT, SWT.TOP, true, false);
+ variantButtonsComposite.setLayoutData(gridData);
+
+ addVariantButton = new Button(variantButtonsComposite, SWT.NONE);
+ addVariantButton.setText(Messages.getString("SBSv2PlatformFilterComposite.AddProductButtonText")); //$NON-NLS-1$
+ addVariantButton.setToolTipText(Messages.getString("SBSv2PlatformFilterComposite.AddProductButtonToolTip")); //$NON-NLS-1$
+ addVariantButton.setLayoutData(gridData);
+ addVariantButton.addSelectionListener(new SelectionListener() {
+
+ public void widgetDefaultSelected(SelectionEvent e) {widgetSelected(e);}
+ public void widgetSelected(SelectionEvent e) {
+ if (aliasMap.size() == 0){
+ MessageDialog.openError(getShell(), "No build configurations found.", "No build configurations (aliases) were found from any SDKs. Attempted 'sbs --query=aliases' but found no results.");
+ } else if (productVariantList.size() == 0){
+ MessageDialog.openError(getShell(), "No products found.", "No products were found from any SDKs. Attempted 'sbs --query=products' but found no results.");
+ } else {
+ String selectedAlias = "";
+ ISelection selectedItem = buildAliasTableViewer.getSelection();
+
+ StructuredSelection selection = (StructuredSelection)selectedItem;
+ String stringSelection = (String)selection.getFirstElement();
+ if (stringSelection != null){
+ TableItem[] tableItems = buildAliasTableViewer.getTable().getItems();
+ for (TableItem item : tableItems){
+ if (stringSelection.equals(item.getText())){
+ selectedAlias = item.getText();
+ break;
+ }
+ }
+ }
+ AddSBSv2ProductVariant addVariantDlg = new AddSBSv2ProductVariant(getShell(), selectedAlias, aliasMap, productVariantList);
+ if (addVariantDlg.open() == TrayDialog.OK){
+ if (customVariantListViewer.testFindItem(addVariantDlg.getUserCreatedVariant()) == null){
+ // doesn't exist, add it. if it does exist just ignore it
+ List<String> variantList = (List<String>)customVariantListViewer.getInput();
+ variantList.add(addVariantDlg.getUserCreatedVariant());
+ customVariantListViewer.setInput(variantList);
+ customVariantListViewer.refresh();
+ }
+ }
+ }
}
});
- initTable(false);
+ removeVariantButton = new Button(variantButtonsComposite, SWT.NONE);
+ removeVariantButton.setText(Messages.getString("SBSv2PlatformFilterComposite.RemoveProductButtonText")); //$NON-NLS-1$
+ removeVariantButton.setToolTipText(Messages.getString("SBSv2PlatformFilterComposite.RemoveProductButtonToolTip")); //$NON-NLS-1$
+ removeVariantButton.setLayoutData(gridData);
+ removeVariantButton.setEnabled(false);
+ removeVariantButton.addSelectionListener(new SelectionListener() {
+
+ public void widgetDefaultSelected(SelectionEvent e) {widgetSelected(e);}
+ public void widgetSelected(SelectionEvent e) {
+ ISelection selectedVariant = customVariantListViewer.getSelection();
+ if (selectedVariant != null){
+ StructuredSelection selection = (StructuredSelection)selectedVariant;
+ String stringSelection = (String)selection.getFirstElement();
+ List<String> data = (List<String>)customVariantListViewer.getInput();
+ data.remove(stringSelection);
+ customVariantListViewer.setInput(data);
+ customVariantListViewer.refresh(true);
+ removeVariantButton.setEnabled(false);
+ }
+ }
+
+ });
+
+ initTable();
}
public void performOk() {
// save the list of unchecked configs
- List<String> uncheckedConfigs = new ArrayList<String>();
- for (TableItem item : tableViewer.getTable().getItems()) {
- if (!tableViewer.getChecked(item.getData())) {
- uncheckedConfigs.add(item.getText());
+ List<String> checkedConfigs = new ArrayList<String>();
+ for (TableItem item : buildAliasTableViewer.getTable().getItems()) {
+ if (buildAliasTableViewer.getChecked(item.getData())) {
+ checkedConfigs.add(item.getText());
}
}
- SBSv2Utils.setSBSv2ConfigurationsToFilter(uncheckedConfigs.toArray(new String[uncheckedConfigs.size()]));
+ for (String variant : customVariantListViewer.getList().getItems()) {
+ checkedConfigs.add(variant);
+ }
+
+ SBSv2Utils.setSBSv2FilteredConfigs(checkedConfigs.toArray(new String[checkedConfigs.size()]));
}
- private void initTable(boolean refreshList) {
+ private void initTable() {
SBSv2Utils.initDefaultConfigsToFilter();
- Object[] keySet = SBSv2Utils.getUnfilteredSBSv2BuildConfigurations(refreshList).keySet().toArray();
- List<String> sbsAliases = new ArrayList<String>();
- for (Object key : keySet)
- sbsAliases.add((String)key);
- Collections.sort(sbsAliases);
- tableViewer.setInput(sbsAliases);
+ if (aliasMap.size() == 0){
+ try {
+ aliasMap = SBSv2QueryUtils.getCompleteAliasList();
+ } catch (SBSv2MinimumVersionException e) {
+ // Force a scan for version in case system was updated
+ SDKCorePlugin.getSDKManager().getSBSv2Version(true);
+ try {
+ // try, try again...
+ aliasMap = SBSv2QueryUtils.getCompleteAliasList();
+ } catch (SBSv2MinimumVersionException e2) {
+ MessageDialog.openError(getShell(), "Minimum sbs version not met.", e.getMessage());
+ }
+ }
+ }
- // check all configs
- tableViewer.setAllChecked(true);
+ if (productVariantList.size() == 0){
+ try {
+ productVariantList = SBSv2QueryUtils.getCompleteProductVariantList();
+ } catch (SBSv2MinimumVersionException e) {
+
+ }
+ }
+ // get saved configs in the store
+ List<String> checkedConfigsFromStore = SBSv2Utils.getSBSv2FilteredConfigPreferences();
+
+ List<String> sbsAliases = new ArrayList<String>(); // global build aliases
+ List<String> savedVariants = new ArrayList<String>(); // custom variants
+ for (String key : aliasMap.keySet()){
+ sbsAliases.add(key);
+ }
- // now uncheck the ones from the store
- String[] uncheckedConfigs = SBSv2Utils.getSBSv2ConfigurationsToFilter();
- for (String config : uncheckedConfigs) {
- for (TableItem item : tableViewer.getTable().getItems()) {
- if (item.getText().equals(config)) {
- tableViewer.setChecked(item.getData(), false);
+ for (String config : checkedConfigsFromStore){
+ if (config.contains(".")){
+ savedVariants.add(config);
+ }
+ }
+
+ Collections.sort(sbsAliases);
+ buildAliasTableViewer.setInput(sbsAliases);
+ customVariantListViewer.setInput(savedVariants);
+
+ // uncheck all configs to init
+ buildAliasTableViewer.setAllChecked(false);
+
+ for (String config : checkedConfigsFromStore) {
+ for (TableItem item : buildAliasTableViewer.getTable().getItems()) {
+ if (item.getText().equals(config) && !item.getText().contains(".")) {
+ buildAliasTableViewer.setChecked(item.getData(), true);
break;
}
}
@@ -123,17 +293,24 @@
}
public void setDefaults(){
- initTable(true);
- for (TableItem item : tableViewer.getTable().getItems()) {
- if (item.getText().toLowerCase().startsWith("tool") ||
- item.getText().toLowerCase().startsWith("gccxml") ||
- item.getText().toLowerCase().startsWith("armv6") ||
- item.getText().toLowerCase().startsWith("armv7") ||
- item.getText().toLowerCase().startsWith("armv7") ||
- item.getText().toLowerCase().startsWith("armv9")) {
- tableViewer.setChecked(item.getData(), false);
+ initTable();
+ for (TableItem item : buildAliasTableViewer.getTable().getItems()) {
+ String tableItemText = item.getText().toLowerCase();
+ if (tableItemText.equals("armv5_udeb") ||
+ tableItemText.equals("armv5_urel") ||
+ tableItemText.equals("armv5_udeb_gcce") ||
+ tableItemText.equals("armv5_urel_gcce") ||
+ tableItemText.equals("winscw_udeb") ||
+ tableItemText.equals("winscw_urel")) {
+
+ if (HostOS.IS_UNIX && tableItemText.startsWith("winscw"))
+ ; // ignore winscw as an option for Unix
+ else
+ buildAliasTableViewer.setChecked(item.getData(), true);
+
+
} else {
- tableViewer.setChecked(item.getData(), true);
+ buildAliasTableViewer.setChecked(item.getData(), false);
}
}
}
--- a/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/api/sdk/ui/TemplateUtils.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/api/sdk/ui/TemplateUtils.java Wed Aug 25 12:42:09 2010 -0500
@@ -20,18 +20,21 @@
import java.util.ArrayList;
import java.util.List;
-
-import org.osgi.framework.Version;
+import java.util.Set;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDKFeatures;
import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
import com.nokia.carbide.template.engine.ITemplate;
public class TemplateUtils {
+
+ private static final String SDK_FEATURE_DELIM = ";"; //$NON-NLS-1$
- private static final String FAMILY_DELIM = ":"; //$NON-NLS-1$
- private static final String RANGE_DELIM = "-"; //$NON-NLS-1$
- private static final String VERSION_DELIM = ";"; //$NON-NLS-1$
+ // Template flags. These are the template flags used for filtering
+ // As of Carbide 3.0, we no longer use OS/SDK version or family name
+ // to filter templates.
+ private static final String FEATURE_SUPPORTS_AVKON = "supportsAvkon"; //$NON-NLS-1$
public static final String PROJECT_NAME = "projectName"; //$NON-NLS-1$
public static final String BASE_NAME = "baseName"; //$NON-NLS-1$
@@ -44,70 +47,33 @@
* @param symbianSDK
* @param template
* @return whether this sdk matches the template
- * template filter arguments:= framework[:versionSpec]
- * versionSpec is a list of version or versionRange delimited by ;
- * versionRange is a minVersion and maxVersion delimited by -
+ * template filter arguments
*/
public static boolean sdkMatchesTemplate(ISymbianSDK symbianSDK, ITemplate template) {
- Version sdkVersion = symbianSDK.getSDKVersion();
- String family = symbianSDK.getFamily(); // S60, symbian... 3rd segment of devices.xml 'name' attrib
- return sdkMatchesTemplate(sdkVersion, family, template);
- }
-
-
- private static boolean isSameFamily(String f1, String f2) {
- if (f1.equalsIgnoreCase(f2))
- return true;
+ String filterArgs = template.getFilterArguments();
+ Set supportedFeatures = symbianSDK.getSupportedFeatures();
+ if (filterArgs != null && filterArgs.length() > 0) {
+ String[] strings = filterArgs.split(SDK_FEATURE_DELIM);
+ if (strings.length > 0) {
+ // check for avkon support
+ boolean hasAvkon = false;
+ if (supportedFeatures.contains(ISymbianSDKFeatures.IS_AVKON_SUPPORTED)){
+
+ for (String templateFeature : strings){
+ if (templateFeature.equals(FEATURE_SUPPORTS_AVKON)){
+ hasAvkon = true; // This template requires avkon support and it's there
+ break;
+ }
+ }
+ }
+ if (!hasAvkon)
+ return false; // This template requires avkon support but is not there. Don't show
+ }
+ }
- if ((f1.equalsIgnoreCase(ISymbianSDK.S60_FAMILY_ID) &&
- f2.equalsIgnoreCase(ISymbianSDK.SERIES60_FAMILY_ID)) ||
- (f2.equalsIgnoreCase(ISymbianSDK.S60_FAMILY_ID) &&
- f1.equalsIgnoreCase(ISymbianSDK.SERIES60_FAMILY_ID)))
- return true;
-
- return false;
+ return true;
}
- /**
- * @param symbianSDK
- * @param template
- * @return whether this sdk matches the template
- * template filter arguments:= family[:versionSpec]
- * versionSpec is a list of version or versionRange delimited by ;
- * versionRange is a minVersion and maxVersion delimited by -
- */
- public static boolean sdkMatchesTemplate(Version sdkVersion, String family, ITemplate template) {
- String filterArgs = template.getFilterArguments();
- if (filterArgs != null) {
- String[] strings = filterArgs.split(FAMILY_DELIM);
- if (strings.length > 0) {
- if (!isSameFamily(family, strings[0]))
- return false;
-
- if (strings.length > 1) {
- String[] versions = strings[1].split(VERSION_DELIM);
- for (int i = 0; i < versions.length; i++) {
- String[] versionRange = versions[i].split(RANGE_DELIM);
- if (versionRange.length == 1) {
- Version version = Version.parseVersion(versionRange[0]);
- if (sdkVersion.equals(version))
- return true;
- }
- else if (versionRange.length > 1) {
- Version minVersion = Version.parseVersion(versionRange[0]);
- Version maxVersion = Version.parseVersion(versionRange[1]);
- if (sdkVersion.compareTo(minVersion) >= 0 &&
- sdkVersion.compareTo(maxVersion) <= 0)
- return true;
- }
- }
- return false;
- }
- }
- }
- return true;
- }
-
public static List<ISymbianSDK> getEnabledSDKs() {
List<ISymbianSDK> enabledSDKList = new ArrayList<ISymbianSDK>();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/sdk/ui/AddSBSv2ProductVariant.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,224 @@
+/*
+* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+package com.nokia.carbide.cpp.internal.sdk.ui;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.TrayDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * Dialog that allows the user to add a new SBSv2 custom variant configuration
+ */
+public class AddSBSv2ProductVariant extends TrayDialog {
+
+ private CCombo aliasCombo;
+ private CCombo variantCombo;
+ private String newConfigString;
+
+ private List<String> aliasList = new ArrayList<String>();
+ private List<String> variantList = new ArrayList<String>();
+ private String defaultAlias;
+
+ /**
+ * Create the dialog
+ * @param parentShell
+ * @param selectedAlias
+ */
+ public AddSBSv2ProductVariant(Shell parentShell, String selectedAlias, HashMap<String, String> aliasMap,
+ List<String> productVariantList) {
+
+ super(parentShell);
+ for (String alias : aliasMap.keySet()){
+ aliasList.add(alias);
+ }
+ variantList = productVariantList;
+ defaultAlias = selectedAlias;
+ }
+
+ /**
+ * Create contents of the button bar
+ * @param parent
+ */
+ @Override
+ protected void createButtonsForButtonBar(Composite parent) {
+ createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL,
+ true);
+ createButton(parent, IDialogConstants.CANCEL_ID,
+ IDialogConstants.CANCEL_LABEL, false);
+
+ getButton(IDialogConstants.OK_ID).setEnabled(false);
+ }
+
+ /**
+ * Create contents of the dialog
+ * @param parent
+ */
+ @Override
+ protected Control createDialogArea(Composite parent) {
+
+ Composite container = (Composite) super.createDialogArea(parent);
+ final GridLayout gridLayout = new GridLayout();
+ gridLayout.numColumns = 3;
+ container.setLayout(gridLayout);
+
+ final Label aliasLabel = new Label(container, SWT.NONE);
+ aliasLabel.setToolTipText("Select a build alias.");
+ aliasLabel.setText("Select a build alias: "); //$NON-NLS-1$
+
+ aliasCombo = new CCombo(container, SWT.BORDER);
+ aliasCombo.setLayoutData(new GridData(263, SWT.DEFAULT));
+ Collections.sort(aliasList);
+ aliasCombo.setItems((String[])aliasList.toArray(new String[aliasList.size()]));
+ aliasCombo.select(0);
+ aliasCombo.setEditable(false);
+ aliasCombo.addSelectionListener(new SelectionListener() {
+ public void widgetSelected(SelectionEvent e) {
+ validateData();
+ }
+ public void widgetDefaultSelected(SelectionEvent e) {
+ // ignore
+ }
+ });
+ aliasCombo.addKeyListener(new KeyListener() {
+ public void keyReleased(KeyEvent e) {
+ validateData();
+ }
+ public void keyPressed(KeyEvent e) {
+
+ }
+ });
+
+
+ if (defaultAlias != null && defaultAlias.length() > 0)
+ aliasCombo.setText(defaultAlias);
+
+ new Label(container, SWT.NONE);
+
+ final Label variantLabel = new Label(container, SWT.NONE);
+ variantLabel.setToolTipText("Select a product variant."); //$NON-NLS-1$
+ variantLabel.setText("Select a product variant: "); //$NON-NLS-1$
+
+ variantCombo = new CCombo(container, SWT.BORDER);
+ variantCombo.setLayoutData(new GridData(263, SWT.DEFAULT));
+ Collections.sort(variantList);
+ variantCombo.setItems((String[])variantList.toArray(new String[variantList.size()]));
+ variantCombo.addSelectionListener(new SelectionListener() {
+ public void widgetSelected(SelectionEvent e) {
+ validateData();
+ }
+ public void widgetDefaultSelected(SelectionEvent e) {
+ // ignore
+ }
+ });
+ variantCombo.addKeyListener(new KeyListener() {
+ public void keyReleased(KeyEvent e) {
+ validateData();
+ }
+ public void keyPressed(KeyEvent e) {
+
+ }
+ });
+
+
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, SDKUIHelpIds.SDK_ADD_DIALOG);
+ return container;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
+ */
+ protected void configureShell(Shell shell) {
+ super.configureShell(shell);
+ shell.setText("Add a custom product configuraiton."); //$NON-NLS-1$
+ }
+
+ /**
+ * Return the initial size of the dialog
+ */
+ @Override
+ protected Point getInitialSize() {
+ return super.getInitialSize();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.jface.dialogs.Dialog#okPressed()
+ */
+ @Override
+ protected void okPressed() {
+
+ if (!isValidIDName()){
+ return;
+ }
+ newConfigString = aliasCombo.getText() + "." + variantCombo.getText();
+ super.okPressed();
+ }
+
+
+ private boolean isValidIDName(){
+ boolean isValid = true;
+
+ if (aliasCombo.getText() == null || aliasCombo.getText().length() == 0 ||
+ variantCombo.getText() == null || variantCombo.getText().length() == 0){
+ MessageDialog.openError(getShell(), "Invalid Configuration Name", "Please supply both an alias and product variant to create a new configuration.");
+ return false;
+ }
+
+ return isValid;
+ }
+
+ public String getUserCreatedVariant() {
+ return newConfigString;
+ }
+
+ private void validateData(){
+ if (variantCombo.getText().length() > 0){
+ getButton(IDialogConstants.OK_ID).setEnabled(true);
+ } else {
+ getButton(IDialogConstants.OK_ID).setEnabled(false);
+ return;
+ }
+
+ if (aliasCombo.getText().length() > 0){
+ getButton(IDialogConstants.OK_ID).setEnabled(true);
+ } else {
+ getButton(IDialogConstants.OK_ID).setEnabled(false);
+ return;
+ }
+ }
+
+}
--- a/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/sdk/ui/NewPluginChecker.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/sdk/ui/NewPluginChecker.java Wed Aug 25 12:42:09 2010 -0500
@@ -16,21 +16,25 @@
*/
package com.nokia.carbide.cpp.internal.sdk.ui;
-import com.nokia.carbide.cpp.internal.sdk.core.model.DynamicFeatureInstaller;
-import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
-import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
-import com.nokia.carbide.cpp.sdk.ui.SDKUIPlugin;
-import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils;
+import java.io.File;
+import java.util.List;
import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchWindow;
-import java.io.File;
-import java.util.List;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildInfo;
+import com.nokia.carbide.cpp.internal.sdk.core.model.DynamicFeatureInstaller;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
+import com.nokia.carbide.cpp.sdk.ui.SDKUIPlugin;
+import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils;
@SuppressWarnings("restriction")
public class NewPluginChecker {
@@ -50,25 +54,26 @@
boolean installed = false;
boolean oneSDKWasScanned = false;
for (ISymbianSDK sdk : sdkList) {
-
- if (sdk.isPreviouslyScanned() == false) {
- oneSDKWasScanned = true;
- // XML was parsed, now try to run the feature installer
- sdk.setPreviouslyScanned(true);
- File featureDir = new File(sdk.getEPOCROOT() + SDK_FEATURE_SUBDIR);
- try {
- DynamicFeatureInstaller installer = new DynamicFeatureInstaller(featureDir, null);
- if (installer.install()) {
- installed = true;
+ ISBSv1BuildInfo sbsv1BuildInfo = (ISBSv1BuildInfo)sdk.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER);
+ if (sbsv1BuildInfo != null) {
+ if (sbsv1BuildInfo.isPreviouslyScanned() == false) {
+ oneSDKWasScanned = true;
+ // XML was parsed, now try to run the feature installer
+ sbsv1BuildInfo.setPreviouslyScanned(true);
+ File featureDir = new File(sdk.getEPOCROOT() + SDK_FEATURE_SUBDIR);
+ try {
+ DynamicFeatureInstaller installer = new DynamicFeatureInstaller(featureDir, null);
+ if (installer.install()) {
+ installed = true;
+ }
+ } catch (Exception e) {
+ // Boog 8383: We should fail silently, since this will not break anything and may SDKs will not have any documentation
+ // Otherwise, these errors will be logged every time this check is done (workspace is opened)
+ // Originally, this was used to install MBS build support, but now is only used for SDK documentation
+ // ResourcesPlugin.getPlugin().getLog().log(new Status(IStatus.ERROR, SDKCorePlugin.PLUGIN_ID, IStatus.ERROR, "Unable to install plug-ins dynamically.", e));
}
- } catch (Exception e) {
- // Boog 8383: We should fail silently, since this will not break anything and may SDKs will not have any documentation
- // Otherwise, these errors will be logged every time this check is done (workspace is opened)
- // Originally, this was used to install MBS build support, but now is only used for SDK documentation
- // ResourcesPlugin.getPlugin().getLog().log(new Status(IStatus.ERROR, SDKCorePlugin.PLUGIN_ID, IStatus.ERROR, "Unable to install plug-ins dynamically.", e));
}
}
-
}
if (oneSDKWasScanned) {
--- a/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/sdk/ui/SDKPreferencePage.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/sdk/ui/SDKPreferencePage.java Wed Aug 25 12:42:09 2010 -0500
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "Eclipse Public License v1.0"
@@ -17,22 +17,32 @@
package com.nokia.carbide.cpp.internal.sdk.ui;
import java.io.File;
-import java.util.ArrayList;
+import java.text.MessageFormat;
+import java.util.Iterator;
import java.util.List;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.CheckboxTableViewer;
+import org.eclipse.jface.viewers.ColumnViewer;
+import org.eclipse.jface.viewers.ColumnViewerEditor;
+import org.eclipse.jface.viewers.ColumnViewerEditorActivationEvent;
+import org.eclipse.jface.viewers.ColumnViewerEditorActivationStrategy;
+import org.eclipse.jface.viewers.EditingSupport;
import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITableColorProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.TableViewerColumn;
+import org.eclipse.jface.viewers.TableViewerEditor;
+import org.eclipse.jface.viewers.TextCellEditor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
@@ -44,541 +54,600 @@
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.PlatformUI;
import com.nokia.carbide.cpp.internal.api.sdk.SymbianBuildContextDataCache;
-import com.nokia.carbide.cpp.internal.sdk.core.model.SDKManager;
+import com.nokia.carbide.cpp.internal.sdk.core.model.SymbianSDK;
import com.nokia.carbide.cpp.sdk.core.ISDKManager;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
-import com.nokia.carbide.cpp.sdk.ui.SDKUIPlugin;
import com.nokia.carbide.cpp.sdk.ui.shared.AddSDKDialog;
+import com.nokia.carbide.cpp.ui.TextAndDialogCellEditor;
+import com.nokia.cpp.internal.api.utils.ui.BrowseDialogUtils;
public class SDKPreferencePage
extends PreferencePage
implements IWorkbenchPreferencePage {
- ISDKManager sdkMgr;
+ private class SDKLabelProvider extends LabelProvider implements ITableLabelProvider, ITableColorProvider {
+ public Image getColumnImage(Object element, int columnIndex) {
+ return null;
+ }
+
+ public String getColumnText(Object element, int columnIndex) {
+ ISymbianSDK sdk = (ISymbianSDK) element;
+ switch (columnIndex) {
+ case 1:
+ return sdk.getUniqueId();
+ case 2:
+ return sdk.getEPOCROOT();
+ default:
+ return "";
+ }
+ }
+
+ public Color getForeground(Object element, int columnIndex) {
+ ISymbianSDK sdk = (ISymbianSDK) element;
+ return updateSDKcolor(sdk);
+ }
+
+ public Color getBackground(Object element, int columnIndex) {
+ return white;
+ }
+ }
+
+ private class IdEditingSupport extends EditingSupport {
+ private TextCellEditor editor;
+
+ public IdEditingSupport(ColumnViewer viewer) {
+ super(viewer);
+ editor = new TextCellEditor((Composite) viewer.getControl());
+ }
+
+ @Override
+ protected boolean canEdit(Object element) {
+ if (element instanceof ISymbianSDK) {
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ protected CellEditor getCellEditor(Object element) {
+ return editor;
+ }
+
+ @Override
+ protected Object getValue(Object element) {
+ ISymbianSDK sdk = (ISymbianSDK) element;
+ return sdk.getUniqueId();
+ }
+
+ @Override
+ protected void setValue(Object element, Object value) {
+ String sdkID = value.toString();
+
+ // check for spaces in ID
+ if (sdkID.contains(" ")){ //$NON-NLS-1$
+ MessageDialog.openError(getShell(), Messages.getString("AddSDKDialog.Invalid_SDK_ID"), Messages.getString("AddSDKDialog.SDK_ID_No_Spaces")); //$NON-NLS-1$ //$NON-NLS-2$
+ return;
+ }
+
+ ISymbianSDK sdk = (ISymbianSDK) element;
+ ((SymbianSDK)sdk).setUniqueId(sdkID);
+ SDKCorePlugin.getSDKManager().updateSDK(sdk);
+ getViewer().refresh();
+ }
+ }
+
+ private class LocationEditingSupport extends EditingSupport {
+ private LocationCellEditor editor;
+
+ public LocationEditingSupport(ColumnViewer viewer) {
+ super(viewer);
+ editor = new LocationCellEditor((Composite) viewer.getControl());
+ }
+
+ @Override
+ protected boolean canEdit(Object element) {
+ if (element instanceof ISymbianSDK) {
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ protected CellEditor getCellEditor(Object element) {
+ return editor;
+ }
+
+ @Override
+ protected Object getValue(Object element) {
+ ISymbianSDK sdk = (ISymbianSDK) element;
+ return sdk.getEPOCROOT();
+ }
+
+ @Override
+ protected void setValue(Object element, Object value) {
+ ISymbianSDK sdk = (ISymbianSDK) element;
+ ((SymbianSDK)sdk).setEPOCROOT(value.toString());
+ SDKCorePlugin.getSDKManager().updateSDK(sdk);
+ getViewer().refresh();
+ }
+ }
+
+ private class LocationCellEditor extends TextAndDialogCellEditor {
+ private Button button;
+ private Text text;
+
+ public LocationCellEditor(Composite parent) {
+ super(parent);
+ }
+
+ @Override
+ protected Control createContents(Composite parent) {
+ text = (Text) super.createContents(parent);
+ return text;
+ }
+
+ @Override
+ protected Control createControl(Composite parent) {
+ Control control = super.createControl(parent);
+ button = getButton();
+ button.setText(Messages.getString("SDKPreferencePage.Browse_Location_Label")); //$NON-NLS-1$
+ return control;
+ }
+
+ @Override
+ protected Object openDialogBox(Control cellEditorWindow) {
+ DirectoryDialog dialog = new DirectoryDialog(getShell(), SWT.OPEN);
+ BrowseDialogUtils.initializeFrom(dialog, text);
+ return dialog.open();
+ }
+ }
+
+ private class SDKViewerStrategy extends ColumnViewerEditorActivationStrategy {
+ public SDKViewerStrategy(ColumnViewer viewer) {
+ super(viewer);
+ }
+
+ @Override
+ protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
+ return (event.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION);
+ }
+ }
+
+ private ISDKManager sdkMgr;
+ private List<ISymbianSDK> sdkList;
private CheckboxTableViewer sdkListTableViewer;
- private List<ISymbianSDK> sdkList;
- private Button sdkpropertiesButton;
- private Button removeSdkButton;
- private Button addNewSdkButton;
- private Button rescanNowButton;
-
- private Label epocrootLabel;
- private Label availablePlatformsLabel;
- private Label osVersionLabel;
- private Label diagnosticCheckLabel;
-
- private Button listenForDevicesXMLChangeButton;
-
- private static final String EPOCROOT_LABEL = "EPOCROOT: "; //$NON-NLS-1$
- private static final String PLATFORMS_LABEL = "Available Platforms: "; //$NON-NLS-1$
- private static final String DIAGNOSTIC_CHECK_LABEL = "Diagnostic Check: "; //$NON-NLS-1$
- private static final String OS_VERSION_LABEL = "OS Version: "; //$NON-NLS-1$
-
- private Color RED;
- private Color BLACK;
- private Color GRAY;
- Shell shell;
-
+ private Button addButton;
+ private Button deleteButton;
+ private Button propertiesButton;
+ private Button rescanButton;
+ private Label iconLabel;
+ private Label statusLabel;
+
+ private Color black;
+ private Color gray;
+ private Color red;
+ private Color white;
+
+ /**
+ * Constructor.
+ */
public SDKPreferencePage() {
super();
-
- }
-
- @Override
- protected Control createContents(Composite parent) {
- return null;
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.jface.preference.PreferencePage#createControl(org.eclipse.swt.widgets.Composite)
+ */
+ public void createControl(Composite parent){
+ if (sdkMgr == null) {
+ sdkMgr = SDKCorePlugin.getSDKManager();
+ }
+ if (sdkMgr == null) {
+ return;
+ }
+
+ super.createControl(parent);
+
+ // Hide "Restore Defaults" button
+ getDefaultsButton().setVisible(false);
+
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(super.getControl(), SDKUIHelpIds.SDK_PREFERENCES_PAGE);
+ }
+
+ /*
+ * (non-Javadoc)
* @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
*/
public void init(IWorkbench workbench) {
- if (sdkMgr == null)
+ if (sdkMgr == null) {
sdkMgr = SDKCorePlugin.getSDKManager();
- if (sdkMgr != null)
- sdkList = sdkMgr.getSDKList();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
- */
- public void createControl(Composite parent) {
-
- IPreferenceStore prefsStore = SDKUIPlugin.getDefault().getPreferenceStore();
- if (sdkMgr == null)
- sdkMgr = SDKCorePlugin.getSDKManager();
- if (sdkMgr == null){
- return;
}
-
- shell = parent.getShell();
- RED = shell.getDisplay().getSystemColor(SWT.COLOR_RED);
- BLACK = shell.getDisplay().getSystemColor(SWT.COLOR_BLACK);
- GRAY = shell.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND);
-
- // check that devices.xml actually exists
- if (sdkMgr instanceof SDKManager)
- ((SDKManager) sdkMgr).checkDevicesXMLExistAndCreate();
-
- Composite content = new Composite(parent, SWT.NONE);
- setControl(content);
- final GridLayout gridLayout = new GridLayout();
- gridLayout.numColumns = 2;
- content.setLayout(gridLayout);
-
- final Group availableSymbianOsGroup = new Group(content, SWT.NONE);
- availableSymbianOsGroup.setToolTipText(Messages.getString("SDKPreferencePage.OS_Group_ToolTip")); //$NON-NLS-1$
- final GridData availableSymbianOsGridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
- availableSymbianOsGridData.widthHint = 350;
- availableSymbianOsGroup.setText(Messages.getString("SDKPreferencePage.Available_SDKs_Label")); //$NON-NLS-1$
- availableSymbianOsGroup.setLayoutData(availableSymbianOsGridData);
- availableSymbianOsGroup.setLayout(new GridLayout());
-
- sdkListTableViewer = CheckboxTableViewer.newCheckList(availableSymbianOsGroup, SWT.BORDER);
- sdkListTableViewer.getTable().setLayoutData(availableSymbianOsGridData);
-
- final Composite composite = new Composite(content, SWT.NONE);
- composite.setLayoutData(new GridData());
- final GridLayout gridLayout_1 = new GridLayout();
- gridLayout_1.makeColumnsEqualWidth = true;
- composite.setLayout(gridLayout_1);
+ if (sdkMgr != null) {
+ sdkList = sdkMgr.getSDKList();
+ }
+ }
- removeSdkButton = new Button(composite, SWT.NONE);
- removeSdkButton.setToolTipText(Messages.getString("SDKPreferencePage.Delete_SDK_ToolTip")); //$NON-NLS-1$
- final GridData gridData = new GridData(SWT.LEFT, SWT.TOP, true, false);
- removeSdkButton.setLayoutData(gridData);
- removeSdkButton.setText(Messages.getString("SDKPreferencePage.Remove_SDK_Label")); //$NON-NLS-1$
- addButtonListener(removeSdkButton);
-
- addNewSdkButton = new Button(composite, SWT.NONE);
- addNewSdkButton.setToolTipText(Messages.getString("SDKPreferencePage.Add_New_SDK_ToolTip")); //$NON-NLS-1$
- addNewSdkButton.setLayoutData(gridData);
- addNewSdkButton.setText(Messages.getString("SDKPreferencePage.Add_New_SDK_Label")); //$NON-NLS-1$
- addButtonListener(addNewSdkButton);
-
- sdkpropertiesButton = new Button(composite, SWT.NONE);
- sdkpropertiesButton.setToolTipText(Messages.getString("SDKPreferencePage.SDK_Props_Button_ToolTip")); //$NON-NLS-1$
- sdkpropertiesButton.setLayoutData(gridData);
- sdkpropertiesButton.setText(Messages.getString("SDKPreferencePage.SDK_Props_Button_Label")); //$NON-NLS-1$
- addButtonListener(sdkpropertiesButton);
-
- final Group sdkInformationGroup = new Group(content, SWT.NONE);
- sdkInformationGroup.setToolTipText(Messages.getString("SDKPreferencePage.SDK_Info_ToolTip")); //$NON-NLS-1$
- final GridData sdkInfoGridData = new GridData(SWT.FILL, SWT.FILL, true, true);
- sdkInfoGridData.widthHint = 350;
- sdkInformationGroup.setText(Messages.getString("SDKPreferencePage.SDK_Info_Label")); //$NON-NLS-1$
- sdkInformationGroup.setLayoutData(sdkInfoGridData);
- sdkInformationGroup.setLayout(new GridLayout());
-
- epocrootLabel = new Label(sdkInformationGroup, SWT.WRAP);
- epocrootLabel.setToolTipText(Messages.getString("SDKPreferencePage.EPOC32_Loc_ToolTip")); //$NON-NLS-1$
- epocrootLabel.setLayoutData(new GridData(300, SWT.DEFAULT));
- epocrootLabel.setText("EPOCROOT:"); //$NON-NLS-1$
-
- osVersionLabel = new Label(sdkInformationGroup, SWT.WRAP);
- osVersionLabel.setToolTipText(Messages.getString("SDKPreferencePage.OSVesions_ToolTip")); //$NON-NLS-1$
- osVersionLabel.setLayoutData(new GridData(300, SWT.DEFAULT));
- osVersionLabel.setText(Messages.getString("SDKPreferencePage.OSVersion_Label")); //$NON-NLS-1$
-
- availablePlatformsLabel = new Label(sdkInformationGroup, SWT.WRAP);
- availablePlatformsLabel.setToolTipText(Messages.getString("SDKPreferencePage.Platforms_ToolTip")); //$NON-NLS-1$
- availablePlatformsLabel.setLayoutData(new GridData(300, SWT.DEFAULT));
- availablePlatformsLabel.setText(Messages.getString("SDKPreferencePage.Available_Platforms")); //$NON-NLS-1$
-
- diagnosticCheckLabel = new Label(sdkInformationGroup, SWT.WRAP);
- diagnosticCheckLabel.setToolTipText(Messages.getString("SDKPreferencePage.Diagnostic_Check_ToolTip")); //$NON-NLS-1$
- diagnosticCheckLabel.setLayoutData(sdkInfoGridData);
- diagnosticCheckLabel.setText(Messages.getString("SDKPreferencePage.Diagnostic_Check_Label")); //$NON-NLS-1$
- new Label(content, SWT.NONE);
-
- listenForDevicesXMLChangeButton = new Button(content, SWT.CHECK);
- listenForDevicesXMLChangeButton.setText(Messages.getString("SDKPreferencePage.listerForDevicesXML"));
- listenForDevicesXMLChangeButton.setToolTipText(Messages.getString("SDKPreferencePage.listerForDevicesXML_Tooltip")); //$NON-NLS-1$
- listenForDevicesXMLChangeButton.setSelection(prefsStore.getBoolean(SDKUIPreferenceConstants.LISTEN_FOR_DEVICES_XML_CHANGE));
-
- new Label(content, SWT.WRAP); // filler
-
- rescanNowButton = new Button(content, SWT.NONE);
- rescanNowButton.setToolTipText(Messages.getString("SDKPreferencePage.Rescan_Button_ToolTip")); //$NON-NLS-1$
- rescanNowButton.setLayoutData(new GridData());
- rescanNowButton.setText(Messages.getString("SDKPreferencePage.Rescan_Button_Label")); //$NON-NLS-1$
- addButtonListener(rescanNowButton);
- new Label(content, SWT.NONE);
-
- // Build the checked table of SDKs
- addSDKComponentTableItems();
-
- ISymbianSDK sdk = (ISymbianSDK)sdkListTableViewer.getElementAt(0);
- if (sdk != null){
- sdkListTableViewer.setSelection(new StructuredSelection(sdk), true);
- setSelectedSDKInfoText(sdk);
- }
-
-
- PlatformUI.getWorkbench().getHelpSystem().setHelp(super.getControl(), SDKUIHelpIds.SDK_PREFERENCES_PAGE);
- }
-
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.jface.preference.PreferencePage#performOk()
+ */
public boolean performOk() {
-
- IPreferenceStore prefsStore = SDKUIPlugin.getDefault().getPreferenceStore();
- prefsStore.setValue(SDKUIPreferenceConstants.LISTEN_FOR_DEVICES_XML_CHANGE, listenForDevicesXMLChangeButton.getSelection());
-
- for (ISymbianSDK sdk : sdkMgr.getSDKList()){
- sdk.setEnabled(false);
+ // Remember which SDK is enabled
+ for (ISymbianSDK sdk : sdkMgr.getSDKList()) {
+ ((SymbianSDK)sdk).setEnabled(false);
}
Object[] sdkObjects = sdkListTableViewer.getCheckedElements();
for (Object currObj : sdkObjects){
if (currObj instanceof ISymbianSDK){
ISymbianSDK sdk = (ISymbianSDK)currObj;
- sdk.setEnabled(true);
+ ((SymbianSDK)sdk).setEnabled(true);
}
}
-
- ISDKManager sdkMgr =SDKCorePlugin.getSDKManager();
- sdkMgr.updateCarbideSDKCache();
-
- return super.performOk();
- }
-
- private void addSDKComponentTableItems() {
- sdkListTableViewer.setContentProvider(new SDKTableComponentsContentProvider());
- sdkListTableViewer.setLabelProvider(new SDKTableComponentsLabelProvider());
- Table lTable = sdkListTableViewer.getTable();
-
- sdkList = SDKCorePlugin.getSDKManager().getSDKList();
- sdkListTableViewer.setInput(sdkList);
- lTable.setToolTipText(Messages.getString("SDKPreferencePage.List_of_Available_SDKs_ToolTip")); //$NON-NLS-1$
- lTable.setVisible(true);
- addSDKTableViewerSelectionListener();
- //lTable.setLayoutData(grid);
- if (sdkList == null || sdkList.size() == 0){
- diagnosticCheckLabel.setText(DIAGNOSTIC_CHECK_LABEL + Messages.getString("SDKPreferencePage.No_SDKs_Available")); //$NON-NLS-1$
- diagnosticCheckLabel.setForeground(RED);
- diagnosticCheckLabel.setBackground(GRAY);
- } else {
- setCheckBoxes(sdkList);
- }
- }
-
- /**
- * Sets the checkbox state for enabled SDKs.
- */
- private void setCheckBoxes(List<ISymbianSDK> sdkList) {
- List<ISymbianSDK> sdkListCopy = new ArrayList<ISymbianSDK>();
- for (ISymbianSDK sdkCheck : sdkList){
- if (sdkCheck.isEnabled()){
- sdkListCopy.add(sdkCheck);
- }
- }
- sdkListTableViewer.setCheckedElements(sdkListCopy.toArray(new ISymbianSDK[sdkListCopy.size()]));
- }
-
- /**
- * Extends <code>LabelProvider</code> with the default implementation
- * and implements<code>ITableLabelProvider</code> with the methods
- * to provide the text and/or image for each column of a given element.
- * Used by table viewers.
- */
-
- static class SDKTableComponentsLabelProvider extends LabelProvider implements ITableLabelProvider, ITableColorProvider {
-
- /**
- * Returns the label image for the given column of the given element.
- * The default implementation returns null.
- *
- * @return image object
- */
- public Image getColumnImage(Object element, int columnIndex) {
- return null;
- }
- /**
- * Returns the label text for the given column of the given element.
- *
- * @return string is the label text for the given column.
- */
- public String getColumnText(Object arg0, int column) {
- if (arg0 instanceof ISymbianSDK){
- ISymbianSDK sdk = (ISymbianSDK)arg0;
- return sdk.getUniqueId();
- }
-
- return ""; //$NON-NLS-1$
- }
+ // Update cached SDK info
+ sdkMgr.updateCarbideSDKCache();
+ return super.performOk();
+ }
- private Color lBlack = Display.getDefault().getSystemColor(SWT.COLOR_BLACK);
- private Color lRed = Display.getDefault().getSystemColor(SWT.COLOR_RED);
-
- public Color getForeground(Object obj, int index) {
- if (obj instanceof ISymbianSDK) {
- ISymbianSDK sdk = (ISymbianSDK)obj;
- File epocRootTest = new File(sdk.getEPOCROOT());
- if ((sdk.getAvailablePlatforms().size() <= 0) || !epocRootTest.exists()) {
- // There are no build configs and/or no epocroot exists
- return lRed;
- } else {
- return lBlack;
- }
- }
- return null;
- }
-
- public Color getBackground(Object element, int columnIndex) {
- return null;
- }
- }
-
- /**
- * This implementation of <code>IStructuredContentProvider</code> handles
- * the case where the viewer input is an unchanging array or collection of elements.
- *
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
*/
- static class SDKTableComponentsContentProvider implements IStructuredContentProvider {
-
+ @Override
+ public Control createContents(Composite parent) {
+ // Set up colors used in this preference page
+ Shell shell = parent.getShell();
+ black = shell.getDisplay().getSystemColor(SWT.COLOR_BLACK);
+ gray = shell.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND);
+ red = shell.getDisplay().getSystemColor(SWT.COLOR_RED);
+ white = shell.getDisplay().getSystemColor(SWT.COLOR_WHITE);
+
+ Composite content = new Composite(parent, SWT.NONE);
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.numColumns = 2;
+ content.setLayout(gridLayout);
+
+ // SDK table
+ sdkListTableViewer = CheckboxTableViewer.newCheckList(content,
+ SWT.BORDER | SWT.SINGLE | SWT.FULL_SELECTION);
+ createSDKTable();
- /**
- * Returns the elements in the input
- *
- * @return array of objects.
- */
- public Object[] getElements(Object arg0) {
- if (arg0 instanceof ArrayList) {
- return ((ArrayList<?>)arg0).toArray();
- }
- return new Object[0];
- }
+ // Buttons composite
+ Composite composite1 = new Composite(content, SWT.NONE);
+ gridLayout = new GridLayout();
+ gridLayout.makeColumnsEqualWidth = true;
+ composite1.setLayout(gridLayout);
+ GridData gridData = new GridData(SWT.LEFT, SWT.TOP, true, false);
+ composite1.setLayoutData(gridData);
- public void dispose() {
- }
+ // Add button
+ addButton = new Button(composite1, SWT.NONE);
+ addButton.setLayoutData(gridData);
+ addButton.setText(Messages.getString("SDKPreferencePage.Add_Button_Label")); //$NON-NLS-1$
+ addButton.setToolTipText(Messages.getString("SDKPreferencePage.Add_Button_ToolTip")); //$NON-NLS-1$
+ addButtonListener(addButton);
+
+ // Delete button
+ deleteButton = new Button(composite1, SWT.NONE);
+ deleteButton.setLayoutData(gridData);
+ deleteButton.setText(Messages.getString("SDKPreferencePage.Delete_Button_Label")); //$NON-NLS-1$
+ deleteButton.setToolTipText(Messages.getString("SDKPreferencePage.Delete_Button_ToolTip")); //$NON-NLS-1$
+ addButtonListener(deleteButton);
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- //do nothing
- }
+ // Properties button
+ propertiesButton = new Button(composite1, SWT.NONE);
+ propertiesButton.setLayoutData(gridData);
+ propertiesButton.setText(Messages.getString("SDKPreferencePage.Properties_Button_Label")); //$NON-NLS-1$
+ propertiesButton.setToolTipText(Messages.getString("SDKPreferencePage.Properties_Button_ToolTip")); //$NON-NLS-1$
+ addButtonListener(propertiesButton);
+
+ // Status and Rescan composite
+ Composite composite2 = new Composite(content, SWT.NONE);
+ gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
+ gridData.widthHint = 350;
+ gridData.heightHint = 50;
+ composite2.setLayoutData(gridData);
+ gridLayout = new GridLayout();
+ gridLayout.numColumns = 2;
+ composite2.setLayout(gridLayout);
+
+ // IStatus icon label
+ iconLabel = new Label(composite2, SWT.NONE);
+ // IStatus text label
+ statusLabel = new Label(composite2, SWT.WRAP);
+ gridData = new GridData(SWT.LEFT, SWT.TOP, true, false);
+ gridData.verticalSpan = 2;
+ statusLabel.setLayoutData(gridData);
+
+ new Label(content, SWT.WRAP); // filler
+
+ // Rescan button
+ rescanButton = new Button(content, SWT.NONE);
+ rescanButton.setToolTipText(Messages.getString("SDKPreferencePage.Rescan_Button_ToolTip")); //$NON-NLS-1$
+ rescanButton.setText(Messages.getString("SDKPreferencePage.Rescan_Button_Label")); //$NON-NLS-1$
+ addButtonListener(rescanButton);
+
+ // Populate SDK table
+ addSDKComponentTableItems();
+ selectSDKEntry(0);
+
+ return content;
}
-
- /**
- * Sets the listener event to a button.
- *
- * @param aButton
- */
- private void addButtonListener( final Button aButton ) {
+
+ private void addButtonListener(final Button aButton) {
SelectionListener listener = new SelectionAdapter() {
- public void widgetSelected( SelectionEvent e ) {
- if (e.getSource().equals(sdkpropertiesButton)) {
- sdkpropertiesButtonAction();
- } else if (e.getSource().equals(addNewSdkButton)) {
- addNewSdkButtonAction();
- } else if (e.getSource().equals(removeSdkButton)) {
- removeSdkButtonAction();
- } else if (e.getSource().equals(rescanNowButton)) {
- rescanNowButtonAction();
+ public void widgetSelected(SelectionEvent e) {
+ if (e.getSource().equals(addButton)) {
+ handleAddButton();
+ } else if (e.getSource().equals(deleteButton)) {
+ handleDeleteButton();
+ } else if (e.getSource().equals(propertiesButton)) {
+ handlePropertiesButton();
+ } else if (e.getSource().equals(rescanButton)) {
+ handleRescanButton(false);
}
-
}
};
aButton.addSelectionListener(listener);
}
-
- private void sdkpropertiesButtonAction(){
+
+ private void addSDKComponentTableItems() {
+ sdkListTableViewer.setLabelProvider(new SDKLabelProvider());
+ sdkListTableViewer.setContentProvider(new ArrayContentProvider());
+ sdkList = sdkMgr.getSDKList();
+ sdkListTableViewer.setInput(sdkList.toArray());
+ Table table = sdkListTableViewer.getTable();
+ int count = table.getItemCount();
+ if (count < 10) { // min. number of rows
+ count = 10;
+ } else
+ if (count > 20) { // max. number of rows
+ count = 20;
+ }
+ table.setToolTipText(Messages.getString("SDKPreferencePage.List_of_Available_SDKs_ToolTip")); //$NON-NLS-1$
+ GridData gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
+ gridData.widthHint = 350;
+ gridData.heightHint = table.getItemHeight() * (count + 2);
+ table.setLayoutData(gridData);
+ setCheckedElements();
+ addSDKTableViewerListeners();
+ if (sdkList == null || sdkList.size() == 0){
+ statusError(Messages.getString("SDKPreferencePage.No_SDKs_Available_Message")); //$NON-NLS-1$
+ }
+ }
+
+ private void addSDKTableViewerListeners(){
+ sdkListTableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+ public void selectionChanged(SelectionChangedEvent event) {
+ if(event.getSelection() instanceof IStructuredSelection) {
+ IStructuredSelection selection = (IStructuredSelection)event.getSelection();
+ if (selection.size() == 1){
+ ISymbianSDK sdk = (ISymbianSDK)selection.getFirstElement();
+ deleteButton.setEnabled(true);
+ propertiesButton.setEnabled(true);
+ updateSDKStatus(sdk);
+ }
+ else {
+ deleteButton.setEnabled(false);
+ propertiesButton.setEnabled(false);
+ }
+ }
+ }
+ });
+ }
+
+ private void createSDKTable() {
+ Table table = sdkListTableViewer.getTable();
+ table.setHeaderVisible(true);
+ table.setLinesVisible(false);
+
+ SDKViewerStrategy strategy = new SDKViewerStrategy(sdkListTableViewer);
+ TableViewerEditor.create(sdkListTableViewer, strategy, ColumnViewerEditor.DEFAULT);
+
+ TableViewerColumn enabledCol = new TableViewerColumn(sdkListTableViewer, SWT.LEFT);
+ enabledCol.getColumn().setText(Messages.getString("SDKPreferencePage.SDK_Table_Enabled_Column_Label")); //$NON-NLS-1$
+ enabledCol.getColumn().setWidth(50);
+
+ TableViewerColumn idCol = new TableViewerColumn(sdkListTableViewer, SWT.LEFT);
+ idCol.setEditingSupport(new IdEditingSupport(sdkListTableViewer)); //$NON-NLS-1$
+ idCol.getColumn().setText(Messages.getString("SDKPreferencePage.SDK_Table_ID_Column_Label"));
+ idCol.getColumn().setWidth(160);
+
+ TableViewerColumn locationCol = new TableViewerColumn(sdkListTableViewer, SWT.LEFT);
+ locationCol.setEditingSupport(new LocationEditingSupport(sdkListTableViewer));
+ locationCol.getColumn().setText(Messages.getString("SDKPreferencePage.SDK_Table_Location_Column_Label")); //$NON-NLS-1$
+ locationCol.getColumn().setWidth(170);
+ }
+
+ public void handleAddButton() {
+ AddSDKDialog dialog = new AddSDKDialog(getShell());
+ if (dialog.open() == AddSDKDialog.OK){
+ sdkList = sdkMgr.getSDKList();
+ sdkListTableViewer.setInput(sdkList.toArray());
+ setCheckedElements();
+ sdkListTableViewer.refresh();
+ selectSDKEntry(sdkList.size() - 1);
+ }
+ }
+
+ public void handleDeleteButton() {
ISymbianSDK sdk = (ISymbianSDK)((IStructuredSelection)sdkListTableViewer.getSelection()).getFirstElement();
+ int index = sdkListTableViewer.getTable().getSelectionIndex();
if (sdk != null){
- SDKPropertiesDialog sdkPropDlg = new SDKPropertiesDialog(getShell(), this, sdk);
- if (sdkPropDlg.open() == SDKPropertiesDialog.OK){
+ if (sdkMgr.removeSDK(sdk.getUniqueId())){
+ sdkList = sdkMgr.getSDKList();
+ sdkListTableViewer.setInput(sdkList.toArray());
+ if (index > 0) {
+ selectSDKEntry(index - 1);
+ } else {
+ selectSDKEntry(index);
+ }
sdkListTableViewer.refresh();
- setSelectedSDKInfoText(sdk);
- // forcible rescan; dump cache
- SymbianBuildContextDataCache.refreshForSDKs(new ISymbianSDK[] { sdk });
- rescanSDKs(false);
}
+ }
+ }
+
+ public void handlePropertiesButton() {
+ ISymbianSDK sdk = (ISymbianSDK)((IStructuredSelection)sdkListTableViewer.getSelection()).getFirstElement();
+ int index = sdkListTableViewer.getTable().getSelectionIndex();
+ if (sdk != null){
+ SDKPropertiesDialog sdkPropDlg = new SDKPropertiesDialog(getShell(), sdk);
+ sdkPropDlg.open();
+ selectSDKEntry(index);
} else {
MessageDialog.openError(getShell(), Messages.getString("SDKPreferencePage.No_SDK_Selected"), Messages.getString("SDKPreferencePage.No_selected_SDK_detected")); //$NON-NLS-1$ //$NON-NLS-2$
}
+ }
- }
-
- private void removeSdkButtonAction(){
- ISymbianSDK sdk = (ISymbianSDK)((IStructuredSelection)sdkListTableViewer.getSelection()).getFirstElement();
- if (sdk != null){
- if (MessageDialog.openConfirm(getShell(), Messages.getString("SDKPreferencePage.Confirm_Delete") + sdk.getUniqueId() , Messages.getString("SDKPreferencePage.Confirm_Delete_Msg"))){ //$NON-NLS-1$ //$NON-NLS-2$
- if (sdkMgr.removeSDK(sdk.getUniqueId())){
- sdkList.remove(sdk);
- sdkListTableViewer.refresh();
- sdk = (ISymbianSDK)sdkListTableViewer.getElementAt(0);
- if (sdk != null){
- sdkListTableViewer.setSelection(new StructuredSelection(sdk), true);
- setSelectedSDKInfoText(sdk);
- }
- }
- }
- }
- }
-
- private void addNewSdkButtonAction(){
-
- AddSDKDialog dialog = new AddSDKDialog(getShell());
- if (dialog.open() == AddSDKDialog.OK){
- addSDKComponentTableItems();
- sdkListTableViewer.refresh();
- }
- }
-
- private void rescanNowButtonAction(){
+ public void handleRescanButton(boolean fromPortalPage) {
// forcible rescan; dump cache
SymbianBuildContextDataCache.refreshForSDKs(null);
- rescanSDKs(true);
+ startRescanning();
+ sdkMgr.scanSDKs();
+ finishRescanning();
}
-
- private void rescanSDKs(boolean scanForNewPlugins){
+
+ private void startRescanning() {
+ rescanButton.setText(Messages.getString("SDKPreferencePage.Rescanning_Button_Label")); //$NON-NLS-1$
+ rescanButton.setEnabled(false);
+ }
+
+ private void finishRescanning(){
sdkListTableViewer.getTable().clearAll();
sdkListTableViewer.refresh();
sdkList.clear();
- ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
- sdkMgr.scanSDKs();
sdkList = sdkMgr.getSDKList();
addSDKComponentTableItems();
sdkListTableViewer.refresh();
-
- ISymbianSDK sdk = (ISymbianSDK)sdkListTableViewer.getElementAt(0);
+ selectSDKEntry(0);
+ rescanButton.setText(Messages.getString("SDKPreferencePage.Rescan_Button_Label")); //$NON-NLS-1$
+ rescanButton.setEnabled(true);
+ }
+
+ public void selectSDKEntry(int index) {
+ ISymbianSDK sdk = (ISymbianSDK)sdkListTableViewer.getElementAt(index);
if (sdk != null){
sdkListTableViewer.setSelection(new StructuredSelection(sdk), true);
- setSelectedSDKInfoText(sdk);
+ sdkListTableViewer.getTable().setFocus();
}
-
- if (scanForNewPlugins){
- NewPluginChecker.checkForNewlyInstalledPlugins(SDKUIPlugin.getDefault().getWorkbench());
+ updateSDKStatus(sdk);
+ }
+
+ private void setCheckedElements() {
+ Iterator<ISymbianSDK> iterator = sdkList.iterator();
+ while (iterator.hasNext()) {
+ ISymbianSDK sdk = iterator.next();
+ sdkListTableViewer.setChecked(sdk, sdk.isEnabled());
}
}
-
- /**
- * Sets the selection listener action event to the CheckboxTableViewer.
- *
- * @param sdkTable
- */
- private void addSDKTableViewerSelectionListener(){
- sdkListTableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
+
+ private void statusClear() {
+ iconLabel.setImage(null);
+ statusLabel.setText("");
+ }
- if(event.getSelection() instanceof IStructuredSelection) {
- IStructuredSelection selection = (IStructuredSelection)event.getSelection();
- if (selection.size() == 1){
- ISymbianSDK sdk = (ISymbianSDK)selection.getFirstElement();
- sdkpropertiesButton.setEnabled(true);
- removeSdkButton.setEnabled(true);
- setSelectedSDKInfoText(sdk);
-
- }else {
- sdkpropertiesButton.setEnabled(false);
- removeSdkButton.setEnabled(false);
- }
- }
- }
- } );
+ private void statusError(String msg) {
+ String errorMsg = "Error : " + msg;
+ iconLabel.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_ERROR_TSK));
+ statusLabel.setText(errorMsg);
+ statusLabel.setForeground(red);
+ statusLabel.setBackground(gray);
+ statusLabel.update();
+ statusLabel.getParent().layout(true);
}
-
- private void setSelectedSDKInfoText(ISymbianSDK sdk){
- boolean sdkHasError = false;
+
+ private void statusWarning(String msg) {
+ String warningMsg = "Warning : " + msg; //$NON-NLS-1$
+ iconLabel.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_WARN_TSK));
+ statusLabel.setText(warningMsg);
+ statusLabel.setForeground(black);
+ statusLabel.setBackground(gray);
+ statusLabel.update();
+ statusLabel.getParent().layout(true);
+ }
+
+ private void statusInfo(String msg) {
+ String infoMsg = "Info : " + msg; //$NON-NLS-1$
+ iconLabel.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_INFO_TSK));
+ statusLabel.setText(infoMsg);
+ statusLabel.setForeground(black);
+ statusLabel.setBackground(gray);
+ statusLabel.update();
+ statusLabel.getParent().layout(true);
+ }
+
+ private Color updateSDKcolor(ISymbianSDK sdk){
+ Color color = black;
+
+ // Check SDK EPOCROOT
String epocRootStr = sdk.getEPOCROOT();
- File epocRootTest = new File(epocRootStr);
- if (!epocRootTest.exists()) {
- sdkHasError = true;
- epocrootLabel.setText(EPOCROOT_LABEL + epocRootStr + Messages.getString("SDKPreferencePage.Path_Does_Not_Exist")); //$NON-NLS-1$
- epocrootLabel.setForeground(RED);
- epocrootLabel.setBackground(GRAY);
- }
- else {
- epocrootLabel.setText(EPOCROOT_LABEL + epocRootStr);
- epocrootLabel.setForeground(BLACK);
- epocrootLabel.setBackground(GRAY);
- }
-
- // Set platforms
- if (sdk.getAvailablePlatforms().size() == 0) {
- sdkHasError = true;
- availablePlatformsLabel.setText(PLATFORMS_LABEL + Messages.getString("SDKPreferencePage.Platforms_cannot_be_determined")); //$NON-NLS-1$
- availablePlatformsLabel.setForeground(RED);
- availablePlatformsLabel.setBackground(GRAY);
- }
- else {
- availablePlatformsLabel.setText(PLATFORMS_LABEL + sdk.getAvailablePlatforms().toString());
- availablePlatformsLabel.setForeground(BLACK);
- availablePlatformsLabel.setBackground(GRAY);
+ IPath epocRoot = new Path(epocRootStr);
+ epocRoot = epocRoot.append("epoc32");
+ File epocRootFile = epocRoot.toFile();
+ if (!epocRootFile.exists()) {
+ color = red;
}
- // Set OS Version
- if (sdk.getOSVersion().getMajor() == 0) {
- sdkHasError = true;
- osVersionLabel.setText(OS_VERSION_LABEL + Messages.getString("SDKPreferencePage.OS_Version_Cannot_Be_Determined")); //$NON-NLS-1$
- osVersionLabel.setForeground(RED);
- osVersionLabel.setBackground(GRAY);
- }
- else if (!SDKCorePlugin.SUPPORTS_SBSV1_BUILDER &&
- (sdk.getOSVersion().getMajor() < 9 ||
- (sdk.getOSVersion().getMajor() == 9 && sdk.getOSVersion().getMinor() <= 4))){
- sdkHasError = true;
- osVersionLabel.setText(OS_VERSION_LABEL + "This OS version is not supported: " + sdk.getOSVersion());
- osVersionLabel.setForeground(RED);
- osVersionLabel.setBackground(GRAY);
-
- } else {
- if (sdk.getSDKOSBranch().length() > 0) {
- osVersionLabel.setText(OS_VERSION_LABEL + sdk.getOSVersion().toString() + " (Branch = \"" + sdk.getSDKOSBranch() + "\")"); //$NON-NLS-1$ //$NON-NLS-2$
- } else {
- osVersionLabel.setText(OS_VERSION_LABEL + sdk.getOSVersion().toString());
- }
- osVersionLabel.setForeground(BLACK);
- osVersionLabel.setBackground(GRAY);
- }
-
- // Get diagnostic check
- //if (lsdk.getSomeError().size() <= 0) {
- if (sdkHasError){
- diagnosticCheckLabel.setText(DIAGNOSTIC_CHECK_LABEL + Messages.getString("SDKPreferencePage.SDK_Cannot_Be_Used")); //$NON-NLS-1$
- diagnosticCheckLabel.setForeground(RED);
- diagnosticCheckLabel.setBackground(GRAY);
+ // Check SDK OS Version
+ if ((sdk.getOSVersion().getMajor() < 9 ||
+ (sdk.getOSVersion().getMajor() == 9 && sdk.getOSVersion().getMinor() < 4))) {
+ color = red;
}
- else {
- // check for other types of errors:
- if (!sdk.getToolsPath().toFile().exists()){
- diagnosticCheckLabel.setText(DIAGNOSTIC_CHECK_LABEL + Messages.getString("SDKPreferencePage.No_Tools_Path") + " " + sdk.getToolsPath().toOSString()); //$NON-NLS-1$
- diagnosticCheckLabel.setForeground(RED);
- diagnosticCheckLabel.setBackground(GRAY);
- } else if (!sdk.getIncludePath().toFile().exists()){
- diagnosticCheckLabel.setText(DIAGNOSTIC_CHECK_LABEL + Messages.getString("SDKPreferencePage.No_Include_Path") + " " + sdk.getIncludePath().toOSString()); //$NON-NLS-1$
- diagnosticCheckLabel.setForeground(RED);
- diagnosticCheckLabel.setBackground(GRAY);
- } else if ( ((sdk.getPrefixFile() == null) || (!sdk.getPrefixFile().exists())) && (sdk.getOSVersion().getMajor() >= 9)){
- diagnosticCheckLabel.setText(DIAGNOSTIC_CHECK_LABEL + Messages.getString("SDKPreferencePage.No_HRH_File")); //$NON-NLS-1$
- diagnosticCheckLabel.setForeground(RED);
- diagnosticCheckLabel.setBackground(GRAY);
- } else if ( ((sdk.isS60()) && sdk.getSDKVersion().getMajor() == 0)){
- diagnosticCheckLabel.setText(DIAGNOSTIC_CHECK_LABEL + Messages.getString("SDKPreferencePage.No_SDK_Version")); //$NON-NLS-1$
- diagnosticCheckLabel.setForeground(RED);
- diagnosticCheckLabel.setBackground(GRAY);
- } else {
- // Everything is OK....
- diagnosticCheckLabel.setText(DIAGNOSTIC_CHECK_LABEL + "OK\r\n "); //$NON-NLS-1$
- diagnosticCheckLabel.setForeground(BLACK);
- diagnosticCheckLabel.setBackground(GRAY);
+
+ return color;
+ }
+
+ private void updateSDKStatus(ISymbianSDK sdk){
+ // No SDK selected
+ if (sdk == null) {
+ statusWarning(Messages.getString("SDKPreferencePage.No_SDKs_Available_Message")); //$NON-NLS-1$
+ return;
+ } else {
+ // Check SDK EPOCROOT
+ String epocRootStr = sdk.getEPOCROOT();
+ IPath epocRoot = new Path(epocRootStr);
+ epocRoot = epocRoot.append("epoc32");
+ File epocRootFile = epocRoot.toFile();
+ if (!epocRootFile.exists()) {
+ statusError(Messages.getString("SDKPreferencePage.Invalid_Location_Message")); //$NON-NLS-1$
+ return;
}
+
+ // Check SDK OS Version
+ if ((sdk.getOSVersion().getMajor() < 9 ||
+ (sdk.getOSVersion().getMajor() == 9 && sdk.getOSVersion().getMinor() < 4))) {
+ statusError(MessageFormat.format(
+ Messages.getString("SDKPreferencePage.Invalid_SDK_Message"), //$NON-NLS-1$
+ sdk.getOSVersion().toString())); //$NON-NLS-1$
+ return;
+ }
+
+ // No error
+ statusClear();
}
- }
-
- protected List<ISymbianSDK> getSDKList(){
- return sdkList;
}
-
- protected ISDKManager getSDKManager(){
- return sdkMgr;
+
+ public void updateForPortalLayer() {
+ addButton.setVisible(false);
+ deleteButton.setVisible(false);
+ propertiesButton.setVisible(false);
+ rescanButton.setVisible(false);
+ getApplyButton().setVisible(false);
+ GridLayout gridLayout = new GridLayout();
+ sdkListTableViewer.getTable().getParent().setLayout(gridLayout);
}
+
}
\ No newline at end of file
--- a/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/sdk/ui/SDKPropertiesDialog.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/sdk/ui/SDKPropertiesDialog.java Wed Aug 25 12:42:09 2010 -0500
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "Eclipse Public License v1.0"
@@ -16,20 +16,9 @@
*/
package com.nokia.carbide.cpp.internal.sdk.ui;
-import java.io.File;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import org.eclipse.core.runtime.IPath;
import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.dialogs.TrayDialog;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CCombo;
-import org.eclipse.swt.custom.TableEditor;
-import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
@@ -40,41 +29,25 @@
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.PlatformUI;
-import org.osgi.framework.Version;
-import com.nokia.carbide.cpp.sdk.core.ISDKManager;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
-import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
public class SDKPropertiesDialog extends TrayDialog {
- SDKPreferencePage sdkPrefs;
ISymbianSDK sdk;
- private CCombo osVersionCombo;
- private CCombo sdkVersionCombo;
- private CCombo sdkNameCombo;
- private CCombo isDefaultCombo;
- private Text sdkIDText;
- private Text epocRootText;
-// private Button browseEPOCROOTButton;
private Table propsTable;
- private static String DEFAULT_DEVICE_YES = "yes"; //$NON-NLS-1$
- private static String DEFAULT_DEVICE_NO = "no"; //$NON-NLS-1$
-
/**
* Create the dialog
* @param parentShell
*/
- public SDKPropertiesDialog(Shell parentShell, SDKPreferencePage sdkPrefs, ISymbianSDK sdk) {
+ public SDKPropertiesDialog(Shell parentShell, ISymbianSDK sdk) {
super(parentShell);
- this.sdkPrefs = sdkPrefs;
this.sdk = sdk;
setShellStyle(getShellStyle() | SWT.RESIZE);
}
-
+
/* (non-Javadoc)
* @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
*/
@@ -112,82 +85,10 @@
sdkPropCol2.setWidth(287);
sdkPropCol2.setText(Messages.getString("SDKPropertiesDialog.Value")); //$NON-NLS-1$
- // SDK ID at Row 1.
- TableItem itemSDKId = new TableItem(propsTable, SWT.NONE);
- itemSDKId.setText(new String[] { Messages.getString("SDKPropertiesDialog.SDK_ID"), "" }); //$NON-NLS-1$ //$NON-NLS-2$
-
- // SDK Name at Row 2.
- TableItem itemSDKName = new TableItem(propsTable, SWT.NONE);
- itemSDKName.setText(new String[] { Messages.getString("SDKPropertiesDialog.SDK_Name"), "" }); //$NON-NLS-1$ //$NON-NLS-2$
-
- // SDK Name at Row 3.
- TableItem itemEPOCROOTName = new TableItem(propsTable, SWT.NONE);
- itemEPOCROOTName.setText(new String[] { "EPOCROOT", "", "" }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-
- // OS Version at Row 4.
+ // OS Version at Row 1.
TableItem itemOSVersion = new TableItem(propsTable, SWT.NONE);
- itemOSVersion.setText(new String[] { Messages.getString("SDKPropertiesDialog.OS_Version"), "" }); //$NON-NLS-1$ //$NON-NLS-2$
-
- // SDK Version at Row 5.
- TableItem itemSDKVersion = new TableItem(propsTable, SWT.NONE);
- itemSDKVersion.setText(new String[] { Messages.getString("SDKPropertiesDialog.SDK_Version"), "" }); //$NON-NLS-1$ //$NON-NLS-2$
-
- // Is default at Row 6.
- TableItem itemDefaultDevice = new TableItem(propsTable, SWT.NONE);
- itemDefaultDevice.setText(new String[] { Messages.getString("SDKPropertiesDialog.Default_SDK"), "" }); //$NON-NLS-1$ //$NON-NLS-2$
-
- TableItem itemPrefixFile = new TableItem(propsTable, SWT.NONE);
- if ((sdk.getPrefixFile() != null) && (sdk.getPrefixFile().toString().length() > 0)){
- itemPrefixFile.setText(new String[] { Messages.getString("SDKPropertiesDialog.Prefix_File"), sdk.getPrefixFile().toString()}); //$NON-NLS-1$
- } else {
- itemPrefixFile.setText(new String[] { Messages.getString("SDKPropertiesDialog.Prefix_File"), "unknown"}); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
-
- IPath incPath = sdk.getIncludePath();
- if (incPath != null){
- TableItem itemIncPath = new TableItem(propsTable, SWT.NONE);
- itemIncPath.setText(new String[] { Messages.getString("SDKPropertiesDialog.Include_Dir"), incPath.toOSString()}); //$NON-NLS-1$
- }
-
- IPath toolsPath = sdk.getToolsPath();
- if (toolsPath != null){
- TableItem itemToolsPath = new TableItem(propsTable, SWT.NONE);
- itemToolsPath.setText(new String[] { Messages.getString("SDKPropertiesDialog.Tools_Dir"), toolsPath.toOSString()}); //$NON-NLS-1$
- }
-
- IPath relRoot = sdk.getReleaseRoot();
- if (relRoot != null){
- TableItem itemRelRootPath = new TableItem(propsTable, SWT.NONE);
- itemRelRootPath.setText(new String[] { Messages.getString("SDKPropertiesDialog.Release_Dir"), relRoot.toOSString()}); //$NON-NLS-1$
- }
-
- Date createDate = sdk.getCreationDate();
- if (createDate != null){
- TableItem itemDate = new TableItem(propsTable, SWT.NONE);
- itemDate.setText(new String[] { Messages.getString("SDKPropertiesDialog.SDK_Create_Date"), createDate.toString()}); //$NON-NLS-1$
- }
-
- URL url =sdk.getPublisherURL();
- if (url != null){
- TableItem itemURL = new TableItem(propsTable, SWT.NONE);
- itemURL.setText(new String[] { Messages.getString("SDKPropertiesDialog.Publisher_URL"), url.toString()}); //$NON-NLS-1$
- }
-
- String pubName = sdk.getPublisherName();
- if (pubName != null && pubName.length() > 0){
- TableItem itemVendor = new TableItem(propsTable, SWT.NONE);
- itemVendor.setText(new String[] { Messages.getString("SDKPropertiesDialog.Publisher_Name"), pubName}); //$NON-NLS-1$
- }
-
- String descr = sdk.getSDKDescription();
- if (descr != null && descr.length() > 0){
- TableItem itemSDKDescr = new TableItem(propsTable, SWT.NONE);
- itemSDKDescr.setText(new String[] { Messages.getString("SDKPropertiesDialog.SDK_Description"), descr}); //$NON-NLS-1$
- }
-
- // Set up the editable fields
- setUpTableEditFields();
+ itemOSVersion.setText(new String[] {Messages.getString("SDKPropertiesDialog.OS_Version"), //$NON-NLS-2$
+ sdk.getOSVersion().toString()}); //$NON-NLS-1$
PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, SDKUIHelpIds.SDK_PROPERTIES_DIALOG);
@@ -202,8 +103,6 @@
protected void createButtonsForButtonBar(Composite parent) {
createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL,
true);
- createButton(parent, IDialogConstants.CANCEL_ID,
- IDialogConstants.CANCEL_LABEL, false);
}
/**
@@ -213,207 +112,5 @@
protected Point getInitialSize() {
return new Point(418, 375);
}
-
- private void setUpTableEditFields(){
- TableItem[] items = propsTable.getItems();
- TableEditor editor = new TableEditor(propsTable);
-
- // Add the SDK ID editor to the 1st row, seonds column
- sdkIDText = new Text(propsTable, SWT.NONE);
- sdkIDText.setText(sdk.getUniqueId());
- editor.grabHorizontal = true;
- editor.setEditor(sdkIDText, items[0], 1);
- Color white = getShell().getDisplay().getSystemColor(SWT.COLOR_WHITE);
- sdkIDText.setBackground(white);
-
- // Add the SDK Name combo to the 2nd row, second column
- editor = new TableEditor(propsTable);
- sdkNameCombo = new CCombo(propsTable, SWT.NONE);
- sdkNameCombo.setText(sdk.getName());
- sdkNameCombo.add(ISymbianSDK.S60_SDK_NAME);
- sdkNameCombo.add(ISymbianSDK.S80_SDK_NAME);
- sdkNameCombo.add(ISymbianSDK.TECHVIEW_SDK_NAME);
- sdkNameCombo.add(ISymbianSDK.UIQ_SDK_NAME);
- editor.grabHorizontal = true;
- editor.setEditor(sdkNameCombo, items[1], 1);
- sdkIDText.setBackground(white);
-
- /*
- * ??? HOW DO YOU ADD A BUTTON TO A CELL WITH ANOTHER CONTROL
- editor = new TableEditor(propsTable);
- browseEPOCROOTButton = new Button(propsTable, SWT.RIGHT);
- browseEPOCROOTButton.setBounds(5, 5, 5, 5);
- browseEPOCROOTButton.setToolTipText("Choose the folder where 'epoc32' exists.");
- browseEPOCROOTButton.setText("...");
- editor.grabHorizontal = true;
- editor.setEditor(browseEPOCROOTButton, items[2], 1);
- //addButtonListener(browseEPOCROOTButton);
- */
- // Add the EPOCROOT text to the 3rd row, second column
- editor = new TableEditor(propsTable);
- epocRootText = new Text(propsTable, SWT.NONE);
- epocRootText.setText(sdk.getEPOCROOT());
- editor.grabHorizontal = true;
- editor.setEditor(epocRootText, items[2], 1);
- epocRootText.setBackground(white);
-
- // Add the OS Version combo to the 4th row, second column
- editor = new TableEditor(propsTable);
- osVersionCombo = new CCombo(propsTable, SWT.NONE);
- osVersionCombo.setText(sdk.getOSVersion().toString() + sdk.getSDKOSBranch());
- List<String> supportedOSVersions = new ArrayList<String>();
- ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
- supportedOSVersions = sdkMgr.getSymbianMacroStore().getSupportedOSVersions();
- for (String currVer : supportedOSVersions){
- osVersionCombo.add(currVer);
- }
- editor.grabHorizontal = true;
- editor.setEditor(osVersionCombo, items[3], 1);
- osVersionCombo.setBackground(white);
- osVersionCombo.setEditable(false);
-
- // Add the SDK Version combo to the 5th row, second column
- editor = new TableEditor(propsTable);
- sdkVersionCombo = new CCombo(propsTable, SWT.NONE);
- sdkVersionCombo.setText(sdk.getSDKVersion().toString());
- List<String> sdkVersions = new ArrayList<String>();
- sdkVersions = sdkMgr.getSymbianMacroStore().getSDKVersions();
- for (String currVer : sdkVersions){
- sdkVersionCombo.add(currVer);
- }
- editor.grabHorizontal = true;
- editor.setEditor(sdkVersionCombo, items[4], 1);
- sdkVersionCombo.setBackground(white);
-
- // Add the default combo to the 6th row, second column
- editor = new TableEditor(propsTable);
- isDefaultCombo = new CCombo(propsTable, SWT.NONE);
- editor.grabHorizontal = true;
- editor.setEditor(isDefaultCombo, items[5], 1);
- isDefaultCombo.add(DEFAULT_DEVICE_YES);
- isDefaultCombo.add(DEFAULT_DEVICE_NO);
- if (sdk.isDefaultSDK()){
- isDefaultCombo.setText(DEFAULT_DEVICE_YES);
- } else {
- isDefaultCombo.setText(DEFAULT_DEVICE_NO);
- }
- }
-
- @Override
- protected void okPressed() {
-
- if (!validateData()){
- return;
- }
-
- ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
- if (!sdk.getUniqueId().equals(sdkIDText.getText())){
- // SDK ID has changed, we'll need to delete the old ID from devices.xml
- sdkMgr.removeSDK(sdk.getUniqueId());
- }
- sdk.setUniqueID(sdkIDText.getText());
- if (sdk.getEPOCROOT().compareTo(epocRootText.getText()) != 0){
- // EPOCROOT has changed, re-scan the SDK.
- sdk.setEPOCROOT(epocRootText.getText());
- sdk.scanSDK();
- }
-
- sdk.setName(sdkNameCombo.getText());
-
- String osVerString = osVersionCombo.getText();
- int len = osVerString.length();
- if (Character.isLetter(osVerString.charAt(len-1))){
- String branch = osVerString.substring(len-1);
- sdk.setOSSDKBranch(branch);
- osVerString = osVerString.substring(0, len-1);
- } else {
- sdk.setOSSDKBranch(""); //$NON-NLS-1$
- }
-
- sdk.setOSVersion(Version.parseVersion(osVerString));
-
- try {
- sdk.setSDKVersion(Version.parseVersion(sdkVersionCombo.getText()));
- } catch (NumberFormatException e) {
- MessageDialog.openError(getShell(), Messages.getString("SDKPropertiesDialog.Illegal_Verion_Title"), Messages.getString("SDKPropertiesDialog.Illegal_SDKVerion_Msg")); //$NON-NLS-1$ //$NON-NLS-2$
- return;
- }
-
- if (isDefaultCombo.getText().equals(DEFAULT_DEVICE_YES)){
- sdk.setIsDefaultSDK(true);
- } else {
- sdk.setIsDefaultSDK(false);
- }
- sdkMgr.updateSDK(sdk);
- sdkMgr.setDefaultSDK(sdk);
-
- super.okPressed();
- }
-
- private boolean validateData(){
- boolean isOK = true;
-
- // make sure id is not null and is not a duplicate
- if ((sdkIDText.getText().length() > 0) ){
- if (!sdk.getUniqueId().equals(sdkIDText.getText())){
- ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
- List<ISymbianSDK> sdkList = sdkMgr.getSDKList();
- for (ISymbianSDK currSDK : sdkList){
- if (currSDK.getUniqueId().equalsIgnoreCase(sdkIDText.getText())){
- MessageDialog.openError(getShell(), Messages.getString("SDKPropertiesDialog.Duplicate_ID"), Messages.getString("SDKPropertiesDialog.Duplicate_ID_Message")); //$NON-NLS-1$ //$NON-NLS-2$
- return false;
- }
- }
- }
- } else {
- MessageDialog.openError(getShell(), Messages.getString("SDKPropertiesDialog.Zero_Len_ID"), Messages.getString("SDKPropertiesDialog.Zero_Len_ID_Msg")); //$NON-NLS-1$ //$NON-NLS-2$
- return false;
- }
-
- // make sure name is proper format
- if (sdkNameCombo.getText().length() > 0){
- if (!isValidVendorName(sdkNameCombo.getText())){
- return false;
- }
- }else{
- MessageDialog.openError(getShell(), Messages.getString("SDKPropertiesDialog.Zero_Len_Name"), Messages.getString("SDKPropertiesDialog.Zero_Len_Name_Msg")); //$NON-NLS-1$ //$NON-NLS-2$
- return false;
- }
-
- // make sure epocroot exists
- if (epocRootText.getText().length() > 0){
- if (!epocRootText.getText().equals(sdk.getEPOCROOT())){
- File rootFile = new File(epocRootText.getText());
- if (!rootFile.exists()){
- if (!MessageDialog.openQuestion(getShell(), Messages.getString("SDKPropertiesDialog.EPOCROOT_No_Exist"), Messages.getString("SDKPropertiesDialog.EPOCROOT_No_Exist_Msg"))){ //$NON-NLS-1$ //$NON-NLS-2$
- return false;
- }
- }
- }
- }else{
- MessageDialog.openError(getShell(), Messages.getString("SDKPropertiesDialog.Zero_Len_EPOCROOT"), Messages.getString("SDKPropertiesDialog.Zero_Len_EPOCROOT_Msg")); //$NON-NLS-1$ //$NON-NLS-2$
- return false;
- }
- return isOK;
- }
-
- private boolean isValidVendorName(String vendor){
- boolean isValid = true;
-
- String[] vendorSplit = vendor.split("[.]"); //$NON-NLS-1$
- if (vendorSplit.length == 3){
- if (!vendorSplit[0].toLowerCase().startsWith("com")){ //$NON-NLS-1$
- isValid = false;
- }
- } else {
- isValid = false;
- }
-
- if (isValid == false){
- MessageDialog.openError(getShell(), Messages.getString("SDKPropertiesDialog.Invalid_Name_Attrib"), Messages.getString("SDKPropertiesDialog.Invalid_Name_Attrib_Msg")); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- return isValid;
- }
}
--- a/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/sdk/ui/SDKUIHelpIds.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/sdk/ui/SDKUIHelpIds.java Wed Aug 25 12:42:09 2010 -0500
@@ -28,5 +28,6 @@
public static final String SDK_PROPERTIES_DIALOG = SDKUIPlugin.PLUGIN_ID + ".sdk_properties_dialog"; //$NON-NLS-1$
public static final String SDK_BUILD_FILTER_PAGE = SDKUIPlugin.PLUGIN_ID + ".sdk_platform_filter_page"; //$NON-NLS-1$
public static final String BUILD_TARGETS_PAGE = SDKUIPlugin.PLUGIN_ID + ".build_targets_page"; //$NON-NLS-1$
+ public static final String ADD_VARIANT_DIALOG = SDKUIPlugin.PLUGIN_ID + ".sdk_variant_dialog"; //$NON-NLS-1$
}
--- a/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/sdk/ui/SDKUIPreferenceConstants.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/sdk/ui/SDKUIPreferenceConstants.java Wed Aug 25 12:42:09 2010 -0500
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "Eclipse Public License v1.0"
@@ -27,4 +27,5 @@
public final static String PLAT_EKA2_ARMV5_ABIV1 = "platEKA2_ARMV5_ABIV1"; //$NON-NLS-1$
public final static String LISTEN_FOR_DEVICES_XML_CHANGE = "listenForDevicesXMLChange"; //$NON-NLS-1$
+ public final static String SCAN_FOR_NEW_PLUGINS = "scanForNewPlugins"; //$NON-NLS-1$
}
--- a/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/sdk/ui/SDKUIPreferenceInitializer.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/sdk/ui/SDKUIPreferenceInitializer.java Wed Aug 25 12:42:09 2010 -0500
@@ -34,6 +34,7 @@
IPreferenceStore store = SDKUIPlugin.getDefault().getPreferenceStore();
store.setDefault(SDKUIPreferenceConstants.ENABLE_BSF_SCANNER, false);
store.setDefault(SDKUIPreferenceConstants.LISTEN_FOR_DEVICES_XML_CHANGE, true);
+ store.setDefault(SDKUIPreferenceConstants.SCAN_FOR_NEW_PLUGINS, false);
store.setDefault(SDKUIPreferenceConstants.PLAT_EKA2_WINSCW, true);
store.setDefault(SDKUIPreferenceConstants.PLAT_EKA2_GCCE, true);
--- a/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/sdk/ui/messages.properties Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/sdk/ui/messages.properties Wed Aug 25 12:42:09 2010 -0500
@@ -1,66 +1,28 @@
SDKPropertiesDialog.SDK_Properties_For=SDK Properties for
-SDKPreferencePage.Available_SDKs_Label=Available Symbian OS SDKs
SDKPropertiesDialog.Available_SDK_Properties=Available SDK properties:
SDKPropertiesDialog.Property=Property
SDKPropertiesDialog.Value=Value
-SDKPropertiesDialog.SDK_ID=SDK ID
-SDKPropertiesDialog.SDK_Name=SDK Name
SDKPropertiesDialog.OS_Version=OS Version
-SDKPropertiesDialog.SDK_Version=SDK Version
-SDKPropertiesDialog.Default_SDK=Default SDK
-SDKPropertiesDialog.Prefix_File=Prefix File
-SDKPropertiesDialog.Include_Dir=Include Dir
-SDKPropertiesDialog.Tools_Dir=Tools Dir
-SDKPropertiesDialog.Release_Dir=Release Dir
-SDKPropertiesDialog.SDK_Create_Date=SDK Creation Date
-SDKPropertiesDialog.Publisher_URL=Publisher URL
-SDKPropertiesDialog.Illegal_Verion_Title=Illegal Version Format Exception
-SDKPropertiesDialog.Illegal_SDKVerion_Msg=The SDK version is improperly formatted. Make sure it is of format major.minor[.increment].
-SDKPropertiesDialog.Publisher_Name=Publisher Name
-SDKPreferencePage.OS_Group_ToolTip=List of the SDKs found from devices.xml. Checkboxes indicate which SDKs you want to be available for Carbide.c++ use. SDKs in red are not configured properly.
-SDKPreferencePage.Remove_SDK_Label=Remove SDK
-SDKPreferencePage.SDK_Info_ToolTip=Displays information for the selected SDK.
-SDKPropertiesDialog.SDK_Description=SDK Description
-SDKPropertiesDialog.Duplicate_ID=Duplicate ID
-SDKPreferencePage.SDK_Info_Label=SDK Information
-SDKPreferencePage.Confirm_Delete=Confirm Delete
-SDKPropertiesDialog.Duplicate_ID_Message=The SDK ID you have chosen is not unique. Please enter a unique SDK ID.
-SDKPreferencePage.SDK_Props_Button_Label=SDK Properties
-SDKPreferencePage.Diagnostic_Check_Label=Diagnostic Check:
-SDKPropertiesDialog.Zero_Len_ID=Zero Length ID
-SDKPropertiesDialog.Zero_Len_ID_Msg=Please enter a unique SDK ID
-SDKPreferencePage.Add_New_SDK_Label=Add New SDK
-SDKPreferencePage.OSVesions_ToolTip=The Symbian OS version (and branch) the selected OS is based on.
-SDKPreferencePage.Platforms_ToolTip=Platforms that are available in the SDK.
-SDKPreferencePage.No_SDKs_Available=No SDKs are available.
-SDKPropertiesDialog.Zero_Len_Name=Zero Length Name
-SDKPreferencePage.OSVersion_Label=OS Version:
-SDKPreferencePage.No_SDK_Selected=No SDK Selected
-SDKPropertiesDialog.Zero_Len_Name_Msg=Please enter an SDK name or choose one from the pop-up menu.
-SDKPropertiesDialog.EPOCROOT_No_Exist=EPOCROOT does not exist.
-SDKPropertiesDialog.EPOCROOT_No_Exist_Msg=Do you want to add an EPOCROOT value that does not exist?
-SDKPropertiesDialog.Zero_Len_EPOCROOT=Zero Length EPOCROOT
-SDKPreferencePage.Delete_SDK_ToolTip=Deletes an SDK from Carbide.c++ and devices.xml.
-SDKPreferencePage.Add_New_SDK_ToolTip=Adds a new SDK for use in Carbide.c++ and devices.xml.
-SDKPreferencePage.EPOC32_Loc_ToolTip=Location of the 'epoc32' folder.
-SDKPreferencePage.Available_Platforms=Available Platforms:
+
+SDKPreferencePage.Browse_Location_Label=...
+SDKPreferencePage.Add_Button_Label=Add
+SDKPreferencePage.Add_Button_ToolTip=Adds a new SDK for use in Carbide.c++.
+SDKPreferencePage.Delete_Button_Label=Delete
+SDKPreferencePage.Delete_Button_ToolTip=Delete an SDK from Carbide.c++.
+SDKPreferencePage.Properties_Button_Label=Properties
+SDKPreferencePage.Properties_Button_ToolTip=Show properties of the selected SDK.
SDKPreferencePage.Rescan_Button_Label=Rescan All SDKs
-SDKPreferencePage.Confirm_Delete_Msg=Are you sure you want to delete this SDK?\n\nThis entry will be removed from your devices.xml.
-SDKPreferencePage.Path_Does_Not_Exist=\ <- Path does not exist.
-SDKPreferencePage.SDK_Cannot_Be_Used=SDK cannot be used in Carbide.c++. Make sure your EPOCROOT is valid and the OS version is properly set.
-SDKPropertiesDialog.Zero_Len_EPOCROOT_Msg=Please enter an EPOCROOT.
-SDKPropertiesDialog.Invalid_Name_Attrib=Invalid 'name' attribute.
SDKPreferencePage.Rescan_Button_ToolTip=Rebuilds all SDK entries (same as restarting the IDE).
-SDKPropertiesDialog.Invalid_Name_Attrib_Msg=The SDK name must be of the format com.<vendor>.<sdk>
-SDKPreferencePage.SDK_Props_Button_ToolTip=Shows editable and non-editable extended SDK properties for the selected SDK.
-SDKPreferencePage.Diagnostic_Check_ToolTip=Displays miscellaneous errors and warnings that may indicate problems with an SDK installation.
+SDKPreferencePage.Rescanning_Button_Label=Rescanning...
+SDKPreferencePage.No_SDKs_Available_Message=No SDKs are available.
SDKPreferencePage.No_selected_SDK_detected=No selected SDK detected.
-SDKPreferencePage.No_Tools_Path=WARNING: Tools path does not exist:
-SDKPreferencePage.No_Include_Path=WARNING: Include path does not exist:
-SDKPreferencePage.No_HRH_File=WARNING: Cannot find pre-include (HRH) file from \\epoc32\\tools\\variant\\variant.cfg."
-SDKPreferencePage.No_SDK_Version=WARNING: SDK version is not set. Some functionality may not work for this SDK.
-SDKPreferencePage.listerForDevicesXML=Listen for devices.xml changes outside of Carbide
-SDKPreferencePage.listerForDevicesXML_Tooltip=When enabled, Carbide will check for changes in the devices.xml file outside of Carbide and alert you when it has changed.
+SDKPreferencePage.List_of_Available_SDKs_ToolTip=List of available SDKs.
+SDKPreferencePage.SDK_Table_Enabled_Column_Label=Enabled
+SDKPreferencePage.SDK_Table_ID_Column_Label=SDK ID
+SDKPreferencePage.SDK_Table_Location_Column_Label=Location
+SDKPreferencePage.Invalid_Location_Message=Invalid location. '\\epoc32\\' does not exist at specified location.
+SDKPreferencePage.Invalid_SDK_Message=Invalid SDK. OS version {0} not supported. Must be verison 9.4 or higher.
+SDKPreferencePage.Manage_SDKs_Label=Manage SDKs
BuildPlatformFilterPage.Select_Platforms_Help=Select which platforms are visible when creating projects or new build configurations.
BuildPlatformFilterPage.Specify_Platforms_Help=Specifies platforms to be displayed for OS 9.x and 8.1b
@@ -69,9 +31,6 @@
BuildPlatformFilterPage.EKA1_Platforms_Label=EKA1 Platforms
BuildPlatformFilterPage.BSF_Help=Scans for .bsf and/or .var files under \\epoc32\\tools for platform variants.
BuildPlatformFilterPage.BSF_Label=Discover customization (.bsf) and Symbian Binary Variant (.var) platforms dynamically
-SDKPreferencePage.List_of_Available_SDKs_ToolTip=List of available SDKs from devices.xml.
-SDKPreferencePage.Platforms_cannot_be_determined=Platforms cannot be determined
-SDKPreferencePage.OS_Version_Cannot_Be_Determined=OS version cannot be determined
NewPluginChecker.New_Plugins_Installed=New plugins have been installed from an SDK.
NewPluginChecker.Restart_Msg=\n\nPress "Restart" to restart Carbide.c++ now or "Later" to apply changes next time you restart Carbide.c++.
NewPluginChecker.Restart_Error=New plugins were installed into Carbide.c++ from an SDK. However, an error in the workbench prevented a Restart dialog from being displayed. You will need to restart Carbide in order to pick up the latest changes.
@@ -79,8 +38,6 @@
RestartIDEDialog.Later=Later
RestartIDEDialog.New_Plugin_Installed=New Plugins Installed
AddSDKDialog.Add_New_SDK=Add New SDK
-AddSDKDialog.Missing_Vendor_Name=Missing Vendor/Name
-AddSDKDialog.Enter_Vendor_Name=Please enter an SDK vendor/name.
AddSDKDialog.Missing_SDK_ID=Missing SDK ID.
AddSDKDialog.Enter_SDK_ID=Please enter an SDK ID.
AddSDKDialog.Malformed_EPOCROOT=Malformed EPOCROOT
@@ -96,21 +53,11 @@
AddSDKDialog.SDK_ID_No_Spaces=SDK ID attribute cannot contain spaces.
AddSDKDialog.Duplicate_ID=Duplicate device 'id'
AddSDKDialog.Duplicate_ID_Msg=The SDK ID you have chosen already exists. Please choose another.
-AddSDKDialog.Invalid_name_attrib=Invalid 'name' attribute.
-AddSDKDialog.Invalid_name_attrib_msg=The SDK name must be of the format com.<vendor>.<sdk>
AddSDKDialog.Enter_unique_id_for_sdk=Enter a unique identifier for the SDK you want to add.
AddSDKDialog.SDK_ID=SDK ID:
AddSDKDialog.Enter_location_where_epoc32_folder=Enter the location where the 'epoc32' folder exists.
AddSDKDialog.Choose_folder_where_epoc32_exists=Choose the folder where 'epoc32' exists.
AddSDKDialog.Browse=Browse...
-AddSDKDialog.Enter_name_of_sdk=Enter the name of the sdk. Format is com.<vendor>.<sdk>
-AddSDKDialog.Vendor=Vendor:
-AddSDKDialog.default_label_tooltip=Defines the default SDK for command-line builds. Has no impact on Carbide.c++ builds.
-AddSDKDialog.is_default=Is Default:
-AddSDKDialog.os_version_tooltip=Select the OS version. This will determine the available platforms you can build for.
-AddSDKDialog.os_version=OS Version:
-AddSDKDialog.select_sdk_tooltip=Select the SDK version (optional).
-AddSDKDialog.sdk_version=SDK Version:
AddSDKDialog.Choose_location_for_EPOCROOT=Choose location for EPOCROOT.
BuildTargetsPage.BuildTargetsTitle=Build Targets
BuildTargetsPage.SymbianSDKS=Symbian OS SDKs
@@ -123,16 +70,25 @@
BuildTargetsPage.NoBuildConfigsSelectedError=Please select at least one build configuration.
BuildTargetsPage.DifferentDrivesError=There are known build problems when the bld.inf file and SDK are on different drives ({0})
BuildTargetsPage.NoDriveSpecWarning=You have chosen an SDK EPOCROOT without a drive specification. Building will work but other features such as the indexer and MMP editor may not fully function.
-BuildTargetsPage.Select_Filtering_Prefs_Link=See <a>Platform Filtering Preferences</a> to configure displayed build configurations.
+BuildTargetsPage.Select_Filtering_Prefs_Link=See <a>Build Configuration Filtering Preferences</a> to configure displayed build configurations.
+BuildTargetsPage.Select_SymbianSDKs_Prefs_Link=See <a>Symbian SDKs</a> to manage your Symbian SDK installations.
BuildPlatformFilterPage.SBSv1TabText=SBSv1
BuildPlatformFilterPage.SBSv1TabToolTip=Symbian OS Build System version 1 builder platform filtering
BuildPlatformFilterPage.SBSv2TabText=SBSv2
BuildPlatformFilterPage.SBSv2TabToolTip=Symbian OS Build System version 2 builder platform filtering
-SBSv2PlatformFilterComposite.PlatformsGroupText=SBSv2 Configurations Filter
-SBSv2PlatformFilterComposite.PlatformsGroupToolTip=Uncheck the SBSv2 build configurations to hide from the list of available configurations when creating a project.
-SBSv2PlatformFilterComposite.RefreshButtonText=Refresh
-SBSv2PlatformFilterComposite.RefreshButtonToolTip=Forces the configuration xml files in SBSv2 to be parsed again.
+SBSv2PlatformFilterComposite.PlatformsGroupText=Default Configurations
+SBSv2PlatformFilterComposite.PlatformsGroupToolTip=Checked build build configurations (aliases) will be displayed for SDKs they apply to.
+SBSv2PlatformFilterComposite.RefreshButtonText=Rescan Default Configurations
+SBSv2PlatformFilterComposite.RefreshButtonScanningText=Please wait... Scanning.
+SBSv2PlatformFilterComposite.RefreshButtonToolTip=Queries your sbs and sdk installation for allowable build configurations.
+
+SBSv2PlatformFilterComposite.ProductsGroupText=Product Variant Configurations
+SBSv2PlatformFilterComposite.ProductsGroupToolTip=Checked configurations will be displayed under the SDK where they are valid. Unchecked configurations will be removed from this preference page.
+SBSv2PlatformFilterComposite.AddProductButtonText=Add Variant
+SBSv2PlatformFilterComposite.AddProductButtonToolTip=Create a new build alias with a product variant you can use as a build configuration. Only applies to SDKs that support variants.
+SBSv2PlatformFilterComposite.RemoveProductButtonText=Remove Variant
+SBSv2PlatformFilterComposite.RemoveProductButtonToolTip=Removes a selected product variant.
--- a/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/sdk/ui/SDKPreferencesPortalPageLayer.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/sdk/ui/SDKPreferencesPortalPageLayer.java Wed Aug 25 12:42:09 2010 -0500
@@ -16,11 +16,17 @@
*/
package com.nokia.carbide.cpp.sdk.ui;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.PlatformUI;
+import com.nokia.carbide.cpp.internal.sdk.ui.Messages;
import com.nokia.carbide.cpp.internal.sdk.ui.SDKPreferencePage;
import com.nokia.carbide.internal.discovery.ui.extension.IActionBar;
import com.nokia.carbide.internal.discovery.ui.extension.IActionUIUpdater;
@@ -29,11 +35,32 @@
@SuppressWarnings("restriction")
public class SDKPreferencesPortalPageLayer implements IPortalPageLayer {
+ protected class SDKActionBar implements IActionBar {
+ private IAction[] actions;
+
+ public SDKActionBar(IEditorPart part) {
+ actions = makeActions(part);
+ }
+
+ public String getTitle() {
+ return Messages.getString("SDKPreferencePage.Manage_SDKs_Label");
+ }
+
+ public IAction[] getActions() {
+ return actions;
+ }
+
+ public String[] getHighlightedActionIds() {
+ return null;
+ }
+ }
+
private SDKPreferencePage preferencePage;
public Control createControl(Composite parent, IEditorPart part) {
preferencePage = new SDKPreferencePage();
preferencePage.createControl(parent);
+ preferencePage.updateForPortalLayer();
return preferencePage.getControl();
}
@@ -42,11 +69,53 @@
}
public IActionBar[] createCommandBars(IEditorPart part, IActionUIUpdater updater) {
- return null;
+ return new IActionBar[] { new SDKActionBar(part) };
}
public void dispose() {
preferencePage.dispose();
}
+ protected IAction[] makeActions(final IEditorPart part) {
+ List<IAction> actions = new ArrayList<IAction>();
+ IAction action;
+
+ // Add SDK
+ action = new Action(Messages.getString("SDKPreferencePage.Add_Button_Label")) {
+ public void run() {
+ preferencePage.handleAddButton();
+ }
+ };
+ action.setToolTipText(Messages.getString("SDKPreferencePage.Add_Button_ToolTip"));
+ actions.add(action);
+
+ // Delete SDK
+ action = new Action(Messages.getString("SDKPreferencePage.Delete_Button_Label")) {
+ public void run() {
+ preferencePage.handleDeleteButton();
+ }
+ };
+ action.setToolTipText(Messages.getString("SDKPreferencePage.Delete_Button_ToolTip"));
+ actions.add(action);
+
+ // SDK Properties
+ action = new Action(Messages.getString("SDKPreferencePage.Properties_Button_Label")) {
+ public void run() {
+ preferencePage.handlePropertiesButton();
+ }
+ };
+ action.setToolTipText(Messages.getString("SDKPreferencePage.Properties_Button_ToolTip"));
+ actions.add(action);
+
+ // Rescan SDKs
+ action = new Action(Messages.getString("SDKPreferencePage.Rescan_Button_Label")) {
+ public void run() {
+ preferencePage.handleRescanButton(true);
+ }
+ };
+ action.setToolTipText(Messages.getString("SDKPreferencePage.Rescan_Button_ToolTip"));
+ actions.add(action);
+
+ return (IAction[]) actions.toArray(new IAction[actions.size()]);
+ }
}
--- a/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/sdk/ui/SDKUIPlugin.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/sdk/ui/SDKUIPlugin.java Wed Aug 25 12:42:09 2010 -0500
@@ -27,11 +27,13 @@
import com.nokia.carbide.cpp.internal.api.sdk.ICarbideDevicesXMLChangeListener;
import com.nokia.carbide.cpp.internal.api.sdk.ISDKManagerInternal;
import com.nokia.carbide.cpp.internal.api.sdk.ui.SBSv1PlatformFilterComposite;
-import com.nokia.carbide.cpp.internal.sdk.ui.NewPluginChecker;
+import com.nokia.carbide.cpp.internal.sdk.core.model.SDKManager;
import com.nokia.carbide.cpp.internal.sdk.ui.SDKUIPreferenceConstants;
-import com.nokia.carbide.cpp.sdk.core.*;
+import com.nokia.carbide.cpp.sdk.core.ISDKManager;
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
+import com.nokia.cpp.internal.api.utils.core.HostOS;
+import com.nokia.cpp.internal.api.utils.ui.QueryWithTristatePrefDialog;
import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils;
-import com.nokia.cpp.internal.api.utils.ui.QueryWithTristatePrefDialog;
/**
* The activator class controls the plug-in life cycle
@@ -58,10 +60,11 @@
*/
public void start(BundleContext context) throws Exception {
super.start(context);
- NewPluginChecker.checkForNewlyInstalledPlugins(getWorkbench());
ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
- sdkMgr.setPlatformList(SBSv1PlatformFilterComposite.getPlatFilterPrefsStore());
+ if (HostOS.IS_WIN32){
+ ((SDKManager)sdkMgr).setPlatformList(SBSv1PlatformFilterComposite.getPlatFilterPrefsStore());
+ }
}
--- a/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/sdk/ui/shared/AddSDKDialog.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/sdk/ui/shared/AddSDKDialog.java Wed Aug 25 12:42:09 2010 -0500
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "Eclipse Public License v1.0"
@@ -18,7 +18,6 @@
package com.nokia.carbide.cpp.sdk.ui.shared;
import java.io.File;
-import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.dialogs.IDialogConstants;
@@ -32,7 +31,6 @@
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.DirectoryDialog;
@@ -42,9 +40,10 @@
import org.eclipse.ui.PlatformUI;
import org.osgi.framework.Version;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildInfo;
+import com.nokia.carbide.cpp.internal.sdk.core.model.SymbianSDK;
import com.nokia.carbide.cpp.internal.sdk.ui.Messages;
import com.nokia.carbide.cpp.internal.sdk.ui.SDKUIHelpIds;
-import com.nokia.carbide.cpp.sdk.core.ISDKManager;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
import com.nokia.carbide.cpp.sdk.core.SymbianSDKFactory;
@@ -57,18 +56,10 @@
*/
public class AddSDKDialog extends TrayDialog {
- private Combo sdkVersionCombo;
- private Combo osVersionCombo;
- private Combo isDefaultCombo;
- private Combo vendorCombo;
private Text deviceIDtext;
private Text epocRootText;
private Button browseEPOCROOTButton;
-
- public static final String DEFAULT_YES = "yes"; //$NON-NLS-1$
- public static final String DEFAULT_NO = "no"; //$NON-NLS-1$
- public static final String AUTO_DETECT = "(Auto-Detect)"; //$NON-NLS-1$
-
+
/**
* Create the dialog
* @param parentShell
@@ -76,155 +67,17 @@
public AddSDKDialog(Shell parentShell) {
super(parentShell);
}
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
+
+ /**
+ * Create contents of the button bar
+ * @param parent
*/
- protected void configureShell(Shell shell) {
- super.configureShell(shell);
- shell.setText(Messages.getString("AddSDKDialog.Add_New_SDK")); //$NON-NLS-1$
- }
-
@Override
- protected void okPressed() {
-
- if (deviceIDtext.getText().length() > 0){
- if (!isValidIDName(deviceIDtext.getText())){
- return;
- }
-
- if (vendorCombo.getText().length() > 0){
- if (!isValidVendorName(vendorCombo.getText())){
- return;
- }
- } else {
- MessageDialog.openError(getShell(), Messages.getString("AddSDKDialog.Missing_Vendor_Name"), Messages.getString("AddSDKDialog.Enter_Vendor_Name")); //$NON-NLS-1$ //$NON-NLS-2$
- return;
- }
- } else {
- MessageDialog.openError(getShell(), Messages.getString("AddSDKDialog.Missing_SDK_ID"), Messages.getString("AddSDKDialog.Enter_SDK_ID")); //$NON-NLS-1$ //$NON-NLS-2$
- return;
- }
-
- if (epocRootText.getText().length() > 1){
- if (HostOS.IS_WIN32 && epocRootText.getText().charAt(1) != ':'){
- MessageDialog.openError(getShell(), Messages.getString("AddSDKDialog.Malformed_EPOCROOT"), Messages.getString("AddSDKDialog.EPOCROOT_drive_spec")); //$NON-NLS-1$ //$NON-NLS-2$
- return;
- }
-
- if (epocRootText.getText().toUpperCase().endsWith("EPOC32") || epocRootText.getText().toUpperCase().endsWith("EPOC32\\")){ //$NON-NLS-1$ //$NON-NLS-2$
- if (!MessageDialog.openConfirm(getShell(), Messages.getString("AddSDKDialog.Possible_wrong_epocroot"), Messages.getString("AddSDKDialog.EPOCROOT_Should_Point"))){ //$NON-NLS-1$ //$NON-NLS-2$
- return;
- }
- } else {
- File epocRootFile = new File(epocRootText.getText());
- if (!epocRootFile.exists()){
- if (!MessageDialog.openConfirm(getShell(), Messages.getString("AddSDKDialog.EPOCROOT_does_not_exist"), Messages.getString("AddSDKDialog.EPOCROOT_does_not_exist_msg"))){ //$NON-NLS-1$ //$NON-NLS-2$
- return;
- }
- }
- if (epocRootFile.toString().indexOf(" ") != -1){
- // Paths should not have spaces...
- MessageDialog.openError(getShell(), "EPOC Root Contains Spaces", Messages.getString("AddSDKDialog.EPOCROOT_contains_spaces")); //$NON-NLS-1$ //$NON-NLS-2$
- return;
-
- }
- }
- } else {
- if (epocRootText.getText().length() == 1 && epocRootText.getText().charAt(0) == '\\'){
- // OK - Currently accept only a '\'. May need to reconsider side-effects
- } else {
- MessageDialog.openError(getShell(), Messages.getString("AddSDKDialog.Missing_EPOCROOT"), Messages.getString("AddSDKDialog.Please_enter_an_EPOCROOT")); //$NON-NLS-1$ //$NON-NLS-2$
- return;
- }
- }
-
- // No objections raised, write the new device entry
- String osVersionText = osVersionCombo.getText();
- Version osVersion;
- String osBranch = ""; //$NON-NLS-1$
- if (osVersionText.equals(AUTO_DETECT)){
- osVersion = new Version("0.0"); //$NON-NLS-1$
- } else {
- int len = osVersionText.length();
- if (Character.isLetter(osVersionText.charAt(len-1))){
- osBranch = osVersionText.substring(len-1);
- osVersionText = osVersionText.substring(0, len-1);
- osVersion = new Version(osVersionText);
- } else {
- osVersion = new Version(osVersionText);
- }
- }
-
- Version sdkVersion = new Version("0.0"); //$NON-NLS-1$
- if (!sdkVersionCombo.getText().equals(AUTO_DETECT)){
- sdkVersion = new Version(sdkVersionCombo.getText());
- }
-
- ISymbianSDK sdk = SymbianSDKFactory.createInstance(deviceIDtext.getText(),
- epocRootText.getText(),
- vendorCombo.getText(),
- osVersion,
- osBranch,
- sdkVersion,
- false);
-
- SDKCorePlugin.getSDKManager().addSDK(sdk);
-
- List<ISymbianSDK> sdkList = SDKCorePlugin.getSDKManager().getSDKList();
- if (sdkList != null){
- sdkList.add(sdk);
- }
-
- if (isDefaultCombo.getText().equals(DEFAULT_YES)){
- sdk.setIsDefaultSDK(true);
- SDKCorePlugin.getSDKManager().setDefaultSDK(sdk);
- } else {
- sdk.setIsDefaultSDK(false);
- }
-
- super.okPressed();
- }
-
- private boolean isValidIDName(String sdkID){
- boolean isValid = true;
-
-
- // check for spaces in ID
- if (sdkID.contains(" ")){ //$NON-NLS-1$
- MessageDialog.openError(getShell(), Messages.getString("AddSDKDialog.Invalid_SDK_ID"), Messages.getString("AddSDKDialog.SDK_ID_No_Spaces")); //$NON-NLS-1$ //$NON-NLS-2$
- return false;
- }
-
- // check that the ID is unique...
- for (ISymbianSDK sdk : SDKCorePlugin.getSDKManager().getSDKList()){
- if (sdk.getUniqueId().equalsIgnoreCase(sdkID)){
- // id already exists, choose a different one...
- MessageDialog.openError(getShell(), Messages.getString("AddSDKDialog.Duplicate_ID"), Messages.getString("AddSDKDialog.Duplicate_ID_Msg")); //$NON-NLS-1$ //$NON-NLS-2$
- return false;
- }
- }
-
- return isValid;
- }
-
- private boolean isValidVendorName(String vendor){
- boolean isValid = true;
-
- String[] vendorSplit = vendor.split("[.]"); //$NON-NLS-1$
- if (vendorSplit.length == 3){
- if (!vendorSplit[0].toLowerCase().startsWith("com")){ //$NON-NLS-1$
- isValid = false;
- }
- } else {
- isValid = false;
- }
-
- if (isValid == false){
- MessageDialog.openError(getShell(), Messages.getString("AddSDKDialog.Invalid_name_attrib"), Messages.getString("AddSDKDialog.Invalid_name_attrib_msg")); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- return isValid;
+ protected void createButtonsForButtonBar(Composite parent) {
+ createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL,
+ true);
+ createButton(parent, IDialogConstants.CANCEL_ID,
+ IDialogConstants.CANCEL_LABEL, false);
}
/**
@@ -257,81 +110,17 @@
browseEPOCROOTButton.setToolTipText(Messages.getString("AddSDKDialog.Choose_folder_where_epoc32_exists")); //$NON-NLS-1$
browseEPOCROOTButton.setText(Messages.getString("AddSDKDialog.Browse")); //$NON-NLS-1$
addButtonListener(browseEPOCROOTButton);
-
- final Label vendorLabel = new Label(container, SWT.NONE);
- vendorLabel.setToolTipText(Messages.getString("AddSDKDialog.Enter_name_of_sdk")); //$NON-NLS-1$
- vendorLabel.setText(Messages.getString("AddSDKDialog.Vendor")); //$NON-NLS-1$
- vendorCombo = new Combo(container, SWT.NONE);
- vendorCombo.setLayoutData(new GridData(250, SWT.DEFAULT));
- new Label(container, SWT.NONE);
- vendorCombo.add(ISymbianSDK.S60_SDK_NAME);
- vendorCombo.add(ISymbianSDK.S80_SDK_NAME);
- vendorCombo.add(ISymbianSDK.UIQ_SDK_NAME);
- vendorCombo.add(ISymbianSDK.TECHVIEW_SDK_NAME);
-
- final Label isDefaultLabel = new Label(container, SWT.NONE);
- isDefaultLabel.setToolTipText(Messages.getString("AddSDKDialog.default_label_tooltip")); //$NON-NLS-1$
- isDefaultLabel.setText(Messages.getString("AddSDKDialog.is_default")); //$NON-NLS-1$
-
- isDefaultCombo = new Combo(container, SWT.READ_ONLY);
- isDefaultCombo.setLayoutData(new GridData(250, SWT.DEFAULT));
- new Label(container, SWT.NONE);
- isDefaultCombo.add(DEFAULT_YES);
- isDefaultCombo.add(DEFAULT_NO);
- isDefaultCombo.select(1);
-
- final Label osVersionLabel = new Label(container, SWT.NONE);
- osVersionLabel.setToolTipText(Messages.getString("AddSDKDialog.os_version_tooltip")); //$NON-NLS-1$
- osVersionLabel.setText(Messages.getString("AddSDKDialog.os_version")); //$NON-NLS-1$
- //ISymbianMacroStore sms =
- List<String> osVersions = new ArrayList<String>();
- ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
- osVersions = sdkMgr.getSymbianMacroStore().getSupportedOSVersions();
-
- osVersionCombo = new Combo(container, SWT.READ_ONLY);
- osVersionCombo.setLayoutData(new GridData(250, SWT.DEFAULT));
- new Label(container, SWT.NONE);
- osVersionCombo.add(AUTO_DETECT);
-
- for (String currVer : osVersions){
- osVersionCombo.add(currVer);
- }
- osVersionCombo.select(0);
-
- final Label sdkVersionLabel = new Label(container, SWT.NONE);
- sdkVersionLabel.setToolTipText(Messages.getString("AddSDKDialog.select_sdk_tooltip")); //$NON-NLS-1$
- sdkVersionLabel.setText(Messages.getString("AddSDKDialog.sdk_version")); //$NON-NLS-1$
-
- sdkVersionCombo = new Combo(container, SWT.READ_ONLY);
- sdkVersionCombo.setLayoutData(new GridData(250, SWT.DEFAULT));
- sdkVersionCombo.add(AUTO_DETECT);
- sdkVersionCombo.select(0);
-
- List<String> sdkVerList = new ArrayList<String>();
- sdkVerList = sdkMgr.getSymbianMacroStore().getSDKVersions();
- for (String currVer : sdkVerList){
- sdkVersionCombo.add(currVer);
- }
-
- new Label(container, SWT.NONE);
-
PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, SDKUIHelpIds.SDK_ADD_DIALOG);
-
-
return container;
}
- /**
- * Create contents of the button bar
- * @param parent
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
*/
- @Override
- protected void createButtonsForButtonBar(Composite parent) {
- createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL,
- true);
- createButton(parent, IDialogConstants.CANCEL_ID,
- IDialogConstants.CANCEL_LABEL, false);
+ protected void configureShell(Shell shell) {
+ super.configureShell(shell);
+ shell.setText(Messages.getString("AddSDKDialog.Add_New_SDK")); //$NON-NLS-1$
}
/**
@@ -342,15 +131,76 @@
//return new Point(428, 256);
return super.getInitialSize();
}
-
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.jface.dialogs.Dialog#okPressed()
+ */
+ @Override
+ protected void okPressed() {
+
+ if (deviceIDtext.getText().length() > 0){
+ if (!isValidIDName(deviceIDtext.getText())){
+ return;
+ }
+ } else {
+ MessageDialog.openError(getShell(), Messages.getString("AddSDKDialog.Missing_SDK_ID"), Messages.getString("AddSDKDialog.Enter_SDK_ID")); //$NON-NLS-1$ //$NON-NLS-2$
+ return;
+ }
+
+ if (epocRootText.getText().length() > 1){
+ if (HostOS.IS_WIN32 && epocRootText.getText().charAt(1) != ':'){
+ MessageDialog.openError(getShell(), Messages.getString("AddSDKDialog.Malformed_EPOCROOT"), Messages.getString("AddSDKDialog.EPOCROOT_drive_spec")); //$NON-NLS-1$ //$NON-NLS-2$
+ return;
+ }
+ if (epocRootText.getText().toUpperCase().endsWith("EPOC32") || epocRootText.getText().toUpperCase().endsWith("EPOC32\\")){ //$NON-NLS-1$ //$NON-NLS-2$
+ if (!MessageDialog.openConfirm(getShell(), Messages.getString("AddSDKDialog.Possible_wrong_epocroot"), Messages.getString("AddSDKDialog.EPOCROOT_Should_Point"))){ //$NON-NLS-1$ //$NON-NLS-2$
+ return;
+ }
+ } else {
+ File epocRootFile = new File(epocRootText.getText());
+ if (!epocRootFile.exists()){
+ if (!MessageDialog.openConfirm(getShell(), Messages.getString("AddSDKDialog.EPOCROOT_does_not_exist"), Messages.getString("AddSDKDialog.EPOCROOT_does_not_exist_msg"))){ //$NON-NLS-1$ //$NON-NLS-2$
+ return;
+ }
+ }
+ if (epocRootFile.toString().indexOf(" ") != -1){
+ // Paths should not have spaces...
+ MessageDialog.openError(getShell(), "EPOC Root Contains Spaces", Messages.getString("AddSDKDialog.EPOCROOT_contains_spaces")); //$NON-NLS-1$ //$NON-NLS-2$
+ return;
+ }
+ }
+ } else {
+ if (epocRootText.getText().length() == 1 && epocRootText.getText().charAt(0) == '\\'){
+ // OK - Currently accept only a '\'. May need to reconsider side-effects
+ } else {
+ MessageDialog.openError(getShell(), Messages.getString("AddSDKDialog.Missing_EPOCROOT"), Messages.getString("AddSDKDialog.Please_enter_an_EPOCROOT")); //$NON-NLS-1$ //$NON-NLS-2$
+ return;
+ }
+ }
+
+ // No objections raised, write the new device entry
+ Version osVersion = new Version("9.4.0"); //$NON-NLS-1$
+ ISymbianSDK sdk = SymbianSDKFactory.createInstance(deviceIDtext.getText(),
+ epocRootText.getText(),
+ osVersion );
+ ((SymbianSDK)sdk).setEnabled(true);
+ SDKCorePlugin.getSDKManager().addSDK(sdk);
+ List<ISymbianSDK> sdkList = SDKCorePlugin.getSDKManager().getSDKList();
+ if (sdkList != null){
+ sdkList.add(sdk);
+ }
+ super.okPressed();
+ }
+
/**
* Sets the listener event to a button.
*
* @param aButton
*/
- private void addButtonListener( final Button aButton ) {
+ private void addButtonListener(final Button aButton) {
SelectionListener listener = new SelectionAdapter() {
- public void widgetSelected( SelectionEvent e ) {
+ public void widgetSelected(SelectionEvent e) {
if (e.getSource().equals(browseEPOCROOTButton)) {
browseEPOCROOT();
}
@@ -358,7 +208,7 @@
};
aButton.addSelectionListener(listener);
}
-
+
private void browseEPOCROOT(){
DirectoryDialog browseDir = new DirectoryDialog(getShell(), SWT.OPEN);
browseDir.setMessage(Messages.getString("AddSDKDialog.Choose_location_for_EPOCROOT")); //$NON-NLS-1$
@@ -369,4 +219,25 @@
}
}
+ private boolean isValidIDName(String sdkID){
+ boolean isValid = true;
+
+ // check for spaces in ID
+ if (sdkID.contains(" ")){ //$NON-NLS-1$
+ MessageDialog.openError(getShell(), Messages.getString("AddSDKDialog.Invalid_SDK_ID"), Messages.getString("AddSDKDialog.SDK_ID_No_Spaces")); //$NON-NLS-1$ //$NON-NLS-2$
+ return false;
+ }
+
+ // check that the ID is unique...
+ for (ISymbianSDK sdk : SDKCorePlugin.getSDKManager().getSDKList()){
+ if (sdk.getUniqueId().equalsIgnoreCase(sdkID)){
+ // id already exists, choose a different one...
+ MessageDialog.openError(getShell(), Messages.getString("AddSDKDialog.Duplicate_ID"), Messages.getString("AddSDKDialog.Duplicate_ID_Msg")); //$NON-NLS-1$ //$NON-NLS-2$
+ return false;
+ }
+ }
+
+ return isValid;
+ }
+
}
--- a/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/sdk/ui/shared/BuildTargetTreeNode.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/sdk/ui/shared/BuildTargetTreeNode.java Wed Aug 25 12:42:09 2010 -0500
@@ -18,15 +18,17 @@
package com.nokia.carbide.cpp.sdk.ui.shared;
+import java.io.File;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
import org.eclipse.jface.viewers.TreeNode;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildContext;
import com.nokia.carbide.cpp.internal.api.sdk.SBSv2Utils;
import com.nokia.carbide.cpp.sdk.core.ISDKManager;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
@@ -34,8 +36,11 @@
* A tree node representing a Symbian OS SDK. This node's children will be the
* list of available build configurations.
*/
+@SuppressWarnings("restriction")
public class BuildTargetTreeNode extends TreeNode {
+ public static final String SDK_NODE_ERROR_EPOCROOT_INVALID = " SDK location does not exist! Check Symbian SDKs!"; //$NON-NLS
+
/**
* Constructs a new tree node for the given SDK
* @param value the SDK to create the tree node for
@@ -52,8 +57,13 @@
public BuildTargetTreeNode(ISymbianSDK value, boolean sbsv2Project) {
super(value);
- List<ISymbianBuildContext> configurations = sbsv2Project ? SBSv2Utils.getFilteredSBSv2BuildContexts(value) : value.getFilteredBuildConfigurations();
-
+ List<ISymbianBuildContext> configurations = sbsv2Project ?
+ value.getBuildInfo(ISymbianBuilderID.SBSV2_BUILDER).getFilteredBuildConfigurations() :
+ value.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER).getFilteredBuildConfigurations();
+
+ if (configurations == null){
+ return;
+ }
TreeNode[] children = new TreeNode[configurations.size()];
int index = 0;
for (ISymbianBuildContext config : configurations) {
@@ -61,7 +71,16 @@
@Override
public String toString() {
ISymbianBuildContext context = (ISymbianBuildContext)getValue();
- return context.getDisplayString();
+ String sdkId = context.getSDK().getUniqueId();
+ String newDisplayString = stripSDKIDFromConfigName(context.getDisplayString(), sdkId);
+ if (context instanceof ISBSv2BuildContext){
+ ISBSv2BuildContext v2Context = (ISBSv2BuildContext)context;
+ if (v2Context.getConfigQueryData().getConfigurationErrorMessage() != null &&
+ v2Context.getConfigQueryData().getConfigurationErrorMessage().length() > 0){
+ newDisplayString += " ERROR: " + v2Context.getConfigQueryData().getConfigurationErrorMessage();
+ }
+ }
+ return newDisplayString;
}
};
}
@@ -73,6 +92,10 @@
*/
public String toString() {
ISymbianSDK value = (ISymbianSDK) getValue();
+ File f = new File(value.getEPOCROOT());
+ if (!f.exists()){
+ return value.getUniqueId() + " (" + f.getAbsolutePath() + ") " + SDK_NODE_ERROR_EPOCROOT_INVALID;
+ }
return value.getUniqueId();
}
@@ -126,10 +149,10 @@
BuildTargetTreeNode[] input = new BuildTargetTreeNode[sdkListCopy.size()];
int index = 0;
- for (Iterator<ISymbianSDK> iter = sdkListCopy.iterator(); iter.hasNext();) {
+ for (ISymbianSDK sdk : sdkListCopy) {
- BuildTargetTreeNode treeNode = new BuildTargetTreeNode(iter.next(), sbsv2Project);
- if (treeNode.getChildren() != null){
+ BuildTargetTreeNode treeNode = new BuildTargetTreeNode(sdk, sbsv2Project);
+ if (treeNode.getChildren() != null || sbsv2Project){
input[index++] = treeNode;
}
}
@@ -144,4 +167,10 @@
}
return realInput;
}
+
+ private static String stripSDKIDFromConfigName(String configName, String sdkID){
+ return configName.replace("[" + sdkID + "]", "");
+ }
+
+
}
--- a/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/sdk/ui/shared/BuildTargetsPage.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/sdk/ui/shared/BuildTargetsPage.java Wed Aug 25 12:42:09 2010 -0500
@@ -29,6 +29,7 @@
import org.eclipse.jface.dialogs.IDialogPage;
import org.eclipse.jface.viewers.CheckStateChangedEvent;
import org.eclipse.jface.viewers.ICheckStateListener;
+import org.eclipse.jface.viewers.IColorProvider;
import org.eclipse.jface.viewers.IFilter;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
@@ -40,6 +41,7 @@
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
@@ -61,6 +63,7 @@
import com.nokia.carbide.template.engine.ITemplate;
import com.nokia.cpp.internal.api.utils.core.Check;
import com.nokia.cpp.internal.api.utils.core.HostOS;
+import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils;
/**
* Wizard page used to select a list of Carbide.c++ build configurations. Currently used
@@ -228,15 +231,34 @@
addOtherControls(parent);
- Link fLink = new Link(parent, SWT.WRAP);
- fLink.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- fLink.setText(Messages.getString("BuildTargetsPage.Select_Filtering_Prefs_Link")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- fLink.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 3, 1));
- fLink.addSelectionListener(new SelectionAdapter() {
+ Link fConfigPrefsLink = new Link(parent, SWT.WRAP);
+ fConfigPrefsLink.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ fConfigPrefsLink.setText(Messages.getString("BuildTargetsPage.Select_Filtering_Prefs_Link")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ fConfigPrefsLink.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 3, 1));
+ fConfigPrefsLink.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
// I don't see a way to open it to a specific tab, only the page
if (Window.OK == PreferencesUtil.createPreferenceDialogOn(getShell(), "com.nokia.carbide.cpp.sdk.ui.preferences.BuildPlatformFilterPage", null, null, 0).open()){ //$NON-NLS-1$
-
+ inited = false;
+ setVisible(true);
+ TemplateSDKFilter filter = filterCheckbox.getSelection() ? templateFilter : null;
+ filteringContentProviderWrapper.setFilter(filter);
+ viewer.getTree().clearAll(true);
+ viewer.refresh();
+ setPageComplete(validatePage());
+ }
+ }
+
+ });
+
+ Link fSDKLink = new Link(parent, SWT.WRAP);
+ fSDKLink.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ fSDKLink.setText(Messages.getString("BuildTargetsPage.Select_SymbianSDKs_Prefs_Link")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ fSDKLink.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 3, 1));
+ fSDKLink.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ // I don't see a way to open it to a specific tab, only the page
+ if (Window.OK == PreferencesUtil.createPreferenceDialogOn(getShell(), "com.nokia.carbide.cpp.sdk.ui.preferences.SDKPreferencePage", null, null, 0).open()){ //$NON-NLS-1$
inited = false;
setVisible(true);
TemplateSDKFilter filter = filterCheckbox.getSelection() ? templateFilter : null;
@@ -256,7 +278,27 @@
viewer = new ContainerCheckedTreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
viewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
- viewer.setLabelProvider(new LabelProvider());
+ class SDKNodeLabelProvider extends LabelProvider implements IColorProvider {
+
+ public Color getForeground(Object element) {
+ if (element instanceof BuildTargetTreeNode){
+ BuildTargetTreeNode treeNode = (BuildTargetTreeNode)element;
+ if (treeNode.getValue() instanceof ISymbianSDK){
+ if (treeNode.toString().contains(BuildTargetTreeNode.SDK_NODE_ERROR_EPOCROOT_INVALID)){
+ return WorkbenchUtils.getSafeShell().getDisplay().getSystemColor(SWT.COLOR_RED);
+ }
+ }
+ }
+
+ return null;
+ }
+
+ public Color getBackground(Object element) {
+ return null;
+ }
+ }
+
+ viewer.setLabelProvider(new SDKNodeLabelProvider());
TreeNodeContentProvider treeNodeContentProvider = new TreeNodeContentProvider();
filteringContentProviderWrapper =
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.ui/src/com/nokia/carbide/cpp/ui/TextAndDialogCellEditor.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,221 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Nokia Corporation
+ * 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:
+ * Nokia - initial API and implementation
+ *******************************************************************************/
+
+package com.nokia.carbide.cpp.ui;
+
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.jface.viewers.*;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.widgets.*;
+
+/**
+ * This class allows a CellEditor to provide editable text as well
+ * as a button which will launch a dialog to edit the data in a different way.
+ * @author dpodwall
+ * @author ddubrow
+ * @author eswartz
+ */
+public abstract class TextAndDialogCellEditor extends DialogCellEditor {
+
+ private TextAndDialogCellEditor.CustomTextCellEditor textCellEditor;
+ private Text text;
+ private Button dialogButton;
+
+ public TextAndDialogCellEditor(Composite parent) {
+ super(parent);
+ }
+
+ @Override
+ protected Control createContents(Composite parent) {
+ textCellEditor = new CustomTextCellEditor(parent);
+ text = (Text) textCellEditor.getControl();
+
+ // Forward all events from the TextCellEditor to
+ // this cell editor's listener
+ textCellEditor.addListener(new ICellEditorListener() {
+
+ public void applyEditorValue() {
+ // Ignore
+ }
+
+ public void cancelEditor() {
+ fireCancelEditor();
+ }
+
+ public void editorValueChanged(boolean oldValidState, boolean newValidState) {
+ fireEditorValueChanged(oldValidState, newValidState);
+ }
+ });
+
+ textCellEditor.addPropertyChangeListener(new IPropertyChangeListener() {
+
+ public void propertyChange(PropertyChangeEvent event) {
+ // text cell editor uses fireEnablementChanged
+ fireEnablementChanged(event.getProperty());
+ }
+
+ });
+
+ return text;
+ }
+
+ @Override
+ protected Button createButton(Composite parent) {
+ dialogButton = super.createButton(parent);
+ return dialogButton;
+ }
+
+ protected Button getButton() {
+ return dialogButton;
+ }
+
+ void applyEditorValueAndDeactivate() {
+ String newValue = (String)getValue();
+
+ doSetValue(newValue);
+ markDirty();
+ setValueValid(true);
+ fireApplyEditorValue();
+ deactivate();
+ }
+
+ protected void keyReleaseOccured(KeyEvent keyEvent) {
+ if (keyEvent.character == '\r') { // Enter character
+ applyEditorValueAndDeactivate();
+ }
+ else if (keyEvent.character == '\u001b') { // Escape character
+ fireCancelEditor();
+ }
+ else if (keyEvent.character == '\t') { // tab key
+ applyEditorValueAndDeactivate();
+ }
+ }
+
+ @Override
+ protected void updateContents(Object value) {
+ textCellEditor.setValue(value != null ? value : ""); //$NON-NLS-1$
+ }
+
+ @Override
+ protected void doSetFocus() {
+ text.setVisible(true);
+ textCellEditor.setFocus();
+ }
+
+ @Override
+ protected Object doGetValue() {
+ String result = (String) textCellEditor.getValue();
+ return result;
+ }
+
+ @Override
+ protected void doSetValue(Object value) {
+ textCellEditor.setValue(value);
+ }
+
+ @Override
+ protected void focusLost() {
+ super.focusLost();
+ }
+
+ public boolean isCopyEnabled() {
+ return textCellEditor.isCopyEnabled();
+ }
+
+ public boolean isCutEnabled() {
+ return textCellEditor.isCutEnabled();
+ }
+
+ public boolean isDeleteEnabled() {
+ return textCellEditor.isDeleteEnabled();
+ }
+
+ public boolean isFindEnabled() {
+ return textCellEditor.isFindEnabled();
+ }
+
+ public boolean isPasteEnabled() {
+ return textCellEditor.isPasteEnabled();
+ }
+
+ public boolean isRedoEnabled() {
+ return textCellEditor.isRedoEnabled();
+ }
+
+ public boolean isSaveAllEnabled() {
+ return textCellEditor.isSaveAllEnabled();
+ }
+
+ public boolean isSelectAllEnabled() {
+ return textCellEditor.isSelectAllEnabled();
+ }
+
+ public boolean isUndoEnabled() {
+ return textCellEditor.isUndoEnabled();
+ }
+
+ public boolean isValueValid() {
+ return textCellEditor.isValueValid();
+ }
+
+ public void performCopy() {
+ textCellEditor.performCopy();
+ }
+
+ public void performCut() {
+ textCellEditor.performCut();
+ }
+
+ public void performDelete() {
+ textCellEditor.performDelete();
+ }
+
+ public void performFind() {
+ textCellEditor.performFind();
+ }
+
+ public void performPaste() {
+ textCellEditor.performPaste();
+ }
+
+ public void performRedo() {
+ textCellEditor.performRedo();
+ }
+
+ public void performSelectAll() {
+ textCellEditor.performSelectAll();
+ }
+
+ public void performUndo() {
+ textCellEditor.performUndo();
+ }
+
+ static class CustomTextCellEditor extends TextCellEditor {
+
+ public CustomTextCellEditor(Composite parent) {
+ super(parent);
+ }
+
+ @Override
+ protected void focusLost() {
+ // don't deactivate everything when focus is lost,
+ // it will be handled in the outer cell editor
+ if (isActivated()) {
+ fireApplyEditorValue();
+ }
+ }
+ }
+
+}
+
+
+
--- a/core/com.nokia.carbide.templatewizard.symbian.tests/src/com/nokia/carbide/templatewizard/symbian/tests/TestSymbianSDK.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.templatewizard.symbian.tests/src/com/nokia/carbide/templatewizard/symbian/tests/TestSymbianSDK.java Wed Aug 25 12:42:09 2010 -0500
@@ -20,222 +20,125 @@
package com.nokia.carbide.templatewizard.symbian.tests;
import java.io.File;
-import java.net.URL;
-import java.util.*;
+import java.util.List;
+import java.util.Set;
import org.eclipse.core.runtime.IPath;
import org.osgi.framework.Version;
-import com.nokia.carbide.cpp.epoc.engine.preprocessor.IDefine;
-import com.nokia.carbide.cpp.sdk.core.*;
+import com.nokia.carbide.cpp.internal.api.sdk.ISymbianSDKModifier;
+import com.nokia.carbide.cpp.sdk.core.ISDKBuildInfo;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
-class TestSymbianSDK implements ISymbianSDK {
+class TestSymbianSDK implements ISymbianSDK, ISymbianSDKModifier {
-
- public List<String> getVariantCFGMacros() {
- return null;
+ private String framework;
+ private Version sdkVersion;
+ private String family;
+
+ public TestSymbianSDK(String frameWork, String sdkVersionString) {
+ this.framework = frameWork;
+ setSDKVersion(Version.parseVersion(sdkVersionString));
+ setFamily(framework);
}
- public List<String> getVendorSDKMacros() {
+
+ public void addSupportedFeature(Object feature) {
+ }
+
+ public ISDKBuildInfo getBuildInfo(String builderId) {
return null;
}
- public boolean isEKA1() {
- return false;
- }
- public boolean isEKA2() {
- return false;
- }
- public boolean isS60() {
- return false;
- }
- public void setEPOCROOT(String epocRoot) {
-
- }
- public void setName(String name) {
-
- }
- public void setUniqueID(String id) {
-
- }
- private String framework;
- private Version sdkVersion;
- public TestSymbianSDK(String frameWork, String sdkVersionString) {
- this.framework = frameWork;
- this.sdkVersion = Version.parseVersion(sdkVersionString);
- }
- public List<String> getAllMacros() {
- return null;
- }
- public List<String> getAvailablePlatforms() {
- return null;
- }
- public Date getCreationDate() {
- return null;
- }
+
public String getEPOCROOT() {
return "C:\\";
}
- public boolean isEnabled() {
- return false;
- }
+
public String getFamily() {
- return framework;
+ return family;
}
- public List<ISymbianBuildContext> getFilteredBuildConfigurations() {
- return null;
- }
+
public IPath getIncludePath() {
return null;
}
- public File getLicenseFile() {
- return null;
- }
+
public String getName() {
return null;
}
-
+
public Version getOSVersion() {
return null;
}
- public List<String> getPlatformMacros(String platform) {
- return null;
- }
- public File getPrefixFile() {
+
+ public File getPrefixFile(String builderId) {
return null;
}
- public File getPublisherLogo() {
- return null;
- }
- public URL getPublisherURL() {
- return null;
- }
+
public IPath getReleaseRoot() {
return null;
}
- public String getSDKDescription() {
- return null;
- }
- public String getSDKOSBranch() {
- return null;
- }
+
public Version getSDKVersion() {
return sdkVersion;
}
+
+ public Set getSupportedFeatures() {
+ return null;
+ }
+
+ public List<String> getSupportedTargetTypes() {
+ return null;
+ }
+
public IPath getToolsPath() {
return null;
}
- public List<ISymbianBuildContext> getUnfilteredBuildConfigurations() {
- return null;
- }
+
public String getUniqueId() {
return null;
}
+
+ public List<String> getVariantCFGMacros() {
+ return null;
+ }
+
public String getVendor() {
return null;
}
-
- public boolean isDefaultSDK() {
+
+ public void setEPOCROOT(String epocRoot) {
+ }
+
+ public boolean isEnabled() {
return false;
}
- public boolean isValid() {
- return false;
+
+ public void setBuildInfo(ISDKBuildInfo buildInfo, String builderId) {
}
+
public void setEnabled(boolean enable) {
}
- public List<String> validationErrors() {
- return null;
- }
- public void setCreateData(Date createDate) {
- }
- public void setIncludePath(IPath incPath) {
+
+ public void setFamily(String family) {
+ this.family = family;
}
- public void setIsDefaultSDK(boolean isDefault) {
+
+ public void setName(String name) {
}
- public void setLicenseFile(File licenseFile) {
- }
- public void setOSSDKBranch(String branch) {
- }
+
public void setOSVersion(Version osVer) {
}
- public void setPrefixFile(IPath prefixFile) {
- }
- public void setPublisherLogo(File logoFile) {
- }
- public void setPublisherName(String pubName) {
- }
- public void setPublisherURL(URL pubURL) {
- }
- public void setReleaseRoot(IPath releaseRootPath) {
- }
- public void setSDKDescription(String descr) {
- }
- public void setSDKVersion(Version sdkVers) {
- }
- public void setSourcePath(IPath srcPath) {
- }
- public void setToolsPath(IPath toolPath) {
- }
- public void setAvailablePlatforms(List<String> platList) {
+
+ public void setPrefixFile(IPath prefixFile, String builderId) {
}
- public List<String> getSupportedTargetTypes() {
- return null;
- }
- public void setOSMacros(List<String> osMacros) {
- }
- public void setPlatformMacros(String platform, List<String> platMacros) {
- }
- public List<String> getProjectVariantHRHMacros() {
- return null;
- }
- public List<String> getTargetTypeMacros(String targettype) {
- return null;
- }
- public boolean getRequiresRestart() {
- return false;
- }
-
- public String getPublisherName() {
- return null;
+
+ public void setSDKVersion(Version sdkVers) {
+ sdkVersion = sdkVers;
}
- public void setCreateDate(Date createDate) {
- }
- public void setSupportsWINSCW_UREL(boolean isSupported) {
-
- }
- public boolean supportsWINSCW_UREL() {
- return false;
- }
- public void scanSDK() {
-
- }
- /* (non-Javadoc)
- * @see com.nokia.carbide.cpp.sdk.core.ISymbianSDK#getBSFCatalog()
- */
- public IBSFCatalog getBSFCatalog() {
- return null;
+ public void setUniqueId(String id) {
}
-
- /* (non-Javadoc)
- * @see com.nokia.carbide.cpp.sdk.core.ISymbianSDK#getProjectVariantHRHDefines()
- */
- public List<IDefine> getProjectVariantHRHDefines() {
- return Collections.EMPTY_LIST;
+
+ public void scanSDK() {
}
-
- /* (non-Javadoc)
- * @see com.nokia.carbide.cpp.sdk.core.ISymbianSDK#getSBVCatalog()
- */
- public ISBVCatalog getSBVCatalog() {
- return null;
- }
- public boolean isPreviouslyScanned() {
- // TODO Auto-generated method stub
- return false;
- }
- public void setPreviouslyScanned(boolean wasScanned) {
- // TODO Auto-generated method stub
-
- }
-
-
+
}
\ No newline at end of file
--- a/core/com.nokia.carbide.templatewizard/src/com/nokia/carbide/internal/api/templatewizard/ui/TemplateWizardPage.java Tue Aug 24 16:42:58 2010 -0500
+++ b/core/com.nokia.carbide.templatewizard/src/com/nokia/carbide/internal/api/templatewizard/ui/TemplateWizardPage.java Wed Aug 25 12:42:09 2010 -0500
@@ -118,7 +118,7 @@
if (type instanceof UidFieldType) {
values.put(type.getId(), value.toLowerCase());
- // least hacky way to support this without creating a language out of templates
+ // simplest way to support this without creating a language out of templates
values.put(type.getId() + UIDComposite.WITHOUT_0X_PREFIX,
UIDComposite.getWithout0x(value).toLowerCase());
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.cpp.utils.core/src/com/nokia/cpp/internal/api/utils/core/CacheUtils.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,195 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Nokia 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:
+ * Nokia - Initial API and implementation
+ *******************************************************************************/
+
+package com.nokia.cpp.internal.api.utils.core;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.ObjectStreamClass;
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IPath;
+
+import com.nokia.cpp.utils.core.noexport.UtilsCorePlugin;
+
+public class CacheUtils {
+
+ protected class CacheEntry {
+
+ private String identifier;
+ private long freshness;
+ private Serializable data;
+ private IPath location;
+
+ public CacheEntry(String identifier, Serializable data, long freshness) {
+ this.identifier = identifier;
+ this.freshness = freshness;
+ this.data = data;
+ this.location = getDefaultLocation().append(Integer.toString(identifier.hashCode())).addFileExtension("txt");;
+ }
+
+ public CacheEntry(ObjectInputStream ois) throws Exception {
+ this.identifier = (String) ois.readObject();
+ this.freshness = (Long) ois.readObject();
+ this.data = (Serializable) ois.readObject();
+ this.location = getDefaultLocation().append(Integer.toString(identifier.hashCode())).addFileExtension("txt");;
+ }
+
+ public IPath getLocation() {
+ return location;
+ }
+
+ @SuppressWarnings("unchecked")
+ private <T> T getData(Class<T> expectedClass) {
+ if (expectedClass.isInstance(data))
+ return (T) data;
+ else
+ return null;
+ }
+
+ private long getFreshness() {
+ return freshness;
+ }
+
+ private void flush() throws Exception {
+ File cacheFile = getLocation().toFile();
+ if (!cacheFile.exists()) {
+ cacheFile.getParentFile().mkdirs();
+ cacheFile.createNewFile();
+ }
+ FileOutputStream fos = new FileOutputStream(cacheFile);
+ ObjectOutputStream oos = new ObjectOutputStream(fos);
+ oos.writeObject(identifier);
+ oos.writeObject(freshness);
+ oos.writeObject(data);
+ fos.close();
+ }
+
+ public void delete() {
+ File cacheFile = getLocation().toFile();
+ if (cacheFile.exists()) {
+ cacheFile.delete();
+ }
+ }
+
+ }
+
+ private Map<String, CacheEntry> caches = Collections.synchronizedMap(new HashMap<String, CacheEntry>());
+ private IPath defaultLocation;
+
+ public CacheUtils(IPath defaultLocation) {
+ this.defaultLocation = defaultLocation;
+ }
+
+ public CacheEntry getCache(String identifier) {
+ CacheEntry result = caches.get(identifier);
+ return result;
+ }
+
+ public void removeCache(String identifier, boolean removeFromDisk) {
+ CacheEntry cache = caches.get(identifier);
+ if (cache != null) {
+ caches.remove(identifier);
+ if (removeFromDisk){
+ cache.delete();
+ }
+ }
+ }
+
+ public <T> T getCachedData(String cacheIdentifier, Class<T> expectedClass, long freshness) {
+ // freshness = 0;
+ CacheEntry cache = caches.get(cacheIdentifier);
+
+ if (cache == null)
+ cache = loadCachedData(getDefaultLocation(), cacheIdentifier);
+
+ if (cache != null) {
+ long cachedFreshness = cache.getFreshness();
+ T result = cache.getData(expectedClass);
+ if (cachedFreshness == freshness && result != null)
+ {
+ caches.put(cacheIdentifier, cache);
+ return result;
+ }
+ else
+ {
+ caches.remove(cache);
+ cache.delete();
+ }
+ }
+ return null;
+ }
+
+ protected CacheEntry loadCachedData(IPath location, String cacheIdentifier) {
+ IPath flushPath = location.append(Integer.toString(cacheIdentifier.hashCode())).addFileExtension("txt");
+
+ if (flushPath.toFile().exists()) {
+ try {
+ final ClassLoader classLoader = UtilsCorePlugin.getDefault().getClass().getClassLoader();
+ FileInputStream fis = new FileInputStream(flushPath.toFile());
+ ObjectInputStream ois = new ObjectInputStream(fis) {
+
+ @Override
+ protected Class<?> resolveClass(ObjectStreamClass desc)
+ throws IOException, ClassNotFoundException {
+ String name = desc.getName();
+ try {
+ return classLoader.loadClass(name);
+ } catch (ClassNotFoundException e) {
+ return super.resolveClass(desc);
+ }
+ }};
+ return new CacheEntry(ois);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ return null;
+ }
+
+ public void putCachedData(String cacheIdentifier, Serializable data, long freshness) {
+ CacheEntry cache = new CacheEntry(cacheIdentifier, data, freshness);
+ caches.put(cacheIdentifier, cache);
+ }
+
+ public void flushAll() throws Exception {
+ Collection<CacheEntry> allCaches = caches.values();
+ for (CacheEntry entry : allCaches) {
+ entry.flush();
+ }
+ caches.clear();
+ }
+
+ public void flushCache(String identifier) throws Exception {
+ CacheEntry entry = caches.get(identifier);
+ if (entry != null) {
+ entry.flush();
+ }
+ }
+
+ public IPath getDefaultLocation() {
+ return defaultLocation;
+ }
+
+ public void setDefaultLocation(IPath defaultLocation) {
+ this.defaultLocation = defaultLocation;
+ }
+
+}
--- a/debuggercdi/com.nokia.carbide.trk.support/src/com/nokia/carbide/trk/support/Activator.java Tue Aug 24 16:42:58 2010 -0500
+++ b/debuggercdi/com.nokia.carbide.trk.support/src/com/nokia/carbide/trk/support/Activator.java Wed Aug 25 12:42:09 2010 -0500
@@ -84,12 +84,4 @@
public static void log(Throwable t) {
Logging.log(plugin, Logging.newSimpleStatus(0, t));
}
-
- public static void checkoutTraceLicense() {
- FeatureUseTrackerPlugin.getFeatureUseProxy().startUsingFeature(FeatureUseTrackerConsts.CARBIDE_OST_TRACE);
- }
-
- public static void checkinTraceLicense() {
- FeatureUseTrackerPlugin.getFeatureUseProxy().stopUsingFeature(FeatureUseTrackerConsts.CARBIDE_OST_TRACE);
- }
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debuggercdi/com.nokia.carbide.trk.support/src/com/nokia/carbide/trk/support/connection/TCFUSBConnection.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,31 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+package com.nokia.carbide.trk.support.connection;
+
+import com.nokia.carbide.remoteconnections.interfaces.IConnectionType;
+
+import java.util.Map;
+
+public class TCFUSBConnection extends TCPIPConnection {
+
+ public TCFUSBConnection(IConnectionType connectionType, Map<String, String> settings) {
+ super(connectionType, settings);
+ }
+
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debuggercdi/com.nokia.carbide.trk.support/src/com/nokia/carbide/trk/support/connection/TCFUSBConnectionType.java Wed Aug 25 12:42:09 2010 -0500
@@ -0,0 +1,52 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+package com.nokia.carbide.trk.support.connection;
+
+import com.nokia.carbide.remoteconnections.interfaces.IConnectionFactory;
+import com.nokia.carbide.trk.support.Messages;
+
+/**
+ * Implementation of IConnectionType for USB TCF connections. This also uses Nokia TCF but
+ * is given a unique identifier for now so we can debug it differently.
+ */
+public class TCFUSBConnectionType implements IUSBConnectionType {
+
+ public static final String ID = "com.nokia.carbide.connection.TCFUSBConnectionType"; //$NON-NLS-1$
+
+ public IConnectionFactory getConnectionFactory() {
+ return new SerialConnectionFactory(this, true);
+ }
+
+ public String getDescription() {
+ return Messages.getString("TCFUSBConnectionType.Desc"); //$NON-NLS-1$
+ }
+
+ public String getDisplayName() {
+ return Messages.getString("TCFUSBConnectionType.Label"); //$NON-NLS-1$
+ }
+
+ public String getHelpContext() {
+ return null;
+ }
+
+ public String getIdentifier() {
+ return ID;
+ }
+
+}
--- a/debuggercdi/com.nokia.cdt.debug.cw.symbian/src/com/nokia/cdt/debug/cw/symbian/SettingsData.java Tue Aug 24 16:42:58 2010 -0500
+++ b/debuggercdi/com.nokia.cdt.debug.cw.symbian/src/com/nokia/cdt/debug/cw/symbian/SettingsData.java Wed Aug 25 12:42:09 2010 -0500
@@ -57,8 +57,9 @@
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
import com.nokia.carbide.cdt.builder.project.ISISBuilderInfo;
-import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDKFeatures;
import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
import com.nokia.carbide.remoteconnections.interfaces.IConnection;
import com.nokia.carbide.remoteconnections.internal.registry.Registry;
@@ -254,13 +255,11 @@
// make sure the selected build configuration of the current project
// is an emulator build, otherwise warn them that we can't set default values.
- if (buildConfig.getPlatformString().compareTo(ISymbianBuildContext.EMULATOR_PLATFORM) == 0) {
+ if (buildConfig.getPlatformString().compareTo(ISBSv1BuildContext.EMULATOR_PLATFORM) == 0) {
configuration.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME, mainExeHostPath == null ? "" : mainExeHostPath.toOSString());
if (isEmulatorRequired(buildConfig, mainExeHostPath, mainExeWorkspaceRelativeMMPPath)) {
- IPath releaseRoot = buildConfig.getSDK().getReleaseRoot();
- String winscwudeb = releaseRoot.toOSString() + File.separator + "WINSCW" + File.separator + buildConfig.getTargetString(); //$NON-NLS-1$ //$NON-NLS-2$
-
+ String winscwudeb = buildConfig.getSDK().getReleaseRoot().toOSString() + File.separator + "WINSCW" + File.separator + buildConfig.getTargetString(); //$NON-NLS-1$ //$NON-NLS-2$
String emulatorPath = winscwudeb + File.separator + "epoc.exe"; //$NON-NLS-1$
configuration.setAttribute(DebuggerCommonData.Host_App_Path, getCanonicalPath(emulatorPath));
}
@@ -359,7 +358,7 @@
// make sure the selected build configuration of the current project is not an emulator build
// otherwise warn them that we can't set default values.
- if (buildConfig.getPlatformString().compareTo(ISymbianBuildContext.EMULATOR_PLATFORM) != 0) {
+ if (buildConfig.getPlatformString().compareTo(ISBSv1BuildContext.EMULATOR_PLATFORM) != 0) {
configuration.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME, mainExeHostPath == null ? "" : mainExeHostPath.toOSString());
configuration.setAttribute(PreferenceConstants.J_PN_RemoteProcessToLaunch, mainExeTargetPath == null ? "" : PathUtils.convertPathToWindows(mainExeTargetPath));
} else {
@@ -394,7 +393,7 @@
// make sure the selected build configuration of the current project is not an emulator build
// otherwise warn them that we can't set default values.
- if (buildConfig.getPlatformString().compareTo(ISymbianBuildContext.EMULATOR_PLATFORM) != 0) {
+ if (buildConfig.getPlatformString().compareTo(ISBSv1BuildContext.EMULATOR_PLATFORM) != 0) {
configuration.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME, mainExeHostPath == null ? "" : mainExeHostPath.toOSString());
} else {
displayWarningDialog(Messages.getString("SettingsData.37")); //$NON-NLS-1$
@@ -465,7 +464,7 @@
ICarbideBuildConfiguration buildConfig = cpi.getDefaultConfiguration();
String defaultTargetPath = "C:\\"; //$NON-NLS-1$
- if (buildConfig.getSDK().isEKA2()) {
+ if (buildConfig.getSDK().getSupportedFeatures().contains(ISymbianSDKFeatures.IS_EKA2)) {
// C:\\sys\bin for eka2
defaultTargetPath += "sys\\bin\\"; //$NON-NLS-1$
}
@@ -772,11 +771,8 @@
for (ISymbianSDK currSDK : sdkList){
if (new Path(currSDK.getEPOCROOT()).isPrefixOf(mainExeHostPath))
{
- // Apparently this only works correctly with the S60 emulator.
- if (!currSDK.isS60() &&
- !currSDK.getFamily().equalsIgnoreCase(ISymbianSDK.TECHVIEW_FAMILY_ID))
- return true;
-
+ // Apparently this only works correctly with the S60 emulator.
+
if ("exe".equalsIgnoreCase(mainExeHostPath.getFileExtension())) { //$NON-NLS-1$
Version version = currSDK.getOSVersion();
if (!(version.getMajor() == 9 && version.getMinor() == 1)) {
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/LaunchPlugin.java Tue Aug 24 16:42:58 2010 -0500
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/LaunchPlugin.java Wed Aug 25 12:42:09 2010 -0500
@@ -50,7 +50,7 @@
import com.nokia.carbide.cdt.builder.EpocEngineHelper;
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
-import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
import com.nokia.carbide.remoteconnections.RemoteConnectionsActivator;
import com.nokia.carbide.remoteconnections.interfaces.IService;
import com.nokia.cdt.debug.cw.symbian.SettingsData;
@@ -202,7 +202,7 @@
}
// just check the platform for the default config
- if (buildConfig.getPlatformString().equals(ISymbianBuildContext.EMULATOR_PLATFORM)) {
+ if (buildConfig.getPlatformString().equals(ISBSv1BuildContext.EMULATOR_PLATFORM)) {
isX86 = true;
}
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/SymbianProjectPropertyTester.java Tue Aug 24 16:42:58 2010 -0500
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/SymbianProjectPropertyTester.java Wed Aug 25 12:42:09 2010 -0500
@@ -31,7 +31,7 @@
import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
-import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
/**
* A property tester that determines if a file is an executable.
@@ -109,7 +109,7 @@
if (cpi != null) {
ICarbideBuildConfiguration buildConfig = cpi.getDefaultConfiguration();
// just check the platform for the default config
- if (buildConfig != null && buildConfig.getPlatformString().equals(ISymbianBuildContext.EMULATOR_PLATFORM)) {
+ if (buildConfig.getPlatformString().equals(ISBSv1BuildContext.EMULATOR_PLATFORM)) {
return true;
}
}
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/ui/InstallationTab.java Tue Aug 24 16:42:58 2010 -0500
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/ui/InstallationTab.java Wed Aug 25 12:42:09 2010 -0500
@@ -54,6 +54,7 @@
import com.nokia.carbide.cdt.builder.builder.CarbideCPPBuilder;
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDKFeatures;
import com.nokia.cdt.internal.debug.launch.LaunchPlugin;
import com.nokia.cpp.internal.api.utils.ui.BrowseDialogUtils;
@@ -420,7 +421,7 @@
for (ICarbideBuildConfiguration buildConfig : cpi.getBuildConfigurations()) {
if (buildConfig.getDisplayString().equals(buildConfigName)) {
// enable the controls for EKA2 configs
- if (buildConfig.getSDK().isEKA2()) {
+ if (buildConfig.getSDK().getSupportedFeatures().contains(ISymbianSDKFeatures.IS_EKA2)) {
puLabel.setVisible(true);
puPath.setVisible(true);
puLink.setVisible(true);
--- a/project/com.nokia.carbide.cpp.epoc.engine.tests/src/com/nokia/carbide/cpp/epoc/engine/tests/TestsPlugin.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.epoc.engine.tests/src/com/nokia/carbide/cpp/epoc/engine/tests/TestsPlugin.java Wed Aug 25 12:42:09 2010 -0500
@@ -16,14 +16,21 @@
*/
package com.nokia.carbide.cpp.epoc.engine.tests;
-import com.nokia.carbide.cpp.sdk.core.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import junit.framework.TestCase;
import org.eclipse.core.runtime.Plugin;
import org.osgi.framework.BundleContext;
-import java.util.*;
-
-import junit.framework.TestCase;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildInfo;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildInfo;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
/**
* The main plugin class to be used in the desktop.
@@ -68,7 +75,11 @@
*/
public static List<ISymbianBuildContext> getUsableBuildConfigs() {
for (ISymbianSDK sdk : SDKCorePlugin.getSDKManager().getSDKList()) {
- List<ISymbianBuildContext> contexts = sdk.getUnfilteredBuildConfigurations();
+ ISBSv1BuildInfo sbsv1BuildInfo = (ISBSv1BuildInfo)sdk.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER);
+ ISBSv2BuildInfo sbsv2BuildInfo = (ISBSv2BuildInfo)sdk.getBuildInfo(ISymbianBuilderID.SBSV2_BUILDER);
+ List<ISymbianBuildContext> contexts = new ArrayList<ISymbianBuildContext>();
+ contexts.addAll(sbsv1BuildInfo.getAllBuildConfigurations());
+ contexts.addAll(sbsv2BuildInfo.getAllBuildConfigurations());
if (contexts.size() > 0) {
return contexts.subList(0, Math.min(contexts.size(), 8));
}
--- a/project/com.nokia.carbide.cpp.epoc.engine.tests/src/com/nokia/carbide/cpp/epoc/engine/tests/model/BaseMMPViewTest.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.epoc.engine.tests/src/com/nokia/carbide/cpp/epoc/engine/tests/model/BaseMMPViewTest.java Wed Aug 25 12:42:09 2010 -0500
@@ -93,7 +93,7 @@
return parserConfig;
}
- public String getDefaultDefFileBase(boolean isASSP) {
+ public String getDefaultDefFileBase() {
return defFileBase;
}
public boolean isEmulatorBuild() {
@@ -117,7 +117,7 @@
public IViewParserConfiguration getViewParserConfiguration() {
return parserConfig;
}
- public String getDefaultDefFileBase(boolean isASSP) {
+ public String getDefaultDefFileBase() {
return defFileBase;
}
public boolean isEmulatorBuild() {
--- a/project/com.nokia.carbide.cpp.epoc.engine.tests/src/com/nokia/carbide/cpp/epoc/engine/tests/model/TestMMPView3.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.epoc.engine.tests/src/com/nokia/carbide/cpp/epoc/engine/tests/model/TestMMPView3.java Wed Aug 25 12:42:09 2010 -0500
@@ -17,25 +17,27 @@
package com.nokia.carbide.cpp.epoc.engine.tests.model;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.osgi.framework.Version;
+
import com.nokia.carbide.cdt.builder.DefaultMMPViewConfiguration;
import com.nokia.carbide.cdt.builder.DefaultViewParserConfiguration;
import com.nokia.carbide.cpp.epoc.engine.model.mmp.EMMPStatement;
import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPView;
import com.nokia.carbide.cpp.epoc.engine.preprocessor.AcceptedNodesViewFilter;
import com.nokia.carbide.cpp.epoc.engine.preprocessor.DefineFactory;
-import com.nokia.carbide.cpp.internal.api.sdk.SymbianBuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.BuildContextSBSv1;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
import com.nokia.carbide.cpp.sdk.core.SymbianSDKFactory;
import com.nokia.cpp.internal.api.utils.core.PathUtils;
-import org.eclipse.core.runtime.*;
-import org.osgi.framework.Version;
-
-import java.util.ArrayList;
-import java.util.List;
-
/**
* Test MMP view manipulation
*
@@ -54,8 +56,7 @@
// we need to have a fixed idea of the SDK for these tests (even when workspace isn't running)
sdk = null;
if (!Platform.isRunning()) {
- sdk = SymbianSDKFactory.createInstance("S60_3rd", "c:\\symbian\\9.1\\S60_3rd", "com.nokia.s60",
- new Version(9,0,0), null, null, false);
+ sdk = SymbianSDKFactory.createInstance("S60_3rd", "c:\\symbian\\9.1\\S60_3rd", new Version(9,0,0));
// add to memory for standalone test, hopefully only affecting my system
SDKCorePlugin.getSDKManager().addSDK(sdk);
} else {
@@ -68,9 +69,9 @@
}
}
if (sdk != null) {
- winscwContext = new SymbianBuildContext(sdk, "WINSCW", "UDEB");
- armv5Context = new SymbianBuildContext(sdk, "ARMV5", "UDEB");
- gcceContext = new SymbianBuildContext(sdk, "GCCE", "UREL");
+ winscwContext = new BuildContextSBSv1(sdk, "WINSCW", "UDEB");
+ armv5Context = new BuildContextSBSv1(sdk, "ARMV5", "UDEB");
+ gcceContext = new BuildContextSBSv1(sdk, "GCCE", "UREL");
buildContexts.add(winscwContext);
buildContexts.add(armv5Context);
buildContexts.add(gcceContext);
--- a/project/com.nokia.carbide.cpp.epoc.engine.tests/src/com/nokia/carbide/cpp/epoc/engine/tests/model/TestModelProvider.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.epoc.engine.tests/src/com/nokia/carbide/cpp/epoc/engine/tests/model/TestModelProvider.java Wed Aug 25 12:42:09 2010 -0500
@@ -121,7 +121,7 @@
return true;
}
- public String getDefaultDefFileBase(boolean isASSP) {
+ public String getDefaultDefFileBase() {
return "BWINS";
}
--- a/project/com.nokia.carbide.cpp.epoc.engine.tests/src/com/nokia/carbide/cpp/epoc/engine/tests/model/TestStandaloneModelProvider.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.epoc.engine.tests/src/com/nokia/carbide/cpp/epoc/engine/tests/model/TestStandaloneModelProvider.java Wed Aug 25 12:42:09 2010 -0500
@@ -123,7 +123,7 @@
return true;
}
- public String getDefaultDefFileBase(boolean isASSP) {
+ public String getDefaultDefFileBase() {
return "BWINS";
}
--- a/project/com.nokia.carbide.cpp.epoc.engine.tests/src/com/nokia/carbide/cpp/epoc/engine/tests/parser/TestSystemMMPs.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.epoc.engine.tests/src/com/nokia/carbide/cpp/epoc/engine/tests/parser/TestSystemMMPs.java Wed Aug 25 12:42:09 2010 -0500
@@ -123,7 +123,7 @@
return parserConfig;
}
- public String getDefaultDefFileBase(boolean isASSP) {
+ public String getDefaultDefFileBase() {
return "BWINS";
}
--- a/project/com.nokia.carbide.cpp.epoc.engine.tests/src/com/nokia/carbide/cpp/epoc/engine/tests/workspace/BaseProjectTests.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.epoc.engine.tests/src/com/nokia/carbide/cpp/epoc/engine/tests/workspace/BaseProjectTests.java Wed Aug 25 12:42:09 2010 -0500
@@ -134,7 +134,7 @@
return true;
}
- public String getDefaultDefFileBase(boolean isASSP) {
+ public String getDefaultDefFileBase() {
return defFileBase;
}
--- a/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/cpp/epoc/engine/model/mmp/IMMPViewConfiguration.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/cpp/epoc/engine/model/mmp/IMMPViewConfiguration.java Wed Aug 25 12:42:09 2010 -0500
@@ -31,12 +31,11 @@
/**
* Get the default directory used for .def file exports.
- * @param isASSP true if this is an ASSP build
* @return the name of the directory used for platform-specific defs
* (e.g. "BWINS", "EABI", ...). This directory, if present, is removed from
* the path before setting DEFFILE. May be null if unknown.
*/
- String getDefaultDefFileBase(boolean isASSP);
+ String getDefaultDefFileBase();
/**
* Tell if this is an emulator build. Used for .def filepath calculation.
--- a/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/internal/cpp/epoc/engine/model/ViewDataCache.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/internal/cpp/epoc/engine/model/ViewDataCache.java Wed Aug 25 12:42:09 2010 -0500
@@ -299,7 +299,10 @@
if (DEBUG_VERBOSE) {
System.out.println("Found entry for " + key); //$NON-NLS-1$
}
- cacheHits.put(key, cacheHits.get(key) + 1);
+ if ((cacheHits.get(key) != null)){
+ cacheHits.put(key, cacheHits.get(key) + 1);
+ }
+
data = statefulData.second;
}
return data;
--- a/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/internal/cpp/epoc/engine/model/bldinf/BldInfView.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/internal/cpp/epoc/engine/model/bldinf/BldInfView.java Wed Aug 25 12:42:09 2010 -0500
@@ -437,7 +437,6 @@
*/
@Override
protected boolean internalMerge(IASTTranslationUnit oldTu) {
- // TODO Auto-generated method stub
return false;
}
--- a/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/internal/cpp/epoc/engine/model/mmp/MMPView.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/internal/cpp/epoc/engine/model/mmp/MMPView.java Wed Aug 25 12:42:09 2010 -0500
@@ -973,7 +973,7 @@
String theDefFile = singleArgumentSettings.get(EMMPStatement.DEFFILE);;
return convertMMPDefFileToProjectOrFullPath(
theDefFile, isDefFileInFixedDirectory(),
- viewConfiguration.getDefaultDefFileBase(isASSP()),
+ viewConfiguration.getDefaultDefFileBase(),
viewConfiguration.isEmulatorBuild());
}
@@ -989,7 +989,7 @@
//Check.checkState(ModelSynchronizer.FORCE_NEW_CONTENT_TO_MAIN_DOCUMENT);
IMMPViewConfiguration viewConfiguration = (IMMPViewConfiguration) getViewConfiguration();
String newDefFile = convertPhysicalFileToMMPDefFile(path,
- viewConfiguration.getDefaultDefFileBase(isASSP()),
+ viewConfiguration.getDefaultDefFileBase(),
viewConfiguration.isEmulatorBuild(),
isFixedDirectory);
singleArgumentSettings.put(EMMPStatement.DEFFILE, newDefFile);
--- a/project/com.nokia.carbide.cpp.project.core.tests/src/com/nokia/carbide/cpp/project/core/tests/MissingSdkTest.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.core.tests/src/com/nokia/carbide/cpp/project/core/tests/MissingSdkTest.java Wed Aug 25 12:42:09 2010 -0500
@@ -16,23 +16,30 @@
*/
package com.nokia.carbide.cpp.project.core.tests;
-import java.io.*;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
import junit.framework.TestCase;
import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
+import com.nokia.carbide.cpp.internal.api.sdk.BuildContextSBSv1;
import com.nokia.carbide.cpp.internal.api.sdk.SBSv2Utils;
import com.nokia.carbide.cpp.internal.api.sdk.SDKManagerInternalAPI;
-import com.nokia.carbide.cpp.internal.api.sdk.SymbianBuildContext;
import com.nokia.carbide.cpp.project.core.ProjectCorePlugin;
-import com.nokia.carbide.cpp.sdk.core.*;
+import com.nokia.carbide.cpp.sdk.core.ISDKManager;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
public class MissingSdkTest extends TestCase {
@@ -83,7 +90,7 @@
// put up to 4 configs among each SDK in devices.xml (to improve speed with custkits)
List<ISymbianBuildContext> allConfigs = new ArrayList<ISymbianBuildContext>();
for (ISymbianSDK sdk : sdkList) {
- List<ISymbianBuildContext> sdkConfigs = sdk.getFilteredBuildConfigurations();
+ List<ISymbianBuildContext> sdkConfigs = sdk.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER).getFilteredBuildConfigurations();
if (sdkConfigs == null)
continue;
if (sdkConfigs.size() <= 0)
@@ -108,8 +115,10 @@
// check we only have those configs in the removed SDK in the missing list
List<ICarbideBuildConfiguration> configList = cpi.getBuildConfigurations();
int badCount = 0;
- for (ICarbideBuildConfiguration config: configList) {
- if (SDKManagerInternalAPI.getMissingSdk(SymbianBuildContext.getSDKIDFromConfigName(config.getDisplayString())) != null) {
+ for (ICarbideBuildConfiguration config: configList) {
+ // TODO: Using SBSv1 static method. Currently display name keeps the SDKID the same for both
+ // SBSv1 and SBSv2 configs. Will need to update in the event that SBSv1 support is removed. TCK.
+ if (SDKManagerInternalAPI.getMissingSdk(BuildContextSBSv1.getSDKIDFromConfigName(config.getDisplayString())) != null) {
badCount++;
}
}
--- a/project/com.nokia.carbide.cpp.project.core.tests/src/com/nokia/carbide/cpp/project/core/tests/TestBldInfImportDataLoader.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.core.tests/src/com/nokia/carbide/cpp/project/core/tests/TestBldInfImportDataLoader.java Wed Aug 25 12:42:09 2010 -0500
@@ -37,7 +37,7 @@
import com.nokia.carbide.cpp.api.test.support.gen.InfImportTestData.InfComponentType;
import com.nokia.carbide.cpp.api.test.support.gen.InfImportTestData.MakMakeRefType;
import com.nokia.carbide.cpp.api.test.support.xml.BldInfImportDataLoader;
-import com.nokia.carbide.cpp.internal.api.sdk.SymbianBuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.BuildContextSBSv1;
import com.nokia.carbide.cpp.internal.project.utils.BldInfImportWrapper;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
@@ -88,7 +88,7 @@
for (BuildConfigType currConfigData : currInfData.getBuildConfigurations().getBuildConfig()){
String plat = currConfigData.getPlatform();
String target = currConfigData.getTarget().getName();
- SymbianBuildContext context = new SymbianBuildContext(sdk, plat, target);
+ BuildContextSBSv1 context = new BuildContextSBSv1(sdk, plat, target);
buildConfigs.add(context);
}
--- a/project/com.nokia.carbide.cpp.project.core.tests/src/com/nokia/carbide/cpp/project/core/tests/TestsPlugin.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.core.tests/src/com/nokia/carbide/cpp/project/core/tests/TestsPlugin.java Wed Aug 25 12:42:09 2010 -0500
@@ -76,7 +76,7 @@
*/
public static List<ISymbianBuildContext> getUsableBuildConfigs() {
for (ISymbianSDK sdk : SDKCorePlugin.getSDKManager().getSDKList()) {
- List<ISymbianBuildContext> contexts = sdk.getUnfilteredBuildConfigurations();
+ List<ISymbianBuildContext> contexts = sdk.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER).getAllBuildConfigurations();
if (contexts.size() > 0)
return contexts.subList(0, Math.min(contexts.size(), 8));
}
--- a/project/com.nokia.carbide.cpp.project.core/src/com/nokia/carbide/cpp/internal/api/project/core/ProjectCorePluginUtility.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.core/src/com/nokia/carbide/cpp/internal/api/project/core/ProjectCorePluginUtility.java Wed Aug 25 12:42:09 2010 -0500
@@ -30,6 +30,7 @@
import com.nokia.carbide.cdt.builder.project.ISISBuilderInfo;
import com.nokia.carbide.cdt.internal.api.builder.SISBuilderInfo2;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDKFeatures;
public class ProjectCorePluginUtility {
@@ -94,7 +95,7 @@
if (pkgFilePath != null) {
SISBuilderInfo2 sisInfo = new SISBuilderInfo2(projDes.getProject());
sisInfo.setPKGFile(pkgFilePath);
- if (config.getSDK().isEKA2()) {
+ if (config.getSDK().getSupportedFeatures().contains(ISymbianSDKFeatures.IS_EKA2)) {
// set to self signing
sisInfo.setSigningType(ISISBuilderInfo.SELF_SIGN);
}
--- a/project/com.nokia.carbide.cpp.project.core/src/com/nokia/carbide/cpp/internal/api/project/core/ResourceChangeListener.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.core/src/com/nokia/carbide/cpp/internal/api/project/core/ResourceChangeListener.java Wed Aug 25 12:42:09 2010 -0500
@@ -454,7 +454,7 @@
}
// check the extensions
- BldInfViewPathHelper helper = new BldInfViewPathHelper(infView, cpi.getDefaultConfiguration());
+ BldInfViewPathHelper helper = new BldInfViewPathHelper(infView, cpi.getDefaultConfiguration().getBuildContext());
for (IExtension extension : infView.getAllExtensions()) {
IPath path = infPathHelper.convertToProject(helper.convertExtensionTemplateToFilesystem(extension.getTemplatePath()));
if (path != null) {
@@ -939,7 +939,7 @@
}
// check the extensions
- BldInfViewPathHelper helper = new BldInfViewPathHelper(infView, cpi.getDefaultConfiguration());
+ BldInfViewPathHelper helper = new BldInfViewPathHelper(infView, cpi.getDefaultConfiguration().getBuildContext());
List<IExtension> extensions = infView.getExtensions();
for (Iterator<IExtension> iter = extensions.iterator(); iter.hasNext();) {
IPath path = infPathHelper.convertToProject(helper.convertExtensionTemplateToFilesystem(iter.next().getTemplatePath()));
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/ProjectUIPlugin.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/ProjectUIPlugin.java Wed Aug 25 12:42:09 2010 -0500
@@ -276,6 +276,16 @@
store.setValue(PreferenceConstants.PREF_KEEP_PROJECTS_IN_SYNC, keepInSync);
}
+ public static boolean supportLinkedResources() {
+ IPreferenceStore store = ProjectUIPlugin.getDefault().getPreferenceStore();
+ return store.getBoolean(PreferenceConstants.PREF_SUPPORT_LINKED_RESOURCES);
+ }
+
+ public static void setSupportLinkedResources(boolean supported) {
+ IPreferenceStore store = ProjectUIPlugin.getDefault().getPreferenceStore();
+ store.setValue(PreferenceConstants.PREF_SUPPORT_LINKED_RESOURCES, supported);
+ }
+
public static int getAddFilesToProjectOption() {
IPreferenceStore store = ProjectUIPlugin.getDefault().getPreferenceStore();
return store.getInt(PreferenceConstants.PREF_ADDED_FILES_OPTION);
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/editors/images/AIFOutputFileParametersComposite.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/editors/images/AIFOutputFileParametersComposite.java Wed Aug 25 12:42:09 2010 -0500
@@ -135,7 +135,7 @@
emptyIfNull(aifInfo.getResource()),
EMMPPathContext.AIF_SOURCE,
editorContext.getMMPViewPathHelper(),
- editorContext.getBuildContext(),
+ editorContext.getCarbideBuildConfiguration(),
editorContext.getRSSFiles(),
new String[] { "*.rss" }, //$NON-NLS-1$
Messages.getString("AIFOutputFileParametersComposite.ResourceFilePathLabel")); //$NON-NLS-1$
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/editors/images/MultiImageEditorContext.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/editors/images/MultiImageEditorContext.java Wed Aug 25 12:42:09 2010 -0500
@@ -132,7 +132,7 @@
this.generatedExtension = "mif"; //$NON-NLS-1$
this.imagePathHelper = new ImageMakefileViewPathHelper(
(IImageMakefileView) view,
- new ISymbianBuildContext[] { getBuildContext() });
+ new ISymbianBuildContext[] { getCarbideBuildConfiguration().getBuildContext() });
}
commonInit();
@@ -367,7 +367,7 @@
public boolean supportsHeaderOnlyFlag() {
if (imageFileType == MBM_FILE) {
// flag added in 9.2
- ISymbianBuildContext buildContext = getBuildContext();
+ ISymbianBuildContext buildContext = getCarbideBuildConfiguration().getBuildContext();
if (buildContext == null)
return false;
Version version = buildContext.getSDK().getOSVersion();
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/editors/images/MultiImageEditorContextBase.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/editors/images/MultiImageEditorContextBase.java Wed Aug 25 12:42:09 2010 -0500
@@ -16,26 +16,22 @@
*/
package com.nokia.carbide.cpp.internal.project.ui.editors.images;
-import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
-import com.nokia.carbide.cdt.builder.ImageMakefileViewPathHelper;
-import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
-import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
-import com.nokia.carbide.cpp.epoc.engine.image.*;
-import com.nokia.carbide.cpp.epoc.engine.model.*;
-import com.nokia.carbide.cpp.internal.project.ui.ProjectUIPlugin;
-import com.nokia.carbide.cpp.internal.project.ui.images.*;
-import com.nokia.carbide.cpp.internal.project.ui.images.providers.ThumbnailImageLabelProvider;
-import com.nokia.carbide.cpp.internal.ui.images.CachingImageLoader;
-import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
-import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
-import com.nokia.carbide.cpp.ui.images.IImageLoader;
-import com.nokia.carbide.cpp.ui.images.IImageModel;
-import com.nokia.cpp.internal.api.utils.core.CacheMap;
+import java.util.ArrayList;
+import java.util.regex.Pattern;
import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.operations.*;
+import org.eclipse.core.commands.operations.DefaultOperationHistory;
+import org.eclipse.core.commands.operations.IOperationHistory;
+import org.eclipse.core.commands.operations.IOperationHistoryListener;
+import org.eclipse.core.commands.operations.IUndoContext;
+import org.eclipse.core.commands.operations.OperationHistoryEvent;
import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.dialogs.DialogSettings;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.swt.graphics.Image;
@@ -44,8 +40,34 @@
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.PlatformUI;
-import java.util.ArrayList;
-import java.util.regex.Pattern;
+import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
+import com.nokia.carbide.cdt.builder.ImageMakefileViewPathHelper;
+import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
+import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
+import com.nokia.carbide.cpp.epoc.engine.image.IBitmapSourceReference;
+import com.nokia.carbide.cpp.epoc.engine.image.IImageSource;
+import com.nokia.carbide.cpp.epoc.engine.image.IImageSourceReference;
+import com.nokia.carbide.cpp.epoc.engine.image.ISVGSourceReference;
+import com.nokia.carbide.cpp.epoc.engine.image.ImageFormat;
+import com.nokia.carbide.cpp.epoc.engine.model.IModel;
+import com.nokia.carbide.cpp.epoc.engine.model.IModelProvider;
+import com.nokia.carbide.cpp.epoc.engine.model.IView;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildInfo;
+import com.nokia.carbide.cpp.internal.project.ui.ProjectUIPlugin;
+import com.nokia.carbide.cpp.internal.project.ui.images.CarbideImageModelFactory;
+import com.nokia.carbide.cpp.internal.project.ui.images.IImageResolver;
+import com.nokia.carbide.cpp.internal.project.ui.images.IImageSourceModel;
+import com.nokia.carbide.cpp.internal.project.ui.images.IImageSourceReferenceModel;
+import com.nokia.carbide.cpp.internal.project.ui.images.ISymbianImageContainerModel;
+import com.nokia.carbide.cpp.internal.project.ui.images.providers.ThumbnailImageLabelProvider;
+import com.nokia.carbide.cpp.internal.ui.images.CachingImageLoader;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDKFeatures;
+import com.nokia.carbide.cpp.ui.images.IImageLoader;
+import com.nokia.carbide.cpp.ui.images.IImageModel;
+import com.nokia.cpp.internal.api.utils.core.CacheMap;
public abstract class MultiImageEditorContextBase {
private static final Pattern LEGAL_FILENAME_PATTERN = Pattern.compile("[A-Za-z0-9_]+"); //$NON-NLS-1$
@@ -247,7 +269,7 @@
* Get the default build context.
* @return build context or null
*/
- public ICarbideBuildConfiguration getBuildContext() {
+ public ICarbideBuildConfiguration getCarbideBuildConfiguration() {
IProject project = getProject();
if (project == null)
return null;
@@ -401,10 +423,10 @@
* @return
*/
public boolean isEKA2() {
- ISymbianBuildContext buildContext = getBuildContext();
+ ISymbianBuildContext buildContext = getCarbideBuildConfiguration().getBuildContext();
ISymbianSDK sdk = buildContext != null ? buildContext.getSDK() : null;
if (sdk != null) {
- return sdk.isEKA2();
+ return sdk.getSupportedFeatures().contains(ISymbianSDKFeatures.IS_EKA2);
}
return false;
}
@@ -414,13 +436,11 @@
* @return
*/
public boolean isS60() {
- ISymbianBuildContext buildContext = getBuildContext();
- ISymbianSDK sdk = buildContext != null ? buildContext.getSDK() : null;
- if (sdk != null) {
- return sdk.isS60();
+ ISymbianBuildContext buildContext = getCarbideBuildConfiguration().getBuildContext();
+ if (buildContext.getSDK().getSupportedFeatures().contains(ISymbianSDKFeatures.IS_AVKON_SUPPORTED)){
+ return true;
}
return false;
-
}
/**
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/editors/inf/BldInfEditor.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/editors/inf/BldInfEditor.java Wed Aug 25 12:42:09 2010 -0500
@@ -197,7 +197,7 @@
editorContext.bldInfView = null;
}
BldInfEditorViewConfiguration viewConfig = new BldInfEditorViewConfiguration(
- editorContext.activeBuildConfig, getProject());
+ editorContext.activeBuildConfig.getBuildContext(), getProject());
editorContext.bldInfView = editorContext.bldInfModel.createView(viewConfig);
}
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/images/CarbideImageModelFactory.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/images/CarbideImageModelFactory.java Wed Aug 25 12:42:09 2010 -0500
@@ -16,22 +16,32 @@
*/
package com.nokia.carbide.cpp.internal.project.ui.images;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+
import com.nokia.carbide.cdt.builder.ImageMakefileViewPathHelper;
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
-import com.nokia.carbide.cpp.epoc.engine.image.*;
+import com.nokia.carbide.cpp.epoc.engine.image.IImageSource;
+import com.nokia.carbide.cpp.epoc.engine.image.IImageSourceReference;
+import com.nokia.carbide.cpp.epoc.engine.image.IMultiImageSource;
+import com.nokia.carbide.cpp.epoc.engine.image.ImageFormat;
import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPAIFInfo;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildInfo;
import com.nokia.carbide.cpp.internal.ui.images.CachingImageLoader;
-import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
-import com.nokia.carbide.cpp.ui.images.*;
+import com.nokia.carbide.cpp.ui.images.IImageContainerEditorProvider;
+import com.nokia.carbide.cpp.ui.images.IImageContainerModel;
+import com.nokia.carbide.cpp.ui.images.IImageContainerModelListener;
+import com.nokia.carbide.cpp.ui.images.IImageLoader;
+import com.nokia.carbide.cpp.ui.images.IImageModel;
+import com.nokia.carbide.cpp.ui.images.ImageContainerModelBase;
+import com.nokia.carbide.cpp.ui.images.ImageModelFactory;
import com.nokia.cpp.internal.api.utils.core.ProjectUtils;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.osgi.framework.Version;
-
-import java.util.*;
-
/**
* Factory for Carbide-specific image models and containers
*
@@ -280,30 +290,8 @@
* @return flag
*/
public static boolean doesProjectSupportSVG(ICarbideProjectInfo projectInfo) {
- boolean supportsSVG = false;
- if (projectInfo == null)
- return true;
-
- List<ICarbideBuildConfiguration> buildConfigurations = projectInfo.getBuildConfigurations();
- for (ICarbideBuildConfiguration buildConfiguration : buildConfigurations) {
- ISymbianSDK sdk = buildConfiguration.getSDK();
- if (sdk.isS60()) {
- Version version = sdk.getSDKVersion();
- if (version != null) {
- if (version.compareTo(new Version(2, 8, 0)) >= 0) {
- supportsSVG = true;
- break;
- }
- }
- }
- if (sdk.getFamily().equals(ISymbianSDK.UIQ_FAMILY_ID)) {
- Version version = sdk.getSDKVersion();
- supportsSVG |= version != null && version.compareTo(new Version(3, 1, 0)) >= 0;
- if (supportsSVG)
- break;
- }
- }
- return supportsSVG;
+ // SVG supported after 2.8 on S60
+ return true;
}
/**
@@ -313,21 +301,8 @@
*/
public static IImageConverterFactory getImageConverterFactory(
ICarbideProjectInfo projectInfo) {
- IImageConverterFactory imageConverterFactory = null;
- if (projectInfo != null) {
- List<ICarbideBuildConfiguration> buildConfigurations = projectInfo.getBuildConfigurations();
- for (ICarbideBuildConfiguration buildConfiguration : buildConfigurations) {
- ISymbianSDK sdk = buildConfiguration.getSDK();
- if (sdk.getFamily().equals(ISymbianSDK.UIQ_FAMILY_ID)) {
- imageConverterFactory = new UIQImageConverterFactory();
- break;
- }
- }
- }
- if (imageConverterFactory == null) {
- imageConverterFactory = new SymbianImageConverterFactory();
- }
- return imageConverterFactory;
+
+ return new SymbianImageConverterFactory();
}
/**
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/images/providers/ImageTableLabelProvider.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/images/providers/ImageTableLabelProvider.java Wed Aug 25 12:42:09 2010 -0500
@@ -60,7 +60,7 @@
if (view instanceof IImageMakefileView) {
this.imageViewPathHelper = new ImageMakefileViewPathHelper(
(IImageMakefileView) view,
- new ISymbianBuildContext[] { editorContext.getBuildContext() });
+ new ISymbianBuildContext[] { editorContext.getCarbideBuildConfiguration().getBuildContext() });
}
COLUMN_THUMB = 0;
COLUMN_FORMAT = 1;
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/BldInfImportWizard.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/BldInfImportWizard.java Wed Aug 25 12:42:09 2010 -0500
@@ -20,12 +20,14 @@
import java.util.List;
import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.resources.WorkspaceJob;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.dialogs.IDialogSettings;
@@ -35,12 +37,17 @@
import org.eclipse.ui.IWorkbench;
import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
+import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
import com.nokia.carbide.cpp.internal.api.sdk.ISDKManagerInternal;
import com.nokia.carbide.cpp.internal.project.ui.ProjectUIPlugin;
+import com.nokia.carbide.cpp.internal.sdk.core.model.SDKManager;
import com.nokia.carbide.cpp.project.core.ProjectCorePlugin;
-import com.nokia.carbide.cpp.sdk.core.*;
+import com.nokia.carbide.cpp.sdk.core.ISDKManager;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
import com.nokia.carbide.cpp.ui.CarbideUIPlugin;
import com.nokia.carbide.cpp.ui.ICarbideSharedImages;
+import com.nokia.cpp.internal.api.utils.core.HostOS;
public class BldInfImportWizard extends Wizard implements IImportWizard {
@@ -61,10 +68,12 @@
setDefaultPageImageDescriptor(CarbideUIPlugin.getSharedImages().getImageDescriptor(ICarbideSharedImages.IMG_IMPORT_BLDINF_WIZARD_BANNER));
ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
- if (!sdkMgr.checkDevicesXMLSynchronized()){
- if (sdkMgr instanceof ISDKManagerInternal){
- ISDKManagerInternal sdkMgrInternal = (ISDKManagerInternal)sdkMgr;
- sdkMgrInternal.fireDevicesXMLChanged();
+ if (HostOS.IS_WIN32){
+ if (!((SDKManager)sdkMgr).checkDevicesXMLSynchronized()){
+ if (sdkMgr instanceof ISDKManagerInternal){
+ ISDKManagerInternal sdkMgrInternal = (ISDKManagerInternal)sdkMgr;
+ sdkMgrInternal.fireDevicesXMLChanged();
+ }
}
}
}
@@ -78,16 +87,20 @@
final String projectName = projectPropertiesPage.getProjectName();
final IPath rootDirectory = projectPropertiesPage.getRootDirectory();
+ final boolean isLinkedProject = projectPropertiesPage.linkedResourcesEnabled();
// calculate the project relative path to the bld.inf file.
IPath absoluteBldInfPath = new Path(getBldInfFile());
assert(rootDirectory.isPrefixOf(absoluteBldInfPath));
final String projectRelativePath = absoluteBldInfPath.removeFirstSegments(rootDirectory.segmentCount()).setDevice(null).toOSString();
+ final String absoluteInfPath = absoluteBldInfPath.toOSString();
// if all mmps are checked then don't pass any to createProject. that
// way the project setting will be set to build bld.inf.
final List<String> components = mmpSelectionPage.areAllMakMakeReferencesChecked() ? new ArrayList<String>(0) : mmpSelectionPage.getSelectedMakMakeReferences();
+ final List<String> refs = getSelectedMakMakeReferences();
+
final List<ISymbianBuildContext> selectedConfigs = getSelectedConfigs();
// run this in a workspace job
@@ -96,13 +109,41 @@
public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException {
monitor.beginTask(Messages.BldInfImportWizard_CreatingProjectJobName, IProgressMonitor.UNKNOWN);
- IProject newProject = ProjectCorePlugin.createProject(projectName, rootDirectory.toOSString());
+ // write the debug target mmp setting - use the last mmp in
+ // the list of selected mak make files.
+ // We also need to check for project test mmpfiles and add that only if the project is only comprised of test mmp files
+ String debugMMP = ""; //$NON-NLS-1$
+ boolean hasOneNormalMMP = false; // Don't add test mmp if there's a regular MMP
+ for (String ref : refs) {
+ if (ref.toLowerCase().endsWith(".mmp")){
+ hasOneNormalMMP = true;
+ debugMMP = ref;
+ }
+
+ if (hasOneNormalMMP == false){
+ if (ref.toLowerCase().endsWith(".mmp " + ICarbideProjectInfo.TEST_COMPONENT_LABEL)) { //$NON-NLS-1$
+ debugMMP = ref;
+ debugMMP = debugMMP.substring(0, debugMMP.indexOf( " " + ICarbideProjectInfo.TEST_COMPONENT_LABEL));
+ }
+ }
+ } // for
+
+ IProject newProject = null;
+ if (isLinkedProject){
+ newProject = ProjectCorePlugin.createProject(projectName, null);
+ newProject.getFolder(rootDirectory.lastSegment()).createLink(rootDirectory.toFile().toURI(), IResource.BACKGROUND_REFRESH, new NullProgressMonitor());
+ } else {
+ newProject = ProjectCorePlugin.createProject(projectName, rootDirectory.toOSString());
+ }
monitor.worked(1);
-
+
newProject.setSessionProperty(CarbideBuilderPlugin.SBSV2_PROJECT, Boolean.valueOf(useSBSv2Builder()));
- // TODO pass PKG file path to postProjectCreatedActions, currently passing null
- ProjectCorePlugin.postProjectCreatedActions(newProject, projectRelativePath, selectedConfigs, components, null, null, monitor);
+ if (isLinkedProject){
+ ProjectCorePlugin.postProjectCreatedActions(newProject, absoluteInfPath, selectedConfigs, components, debugMMP, null, monitor);
+ } else {
+ ProjectCorePlugin.postProjectCreatedActions(newProject, projectRelativePath, selectedConfigs, components, debugMMP, null, monitor);
+ }
if (monitor.isCanceled()) {
// the user canceled the import so delete the project
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/ImporterBuildTargetsPage.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/ImporterBuildTargetsPage.java Wed Aug 25 12:42:09 2010 -0500
@@ -24,8 +24,19 @@
import org.eclipse.jface.viewers.TreeNode;
import org.eclipse.swt.widgets.TreeItem;
-import com.nokia.carbide.cpp.sdk.core.*;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildInfo;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildInfo;
+import com.nokia.carbide.cpp.internal.api.sdk.SBSv2Utils;
+import com.nokia.carbide.cpp.internal.sdk.core.model.SDKManager;
+import com.nokia.carbide.cpp.sdk.core.IBSFCatalog;
+import com.nokia.carbide.cpp.sdk.core.ISDKManager;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
import com.nokia.carbide.cpp.sdk.ui.shared.BuildTargetsPage;
+import com.nokia.cpp.internal.api.utils.core.HostOS;
public class ImporterBuildTargetsPage extends BuildTargetsPage {
@@ -67,7 +78,18 @@
for (int i=0; i<items.length; i++) {
TreeNode node = (TreeNode)items[i].getData();
if (node.getValue() instanceof ISymbianSDK && node.getValue() == sdk) {
- if (sdkMgr.getBSFScannerEnabled() || sdk.getBSFCatalog().getVirtualVariantPlatforms().length > 0){
+ IBSFCatalog bsfCatalog = null;
+ ISBSv1BuildInfo sbsv1BuildInfo = null;
+ if (SBSv2Utils.enableSBSv1Support()){
+ sbsv1BuildInfo = (ISBSv1BuildInfo)sdk.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER);
+ }
+
+ ISBSv2BuildInfo sbsv2BuildInfo = (ISBSv2BuildInfo)sdk.getBuildInfo(ISymbianBuilderID.SBSV2_BUILDER);
+ if (sbsv1BuildInfo != null) {
+ // SBSv1 only
+ bsfCatalog = sbsv1BuildInfo.getBSFCatalog();
+ }
+ if (HostOS.IS_WIN32 && (((SDKManager)sdkMgr).getBSFScannerEnabled() || (bsfCatalog != null && bsfCatalog.getVirtualVariantPlatforms().length > 0))){
// Check and see if any of the configs in the SDK
// match any configuration that has been selected before
// for this SDK.
@@ -121,11 +143,18 @@
ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
for (ISymbianBuildContext currContext : selectedConfigs){
ISymbianSDK sdk = currContext.getSDK();
- if (sdk.getBSFCatalog().getVirtualVariantPlatforms().length > 0 || sdkMgr.getBSFScannerEnabled()){
- // this setting needs to be persisted.
- settingsNeedUpdate = true;
- selectedConfigsToSave.add(currContext);
- }
+ IBSFCatalog bsfCatalog = null;
+ if (currContext instanceof ISBSv1BuildContext) {
+ // SBSv1 only
+ ISBSv1BuildInfo sbsv1BuildInfo = (ISBSv1BuildInfo)sdk.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER);
+ bsfCatalog = sbsv1BuildInfo.getBSFCatalog();
+
+ if (((SDKManager)sdkMgr).getBSFScannerEnabled() || (bsfCatalog != null && bsfCatalog.getVirtualVariantPlatforms().length > 0)){
+ // this setting needs to be persisted.
+ settingsNeedUpdate = true;
+ selectedConfigsToSave.add(currContext);
+ }
+ }
}
if (settingsNeedUpdate) {
// Iterate through all the persisted configs and don't add those that have the same
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/Messages.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/Messages.java Wed Aug 25 12:42:09 2010 -0500
@@ -112,6 +112,10 @@
public static String ProjectPropertiesPage_directoryTooLong;
public static String ProjectPropertiesPage_directoryIsRoot;
+
+ public static String ProjectPropertiesPage_linkedProject;
+
+ public static String ProjectPropertiesPage_linkedProjectTooltip;
static {
// initialize resource bundle
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/ProjectPropertiesPage.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/ProjectPropertiesPage.java Wed Aug 25 12:42:09 2010 -0500
@@ -16,7 +16,6 @@
*/
package com.nokia.carbide.cpp.internal.project.ui.importWizards;
-import java.io.File;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
@@ -45,6 +44,7 @@
import com.nokia.carbide.cdt.builder.EpocEngineHelper;
import com.nokia.carbide.cpp.internal.project.ui.ProjectUIHelpIds;
+import com.nokia.carbide.cpp.internal.project.ui.ProjectUIPlugin;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
import com.nokia.cpp.internal.api.utils.ui.BrowseDialogUtils;
@@ -53,6 +53,7 @@
private Text projectName;
private Text rootDirectory;
private Button browseButton;
+ private Button linkedResourcesCheck;
String projectNameText = ""; //$NON-NLS-1$
IPath rootDirectoryPath = null;
@@ -143,6 +144,14 @@
gd.horizontalSpan = 3;
helpText.setLayoutData(gd);
+ if (ProjectUIPlugin.supportLinkedResources()){
+ linkedResourcesCheck = new Button(parent, SWT.CHECK);
+ linkedResourcesCheck.setFont(font);
+ linkedResourcesCheck.setText(Messages.ProjectPropertiesPage_linkedProject);
+ linkedResourcesCheck.setToolTipText(Messages.ProjectPropertiesPage_linkedProjectTooltip);
+ linkedResourcesCheck.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
+ }
+
setButtonLayoutData(browseButton);
}
@@ -280,6 +289,14 @@
return rootDirectoryPath;
}
+ public boolean linkedResourcesEnabled(){
+ if (linkedResourcesCheck == null){
+ return false;
+ }
+
+ return linkedResourcesCheck.getSelection();
+ }
+
@Override
public void setVisible(boolean visible) {
// this gets called just before the page goes in or out of view. if it's
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/messages.properties Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/messages.properties Wed Aug 25 12:42:09 2010 -0500
@@ -18,6 +18,8 @@
ProjectPropertiesPage_directoryDoesNotContainSourceFiles=The root directory specified does not contain all the source and resource files referenced in the project. This may make navigation and editing more difficult.
ProjectPropertiesPage_directoryTooLong=The root directory specified is too long. It cannot exceed 215 characters so that project settings files do not exceed the 256 character path limit.
ProjectPropertiesPage_directoryIsRoot=A project path near the root SDK directory can lead to slow import times. Please select another project path or import a subset of included bld.inf files (if possible).
+ProjectPropertiesPage_linkedProject=Create project with linked resources
+ProjectPropertiesPage_linkedProjectToolTip=When enabled, the eclipse project files are created in the workspace and all project content is formed with linked resources.
MMPSelectionPage_title=MMP Selection
MMPSelectionPage_description=Select the mmp and extension make files to work with. You will be able to edit this after the project has been created.
MMPSelectionPage_selectAllAButtonLabel=Select All
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/mmpEditor/LibrarySectionPart.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/mmpEditor/LibrarySectionPart.java Wed Aug 25 12:42:09 2010 -0500
@@ -220,7 +220,7 @@
@SuppressWarnings("unchecked") //$NON-NLS-1$
protected void addButtonPressed() {
- Set<String> sdkLibraries = EpocEngineHelper.getSDKLibrariesForBuildContext(editorContext.activeBuildConfig);
+ Set<String> sdkLibraries = EpocEngineHelper.getSDKLibrariesForBuildContext(editorContext.activeBuildConfig.getBuildContext());
// remove already included libraries from the list so we don't show them as candidates for adding
List<String> includedList = (List<String>) tableViewer.getInput();
sdkLibraries.removeAll(includedList);
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/mmpEditor/MMPEditor.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/mmpEditor/MMPEditor.java Wed Aug 25 12:42:09 2010 -0500
@@ -219,7 +219,7 @@
editorContext.mmpView = null;
}
MMPEditorViewConfiguration viewConfig = new MMPEditorViewConfiguration(
- editorContext.activeBuildConfig, getProject());
+ editorContext.activeBuildConfig.getBuildContext(), getProject());
editorContext.mmpView = editorContext.mmpModel.createView(viewConfig);
}
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/mmpEditor/OverviewPage.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/mmpEditor/OverviewPage.java Wed Aug 25 12:42:09 2010 -0500
@@ -21,7 +21,10 @@
import org.eclipse.jface.dialogs.IPageChangedListener;
import org.eclipse.jface.dialogs.PageChangedEvent;
-import org.eclipse.jface.viewers.*;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ComboViewer;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.ViewerSorter;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
@@ -29,7 +32,11 @@
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.layout.RowLayout;
-import org.eclipse.swt.widgets.*;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.forms.IManagedForm;
import org.eclipse.ui.forms.events.HyperlinkAdapter;
import org.eclipse.ui.forms.events.HyperlinkEvent;
@@ -44,13 +51,18 @@
import org.osgi.framework.Version;
import com.nokia.carbide.cpp.epoc.engine.model.mmp.EMMPStatement;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildInfo;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildContext;
import com.nokia.carbide.cpp.internal.project.ui.ProjectUIPlugin;
-import com.nokia.carbide.cpp.internal.project.ui.editors.common.*;
+import com.nokia.carbide.cpp.internal.project.ui.editors.common.ControlHandler;
+import com.nokia.carbide.cpp.internal.project.ui.editors.common.FormUtilities;
import com.nokia.carbide.cpp.internal.project.ui.mmpEditor.commands.EMMPListSelector;
import com.nokia.carbide.cpp.internal.project.ui.mmpEditor.commands.EMMPStringValueSelector;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
-import com.nokia.cpp.internal.api.utils.core.*;
-import com.nokia.cpp.internal.api.utils.ui.*;
+import com.nokia.cpp.internal.api.utils.core.TextUtils;
+import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils;
import com.nokia.cpp.internal.api.utils.ui.editor.FormEditorEditingContext;
import com.swtdesigner.ResourceManager;
import com.swtdesigner.SWTResourceManager;
@@ -340,9 +352,18 @@
void refresh() {
if (getPartControl() != null) {
+
ISymbianSDK sdk = editorContext.activeBuildConfig.getSDK();
List<String> supportedTargetTypes = new ArrayList<String>();
- List<String> sdkTypes = sdk.getSupportedTargetTypes();
+ List<String> sdkTypes = new ArrayList<String>();
+ if (editorContext.activeBuildConfig.getBuildContext() instanceof ISBSv1BuildContext){
+ ISBSv1BuildInfo sbsv1BuildInfo = ((ISBSv1BuildInfo)sdk.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER));
+ sdkTypes = sbsv1BuildInfo.getSupportedTargetTypes();
+ } else if (editorContext.activeBuildConfig.getBuildContext() instanceof ISBSv2BuildContext){
+ ISBSv2BuildContext sbsv2BuildContext = ((ISBSv2BuildContext)editorContext.activeBuildConfig.getBuildContext());
+ sdkTypes = sbsv2BuildContext.getSupportedTargettypes();
+ }
+
// this could come back empty if a devkit is not completely installed
if (sdkTypes != null) {
supportedTargetTypes.addAll(sdkTypes);
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/preferences/PreferenceConstants.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/preferences/PreferenceConstants.java Wed Aug 25 12:42:09 2010 -0500
@@ -28,4 +28,6 @@
public final static String PREF_CHANGED_FILES_OPTION = "changedFilesOption"; //$NON-NLS-1$
public static final String PREF_INDEX_ALL = "indexAll"; //$NON-NLS-1$
+
+ public static final String PREF_SUPPORT_LINKED_RESOURCES = "supportsLinkedRsrcs"; //$NON-NLS-1$
}
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/preferences/PreferenceInitializer.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/preferences/PreferenceInitializer.java Wed Aug 25 12:42:09 2010 -0500
@@ -16,6 +16,7 @@
*/
package com.nokia.carbide.cpp.internal.project.ui.preferences;
+import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
import org.eclipse.jface.preference.IPreferenceStore;
@@ -35,6 +36,21 @@
IPreferenceStore store = ProjectUIPlugin.getDefault().getPreferenceStore();
store.setDefault(PreferenceConstants.PREF_KEEP_PROJECTS_IN_SYNC, true);
store.setDefault(PreferenceConstants.PREF_INDEX_ALL, false);
+
+ if (cmdLineArgsSupportsLinkedResources()){
+ store.setDefault(PreferenceConstants.PREF_SUPPORT_LINKED_RESOURCES, true);
+ } else {
+ store.setDefault(PreferenceConstants.PREF_SUPPORT_LINKED_RESOURCES, false);
+ }
+ }
+
+ private boolean cmdLineArgsSupportsLinkedResources(){
+ String[] args = Platform.getCommandLineArgs();
+ for (String arg : args){
+ if (arg.equals("supportsLinkedRsrcs=true"))
+ return true;
+ }
+ return false;
}
}
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/sharedui/BuilderSelectionComposite.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/sharedui/BuilderSelectionComposite.java Wed Aug 25 12:42:09 2010 -0500
@@ -29,6 +29,8 @@
import com.nokia.carbide.cpp.internal.api.sdk.SBSv2Utils;
import com.nokia.carbide.cpp.internal.project.ui.Messages;
import com.nokia.carbide.cpp.internal.project.ui.ProjectUIPlugin;
+import com.nokia.carbide.cpp.internal.sdk.core.model.SDKManager;
+import com.nokia.carbide.cpp.sdk.core.ISDKManager;
import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
import com.nokia.carbide.cpp.sdk.ui.shared.BuildTargetsPage;
@@ -89,16 +91,16 @@
useSBSv2Builder = false;
}
else if (selection.equals(Messages.getString("NewProjectPage.sbsv2"))) { //$NON-NLS-1$
-
+ ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
// if SBSv2 is selected, make sure SBS bin directory exists
if (SBSv2Utils.getSBSBinDirectory() == null){
status = new Status(Status.ERROR, ProjectUIPlugin.PLUGIN_ID, "The Symbian Build System (sbs) cannot be found on the PATH. Carbide needs a valid SBS installation on the PATH to use the SBSv2 builder.");
}
// check the raptor version
- else if (SDKCorePlugin.getSDKManager().getSBSv2Version(false).getMajor() == 0){
+ else if (sdkMgr.getSBSv2Version(false).getMajor() == 0){
// Try to scan again....
- if (SDKCorePlugin.getSDKManager().getSBSv2Version(true).getMajor() == 0){
+ if (sdkMgr.getSBSv2Version(true).getMajor() == 0){
status = new Status(Status.WARNING, ProjectUIPlugin.PLUGIN_ID, "SBS version cannot be determined, some SBS functionality may not work. Please check your SBS installation.");
}
}
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/views/SPNViewContentProvider.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/views/SPNViewContentProvider.java Wed Aug 25 12:42:09 2010 -0500
@@ -16,40 +16,105 @@
*/
package com.nokia.carbide.cpp.internal.project.ui.views;
-import com.nokia.carbide.cdt.builder.*;
-import com.nokia.carbide.cdt.builder.project.*;
-import com.nokia.carbide.cpp.epoc.engine.*;
-import com.nokia.carbide.cpp.epoc.engine.image.*;
-import com.nokia.carbide.cpp.epoc.engine.model.bldinf.*;
-import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IExtension;
-import com.nokia.carbide.cpp.epoc.engine.model.makefile.image.IImageMakefileData;
-import com.nokia.carbide.cpp.epoc.engine.model.mmp.*;
-import com.nokia.carbide.cpp.epoc.engine.preprocessor.*;
-import com.nokia.carbide.cpp.internal.project.ui.ProjectUIPlugin;
-import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
-import com.nokia.carbide.cpp.ui.CarbideUIPlugin;
-import com.nokia.carbide.cpp.ui.ICarbideSharedImages;
-import com.nokia.carbide.internal.api.cpp.epoc.engine.preprocessor.DependencyScanner;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Set;
-import org.eclipse.cdt.core.model.*;
+import org.eclipse.cdt.core.model.CModelException;
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.model.CoreModelUtil;
+import org.eclipse.cdt.core.model.ElementChangedEvent;
+import org.eclipse.cdt.core.model.ICElement;
+import org.eclipse.cdt.core.model.ICElementDelta;
+import org.eclipse.cdt.core.model.ICProject;
+import org.eclipse.cdt.core.model.IElementChangedListener;
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.internal.core.model.ExternalTranslationUnit;
import org.eclipse.cdt.ui.CElementGrouping;
import org.eclipse.cdt.ui.CElementSorter;
import org.eclipse.core.filesystem.URIUtil;
-import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.*;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IAdapterFactory;
+import org.eclipse.core.runtime.IAdapterManager;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.*;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.ui.*;
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.model.BaseWorkbenchContentProvider;
import org.eclipse.ui.model.IWorkbenchAdapter;
+import org.eclipse.ui.model.WorkbenchAdapter;
-import java.io.*;
-import java.util.*;
+import com.nokia.carbide.cdt.builder.BldInfViewPathHelper;
+import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
+import com.nokia.carbide.cdt.builder.DefaultImageMakefileViewConfiguration;
+import com.nokia.carbide.cdt.builder.DefaultMMPViewConfiguration;
+import com.nokia.carbide.cdt.builder.DefaultViewConfiguration;
+import com.nokia.carbide.cdt.builder.EMMPPathContext;
+import com.nokia.carbide.cdt.builder.EpocEnginePathHelper;
+import com.nokia.carbide.cdt.builder.ImageMakefileViewPathHelper;
+import com.nokia.carbide.cdt.builder.MMPViewPathHelper;
+import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
+import com.nokia.carbide.cdt.builder.project.ICarbideConfigurationChangedListener;
+import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
+import com.nokia.carbide.cdt.builder.project.ICarbideProjectPropertyChangedListener;
+import com.nokia.carbide.cdt.builder.project.ISISBuilderInfo;
+import com.nokia.carbide.cpp.epoc.engine.BldInfDataRunnableAdapter;
+import com.nokia.carbide.cpp.epoc.engine.EpocEnginePlugin;
+import com.nokia.carbide.cpp.epoc.engine.ImageMakefileDataRunnableAdapter;
+import com.nokia.carbide.cpp.epoc.engine.MMPDataRunnableAdapter;
+import com.nokia.carbide.cpp.epoc.engine.image.IBitmapSource;
+import com.nokia.carbide.cpp.epoc.engine.image.IBitmapSourceReference;
+import com.nokia.carbide.cpp.epoc.engine.image.IImageSource;
+import com.nokia.carbide.cpp.epoc.engine.image.IMultiImageSource;
+import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IBldInfData;
+import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IExtension;
+import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IMMPReference;
+import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IMakMakeReference;
+import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IMakefileReference;
+import com.nokia.carbide.cpp.epoc.engine.model.makefile.image.IImageMakefileData;
+import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPAIFInfo;
+import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPData;
+import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPResource;
+import com.nokia.carbide.cpp.epoc.engine.preprocessor.AcceptedNodesViewFilter;
+import com.nokia.carbide.cpp.epoc.engine.preprocessor.DefaultModelDocumentProvider;
+import com.nokia.carbide.cpp.epoc.engine.preprocessor.DefaultTranslationUnitProvider;
+import com.nokia.carbide.cpp.epoc.engine.preprocessor.IIncludeFileLocator;
+import com.nokia.carbide.cpp.internal.project.ui.ProjectUIPlugin;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.ui.CarbideUIPlugin;
+import com.nokia.carbide.cpp.ui.ICarbideSharedImages;
+import com.nokia.carbide.internal.api.cpp.epoc.engine.preprocessor.DependencyScanner;
+import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils;
/**
* Content provider for the SymbianProjectNavigatorView
@@ -684,7 +749,7 @@
}
EpocEnginePlugin.runWithBldInfData(cpi.getWorkspaceRelativeBldInfPath(),
- new DefaultViewConfiguration(project, cpi.getDefaultConfiguration(), new AcceptedNodesViewFilter()),
+ new DefaultViewConfiguration(project, cpi.getDefaultConfiguration().getBuildContext(), new AcceptedNodesViewFilter()),
new BldInfDataRunnableAdapter() {
public Object run(IBldInfData view) {
@@ -845,7 +910,7 @@
// get the list of extension makefiles
BldInfViewPathHelper pathHelper = new BldInfViewPathHelper(view,
- cpi.getDefaultConfiguration());
+ cpi.getDefaultConfiguration().getBuildContext());
Set<IPath> visitedPaths = new HashSet<IPath>();
@@ -1299,7 +1364,7 @@
final ICarbideBuildConfiguration defaultConfig = cpi.getDefaultConfiguration();
final IFile mmpFile = parentFile;
EpocEnginePlugin.runWithMMPData(parentFile.getFullPath(),
- new DefaultMMPViewConfiguration(project, cpi.getDefaultConfiguration(), new AcceptedNodesViewFilter()),
+ new DefaultMMPViewConfiguration(project, cpi.getDefaultConfiguration().getBuildContext(), new AcceptedNodesViewFilter()),
new MMPDataRunnableAdapter() {
public Object run(IMMPData data) {
@@ -1407,7 +1472,7 @@
final ICarbideBuildConfiguration defaultConfig = cpi.getDefaultConfiguration();
EpocEnginePlugin.runWithMMPData(parentFile.getFullPath(),
- new DefaultMMPViewConfiguration(project, cpi.getDefaultConfiguration(), new AcceptedNodesViewFilter()),
+ new DefaultMMPViewConfiguration(project, cpi.getDefaultConfiguration().getBuildContext(), new AcceptedNodesViewFilter()),
new MMPDataRunnableAdapter() {
public Object run(IMMPData view) {
@@ -1473,7 +1538,7 @@
return resources;
EpocEnginePlugin.runWithMMPData(parentFile.getFullPath(),
- new DefaultMMPViewConfiguration(project, cpi.getDefaultConfiguration(), new AcceptedNodesViewFilter()),
+ new DefaultMMPViewConfiguration(project, cpi.getDefaultConfiguration().getBuildContext(), new AcceptedNodesViewFilter()),
new MMPDataRunnableAdapter() {
public Object run(IMMPData view) {
@@ -1697,7 +1762,7 @@
return includes;
EpocEnginePlugin.runWithMMPData(parentFile.getFullPath(),
- new DefaultMMPViewConfiguration(project, cpi.getDefaultConfiguration(), new AcceptedNodesViewFilter()),
+ new DefaultMMPViewConfiguration(project, cpi.getDefaultConfiguration().getBuildContext(), new AcceptedNodesViewFilter()),
new MMPDataRunnableAdapter() {
private MMPViewPathHelper helper = new MMPViewPathHelper(cpi.getDefaultConfiguration());
@@ -1776,7 +1841,7 @@
return mbmContainers;
EpocEnginePlugin.runWithMMPData(parentFile.getFullPath(),
- new DefaultMMPViewConfiguration(project, cpi.getDefaultConfiguration(), new AcceptedNodesViewFilter()),
+ new DefaultMMPViewConfiguration(project, cpi.getDefaultConfiguration().getBuildContext(), new AcceptedNodesViewFilter()),
new MMPDataRunnableAdapter() {
public Object run(IMMPData view) {
@@ -1856,7 +1921,7 @@
return documents;
EpocEnginePlugin.runWithMMPData(parentFile.getFullPath(),
- new DefaultMMPViewConfiguration(project, cpi.getDefaultConfiguration(), new AcceptedNodesViewFilter()),
+ new DefaultMMPViewConfiguration(project, cpi.getDefaultConfiguration().getBuildContext(), new AcceptedNodesViewFilter()),
new MMPDataRunnableAdapter() {
public Object run(IMMPData view) {
@@ -1901,7 +1966,7 @@
return defs;
EpocEnginePlugin.runWithMMPData(parentFile.getFullPath(),
- new DefaultMMPViewConfiguration(project, cpi.getDefaultConfiguration(), new AcceptedNodesViewFilter()),
+ new DefaultMMPViewConfiguration(project, cpi.getDefaultConfiguration().getBuildContext(), new AcceptedNodesViewFilter()),
new MMPDataRunnableAdapter() {
public Object run(IMMPData view) {
@@ -1959,7 +2024,7 @@
return mbmSources;
EpocEnginePlugin.runWithMMPData(parentFile.getFullPath(),
- new DefaultMMPViewConfiguration(project, cpi.getDefaultConfiguration(), new AcceptedNodesViewFilter()),
+ new DefaultMMPViewConfiguration(project, cpi.getDefaultConfiguration().getBuildContext(), new AcceptedNodesViewFilter()),
new MMPDataRunnableAdapter() {
public Object run(IMMPData view) {
@@ -2041,9 +2106,13 @@
public Object run(IImageMakefileData data) {
List<ICarbideBuildConfiguration> configs = cpi.getBuildConfigurations();
+ List<ISymbianBuildContext> buildContexs = new ArrayList<ISymbianBuildContext>();
+ for (ICarbideBuildConfiguration config : configs){
+ buildContexs.add(config.getBuildContext());
+ }
ImageMakefileViewPathHelper helper = new ImageMakefileViewPathHelper(
data,
- (ICarbideBuildConfiguration[]) configs.toArray(new ICarbideBuildConfiguration[configs.size()]));
+ (ISymbianBuildContext[]) configs.toArray(new ISymbianBuildContext[buildContexs.size()]));
List<IMultiImageSource> images = data.getMultiImageSources();
for (IMultiImageSource image : images) {
if (image.getTargetFilePath().equals(targetFilePath)) {
@@ -2171,7 +2240,7 @@
return aifs;
EpocEnginePlugin.runWithMMPData(parentFile.getFullPath(),
- new DefaultMMPViewConfiguration(project, cpi.getDefaultConfiguration(), new AcceptedNodesViewFilter()),
+ new DefaultMMPViewConfiguration(project, cpi.getDefaultConfiguration().getBuildContext(), new AcceptedNodesViewFilter()),
new MMPDataRunnableAdapter() {
public Object run(IMMPData view) {
@@ -2260,7 +2329,20 @@
if (info != null) {
IPath infPath = info.getProjectRelativeBldInfPath();
if (infPath != null) {
- IFile file = getIFileFromBldInfViewPath(project, infPath);
+ IFile file = null;
+ if (infPath.isAbsolute()){
+ // Make sure to get the project relative location if the inf path is absolute.
+ // This means the project has linked resources
+ // TODO: Just using for prototyping with using linked resources....
+ // XXX: This is still not working, as the path is relative to the workspace and
+ // hence it's wrong. Seems we need to change the container for the SPN to take
+ // a bld.inf as an absolute path???
+ IFile infFile = ResourcesPlugin.getWorkspace().getRoot().getFile(infPath);
+ children.add(infFile);
+ return children.toArray();
+ } else {
+ file = getIFileFromBldInfViewPath(project, infPath);
+ }
if (file != null) {
children.add(containerFactory.getBldInfContainer(file, true));
@@ -2447,6 +2529,11 @@
}
protected IFile getIFileFromBldInfViewPath(IProject project, IPath pathFromBldInfView) {
+
+ if (pathFromBldInfView.isAbsolute()){
+ IWorkspace workspace= ResourcesPlugin.getWorkspace();
+ return workspace.getRoot().getFile(pathFromBldInfView);
+ }
EpocEnginePathHelper helper = new EpocEnginePathHelper(project);
IPath resolvedProjectRelativePath = helper.convertToProject(pathFromBldInfView);
if (resolvedProjectRelativePath != null)
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/wizards/NewSymbianOSCppProjectWizard.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/wizards/NewSymbianOSCppProjectWizard.java Wed Aug 25 12:42:09 2010 -0500
@@ -26,6 +26,7 @@
import com.nokia.carbide.cpp.internal.api.sdk.ISDKManagerInternal;
import com.nokia.carbide.cpp.internal.api.sdk.ui.TemplateSDKsFilter;
import com.nokia.carbide.cpp.internal.project.ui.Messages;
+import com.nokia.carbide.cpp.internal.sdk.core.model.SDKManager;
import com.nokia.carbide.cpp.project.ui.sharedui.NewProjectPage;
import com.nokia.carbide.cpp.sdk.core.ISDKManager;
import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
@@ -34,6 +35,7 @@
import com.nokia.carbide.cpp.ui.ICarbideSharedImages;
import com.nokia.carbide.internal.api.templatewizard.ui.IWizardDataPage;
import com.nokia.carbide.internal.api.templatewizard.ui.TemplateWizard;
+import com.nokia.cpp.internal.api.utils.core.HostOS;
/**
* Wizard for creating Symbian OS C++ project
@@ -51,13 +53,15 @@
setTemplateFilter(new TemplateSDKsFilter());
setWindowTitle(Messages.getString("NewSymbianOSCppProjectWizard.WindowTitle")); //$NON-NLS-1$
- ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
- if (!sdkMgr.checkDevicesXMLSynchronized()){
- if (sdkMgr instanceof ISDKManagerInternal){
- ISDKManagerInternal sdkMgrInternal = (ISDKManagerInternal)sdkMgr;
- sdkMgrInternal.fireDevicesXMLChanged();
+ if (HostOS.IS_WIN32){
+ ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
+ if (!((SDKManager)sdkMgr).checkDevicesXMLSynchronized()){
+ if (sdkMgr instanceof ISDKManagerInternal){
+ ISDKManagerInternal sdkMgrInternal = (ISDKManagerInternal)sdkMgr;
+ sdkMgrInternal.fireDevicesXMLChanged();
+ }
+
}
-
}
}
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/utils/BldInfImportWrapper.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/utils/BldInfImportWrapper.java Wed Aug 25 12:42:09 2010 -0500
@@ -113,8 +113,7 @@
project.setSessionProperty(CarbideBuilderPlugin.SBSV2_PROJECT, isSBSv2);
// TODO pass PKG file path to postProjectCreatedActions, currently passing null
-
-
+
ProjectCorePlugin.postProjectCreatedActions(project, projectRelativePath, selectedConfigs, components, debugMMP, null, monitor);
if (monitor.isCanceled()) {
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/scripting/ImporterScritpingUtils.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/scripting/ImporterScritpingUtils.java Wed Aug 25 12:42:09 2010 -0500
@@ -10,11 +10,13 @@
import org.eclipse.core.runtime.Path;
import com.nokia.carbide.cdt.builder.EpocEngineHelper;
-import com.nokia.carbide.cpp.internal.api.sdk.SymbianBuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.BuildContextSBSv1;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildInfo;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildInfo;
import com.nokia.carbide.cpp.internal.project.utils.BldInfImportWrapper;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
-import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
public class ImporterScritpingUtils {
@@ -116,12 +118,16 @@
// Validate target and context strings against ISymbianBuildContext
// AssertTestCase.assertTrue("!Invalid build target, should be ARMV5, GCCE, WINSCW, etc.. but was: " + buildTarget, validateBuildTarget(buildTarget));
// AssertTestCase.assertTrue("!Invalid build context, should be UREL or UDEB, but was: " + buildContext, validateBuildContext(buildContext));
- ISymbianBuildContext context = new SymbianBuildContext(sdk, buildTarget, buildContext);
+ BuildContextSBSv1 context = new BuildContextSBSv1(sdk, buildTarget, buildContext);
selectedConfigs.add(context);
}
}
else {
- selectedConfigs = sdk.getFilteredBuildConfigurations();
+ selectedConfigs = new ArrayList<ISymbianBuildContext>();
+ ISBSv1BuildInfo sbsv1BuildInfo = (ISBSv1BuildInfo)sdk.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER);
+ ISBSv2BuildInfo sbsv2BuildInfo = (ISBSv2BuildInfo)sdk.getBuildInfo(ISymbianBuilderID.SBSV2_BUILDER);
+ selectedConfigs.addAll(sbsv1BuildInfo.getFilteredBuildConfigurations());
+ selectedConfigs.addAll(sbsv1BuildInfo.getFilteredBuildConfigurations());
}
return selectedConfigs;
}
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/scripting/SymbianProject.java Tue Aug 24 16:42:58 2010 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/scripting/SymbianProject.java Wed Aug 25 12:42:09 2010 -0500
@@ -23,7 +23,7 @@
import org.eclipse.core.resources.IProject;
-import com.nokia.carbide.cpp.internal.api.sdk.SymbianBuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.BuildContextSBSv1;
import com.nokia.carbide.cpp.sdk.core.ISDKManager;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
@@ -51,7 +51,7 @@
// " is not on the same drive as SDK: " + sdkName
// + " and could not import: " + projectName);
}
- contexts.add(new SymbianBuildContext(sdk, currMap
+ contexts.add(new BuildContextSBSv1(sdk, currMap
.get(KEY_PLATFORM), currMap.get(KEY_TARGET)));
}
}
--- a/qt/com.nokia.carbide.cpp.qt.core/src/com/nokia/carbide/cpp/internal/qt/core/QtFilter.java Tue Aug 24 16:42:58 2010 -0500
+++ b/qt/com.nokia.carbide.cpp.qt.core/src/com/nokia/carbide/cpp/internal/qt/core/QtFilter.java Wed Aug 25 12:42:09 2010 -0500
@@ -18,20 +18,22 @@
import java.io.File;
+import org.eclipse.core.runtime.IPath;
import org.eclipse.jface.viewers.IFilter;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
public abstract class QtFilter implements IFilter {
protected File getLibFile(ISymbianBuildContext context) {
-
- if (context.getPlatformString().equals(ISymbianBuildContext.EMULATOR_PLATFORM)) {
- return context.getSDK().getReleaseRoot().append(context.getPlatformString()).
+ IPath releaseRoot = context.getSDK().getReleaseRoot();
+ if (context.getPlatformString().toUpperCase().equals(ISBSv1BuildContext.EMULATOR_PLATFORM)) {
+ return releaseRoot.append(context.getPlatformString()).
append(context.getTargetString()).append("QtCore.dll").toFile(); //$NON-NLS-1$
} else {
// for non-emulator targets, check in the armv5/lib directory (ARMV5 and GCCE)
- return context.getSDK().getReleaseRoot().append("armv5/lib/QtCore.lib").toFile(); //$NON-NLS-1$
+ return releaseRoot.append("armv5/lib/QtCore.lib").toFile(); //$NON-NLS-1$
}
}
--- a/qt/com.nokia.carbide.cpp.qt.core/src/com/nokia/carbide/cpp/internal/qt/core/QtSDKUtils.java Tue Aug 24 16:42:58 2010 -0500
+++ b/qt/com.nokia.carbide.cpp.qt.core/src/com/nokia/carbide/cpp/internal/qt/core/QtSDKUtils.java Wed Aug 25 12:42:09 2010 -0500
@@ -101,17 +101,19 @@
refreshQtStoredSDKs();
- if (qtSDKList.size() == 0){
- return null;
- }
-
- for (QtSDK qtSDK : qtSDKList){
- File currBinPath = new File(qtSDK.binPath);
- File currIncPath = new File(qtSDK.incPath);
+ synchronized(qtSDKList) {
+ if (qtSDKList.size() == 0){
+ return null;
+ }
- if ( (currBinPath.equals(oldQtBinPath) && currIncPath.equals(qtIncPath)) ||
- (currBinPath.equals(newQtBinPath) && currIncPath.equals(qtIncPath))){
- return qtSDK.name;
+ for (QtSDK qtSDK : qtSDKList){
+ File currBinPath = new File(qtSDK.binPath);
+ File currIncPath = new File(qtSDK.incPath);
+
+ if ( (currBinPath.equals(oldQtBinPath) && currIncPath.equals(qtIncPath)) ||
+ (currBinPath.equals(newQtBinPath) && currIncPath.equals(qtIncPath))){
+ return qtSDK.name;
+ }
}
}
@@ -170,33 +172,34 @@
* Update the internal list of Qt-SDKs found in the Qt global preferences
*/
static void refreshQtStoredSDKs(){
-
- qtSDKList.clear();
-
- IPreferenceStore store = QtProjectPlugin.getDefault().getPreferenceStore();
- int count = store.getInt(PreferenceConstants.QTVERSION_COUNT);
- for (int i = 0; i < count; i++) {
- String nameKey = PreferenceConstants.QTVERSION_NAME + "."
- + Integer.toString(i);
- String binpathKey = PreferenceConstants.QTVERSION_BINPATH + "."
- + Integer.toString(i);
- String includepathKey = PreferenceConstants.QTVERSION_INCLUDEPATH
- + "." + Integer.toString(i);
- String name = "";
- String binPath = "";
- String incPath = "";
- if (store.contains(nameKey)) {
- name = store.getString(nameKey);
+ synchronized(qtSDKList) {
+ qtSDKList.clear();
+
+ IPreferenceStore store = QtProjectPlugin.getDefault().getPreferenceStore();
+ int count = store.getInt(PreferenceConstants.QTVERSION_COUNT);
+ for (int i = 0; i < count; i++) {
+ String nameKey = PreferenceConstants.QTVERSION_NAME + "."
+ + Integer.toString(i);
+ String binpathKey = PreferenceConstants.QTVERSION_BINPATH + "."
+ + Integer.toString(i);
+ String includepathKey = PreferenceConstants.QTVERSION_INCLUDEPATH
+ + "." + Integer.toString(i);
+ String name = "";
+ String binPath = "";
+ String incPath = "";
+ if (store.contains(nameKey)) {
+ name = store.getString(nameKey);
+ }
+ if (store.contains(binpathKey)) {
+ binPath = store.getString(binpathKey);
+ }
+ if (store.contains(includepathKey)) {
+ incPath = store.getString(includepathKey);
+ }
+
+ QtSDK qtSDK = new QtSDK(name, incPath, binPath);
+ qtSDKList.add(qtSDK);
}
- if (store.contains(binpathKey)) {
- binPath = store.getString(binpathKey);
- }
- if (store.contains(includepathKey)) {
- incPath = store.getString(includepathKey);
- }
-
- QtSDK qtSDK = new QtSDK(name, incPath, binPath);
- qtSDKList.add(qtSDK);
}
}
--- a/qt/com.nokia.carbide.cpp.qt.ui/META-INF/MANIFEST.MF Tue Aug 24 16:42:58 2010 -0500
+++ b/qt/com.nokia.carbide.cpp.qt.ui/META-INF/MANIFEST.MF Wed Aug 25 12:42:09 2010 -0500
@@ -23,6 +23,7 @@
org.eclipse.cdt.core,
org.eclipse.ui.ide,
com.trolltech.qtcppproject;bundle-version="1.6.0";resolution:=optional,
- com.nokia.cpp.utils.ui
+ com.nokia.cpp.utils.ui,
+ com.nokia.cpp.utils.core;bundle-version="1.0.0"
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ActivationPolicy: lazy
--- a/qt/com.nokia.carbide.cpp.qt.ui/src/com/nokia/carbide/cpp/internal/qt/ui/QMakeEnvironmentModifier.java Tue Aug 24 16:42:58 2010 -0500
+++ b/qt/com.nokia.carbide.cpp.qt.ui/src/com/nokia/carbide/cpp/internal/qt/ui/QMakeEnvironmentModifier.java Wed Aug 25 12:42:09 2010 -0500
@@ -40,7 +40,7 @@
if (cpi != null) {
ICarbideBuildConfiguration config = cpi.getDefaultConfiguration();
if (config != null) {
- ISymbianSDK sdk = config.getSDK();
+ ISymbianSDK sdk = config.getBuildContext().getSDK();
if (sdk != null) {
// set EPOCROOT for the SDK of the current build configuration
IPath epocRoot = new Path(sdk.getEPOCROOT());
--- a/qt/com.nokia.carbide.cpp.qt.ui/src/com/nokia/carbide/cpp/internal/qt/ui/QtUIPlugin.java Tue Aug 24 16:42:58 2010 -0500
+++ b/qt/com.nokia.carbide.cpp.qt.ui/src/com/nokia/carbide/cpp/internal/qt/ui/QtUIPlugin.java Wed Aug 25 12:42:09 2010 -0500
@@ -42,11 +42,11 @@
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
import com.nokia.carbide.cdt.builder.project.ISISBuilderInfo;
import com.nokia.carbide.cdt.internal.api.builder.SISBuilderInfo2;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
import com.nokia.carbide.cpp.internal.api.sdk.ISDKManagerLoadedHook;
import com.nokia.carbide.cpp.internal.qt.core.QtCorePlugin;
import com.nokia.carbide.cpp.internal.qt.core.QtSDKUtils;
import com.nokia.carbide.cpp.internal.qt.ui.wizard.Messages;
-import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils;
public class QtUIPlugin extends AbstractUIPlugin implements ICarbideConfigurationChangedListener, ISDKManagerLoadedHook {
@@ -109,7 +109,7 @@
IFile file = project.getFile(project.getName() + underscore + config.getPlatformString().toLowerCase() +
underscore + config.getTargetString().toLowerCase() + ".pkg"); //$NON-NLS-1$
- if (file == null || !file.exists() && !config.getPlatformString().equals(ISymbianBuildContext.EMULATOR_PLATFORM)) {
+ if (file == null || !file.exists() && !config.getPlatformString().toUpperCase().equals(ISBSv1BuildContext.EMULATOR_PLATFORM)) {
// Qt 4.6 only creates one PKG file per project. Do not add for WINSCW
file = project.getFile(project.getName() + underscore + template + ".pkg"); //$NON-NLS-1$
}
--- a/qt/com.nokia.carbide.cpp.qt.ui/src/com/nokia/carbide/cpp/internal/qt/ui/wizard/QtImporterBuildTargetsPage.java Tue Aug 24 16:42:58 2010 -0500
+++ b/qt/com.nokia.carbide.cpp.qt.ui/src/com/nokia/carbide/cpp/internal/qt/ui/wizard/QtImporterBuildTargetsPage.java Wed Aug 25 12:42:09 2010 -0500
@@ -21,8 +21,13 @@
import org.eclipse.jface.dialogs.IDialogSettings;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildContext;
+import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildInfo;
+import com.nokia.carbide.cpp.internal.sdk.core.model.SDKManager;
+import com.nokia.carbide.cpp.sdk.core.IBSFCatalog;
import com.nokia.carbide.cpp.sdk.core.ISDKManager;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
@@ -59,7 +64,13 @@
ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
for (ISymbianBuildContext currContext : selectedConfigs){
ISymbianSDK sdk = currContext.getSDK();
- if (sdk.getBSFCatalog().getVirtualVariantPlatforms().length > 0 || sdkMgr.getBSFScannerEnabled()){
+ IBSFCatalog bsfCatalog = null;
+ if (currContext instanceof ISBSv1BuildContext) {
+ // SBSv1 only
+ ISBSv1BuildInfo sbsv1BuildInfo = (ISBSv1BuildInfo)sdk.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER);
+ bsfCatalog = sbsv1BuildInfo.getBSFCatalog();
+ }
+ if (bsfCatalog != null && bsfCatalog.getVirtualVariantPlatforms().length > 0 || ((SDKManager)sdkMgr).getBSFScannerEnabled()){
// this setting needs to be persisted.
settingsNeedUpdate = true;
selectedConfigsToSave.add(currContext);
--- a/qt/com.nokia.carbide.cpp.qt.ui/src/com/nokia/carbide/cpp/internal/qt/ui/wizard/QtProFileImportWizard.java Tue Aug 24 16:42:58 2010 -0500
+++ b/qt/com.nokia.carbide.cpp.qt.ui/src/com/nokia/carbide/cpp/internal/qt/ui/wizard/QtProFileImportWizard.java Wed Aug 25 12:42:09 2010 -0500
@@ -42,8 +42,13 @@
import com.nokia.carbide.cpp.internal.qt.core.QtCorePlugin;
import com.nokia.carbide.cpp.internal.qt.core.QtSDKUtils;
import com.nokia.carbide.cpp.internal.qt.ui.QtUIPlugin;
+import com.nokia.carbide.cpp.internal.sdk.core.model.SDKManager;
import com.nokia.carbide.cpp.project.core.ProjectCorePlugin;
-import com.nokia.carbide.cpp.sdk.core.*;
+import com.nokia.carbide.cpp.sdk.core.ISDKManager;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
+import com.nokia.cpp.internal.api.utils.core.HostOS;
import com.trolltech.qtcppproject.QtProject;
import com.trolltech.qtcppproject.qmake.QMakeRunner;
@@ -62,11 +67,13 @@
setDialogSettings(section);
setNeedsProgressMonitor(true);
- ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
- if (!sdkMgr.checkDevicesXMLSynchronized()){
- if (sdkMgr instanceof ISDKManagerInternal){
- ISDKManagerInternal sdkMgrInternal = (ISDKManagerInternal)sdkMgr;
- sdkMgrInternal.fireDevicesXMLChanged();
+ if (HostOS.IS_WIN32){
+ ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
+ if (!((SDKManager)sdkMgr).checkDevicesXMLSynchronized()){
+ if (sdkMgr instanceof ISDKManagerInternal){
+ ISDKManagerInternal sdkMgrInternal = (ISDKManagerInternal)sdkMgr;
+ sdkMgrInternal.fireDevicesXMLChanged();
+ }
}
}
}
--- a/templates/com.nokia.carbide.cpp.qt.templates/plugin.xml Tue Aug 24 16:42:58 2010 -0500
+++ b/templates/com.nokia.carbide.cpp.qt.templates/plugin.xml Wed Aug 25 12:42:09 2010 -0500
@@ -14,7 +14,7 @@
<template
displayName="%Qt.gui.dialog.template.label"
- filterArguments="S60:3.0-5.9"
+ filterArguments=""
groupLabel="%Qt.gui.label"
image="icons/guiproject.gif"
location="templates/Qt-GUI-Dialog/template.xml"
@@ -23,7 +23,7 @@
<template
displayName="%Qt.gui.mainwindow.template.label"
- filterArguments="S60:3.0-5.9"
+ filterArguments=""
groupLabel="%Qt.gui.label"
image="icons/guiproject.gif"
location="templates/Qt-GUI-MainWindow/template.xml"
@@ -32,7 +32,7 @@
<template
displayName="%Qt.gui.widget.template.label"
- filterArguments="S60:3.0-5.9"
+ filterArguments=""
groupLabel="%Qt.gui.label"
image="icons/guiproject.gif"
location="templates/Qt-GUI-Widget/template.xml"
--- a/templates/com.nokia.carbide.cpp.templates/plugin.xml Tue Aug 24 16:42:58 2010 -0500
+++ b/templates/com.nokia.carbide.cpp.templates/plugin.xml Wed Aug 25 12:42:09 2010 -0500
@@ -7,7 +7,7 @@
<template
displayName="%gui.label"
- filterArguments="S60:3.0-5.9"
+ filterArguments="supportsAvkon"
groupLabel="%S60.3.label"
image="icons/icon_S60.png"
location="templates/projecttemplates/S60-TouchUIApplication/template.xml"
@@ -45,7 +45,7 @@
<template
displayName="%openc.label"
- filterArguments="S60:3.0-5.9"
+ filterArguments=""
groupLabel="%S60.3.label"
image="icons/icon_S60.png"
location="templates/projecttemplates/OpenC-HelloWorld/template.xml"
--- a/templates/com.nokia.carbide.cpp.templates/templates/projecttemplates/Symbian-EXE/sis/Basename.pkg Tue Aug 24 16:42:58 2010 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-; Installation file for $(baseName) EXE
-;
-; This is an auto-generated PKG file by Carbide.
-; This file uses variables specific to Carbide builds that will not work
-; on command-line builds. If you want to use this generated PKG file from the
-; command-line tools you will need to modify the variables with the appropriate
-; values: $(EPOCROOT), $(PLATFORM), $(TARGET)
-;
-
-;
-; UID is the exe's UID
-;
-#{"$(baseName) EXE"},($(uid3)),1,0,0
-
-; the vendor names are required for EKA2 so uncomment
-; these two lines for S60 3.0 and UIQ 3.x.
-;Localised Vendor name
-%{"Vendor-EN"}
-
-;Unique Vendor name
-;:"Vendor"
-
-"$(EPOCROOT)epoc32\release\$(PLATFORM)\$(TARGET)\$(baseName).exe" -"!:\system\programs\$(baseName).exe"
-
\ No newline at end of file
--- a/templates/com.nokia.carbide.cpp.templates/templates/projecttemplates/Symbian-EXE/sis/Basename_EKA1.pkg Tue Aug 24 16:42:58 2010 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-; Installation file for ARMI & THUMB Build for generic EKA1 console application
-; Installation file for $(baseName) application
-;
-; This is an auto-generated PKG file by Carbide.
-; This file uses variables specific to Carbide builds that will not work
-; on command-line builds. If you want to use this generated PKG file from the
-; command-line tools you will need to modify the variables with the appropriate
-; values: $(EPOCROOT), $(PLATFORM), $(TARGET)
-;
-;
-; UID is the exe's UID
-;
-#{"$(baseName) EXE"},(0x0),1,0,0
-
-;Localised Vendor name
-;%{"Vendor-EN"}
-
-;Unique Vendor name
-;:"Vendor"
-
-"$(EPOCROOT)epoc32\release\$(PLATFORM)\$(TARGET)\$(baseName).exe" -"!:\system\programs\$(baseName).exe"
-