builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/builder/CarbideCPPBuilder.java
branchRCL_2_4
changeset 571 a7ae4dccdf8a
parent 329 6f5ea15e52ff
child 593 7dbb2f97454a
child 1222 63523a35c9b2
equal deleted inserted replaced
570:fdb299cc88b4 571:a7ae4dccdf8a
    42 import org.eclipse.core.runtime.IStatus;
    42 import org.eclipse.core.runtime.IStatus;
    43 import org.eclipse.core.runtime.NullProgressMonitor;
    43 import org.eclipse.core.runtime.NullProgressMonitor;
    44 import org.eclipse.core.runtime.Path;
    44 import org.eclipse.core.runtime.Path;
    45 import org.eclipse.core.runtime.Status;
    45 import org.eclipse.core.runtime.Status;
    46 import org.eclipse.core.runtime.SubMonitor;
    46 import org.eclipse.core.runtime.SubMonitor;
       
    47 import org.eclipse.jface.dialogs.MessageDialog;
    47 import org.eclipse.jface.window.Window;
    48 import org.eclipse.jface.window.Window;
    48 import org.eclipse.swt.widgets.Display;
    49 import org.eclipse.swt.widgets.Display;
    49 
    50 
    50 import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
    51 import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
    51 import com.nokia.carbide.cdt.builder.DefaultMMPViewConfiguration;
    52 import com.nokia.carbide.cdt.builder.DefaultMMPViewConfiguration;
    61 import com.nokia.carbide.cdt.internal.builder.CarbideSBSv1Builder;
    62 import com.nokia.carbide.cdt.internal.builder.CarbideSBSv1Builder;
    62 import com.nokia.carbide.cdt.internal.builder.CarbideSBSv2Builder;
    63 import com.nokia.carbide.cdt.internal.builder.CarbideSBSv2Builder;
    63 import com.nokia.carbide.cdt.internal.builder.ICarbideBuilder;
    64 import com.nokia.carbide.cdt.internal.builder.ICarbideBuilder;
    64 import com.nokia.carbide.cdt.internal.builder.ui.BuilderPreferencePage;
    65 import com.nokia.carbide.cdt.internal.builder.ui.BuilderPreferencePage;
    65 import com.nokia.carbide.cdt.internal.builder.ui.MMPSelectionDialog;
    66 import com.nokia.carbide.cdt.internal.builder.ui.MMPSelectionDialog;
       
    67 import com.nokia.carbide.cdt.internal.builder.ui.Messages;
    66 import com.nokia.carbide.cpp.epoc.engine.EpocEnginePlugin;
    68 import com.nokia.carbide.cpp.epoc.engine.EpocEnginePlugin;
    67 import com.nokia.carbide.cpp.epoc.engine.MMPDataRunnableAdapter;
    69 import com.nokia.carbide.cpp.epoc.engine.MMPDataRunnableAdapter;
    68 import com.nokia.carbide.cpp.epoc.engine.PKGViewRunnableAdapter;
    70 import com.nokia.carbide.cpp.epoc.engine.PKGViewRunnableAdapter;
    69 import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IExtension;
    71 import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IExtension;
    70 import com.nokia.carbide.cpp.epoc.engine.model.mmp.EMMPLanguage;
    72 import com.nokia.carbide.cpp.epoc.engine.model.mmp.EMMPLanguage;
    71 import com.nokia.carbide.cpp.epoc.engine.model.mmp.EMMPStatement;
    73 import com.nokia.carbide.cpp.epoc.engine.model.mmp.EMMPStatement;
    72 import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPData;
    74 import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPData;
    73 import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPResource;
    75 import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPResource;
    74 import com.nokia.carbide.cpp.epoc.engine.preprocessor.AcceptedNodesViewFilter;
    76 import com.nokia.carbide.cpp.epoc.engine.preprocessor.AcceptedNodesViewFilter;
       
    77 import com.nokia.carbide.cpp.internal.qt.core.QtCorePlugin;
    75 import com.nokia.carbide.cpp.internal.x86build.X86BuildPlugin;
    78 import com.nokia.carbide.cpp.internal.x86build.X86BuildPlugin;
    76 import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
    79 import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
    77 import com.nokia.carbide.internal.api.cpp.epoc.engine.model.pkg.EPKGLanguage;
    80 import com.nokia.carbide.internal.api.cpp.epoc.engine.model.pkg.EPKGLanguage;
    78 import com.nokia.carbide.internal.api.cpp.epoc.engine.model.pkg.IPKGEmbeddedSISFile;
    81 import com.nokia.carbide.internal.api.cpp.epoc.engine.model.pkg.IPKGEmbeddedSISFile;
    79 import com.nokia.carbide.internal.api.cpp.epoc.engine.model.pkg.IPKGHeader;
    82 import com.nokia.carbide.internal.api.cpp.epoc.engine.model.pkg.IPKGHeader;
  1208 		}
  1211 		}
  1209 		
  1212 		
  1210     	monitor.done();
  1213     	monitor.done();
  1211     }
  1214     }
  1212     
  1215     
  1213     private static void buildSisFile(ISISBuilderInfo sisInfo, ICarbideBuildConfiguration config, CarbideCommandLauncher cmdLauncher, IProgressMonitor monitor, boolean createOutputFromPKGFileName) {
  1216     private static void buildSisFile(final ISISBuilderInfo sisInfo, final ICarbideBuildConfiguration config, CarbideCommandLauncher cmdLauncher, IProgressMonitor monitor, boolean createOutputFromPKGFileName) {
  1214 		IPath pkgPath = sisInfo.getPKGFullPath();
  1217 		IPath pkgPath = sisInfo.getPKGFullPath();
  1215     	if (pkgPath == null) {
  1218     	if (pkgPath == null) {
  1216    			cmdLauncher.writeToConsole("PKG file does not exist.  Skipping...");
  1219    			cmdLauncher.writeToConsole("PKG file does not exist.  Skipping...");
  1217     		return;
  1220     		return;
  1218     	} else if (!pkgPath.toFile().exists()) {
  1221     	} else if (!pkgPath.toFile().exists()) {
  1219    			cmdLauncher.writeToConsole("PKG file" + pkgPath.toOSString() + " does not exist.  Skipping...");
  1222     		
  1220     		return;
  1223     		try {
       
  1224     			// Check to see if this is a Qt project and if the template format could have changed.
       
  1225     			IProject project = config.getCarbideProject().getProject();
       
  1226 				if (project != null && project.hasNature(QtCorePlugin.QT_PROJECT_NATURE_ID)){
       
  1227 					final String currentPKGName = pkgPath.lastSegment();
       
  1228 					pkgPath = pkgPath.removeLastSegments(1).append(project.getName() + "_template.pkg" ); //$NON-NLS-N$
       
  1229 					if (pkgPath.toFile().exists()){
       
  1230 						
       
  1231 						final IPath finalPkgPath = pkgPath;
       
  1232 						Display.getDefault().syncExec(new Runnable() {
       
  1233 							public void run() {
       
  1234 								if (true == MessageDialog.openQuestion(WorkbenchUtils.getSafeShell(), "Can not find PKG file for SIS builder", "The file \"" + currentPKGName + "\" does not exist for this Qt project. The suggested file is \"" + finalPkgPath.lastSegment() + "\".\n\nDo you want to update your build configuration to use this PKG file?")) { //$NON-NLS-1$ //$NON-NLS-2$
       
  1235 									IWorkspace workspace= ResourcesPlugin.getWorkspace();
       
  1236 									IFile ifile= workspace.getRoot().getFileForLocation(finalPkgPath); 
       
  1237 									sisInfo.setPKGFile(ifile.getLocation().toOSString());
       
  1238 									config.getSISBuilderInfoList().remove(sisInfo);
       
  1239 									config.getSISBuilderInfoList().add(sisInfo);
       
  1240 									config.saveConfiguration(false);
       
  1241 								} 
       
  1242 							}
       
  1243 						});
       
  1244 					} 
       
  1245 				}
       
  1246 			} catch (CoreException e) {
       
  1247 				e.printStackTrace();
       
  1248 			}
       
  1249     		
       
  1250 			if (!sisInfo.getPKGFullPath().toFile().exists()){
       
  1251 				cmdLauncher.writeToConsole("PKG file " + pkgPath.toOSString() + " does not exist.  Skipping..."); //$NON-NLS-N$
       
  1252    				return;
       
  1253 			}
  1221     	}
  1254     	}
  1222     	
  1255     	
  1223     	// see if we need to rebuild the sis file
  1256     	// see if we need to rebuild the sis file
  1224 		boolean shouldBuild = false;
  1257 		boolean shouldBuild = false;
  1225 		
  1258