Refactor getBuiltInMacros() to be SBSv1 specific. This are the hard-coded macros misc macros we are adding for SBSv1. C3_BUILDER_WORK
authortimkelly
Wed, 28 Jul 2010 15:19:12 -0500
branchC3_BUILDER_WORK
changeset 1710 94cdcd7c5550
parent 1709 6bd6640867aa
child 1715 ff0db4bbc189
Refactor getBuiltInMacros() to be SBSv1 specific. This are the hard-coded macros misc macros we are adding for SBSv1. For SBSv2, they are retrieved from the sbs config query. Also, clean up some API and comments on public APIS
builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/project/ICarbideBuildConfiguration.java
builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideBuildConfiguration.java
builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideLanguageData.java
builder/com.nokia.carbide.cpp.builder.utils/src/com/nokia/carbide/cpp/internal/builder/utils/handlers/PreprocessHandler.java
core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/ISBSv1BuildInfo.java
core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SBSv1BuildInfo.java
core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SDKManager.java
core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SymbianSDK.java
core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISymbianSDK.java
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/project/ICarbideBuildConfiguration.java	Wed Jul 28 11:33:05 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/project/ICarbideBuildConfiguration.java	Wed Jul 28 15:19:12 2010 -0500
@@ -112,16 +112,6 @@
 	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();
-	
-	/**
 	 * Compares two configurations to see if their display names are equivalent.
 	 */
 	boolean equals(Object obj);
@@ -134,6 +124,10 @@
 	 */
 	IPath getTargetOutputDirectory();
 	
+	/**
+	 * Retrieve the build context specific info.
+	 * @return
+	 */
 	ISymbianBuildContext getBuildContext();
 	
 	/** ISymbianBuildContext wrapper */
@@ -148,16 +142,47 @@
 	/** ISymbianBuildContext wrapper */
 	String getTargetString();
 	
+	/**
+	 * Get the compiler prefix file. This is an ISymbianBuildContext wrapper.
+	 * @return The path to the compiler's prefix file. May be null if none.
+	 */
 	public IPath getCompilerPrefixFile();
 	
+	/**
+	 * Get the macros associated with preprocessing CPP source files. This is an ISymbianBuildContext wrapper.
+	 * @return the list of IDefine macros
+	 */
 	public List<IDefine> getCompilerMacros();
 	
+	/**
+	 * Get the macros discovered from preprocessing the SDK prefix file for the configuration. This is an ISymbianBuildContext wrapper.
+	 * @return the list of IDefine macros
+	 */
 	public List<IDefine> getVariantHRHDefines();
 	
+	/**
+	 * Get the list of include files included in the variant HRH SDK preinclude file
+	 * This is used to check dependencies on all SDK/Configuration includes. This is an ISymbianBuildContext wrapper.
+	 * @return
+	 */
 	public List<File> getPrefixFileIncludes();
 	
+	/**
+	 * Get the variant portion of a build configuration name. May be an empty string. This is an ISymbianBuildContext wrapper.
+	 * @return
+	 */
 	public String getBuildVariationName();
 
+	/**
+	 * Get the <cconfiguration/> 'id' attribute for this configuration (from .cproject file). This is an ISymbianBuildContext wrapper.
+	 * @return
+	 */
 	String getConfigurationID();
 	
+	/**
+	 * Check that at least one MMP in the project configuration has stdcpp support keyword
+	 * @return
+	 */
+	public boolean hasSTDCPPSupport();
+	
 }
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideBuildConfiguration.java	Wed Jul 28 11:33:05 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideBuildConfiguration.java	Wed Jul 28 15:19:12 2010 -0500
@@ -79,14 +79,6 @@
 	protected SBSv2BuilderInfo sbsv2BuilderInfo;
 	protected boolean rebuildNeeded;
 	
-	/**
-	 * TODO: Target constants - copied from ISymbianBuildContext 
-	 */
-
-	public static final String DEBUG_TARGET = "UDEB";
-
-	public static final String RELEASE_TARGET = "UREL";
-	
 	public CarbideBuildConfiguration(IProject project, ISymbianBuildContext context) {
 		this.context = context;
 		projectTracker = new TrackedResource(project);
@@ -339,35 +331,6 @@
 		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;
 	}
@@ -422,25 +385,6 @@
 		return sbsv2BuilderInfo;
 	}
 
-	private boolean hasSTDCPPSupport() {
-		
-		ICarbideProjectInfo cpi = getCarbideProject();
-		
-		List<ISymbianBuildContext> buildConfig = new ArrayList<ISymbianBuildContext>();
-		List<IPath> normalMakMakePaths = new ArrayList<IPath>();
-		List<IPath> testMakMakePaths = new ArrayList<IPath>();
-		buildConfig.add(this.getBuildContext());
-		EpocEngineHelper.getMakMakeFiles(cpi.getAbsoluteBldInfPath(), buildConfig, normalMakMakePaths, testMakMakePaths, new NullProgressMonitor());
-		
-		for (IPath mmpPath : normalMakMakePaths){
-			if (EpocEngineHelper.hasSTDCPPSupport(cpi, mmpPath)){
-				return true;
-			}
-		}
-		
-		return false;
-	}
-
 	public ISBSv2BuildConfigInfo getSBSv2ConfigInfo() {
 		return sbsv2BuilderInfo;
 	}
@@ -509,6 +453,23 @@
 		return context.getBuildVariationName();
 	}
 	
-	
+	public boolean hasSTDCPPSupport() {
+		
+		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.getBuildContext());
+		EpocEngineHelper.getMakMakeFiles(cpi.getAbsoluteBldInfPath(), buildConfig, normalMakMakePaths, testMakMakePaths, new NullProgressMonitor());
+		
+		for (IPath mmpPath : normalMakMakePaths){
+			if (EpocEngineHelper.hasSTDCPPSupport(cpi, mmpPath)){
+				return true;
+			}
+		}
+		
+		return false;
+	}
 	
 }
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideLanguageData.java	Wed Jul 28 11:33:05 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideLanguageData.java	Wed Jul 28 15:19:12 2010 -0500
@@ -40,6 +40,7 @@
 import org.eclipse.core.resources.ProjectScope;
 import org.eclipse.core.runtime.CoreException;
 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.core.runtime.content.IContentType;
@@ -49,6 +50,7 @@
 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.cdt.builder.project.ICarbideProjectInfo;
 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.ISBSv1BuildInfo;
@@ -302,15 +304,20 @@
 			for (String builtinMacro : sbsv1BuildInfo.getVendorSDKMacros()) {
 				macros.put(builtinMacro, ""); //$NON-NLS-1$
 			}
+			
+			// built in macros
+			for (String builtinMacro : sbsv1BuildInfo.getBuiltinMacros(context)) {
+				macros.put(builtinMacro, ""); //$NON-NLS-1$
+			}
+			
 		} else {
 			ISBSv2BuildInfo sbsv2BuildInfo = (ISBSv2BuildInfo)sdk.getBuildInfo(ISymbianBuilderID.SBSV2_BUILDER);
 			// platform macros
 			macros.putAll(sbsv2BuildInfo.getPlatformMacros(carbideBuildConfig.getPlatformString()));			
 		}
 		
-		// built in macros
-		for (String builtinMacro : carbideBuildConfig.getBuiltinMacros()) {
-			macros.put(builtinMacro, ""); //$NON-NLS-1$
+		if (carbideBuildConfig.hasSTDCPPSupport()){
+			macros.put("__SYMBIAN_STDCPP_SUPPORT__", "");
 		}
 		
 		// target type macros (e.g. __DLL__)
@@ -376,7 +383,7 @@
 		// the cache.
 		cacheTimestamp = System.currentTimeMillis();
 	}
-	
+
 	private void persistCache() {
 		// persist the cache between IDE launches.
 		try {
--- a/builder/com.nokia.carbide.cpp.builder.utils/src/com/nokia/carbide/cpp/internal/builder/utils/handlers/PreprocessHandler.java	Wed Jul 28 11:33:05 2010 -0500
+++ b/builder/com.nokia.carbide.cpp.builder.utils/src/com/nokia/carbide/cpp/internal/builder/utils/handlers/PreprocessHandler.java	Wed Jul 28 15:19:12 2010 -0500
@@ -22,7 +22,6 @@
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
 
 import org.eclipse.cdt.core.model.CModelException;
 import org.eclipse.cdt.core.model.CoreModel;
@@ -82,7 +81,6 @@
 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.DefineFactory;
 import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildInfo;
 import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildInfo;
 import com.nokia.carbide.cpp.internal.builder.utils.Activator;
@@ -427,6 +425,12 @@
 			for (String builtinMacro : sbsv1BuildInfo.getVendorSDKMacros()) {
 				macros.add(builtinMacro);
 			}
+			
+			// built in macros
+			for (String builtinMacro : sbsv1BuildInfo.getBuiltinMacros(buildConfig.getBuildContext())) {
+				macros.add(builtinMacro);
+			}
+			
 		} else {
 			ISBSv2BuildInfo sbsv2BuildInfo = (ISBSv2BuildInfo)sdk.getBuildInfo(ISymbianBuilderID.SBSV2_BUILDER);
 			// platform macros
@@ -436,11 +440,11 @@
 			} 
 		}
 		
-		// built in macros
-		for (String builtinMacro : buildConfig.getBuiltinMacros()) {
-			macros.add(builtinMacro);
+		if (buildConfig.hasSTDCPPSupport()){
+			macros.add("__SYMBIAN_STDCPP_SUPPORT__");
 		}
 		
+		
 		IProject project = buildConfig.getCarbideProject().getProject();
 		
 		List<IPath> mmps = EpocEngineHelper.getMMPsForSource(project, filePath);
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/ISBSv1BuildInfo.java	Wed Jul 28 11:33:05 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/ISBSv1BuildInfo.java	Wed Jul 28 15:19:12 2010 -0500
@@ -18,6 +18,7 @@
 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.
@@ -77,4 +78,14 @@
 
 	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.
+	 */
+	List<String> getBuiltinMacros(ISymbianBuildContext context);
+
 }
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SBSv1BuildInfo.java	Wed Jul 28 11:33:05 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SBSv1BuildInfo.java	Wed Jul 28 15:19:12 2010 -0500
@@ -307,4 +307,26 @@
 		return buildContexts;
 	}
 
+	@Override
+	public List<String> getBuiltinMacros(ISymbianBuildContext context) {
+		List<String> macros = new ArrayList<String>();
+		
+		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$
+		
+		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;
+	}
+
+
 }
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SDKManager.java	Wed Jul 28 11:33:05 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SDKManager.java	Wed Jul 28 15:19:12 2010 -0500
@@ -213,7 +213,6 @@
 			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() +")."; //$NON-NLS-N$
 			throw new SDKEnvInfoFailureException(errMsg);
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SymbianSDK.java	Wed Jul 28 11:33:05 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SymbianSDK.java	Wed Jul 28 15:19:12 2010 -0500
@@ -196,6 +196,9 @@
 		return sdkFeatures;
 	}
 
+	// TODO: This needs to move under ISymianBuildContext. For abld we can use this method.
+	// For SBSv2, this is configuration dependent and the information is obtained from
+	// the sbs --query=config[<config>] call.
 	public List<String> getSupportedTargetTypes() {
 		
 		synchronized (supportedTargetTypesList) {
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISymbianSDK.java	Wed Jul 28 11:33:05 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISymbianSDK.java	Wed Jul 28 15:19:12 2010 -0500
@@ -36,6 +36,7 @@
 	 * Returns build info for a particular builder.
 	 * @param builderId id string of a builder
 	 * @return build info
+	 * @since 3.0
 	 */
 	ISDKBuildInfo getBuildInfo(String builderId);
 	
@@ -79,6 +80,7 @@
 	 * 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();