mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-23 22:52:11 +02:00
Second set of changes for multiple input & output
Gnu definitions are updated to use new schema elements
This commit is contained in:
parent
05adf9b805
commit
5bde16a1f9
50 changed files with 1831 additions and 454 deletions
|
@ -1,8 +1,24 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<classpath>
|
<classpath>
|
||||||
<classpathentry kind="src" path="tests"/>
|
<classpathentry kind="src" path="tests">
|
||||||
<classpathentry kind="src" path="suite"/>
|
<attributes>
|
||||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
</attributes>
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
</classpathentry>
|
||||||
|
<classpathentry kind="src" path="suite">
|
||||||
|
<attributes>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
|
||||||
|
<attributes>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry excluding="tests/|suite/" kind="src" path="">
|
||||||
|
<attributes>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins">
|
||||||
|
<attributes>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
<classpathentry kind="output" path="bin"/>
|
<classpathentry kind="output" path="bin"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
<import plugin="org.eclipse.core.resources"/>
|
<import plugin="org.eclipse.core.resources"/>
|
||||||
<import plugin="org.eclipse.ui"/>
|
<import plugin="org.eclipse.ui"/>
|
||||||
<import plugin="org.eclipse.ui.ide"/>
|
<import plugin="org.eclipse.ui.ide"/>
|
||||||
|
<import plugin="org.eclipse.compare"/>
|
||||||
</requires>
|
</requires>
|
||||||
|
|
||||||
<!-- Managed Make Builder Tool Specifications - CDT 2.0 format -->
|
<!-- Managed Make Builder Tool Specifications - CDT 2.0 format -->
|
||||||
|
@ -1202,9 +1203,9 @@
|
||||||
|
|
||||||
<projectType
|
<projectType
|
||||||
isAbstract="false"
|
isAbstract="false"
|
||||||
isTest="true"
|
isTest="true"
|
||||||
name="testgnu.exe"
|
name="testgnu21.exe"
|
||||||
id="cdt.managedbuild.target.testgnu.exe">
|
id="cdt.managedbuild.target.testgnu21.exe">
|
||||||
<configuration
|
<configuration
|
||||||
name="Dbg"
|
name="Dbg"
|
||||||
id="cdt.managedbuild.config.testgnu.exe.debug"
|
id="cdt.managedbuild.config.testgnu.exe.debug"
|
||||||
|
@ -1343,8 +1344,8 @@
|
||||||
<projectType
|
<projectType
|
||||||
isAbstract="false"
|
isAbstract="false"
|
||||||
isTest="true"
|
isTest="true"
|
||||||
name="testgnu.so"
|
name="testgnu21.so"
|
||||||
id="cdt.managedbuild.target.testgnu.so">
|
id="cdt.managedbuild.target.testgnu21.so">
|
||||||
<configuration
|
<configuration
|
||||||
name="Debug"
|
name="Debug"
|
||||||
cleanCommand="rm -rf"
|
cleanCommand="rm -rf"
|
||||||
|
@ -1511,9 +1512,9 @@
|
||||||
|
|
||||||
<projectType
|
<projectType
|
||||||
isTest="true"
|
isTest="true"
|
||||||
name="testgnu.lib"
|
name="testgnu21.lib"
|
||||||
isAbstract="false"
|
isAbstract="false"
|
||||||
id="cdt.managedbuild.target.testgnu.lib">
|
id="cdt.managedbuild.target.testgnu21.lib">
|
||||||
<configuration
|
<configuration
|
||||||
name="Dbg"
|
name="Dbg"
|
||||||
artifactExtension="a"
|
artifactExtension="a"
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,43 @@
|
||||||
|
################################################################################
|
||||||
|
# Automatically-generated file. Do not edit!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
ROOT := ..
|
||||||
|
|
||||||
|
-include $(ROOT)/makefile.init
|
||||||
|
|
||||||
|
RM := rm -rf
|
||||||
|
|
||||||
|
# All of the sources participating in the build are defined here
|
||||||
|
-include sources.mk
|
||||||
|
-include $(SUBDIRS:%=%/subdir.mk)
|
||||||
|
-include objects.mk
|
||||||
|
ifneq ($(strip $(DEPS)),)
|
||||||
|
-include $(DEPS)
|
||||||
|
endif
|
||||||
|
|
||||||
|
-include $(ROOT)/makefile.defs
|
||||||
|
|
||||||
|
# Add inputs and outputs from these tool invocations to the build variables
|
||||||
|
|
||||||
|
# All Target
|
||||||
|
all: lib.a
|
||||||
|
|
||||||
|
# Tool invocations
|
||||||
|
lib.a: $(OBJS) $(USER_OBJS)
|
||||||
|
@echo 'Building target: $@'
|
||||||
|
@echo 'Invoking: archiver.gnu'
|
||||||
|
@echo ar -r lib.a $(OBJS) $(USER_OBJS) $(LIBS)
|
||||||
|
@ar -r lib.a $(OBJS) $(USER_OBJS) $(LIBS)
|
||||||
|
@echo 'Finished building target: $@'
|
||||||
|
@echo ' '
|
||||||
|
|
||||||
|
# Other Targets
|
||||||
|
clean:
|
||||||
|
-$(RM) $(OBJS)$(DEPS) lib.a
|
||||||
|
-@echo ' '
|
||||||
|
|
||||||
|
.PHONY: all clean dependents
|
||||||
|
.SECONDARY:
|
||||||
|
|
||||||
|
-include $(ROOT)/makefile.targets
|
|
@ -0,0 +1,7 @@
|
||||||
|
################################################################################
|
||||||
|
# Automatically-generated file. Do not edit!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
LIBS :=
|
||||||
|
|
||||||
|
USER_OBJS :=
|
|
@ -0,0 +1,15 @@
|
||||||
|
################################################################################
|
||||||
|
# Automatically-generated file. Do not edit!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
C_SRCS :=
|
||||||
|
S_UPPER_SRCS :=
|
||||||
|
O_SRCS :=
|
||||||
|
S_SRCS :=
|
||||||
|
OBJS :=
|
||||||
|
DEPS :=
|
||||||
|
|
||||||
|
# Every subdirectory with source files must be described here
|
||||||
|
SUBDIRS := \
|
||||||
|
. \
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
################################################################################
|
||||||
|
# Automatically-generated file. Do not edit!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Add inputs and outputs from these tool invocations to the build variables
|
||||||
|
C_SRCS += \
|
||||||
|
$(ROOT)/f1.c \
|
||||||
|
$(ROOT)/f2.c
|
||||||
|
|
||||||
|
OBJS += \
|
||||||
|
${addprefix ./, \
|
||||||
|
f1.o \
|
||||||
|
f2.o \
|
||||||
|
}
|
||||||
|
|
||||||
|
DEPS += \
|
||||||
|
${addprefix ./, \
|
||||||
|
f1.d \
|
||||||
|
f2.d \
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Each subdirectory must supply rules for building sources it contributes
|
||||||
|
%.o: $(ROOT)/%.c
|
||||||
|
@echo 'Building file: $<'
|
||||||
|
@echo 'Invoking: compiler.gnu.c'
|
||||||
|
@echo gcc -O0 -g3 -Wall -c -fmessage-length=0 -o$@ $<
|
||||||
|
@gcc -O0 -g3 -Wall -c -fmessage-length=0 -o$@ $< && \
|
||||||
|
echo -n $(@:%.o=%.d) $(dir $@) > $(@:%.o=%.d) && \
|
||||||
|
gcc -MM -MG -P -w -O0 -g3 -Wall -c -fmessage-length=0 $< >> $(@:%.o=%.d)
|
||||||
|
@echo 'Finished building: $<'
|
||||||
|
@echo ' '
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "test_ar.h"
|
||||||
|
|
||||||
|
void f1_ar()
|
||||||
|
{
|
||||||
|
printf ( "Hello from f1_ar.\n" ) ;
|
||||||
|
return ;
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "test_ar.h"
|
||||||
|
|
||||||
|
void f2_ar()
|
||||||
|
{
|
||||||
|
printf ( "Hello from f2_ar.\n" ) ;
|
||||||
|
return ;
|
||||||
|
}
|
|
@ -0,0 +1,2 @@
|
||||||
|
void f1_ar() ;
|
||||||
|
void f2_ar() ;
|
|
@ -0,0 +1,8 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "test_ar.h"
|
||||||
|
|
||||||
|
void f1_ar()
|
||||||
|
{
|
||||||
|
printf ( "Hello from f1_ar.\n" ) ;
|
||||||
|
return ;
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "test_ar.h"
|
||||||
|
|
||||||
|
void f2_ar()
|
||||||
|
{
|
||||||
|
printf ( "Hello from f2_ar.\n" ) ;
|
||||||
|
return ;
|
||||||
|
}
|
Binary file not shown.
|
@ -0,0 +1,2 @@
|
||||||
|
void f1_ar() ;
|
||||||
|
void f2_ar() ;
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,5 +1,5 @@
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* Copyright (c) 2004 Intel Corporation and others.
|
* Copyright (c) 2004, 2005 Intel Corporation and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Common Public License v1.0
|
* are made available under the terms of the Common Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -11,6 +11,8 @@
|
||||||
package org.eclipse.cdt.managedbuilder.testplugin;
|
package org.eclipse.cdt.managedbuilder.testplugin;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.FileWriter;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.util.zip.ZipFile;
|
import java.util.zip.ZipFile;
|
||||||
|
@ -18,23 +20,37 @@ import java.util.zip.ZipFile;
|
||||||
import junit.framework.Assert;
|
import junit.framework.Assert;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.CCorePlugin;
|
import org.eclipse.cdt.core.CCorePlugin;
|
||||||
|
import org.eclipse.cdt.core.ICDescriptor;
|
||||||
|
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
|
||||||
|
import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
|
||||||
|
import org.eclipse.cdt.managedbuilder.core.IManagedProject;
|
||||||
|
import org.eclipse.cdt.managedbuilder.core.IProjectType;
|
||||||
|
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
|
||||||
|
import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
|
||||||
|
import org.eclipse.cdt.managedbuilder.core.ManagedCProjectNature;
|
||||||
import org.eclipse.cdt.make.core.MakeCorePlugin;
|
import org.eclipse.cdt.make.core.MakeCorePlugin;
|
||||||
import org.eclipse.core.resources.IProject;
|
import org.eclipse.core.resources.IProject;
|
||||||
import org.eclipse.core.resources.IProjectDescription;
|
import org.eclipse.core.resources.IProjectDescription;
|
||||||
import org.eclipse.core.resources.IResource;
|
import org.eclipse.core.resources.IResource;
|
||||||
|
import org.eclipse.core.resources.IFile;
|
||||||
import org.eclipse.core.resources.IWorkspace;
|
import org.eclipse.core.resources.IWorkspace;
|
||||||
import org.eclipse.core.resources.IWorkspaceDescription;
|
import org.eclipse.core.resources.IWorkspaceDescription;
|
||||||
import org.eclipse.core.resources.IWorkspaceRoot;
|
import org.eclipse.core.resources.IWorkspaceRoot;
|
||||||
import org.eclipse.core.resources.ResourcesPlugin;
|
import org.eclipse.core.resources.ResourcesPlugin;
|
||||||
import org.eclipse.core.runtime.CoreException;
|
import org.eclipse.core.runtime.CoreException;
|
||||||
|
import org.eclipse.core.runtime.IStatus;
|
||||||
|
import org.eclipse.core.runtime.Path;
|
||||||
import org.eclipse.core.runtime.IPath;
|
import org.eclipse.core.runtime.IPath;
|
||||||
import org.eclipse.core.runtime.IProgressMonitor;
|
import org.eclipse.core.runtime.IProgressMonitor;
|
||||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||||
import org.eclipse.ui.dialogs.IOverwriteQuery;
|
import org.eclipse.ui.dialogs.IOverwriteQuery;
|
||||||
import org.eclipse.ui.wizards.datatransfer.ImportOperation;
|
import org.eclipse.ui.wizards.datatransfer.ImportOperation;
|
||||||
import org.eclipse.ui.wizards.datatransfer.ZipFileStructureProvider;
|
import org.eclipse.ui.wizards.datatransfer.ZipFileStructureProvider;
|
||||||
|
//import org.eclipse.compare.structuremergeviewer.Differencer;
|
||||||
|
//import org.eclipse.compare.ResourceNode;;
|
||||||
|
|
||||||
public class ManagedBuildTestHelper {
|
public class ManagedBuildTestHelper {
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* Create a new project named <code>name</code> or return the project in
|
* Create a new project named <code>name</code> or return the project in
|
||||||
* the workspace of the same name if it exists.
|
* the workspace of the same name if it exists.
|
||||||
|
@ -43,19 +59,23 @@ public class ManagedBuildTestHelper {
|
||||||
* @return
|
* @return
|
||||||
* @throws CoreException
|
* @throws CoreException
|
||||||
*/
|
*/
|
||||||
static public IProject createProject(String name) throws CoreException {
|
static public IProject createProject(String name, IPath location, String projectId, String projectTypeId) throws CoreException {
|
||||||
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
|
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
|
||||||
IProject newProjectHandle = root.getProject(name);
|
IProject newProjectHandle = root.getProject(name);
|
||||||
IProject project = null;
|
IProject project = null;
|
||||||
|
|
||||||
if (!newProjectHandle.exists()) {
|
if (!newProjectHandle.exists()) {
|
||||||
IWorkspace workspace = ResourcesPlugin.getWorkspace();
|
if (projectId.equals(ManagedBuilderCorePlugin.MANAGED_MAKE_PROJECT_ID)) {
|
||||||
IWorkspaceDescription workspaceDesc = workspace.getDescription();
|
project = createNewManagedProject(newProjectHandle, name, location, projectId, projectTypeId);
|
||||||
workspaceDesc.setAutoBuilding(false);
|
} else {
|
||||||
workspace.setDescription(workspaceDesc);
|
IWorkspace workspace = ResourcesPlugin.getWorkspace();
|
||||||
IProjectDescription description = workspace.newProjectDescription(newProjectHandle.getName());
|
IWorkspaceDescription workspaceDesc = workspace.getDescription();
|
||||||
//description.setLocation(root.getLocation());
|
workspaceDesc.setAutoBuilding(false);
|
||||||
project = CCorePlugin.getDefault().createCProject(description, newProjectHandle, new NullProgressMonitor(), MakeCorePlugin.MAKE_PROJECT_ID);
|
workspace.setDescription(workspaceDesc);
|
||||||
|
IProjectDescription description = workspace.newProjectDescription(newProjectHandle.getName());
|
||||||
|
//description.setLocation(root.getLocation());
|
||||||
|
project = CCorePlugin.getDefault().createCProject(description, newProjectHandle, new NullProgressMonitor(), MakeCorePlugin.MAKE_PROJECT_ID);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
newProjectHandle.refreshLocal(IResource.DEPTH_INFINITE, null);
|
newProjectHandle.refreshLocal(IResource.DEPTH_INFINITE, null);
|
||||||
project = newProjectHandle;
|
project = newProjectHandle;
|
||||||
|
@ -94,15 +114,20 @@ public class ManagedBuildTestHelper {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static public IProject createProject(String projectName, File zip) throws CoreException, InvocationTargetException, IOException {
|
static public IProject createProject(String projectName, File zip, IPath location, String projectTypeId) throws CoreException, InvocationTargetException, IOException {
|
||||||
IWorkspaceRoot root= ResourcesPlugin.getWorkspace().getRoot();
|
IWorkspaceRoot root= ResourcesPlugin.getWorkspace().getRoot();
|
||||||
IProject project= root.getProject(projectName);
|
IProject project= root.getProject(projectName);
|
||||||
if (project.exists())
|
if (project.exists())
|
||||||
removeProject(projectName);
|
removeProject(projectName);
|
||||||
|
|
||||||
importFilesFromZip(new ZipFile(zip),project.getFullPath(),null);
|
IPath destPath = (location != null) ?
|
||||||
|
location :
|
||||||
|
project.getFullPath();
|
||||||
|
if (zip != null) {
|
||||||
|
importFilesFromZip(new ZipFile(zip), destPath, null);
|
||||||
|
}
|
||||||
|
|
||||||
return createProject(projectName);
|
return createProject(projectName, location, ManagedBuilderCorePlugin.MANAGED_MAKE_PROJECT_ID, projectTypeId);
|
||||||
}
|
}
|
||||||
|
|
||||||
static public void importFilesFromZip(ZipFile srcZipFile, IPath destPath, IProgressMonitor monitor) throws InvocationTargetException {
|
static public void importFilesFromZip(ZipFile srcZipFile, IPath destPath, IProgressMonitor monitor) throws InvocationTargetException {
|
||||||
|
@ -116,6 +141,234 @@ public class ManagedBuildTestHelper {
|
||||||
op.run(monitor);
|
op.run(monitor);
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
// should not happen
|
// should not happen
|
||||||
|
Assert.assertTrue(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
static public IProject createNewManagedProject(IProject newProjectHandle, String name, IPath location,
|
||||||
|
String projectId, String projectTypeId) throws CoreException {
|
||||||
|
// Create the base project
|
||||||
|
IProject project = null;
|
||||||
|
IWorkspace workspace = ResourcesPlugin.getWorkspace();
|
||||||
|
IWorkspaceDescription workspaceDesc = workspace.getDescription();
|
||||||
|
workspaceDesc.setAutoBuilding(false);
|
||||||
|
workspace.setDescription(workspaceDesc);
|
||||||
|
IProjectDescription description = workspace.newProjectDescription(newProjectHandle.getName());
|
||||||
|
if (location != null) {
|
||||||
|
description.setLocation(location);
|
||||||
|
}
|
||||||
|
project = CCorePlugin.getDefault().createCProject(description, newProjectHandle, new NullProgressMonitor(), projectId);
|
||||||
|
// Add the managed build nature and builder
|
||||||
|
addManagedBuildNature(project);
|
||||||
|
|
||||||
|
// Find the base project type definition
|
||||||
|
IProjectType[] projTypes = ManagedBuildManager.getDefinedProjectTypes();
|
||||||
|
IProjectType projType = ManagedBuildManager.getProjectType(projectTypeId);
|
||||||
|
Assert.assertNotNull(projType);
|
||||||
|
|
||||||
|
// Create the managed-project (.cdtbuild) for our project that builds an executable.
|
||||||
|
IManagedProject newProject = null;
|
||||||
|
try {
|
||||||
|
newProject = ManagedBuildManager.createManagedProject(project, projType);
|
||||||
|
} catch (Exception e) {
|
||||||
|
Assert.fail("Failed to create managed project for: " + project.getName());
|
||||||
|
}
|
||||||
|
Assert.assertEquals(newProject.getName(), projType.getName());
|
||||||
|
Assert.assertFalse(newProject.equals(projType));
|
||||||
|
ManagedBuildManager.setNewProjectVersion(project);
|
||||||
|
// Copy over the configs
|
||||||
|
IConfiguration defaultConfig = null;
|
||||||
|
IConfiguration[] configs = projType.getConfigurations();
|
||||||
|
for (int i = 0; i < configs.length; ++i) {
|
||||||
|
// Make the first configuration the default
|
||||||
|
if (i == 0) {
|
||||||
|
defaultConfig = newProject.createConfiguration(configs[i], projType.getId() + "." + i);
|
||||||
|
} else {
|
||||||
|
newProject.createConfiguration(configs[i], projType.getId() + "." + i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ManagedBuildManager.setDefaultConfiguration(project, defaultConfig);
|
||||||
|
|
||||||
|
// Initialize the path entry container
|
||||||
|
IStatus initResult = ManagedBuildManager.initBuildInfoContainer(project);
|
||||||
|
if (initResult.getCode() != IStatus.OK) {
|
||||||
|
Assert.fail("Initializing build information failed for: " + project.getName() + " because: " + initResult.getMessage());
|
||||||
|
}
|
||||||
|
return project;
|
||||||
|
}
|
||||||
|
|
||||||
|
static public void addManagedBuildNature (IProject project) {
|
||||||
|
// Create the buildinformation object for the project
|
||||||
|
IManagedBuildInfo info = ManagedBuildManager.createBuildInfo(project);
|
||||||
|
info.setValid(true);
|
||||||
|
|
||||||
|
// Add the managed build nature
|
||||||
|
try {
|
||||||
|
ManagedCProjectNature.addManagedNature(project, new NullProgressMonitor());
|
||||||
|
ManagedCProjectNature.addManagedBuilder(project, new NullProgressMonitor());
|
||||||
|
} catch (CoreException e) {
|
||||||
|
Assert.fail("Test failed on adding managed build nature or builder: " + e.getLocalizedMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Associate the project with the managed builder so the clients can get proper information
|
||||||
|
ICDescriptor desc = null;
|
||||||
|
try {
|
||||||
|
desc = CCorePlugin.getDefault().getCProjectDescription(project, true);
|
||||||
|
desc.remove(CCorePlugin.BUILD_SCANNER_INFO_UNIQ_ID);
|
||||||
|
desc.create(CCorePlugin.BUILD_SCANNER_INFO_UNIQ_ID, ManagedBuildManager.INTERFACE_IDENTITY);
|
||||||
|
} catch (CoreException e) {
|
||||||
|
Assert.fail("Test failed on adding managed builder as scanner info provider: " + e.getLocalizedMessage());
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
desc.saveProjectData();
|
||||||
|
} catch (CoreException e) {
|
||||||
|
Assert.fail("Test failed on saving the ICDescriptor data: " + e.getLocalizedMessage()); }
|
||||||
|
}
|
||||||
|
|
||||||
|
static public void compareBenchmarks(IProject project, IPath testDir, IPath[] files) {
|
||||||
|
try {
|
||||||
|
project.refreshLocal(IResource.DEPTH_INFINITE, null);
|
||||||
|
} catch (Exception e) {
|
||||||
|
Assert.fail("File " + files[0].lastSegment() + " - project refresh failed.");
|
||||||
|
}
|
||||||
|
for (int i=0; i<files.length; i++) {
|
||||||
|
IPath testFile = testDir.append(files[i]);
|
||||||
|
IPath benchmarkFile = Path.fromOSString("Benchmarks/" + files[i]);
|
||||||
|
StringBuffer testBuffer = readContentsStripLineEnds(project, testFile);
|
||||||
|
StringBuffer benchmarkBuffer = readContentsStripLineEnds(project, benchmarkFile);
|
||||||
|
if (!testBuffer.toString().equals(benchmarkBuffer.toString())) {
|
||||||
|
Assert.fail("File " + testFile.lastSegment() + " does not match its benchmark.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static public StringBuffer readContentsStripLineEnds(IProject project, IPath path) {
|
||||||
|
StringBuffer buff = new StringBuffer();
|
||||||
|
IFile file = project.getFile(path);
|
||||||
|
IWorkspaceRoot root = project.getWorkspace().getRoot();
|
||||||
|
IPath fullPath = root.getLocation();
|
||||||
|
fullPath = fullPath.append(file.getFullPath());
|
||||||
|
try {
|
||||||
|
FileReader input = null;
|
||||||
|
try {
|
||||||
|
input = new FileReader(fullPath.toFile());
|
||||||
|
} catch (Exception e) {
|
||||||
|
Assert.fail("File " + fullPath.toString() + " could not be read.");
|
||||||
|
}
|
||||||
|
//InputStream input = file.getContents(true);
|
||||||
|
int c;
|
||||||
|
do {
|
||||||
|
c = input.read();
|
||||||
|
if (c == -1) break;
|
||||||
|
if (c != '\r' && c != '\n') {
|
||||||
|
buff.append((char)c);
|
||||||
|
}
|
||||||
|
} while (c != -1);
|
||||||
|
input.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
Assert.fail("File " + file.toString() + " could not be read.");
|
||||||
|
}
|
||||||
|
return buff;
|
||||||
|
}
|
||||||
|
|
||||||
|
static public IPath copyFilesToTempDir(IPath srcDir, IPath tmpSubDir, IPath[] files) {
|
||||||
|
IPath tmpSrcDir = null;
|
||||||
|
String userDirStr = System.getProperty("user.home");
|
||||||
|
if (userDirStr != null) {
|
||||||
|
IPath userDir = Path.fromOSString(userDirStr);
|
||||||
|
tmpSrcDir = userDir.append(tmpSubDir);
|
||||||
|
if (userDir.toString().equalsIgnoreCase(tmpSrcDir.toString())) {
|
||||||
|
Assert.fail("Temporary sub-directory cannot be the empty string.");
|
||||||
|
} else {
|
||||||
|
File tmpSrcDirFile = tmpSrcDir.toFile();
|
||||||
|
if (tmpSrcDirFile.exists()) {
|
||||||
|
// Make sure that this is the expected directory before we delete it...
|
||||||
|
if (tmpSrcDir.lastSegment().equals(tmpSubDir.lastSegment())) {
|
||||||
|
deleteDirectory(tmpSrcDirFile);
|
||||||
|
} else {
|
||||||
|
Assert.fail("Temporary directory " + tmpSrcDirFile.toString() + " already exists.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
boolean succeed = tmpSrcDirFile.mkdir();
|
||||||
|
if (succeed) {
|
||||||
|
for (int i=0; i<files.length; i++) {
|
||||||
|
IPath file = files[i];
|
||||||
|
IPath srcFile = srcDir.append(file);
|
||||||
|
FileReader srcReader = null;
|
||||||
|
try {
|
||||||
|
srcReader = new FileReader(srcFile.toFile());
|
||||||
|
} catch (Exception e) {
|
||||||
|
Assert.fail("File " + file.toString() + " could not be read.");
|
||||||
|
}
|
||||||
|
if (file.segmentCount() > 1) {
|
||||||
|
IPath newDir = tmpSrcDir;
|
||||||
|
do {
|
||||||
|
IPath dir = file.uptoSegment(1);
|
||||||
|
newDir = newDir.append(dir);
|
||||||
|
file = file.removeFirstSegments(1);
|
||||||
|
succeed = newDir.toFile().mkdir();
|
||||||
|
} while (file.segmentCount() > 1);
|
||||||
|
}
|
||||||
|
IPath destFile = tmpSrcDir.append(files[i]);
|
||||||
|
FileWriter writer = null;
|
||||||
|
try {
|
||||||
|
writer = new FileWriter(destFile.toFile());
|
||||||
|
} catch (Exception e) {
|
||||||
|
Assert.fail("File " + files[i].toString() + " could not be written.");
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
int c;
|
||||||
|
do {
|
||||||
|
c = srcReader.read();
|
||||||
|
if (c == -1) break;
|
||||||
|
writer.write(c);
|
||||||
|
} while (c != -1);
|
||||||
|
srcReader.close();
|
||||||
|
writer.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
Assert.fail("File " + file.toString() + " could not be copied.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return tmpSrcDir;
|
||||||
|
}
|
||||||
|
|
||||||
|
static public void deleteTempDir(IPath tmpSubDir, IPath[] files) {
|
||||||
|
IPath tmpSrcDir = null;
|
||||||
|
String userDirStr = System.getProperty("user.home");
|
||||||
|
if (userDirStr != null) {
|
||||||
|
IPath userDir = Path.fromOSString(userDirStr);
|
||||||
|
tmpSrcDir = userDir.append(tmpSubDir);
|
||||||
|
if (userDir.toString().equalsIgnoreCase(tmpSrcDir.toString())) {
|
||||||
|
Assert.fail("Temporary sub-directory cannot be the empty string.");
|
||||||
|
} else {
|
||||||
|
File tmpSrcDirFile = tmpSrcDir.toFile();
|
||||||
|
if (!tmpSrcDirFile.exists()) {
|
||||||
|
Assert.fail("Temporary directory " + tmpSrcDirFile.toString() + " does not exist.");
|
||||||
|
} else {
|
||||||
|
boolean succeed;
|
||||||
|
for (int i=0; i<files.length; i++) {
|
||||||
|
// Delete the file
|
||||||
|
IPath thisFile = tmpSrcDir.append(files[i]);
|
||||||
|
succeed = thisFile.toFile().delete();
|
||||||
|
}
|
||||||
|
// Delete the dir
|
||||||
|
succeed = tmpSrcDirFile.delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static private void deleteDirectory(File dir) {
|
||||||
|
File[] toDelete = dir.listFiles();
|
||||||
|
for (int i=0; i<toDelete.length; i++) {
|
||||||
|
File fileToDelete = toDelete[i];
|
||||||
|
if (fileToDelete.isDirectory()) {
|
||||||
|
deleteDirectory(fileToDelete);
|
||||||
|
}
|
||||||
|
fileToDelete.delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* Copyright (c) 2004 IBM Corporation and others.
|
* Copyright (c) 2004, 2005 IBM Corporation and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Common Public License v1.0
|
* are made available under the terms of the Common Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -16,6 +16,7 @@ import org.eclipse.cdt.managedbuild.core.tests.ManagedBuildCoreTests20;
|
||||||
import org.eclipse.cdt.managedbuild.core.tests.ManagedCommandLineGeneratorTest;
|
import org.eclipse.cdt.managedbuild.core.tests.ManagedCommandLineGeneratorTest;
|
||||||
import org.eclipse.cdt.managedbuild.core.tests.ManagedProjectUpdateTests;
|
import org.eclipse.cdt.managedbuild.core.tests.ManagedProjectUpdateTests;
|
||||||
import org.eclipse.cdt.managedbuild.core.tests.ResourceBuildCoreTests;
|
import org.eclipse.cdt.managedbuild.core.tests.ResourceBuildCoreTests;
|
||||||
|
import org.eclipse.cdt.managedbuild.core.tests.ManagedProject21MakefileTests;
|
||||||
|
|
||||||
import junit.framework.Test;
|
import junit.framework.Test;
|
||||||
import junit.framework.TestSuite;
|
import junit.framework.TestSuite;
|
||||||
|
@ -38,6 +39,7 @@ public class AllManagedBuildTests {
|
||||||
suite.addTest(ManagedProjectUpdateTests.suite());
|
suite.addTest(ManagedProjectUpdateTests.suite());
|
||||||
suite.addTest(ManagedCommandLineGeneratorTest.suite());
|
suite.addTest(ManagedCommandLineGeneratorTest.suite());
|
||||||
suite.addTest(ResourceBuildCoreTests.suite());
|
suite.addTest(ResourceBuildCoreTests.suite());
|
||||||
|
suite.addTest(ManagedProject21MakefileTests.suite());
|
||||||
//$JUnit-END$
|
//$JUnit-END$
|
||||||
return suite;
|
return suite;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* Copyright (c) 2004 IBM Corporation and others.
|
* Copyright (c) 2004, 2005 IBM Corporation and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Common Public License v1.0
|
* are made available under the terms of the Common Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -18,6 +18,7 @@ import junit.framework.TestCase;
|
||||||
import org.eclipse.cdt.core.CCProjectNature;
|
import org.eclipse.cdt.core.CCProjectNature;
|
||||||
import org.eclipse.cdt.core.CCorePlugin;
|
import org.eclipse.cdt.core.CCorePlugin;
|
||||||
import org.eclipse.cdt.core.parser.IScannerInfo;
|
import org.eclipse.cdt.core.parser.IScannerInfo;
|
||||||
|
import org.eclipse.cdt.make.core.MakeCorePlugin;
|
||||||
import org.eclipse.cdt.make.core.MakeProjectNature;
|
import org.eclipse.cdt.make.core.MakeProjectNature;
|
||||||
import org.eclipse.cdt.make.core.scannerconfig.ScannerConfigNature;
|
import org.eclipse.cdt.make.core.scannerconfig.ScannerConfigNature;
|
||||||
import org.eclipse.cdt.make.internal.core.scannerconfig2.PerProjectSICollector;
|
import org.eclipse.cdt.make.internal.core.scannerconfig2.PerProjectSICollector;
|
||||||
|
@ -25,6 +26,7 @@ import org.eclipse.cdt.managedbuilder.testplugin.ManagedBuildTestHelper;
|
||||||
import org.eclipse.core.resources.IFile;
|
import org.eclipse.core.resources.IFile;
|
||||||
import org.eclipse.core.resources.IProject;
|
import org.eclipse.core.resources.IProject;
|
||||||
import org.eclipse.core.runtime.CoreException;
|
import org.eclipse.core.runtime.CoreException;
|
||||||
|
import org.eclipse.core.runtime.IPath;
|
||||||
import org.eclipse.core.runtime.IProgressMonitor;
|
import org.eclipse.core.runtime.IProgressMonitor;
|
||||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||||
|
|
||||||
|
@ -48,7 +50,7 @@ public class ScannerConfigDiscoveryTests extends TestCase {
|
||||||
protected void setUp() throws Exception {
|
protected void setUp() throws Exception {
|
||||||
fMonitor = new NullProgressMonitor();
|
fMonitor = new NullProgressMonitor();
|
||||||
|
|
||||||
fCProject = ManagedBuildTestHelper.createProject("SCD");
|
fCProject = ManagedBuildTestHelper.createProject("SCD", (IPath)null, MakeCorePlugin.MAKE_PROJECT_ID, null);
|
||||||
fCFile = fCProject.getProject().getFile("main.c");
|
fCFile = fCProject.getProject().getFile("main.c");
|
||||||
if (!fCFile.exists()) {
|
if (!fCFile.exists()) {
|
||||||
fCFile.create(new ByteArrayInputStream(" \n".getBytes()), false, fMonitor);
|
fCFile.create(new ByteArrayInputStream(" \n".getBytes()), false, fMonitor);
|
||||||
|
|
|
@ -54,11 +54,11 @@ public class ManagedBuildCoreTests extends TestCase {
|
||||||
*/
|
*/
|
||||||
public void testLoadManifest() throws Exception {
|
public void testLoadManifest() throws Exception {
|
||||||
IProjectType[] projTypes = ManagedBuildManager.getDefinedProjectTypes();
|
IProjectType[] projTypes = ManagedBuildManager.getDefinedProjectTypes();
|
||||||
exeType = ManagedBuildManager.getProjectType("cdt.managedbuild.target.testgnu.exe");
|
exeType = ManagedBuildManager.getProjectType("cdt.managedbuild.target.testgnu21.exe");
|
||||||
checkExeProjectType(exeType);
|
checkExeProjectType(exeType);
|
||||||
dllType = ManagedBuildManager.getProjectType("cdt.managedbuild.target.testgnu.so");
|
dllType = ManagedBuildManager.getProjectType("cdt.managedbuild.target.testgnu21.so");
|
||||||
checkSoProjectType(dllType);
|
checkSoProjectType(dllType);
|
||||||
libType = ManagedBuildManager.getProjectType("cdt.managedbuild.target.testgnu.lib");
|
libType = ManagedBuildManager.getProjectType("cdt.managedbuild.target.testgnu21.lib");
|
||||||
checkLibProjectType(libType);
|
checkLibProjectType(libType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,6 @@ import junit.framework.TestCase;
|
||||||
import junit.framework.TestSuite;
|
import junit.framework.TestSuite;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.CCorePlugin;
|
import org.eclipse.cdt.core.CCorePlugin;
|
||||||
import org.eclipse.cdt.core.ICDescriptor;
|
|
||||||
import org.eclipse.cdt.core.parser.CodeReader;
|
import org.eclipse.cdt.core.parser.CodeReader;
|
||||||
import org.eclipse.cdt.core.parser.IParser;
|
import org.eclipse.cdt.core.parser.IParser;
|
||||||
import org.eclipse.cdt.core.parser.IScanner;
|
import org.eclipse.cdt.core.parser.IScanner;
|
||||||
|
@ -62,6 +61,7 @@ import org.eclipse.core.runtime.IStatus;
|
||||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||||
import org.eclipse.core.runtime.Path;
|
import org.eclipse.core.runtime.Path;
|
||||||
import org.eclipse.core.runtime.Platform;
|
import org.eclipse.core.runtime.Platform;
|
||||||
|
import org.eclipse.cdt.managedbuilder.testplugin.ManagedBuildTestHelper;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* These tests exercise CDT 2.0 manifest file functionality
|
* These tests exercise CDT 2.0 manifest file functionality
|
||||||
|
@ -505,7 +505,7 @@ public class ManagedBuildCoreTests20 extends TestCase {
|
||||||
try {
|
try {
|
||||||
project = createProject(projectName);
|
project = createProject(projectName);
|
||||||
// Now associate the builder with the project
|
// Now associate the builder with the project
|
||||||
addManagedBuildNature(project);
|
ManagedBuildTestHelper.addManagedBuildNature(project);
|
||||||
IProjectDescription description = project.getDescription();
|
IProjectDescription description = project.getDescription();
|
||||||
// Make sure it has a managed nature
|
// Make sure it has a managed nature
|
||||||
if (description != null) {
|
if (description != null) {
|
||||||
|
@ -731,34 +731,6 @@ public class ManagedBuildCoreTests20 extends TestCase {
|
||||||
assertEquals(4, i);
|
assertEquals(4, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addManagedBuildNature (IProject project) {
|
|
||||||
// Create the buildinformation object for the project
|
|
||||||
IManagedBuildInfo info = ManagedBuildManager.createBuildInfo(project);
|
|
||||||
info.setValid(true);
|
|
||||||
|
|
||||||
// Add the managed build nature
|
|
||||||
try {
|
|
||||||
ManagedCProjectNature.addManagedNature(project, new NullProgressMonitor());
|
|
||||||
ManagedCProjectNature.addManagedBuilder(project, new NullProgressMonitor());
|
|
||||||
} catch (CoreException e) {
|
|
||||||
fail("Test failed on adding managed build nature or builder: " + e.getLocalizedMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Associate the project with the managed builder so the clients can get proper information
|
|
||||||
ICDescriptor desc = null;
|
|
||||||
try {
|
|
||||||
desc = CCorePlugin.getDefault().getCProjectDescription(project, true);
|
|
||||||
desc.remove(CCorePlugin.BUILD_SCANNER_INFO_UNIQ_ID);
|
|
||||||
desc.create(CCorePlugin.BUILD_SCANNER_INFO_UNIQ_ID, ManagedBuildManager.INTERFACE_IDENTITY);
|
|
||||||
} catch (CoreException e) {
|
|
||||||
fail("Test failed on adding managed builder as scanner info provider: " + e.getLocalizedMessage());
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
desc.saveProjectData();
|
|
||||||
} catch (CoreException e) {
|
|
||||||
fail("Test failed on saving the ICDescriptor data: " + e.getLocalizedMessage()); }
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests the tool settings through the interface the makefile generator
|
* Tests the tool settings through the interface the makefile generator
|
||||||
* uses.
|
* uses.
|
||||||
|
@ -1772,7 +1744,7 @@ public class ManagedBuildCoreTests20 extends TestCase {
|
||||||
try {
|
try {
|
||||||
project = createProject(projectName2);
|
project = createProject(projectName2);
|
||||||
// Now associate the builder with the project
|
// Now associate the builder with the project
|
||||||
addManagedBuildNature(project);
|
ManagedBuildTestHelper.addManagedBuildNature(project);
|
||||||
IProjectDescription description = project.getDescription();
|
IProjectDescription description = project.getDescription();
|
||||||
// Make sure it has a managed nature
|
// Make sure it has a managed nature
|
||||||
if (description != null) {
|
if (description != null) {
|
||||||
|
|
|
@ -0,0 +1,307 @@
|
||||||
|
/**********************************************************************
|
||||||
|
* Copyright (c) 2005 Intel Corporation and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Common Public License v1.0
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/cpl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* Intel Corporation - Initial API and implementation
|
||||||
|
**********************************************************************/
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
* These tests are for a 2.1 style tool integration. That is, the
|
||||||
|
* tool integration does not use any 3.0 elements or attributes,
|
||||||
|
* including InputType, OutputType, etc.
|
||||||
|
**********************************************************************/
|
||||||
|
|
||||||
|
package org.eclipse.cdt.managedbuild.core.tests;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileFilter;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import junit.framework.Test;
|
||||||
|
import junit.framework.TestCase;
|
||||||
|
import junit.framework.TestSuite;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
|
||||||
|
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
|
||||||
|
import org.eclipse.cdt.managedbuilder.projectconverter.UpdateManagedProjectManager;
|
||||||
|
import org.eclipse.cdt.managedbuilder.testplugin.CTestPlugin;
|
||||||
|
import org.eclipse.cdt.managedbuilder.testplugin.ManagedBuildTestHelper;
|
||||||
|
import org.eclipse.core.resources.*;
|
||||||
|
import org.eclipse.core.runtime.CoreException;
|
||||||
|
import org.eclipse.core.runtime.IPath;
|
||||||
|
import org.eclipse.core.runtime.OperationCanceledException;
|
||||||
|
import org.eclipse.core.runtime.Path;
|
||||||
|
import org.eclipse.ui.dialogs.IOverwriteQuery;
|
||||||
|
|
||||||
|
public class ManagedProject21MakefileTests extends TestCase {
|
||||||
|
public static final String MBS_TEMP_DIR = "MBSTemp";
|
||||||
|
|
||||||
|
static boolean pathVariableCreated = false;
|
||||||
|
|
||||||
|
public ManagedProject21MakefileTests(String name) {
|
||||||
|
super(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Test suite() {
|
||||||
|
TestSuite suite = new TestSuite(ManagedProject21MakefileTests.class.getName());
|
||||||
|
|
||||||
|
suite.addTest(new ManagedProject21MakefileTests("testSingleFileExe"));
|
||||||
|
suite.addTest(new ManagedProject21MakefileTests("testTwoFileSO"));
|
||||||
|
suite.addTest(new ManagedProject21MakefileTests("testMultiResConfig"));
|
||||||
|
//suite.addTest(new ManagedProject21MakefileTests("testLinkedLib"));
|
||||||
|
//suite.addTest(new ManagedProject21MakefileTests("testLinkedFolder"));
|
||||||
|
|
||||||
|
return suite;
|
||||||
|
}
|
||||||
|
|
||||||
|
private IProject[] createProject(String projName, IPath location, String projectTypeId, boolean containsZip){
|
||||||
|
File testDir = CTestPlugin.getFileInPlugin(new Path("resources/test21Projects/" + projName));
|
||||||
|
if(testDir == null) {
|
||||||
|
fail("Test project directory " + testDir.getName() + " is missing.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
ArrayList projectList = null;
|
||||||
|
if (containsZip) {
|
||||||
|
File projectZips[] = testDir.listFiles(new FileFilter(){
|
||||||
|
public boolean accept(File pathname){
|
||||||
|
if(pathname.isDirectory())
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
projectList = new ArrayList(projectZips.length);
|
||||||
|
for(int i = 0; i < projectZips.length; i++){
|
||||||
|
try{
|
||||||
|
String projectName = projectZips[i].getName();
|
||||||
|
if(!projectName.endsWith(".zip"))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
projectName = projectName.substring(0,projectName.length()-".zip".length());
|
||||||
|
if(projectName.length() == 0)
|
||||||
|
continue;
|
||||||
|
IProject project = ManagedBuildTestHelper.createProject(projectName, projectZips[i], location, projectTypeId);
|
||||||
|
if(project != null)
|
||||||
|
projectList.add(project);
|
||||||
|
}
|
||||||
|
catch(Exception e){
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(projectList.size() == 0) {
|
||||||
|
fail("No projects found in test project directory " + testDir.getName() + ". The .zip file may be missing or corrupt.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
try{
|
||||||
|
IProject project = ManagedBuildTestHelper.createProject(projName, null, location, projectTypeId);
|
||||||
|
if(project != null)
|
||||||
|
projectList = new ArrayList(1);
|
||||||
|
projectList.add(project);
|
||||||
|
} catch(Exception e){}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (IProject[])projectList.toArray(new IProject[projectList.size()]);
|
||||||
|
}
|
||||||
|
|
||||||
|
private IProject[] createProjects(String projName, IPath location, String projectTypeId, boolean containsZip) {
|
||||||
|
|
||||||
|
// In case the projects need to be updated...
|
||||||
|
IOverwriteQuery queryALL = new IOverwriteQuery(){
|
||||||
|
public String queryOverwrite(String file) {
|
||||||
|
return ALL;
|
||||||
|
}};
|
||||||
|
IOverwriteQuery queryNOALL = new IOverwriteQuery(){
|
||||||
|
public String queryOverwrite(String file) {
|
||||||
|
return NO_ALL;
|
||||||
|
}};
|
||||||
|
|
||||||
|
UpdateManagedProjectManager.setBackupFileOverwriteQuery(queryALL);
|
||||||
|
UpdateManagedProjectManager.setUpdateProjectQuery(queryALL);
|
||||||
|
|
||||||
|
IProject projects[] = createProject(projName, location, projectTypeId, containsZip);
|
||||||
|
return projects;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buildProjects(IProject projects[], IPath[] files) {
|
||||||
|
if(projects == null || projects.length == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for(int i = 0; i < projects.length; i++){
|
||||||
|
IProject curProject = projects[i];
|
||||||
|
|
||||||
|
IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(curProject);
|
||||||
|
|
||||||
|
//check whether the managed build info is converted
|
||||||
|
boolean isCompatible = UpdateManagedProjectManager.isCompatibleProject(info);
|
||||||
|
assertTrue(isCompatible);
|
||||||
|
|
||||||
|
if(isCompatible){
|
||||||
|
// Build the project in order to generate the maekfiles
|
||||||
|
try{
|
||||||
|
curProject.build(IncrementalProjectBuilder.INCREMENTAL_BUILD,null);
|
||||||
|
}
|
||||||
|
catch(CoreException e){
|
||||||
|
fail(e.getStatus().getMessage());
|
||||||
|
}
|
||||||
|
catch(OperationCanceledException e){
|
||||||
|
fail("the project \"" + curProject.getName() + "\" build was cancelled, exception message: " + e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
//compare the generated makefiles to their benchmarks
|
||||||
|
if (files != null && files.length > 0) {
|
||||||
|
if (i == 0) {
|
||||||
|
String configName = info.getDefaultConfiguration().getName();
|
||||||
|
IPath buildDir = Path.fromOSString(configName);
|
||||||
|
ManagedBuildTestHelper.compareBenchmarks(curProject, buildDir, files);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i = 0; i < projects.length; i++)
|
||||||
|
ManagedBuildTestHelper.removeProject(projects[i].getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createPathVariable(IPath tmpDir) {
|
||||||
|
IWorkspace workspace = ResourcesPlugin.getWorkspace();
|
||||||
|
workspace = ResourcesPlugin.getWorkspace();
|
||||||
|
IPathVariableManager pathMan = workspace.getPathVariableManager();
|
||||||
|
String name = MBS_TEMP_DIR;
|
||||||
|
try {
|
||||||
|
if (pathMan.validateName(name).isOK() && pathMan.validateValue(tmpDir).isOK()) {
|
||||||
|
pathMan.setValue(name, tmpDir);
|
||||||
|
} else {
|
||||||
|
fail("could not create the path variable " + name);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {fail("could not create the path variable " + name);}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createFileLink(IProject project, IPath tmpDir, String linkName, String fileName) {
|
||||||
|
IWorkspace workspace = ResourcesPlugin.getWorkspace();
|
||||||
|
String name = MBS_TEMP_DIR;
|
||||||
|
if (!pathVariableCreated) {
|
||||||
|
createPathVariable(tmpDir);
|
||||||
|
pathVariableCreated = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Now we can create a linked resource relative to the defined path variable:
|
||||||
|
IFile linkF1 = project.getFile(linkName);
|
||||||
|
IPath location = new Path("MBSTemp/" + fileName);
|
||||||
|
if (workspace.validateLinkLocation(linkF1, location).isOK()) {
|
||||||
|
linkF1.createLink(location, IResource.NONE, null);
|
||||||
|
} else {
|
||||||
|
fail("could not create the link to " + name);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {fail("could not create the link to " + name);}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* tests 2.1 style tool integration for a single file executable
|
||||||
|
*/
|
||||||
|
public void testSingleFileExe(){
|
||||||
|
IPath[] makefiles = {
|
||||||
|
Path.fromOSString("makefile"),
|
||||||
|
Path.fromOSString("objects.mk"),
|
||||||
|
Path.fromOSString("sources.mk"),
|
||||||
|
Path.fromOSString("subdir.mk")};
|
||||||
|
IProject[] projects = createProjects("singleFileExe", null, null, true);
|
||||||
|
buildProjects(projects, makefiles);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* tests 2.1 style tool integration for a two file SO
|
||||||
|
*/
|
||||||
|
public void testTwoFileSO(){
|
||||||
|
IPath[] makefiles = {
|
||||||
|
Path.fromOSString("makefile"),
|
||||||
|
Path.fromOSString("objects.mk"),
|
||||||
|
Path.fromOSString("sources.mk"),
|
||||||
|
Path.fromOSString("subdir.mk")};
|
||||||
|
IProject[] projects = createProjects("twoFileSO", null, null, true);
|
||||||
|
buildProjects(projects, makefiles);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* tests 2.1 style tool integration for multiple source files & a resource configuration
|
||||||
|
*/
|
||||||
|
public void testMultiResConfig(){
|
||||||
|
IPath[] makefiles = {
|
||||||
|
Path.fromOSString("makefile"),
|
||||||
|
Path.fromOSString("objects.mk"),
|
||||||
|
Path.fromOSString("sources.mk"),
|
||||||
|
Path.fromOSString("subdir.mk"),
|
||||||
|
Path.fromOSString("source1/subdir.mk"),
|
||||||
|
Path.fromOSString("source2/subdir.mk"),
|
||||||
|
Path.fromOSString("source2/source21/subdir.mk")};
|
||||||
|
IProject[] projects = createProjects("multiResConfig", null, null, true);
|
||||||
|
buildProjects(projects, makefiles);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* tests 2.1 style tool integration for linked files
|
||||||
|
*/
|
||||||
|
public void testLinkedLib(){
|
||||||
|
IPath[] makefiles = {
|
||||||
|
Path.fromOSString("makefile"),
|
||||||
|
Path.fromOSString("objects.mk"),
|
||||||
|
//Path.fromOSString("subdir.mk") // Can't compare this yet since it contains absolute paths!
|
||||||
|
Path.fromOSString("sources.mk")};
|
||||||
|
IPath[] linkedFiles = {
|
||||||
|
Path.fromOSString("f1.c"),
|
||||||
|
Path.fromOSString("f2.c"),
|
||||||
|
Path.fromOSString("test_ar.h")};
|
||||||
|
File srcDirFile = CTestPlugin.getFileInPlugin(new Path("resources/test21Projects/linkedLib/"));
|
||||||
|
IPath srcDir = Path.fromOSString(srcDirFile.toString());
|
||||||
|
IPath tmpSubDir = Path.fromOSString("CDTMBSTest");
|
||||||
|
IPath tmpDir = ManagedBuildTestHelper.copyFilesToTempDir(srcDir, tmpSubDir, linkedFiles);
|
||||||
|
try {
|
||||||
|
IProject[] projects = createProjects("linkedLib", null, "cdt.managedbuild.target.testgnu21.lib", true);
|
||||||
|
// There should be only one project. Add our linked files to it.
|
||||||
|
IProject project = projects[0];
|
||||||
|
createFileLink(project, tmpDir, "f1.c", "f1.c");
|
||||||
|
createFileLink(project, tmpDir, "f2link.c", "f2.c");
|
||||||
|
createFileLink(project, tmpDir, "test_ar.h", "test_ar.h");
|
||||||
|
// Build the project
|
||||||
|
buildProjects(projects, makefiles);
|
||||||
|
} finally {ManagedBuildTestHelper.deleteTempDir(tmpSubDir, linkedFiles);}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* tests 2.1 style tool integration for a linked folder
|
||||||
|
*/
|
||||||
|
public void testLinkedFolder(){
|
||||||
|
IPath[] makefiles = {
|
||||||
|
Path.fromOSString("makefile"),
|
||||||
|
Path.fromOSString("objects.mk"),
|
||||||
|
Path.fromOSString("subdir.mk"),
|
||||||
|
Path.fromOSString("sources.mk")};
|
||||||
|
IPath[] linkedFiles = {
|
||||||
|
Path.fromOSString("f1.c"),
|
||||||
|
Path.fromOSString("f2.c"),
|
||||||
|
Path.fromOSString("test_ar.h"),
|
||||||
|
Path.fromOSString("Benchmarks/makefile"),
|
||||||
|
Path.fromOSString("Benchmarks/objects.mk"),
|
||||||
|
Path.fromOSString("Benchmarks/subdir.mk"),
|
||||||
|
Path.fromOSString("Benchmarks/sources.mk")};
|
||||||
|
File srcDirFile = CTestPlugin.getFileInPlugin(new Path("resources/test21Projects/linkedFolder/"));
|
||||||
|
IPath srcDir = Path.fromOSString(srcDirFile.toString());
|
||||||
|
IPath tmpSubDir = Path.fromOSString("CDTMBSTest");
|
||||||
|
IPath tmpDir = ManagedBuildTestHelper.copyFilesToTempDir(srcDir, tmpSubDir, linkedFiles);
|
||||||
|
if (!pathVariableCreated) {
|
||||||
|
createPathVariable(tmpDir);
|
||||||
|
pathVariableCreated = true;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
IPath location = Path.fromOSString(MBS_TEMP_DIR);
|
||||||
|
IProject[] projects = createProjects("linkedFolder", location, "cdt.managedbuild.target.testgnu21.lib", false);
|
||||||
|
// Build the project
|
||||||
|
buildProjects(projects, makefiles);
|
||||||
|
} finally {ManagedBuildTestHelper.deleteTempDir(tmpSubDir, linkedFiles);}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* Copyright (c) 2004 Intel Corporation and others.
|
* Copyright (c) 2004, 2005 Intel Corporation and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Common Public License v1.0
|
* are made available under the terms of the Common Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -26,6 +26,7 @@ import org.eclipse.cdt.managedbuilder.testplugin.ManagedBuildTestHelper;
|
||||||
import org.eclipse.core.resources.IProject;
|
import org.eclipse.core.resources.IProject;
|
||||||
import org.eclipse.core.resources.IncrementalProjectBuilder;
|
import org.eclipse.core.resources.IncrementalProjectBuilder;
|
||||||
import org.eclipse.core.runtime.CoreException;
|
import org.eclipse.core.runtime.CoreException;
|
||||||
|
import org.eclipse.core.runtime.IPath;
|
||||||
import org.eclipse.core.runtime.OperationCanceledException;
|
import org.eclipse.core.runtime.OperationCanceledException;
|
||||||
import org.eclipse.core.runtime.Path;
|
import org.eclipse.core.runtime.Path;
|
||||||
import org.eclipse.ui.dialogs.IOverwriteQuery;
|
import org.eclipse.ui.dialogs.IOverwriteQuery;
|
||||||
|
@ -40,8 +41,10 @@ public class ManagedProjectUpdateTests extends TestCase {
|
||||||
|
|
||||||
suite.addTest(new ManagedProjectUpdateTests("testProjectUpdate12_Update"));
|
suite.addTest(new ManagedProjectUpdateTests("testProjectUpdate12_Update"));
|
||||||
suite.addTest(new ManagedProjectUpdateTests("testProjectUpdate20_Update"));
|
suite.addTest(new ManagedProjectUpdateTests("testProjectUpdate20_Update"));
|
||||||
|
suite.addTest(new ManagedProjectUpdateTests("testProjectUpdate21_Update"));
|
||||||
suite.addTest(new ManagedProjectUpdateTests("testProjectUpdate12_NoUpdate"));
|
suite.addTest(new ManagedProjectUpdateTests("testProjectUpdate12_NoUpdate"));
|
||||||
suite.addTest(new ManagedProjectUpdateTests("testProjectUpdate20_NoUpdate"));
|
suite.addTest(new ManagedProjectUpdateTests("testProjectUpdate20_NoUpdate"));
|
||||||
|
suite.addTest(new ManagedProjectUpdateTests("testProjectUpdate21_NoUpdate"));
|
||||||
|
|
||||||
return suite;
|
return suite;
|
||||||
}
|
}
|
||||||
|
@ -75,7 +78,7 @@ public class ManagedProjectUpdateTests extends TestCase {
|
||||||
projectName = projectName.substring(0,projectName.length()-".zip".length());
|
projectName = projectName.substring(0,projectName.length()-".zip".length());
|
||||||
if(projectName.length() == 0)
|
if(projectName.length() == 0)
|
||||||
continue;
|
continue;
|
||||||
IProject project = ManagedBuildTestHelper.createProject(projectName,projectZips[i]);
|
IProject project = ManagedBuildTestHelper.createProject(projectName, projectZips[i], null, null);
|
||||||
if(project != null)
|
if(project != null)
|
||||||
projectList.add(project);
|
projectList.add(project);
|
||||||
}
|
}
|
||||||
|
@ -89,7 +92,8 @@ public class ManagedProjectUpdateTests extends TestCase {
|
||||||
return (IProject[])projectList.toArray(new IProject[projectList.size()]);
|
return (IProject[])projectList.toArray(new IProject[projectList.size()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void doTestProjectUpdate(String version, boolean updateProject, boolean overwriteBackupFiles){
|
private void doTestProjectUpdate(String version, boolean updateProject, boolean overwriteBackupFiles,
|
||||||
|
IPath[] files){
|
||||||
IOverwriteQuery queryALL = new IOverwriteQuery(){
|
IOverwriteQuery queryALL = new IOverwriteQuery(){
|
||||||
public String queryOverwrite(String file) {
|
public String queryOverwrite(String file) {
|
||||||
return ALL;
|
return ALL;
|
||||||
|
@ -99,8 +103,8 @@ public class ManagedProjectUpdateTests extends TestCase {
|
||||||
return NO_ALL;
|
return NO_ALL;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
UpdateManagedProjectManager.setBackupFileOverwriteQuery(updateProject ? queryALL : queryNOALL);
|
UpdateManagedProjectManager.setBackupFileOverwriteQuery(overwriteBackupFiles ? queryALL : queryNOALL);
|
||||||
UpdateManagedProjectManager.setUpdateProjectQuery(overwriteBackupFiles ? queryALL : queryNOALL);
|
UpdateManagedProjectManager.setUpdateProjectQuery(updateProject ? queryALL : queryNOALL);
|
||||||
|
|
||||||
IProject projects[] = createVersionProjects(version);
|
IProject projects[] = createVersionProjects(version);
|
||||||
if(projects == null || projects.length == 0)
|
if(projects == null || projects.length == 0)
|
||||||
|
@ -132,6 +136,15 @@ public class ManagedProjectUpdateTests extends TestCase {
|
||||||
catch(OperationCanceledException e){
|
catch(OperationCanceledException e){
|
||||||
fail("the project \"" + curProject.getName() + "\" build was cancelled, exception message: " + e.getMessage());
|
fail("the project \"" + curProject.getName() + "\" build was cancelled, exception message: " + e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//compare the generated makefiles to their benchmarks
|
||||||
|
if (files != null && files.length > 0) {
|
||||||
|
if (i == 0) {
|
||||||
|
String configName = info.getDefaultConfiguration().getName();
|
||||||
|
IPath buildDir = Path.fromOSString(configName);
|
||||||
|
ManagedBuildTestHelper.compareBenchmarks(curProject, buildDir, files);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -144,7 +157,12 @@ public class ManagedProjectUpdateTests extends TestCase {
|
||||||
* in case when user chooses to update the project
|
* in case when user chooses to update the project
|
||||||
*/
|
*/
|
||||||
public void testProjectUpdate12_Update(){
|
public void testProjectUpdate12_Update(){
|
||||||
doTestProjectUpdate("1.2",true,true);
|
IPath[] makefiles = {
|
||||||
|
Path.fromOSString("makefile"),
|
||||||
|
Path.fromOSString("objects.mk"),
|
||||||
|
Path.fromOSString("sources.mk"),
|
||||||
|
Path.fromOSString("subdir.mk")};
|
||||||
|
doTestProjectUpdate("1.2", true, true, makefiles);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
@ -152,7 +170,26 @@ public class ManagedProjectUpdateTests extends TestCase {
|
||||||
* in case when user chooses to update the project
|
* in case when user chooses to update the project
|
||||||
*/
|
*/
|
||||||
public void testProjectUpdate20_Update(){
|
public void testProjectUpdate20_Update(){
|
||||||
doTestProjectUpdate("2.0",true,true);
|
IPath[] makefiles = {
|
||||||
|
Path.fromOSString("makefile"),
|
||||||
|
Path.fromOSString("objects.mk"),
|
||||||
|
Path.fromOSString("sources.mk"),
|
||||||
|
Path.fromOSString("subdir.mk")};
|
||||||
|
doTestProjectUpdate("2.0", true, true, makefiles);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* tests project v2.1 update
|
||||||
|
* in case when user chooses to update the project
|
||||||
|
*/
|
||||||
|
public void testProjectUpdate21_Update(){
|
||||||
|
IPath[] makefiles = {
|
||||||
|
Path.fromOSString("makefile"),
|
||||||
|
Path.fromOSString("objects.mk"),
|
||||||
|
Path.fromOSString("sources.mk"),
|
||||||
|
Path.fromOSString("subdir.mk"),
|
||||||
|
Path.fromOSString("Functions/subdir.mk")};
|
||||||
|
doTestProjectUpdate("2.1", true, true, makefiles);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
@ -160,7 +197,7 @@ public class ManagedProjectUpdateTests extends TestCase {
|
||||||
* in case when user chooses not to update the project
|
* in case when user chooses not to update the project
|
||||||
*/
|
*/
|
||||||
public void testProjectUpdate12_NoUpdate(){
|
public void testProjectUpdate12_NoUpdate(){
|
||||||
doTestProjectUpdate("1.2",false,true);
|
doTestProjectUpdate("1.2", false, true, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
@ -168,6 +205,14 @@ public class ManagedProjectUpdateTests extends TestCase {
|
||||||
* in case when user chooses not to update the project
|
* in case when user chooses not to update the project
|
||||||
*/
|
*/
|
||||||
public void testProjectUpdate20_NoUpdate(){
|
public void testProjectUpdate20_NoUpdate(){
|
||||||
doTestProjectUpdate("2.0",false,true);
|
doTestProjectUpdate("2.0", false, true, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* tests project v2.1 update
|
||||||
|
* in case when user chooses not to update the project
|
||||||
|
*/
|
||||||
|
public void testProjectUpdate21_NoUpdate(){
|
||||||
|
doTestProjectUpdate("2.1", false, true, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,6 @@ import junit.framework.TestCase;
|
||||||
import junit.framework.TestSuite;
|
import junit.framework.TestSuite;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.CCorePlugin;
|
import org.eclipse.cdt.core.CCorePlugin;
|
||||||
import org.eclipse.cdt.core.ICDescriptor;
|
|
||||||
import org.eclipse.cdt.make.core.MakeCorePlugin;
|
import org.eclipse.cdt.make.core.MakeCorePlugin;
|
||||||
import org.eclipse.cdt.managedbuilder.core.BuildException;
|
import org.eclipse.cdt.managedbuilder.core.BuildException;
|
||||||
import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
|
import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
|
||||||
|
@ -31,6 +30,7 @@ import org.eclipse.cdt.managedbuilder.core.IOptionCategory;
|
||||||
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
|
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
|
||||||
import org.eclipse.cdt.managedbuilder.core.ManagedCProjectNature;
|
import org.eclipse.cdt.managedbuilder.core.ManagedCProjectNature;
|
||||||
import org.eclipse.cdt.managedbuilder.internal.core.Tool;
|
import org.eclipse.cdt.managedbuilder.internal.core.Tool;
|
||||||
|
import org.eclipse.cdt.managedbuilder.testplugin.ManagedBuildTestHelper;
|
||||||
import org.eclipse.core.resources.IFile;
|
import org.eclipse.core.resources.IFile;
|
||||||
import org.eclipse.core.resources.IProject;
|
import org.eclipse.core.resources.IProject;
|
||||||
import org.eclipse.core.resources.IProjectDescription;
|
import org.eclipse.core.resources.IProjectDescription;
|
||||||
|
@ -84,7 +84,7 @@ public class ResourceBuildCoreTests extends TestCase {
|
||||||
project = createProject(projectName);
|
project = createProject(projectName);
|
||||||
|
|
||||||
// Now associate the builder with the project
|
// Now associate the builder with the project
|
||||||
addManagedBuildNature(project);
|
ManagedBuildTestHelper.addManagedBuildNature(project);
|
||||||
IProjectDescription description = project.getDescription();
|
IProjectDescription description = project.getDescription();
|
||||||
// Make sure it has a managed nature
|
// Make sure it has a managed nature
|
||||||
if (description != null) {
|
if (description != null) {
|
||||||
|
@ -97,7 +97,7 @@ public class ResourceBuildCoreTests extends TestCase {
|
||||||
|
|
||||||
// Find the base project type definition
|
// Find the base project type definition
|
||||||
IProjectType[] projTypes = ManagedBuildManager.getDefinedProjectTypes();
|
IProjectType[] projTypes = ManagedBuildManager.getDefinedProjectTypes();
|
||||||
IProjectType projType = ManagedBuildManager.getProjectType("cdt.managedbuild.target.testgnu.exe");
|
IProjectType projType = ManagedBuildManager.getProjectType("cdt.managedbuild.target.testgnu21.exe");
|
||||||
assertNotNull(projType);
|
assertNotNull(projType);
|
||||||
|
|
||||||
// Create the managed-project (.cdtbuild) for our project that builds an executable.
|
// Create the managed-project (.cdtbuild) for our project that builds an executable.
|
||||||
|
@ -271,7 +271,7 @@ public class ResourceBuildCoreTests extends TestCase {
|
||||||
project = createProject(projectName);
|
project = createProject(projectName);
|
||||||
|
|
||||||
// Now associate the builder with the project
|
// Now associate the builder with the project
|
||||||
addManagedBuildNature(project);
|
ManagedBuildTestHelper.addManagedBuildNature(project);
|
||||||
IProjectDescription description = project.getDescription();
|
IProjectDescription description = project.getDescription();
|
||||||
// Make sure it has a managed nature
|
// Make sure it has a managed nature
|
||||||
if (description != null) {
|
if (description != null) {
|
||||||
|
@ -284,7 +284,7 @@ public class ResourceBuildCoreTests extends TestCase {
|
||||||
|
|
||||||
// Find the base project type definition
|
// Find the base project type definition
|
||||||
IProjectType[] projTypes = ManagedBuildManager.getDefinedProjectTypes();
|
IProjectType[] projTypes = ManagedBuildManager.getDefinedProjectTypes();
|
||||||
IProjectType projType = ManagedBuildManager.getProjectType("cdt.managedbuild.target.testgnu.exe");
|
IProjectType projType = ManagedBuildManager.getProjectType("cdt.managedbuild.target.testgnu21.exe");
|
||||||
assertNotNull(projType);
|
assertNotNull(projType);
|
||||||
|
|
||||||
// Create the managed-project (.cdtbuild) for our project that builds an executable.
|
// Create the managed-project (.cdtbuild) for our project that builds an executable.
|
||||||
|
@ -372,7 +372,7 @@ public class ResourceBuildCoreTests extends TestCase {
|
||||||
project = createProject(projectName);
|
project = createProject(projectName);
|
||||||
|
|
||||||
// Now associate the builder with the project
|
// Now associate the builder with the project
|
||||||
addManagedBuildNature(project);
|
ManagedBuildTestHelper.addManagedBuildNature(project);
|
||||||
IProjectDescription description = project.getDescription();
|
IProjectDescription description = project.getDescription();
|
||||||
// Make sure it has a managed nature
|
// Make sure it has a managed nature
|
||||||
if (description != null) {
|
if (description != null) {
|
||||||
|
@ -385,7 +385,7 @@ public class ResourceBuildCoreTests extends TestCase {
|
||||||
|
|
||||||
// Find the base project type definition
|
// Find the base project type definition
|
||||||
IProjectType[] projTypes = ManagedBuildManager.getDefinedProjectTypes();
|
IProjectType[] projTypes = ManagedBuildManager.getDefinedProjectTypes();
|
||||||
IProjectType projType = ManagedBuildManager.getProjectType("cdt.managedbuild.target.testgnu.exe");
|
IProjectType projType = ManagedBuildManager.getProjectType("cdt.managedbuild.target.testgnu21.exe");
|
||||||
assertNotNull(projType);
|
assertNotNull(projType);
|
||||||
|
|
||||||
// Create the managed-project (.cdtbuild) for our project that builds an executable.
|
// Create the managed-project (.cdtbuild) for our project that builds an executable.
|
||||||
|
@ -624,7 +624,7 @@ public class ResourceBuildCoreTests extends TestCase {
|
||||||
try {
|
try {
|
||||||
project = createProject(projectName);
|
project = createProject(projectName);
|
||||||
// Now associate the builder with the project
|
// Now associate the builder with the project
|
||||||
addManagedBuildNature(project);
|
ManagedBuildTestHelper.addManagedBuildNature(project);
|
||||||
IProjectDescription description = project.getDescription();
|
IProjectDescription description = project.getDescription();
|
||||||
// Make sure it has a managed nature
|
// Make sure it has a managed nature
|
||||||
if (description != null) {
|
if (description != null) {
|
||||||
|
@ -637,7 +637,7 @@ public class ResourceBuildCoreTests extends TestCase {
|
||||||
|
|
||||||
// Find the base project type definition
|
// Find the base project type definition
|
||||||
IProjectType[] projTypes = ManagedBuildManager.getDefinedProjectTypes();
|
IProjectType[] projTypes = ManagedBuildManager.getDefinedProjectTypes();
|
||||||
IProjectType projType = ManagedBuildManager.getProjectType("cdt.managedbuild.target.testgnu.exe");
|
IProjectType projType = ManagedBuildManager.getProjectType("cdt.managedbuild.target.testgnu21.exe");
|
||||||
assertNotNull(projType);
|
assertNotNull(projType);
|
||||||
|
|
||||||
// Create the managed-project (.cdtbuild) for our project that builds a dummy executable
|
// Create the managed-project (.cdtbuild) for our project that builds a dummy executable
|
||||||
|
@ -711,34 +711,5 @@ public class ResourceBuildCoreTests extends TestCase {
|
||||||
// checkBuildTestSettings(info);
|
// checkBuildTestSettings(info);
|
||||||
ManagedBuildManager.removeBuildInfo(project);
|
ManagedBuildManager.removeBuildInfo(project);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addManagedBuildNature (IProject project) {
|
|
||||||
// Create the buildinformation object for the project
|
|
||||||
IManagedBuildInfo info = ManagedBuildManager.createBuildInfo(project);
|
|
||||||
info.setValid(true);
|
|
||||||
|
|
||||||
// Add the managed build nature
|
|
||||||
try {
|
|
||||||
ManagedCProjectNature.addManagedNature(project, new NullProgressMonitor());
|
|
||||||
// ManagedCProjectNature.addManagedBuilder(project, new NullProgressMonitor());
|
|
||||||
} catch (CoreException e) {
|
|
||||||
fail("Test failed on adding managed build nature or builder: " + e.getLocalizedMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Associate the project with the managed builder so the clients can get proper information
|
|
||||||
ICDescriptor desc = null;
|
|
||||||
try {
|
|
||||||
desc = CCorePlugin.getDefault().getCProjectDescription(project, true);
|
|
||||||
desc.remove(CCorePlugin.BUILD_SCANNER_INFO_UNIQ_ID);
|
|
||||||
desc.create(CCorePlugin.BUILD_SCANNER_INFO_UNIQ_ID, ManagedBuildManager.INTERFACE_IDENTITY);
|
|
||||||
} catch (CoreException e) {
|
|
||||||
fail("Test failed on adding managed builder as scanner info provider: " + e.getLocalizedMessage());
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
desc.saveProjectData();
|
|
||||||
} catch (CoreException e) {
|
|
||||||
fail("Test failed on saving the ICDescriptor data: " + e.getLocalizedMessage()); }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Copyright (c) 2003, 2004 IBM Corporation and others.
|
# Copyright (c) 2003, 2005 IBM Corporation and others.
|
||||||
# All rights reserved. This program and the accompanying materials
|
# All rights reserved. This program and the accompanying materials
|
||||||
# are made available under the terms of the Common Public License v1.0
|
# are made available under the terms of the Common Public License v1.0
|
||||||
# which accompanies this distribution, and is available at
|
# which accompanies this distribution, and is available at
|
||||||
|
@ -13,4 +13,9 @@ providerName=Eclipse.org
|
||||||
|
|
||||||
GeneratedMakefileCBuilder.name=Generated Makefile Builder
|
GeneratedMakefileCBuilder.name=Generated Makefile Builder
|
||||||
ManagedBuildNature.name=Managed Builder Project
|
ManagedBuildNature.name=Managed Builder Project
|
||||||
ManagedMakeProject.name=Managed Make Project
|
ManagedMakeProject.name=Managed Make Project
|
||||||
|
|
||||||
|
objectFileName=Object File
|
||||||
|
executableName=Executable File
|
||||||
|
staticLibraryName=Static Library
|
||||||
|
sharedLibraryName=Shared Library
|
||||||
|
|
|
@ -121,4 +121,46 @@
|
||||||
type="text"/>
|
type="text"/>
|
||||||
</extension>
|
</extension>
|
||||||
|
|
||||||
|
<!-- =================================================================================== -->
|
||||||
|
<!-- Define C/C++ "object" files ContentTypes -->
|
||||||
|
<!-- =================================================================================== -->
|
||||||
|
<extension point="org.eclipse.core.runtime.contentTypes">
|
||||||
|
<!-- declares a content type for object files -->
|
||||||
|
<content-type id="compiledObjectFile" name="%objectFileName"
|
||||||
|
priority="high"/>
|
||||||
|
<!-- declares a content type for executable files -->
|
||||||
|
<content-type id="executableFile" name="%executableName"
|
||||||
|
priority="high"/>
|
||||||
|
<!-- declares a content type for static libraries -->
|
||||||
|
<content-type id="staticLibrary" name="%staticLibraryName"
|
||||||
|
priority="high"/>
|
||||||
|
<!-- declares a content type for shared libraries -->
|
||||||
|
<content-type id="sharedLibrary" name="%sharedLibraryName"
|
||||||
|
priority="high"/>
|
||||||
|
</extension>
|
||||||
|
|
||||||
|
<extension point="org.eclipse.core.runtime.contentTypes">
|
||||||
|
<file-association
|
||||||
|
content-type="org.eclipse.cdt.managedbuilder.core.compiledObjectFile"
|
||||||
|
file-extensions="obj,o"/>
|
||||||
|
</extension>
|
||||||
|
|
||||||
|
<extension point="org.eclipse.core.runtime.contentTypes">
|
||||||
|
<file-association
|
||||||
|
content-type="org.eclipse.cdt.managedbuilder.core.executableFile"
|
||||||
|
file-extensions="exe,"/>
|
||||||
|
</extension>
|
||||||
|
|
||||||
|
<extension point="org.eclipse.core.runtime.contentTypes">
|
||||||
|
<file-association
|
||||||
|
content-type="org.eclipse.cdt.managedbuilder.core.staticLibrary"
|
||||||
|
file-extensions="lib,a"/>
|
||||||
|
</extension>
|
||||||
|
|
||||||
|
<extension point="org.eclipse.core.runtime.contentTypes">
|
||||||
|
<file-association
|
||||||
|
content-type="org.eclipse.cdt.managedbuilder.core.sharedLibrary"
|
||||||
|
file-extensions="dll,so"/>
|
||||||
|
</extension>
|
||||||
|
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
|
@ -1330,15 +1330,7 @@ If the "buildPathResolver" attribute is specified, the "pathDelim
|
||||||
<meta.section type="examples"/>
|
<meta.section type="examples"/>
|
||||||
</appInfo>
|
</appInfo>
|
||||||
<documentation>
|
<documentation>
|
||||||
The following is an example of the extension point usage:
|
[Enter examples here.]
|
||||||
<p>
|
|
||||||
<pre>
|
|
||||||
<extension
|
|
||||||
id="buildExample"
|
|
||||||
name="Definitions for Build Example"
|
|
||||||
point="org.eclipse.cdt.managedbuilder.core.buildDefinitions">
|
|
||||||
etc...
|
|
||||||
</pre>
|
|
||||||
</documentation>
|
</documentation>
|
||||||
</annotation>
|
</annotation>
|
||||||
|
|
||||||
|
|
|
@ -39,15 +39,15 @@ public interface IAdditionalInput {
|
||||||
public IInputType getParent();
|
public IInputType getParent();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a semi-colon separated list of the relative or absolute paths of the resources
|
* Returns an array of the relative or absolute paths of the resources
|
||||||
* to which this element applies.
|
* to which this element applies.
|
||||||
* The resources must be a member of the project, the output from another tool in the
|
* The resources must be a member of the project, the output from another tool in the
|
||||||
* tool-chain, or an external file. The file name of the path can use GNU Make pattern
|
* tool-chain, or an external file. The file name of the path can use GNU Make pattern
|
||||||
* rule syntax (in order to generate the name from the input file name).
|
* rule syntax (in order to generate the name from the input file name).
|
||||||
*
|
*
|
||||||
* @return String
|
* @return String[]
|
||||||
*/
|
*/
|
||||||
public String getPaths();
|
public String[] getPaths();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets semi-colon separated list of the relative or absolute paths of the resources to
|
* Sets semi-colon separated list of the relative or absolute paths of the resources to
|
||||||
|
|
|
@ -189,18 +189,18 @@ public interface IOutputType extends IBuildObject {
|
||||||
public void setOutputPrefix(String prefix);
|
public void setOutputPrefix(String prefix);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the paths of the complete set of output files for this outputType
|
* Returns the file names of the complete set of output files for this outputType
|
||||||
*
|
*
|
||||||
* @return String
|
* @return String[]
|
||||||
*/
|
*/
|
||||||
public String getOutputNames();
|
public String[] getOutputNames();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the complete set of output files for this outputType
|
* Sets the complete set of output file names for this outputType
|
||||||
*
|
*
|
||||||
* @param names
|
* @param names
|
||||||
*/
|
*/
|
||||||
public void getOutputNames(String names);
|
public void setOutputNames(String names);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the pattern, using the Gnu pattern rule syntax, for deriving the
|
* Returns the pattern, using the Gnu pattern rule syntax, for deriving the
|
||||||
|
|
|
@ -102,6 +102,20 @@ public interface ITool extends IBuildObject {
|
||||||
* @since 2.0
|
* @since 2.0
|
||||||
*/
|
*/
|
||||||
public IOption getOptionById(String id);
|
public IOption getOptionById(String id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the <code>IOption</code> in the receiver with the specified
|
||||||
|
* ID, or an option with a superclass with this id.
|
||||||
|
*
|
||||||
|
* <p>If the receiver does not have an option with that ID, the method
|
||||||
|
* returns <code>null</code>. It is the responsibility of the caller to
|
||||||
|
* verify the return value.
|
||||||
|
*
|
||||||
|
* @param id unique identifier of the option to search for
|
||||||
|
* @return <code>IOption</code>
|
||||||
|
* @since 3.0
|
||||||
|
*/
|
||||||
|
public IOption getOptionBySuperClassId(String id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the complete list of options that are available for this tool.
|
* Returns the complete list of options that are available for this tool.
|
||||||
|
@ -187,7 +201,8 @@ public interface ITool extends IBuildObject {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns all of the additional input resources of all InputType children.
|
* Returns all of the additional input resources of all InputType children.
|
||||||
* Note: This does not include additional dependencies.
|
* Note: This does not include the primary InputType and does not include
|
||||||
|
* additional dependencies.
|
||||||
*
|
*
|
||||||
* @return IPath[]
|
* @return IPath[]
|
||||||
*/
|
*/
|
||||||
|
@ -195,7 +210,8 @@ public interface ITool extends IBuildObject {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns all of the additional dependency resources of all InputType children.
|
* Returns all of the additional dependency resources of all InputType children.
|
||||||
* Note: This does not include additional inputs.
|
* Note: This does not include the primary InputType and does not include
|
||||||
|
* additional inputs.
|
||||||
*
|
*
|
||||||
* @return IPath[]
|
* @return IPath[]
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -264,18 +264,37 @@ public interface IToolChain extends IBuildObject {
|
||||||
public void setScannerConfigDiscoveryProfileId(String profileId);
|
public void setScannerConfigDiscoveryProfileId(String profileId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the id in this tool-chain that creates the build artifact.
|
* Returns the sem-colon separated list of Tool ids containing each
|
||||||
|
* tool that can create the final build artifact (the end target of
|
||||||
|
* the build). MBS will use the first ID in the list that matches
|
||||||
|
* a Tool in the ToolChain. One reason for specifying a list, is
|
||||||
|
* that different versions of a tool can be selected based upon the
|
||||||
|
* project nature (e.g. different tool definitions for a linker for C vs. C++).
|
||||||
*
|
*
|
||||||
* @return String
|
* @return String
|
||||||
*/
|
*/
|
||||||
public String getTargetToolId();
|
public String getTargetToolIds();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the tool in this tool-chain that creates the build artifact.
|
* Sets the sem-colon separated list of Tool ids containing each
|
||||||
|
* tool that can create the final build artifact (the end target of
|
||||||
|
* the build).
|
||||||
*
|
*
|
||||||
* @param targetToolId
|
* @param targetToolIds
|
||||||
*/
|
*/
|
||||||
public void setTargetTool(String targetToolId);
|
public void setTargetToolIds(String targetToolIds);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the list of Tool ids containing each
|
||||||
|
* tool that can create the final build artifact (the end target of
|
||||||
|
* the build). MBS will use the first ID in the list that matches
|
||||||
|
* a Tool in the ToolChain. One reason for specifying a list, is
|
||||||
|
* that different versions of a tool can be selected based upon the
|
||||||
|
* project nature (e.g. different tool definitions for a linker for C vs. C++).
|
||||||
|
*
|
||||||
|
* @return String[]
|
||||||
|
*/
|
||||||
|
public String[] getTargetToolList();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the OutputTypes in this tool-chain, besides the primary
|
* Returns the OutputTypes in this tool-chain, besides the primary
|
||||||
|
|
|
@ -114,8 +114,8 @@ public class ManagedBuildManager extends AbstractCExtension implements IScannerI
|
||||||
public static final String MANIFEST_ERROR_DUPLICATE = "ManagedBuildManager.error.manifest.duplicate"; //$NON-NLS-1$
|
public static final String MANIFEST_ERROR_DUPLICATE = "ManagedBuildManager.error.manifest.duplicate"; //$NON-NLS-1$
|
||||||
private static final String NEWLINE = System.getProperty("line.separator"); //$NON-NLS-1$
|
private static final String NEWLINE = System.getProperty("line.separator"); //$NON-NLS-1$
|
||||||
|
|
||||||
// This is the version of the manifest and project files that
|
// This is the version of the manifest and project files
|
||||||
private static final PluginVersionIdentifier buildInfoVersion = new PluginVersionIdentifier(2, 1, 0);
|
private static final PluginVersionIdentifier buildInfoVersion = new PluginVersionIdentifier(3, 0, 0);
|
||||||
private static Map depCalculatorsMap;
|
private static Map depCalculatorsMap;
|
||||||
private static boolean projectTypesLoaded = false;
|
private static boolean projectTypesLoaded = false;
|
||||||
// Project types defined in the manifest files
|
// Project types defined in the manifest files
|
||||||
|
@ -1291,11 +1291,7 @@ public class ManagedBuildManager extends AbstractCExtension implements IScannerI
|
||||||
// This is a 1.2 manifest and we are compatible for now
|
// This is a 1.2 manifest and we are compatible for now
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
// isCompatibleWith will return FALSE, if:
|
return(buildInfoVersion.isGreaterOrEqualTo(version));
|
||||||
// o The major versions are not equal
|
|
||||||
// o The major versions are equal, but the remainder of the manifest version # is
|
|
||||||
// greater than the MBS version #
|
|
||||||
return(buildInfoVersion.isCompatibleWith(version));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
@ -1322,20 +1318,21 @@ public class ManagedBuildManager extends AbstractCExtension implements IScannerI
|
||||||
// Since 2.0 this will be a processing instruction containing version
|
// Since 2.0 this will be a processing instruction containing version
|
||||||
if (rootElement.getNodeType() != Node.PROCESSING_INSTRUCTION_NODE) {
|
if (rootElement.getNodeType() != Node.PROCESSING_INSTRUCTION_NODE) {
|
||||||
// This is a 1.2 project and it must be updated
|
// This is a 1.2 project and it must be updated
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// Make sure that the version is compatible with the manager
|
// Make sure that the version is compatible with the manager
|
||||||
fileVersion = rootElement.getNodeValue();
|
fileVersion = rootElement.getNodeValue();
|
||||||
PluginVersionIdentifier version = new PluginVersionIdentifier(fileVersion);
|
PluginVersionIdentifier version = new PluginVersionIdentifier(fileVersion);
|
||||||
// isCompatibleWith will return FALSE, if:
|
|
||||||
// o The major versions are not equal
|
|
||||||
// o The major versions are equal, but the remainder of the .cdtbuild version # is
|
|
||||||
// greater than the MBS version #
|
|
||||||
if (!buildInfoVersion.isCompatibleWith(version)) {
|
|
||||||
throw new BuildException(ManagedMakeMessages.getFormattedString(PROJECT_VERSION_ERROR, project.getName()));
|
|
||||||
}
|
|
||||||
if (buildInfoVersion.isGreaterThan(version)) {
|
if (buildInfoVersion.isGreaterThan(version)) {
|
||||||
// TODO Upgrade the project
|
// This is >= 2.0 project, but earlier than the current MBS version - it may need to be updated
|
||||||
|
} else {
|
||||||
|
// This is a
|
||||||
|
// isCompatibleWith will return FALSE, if:
|
||||||
|
// o The major versions are not equal
|
||||||
|
// o The major versions are equal, but the remainder of the .cdtbuild version # is
|
||||||
|
// greater than the MBS version #
|
||||||
|
if (!buildInfoVersion.isCompatibleWith(version)) {
|
||||||
|
throw new BuildException(ManagedMakeMessages.getFormattedString(PROJECT_VERSION_ERROR, project.getName()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -210,8 +210,12 @@ public class AdditionalInput implements IAdditionalInput {
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.core.build.managed.IAdditionalInput#getPaths()
|
* @see org.eclipse.cdt.core.build.managed.IAdditionalInput#getPaths()
|
||||||
*/
|
*/
|
||||||
public String getPaths() {
|
public String[] getPaths() {
|
||||||
return paths;
|
if (paths == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
String[] nameTokens = paths.split(";"); //$NON-NLS-1$
|
||||||
|
return nameTokens;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
@ -229,6 +233,9 @@ public class AdditionalInput implements IAdditionalInput {
|
||||||
* @see org.eclipse.cdt.core.build.managed.IAdditionalInput#getKind()
|
* @see org.eclipse.cdt.core.build.managed.IAdditionalInput#getKind()
|
||||||
*/
|
*/
|
||||||
public int getKind() {
|
public int getKind() {
|
||||||
|
if (kind == null) {
|
||||||
|
return KIND_ADDITIONAL_INPUT_DEPENDENCY;
|
||||||
|
}
|
||||||
return kind.intValue();
|
return kind.intValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -642,22 +642,26 @@ public class Configuration extends BuildObject implements IConfiguration {
|
||||||
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#getTargetTool()
|
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#getTargetTool()
|
||||||
*/
|
*/
|
||||||
public ITool getTargetTool() {
|
public ITool getTargetTool() {
|
||||||
String targetToolId = toolChain.getTargetToolId();
|
String[] targetToolIds = toolChain.getTargetToolList();
|
||||||
if (targetToolId == null) return null;
|
if (targetToolIds == null || targetToolIds.length == 0) return null;
|
||||||
|
|
||||||
// Look for a tool with this ID, or a tool with a superclass with this id
|
// For each target tool id, in list order,
|
||||||
|
// look for a tool with this ID, or a tool with a superclass with this id.
|
||||||
|
// Stop when we find a match
|
||||||
ITool[] tools = getFilteredTools();
|
ITool[] tools = getFilteredTools();
|
||||||
for (int i = 0; i < tools.length; i++) {
|
for (int i=0; i<targetToolIds.length; i++) {
|
||||||
ITool targetTool = tools[i];
|
String targetToolId = targetToolIds[i];
|
||||||
ITool tool = targetTool;
|
for (int j=0; j<tools.length; j++) {
|
||||||
do {
|
ITool targetTool = tools[j];
|
||||||
if (targetToolId.equals(tool.getId())) {
|
ITool tool = targetTool;
|
||||||
return targetTool;
|
do {
|
||||||
}
|
if (targetToolId.equals(tool.getId())) {
|
||||||
tool = tool.getSuperClass();
|
return targetTool;
|
||||||
} while (tool != null);
|
}
|
||||||
|
tool = tool.getSuperClass();
|
||||||
|
} while (tool != null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -595,7 +595,7 @@ public class InputType extends BuildObject implements IInputType {
|
||||||
while (iter.hasNext()) {
|
while (iter.hasNext()) {
|
||||||
AdditionalInput ai = (AdditionalInput) iter.next();
|
AdditionalInput ai = (AdditionalInput) iter.next();
|
||||||
boolean match = false;
|
boolean match = false;
|
||||||
String[] tokens = ai.getPaths().split(";"); //$NON-NLS-1$
|
String[] tokens = ai.getPaths();
|
||||||
if (tokens.length == inputTokens.length) {
|
if (tokens.length == inputTokens.length) {
|
||||||
match = true;
|
match = true;
|
||||||
for (int i = 0; i < tokens.length; i++) {
|
for (int i = 0; i < tokens.length; i++) {
|
||||||
|
@ -637,11 +637,10 @@ public class InputType extends BuildObject implements IInputType {
|
||||||
int kind = current.getKind();
|
int kind = current.getKind();
|
||||||
if (kind == IAdditionalInput.KIND_ADDITIONAL_DEPENDENCY ||
|
if (kind == IAdditionalInput.KIND_ADDITIONAL_DEPENDENCY ||
|
||||||
kind == IAdditionalInput.KIND_ADDITIONAL_INPUT_DEPENDENCY) {
|
kind == IAdditionalInput.KIND_ADDITIONAL_INPUT_DEPENDENCY) {
|
||||||
String paths = current.getPaths();
|
String[] paths = current.getPaths();
|
||||||
if (paths != null) {
|
if (paths != null) {
|
||||||
String[] pathTokens = paths.split(";"); //$NON-NLS-1$
|
for (int i = 0; i < paths.length; i++) {
|
||||||
for (int i = 0; i < pathTokens.length; i++) {
|
deps.add(Path.fromOSString(paths[i]));
|
||||||
deps.add(Path.fromOSString(pathTokens[i]));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -660,11 +659,10 @@ public class InputType extends BuildObject implements IInputType {
|
||||||
int kind = current.getKind();
|
int kind = current.getKind();
|
||||||
if (kind == IAdditionalInput.KIND_ADDITIONAL_INPUT ||
|
if (kind == IAdditionalInput.KIND_ADDITIONAL_INPUT ||
|
||||||
kind == IAdditionalInput.KIND_ADDITIONAL_INPUT_DEPENDENCY) {
|
kind == IAdditionalInput.KIND_ADDITIONAL_INPUT_DEPENDENCY) {
|
||||||
String paths = current.getPaths();
|
String[] paths = current.getPaths();
|
||||||
if (paths != null) {
|
if (paths != null) {
|
||||||
String[] pathTokens = paths.split(";"); //$NON-NLS-1$
|
for (int i = 0; i < paths.length; i++) {
|
||||||
for (int i = 0; i < pathTokens.length; i++) {
|
ins.add(Path.fromOSString(paths[i]));
|
||||||
ins.add(Path.fromOSString(pathTokens[i]));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -440,13 +440,12 @@ public class ManagedBuildInfo implements IManagedBuildInfo, IScannerInfo {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//add paths specified in the environment
|
||||||
|
String envIncludePaths[] = ManagedBuildManager.getEnvironmentVariableProvider().getBuildPaths(config,IEnvVarBuildPath.BUILDPATH_INCLUDE);
|
||||||
|
if(envIncludePaths != null)
|
||||||
|
paths.addAll(Arrays.asList(envIncludePaths));
|
||||||
}
|
}
|
||||||
|
|
||||||
//add paths specified in the environment
|
|
||||||
String envIncludePaths[] = ManagedBuildManager.getEnvironmentVariableProvider().getBuildPaths(config,IEnvVarBuildPath.BUILDPATH_INCLUDE);
|
|
||||||
if(envIncludePaths != null)
|
|
||||||
paths.addAll(Arrays.asList(envIncludePaths));
|
|
||||||
|
|
||||||
// Answer the results as an array
|
// Answer the results as an array
|
||||||
return (String[])paths.toArray(new String[paths.size()]);
|
return (String[])paths.toArray(new String[paths.size()]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -685,7 +685,7 @@ public class OutputType extends BuildObject implements IOutputType {
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.core.build.managed.IOuputType#getOutputNames()
|
* @see org.eclipse.cdt.core.build.managed.IOuputType#getOutputNames()
|
||||||
*/
|
*/
|
||||||
public String getOutputNames() {
|
public String[] getOutputNames() {
|
||||||
if (outputNames == null) {
|
if (outputNames == null) {
|
||||||
// If I have a superClass, ask it
|
// If I have a superClass, ask it
|
||||||
if (superClass != null) {
|
if (superClass != null) {
|
||||||
|
@ -694,14 +694,15 @@ public class OutputType extends BuildObject implements IOutputType {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return outputNames;
|
String[] nameTokens = outputNames.split(";"); //$NON-NLS-1$
|
||||||
|
return nameTokens;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.core.build.managed.IOuputType#setOutputNames()
|
* @see org.eclipse.cdt.core.build.managed.IOuputType#setOutputNames()
|
||||||
*/
|
*/
|
||||||
public void getOutputNames(String names) {
|
public void setOutputNames(String names) {
|
||||||
if (names == null && outputNames == null) return;
|
if (names == null && outputNames == null) return;
|
||||||
if (outputNames == null || names == null || !(names.equals(outputNames))) {
|
if (outputNames == null || names == null || !(names.equals(outputNames))) {
|
||||||
outputNames = names;
|
outputNames = names;
|
||||||
|
@ -713,14 +714,16 @@ public class OutputType extends BuildObject implements IOutputType {
|
||||||
* @see org.eclipse.cdt.core.build.managed.IOuputType#getPrimaryInputType()
|
* @see org.eclipse.cdt.core.build.managed.IOuputType#getPrimaryInputType()
|
||||||
*/
|
*/
|
||||||
public IInputType getPrimaryInputType() {
|
public IInputType getPrimaryInputType() {
|
||||||
if (primaryInputType == null) {
|
IInputType ret = primaryInputType;
|
||||||
|
if (ret == null) {
|
||||||
if (superClass != null) {
|
if (superClass != null) {
|
||||||
return superClass.getPrimaryInputType();
|
ret = superClass.getPrimaryInputType();
|
||||||
} else {
|
}
|
||||||
return null;
|
if (ret == null) {
|
||||||
|
ret = getParent().getPrimaryInputType();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return primaryInputType;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
|
|
@ -242,9 +242,11 @@ public class Tool extends BuildObject implements ITool, IOptionCategory {
|
||||||
} else if (toolElement.getNodeName().equals(ITool.OPTION_CAT)) {
|
} else if (toolElement.getNodeName().equals(ITool.OPTION_CAT)) {
|
||||||
new OptionCategory(this, (Element)toolElement);
|
new OptionCategory(this, (Element)toolElement);
|
||||||
} else if (toolElement.getNodeName().equals(ITool.INPUT_TYPE)) {
|
} else if (toolElement.getNodeName().equals(ITool.INPUT_TYPE)) {
|
||||||
new InputType(this, (Element)toolElement);
|
InputType inputType = new InputType(this, (Element)toolElement);
|
||||||
|
addInputType(inputType);
|
||||||
} else if (toolElement.getNodeName().equals(ITool.OUTPUT_TYPE)) {
|
} else if (toolElement.getNodeName().equals(ITool.OUTPUT_TYPE)) {
|
||||||
new OutputType(this, (Element)toolElement);
|
OutputType outputType = new OutputType(this, (Element)toolElement);
|
||||||
|
addOutputType(outputType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -923,6 +925,28 @@ public class Tool extends BuildObject implements ITool, IOptionCategory {
|
||||||
return opt;
|
return opt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.build.managed.ITool#getOptionBySuperClassId(java.lang.String)
|
||||||
|
*/
|
||||||
|
public IOption getOptionBySuperClassId(String optionId) {
|
||||||
|
if (optionId == null) return null;
|
||||||
|
|
||||||
|
// Look for an option with this ID, or an option with a superclass with this id
|
||||||
|
IOption[] options = getOptions();
|
||||||
|
for (int i = 0; i < options.length; i++) {
|
||||||
|
IOption targetOption = options[i];
|
||||||
|
IOption option = targetOption;
|
||||||
|
do {
|
||||||
|
if (optionId.equals(option.getId())) {
|
||||||
|
return targetOption;
|
||||||
|
}
|
||||||
|
option = option.getSuperClass();
|
||||||
|
} while (option != null);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.core.build.managed.IOptionCategory#getChildCategories()
|
* @see org.eclipse.cdt.core.build.managed.IOptionCategory#getChildCategories()
|
||||||
*/
|
*/
|
||||||
|
@ -973,7 +997,8 @@ public class Tool extends BuildObject implements ITool, IOptionCategory {
|
||||||
IInputType ourType = (IInputType)ourTypes.get(i);
|
IInputType ourType = (IInputType)ourTypes.get(i);
|
||||||
int j;
|
int j;
|
||||||
for (j = 0; j < types.length; j++) {
|
for (j = 0; j < types.length; j++) {
|
||||||
if (ourType.getSuperClass().getId().equals(types[j].getId())) {
|
if (ourType.getSuperClass() != null &&
|
||||||
|
ourType.getSuperClass().getId().equals(types[j].getId())) {
|
||||||
types[j] = ourType;
|
types[j] = ourType;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1045,7 +1070,8 @@ public class Tool extends BuildObject implements ITool, IOptionCategory {
|
||||||
IOutputType ourType = (IOutputType)ourTypes.get(i);
|
IOutputType ourType = (IOutputType)ourTypes.get(i);
|
||||||
int j;
|
int j;
|
||||||
for (j = 0; j < types.length; j++) {
|
for (j = 0; j < types.length; j++) {
|
||||||
if (ourType.getSuperClass().getId().equals(types[j].getId())) {
|
if (ourType.getSuperClass() != null &&
|
||||||
|
ourType.getSuperClass().getId().equals(types[j].getId())) {
|
||||||
types[j] = ourType;
|
types[j] = ourType;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1533,10 +1559,37 @@ public class Tool extends BuildObject implements ITool, IOptionCategory {
|
||||||
List allDeps = new ArrayList();
|
List allDeps = new ArrayList();
|
||||||
IInputType[] types = getInputTypes();
|
IInputType[] types = getInputTypes();
|
||||||
for (int i=0; i<types.length; i++) {
|
for (int i=0; i<types.length; i++) {
|
||||||
IPath[] deps = types[i].getAdditionalDependencies();
|
IInputType type = types[i];
|
||||||
|
// Additional dependencies come from 2 places.
|
||||||
|
// 1. From AdditionalInput childen
|
||||||
|
IPath[] deps = type.getAdditionalDependencies();
|
||||||
for (int j=0; j<deps.length; j++) {
|
for (int j=0; j<deps.length; j++) {
|
||||||
allDeps.add(deps[j]);
|
allDeps.add(deps[j]);
|
||||||
}
|
}
|
||||||
|
// 2. From InputTypes that other than the primary input type
|
||||||
|
if (!type.getPrimaryInput()) {
|
||||||
|
if (type.getOptionId() != null) {
|
||||||
|
IOption option = getOptionBySuperClassId(type.getOptionId());
|
||||||
|
if (option != null) {
|
||||||
|
try {
|
||||||
|
List inputs = new ArrayList();
|
||||||
|
int optType = option.getValueType();
|
||||||
|
if (optType == IOption.STRING) {
|
||||||
|
inputs.add(option.getStringValue());
|
||||||
|
} else if (
|
||||||
|
optType == IOption.STRING_LIST ||
|
||||||
|
optType == IOption.LIBRARIES ||
|
||||||
|
optType == IOption.OBJECTS) {
|
||||||
|
inputs = (List)option.getValue();
|
||||||
|
}
|
||||||
|
allDeps.addAll(inputs);
|
||||||
|
} catch( BuildException ex ) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (type.getBuildVariable() != null && type.getBuildVariable().length() > 0) {
|
||||||
|
allDeps.add("$(" + type.getBuildVariable() + ")"); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return (IPath[])allDeps.toArray(new IPath[allDeps.size()]);
|
return (IPath[])allDeps.toArray(new IPath[allDeps.size()]);
|
||||||
}
|
}
|
||||||
|
@ -1548,10 +1601,20 @@ public class Tool extends BuildObject implements ITool, IOptionCategory {
|
||||||
List allRes = new ArrayList();
|
List allRes = new ArrayList();
|
||||||
IInputType[] types = getInputTypes();
|
IInputType[] types = getInputTypes();
|
||||||
for (int i=0; i<types.length; i++) {
|
for (int i=0; i<types.length; i++) {
|
||||||
IPath[] res = types[i].getAdditionalResources();
|
IInputType type = types[i];
|
||||||
|
// Additional dependencies come from 2 places.
|
||||||
|
// 1. From AdditionalInput childen
|
||||||
|
IPath[] res = type.getAdditionalResources();
|
||||||
for (int j=0; j<res.length; j++) {
|
for (int j=0; j<res.length; j++) {
|
||||||
allRes.add(res[j]);
|
allRes.add(res[j]);
|
||||||
}
|
}
|
||||||
|
// 2. From InputTypes that other than the primary input type
|
||||||
|
if (!type.getPrimaryInput()) {
|
||||||
|
String var = type.getBuildVariable();
|
||||||
|
if (var != null && var.length() > 0) {
|
||||||
|
allRes.add("$(" + type.getBuildVariable() + ")"); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return (IPath[])allRes.toArray(new IPath[allRes.size()]);
|
return (IPath[])allRes.toArray(new IPath[allRes.size()]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,7 +54,7 @@ public class ToolChain extends BuildObject implements IToolChain {
|
||||||
private String errorParserIds;
|
private String errorParserIds;
|
||||||
private List osList;
|
private List osList;
|
||||||
private List archList;
|
private List archList;
|
||||||
private String targetToolId;
|
private String targetToolIds;
|
||||||
private String secondaryOutputIds;
|
private String secondaryOutputIds;
|
||||||
private Boolean isAbstract;
|
private Boolean isAbstract;
|
||||||
private String scannerConfigDiscoveryProfileId;
|
private String scannerConfigDiscoveryProfileId;
|
||||||
|
@ -216,8 +216,8 @@ public class ToolChain extends BuildObject implements IToolChain {
|
||||||
if (toolChain.archList != null) {
|
if (toolChain.archList != null) {
|
||||||
archList = new ArrayList(toolChain.archList);
|
archList = new ArrayList(toolChain.archList);
|
||||||
}
|
}
|
||||||
if (toolChain.targetToolId != null) {
|
if (toolChain.targetToolIds != null) {
|
||||||
targetToolId = new String(toolChain.targetToolId);
|
targetToolIds = new String(toolChain.targetToolIds);
|
||||||
}
|
}
|
||||||
if (toolChain.secondaryOutputIds != null) {
|
if (toolChain.secondaryOutputIds != null) {
|
||||||
secondaryOutputIds = new String(toolChain.secondaryOutputIds);
|
secondaryOutputIds = new String(toolChain.secondaryOutputIds);
|
||||||
|
@ -321,7 +321,7 @@ public class ToolChain extends BuildObject implements IToolChain {
|
||||||
secondaryOutputIds = element.getAttribute(SECONDARY_OUTPUTS);
|
secondaryOutputIds = element.getAttribute(SECONDARY_OUTPUTS);
|
||||||
|
|
||||||
// Get the target tool id
|
// Get the target tool id
|
||||||
targetToolId = element.getAttribute(TARGET_TOOL);
|
targetToolIds = element.getAttribute(TARGET_TOOL);
|
||||||
|
|
||||||
// Get the scanner config discovery profile id
|
// Get the scanner config discovery profile id
|
||||||
scannerConfigDiscoveryProfileId = element.getAttribute(SCANNER_CONFIG_PROFILE_ID);
|
scannerConfigDiscoveryProfileId = element.getAttribute(SCANNER_CONFIG_PROFILE_ID);
|
||||||
|
@ -415,7 +415,7 @@ public class ToolChain extends BuildObject implements IToolChain {
|
||||||
|
|
||||||
// Get the target tool id
|
// Get the target tool id
|
||||||
if (element.hasAttribute(TARGET_TOOL)) {
|
if (element.hasAttribute(TARGET_TOOL)) {
|
||||||
targetToolId = element.getAttribute(TARGET_TOOL);
|
targetToolIds = element.getAttribute(TARGET_TOOL);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the scanner config discovery profile id
|
// Get the scanner config discovery profile id
|
||||||
|
@ -490,8 +490,8 @@ public class ToolChain extends BuildObject implements IToolChain {
|
||||||
element.setAttribute(SECONDARY_OUTPUTS, secondaryOutputIds);
|
element.setAttribute(SECONDARY_OUTPUTS, secondaryOutputIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (targetToolId != null) {
|
if (targetToolIds != null) {
|
||||||
element.setAttribute(TARGET_TOOL, targetToolId);
|
element.setAttribute(TARGET_TOOL, targetToolIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (scannerConfigDiscoveryProfileId != null) {
|
if (scannerConfigDiscoveryProfileId != null) {
|
||||||
|
@ -839,20 +839,45 @@ public class ToolChain extends BuildObject implements IToolChain {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.managedbuilder.core.IToolChain#getTargetTool()
|
* @see org.eclipse.cdt.managedbuilder.core.IToolChain#getTargetToolIds()
|
||||||
*/
|
*/
|
||||||
public String getTargetToolId() {
|
public String getTargetToolIds() {
|
||||||
if (targetToolId == null) {
|
if (targetToolIds == null) {
|
||||||
// Ask superClass for its list
|
// Ask superClass for its list
|
||||||
if (superClass != null) {
|
if (superClass != null) {
|
||||||
return superClass.getTargetToolId();
|
return superClass.getTargetToolIds();
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return targetToolId;
|
return targetToolIds;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.managedbuilder.core.IToolChain#getTargetToolList()
|
||||||
|
*/
|
||||||
|
public String[] getTargetToolList() {
|
||||||
|
String IDs = getTargetToolIds();
|
||||||
|
String[] targetTools;
|
||||||
|
if (IDs != null) {
|
||||||
|
// Check for an empty string
|
||||||
|
if (IDs.length() == 0) {
|
||||||
|
targetTools = new String[0];
|
||||||
|
} else {
|
||||||
|
StringTokenizer tok = new StringTokenizer(IDs, ";"); //$NON-NLS-1$
|
||||||
|
List list = new ArrayList(tok.countTokens());
|
||||||
|
while (tok.hasMoreElements()) {
|
||||||
|
list.add(tok.nextToken());
|
||||||
|
}
|
||||||
|
String[] strArr = {""}; //$NON-NLS-1$
|
||||||
|
targetTools = (String[]) list.toArray(strArr);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
targetTools = new String[0];
|
||||||
|
}
|
||||||
|
return targetTools;
|
||||||
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.managedbuilder.core.IToolChain#getErrorParserIds(IConfiguration)
|
* @see org.eclipse.cdt.managedbuilder.core.IToolChain#getErrorParserIds(IConfiguration)
|
||||||
*/
|
*/
|
||||||
|
@ -975,12 +1000,12 @@ public class ToolChain extends BuildObject implements IToolChain {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.managedbuilder.core.IToolChain#setTargetTool()
|
* @see org.eclipse.cdt.managedbuilder.core.IToolChain#setTargetToolIds()
|
||||||
*/
|
*/
|
||||||
public void setTargetTool(String newId) {
|
public void setTargetToolIds(String newIds) {
|
||||||
if (targetToolId == null && newId == null) return;
|
if (targetToolIds == null && newIds == null) return;
|
||||||
if (targetToolId == null || newId == null || !newId.equals(targetToolId)) {
|
if (targetToolIds == null || newIds == null || !newIds.equals(targetToolIds)) {
|
||||||
targetToolId = newId;
|
targetToolIds = newIds;
|
||||||
isDirty = true;
|
isDirty = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1061,6 +1061,10 @@ public class ToolReference implements IToolReference {
|
||||||
public void setCustomBuildStep(boolean customBuildStep) {
|
public void setCustomBuildStep(boolean customBuildStep) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IOption getOptionBySuperClassId(String id) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The following methods are added to allow the converter from ToolReference -> Tool
|
* The following methods are added to allow the converter from ToolReference -> Tool
|
||||||
* to retrieve the actual value of attributes. These routines do not go to the
|
* to retrieve the actual value of attributes. These routines do not go to the
|
||||||
|
|
|
@ -240,11 +240,13 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
|
|
||||||
private static final String OBJS_MACRO = "OBJS"; //$NON-NLS-1$
|
private static final String OBJS_MACRO = "OBJS"; //$NON-NLS-1$
|
||||||
private static final String DEPS_MACRO = "DEPS"; //$NON-NLS-1$
|
private static final String DEPS_MACRO = "DEPS"; //$NON-NLS-1$
|
||||||
|
private static final String MACRO_ADDITION_ADDPREFIX_HEADER = "${addprefix "; //$NON-NLS-1$
|
||||||
private static final String MACRO_ADDITION_ADDPREFIX_SUFFIX = "," + WHITESPACE + LINEBREAK; //$NON-NLS-1$
|
private static final String MACRO_ADDITION_ADDPREFIX_SUFFIX = "," + WHITESPACE + LINEBREAK; //$NON-NLS-1$
|
||||||
private static final String MACRO_ADDITION_PREFIX_SUFFIX = "+=" + WHITESPACE + LINEBREAK; //$NON-NLS-1$
|
private static final String MACRO_ADDITION_PREFIX_SUFFIX = "+=" + WHITESPACE + LINEBREAK; //$NON-NLS-1$
|
||||||
private static final String PREBUILD = "pre-build"; //$NON-NLS-1$
|
private static final String PREBUILD = "pre-build"; //$NON-NLS-1$
|
||||||
private static final String MAINBUILD = "main-build"; //$NON-NLS-1$
|
private static final String MAINBUILD = "main-build"; //$NON-NLS-1$
|
||||||
private static final String POSTBUILD = "post-build"; //$NON-NLS-1$
|
private static final String POSTBUILD = "post-build"; //$NON-NLS-1$
|
||||||
|
private static final String SECONDARY_OUTPUTS = "secondary-outputs"; //$NON-NLS-1$
|
||||||
|
|
||||||
// Local variables needed by generator
|
// Local variables needed by generator
|
||||||
private String buildTargetName;
|
private String buildTargetName;
|
||||||
|
@ -1144,6 +1146,13 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
if (buildTargetExt.length() > 0) {
|
if (buildTargetExt.length() > 0) {
|
||||||
buffer.append(DOT + buildTargetExt);
|
buffer.append(DOT + buildTargetExt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add the Secondary Outputs to the all target, if any
|
||||||
|
IOutputType[] secondaryOutputs = config.getToolChain().getSecondaryOutputs();
|
||||||
|
if (secondaryOutputs.length > 0) {
|
||||||
|
buffer.append(WHITESPACE + SECONDARY_OUTPUTS);
|
||||||
|
}
|
||||||
|
|
||||||
buffer.append(NEWLINE + NEWLINE);
|
buffer.append(NEWLINE + NEWLINE);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1218,6 +1227,17 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
buffer.append(TAB + DASH + AT + ECHO + WHITESPACE + SINGLE_QUOTE
|
buffer.append(TAB + DASH + AT + ECHO + WHITESPACE + SINGLE_QUOTE
|
||||||
+ WHITESPACE + SINGLE_QUOTE + NEWLINE + NEWLINE);
|
+ WHITESPACE + SINGLE_QUOTE + NEWLINE + NEWLINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add the Secondary Outputs target, if needed
|
||||||
|
if (secondaryOutputs.length > 0) {
|
||||||
|
buffer.append(SECONDARY_OUTPUTS + COLON);
|
||||||
|
Vector outs2 = calculateSecondaryOutputs(secondaryOutputs);
|
||||||
|
for (int i=0; i<outs2.size(); i++) {
|
||||||
|
buffer.append(WHITESPACE + (String)outs2.get(i));
|
||||||
|
}
|
||||||
|
buffer.append(NEWLINE + NEWLINE);
|
||||||
|
}
|
||||||
|
|
||||||
// Add all the needed dummy and phony targets
|
// Add all the needed dummy and phony targets
|
||||||
buffer.append(".PHONY: all clean dependents" + NEWLINE); //$NON-NLS-1$
|
buffer.append(".PHONY: all clean dependents" + NEWLINE); //$NON-NLS-1$
|
||||||
buffer.append(".SECONDARY:"); //$NON-NLS-1$
|
buffer.append(".SECONDARY:"); //$NON-NLS-1$
|
||||||
|
@ -1340,14 +1360,23 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
Vector inputs = new Vector();
|
Vector inputs = new Vector();
|
||||||
Vector dependencies = new Vector();
|
Vector dependencies = new Vector();
|
||||||
Vector outputs = new Vector();
|
Vector outputs = new Vector();
|
||||||
Vector enumeratedOutputs = new Vector();
|
Vector enumeratedPrimaryOutputs = new Vector();
|
||||||
|
Vector enumeratedSecondaryOutputs = new Vector();
|
||||||
Vector outputVariables = new Vector();
|
Vector outputVariables = new Vector();
|
||||||
String outputPrefix = EMPTY_STRING;
|
String outputPrefix = EMPTY_STRING;
|
||||||
if (!getToolInputsOutputs(tool, inputs, dependencies, outputs, enumeratedOutputs, outputVariables,
|
|
||||||
bTargetTool, managedProjectOutputs)) {
|
if (!getToolInputsOutputs(tool, inputs, dependencies, outputs,
|
||||||
|
enumeratedPrimaryOutputs, enumeratedSecondaryOutputs,
|
||||||
|
outputVariables, bTargetTool, managedProjectOutputs)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If we have no primary output, make all of the secondary outputs the primary output
|
||||||
|
if (enumeratedPrimaryOutputs.size() == 0) {
|
||||||
|
enumeratedPrimaryOutputs = enumeratedSecondaryOutputs;
|
||||||
|
enumeratedSecondaryOutputs.clear();
|
||||||
|
}
|
||||||
|
|
||||||
// Add the output variables for this tool to our list
|
// Add the output variables for this tool to our list
|
||||||
outputVarsAdditionsList.addAll(outputVariables);
|
outputVarsAdditionsList.addAll(outputVariables);
|
||||||
|
|
||||||
|
@ -1355,20 +1384,20 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
String buildRule = EMPTY_STRING;
|
String buildRule = EMPTY_STRING;
|
||||||
String outflag = tool.getOutputFlag();
|
String outflag = tool.getOutputFlag();
|
||||||
|
|
||||||
Iterator iter = enumeratedOutputs.listIterator();
|
String primaryOutputs = EMPTY_STRING;
|
||||||
boolean first = true;
|
boolean first = true;
|
||||||
while(iter.hasNext()) {
|
for (int i=0; i<enumeratedPrimaryOutputs.size(); i++) {
|
||||||
String output = (String)iter.next();
|
String output = (String)enumeratedPrimaryOutputs.get(i);
|
||||||
if (!first) buildRule += WHITESPACE;
|
if (!first) primaryOutputs += WHITESPACE;
|
||||||
first = false;
|
first = false;
|
||||||
buildRule += output;
|
primaryOutputs += output;
|
||||||
}
|
}
|
||||||
buildRule += (COLON + WHITESPACE);
|
|
||||||
iter = inputs.listIterator();
|
buildRule += (primaryOutputs + COLON + WHITESPACE);
|
||||||
|
|
||||||
first = true;
|
first = true;
|
||||||
iter = dependencies.listIterator();
|
for (int i=0; i<dependencies.size(); i++) {
|
||||||
while(iter.hasNext()) {
|
String input = (String)dependencies.get(i);
|
||||||
String input = (String)iter.next();
|
|
||||||
if (!first) buildRule += WHITESPACE;
|
if (!first) buildRule += WHITESPACE;
|
||||||
first = false;
|
first = false;
|
||||||
buildRule += input;
|
buildRule += input;
|
||||||
|
@ -1398,7 +1427,7 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
String[] cmdInputs = (String[])inputs.toArray(new String[inputs.size()]);
|
String[] cmdInputs = (String[])inputs.toArray(new String[inputs.size()]);
|
||||||
IManagedCommandLineGenerator gen = tool.getCommandLineGenerator();
|
IManagedCommandLineGenerator gen = tool.getCommandLineGenerator();
|
||||||
IManagedCommandLineInfo cmdLInfo = gen.generateCommandLineInfo( tool, tool.getToolCommand(),
|
IManagedCommandLineInfo cmdLInfo = gen.generateCommandLineInfo( tool, tool.getToolCommand(),
|
||||||
flags, outflag, outputPrefix, OUT_MACRO, cmdInputs, tool.getCommandLinePattern() );
|
flags, outflag, outputPrefix, primaryOutputs, cmdInputs, tool.getCommandLinePattern() );
|
||||||
// The command to build
|
// The command to build
|
||||||
String buildCmd = null;
|
String buildCmd = null;
|
||||||
if( cmdLInfo == null ) {
|
if( cmdLInfo == null ) {
|
||||||
|
@ -1409,7 +1438,7 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
// TODO report error
|
// TODO report error
|
||||||
toolFlags = EMPTY_STRING;
|
toolFlags = EMPTY_STRING;
|
||||||
}
|
}
|
||||||
buildCmd = tool.getToolCommand() + WHITESPACE + toolFlags + WHITESPACE + outflag + WHITESPACE + outputPrefix + OUT_MACRO + WHITESPACE + IN_MACRO;
|
buildCmd = tool.getToolCommand() + WHITESPACE + toolFlags + WHITESPACE + outflag + WHITESPACE + outputPrefix + primaryOutputs + WHITESPACE + IN_MACRO;
|
||||||
}
|
}
|
||||||
else buildCmd = cmdLInfo.getCommandLine();
|
else buildCmd = cmdLInfo.getCommandLine();
|
||||||
buffer.append(TAB + AT + ECHO + WHITESPACE + buildCmd + NEWLINE);
|
buffer.append(TAB + AT + ECHO + WHITESPACE + buildCmd + NEWLINE);
|
||||||
|
@ -1426,6 +1455,17 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
buffer.append(TAB + AT + ECHO + WHITESPACE + SINGLE_QUOTE + MESSAGE_FINISH_FILE + WHITESPACE + OUT_MACRO + SINGLE_QUOTE + NEWLINE);
|
buffer.append(TAB + AT + ECHO + WHITESPACE + SINGLE_QUOTE + MESSAGE_FINISH_FILE + WHITESPACE + OUT_MACRO + SINGLE_QUOTE + NEWLINE);
|
||||||
}
|
}
|
||||||
buffer.append(TAB + AT + ECHO + WHITESPACE + SINGLE_QUOTE + WHITESPACE + SINGLE_QUOTE + NEWLINE + NEWLINE);
|
buffer.append(TAB + AT + ECHO + WHITESPACE + SINGLE_QUOTE + WHITESPACE + SINGLE_QUOTE + NEWLINE + NEWLINE);
|
||||||
|
|
||||||
|
// If we have secondary outputs, output dependency rules without commands
|
||||||
|
if (enumeratedSecondaryOutputs.size() > 0) {
|
||||||
|
String primaryOutput = (String)enumeratedPrimaryOutputs.get(0);
|
||||||
|
for (int i=0; i<enumeratedSecondaryOutputs.size(); i++) {
|
||||||
|
String output = (String)enumeratedSecondaryOutputs.get(0);
|
||||||
|
buffer.append(output + COLON + WHITESPACE + primaryOutput + NEWLINE);
|
||||||
|
}
|
||||||
|
buffer.append(NEWLINE);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1465,8 +1505,9 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean getToolInputsOutputs(ITool tool,
|
protected boolean getToolInputsOutputs(ITool tool,
|
||||||
Vector inputs, Vector dependencies, Vector outputs, Vector enumeratedOutputs, Vector outputVariables,
|
Vector inputs, Vector dependencies, Vector outputs,
|
||||||
boolean bTargetTool, Vector managedProjectOutputs) {
|
Vector enumeratedPrimaryOutputs, Vector enumeratedSecondaryOutputs,
|
||||||
|
Vector outputVariables, boolean bTargetTool, Vector managedProjectOutputs) {
|
||||||
|
|
||||||
// Get the information regarding the tool's inputs and outputs from the objects
|
// Get the information regarding the tool's inputs and outputs from the objects
|
||||||
// created by calculateToolInputsOutputs
|
// created by calculateToolInputsOutputs
|
||||||
|
@ -1482,7 +1523,8 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
// Populate the output Vectors
|
// Populate the output Vectors
|
||||||
inputs.addAll(toolInfo.getCommandInputs());
|
inputs.addAll(toolInfo.getCommandInputs());
|
||||||
outputs.addAll(toolInfo.getCommandOutputs());
|
outputs.addAll(toolInfo.getCommandOutputs());
|
||||||
enumeratedOutputs.addAll(toolInfo.getEnumeratedOutputs());
|
enumeratedPrimaryOutputs.addAll(toolInfo.getEnumeratedPrimaryOutputs());
|
||||||
|
enumeratedSecondaryOutputs.addAll(toolInfo.getEnumeratedSecondaryOutputs());
|
||||||
outputVariables.addAll(toolInfo.getOutputVariables());
|
outputVariables.addAll(toolInfo.getOutputVariables());
|
||||||
dependencies.addAll(toolInfo.getCommandDependencies());
|
dependencies.addAll(toolInfo.getCommandDependencies());
|
||||||
|
|
||||||
|
@ -1494,6 +1536,37 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @param fileHandle
|
||||||
|
* @throws CoreException
|
||||||
|
*/
|
||||||
|
protected Vector calculateSecondaryOutputs(IOutputType[] secondaryOutputs) {
|
||||||
|
Vector buildVars = new Vector();
|
||||||
|
for (int i=0; i<buildTools.length; i++) {
|
||||||
|
// Add the specified output build variables
|
||||||
|
IOutputType[] outTypes = buildTools[i].getOutputTypes();
|
||||||
|
if (outTypes != null && outTypes.length > 0) {
|
||||||
|
for (int j=0; j<outTypes.length; j++) {
|
||||||
|
IOutputType outType = outTypes[j];
|
||||||
|
// Is this one of the secondary outputs?
|
||||||
|
// Look for an outputType with this ID, or one with a superclass with this id
|
||||||
|
thisType:
|
||||||
|
for (int k = 0; k < secondaryOutputs.length; k++) {
|
||||||
|
IOutputType matchType = outType;
|
||||||
|
do {
|
||||||
|
if (matchType.getId().equals(secondaryOutputs[k].getId())) {
|
||||||
|
buildVars.add(outType.getBuildVariable());
|
||||||
|
break thisType;
|
||||||
|
}
|
||||||
|
matchType = matchType.getSuperClass();
|
||||||
|
} while (matchType != null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return buildVars;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
|
@ -1566,16 +1639,16 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
Map.Entry entry = (Map.Entry)iterator.next();
|
Map.Entry entry = (Map.Entry)iterator.next();
|
||||||
String macroName = (String)entry.getKey();
|
String macroName = (String)entry.getKey();
|
||||||
addMacroAdditionPrefix(buildVarToRuleStringMap, macroName, "$(ROOT)/" + relativePath, true); //$NON-NLS-1$
|
addMacroAdditionPrefix(buildVarToRuleStringMap, macroName, null, false);
|
||||||
}
|
}
|
||||||
iterator = buildOutVars.entrySet().iterator();
|
iterator = buildOutVars.entrySet().iterator();
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
Map.Entry entry = (Map.Entry)iterator.next();
|
Map.Entry entry = (Map.Entry)iterator.next();
|
||||||
String macroName = (String)entry.getKey();
|
String macroName = (String)entry.getKey();
|
||||||
addMacroAdditionPrefix(buildVarToRuleStringMap, macroName, "./" + relativePath, true);
|
addMacroAdditionPrefix(buildVarToRuleStringMap, macroName, "./" + relativePath, true); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
// Create an entry for the DEPS macro
|
// Create an entry for the DEPS macro
|
||||||
addMacroAdditionPrefix(buildVarToRuleStringMap, DEPS_MACRO, "./" + relativePath, true);
|
addMacroAdditionPrefix(buildVarToRuleStringMap, DEPS_MACRO, "./" + relativePath, true); //$NON-NLS-1$
|
||||||
|
|
||||||
// String buffers
|
// String buffers
|
||||||
StringBuffer buffer = new StringBuffer(); // Return buffer
|
StringBuffer buffer = new StringBuffer(); // Return buffer
|
||||||
|
@ -1601,7 +1674,7 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write out the macro addition entries to the buffer
|
// Write out the macro addition entries to the buffer
|
||||||
buffer.append(writeAdditionMacros(buildVarToRuleStringMap, true));
|
buffer.append(writeAdditionMacros(buildVarToRuleStringMap));
|
||||||
return buffer.append(ruleBuffer + NEWLINE);
|
return buffer.append(ruleBuffer + NEWLINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1642,7 +1715,20 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// Add the resource name to the makefile line that adds resources to the build variable
|
// Add the resource name to the makefile line that adds resources to the build variable
|
||||||
addMacroAdditionFile(buildVarToRuleStringMap, varName, resource.getName());
|
String srcName;
|
||||||
|
if (generatedSource) {
|
||||||
|
srcName = resource.getName();
|
||||||
|
} else {
|
||||||
|
String resourceLocation = resource.getLocation().toString();
|
||||||
|
String projectLocation = project.getLocation().toString();
|
||||||
|
//if (resource.isLinked()) { NOTE: we don't use this since children of linked resources return false
|
||||||
|
if(!resourceLocation.startsWith(projectLocation)) {
|
||||||
|
srcName = resourceLocation;
|
||||||
|
} else {
|
||||||
|
srcName = "$(ROOT)/" + relativePath + resource.getName(); //$NON-NLS-1$
|
||||||
|
}
|
||||||
|
}
|
||||||
|
addMacroAdditionFile(buildVarToRuleStringMap, varName, srcName);
|
||||||
|
|
||||||
// Generate the rule to build this source file
|
// Generate the rule to build this source file
|
||||||
IInputType inputType = tool.getInputType(ext);
|
IInputType inputType = tool.getInputType(ext);
|
||||||
|
@ -1670,7 +1756,7 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
// For support of pre-CDT 3.0 integrations.
|
// For support of pre-CDT 3.0 integrations.
|
||||||
buildVariable = OBJS_MACRO; //$NON-NLS-1$
|
buildVariable = OBJS_MACRO; //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
Vector generatedOutputs = calculateOutputsForSource(tool, relativePath, resource);
|
Vector generatedOutputs = calculateOutputsForSource(tool, relativePath, resource, false);
|
||||||
for (int k=0; k<generatedOutputs.size(); k++) {
|
for (int k=0; k<generatedOutputs.size(); k++) {
|
||||||
// TODO - this will only work for outputs generated below the build output directory?
|
// TODO - this will only work for outputs generated below the build output directory?
|
||||||
// try an option that generates an output outside of the project
|
// try an option that generates an output outside of the project
|
||||||
|
@ -1724,13 +1810,14 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
String outflag = null;
|
String outflag = null;
|
||||||
String outputPrefix = null;
|
String outputPrefix = null;
|
||||||
IManagedDependencyGenerator depGen = info.getDependencyGenerator(inputExtension);
|
IManagedDependencyGenerator depGen = info.getDependencyGenerator(inputExtension);
|
||||||
boolean doDepGen = (depGen != null && depGen.getCalculatorType() == IManagedDependencyGenerator.TYPE_COMMAND);
|
boolean doDepGen = (depGen != null && depGen.getCalculatorType() == IManagedDependencyGenerator.TYPE_COMMAND);
|
||||||
|
boolean patternRule = false;
|
||||||
|
|
||||||
// If the tool creates a dependency file, add it to the list
|
// If the tool creates a dependency file, add it to the list
|
||||||
if (doDepGen) {
|
if (doDepGen) {
|
||||||
String depFile = relativePath + resourceName + DOT + DEP_EXT;
|
String depFile = relativePath + resourceName + DOT + DEP_EXT;
|
||||||
getDependencyMakefiles().add(depFile);
|
getDependencyMakefiles().add(depFile);
|
||||||
generatedDepFile.append(depFile);
|
generatedDepFile.append(resourceName + DOT + DEP_EXT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1755,31 +1842,7 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
// We need to check whether we have any resource specific build information.
|
// We need to check whether we have any resource specific build information.
|
||||||
IResourceConfiguration resConfig = null;
|
IResourceConfiguration resConfig = null;
|
||||||
if( config != null ) resConfig = config.getResourceConfiguration(resource.getFullPath().toString());
|
if( config != null ) resConfig = config.getResourceConfiguration(resource.getFullPath().toString());
|
||||||
|
|
||||||
// figure out path to use to resource
|
|
||||||
if(!resourceLocation.toString().startsWith(projectLocation)) {
|
|
||||||
// it IS linked, so use the actual location
|
|
||||||
isItLinked = true;
|
|
||||||
resourcePath = resourceLocation.toString();
|
|
||||||
// Need a hardcoded rule, not a pattern rule, as a linked file
|
|
||||||
// can reside in any path
|
|
||||||
buildRule = relativePath + resourceName + OptDotExt + COLON + WHITESPACE + resourcePath;
|
|
||||||
} else {
|
|
||||||
// use the relative path (not really needed to store per se but in the future someone may want this)
|
|
||||||
resourcePath = relativePath;
|
|
||||||
|
|
||||||
// The rule and command to add to the makefile
|
|
||||||
String home = (generatedSource)? DOT : ROOT;
|
|
||||||
if( resConfig != null) {
|
|
||||||
buildRule = resourcePath + resourceName + OptDotExt + COLON + WHITESPACE + home + SEPARATOR + resourcePath + resourceName + DOT + inputExtension;
|
|
||||||
} else {
|
|
||||||
buildRule = relativePath + WILDCARD + OptDotExt + COLON + WHITESPACE + home + SEPARATOR + resourcePath + WILDCARD + DOT + inputExtension;
|
|
||||||
}
|
|
||||||
} // end fix for PR 70491
|
|
||||||
|
|
||||||
// Add any additional dependencies specified:
|
|
||||||
// 1. in additionalInput elements
|
|
||||||
// 2. from a dependency calculator not of TYPE_COMMAND
|
|
||||||
ITool tool;
|
ITool tool;
|
||||||
if( resConfig != null) {
|
if( resConfig != null) {
|
||||||
ITool[] tools = resConfig.getTools();
|
ITool[] tools = resConfig.getTools();
|
||||||
|
@ -1787,17 +1850,55 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
} else {
|
} else {
|
||||||
tool = info.getToolFromInputExtension(inputExtension);
|
tool = info.getToolFromInputExtension(inputExtension);
|
||||||
}
|
}
|
||||||
// Get any additional dependencies specified for the tool
|
|
||||||
|
// figure out path to use to resource
|
||||||
|
String primaryOutputName = EMPTY_STRING;
|
||||||
|
String primaryDependencyName = EMPTY_STRING;
|
||||||
|
//if (resource.isLinked()) { NOTE: we don't use this since children of linked resources return false
|
||||||
|
if(!resourceLocation.toString().startsWith(projectLocation)) {
|
||||||
|
// it IS linked, so use the actual location
|
||||||
|
isItLinked = true;
|
||||||
|
resourcePath = resourceLocation.toString();
|
||||||
|
// Need a hardcoded rule, not a pattern rule, as a linked file
|
||||||
|
// can reside in any path
|
||||||
|
primaryOutputName = relativePath + resourceName + OptDotExt;
|
||||||
|
primaryDependencyName = resourcePath;
|
||||||
|
} else {
|
||||||
|
// use the relative path (not really needed to store per se but in the future someone may want this)
|
||||||
|
resourcePath = relativePath;
|
||||||
|
|
||||||
|
// The rule and command to add to the makefile
|
||||||
|
String home = (generatedSource)? DOT : ROOT;
|
||||||
|
if( resConfig != null) {
|
||||||
|
// Need a hardcoded rule, not a pattern rule
|
||||||
|
primaryOutputName = resourcePath + resourceName + OptDotExt;
|
||||||
|
primaryDependencyName = home + SEPARATOR + resourcePath + resourceName + DOT + inputExtension;
|
||||||
|
} else {
|
||||||
|
primaryOutputName = relativePath + WILDCARD + OptDotExt;
|
||||||
|
primaryDependencyName = home + SEPARATOR + resourcePath + WILDCARD + DOT + inputExtension;
|
||||||
|
patternRule = true;
|
||||||
|
}
|
||||||
|
} // end fix for PR 70491
|
||||||
|
|
||||||
|
buildRule = primaryOutputName;
|
||||||
|
|
||||||
|
// If this is a pattern rule, add any additional outputs here
|
||||||
|
String otherPrimaryOutputs = EMPTY_STRING;
|
||||||
|
if (patternRule) {
|
||||||
|
Vector addlOutputs = calculateOutputsForSource(tool, relativePath, resource, true);
|
||||||
|
for (int i=0; i<addlOutputs.size(); i++) {
|
||||||
|
otherPrimaryOutputs += WHITESPACE + ((IPath)addlOutputs.get(i)).toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
buildRule += otherPrimaryOutputs + COLON + WHITESPACE + primaryDependencyName;
|
||||||
|
|
||||||
|
// Other additional inputs
|
||||||
|
// Get any additional dependencies specified for the tool in other InputType elements and AdditionalInput elements
|
||||||
IPath[] addlDepPaths = tool.getAdditionalDependencies();
|
IPath[] addlDepPaths = tool.getAdditionalDependencies();
|
||||||
for (int i=0; i<addlDepPaths.length; i++) {
|
for (int i=0; i<addlDepPaths.length; i++) {
|
||||||
buildRule += WHITESPACE + addlDepPaths[i].toString();
|
buildRule += WHITESPACE + addlDepPaths[i].toString();
|
||||||
}
|
}
|
||||||
if (depGen != null && depGen.getCalculatorType() != IManagedDependencyGenerator.TYPE_COMMAND) {
|
|
||||||
Vector addlDepsVector = calculateDependenciesForSource(depGen, tool, relativePath, resource);
|
|
||||||
for (int i=0; i<addlDepsVector.size(); i++) {
|
|
||||||
buildRule += WHITESPACE + addlDepsVector.get(i).toString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// No duplicates in a makefile
|
// No duplicates in a makefile
|
||||||
if (getRuleList().contains(buildRule)) {
|
if (getRuleList().contains(buildRule)) {
|
||||||
|
@ -1824,7 +1925,8 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
// TODO add some routines to catch this
|
// TODO add some routines to catch this
|
||||||
flags = EMPTY_STRING_ARRAY;
|
flags = EMPTY_STRING_ARRAY;
|
||||||
}
|
}
|
||||||
// Get any additional dependencies specified for the tool
|
// Other additional inputs
|
||||||
|
// Get any additional dependencies specified for the tool in other InputType elements and AdditionalInput elements
|
||||||
IPath[] addlInputPaths = tool.getAdditionalResources();
|
IPath[] addlInputPaths = tool.getAdditionalResources();
|
||||||
for (int i=0; i<addlInputPaths.length; i++) {
|
for (int i=0; i<addlInputPaths.length; i++) {
|
||||||
inputs.add(addlDepPaths[i].toString());
|
inputs.add(addlDepPaths[i].toString());
|
||||||
|
@ -1832,7 +1934,7 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
// Call the command line generator
|
// Call the command line generator
|
||||||
IManagedCommandLineGenerator cmdLGen = tool.getCommandLineGenerator();
|
IManagedCommandLineGenerator cmdLGen = tool.getCommandLineGenerator();
|
||||||
cmdLInfo = cmdLGen.generateCommandLineInfo( tool, cmd, flags, outflag, outputPrefix,
|
cmdLInfo = cmdLGen.generateCommandLineInfo( tool, cmd, flags, outflag, outputPrefix,
|
||||||
OUT_MACRO, (String[])inputs.toArray(new String[inputs.size()]), tool.getCommandLinePattern() );
|
OUT_MACRO + otherPrimaryOutputs, (String[])inputs.toArray(new String[inputs.size()]), tool.getCommandLinePattern() );
|
||||||
|
|
||||||
String buildCmd = cmdLInfo.getCommandLine();
|
String buildCmd = cmdLInfo.getCommandLine();
|
||||||
buffer.append(TAB + AT + ECHO + WHITESPACE + buildCmd + NEWLINE);
|
buffer.append(TAB + AT + ECHO + WHITESPACE + buildCmd + NEWLINE);
|
||||||
|
@ -1847,17 +1949,19 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
outflag = info.getOutputFlag(outputExtension);
|
outflag = info.getOutputFlag(outputExtension);
|
||||||
outputPrefix = info.getOutputPrefix(outputExtension);
|
outputPrefix = info.getOutputPrefix(outputExtension);
|
||||||
String[] flags = buildFlags.split( "\\s" ); //$NON-NLS-1$
|
String[] flags = buildFlags.split( "\\s" ); //$NON-NLS-1$
|
||||||
// Get any additional dependencies specified for the tool
|
// Other additional inputs
|
||||||
|
// Get any additional dependencies specified for the tool in other InputType elements and AdditionalInput elements
|
||||||
IPath[] addlInputPaths = tool.getAdditionalResources();
|
IPath[] addlInputPaths = tool.getAdditionalResources();
|
||||||
for (int i=0; i<addlInputPaths.length; i++) {
|
for (int i=0; i<addlInputPaths.length; i++) {
|
||||||
inputs.add(addlDepPaths[i].toString());
|
inputs.add(addlDepPaths[i].toString());
|
||||||
}
|
}
|
||||||
// Call the command line generator
|
// Call the command line generator
|
||||||
cmdLInfo = info.generateCommandLineInfo( inputExtension, flags, outflag, outputPrefix,
|
cmdLInfo = info.generateCommandLineInfo( inputExtension, flags, outflag, outputPrefix,
|
||||||
OUT_MACRO, (String[])inputs.toArray(new String[inputs.size()]) );
|
OUT_MACRO + otherPrimaryOutputs, (String[])inputs.toArray(new String[inputs.size()]) );
|
||||||
// The command to build
|
// The command to build
|
||||||
String buildCmd = null;
|
String buildCmd = null;
|
||||||
if( cmdLInfo == null ) buildCmd = cmd + WHITESPACE + buildFlags + WHITESPACE + outflag + WHITESPACE + outputPrefix + OUT_MACRO + WHITESPACE + IN_MACRO;
|
if( cmdLInfo == null ) buildCmd = cmd + WHITESPACE + buildFlags + WHITESPACE +
|
||||||
|
outflag + WHITESPACE + outputPrefix + OUT_MACRO + otherPrimaryOutputs + WHITESPACE + IN_MACRO;
|
||||||
else buildCmd = cmdLInfo.getCommandLine();
|
else buildCmd = cmdLInfo.getCommandLine();
|
||||||
buffer.append(TAB + AT + ECHO + WHITESPACE + buildCmd + NEWLINE);
|
buffer.append(TAB + AT + ECHO + WHITESPACE + buildCmd + NEWLINE);
|
||||||
buffer.append(TAB + AT + buildCmd);
|
buffer.append(TAB + AT + buildCmd);
|
||||||
|
@ -1875,6 +1979,30 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
buffer.append(NEWLINE);
|
buffer.append(NEWLINE);
|
||||||
buffer.append(TAB + AT + ECHO + WHITESPACE + SINGLE_QUOTE + MESSAGE_FINISH_FILE + WHITESPACE + IN_MACRO + SINGLE_QUOTE + NEWLINE);
|
buffer.append(TAB + AT + ECHO + WHITESPACE + SINGLE_QUOTE + MESSAGE_FINISH_FILE + WHITESPACE + IN_MACRO + SINGLE_QUOTE + NEWLINE);
|
||||||
buffer.append(TAB + AT + ECHO + WHITESPACE + SINGLE_QUOTE + WHITESPACE + SINGLE_QUOTE + NEWLINE + NEWLINE);
|
buffer.append(TAB + AT + ECHO + WHITESPACE + SINGLE_QUOTE + WHITESPACE + SINGLE_QUOTE + NEWLINE + NEWLINE);
|
||||||
|
|
||||||
|
|
||||||
|
// Add separate dependency lines per file if necessary
|
||||||
|
boolean addedDepLines = false;
|
||||||
|
if (depGen != null && depGen.getCalculatorType() != IManagedDependencyGenerator.TYPE_COMMAND) {
|
||||||
|
Vector addlDepsVector = calculateDependenciesForSource(depGen, tool, relativePath, resource);
|
||||||
|
for (int i=0; i<addlDepsVector.size(); i++) {
|
||||||
|
buffer.append(primaryOutputName + COLON + WHITESPACE + addlDepsVector.get(i).toString() + NEWLINE);
|
||||||
|
addedDepLines = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If this is NOT a pattern rule, add any additional outputs here using dependency lines
|
||||||
|
if (!patternRule) {
|
||||||
|
Vector addlOutputs = calculateOutputsForSource(tool, relativePath, resource, true);
|
||||||
|
for (int i=0; i<addlOutputs.size(); i++) {
|
||||||
|
buffer.append(((IPath)addlOutputs.get(i)).toString() + COLON + WHITESPACE + primaryOutputName + NEWLINE);
|
||||||
|
addedDepLines = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (addedDepLines) {
|
||||||
|
buffer.append(NEWLINE);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
@ -1895,7 +2023,8 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
* @param resource
|
* @param resource
|
||||||
* @return Vector of IPaths that are relative to the build directory
|
* @return Vector of IPaths that are relative to the build directory
|
||||||
*/
|
*/
|
||||||
protected Vector calculateOutputsForSource(ITool tool, String relativePath, IResource resource) {
|
protected Vector calculateOutputsForSource(ITool tool,
|
||||||
|
String relativePath, IResource resource, boolean ignorePrimary) {
|
||||||
Vector outputs = new Vector();
|
Vector outputs = new Vector();
|
||||||
String inExt = resource.getFileExtension();
|
String inExt = resource.getFileExtension();
|
||||||
String outExt = tool.getOutputExtension(inExt);
|
String outExt = tool.getOutputExtension(inExt);
|
||||||
|
@ -1904,13 +2033,14 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
if (outTypes != null && outTypes.length > 0) {
|
if (outTypes != null && outTypes.length > 0) {
|
||||||
for (int i=0; i<outTypes.length; i++) {
|
for (int i=0; i<outTypes.length; i++) {
|
||||||
IOutputType type = outTypes[i];
|
IOutputType type = outTypes[i];
|
||||||
|
boolean primaryOutput = (type == tool.getPrimaryOutputType());
|
||||||
|
if (primaryOutput && ignorePrimary) continue;
|
||||||
String outputPrefix = type.getOutputPrefix();
|
String outputPrefix = type.getOutputPrefix();
|
||||||
String variable = type.getBuildVariable();
|
String variable = type.getBuildVariable();
|
||||||
boolean multOfType = type.getMultipleOfType();
|
boolean multOfType = type.getMultipleOfType();
|
||||||
boolean primaryOutput = (type == tool.getPrimaryOutputType());
|
IOption option = tool.getOptionBySuperClassId(type.getOptionId());
|
||||||
IOption option = getOption(tool, type.getOptionId());
|
|
||||||
IManagedOutputNameProvider nameProvider = type.getNameProvider();
|
IManagedOutputNameProvider nameProvider = type.getNameProvider();
|
||||||
String outputNames = type.getOutputNames();
|
String[] outputNames = type.getOutputNames();
|
||||||
|
|
||||||
// 1. If the tool is the build target and this is the primary output,
|
// 1. If the tool is the build target and this is the primary output,
|
||||||
// use artifact name & extension
|
// use artifact name & extension
|
||||||
|
@ -1950,9 +2080,8 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
} else
|
} else
|
||||||
// 4. If outputNames is specified, use it
|
// 4. If outputNames is specified, use it
|
||||||
if (outputNames != null) {
|
if (outputNames != null) {
|
||||||
String[] pathTokens = outputNames.split(";"); //$NON-NLS-1$
|
for (int j = 0; j < outputNames.length; j++) {
|
||||||
for (int j = 0; j < pathTokens.length; j++) {
|
outputs.add(Path.fromOSString(outputNames[j]));
|
||||||
outputs.add(Path.fromOSString(pathTokens[j]));
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// 4. Use the name pattern to generate a transformation macro
|
// 4. Use the name pattern to generate a transformation macro
|
||||||
|
@ -1990,14 +2119,16 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
// In this case, the output file name is the input file name with
|
// In this case, the output file name is the input file name with
|
||||||
// the output extension.
|
// the output extension.
|
||||||
|
|
||||||
IPath outPath = resource.getFullPath().removeFileExtension();
|
if (!ignorePrimary) {
|
||||||
String outPrefix = tool.getOutputPrefix();
|
IPath outPath = Path.fromOSString(resource.getFullPath().removeFileExtension().lastSegment());
|
||||||
if (outPrefix.length() > 0) {
|
String outPrefix = tool.getOutputPrefix();
|
||||||
String outName = outPrefix + outPath.lastSegment();
|
if (outPrefix.length() > 0) {
|
||||||
outPath = outPath.removeLastSegments(1).append(outName);
|
String outName = outPrefix + outPath.lastSegment();
|
||||||
|
outPath = outPath.removeLastSegments(1).append(outName);
|
||||||
|
}
|
||||||
|
outPath = outPath.addFileExtension(outExt);
|
||||||
|
outputs.add(outPath);
|
||||||
}
|
}
|
||||||
outPath = outPath.addFileExtension(outExt);
|
|
||||||
outputs.add(outPath);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return outputs;
|
return outputs;
|
||||||
|
@ -2143,9 +2274,9 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
protected void addMacroAdditionPrefix(HashMap map, String macroName, String relativePath, boolean addPrefix) {
|
protected void addMacroAdditionPrefix(HashMap map, String macroName, String relativePath, boolean addPrefix) {
|
||||||
// there is no entry in the map, so create a buffer for this macro
|
// there is no entry in the map, so create a buffer for this macro
|
||||||
StringBuffer tempBuffer = new StringBuffer();
|
StringBuffer tempBuffer = new StringBuffer();
|
||||||
tempBuffer.append(macroName + WHITESPACE + MACRO_ADDITION_PREFIX_SUFFIX); //$NON-NLS-1$
|
tempBuffer.append(macroName + WHITESPACE + MACRO_ADDITION_PREFIX_SUFFIX);
|
||||||
if (addPrefix) {
|
if (addPrefix) {
|
||||||
tempBuffer.append("${addprefix " + relativePath + MACRO_ADDITION_ADDPREFIX_SUFFIX); //$NON-NLS-1$ //$NON-NLS-2$
|
tempBuffer.append(MACRO_ADDITION_ADDPREFIX_HEADER + relativePath + MACRO_ADDITION_ADDPREFIX_SUFFIX);
|
||||||
}
|
}
|
||||||
|
|
||||||
// have to store the buffer in String form as StringBuffer is not a sublcass of Object
|
// have to store the buffer in String form as StringBuffer is not a sublcass of Object
|
||||||
|
@ -2186,7 +2317,7 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* Write all macro addition entries in a map to the buffer
|
* Write all macro addition entries in a map to the buffer
|
||||||
*/
|
*/
|
||||||
protected StringBuffer writeAdditionMacros(HashMap map, boolean addPrefix) {
|
protected StringBuffer writeAdditionMacros(HashMap map) {
|
||||||
StringBuffer buffer = new StringBuffer();
|
StringBuffer buffer = new StringBuffer();
|
||||||
// Add the comment
|
// Add the comment
|
||||||
buffer.append(COMMENT_SYMBOL + WHITESPACE + ManagedMakeMessages.getResourceString(MOD_VARS) + NEWLINE);
|
buffer.append(COMMENT_SYMBOL + WHITESPACE + ManagedMakeMessages.getResourceString(MOD_VARS) + NEWLINE);
|
||||||
|
@ -2199,12 +2330,17 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
// Check if we added any files to the rule
|
// Check if we added any files to the rule
|
||||||
// Currently, we do this by comparing the end of the rule buffer to MACRO_ADDITION_PREFIX_SUFFIX
|
// Currently, we do this by comparing the end of the rule buffer to MACRO_ADDITION_PREFIX_SUFFIX
|
||||||
if (!(macroString.endsWith(MACRO_ADDITION_PREFIX_SUFFIX)) &&
|
if (!(macroString.endsWith(MACRO_ADDITION_PREFIX_SUFFIX)) &&
|
||||||
!(macroString.endsWith(MACRO_ADDITION_ADDPREFIX_SUFFIX))) {
|
!(macroString.endsWith(MACRO_ADDITION_ADDPREFIX_SUFFIX))) {
|
||||||
StringBuffer currentBuffer = new StringBuffer();
|
StringBuffer currentBuffer = new StringBuffer();
|
||||||
currentBuffer.append( macroString);
|
|
||||||
// Close off the rule
|
// Close off the rule
|
||||||
if (addPrefix) {
|
if (macroString.indexOf(MACRO_ADDITION_ADDPREFIX_HEADER) >= 0) {
|
||||||
currentBuffer.append("}"); //$NON-NLS-1$
|
currentBuffer.append(macroString + "}" + NEWLINE); //$NON-NLS-1$
|
||||||
|
} else {
|
||||||
|
// Remove the final "/"
|
||||||
|
if (macroString.endsWith(LINEBREAK)) {
|
||||||
|
macroString = macroString.substring(0, (macroString.length() - 2)) + NEWLINE;
|
||||||
|
}
|
||||||
|
currentBuffer.append(macroString);
|
||||||
}
|
}
|
||||||
currentBuffer.append(NEWLINE);
|
currentBuffer.append(NEWLINE);
|
||||||
|
|
||||||
|
@ -2404,28 +2540,6 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
}
|
}
|
||||||
return ruleList;
|
return ruleList;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* Returns the option that matches the option ID in this tool
|
|
||||||
*/
|
|
||||||
public IOption getOption(ITool tool, String optionId) {
|
|
||||||
if (optionId == null) return null;
|
|
||||||
|
|
||||||
// Look for an option with this ID, or an option with a superclass with this id
|
|
||||||
IOption[] options = tool.getOptions();
|
|
||||||
for (int i = 0; i < options.length; i++) {
|
|
||||||
IOption targetOption = options[i];
|
|
||||||
IOption option = targetOption;
|
|
||||||
do {
|
|
||||||
if (optionId.equals(option.getId())) {
|
|
||||||
return targetOption;
|
|
||||||
}
|
|
||||||
option = option.getSuperClass();
|
|
||||||
} while (option != null);
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* R E S O U R C E V I S I T O R M E T H O D S
|
* R E S O U R C E V I S I T O R M E T H O D S
|
||||||
|
|
|
@ -59,11 +59,18 @@ public interface IManagedBuildGnuToolInfo {
|
||||||
public Vector getCommandOutputs();
|
public Vector getCommandOutputs();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the raw list of tool's output file names.
|
* Returns the raw list of tool's primary output file names.
|
||||||
*
|
*
|
||||||
* @return Vector
|
* @return Vector
|
||||||
*/
|
*/
|
||||||
public Vector getEnumeratedOutputs();
|
public Vector getEnumeratedPrimaryOutputs();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the raw list of tool's secondary output file names.
|
||||||
|
*
|
||||||
|
* @return Vector
|
||||||
|
*/
|
||||||
|
public Vector getEnumeratedSecondaryOutputs();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the raw list of tool's output variable names.
|
* Returns the raw list of tool's output variable names.
|
||||||
|
|
|
@ -61,7 +61,8 @@ public class ManagedBuildGnuToolInfo implements IManagedBuildGnuToolInfo {
|
||||||
private Vector commandInputs = new Vector();
|
private Vector commandInputs = new Vector();
|
||||||
private Vector enumeratedInputs = new Vector();
|
private Vector enumeratedInputs = new Vector();
|
||||||
private Vector commandOutputs = new Vector();
|
private Vector commandOutputs = new Vector();
|
||||||
private Vector enumeratedOutputs = new Vector();
|
private Vector enumeratedPrimaryOutputs = new Vector();
|
||||||
|
private Vector enumeratedSecondaryOutputs = new Vector();
|
||||||
private Vector outputVariables = new Vector();
|
private Vector outputVariables = new Vector();
|
||||||
private Vector commandDependencies = new Vector();
|
private Vector commandDependencies = new Vector();
|
||||||
//private Vector enumeratedDependencies = new Vector();
|
//private Vector enumeratedDependencies = new Vector();
|
||||||
|
@ -103,8 +104,12 @@ public class ManagedBuildGnuToolInfo implements IManagedBuildGnuToolInfo {
|
||||||
return commandOutputs;
|
return commandOutputs;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector getEnumeratedOutputs() {
|
public Vector getEnumeratedPrimaryOutputs() {
|
||||||
return enumeratedOutputs;
|
return enumeratedPrimaryOutputs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vector getEnumeratedSecondaryOutputs() {
|
||||||
|
return enumeratedSecondaryOutputs;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector getOutputVariables() {
|
public Vector getOutputVariables() {
|
||||||
|
@ -138,61 +143,110 @@ public class ManagedBuildGnuToolInfo implements IManagedBuildGnuToolInfo {
|
||||||
public boolean calculateInputs(GnuMakefileGenerator makeGen, IResource[] projResources, boolean lastChance) {
|
public boolean calculateInputs(GnuMakefileGenerator makeGen, IResource[] projResources, boolean lastChance) {
|
||||||
// Get the inputs for this tool invocation
|
// Get the inputs for this tool invocation
|
||||||
// Note that command inputs that are also dependencies are also added to the command dependencies list
|
// Note that command inputs that are also dependencies are also added to the command dependencies list
|
||||||
|
|
||||||
|
/* The priorities for determining the names of the inputs of a tool are:
|
||||||
|
* 1. If an option is specified, use the value of the option.
|
||||||
|
* 2. If a build variable is specified, use the files that have been added to the build variable as
|
||||||
|
* the output(s) of other build steps.
|
||||||
|
* 3. Use the file extensions and the resources in the project
|
||||||
|
*/
|
||||||
boolean done = true;
|
boolean done = true;
|
||||||
Vector myCommandInputs = new Vector();
|
Vector myCommandInputs = new Vector(); // Inputs for the tool command line
|
||||||
Vector myCommandDependencies = new Vector();
|
Vector myCommandDependencies = new Vector(); // Dependencies for the make rule
|
||||||
Vector myEnumeratedInputs = new Vector();
|
Vector myEnumeratedInputs = new Vector(); // Complete list of individual inputs
|
||||||
|
|
||||||
IInputType[] inTypes = tool.getInputTypes();
|
IInputType[] inTypes = tool.getInputTypes();
|
||||||
if (inTypes != null && inTypes.length > 0) {
|
if (inTypes != null && inTypes.length > 0) {
|
||||||
for (int i=0; i<inTypes.length; i++) {
|
for (int i=0; i<inTypes.length; i++) {
|
||||||
IInputType type = inTypes[i];
|
IInputType type = inTypes[i];
|
||||||
String variable = type.getBuildVariable();
|
String variable = type.getBuildVariable();
|
||||||
|
boolean primaryInput = type.getPrimaryInput();
|
||||||
boolean useFileExts = false;
|
boolean useFileExts = false;
|
||||||
if (variable.length() > 0) {
|
IOption option = tool.getOptionBySuperClassId(type.getOptionId());
|
||||||
String cmdVariable = variable = "$(" + variable + ")"; //$NON-NLS-1$ //$NON-NLS-2$
|
|
||||||
myCommandInputs.add(cmdVariable);
|
// Option?
|
||||||
myCommandDependencies.add(cmdVariable);
|
if (option != null) {
|
||||||
// If there is an output variable with the same name, get
|
try {
|
||||||
// the files associated with it.
|
List inputs = new ArrayList();
|
||||||
List outMacroList = makeGen.getBuildVariableList(variable, true);
|
int optType = option.getValueType();
|
||||||
if (outMacroList != null) {
|
if (optType == IOption.STRING) {
|
||||||
myEnumeratedInputs.addAll(outMacroList);
|
inputs.add(option.getStringValue());
|
||||||
} else {
|
} else if (
|
||||||
// If "last chance", then calculate using file extensions below
|
optType == IOption.STRING_LIST ||
|
||||||
if (lastChance) {
|
optType == IOption.LIBRARIES ||
|
||||||
useFileExts = true;
|
optType == IOption.OBJECTS) {
|
||||||
|
inputs = (List)option.getValue();
|
||||||
|
}
|
||||||
|
//myCommandInputs.add(inputs);
|
||||||
|
if (primaryInput) {
|
||||||
|
myCommandDependencies.add(0, inputs);
|
||||||
} else {
|
} else {
|
||||||
done = false;
|
myCommandDependencies.add(inputs);
|
||||||
break;
|
}
|
||||||
|
//myEnumeratedInputs.add(inputs);
|
||||||
|
} catch( BuildException ex ) {
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
// Build Variable?
|
||||||
|
if (variable.length() > 0) {
|
||||||
|
String cmdVariable = variable = "$(" + variable + ")"; //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
|
myCommandInputs.add(cmdVariable);
|
||||||
|
if (primaryInput) {
|
||||||
|
myCommandDependencies.add(0, cmdVariable);
|
||||||
|
} else {
|
||||||
|
myCommandDependencies.add(cmdVariable);
|
||||||
|
}
|
||||||
|
// If there is an output variable with the same name, get
|
||||||
|
// the files associated with it.
|
||||||
|
List outMacroList = makeGen.getBuildVariableList(variable, true);
|
||||||
|
if (outMacroList != null) {
|
||||||
|
myEnumeratedInputs.addAll(outMacroList);
|
||||||
|
} else {
|
||||||
|
// If "last chance", then calculate using file extensions below
|
||||||
|
if (lastChance) {
|
||||||
|
useFileExts = true;
|
||||||
|
} else {
|
||||||
|
done = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (variable.length() == 0 || useFileExts) {
|
// Use file extensions
|
||||||
if (type.getMultipleOfType()) {
|
if (variable.length() == 0 || useFileExts) {
|
||||||
// Calculate myEnumeratedInputs using the file extensions and the resources in the project
|
if (type.getMultipleOfType()) {
|
||||||
String[] exts = tool.getAllInputExtensions();
|
// Calculate myEnumeratedInputs using the file extensions and the resources in the project
|
||||||
if (projResources != null) {
|
String[] exts = tool.getAllInputExtensions();
|
||||||
for (int j=0; j<projResources.length; j++) {
|
if (projResources != null) {
|
||||||
if (projResources[i].getType() == IResource.FILE) {
|
for (int j=0; j<projResources.length; j++) {
|
||||||
String fileExt = projResources[i].getFileExtension();
|
if (projResources[i].getType() == IResource.FILE) {
|
||||||
for (int k=0; k<exts.length; k++) {
|
String fileExt = projResources[i].getFileExtension();
|
||||||
if (fileExt.equals(exts[k])) {
|
for (int k=0; k<exts.length; k++) {
|
||||||
// TODO - is project relative correct?
|
if (fileExt.equals(exts[k])) {
|
||||||
if (!useFileExts) {
|
// TODO - is project relative correct?
|
||||||
myCommandInputs.add(projResources[i].getProjectRelativePath());
|
if (!useFileExts) {
|
||||||
|
myCommandInputs.add(projResources[i].getProjectRelativePath());
|
||||||
|
if (primaryInput) {
|
||||||
|
myCommandDependencies.add(0, projResources[i].getProjectRelativePath());
|
||||||
|
} else {
|
||||||
|
myCommandDependencies.add(projResources[i].getProjectRelativePath());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
myEnumeratedInputs.add(projResources[i].getProjectRelativePath());
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
myEnumeratedInputs.add(projResources[i].getProjectRelativePath());
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// Rule will be generated by addRuleForSource
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
// Rule will be generated by addRuleForSource
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get any additional inputs specified in the manifest file or the project file
|
// Get any additional inputs specified in the manifest file or the project file
|
||||||
IAdditionalInput[] addlInputs = type.getAdditionalInputs();
|
IAdditionalInput[] addlInputs = type.getAdditionalInputs();
|
||||||
if (addlInputs != null) {
|
if (addlInputs != null) {
|
||||||
|
@ -201,12 +255,11 @@ public class ManagedBuildGnuToolInfo implements IManagedBuildGnuToolInfo {
|
||||||
int kind = addlInput.getKind();
|
int kind = addlInput.getKind();
|
||||||
if (kind == IAdditionalInput.KIND_ADDITIONAL_INPUT ||
|
if (kind == IAdditionalInput.KIND_ADDITIONAL_INPUT ||
|
||||||
kind == IAdditionalInput.KIND_ADDITIONAL_INPUT_DEPENDENCY) {
|
kind == IAdditionalInput.KIND_ADDITIONAL_INPUT_DEPENDENCY) {
|
||||||
String paths = addlInput.getPaths();
|
String[] paths = addlInput.getPaths();
|
||||||
if (paths != null) {
|
if (paths != null) {
|
||||||
String[] pathTokens = paths.split(";"); //$NON-NLS-1$
|
for (int k = 0; k < paths.length; k++) {
|
||||||
for (int k = 0; k < pathTokens.length; k++) {
|
myCommandInputs.add(paths[k]);
|
||||||
myCommandInputs.add(pathTokens[k]);
|
myEnumeratedInputs.add(paths[k]);
|
||||||
myEnumeratedInputs.add(pathTokens[k]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -233,7 +286,7 @@ public class ManagedBuildGnuToolInfo implements IManagedBuildGnuToolInfo {
|
||||||
|
|
||||||
if (done) {
|
if (done) {
|
||||||
commandInputs.addAll(myCommandInputs);
|
commandInputs.addAll(myCommandInputs);
|
||||||
commandDependencies.addAll(myCommandDependencies);
|
commandDependencies.addAll(0, myCommandDependencies);
|
||||||
enumeratedInputs.addAll(myEnumeratedInputs);
|
enumeratedInputs.addAll(myEnumeratedInputs);
|
||||||
inputsCalculated = true;
|
inputsCalculated = true;
|
||||||
return true;
|
return true;
|
||||||
|
@ -243,7 +296,7 @@ public class ManagedBuildGnuToolInfo implements IManagedBuildGnuToolInfo {
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The priorities for determining the names of the ouputs of a tool are:
|
* The priorities for determining the names of the outputs of a tool are:
|
||||||
* 1. If the tool is the build target and primary output, use artifact name & extension
|
* 1. If the tool is the build target and primary output, use artifact name & extension
|
||||||
* 2. If an option is specified, use the value of the option
|
* 2. If an option is specified, use the value of the option
|
||||||
* 3. If a nameProvider is specified, call it
|
* 3. If a nameProvider is specified, call it
|
||||||
|
@ -251,12 +304,16 @@ public class ManagedBuildGnuToolInfo implements IManagedBuildGnuToolInfo {
|
||||||
* 5. Use the name pattern to generate a transformation macro
|
* 5. Use the name pattern to generate a transformation macro
|
||||||
* so that the source names can be transformed into the target names
|
* so that the source names can be transformed into the target names
|
||||||
* using the built-in string substitution functions of <code>make</code>.
|
* using the built-in string substitution functions of <code>make</code>.
|
||||||
|
*
|
||||||
|
* NOTE: If an option is not specified and this is not the primary output type, the outputs
|
||||||
|
* from the type are not added to the command line
|
||||||
*/
|
*/
|
||||||
public boolean calculateOutputs(GnuMakefileGenerator makeGen, HashSet handledInputExtensions, boolean lastChance) {
|
public boolean calculateOutputs(GnuMakefileGenerator makeGen, HashSet handledInputExtensions, boolean lastChance) {
|
||||||
|
|
||||||
boolean done = true;
|
boolean done = true;
|
||||||
Vector myCommandOutputs = new Vector();
|
Vector myCommandOutputs = new Vector();
|
||||||
Vector myEnumeratedOutputs = new Vector();
|
Vector myEnumeratedPrimaryOutputs = new Vector();
|
||||||
|
Vector myEnumeratedSecondaryOutputs = new Vector();
|
||||||
HashMap myOutputMacros = new HashMap();
|
HashMap myOutputMacros = new HashMap();
|
||||||
// The next two fields are used together
|
// The next two fields are used together
|
||||||
Vector myBuildVars = new Vector();
|
Vector myBuildVars = new Vector();
|
||||||
|
@ -272,9 +329,9 @@ public class ManagedBuildGnuToolInfo implements IManagedBuildGnuToolInfo {
|
||||||
String variable = type.getBuildVariable();
|
String variable = type.getBuildVariable();
|
||||||
boolean multOfType = type.getMultipleOfType();
|
boolean multOfType = type.getMultipleOfType();
|
||||||
boolean primaryOutput = (type == tool.getPrimaryOutputType());
|
boolean primaryOutput = (type == tool.getPrimaryOutputType());
|
||||||
IOption option = makeGen.getOption(tool, type.getOptionId());
|
IOption option = tool.getOptionBySuperClassId(type.getOptionId());
|
||||||
IManagedOutputNameProvider nameProvider = type.getNameProvider();
|
IManagedOutputNameProvider nameProvider = type.getNameProvider();
|
||||||
String outputNames = type.getOutputNames();
|
String[] outputNames = type.getOutputNames();
|
||||||
|
|
||||||
// 1. If the tool is the build target and this is the primary output,
|
// 1. If the tool is the build target and this is the primary output,
|
||||||
// use artifact name & extension
|
// use artifact name & extension
|
||||||
|
@ -306,7 +363,7 @@ public class ManagedBuildGnuToolInfo implements IManagedBuildGnuToolInfo {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
myCommandOutputs.addAll(outputs);
|
//myCommandOutputs.addAll(outputs);
|
||||||
typeEnumeratedOutputs.addAll(outputs);
|
typeEnumeratedOutputs.addAll(outputs);
|
||||||
if (variable.length() > 0) {
|
if (variable.length() > 0) {
|
||||||
if (myOutputMacros.containsKey(variable)) {
|
if (myOutputMacros.containsKey(variable)) {
|
||||||
|
@ -334,7 +391,9 @@ public class ManagedBuildGnuToolInfo implements IManagedBuildGnuToolInfo {
|
||||||
}
|
}
|
||||||
outNames = nameProvider.getOutputNames(tool, inputPaths);
|
outNames = nameProvider.getOutputNames(tool, inputPaths);
|
||||||
if (outNames != null) {
|
if (outNames != null) {
|
||||||
myCommandOutputs.addAll(Arrays.asList(outNames));
|
if (primaryOutput) {
|
||||||
|
myCommandOutputs.addAll(Arrays.asList(outNames));
|
||||||
|
}
|
||||||
typeEnumeratedOutputs.addAll(Arrays.asList(outNames));
|
typeEnumeratedOutputs.addAll(Arrays.asList(outNames));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -350,10 +409,11 @@ public class ManagedBuildGnuToolInfo implements IManagedBuildGnuToolInfo {
|
||||||
} else
|
} else
|
||||||
// 4. If outputNames is specified, use it
|
// 4. If outputNames is specified, use it
|
||||||
if (outputNames != null) {
|
if (outputNames != null) {
|
||||||
String[] pathTokens = outputNames.split(";"); //$NON-NLS-1$
|
if (outputNames.length > 0) {
|
||||||
if (pathTokens.length > 0) {
|
List namesList = Arrays.asList(outputNames);
|
||||||
List namesList = Arrays.asList(pathTokens);
|
if (primaryOutput) {
|
||||||
myCommandOutputs.addAll(namesList);
|
myCommandOutputs.addAll(namesList);
|
||||||
|
}
|
||||||
typeEnumeratedOutputs.addAll(namesList);
|
typeEnumeratedOutputs.addAll(namesList);
|
||||||
if (variable.length() > 0) {
|
if (variable.length() > 0) {
|
||||||
if (myOutputMacros.containsKey(variable)) {
|
if (myOutputMacros.containsKey(variable)) {
|
||||||
|
@ -405,7 +465,9 @@ public class ManagedBuildGnuToolInfo implements IManagedBuildGnuToolInfo {
|
||||||
fileName = "default"; //$NON-NLS-1$
|
fileName = "default"; //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
// Replace the % with the file name
|
// Replace the % with the file name
|
||||||
myCommandOutputs.add(namePattern.replaceAll("%", fileName)); //$NON-NLS-1$
|
if (primaryOutput) {
|
||||||
|
myCommandOutputs.add(namePattern.replaceAll("%", fileName)); //$NON-NLS-1$
|
||||||
|
}
|
||||||
typeEnumeratedOutputs.add(namePattern.replaceAll("%", fileName)); //$NON-NLS-1$
|
typeEnumeratedOutputs.add(namePattern.replaceAll("%", fileName)); //$NON-NLS-1$
|
||||||
if (variable.length() > 0) {
|
if (variable.length() > 0) {
|
||||||
List outputs = new ArrayList();
|
List outputs = new ArrayList();
|
||||||
|
@ -425,7 +487,11 @@ public class ManagedBuildGnuToolInfo implements IManagedBuildGnuToolInfo {
|
||||||
myBuildVars.add(variable);
|
myBuildVars.add(variable);
|
||||||
myBuildVarsValues.add(typeEnumeratedOutputs);
|
myBuildVarsValues.add(typeEnumeratedOutputs);
|
||||||
}
|
}
|
||||||
myEnumeratedOutputs.addAll(typeEnumeratedOutputs);
|
if (primaryOutput) {
|
||||||
|
myEnumeratedPrimaryOutputs.addAll(typeEnumeratedOutputs);
|
||||||
|
} else {
|
||||||
|
myEnumeratedSecondaryOutputs.addAll(typeEnumeratedOutputs);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (bIsTargetTool) {
|
if (bIsTargetTool) {
|
||||||
|
@ -435,7 +501,7 @@ public class ManagedBuildGnuToolInfo implements IManagedBuildGnuToolInfo {
|
||||||
outputName += (DOT + targetExt);
|
outputName += (DOT + targetExt);
|
||||||
}
|
}
|
||||||
myCommandOutputs.add(outputName);
|
myCommandOutputs.add(outputName);
|
||||||
myEnumeratedOutputs.add(outputName);
|
myEnumeratedPrimaryOutputs.add(outputName);
|
||||||
} else {
|
} else {
|
||||||
// For support of pre-CDT 3.0 integrations.
|
// For support of pre-CDT 3.0 integrations.
|
||||||
// NOTE WELL: This only supports the case of a single "target tool"
|
// NOTE WELL: This only supports the case of a single "target tool"
|
||||||
|
@ -463,7 +529,8 @@ public class ManagedBuildGnuToolInfo implements IManagedBuildGnuToolInfo {
|
||||||
|
|
||||||
if (done) {
|
if (done) {
|
||||||
commandOutputs.addAll(myCommandOutputs);
|
commandOutputs.addAll(myCommandOutputs);
|
||||||
enumeratedOutputs.addAll(myEnumeratedOutputs);
|
enumeratedPrimaryOutputs.addAll(myEnumeratedPrimaryOutputs);
|
||||||
|
enumeratedSecondaryOutputs.addAll(myEnumeratedSecondaryOutputs);
|
||||||
outputVariables.addAll(myOutputMacros.keySet());
|
outputVariables.addAll(myOutputMacros.keySet());
|
||||||
outputsCalculated = true;
|
outputsCalculated = true;
|
||||||
for (int i=0; i<myBuildVars.size(); i++) {
|
for (int i=0; i<myBuildVars.size(); i++) {
|
||||||
|
@ -548,11 +615,10 @@ public class ManagedBuildGnuToolInfo implements IManagedBuildGnuToolInfo {
|
||||||
int kind = addlInput.getKind();
|
int kind = addlInput.getKind();
|
||||||
if (kind == IAdditionalInput.KIND_ADDITIONAL_DEPENDENCY ||
|
if (kind == IAdditionalInput.KIND_ADDITIONAL_DEPENDENCY ||
|
||||||
kind == IAdditionalInput.KIND_ADDITIONAL_INPUT_DEPENDENCY) {
|
kind == IAdditionalInput.KIND_ADDITIONAL_INPUT_DEPENDENCY) {
|
||||||
String paths = addlInput.getPaths();
|
String[] paths = addlInput.getPaths();
|
||||||
if (paths != null) {
|
if (paths != null) {
|
||||||
String[] pathTokens = paths.split(";"); //$NON-NLS-1$
|
for (int k = 0; k < paths.length; k++) {
|
||||||
for (int k = 0; k < pathTokens.length; k++) {
|
myCommandDependencies.add(paths[k]);
|
||||||
myCommandDependencies.add(pathTokens[k]);
|
|
||||||
//myEnumeratedInputs.add(pathTokens[k]);
|
//myEnumeratedInputs.add(pathTokens[k]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,73 @@
|
||||||
|
/**********************************************************************
|
||||||
|
* Copyright (c) 2005 Intel Corporation and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Common Public License v1.0
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/cpl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* Intel Corporation - Initial API and implementation
|
||||||
|
**********************************************************************/
|
||||||
|
package org.eclipse.cdt.managedbuilder.projectconverter;
|
||||||
|
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
|
||||||
|
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
|
||||||
|
import org.eclipse.cdt.managedbuilder.internal.core.ManagedBuildInfo;
|
||||||
|
import org.eclipse.core.resources.IFile;
|
||||||
|
import org.eclipse.core.resources.IProject;
|
||||||
|
import org.eclipse.core.resources.IWorkspace;
|
||||||
|
import org.eclipse.core.resources.WorkspaceJob;
|
||||||
|
import org.eclipse.core.runtime.CoreException;
|
||||||
|
import org.eclipse.core.runtime.IProgressMonitor;
|
||||||
|
import org.eclipse.core.runtime.IStatus;
|
||||||
|
import org.eclipse.core.runtime.Status;
|
||||||
|
import org.eclipse.core.runtime.jobs.ISchedulingRule;
|
||||||
|
|
||||||
|
class UpdateManagedProject21 {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param monitor the monitor to allow users to cancel the long-running operation
|
||||||
|
* @param project the <code>IProject</code> that needs to be upgraded
|
||||||
|
* @throws CoreException
|
||||||
|
*/
|
||||||
|
static void doProjectUpdate(IProgressMonitor monitor, final IProject project) throws CoreException {
|
||||||
|
String[] projectName = new String[]{project.getName()};
|
||||||
|
IFile file = project.getFile(ManagedBuildManager.SETTINGS_FILE_NAME);
|
||||||
|
File settingsFile = file.getLocation().toFile();
|
||||||
|
if (!settingsFile.exists()) {
|
||||||
|
monitor.done();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Backup the file
|
||||||
|
monitor.beginTask(ConverterMessages.getFormattedString("UpdateManagedProject20.0", projectName), 1); //$NON-NLS-1$
|
||||||
|
IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
|
||||||
|
UpdateManagedProjectManager.backupFile(file, "_21backup", monitor, project); //$NON-NLS-1$
|
||||||
|
// No physical conversion is need since the 3.0 model is a superset of the 2.1 model
|
||||||
|
// Just upgrade the version
|
||||||
|
((ManagedBuildInfo)info).setVersion(ManagedBuildManager.getBuildInfoVersion().toString());
|
||||||
|
info.setValid(true);
|
||||||
|
|
||||||
|
// Save the updated file
|
||||||
|
// If the tree is locked spawn a job to this.
|
||||||
|
IWorkspace workspace = project.getWorkspace();
|
||||||
|
boolean treeLock = workspace.isTreeLocked();
|
||||||
|
ISchedulingRule rule = workspace.getRuleFactory().createRule(project);
|
||||||
|
if (treeLock) {
|
||||||
|
WorkspaceJob job = new WorkspaceJob("Updating managed Project") {
|
||||||
|
public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException {
|
||||||
|
ManagedBuildManager.saveBuildInfo(project, true);
|
||||||
|
return Status.OK_STATUS;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
job.setRule(rule);
|
||||||
|
job.schedule();
|
||||||
|
} else {
|
||||||
|
ManagedBuildManager.saveBuildInfo(project, true);
|
||||||
|
}
|
||||||
|
monitor.done();
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* Copyright (c) 2004 Intel Corporation and others.
|
* Copyright (c) 2004, 2005 Intel Corporation and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Common Public License v1.0
|
* are made available under the terms of the Common Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -112,7 +112,7 @@ public class UpdateManagedProjectManager {
|
||||||
|
|
||||||
PluginVersionIdentifier compVersion = ManagedBuildManager.getBuildInfoVersion();
|
PluginVersionIdentifier compVersion = ManagedBuildManager.getBuildInfoVersion();
|
||||||
|
|
||||||
if(projVersion.isEquivalentTo(compVersion))
|
if(compVersion.isEquivalentTo(projVersion))
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -291,6 +291,10 @@ public class UpdateManagedProjectManager {
|
||||||
UpdateManagedProject20.doProjectUpdate(monitor, fProject);
|
UpdateManagedProject20.doProjectUpdate(monitor, fProject);
|
||||||
version = getManagedBuildInfoVersion(info.getVersion());
|
version = getManagedBuildInfoVersion(info.getVersion());
|
||||||
}
|
}
|
||||||
|
if(version.isEquivalentTo(new PluginVersionIdentifier(2,1,0))){
|
||||||
|
UpdateManagedProject21.doProjectUpdate(monitor, fProject);
|
||||||
|
version = getManagedBuildInfoVersion(info.getVersion());
|
||||||
|
}
|
||||||
|
|
||||||
if(!isCompatibleProject(info)){
|
if(!isCompatibleProject(info)){
|
||||||
throw new CoreException(new Status(IStatus.ERROR, ManagedBuilderCorePlugin.getUniqueIdentifier(), -1,
|
throw new CoreException(new Status(IStatus.ERROR, ManagedBuilderCorePlugin.getUniqueIdentifier(), -1,
|
||||||
|
|
|
@ -118,12 +118,9 @@
|
||||||
</managedBuildRevision>
|
</managedBuildRevision>
|
||||||
<tool
|
<tool
|
||||||
natureFilter="cnature"
|
natureFilter="cnature"
|
||||||
sources="o"
|
|
||||||
outputs=""
|
|
||||||
name="%ToolName.linker.gnu.c"
|
name="%ToolName.linker.gnu.c"
|
||||||
outputFlag="-o"
|
outputFlag="-o"
|
||||||
command="gcc"
|
command="gcc"
|
||||||
dependencyCalculator="org.eclipse.cdt.managedbuilder.makegen.internal.DefaultNoDependencyCalculator"
|
|
||||||
id="cdt.managedbuild.tool.gnu.c.linker">
|
id="cdt.managedbuild.tool.gnu.c.linker">
|
||||||
<envVarBuildPath
|
<envVarBuildPath
|
||||||
pathType="buildpathLibrary"
|
pathType="buildpathLibrary"
|
||||||
|
@ -255,15 +252,32 @@
|
||||||
id="gnu.c.link.option.defname"
|
id="gnu.c.link.option.defname"
|
||||||
valueType="string">
|
valueType="string">
|
||||||
</option>
|
</option>
|
||||||
|
<inputType
|
||||||
|
sources="o"
|
||||||
|
multipleOfType="true"
|
||||||
|
dependencyCalculator="org.eclipse.cdt.managedbuilder.makegen.internal.DefaultNoDependencyCalculator"
|
||||||
|
buildVariable="OBJS"
|
||||||
|
id="cdt.managedbuild.tool.gnu.c.linker.input">
|
||||||
|
<additionalInput
|
||||||
|
paths="$(USER_OBJS)"
|
||||||
|
kind="additionalinputdependency">
|
||||||
|
</additionalInput>
|
||||||
|
<additionalInput
|
||||||
|
paths="$(LIBS)"
|
||||||
|
kind="additionalinput">
|
||||||
|
</additionalInput>
|
||||||
|
</inputType>
|
||||||
|
<outputType
|
||||||
|
outputs=""
|
||||||
|
buildVariable="EXECUTABLES"
|
||||||
|
id="cdt.managedbuild.tool.gnu.c.linker.output">
|
||||||
|
</outputType>
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
natureFilter="ccnature"
|
natureFilter="ccnature"
|
||||||
sources="o"
|
|
||||||
outputs=""
|
|
||||||
name="%ToolName.linker.gnu.cpp"
|
name="%ToolName.linker.gnu.cpp"
|
||||||
outputFlag="-o"
|
outputFlag="-o"
|
||||||
command="g++"
|
command="g++"
|
||||||
dependencyCalculator="org.eclipse.cdt.managedbuilder.makegen.internal.DefaultNoDependencyCalculator"
|
|
||||||
id="cdt.managedbuild.tool.gnu.cpp.linker">
|
id="cdt.managedbuild.tool.gnu.cpp.linker">
|
||||||
<envVarBuildPath
|
<envVarBuildPath
|
||||||
pathType="buildpathLibrary"
|
pathType="buildpathLibrary"
|
||||||
|
@ -386,16 +400,32 @@
|
||||||
valueType="string"
|
valueType="string"
|
||||||
id="gnu.cpp.link.option.defname">
|
id="gnu.cpp.link.option.defname">
|
||||||
</option>
|
</option>
|
||||||
|
<inputType
|
||||||
|
sources="o"
|
||||||
|
multipleOfType="true"
|
||||||
|
dependencyCalculator="org.eclipse.cdt.managedbuilder.makegen.internal.DefaultNoDependencyCalculator"
|
||||||
|
buildVariable="OBJS"
|
||||||
|
id="cdt.managedbuild.tool.gnu.cpp.linker.input">
|
||||||
|
<additionalInput
|
||||||
|
paths="$(USER_OBJS)"
|
||||||
|
kind="additionalinputdependency">
|
||||||
|
</additionalInput>
|
||||||
|
<additionalInput
|
||||||
|
paths="$(LIBS)"
|
||||||
|
kind="additionalinput">
|
||||||
|
</additionalInput>
|
||||||
|
</inputType>
|
||||||
|
<outputType
|
||||||
|
outputs=""
|
||||||
|
buildVariable="EXECUTABLES"
|
||||||
|
id="cdt.managedbuild.tool.gnu.cpp.linker.output">
|
||||||
|
</outputType>
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
natureFilter="both"
|
natureFilter="both"
|
||||||
isAbstract="true"
|
isAbstract="true"
|
||||||
sources="o"
|
|
||||||
name="%ToolName.archiver.gnu"
|
name="%ToolName.archiver.gnu"
|
||||||
outputs="a"
|
|
||||||
command="ar"
|
command="ar"
|
||||||
outputPrefix="lib"
|
|
||||||
dependencyCalculator="org.eclipse.cdt.managedbuilder.makegen.internal.DefaultNoDependencyCalculator"
|
|
||||||
id="cdt.managedbuild.tool.gnu.archiver">
|
id="cdt.managedbuild.tool.gnu.archiver">
|
||||||
<optionCategory
|
<optionCategory
|
||||||
owner="cdt.managedbuild.tool.gnu.archiver"
|
owner="cdt.managedbuild.tool.gnu.archiver"
|
||||||
|
@ -409,6 +439,27 @@
|
||||||
valueType="string"
|
valueType="string"
|
||||||
id="gnu.both.lib.option.flags">
|
id="gnu.both.lib.option.flags">
|
||||||
</option>
|
</option>
|
||||||
|
<inputType
|
||||||
|
sources="o"
|
||||||
|
multipleOfType="true"
|
||||||
|
dependencyCalculator="org.eclipse.cdt.managedbuilder.makegen.internal.DefaultNoDependencyCalculator"
|
||||||
|
buildVariable="OBJS"
|
||||||
|
id="cdt.managedbuild.tool.gnu.archiver.input">
|
||||||
|
<additionalInput
|
||||||
|
paths="$(USER_OBJS)"
|
||||||
|
kind="additionalinputdependency">
|
||||||
|
</additionalInput>
|
||||||
|
<additionalInput
|
||||||
|
paths="$(LIBS)"
|
||||||
|
kind="additionalinput">
|
||||||
|
</additionalInput>
|
||||||
|
</inputType>
|
||||||
|
<outputType
|
||||||
|
outputs="a"
|
||||||
|
outputPrefix="lib"
|
||||||
|
buildVariable="ARCHIVES"
|
||||||
|
id="cdt.managedbuild.tool.gnu.archiver.output">
|
||||||
|
</outputType>
|
||||||
</tool>
|
</tool>
|
||||||
<!--tool
|
<!--tool
|
||||||
command="windres"
|
command="windres"
|
||||||
|
@ -475,8 +526,6 @@
|
||||||
</tool-->
|
</tool-->
|
||||||
<tool
|
<tool
|
||||||
command="as"
|
command="as"
|
||||||
sources="s,S"
|
|
||||||
outputs="o"
|
|
||||||
name="%ToolName.assembler.gnu"
|
name="%ToolName.assembler.gnu"
|
||||||
outputFlag="-o"
|
outputFlag="-o"
|
||||||
id="cdt.managedbuild.tool.gnu.assembler"
|
id="cdt.managedbuild.tool.gnu.assembler"
|
||||||
|
@ -513,15 +562,21 @@
|
||||||
category="gnu.asm.category.general"
|
category="gnu.asm.category.general"
|
||||||
name="%Option.Gnu.Assembler.version"
|
name="%Option.Gnu.Assembler.version"
|
||||||
id="gnu.both.asm.option.version"/>
|
id="gnu.both.asm.option.version"/>
|
||||||
|
<inputType
|
||||||
|
sources="s,S"
|
||||||
|
id="cdt.managedbuild.tool.gnu.assembler.input">
|
||||||
|
</inputType>
|
||||||
|
<outputType
|
||||||
|
outputs="o"
|
||||||
|
buildVariable="OBJS"
|
||||||
|
id="cdt.managedbuild.tool.gnu.assembler.output">
|
||||||
|
</outputType>
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
natureFilter="cnature"
|
natureFilter="cnature"
|
||||||
sources="o"
|
|
||||||
outputs=""
|
|
||||||
name="%ToolName.linker.macosx.c"
|
name="%ToolName.linker.macosx.c"
|
||||||
outputFlag="-o"
|
outputFlag="-o"
|
||||||
command="gcc"
|
command="gcc"
|
||||||
dependencyCalculator="org.eclipse.cdt.managedbuilder.makegen.internal.DefaultNoDependencyCalculator"
|
|
||||||
id="cdt.managedbuild.tool.macosx.c.linker">
|
id="cdt.managedbuild.tool.macosx.c.linker">
|
||||||
<envVarBuildPath
|
<envVarBuildPath
|
||||||
pathType="buildpathLibrary"
|
pathType="buildpathLibrary"
|
||||||
|
@ -632,15 +687,32 @@
|
||||||
id="macosx.c.link.option.shared"
|
id="macosx.c.link.option.shared"
|
||||||
valueType="boolean">
|
valueType="boolean">
|
||||||
</option>
|
</option>
|
||||||
|
<inputType
|
||||||
|
sources="o"
|
||||||
|
multipleOfType="true"
|
||||||
|
dependencyCalculator="org.eclipse.cdt.managedbuilder.makegen.internal.DefaultNoDependencyCalculator"
|
||||||
|
buildVariable="OBJS"
|
||||||
|
id="cdt.managedbuild.tool.macosx.c.linker.input">
|
||||||
|
<additionalInput
|
||||||
|
paths="$(USER_OBJS)"
|
||||||
|
kind="additionalinputdependency">
|
||||||
|
</additionalInput>
|
||||||
|
<additionalInput
|
||||||
|
paths="$(LIBS)"
|
||||||
|
kind="additionalinput">
|
||||||
|
</additionalInput>
|
||||||
|
</inputType>
|
||||||
|
<outputType
|
||||||
|
outputs=""
|
||||||
|
buildVariable="EXECUTABLES"
|
||||||
|
id="cdt.managedbuild.tool.macosx.c.linker.output">
|
||||||
|
</outputType>
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
natureFilter="ccnature"
|
natureFilter="ccnature"
|
||||||
sources="o"
|
|
||||||
outputs=""
|
|
||||||
name="%ToolName.linker.macosx.cpp"
|
name="%ToolName.linker.macosx.cpp"
|
||||||
outputFlag="-o"
|
outputFlag="-o"
|
||||||
command="g++"
|
command="g++"
|
||||||
dependencyCalculator="org.eclipse.cdt.managedbuilder.makegen.internal.DefaultNoDependencyCalculator"
|
|
||||||
id="cdt.managedbuild.tool.macosx.cpp.linker">
|
id="cdt.managedbuild.tool.macosx.cpp.linker">
|
||||||
<envVarBuildPath
|
<envVarBuildPath
|
||||||
pathType="buildpathLibrary"
|
pathType="buildpathLibrary"
|
||||||
|
@ -742,18 +814,34 @@
|
||||||
valueType="boolean"
|
valueType="boolean"
|
||||||
id="macosx.cpp.link.option.shared">
|
id="macosx.cpp.link.option.shared">
|
||||||
</option>
|
</option>
|
||||||
|
<inputType
|
||||||
|
sources="o"
|
||||||
|
multipleOfType="true"
|
||||||
|
dependencyCalculator="org.eclipse.cdt.managedbuilder.makegen.internal.DefaultNoDependencyCalculator"
|
||||||
|
buildVariable="OBJS"
|
||||||
|
id="cdt.managedbuild.tool.macosx.cpp.linker.input">
|
||||||
|
<additionalInput
|
||||||
|
paths="$(USER_OBJS)"
|
||||||
|
kind="additionalinputdependency">
|
||||||
|
</additionalInput>
|
||||||
|
<additionalInput
|
||||||
|
paths="$(LIBS)"
|
||||||
|
kind="additionalinput">
|
||||||
|
</additionalInput>
|
||||||
|
</inputType>
|
||||||
|
<outputType
|
||||||
|
outputs=""
|
||||||
|
buildVariable="EXECUTABLES"
|
||||||
|
id="cdt.managedbuild.tool.macosx.cpp.linker.output">
|
||||||
|
</outputType>
|
||||||
</tool>
|
</tool>
|
||||||
|
|
||||||
<tool
|
<tool
|
||||||
name="%ToolName.compiler.gnu.c"
|
name="%ToolName.compiler.gnu.c"
|
||||||
id="cdt.managedbuild.tool.gnu.c.compiler"
|
id="cdt.managedbuild.tool.gnu.c.compiler"
|
||||||
isAbstract="true"
|
isAbstract="true"
|
||||||
sources="c"
|
|
||||||
command="gcc"
|
command="gcc"
|
||||||
dependencyCalculator="org.eclipse.cdt.managedbuilder.makegen.gnu.DefaultGCCDependencyCalculator"
|
|
||||||
headerExtensions="h"
|
|
||||||
natureFilter="cnature"
|
natureFilter="cnature"
|
||||||
outputs="o"
|
|
||||||
outputFlag="-o">
|
outputFlag="-o">
|
||||||
<envVarBuildPath
|
<envVarBuildPath
|
||||||
pathType="buildpathInclude"
|
pathType="buildpathInclude"
|
||||||
|
@ -987,17 +1075,24 @@
|
||||||
id="gnu.c.compiler.option.misc.ansi"
|
id="gnu.c.compiler.option.misc.ansi"
|
||||||
valueType="boolean">
|
valueType="boolean">
|
||||||
</option>
|
</option>
|
||||||
|
<inputType
|
||||||
|
sources="c"
|
||||||
|
dependencyExtensions="h"
|
||||||
|
dependencyCalculator="org.eclipse.cdt.managedbuilder.makegen.gnu.DefaultGCCDependencyCalculator"
|
||||||
|
id="cdt.managedbuild.tool.gnu.c.compiler.input">
|
||||||
|
</inputType>
|
||||||
|
<outputType
|
||||||
|
outputs="o"
|
||||||
|
buildVariable="OBJS"
|
||||||
|
id="cdt.managedbuild.tool.gnu.c.compiler.output">
|
||||||
|
</outputType>
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
name="%ToolName.compiler.gnu.cpp"
|
name="%ToolName.compiler.gnu.cpp"
|
||||||
id="cdt.managedbuild.tool.gnu.cpp.compiler"
|
id="cdt.managedbuild.tool.gnu.cpp.compiler"
|
||||||
isAbstract="true"
|
isAbstract="true"
|
||||||
sources="c,C,cc,cxx,cpp"
|
|
||||||
command="g++"
|
command="g++"
|
||||||
dependencyCalculator="org.eclipse.cdt.managedbuilder.makegen.gnu.DefaultGCCDependencyCalculator"
|
|
||||||
headerExtensions="h,H,hpp"
|
|
||||||
natureFilter="ccnature"
|
natureFilter="ccnature"
|
||||||
outputs="o"
|
|
||||||
outputFlag="-o">
|
outputFlag="-o">
|
||||||
<envVarBuildPath
|
<envVarBuildPath
|
||||||
pathType="buildpathInclude"
|
pathType="buildpathInclude"
|
||||||
|
@ -1217,6 +1312,17 @@
|
||||||
id="gnu.cpp.compiler.option.other.verbose"
|
id="gnu.cpp.compiler.option.other.verbose"
|
||||||
valueType="boolean">
|
valueType="boolean">
|
||||||
</option>
|
</option>
|
||||||
|
<inputType
|
||||||
|
sources="c,C,cc,cxx,cpp"
|
||||||
|
dependencyExtensions="h,H,hpp"
|
||||||
|
dependencyCalculator="org.eclipse.cdt.managedbuilder.makegen.gnu.DefaultGCCDependencyCalculator"
|
||||||
|
id="cdt.managedbuild.tool.gnu.cpp.compiler.input">
|
||||||
|
</inputType>
|
||||||
|
<outputType
|
||||||
|
outputs="o"
|
||||||
|
buildVariable="OBJS"
|
||||||
|
id="cdt.managedbuild.tool.gnu.cpp.compiler.output">
|
||||||
|
</outputType>
|
||||||
</tool>
|
</tool>
|
||||||
|
|
||||||
<tool
|
<tool
|
||||||
|
@ -1227,6 +1333,11 @@
|
||||||
variableList="LIBRARY_PATH"
|
variableList="LIBRARY_PATH"
|
||||||
buildPathResolver="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.CygwinPathResolver">
|
buildPathResolver="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.CygwinPathResolver">
|
||||||
</envVarBuildPath>
|
</envVarBuildPath>
|
||||||
|
<outputType
|
||||||
|
outputs="exe"
|
||||||
|
superClass="cdt.managedbuild.tool.gnu.c.linker.output"
|
||||||
|
id="cdt.managedbuild.tool.gnu.c.linker.cygwin.output">
|
||||||
|
</outputType>
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.gnu.cpp.linker.cygwin"
|
id="cdt.managedbuild.tool.gnu.cpp.linker.cygwin"
|
||||||
|
@ -1236,6 +1347,11 @@
|
||||||
variableList="LIBRARY_PATH"
|
variableList="LIBRARY_PATH"
|
||||||
buildPathResolver="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.CygwinPathResolver">
|
buildPathResolver="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.CygwinPathResolver">
|
||||||
</envVarBuildPath>
|
</envVarBuildPath>
|
||||||
|
<outputType
|
||||||
|
outputs="exe"
|
||||||
|
superClass="cdt.managedbuild.tool.gnu.cpp.linker.output"
|
||||||
|
id="cdt.managedbuild.tool.gnu.cpp.linker.cygwin.output">
|
||||||
|
</outputType>
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.gnu.c.compiler.cygwin"
|
id="cdt.managedbuild.tool.gnu.c.compiler.cygwin"
|
||||||
|
@ -1271,6 +1387,7 @@
|
||||||
archList="all"
|
archList="all"
|
||||||
osList="solaris,linux,hpux,aix,qnx"
|
osList="solaris,linux,hpux,aix,qnx"
|
||||||
name="%ToolChainName.Dbg"
|
name="%ToolChainName.Dbg"
|
||||||
|
targetTool="cdt.managedbuild.tool.gnu.c.linker.exe.debug;cdt.managedbuild.tool.gnu.cpp.linker.exe.debug"
|
||||||
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile"
|
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile"
|
||||||
id="cdt.managedbuild.toolchain.gnu.exe.debug">
|
id="cdt.managedbuild.toolchain.gnu.exe.debug">
|
||||||
<targetPlatform
|
<targetPlatform
|
||||||
|
@ -1338,6 +1455,7 @@
|
||||||
archList="all"
|
archList="all"
|
||||||
osList="solaris,linux,hpux,aix,qnx"
|
osList="solaris,linux,hpux,aix,qnx"
|
||||||
name="%ToolChainName.Rel"
|
name="%ToolChainName.Rel"
|
||||||
|
targetTool="cdt.managedbuild.tool.gnu.c.linker.exe.release;cdt.managedbuild.tool.gnu.cpp.linker.exe.release"
|
||||||
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile"
|
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile"
|
||||||
id="cdt.managedbuild.toolchain.gnu.exe.release">
|
id="cdt.managedbuild.toolchain.gnu.exe.release">
|
||||||
<targetPlatform
|
<targetPlatform
|
||||||
|
@ -1413,6 +1531,7 @@
|
||||||
archList="all"
|
archList="all"
|
||||||
osList="solaris,linux,hpux,aix,qnx"
|
osList="solaris,linux,hpux,aix,qnx"
|
||||||
name="%ToolChainName.Dbg"
|
name="%ToolChainName.Dbg"
|
||||||
|
targetTool="cdt.managedbuild.tool.gnu.c.linker.so.debug;cdt.managedbuild.tool.gnu.cpp.linker.so.debug"
|
||||||
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile"
|
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile"
|
||||||
id="cdt.managedbuild.toolchain.gnu.so.debug">
|
id="cdt.managedbuild.toolchain.gnu.so.debug">
|
||||||
<targetPlatform
|
<targetPlatform
|
||||||
|
@ -1459,25 +1578,35 @@
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.gnu.c.linker.so.debug"
|
id="cdt.managedbuild.tool.gnu.c.linker.so.debug"
|
||||||
outputs="so"
|
|
||||||
outputPrefix="lib"
|
|
||||||
superClass="cdt.managedbuild.tool.gnu.c.linker">
|
superClass="cdt.managedbuild.tool.gnu.c.linker">
|
||||||
<option
|
<option
|
||||||
id="gnu.c.link.so.debug.option.shared"
|
id="gnu.c.link.so.debug.option.shared"
|
||||||
defaultValue="true"
|
defaultValue="true"
|
||||||
superClass="gnu.c.link.option.shared">
|
superClass="gnu.c.link.option.shared">
|
||||||
</option>
|
</option>
|
||||||
|
<outputType
|
||||||
|
outputs="so"
|
||||||
|
outputPrefix="lib"
|
||||||
|
buildVariable="LIBRARIES"
|
||||||
|
superClass="cdt.managedbuild.tool.gnu.c.linker.output"
|
||||||
|
id="cdt.managedbuild.tool.gnu.c.linker.so.debug.output">
|
||||||
|
</outputType>
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.gnu.cpp.linker.so.debug"
|
id="cdt.managedbuild.tool.gnu.cpp.linker.so.debug"
|
||||||
outputs="so"
|
|
||||||
outputPrefix="lib"
|
|
||||||
superClass="cdt.managedbuild.tool.gnu.cpp.linker">
|
superClass="cdt.managedbuild.tool.gnu.cpp.linker">
|
||||||
<option
|
<option
|
||||||
id="gnu.cpp.link.so.debug.option.shared"
|
id="gnu.cpp.link.so.debug.option.shared"
|
||||||
defaultValue="true"
|
defaultValue="true"
|
||||||
superClass="gnu.cpp.link.option.shared">
|
superClass="gnu.cpp.link.option.shared">
|
||||||
</option>
|
</option>
|
||||||
|
<outputType
|
||||||
|
outputs="so"
|
||||||
|
outputPrefix="lib"
|
||||||
|
buildVariable="LIBRARIES"
|
||||||
|
superClass="cdt.managedbuild.tool.gnu.cpp.linker.output"
|
||||||
|
id="cdt.managedbuild.tool.gnu.cpp.linker.so.debug.output">
|
||||||
|
</outputType>
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.gnu.assembler.so.debug"
|
id="cdt.managedbuild.tool.gnu.assembler.so.debug"
|
||||||
|
@ -1495,6 +1624,7 @@
|
||||||
archList="all"
|
archList="all"
|
||||||
osList="solaris,linux,hpux,aix,qnx"
|
osList="solaris,linux,hpux,aix,qnx"
|
||||||
name="%ToolChainName.Rel"
|
name="%ToolChainName.Rel"
|
||||||
|
targetTool="cdt.managedbuild.tool.gnu.c.linker.so.release;cdt.managedbuild.tool.gnu.cpp.linker.so.release"
|
||||||
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile"
|
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile"
|
||||||
id="cdt.managedbuild.toolchain.gnu.so.release">
|
id="cdt.managedbuild.toolchain.gnu.so.release">
|
||||||
<targetPlatform
|
<targetPlatform
|
||||||
|
@ -1541,25 +1671,35 @@
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.gnu.c.linker.so.release"
|
id="cdt.managedbuild.tool.gnu.c.linker.so.release"
|
||||||
outputs="so"
|
|
||||||
outputPrefix="lib"
|
|
||||||
superClass="cdt.managedbuild.tool.gnu.c.linker">
|
superClass="cdt.managedbuild.tool.gnu.c.linker">
|
||||||
<option
|
<option
|
||||||
id="gnu.c.link.so.release.option.shared"
|
id="gnu.c.link.so.release.option.shared"
|
||||||
defaultValue="true"
|
defaultValue="true"
|
||||||
superClass="gnu.c.link.option.shared">
|
superClass="gnu.c.link.option.shared">
|
||||||
</option>
|
</option>
|
||||||
|
<outputType
|
||||||
|
outputs="so"
|
||||||
|
outputPrefix="lib"
|
||||||
|
buildVariable="LIBRARIES"
|
||||||
|
superClass="cdt.managedbuild.tool.gnu.c.linker.output"
|
||||||
|
id="cdt.managedbuild.tool.gnu.c.linker.so.release.output">
|
||||||
|
</outputType>
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.gnu.cpp.linker.so.release"
|
id="cdt.managedbuild.tool.gnu.cpp.linker.so.release"
|
||||||
outputs="so"
|
|
||||||
outputPrefix="lib"
|
|
||||||
superClass="cdt.managedbuild.tool.gnu.cpp.linker">
|
superClass="cdt.managedbuild.tool.gnu.cpp.linker">
|
||||||
<option
|
<option
|
||||||
id="gnu.cpp.link.so.release.option.shared"
|
id="gnu.cpp.link.so.release.option.shared"
|
||||||
defaultValue="true"
|
defaultValue="true"
|
||||||
superClass="gnu.cpp.link.option.shared">
|
superClass="gnu.cpp.link.option.shared">
|
||||||
</option>
|
</option>
|
||||||
|
<outputType
|
||||||
|
outputs="so"
|
||||||
|
outputPrefix="lib"
|
||||||
|
buildVariable="LIBRARIES"
|
||||||
|
superClass="cdt.managedbuild.tool.gnu.cpp.linker.output"
|
||||||
|
id="cdt.managedbuild.tool.gnu.cpp.linker.so.release.output">
|
||||||
|
</outputType>
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.gnu.assembler.so.release"
|
id="cdt.managedbuild.tool.gnu.assembler.so.release"
|
||||||
|
@ -1584,6 +1724,7 @@
|
||||||
archList="all"
|
archList="all"
|
||||||
osList="solaris,linux,hpux,aix,qnx"
|
osList="solaris,linux,hpux,aix,qnx"
|
||||||
name="%ToolChainName.Dbg"
|
name="%ToolChainName.Dbg"
|
||||||
|
targetTool="cdt.managedbuild.tool.gnu.archiver.lib.debug"
|
||||||
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile"
|
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile"
|
||||||
id="cdt.managedbuild.toolchain.gnu.lib.debug">
|
id="cdt.managedbuild.toolchain.gnu.lib.debug">
|
||||||
<targetPlatform
|
<targetPlatform
|
||||||
|
@ -1630,8 +1771,6 @@
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.gnu.archiver.lib.debug"
|
id="cdt.managedbuild.tool.gnu.archiver.lib.debug"
|
||||||
outputs="a"
|
|
||||||
outputPrefix="lib"
|
|
||||||
superClass="cdt.managedbuild.tool.gnu.archiver">
|
superClass="cdt.managedbuild.tool.gnu.archiver">
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
|
@ -1650,6 +1789,7 @@
|
||||||
archList="all"
|
archList="all"
|
||||||
osList="solaris,linux,hpux,aix,qnx"
|
osList="solaris,linux,hpux,aix,qnx"
|
||||||
name="%ToolChainName.Rel"
|
name="%ToolChainName.Rel"
|
||||||
|
targetTool="cdt.managedbuild.tool.gnu.archiver.lib.release"
|
||||||
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile"
|
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile"
|
||||||
id="cdt.managedbuild.toolchain.gnu.lib.release">
|
id="cdt.managedbuild.toolchain.gnu.lib.release">
|
||||||
<targetPlatform
|
<targetPlatform
|
||||||
|
@ -1696,8 +1836,6 @@
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.gnu.archiver.lib.release"
|
id="cdt.managedbuild.tool.gnu.archiver.lib.release"
|
||||||
outputs="a"
|
|
||||||
outputPrefix="lib"
|
|
||||||
superClass="cdt.managedbuild.tool.gnu.archiver">
|
superClass="cdt.managedbuild.tool.gnu.archiver">
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
|
@ -1723,6 +1861,7 @@
|
||||||
archList="all"
|
archList="all"
|
||||||
osList="win32"
|
osList="win32"
|
||||||
name="%ToolChainName.Dbg"
|
name="%ToolChainName.Dbg"
|
||||||
|
targetTool="cdt.managedbuild.tool.gnu.c.linker.cygwin.exe.debug;cdt.managedbuild.tool.gnu.cpp.linker.cygwin.exe.debug"
|
||||||
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile"
|
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile"
|
||||||
isToolChainSupported="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.IsGnuCygwinToolChainSupported"
|
isToolChainSupported="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.IsGnuCygwinToolChainSupported"
|
||||||
configurationEnvironmentSupplier="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.GnuCygwinConfigurationEnvironmentSupplier"
|
configurationEnvironmentSupplier="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.GnuCygwinConfigurationEnvironmentSupplier"
|
||||||
|
@ -1771,12 +1910,10 @@
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.gnu.c.linker.cygwin.exe.debug"
|
id="cdt.managedbuild.tool.gnu.c.linker.cygwin.exe.debug"
|
||||||
outputs="exe"
|
|
||||||
superClass="cdt.managedbuild.tool.gnu.c.linker.cygwin">
|
superClass="cdt.managedbuild.tool.gnu.c.linker.cygwin">
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.gnu.cpp.linker.cygwin.exe.debug"
|
id="cdt.managedbuild.tool.gnu.cpp.linker.cygwin.exe.debug"
|
||||||
outputs="exe"
|
|
||||||
superClass="cdt.managedbuild.tool.gnu.cpp.linker.cygwin">
|
superClass="cdt.managedbuild.tool.gnu.cpp.linker.cygwin">
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
|
@ -1795,6 +1932,7 @@
|
||||||
archList="all"
|
archList="all"
|
||||||
osList="win32"
|
osList="win32"
|
||||||
name="%ToolChainName.Rel"
|
name="%ToolChainName.Rel"
|
||||||
|
targetTool="cdt.managedbuild.tool.gnu.c.linker.cygwin.exe.release;cdt.managedbuild.tool.gnu.cpp.linker.cygwin.exe.release"
|
||||||
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile"
|
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile"
|
||||||
isToolChainSupported="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.IsGnuCygwinToolChainSupported"
|
isToolChainSupported="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.IsGnuCygwinToolChainSupported"
|
||||||
configurationEnvironmentSupplier="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.GnuCygwinConfigurationEnvironmentSupplier"
|
configurationEnvironmentSupplier="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.GnuCygwinConfigurationEnvironmentSupplier"
|
||||||
|
@ -1843,12 +1981,10 @@
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.gnu.c.linker.cygwin.exe.release"
|
id="cdt.managedbuild.tool.gnu.c.linker.cygwin.exe.release"
|
||||||
outputs="exe"
|
|
||||||
superClass="cdt.managedbuild.tool.gnu.c.linker.cygwin">
|
superClass="cdt.managedbuild.tool.gnu.c.linker.cygwin">
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.gnu.cpp.linker.cygwin.exe.release"
|
id="cdt.managedbuild.tool.gnu.cpp.linker.cygwin.exe.release"
|
||||||
outputs="exe"
|
|
||||||
superClass="cdt.managedbuild.tool.gnu.cpp.linker.cygwin">
|
superClass="cdt.managedbuild.tool.gnu.cpp.linker.cygwin">
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
|
@ -1874,6 +2010,7 @@
|
||||||
archList="all"
|
archList="all"
|
||||||
osList="win32"
|
osList="win32"
|
||||||
name="%ToolChainName.Dbg"
|
name="%ToolChainName.Dbg"
|
||||||
|
targetTool="cdt.managedbuild.tool.gnu.c.linker.cygwin.so.debug;cdt.managedbuild.tool.gnu.cpp.linker.cygwin.so.debug"
|
||||||
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile"
|
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile"
|
||||||
isToolChainSupported="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.IsGnuCygwinToolChainSupported"
|
isToolChainSupported="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.IsGnuCygwinToolChainSupported"
|
||||||
configurationEnvironmentSupplier="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.GnuCygwinConfigurationEnvironmentSupplier"
|
configurationEnvironmentSupplier="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.GnuCygwinConfigurationEnvironmentSupplier"
|
||||||
|
@ -1922,23 +2059,33 @@
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.gnu.c.linker.cygwin.so.debug"
|
id="cdt.managedbuild.tool.gnu.c.linker.cygwin.so.debug"
|
||||||
outputs="dll,a.dll"
|
|
||||||
superClass="cdt.managedbuild.tool.gnu.c.linker.cygwin">
|
superClass="cdt.managedbuild.tool.gnu.c.linker.cygwin">
|
||||||
<option
|
<option
|
||||||
id="gnu.c.link.cygwin.so.debug.option.shared"
|
id="gnu.c.link.cygwin.so.debug.option.shared"
|
||||||
defaultValue="true"
|
defaultValue="true"
|
||||||
superClass="gnu.c.link.option.shared">
|
superClass="gnu.c.link.option.shared">
|
||||||
</option>
|
</option>
|
||||||
|
<outputType
|
||||||
|
outputs="dll,a.dll"
|
||||||
|
buildVariable="LIBRARIES"
|
||||||
|
superClass="cdt.managedbuild.tool.gnu.c.linker.cygwin.output"
|
||||||
|
id="cdt.managedbuild.tool.gnu.c.linker.cygwin.so.debug.output">
|
||||||
|
</outputType>
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.gnu.cpp.linker.cygwin.so.debug"
|
id="cdt.managedbuild.tool.gnu.cpp.linker.cygwin.so.debug"
|
||||||
outputs="dll,a.dll"
|
|
||||||
superClass="cdt.managedbuild.tool.gnu.cpp.linker.cygwin">
|
superClass="cdt.managedbuild.tool.gnu.cpp.linker.cygwin">
|
||||||
<option
|
<option
|
||||||
id="gnu.cpp.link.cygwin.so.debug.option.shared"
|
id="gnu.cpp.link.cygwin.so.debug.option.shared"
|
||||||
defaultValue="true"
|
defaultValue="true"
|
||||||
superClass="gnu.cpp.link.option.shared">
|
superClass="gnu.cpp.link.option.shared">
|
||||||
</option>
|
</option>
|
||||||
|
<outputType
|
||||||
|
outputs="dll,a.dll"
|
||||||
|
buildVariable="LIBRARIES"
|
||||||
|
superClass="cdt.managedbuild.tool.gnu.cpp.linker.cygwin.output"
|
||||||
|
id="cdt.managedbuild.tool.gnu.cpp.linker.cygwin.so.debug.output">
|
||||||
|
</outputType>
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.gnu.assembler.cygwin.so.debug"
|
id="cdt.managedbuild.tool.gnu.assembler.cygwin.so.debug"
|
||||||
|
@ -1956,6 +2103,7 @@
|
||||||
archList="all"
|
archList="all"
|
||||||
osList="win32"
|
osList="win32"
|
||||||
name="%ToolChainName.Rel"
|
name="%ToolChainName.Rel"
|
||||||
|
targetTool="cdt.managedbuild.tool.gnu.c.linker.cygwin.so.release;cdt.managedbuild.tool.gnu.cpp.linker.cygwin.so.release"
|
||||||
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile"
|
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile"
|
||||||
isToolChainSupported="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.IsGnuCygwinToolChainSupported"
|
isToolChainSupported="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.IsGnuCygwinToolChainSupported"
|
||||||
configurationEnvironmentSupplier="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.GnuCygwinConfigurationEnvironmentSupplier"
|
configurationEnvironmentSupplier="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.GnuCygwinConfigurationEnvironmentSupplier"
|
||||||
|
@ -2004,23 +2152,33 @@
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.gnu.c.linker.cygwin.so.release"
|
id="cdt.managedbuild.tool.gnu.c.linker.cygwin.so.release"
|
||||||
outputs="dll,a.dll"
|
|
||||||
superClass="cdt.managedbuild.tool.gnu.c.linker.cygwin">
|
superClass="cdt.managedbuild.tool.gnu.c.linker.cygwin">
|
||||||
<option
|
<option
|
||||||
id="gnu.c.link.cygwin.so.release.option.shared"
|
id="gnu.c.link.cygwin.so.release.option.shared"
|
||||||
defaultValue="true"
|
defaultValue="true"
|
||||||
superClass="gnu.c.link.option.shared">
|
superClass="gnu.c.link.option.shared">
|
||||||
</option>
|
</option>
|
||||||
|
<outputType
|
||||||
|
outputs="dll,a.dll"
|
||||||
|
buildVariable="LIBRARIES"
|
||||||
|
superClass="cdt.managedbuild.tool.gnu.c.linker.cygwin.output"
|
||||||
|
id="cdt.managedbuild.tool.gnu.c.linker.cygwin.so.release.output">
|
||||||
|
</outputType>
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.gnu.cpp.linker.cygwin.so.release"
|
id="cdt.managedbuild.tool.gnu.cpp.linker.cygwin.so.release"
|
||||||
outputs="dll,a.dll"
|
|
||||||
superClass="cdt.managedbuild.tool.gnu.cpp.linker.cygwin">
|
superClass="cdt.managedbuild.tool.gnu.cpp.linker.cygwin">
|
||||||
<option
|
<option
|
||||||
id="gnu.cpp.link.cygwin.so.release.option.shared"
|
id="gnu.cpp.link.cygwin.so.release.option.shared"
|
||||||
defaultValue="true"
|
defaultValue="true"
|
||||||
superClass="gnu.cpp.link.option.shared">
|
superClass="gnu.cpp.link.option.shared">
|
||||||
</option>
|
</option>
|
||||||
|
<outputType
|
||||||
|
outputs="dll,a.dll"
|
||||||
|
buildVariable="LIBRARIES"
|
||||||
|
superClass="cdt.managedbuild.tool.gnu.cpp.linker.cygwin.output"
|
||||||
|
id="cdt.managedbuild.tool.gnu.cpp.linker.cygwin.so.release.output">
|
||||||
|
</outputType>
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.gnu.assembler.cygwin.so.release"
|
id="cdt.managedbuild.tool.gnu.assembler.cygwin.so.release"
|
||||||
|
@ -2045,6 +2203,7 @@
|
||||||
archList="all"
|
archList="all"
|
||||||
osList="win32"
|
osList="win32"
|
||||||
name="%ToolChainName.Dbg"
|
name="%ToolChainName.Dbg"
|
||||||
|
targetTool="cdt.managedbuild.tool.gnu.archiver.cygwin.lib.debug"
|
||||||
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile"
|
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile"
|
||||||
isToolChainSupported="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.IsGnuCygwinToolChainSupported"
|
isToolChainSupported="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.IsGnuCygwinToolChainSupported"
|
||||||
configurationEnvironmentSupplier="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.GnuCygwinConfigurationEnvironmentSupplier"
|
configurationEnvironmentSupplier="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.GnuCygwinConfigurationEnvironmentSupplier"
|
||||||
|
@ -2093,8 +2252,6 @@
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.gnu.archiver.cygwin.lib.debug"
|
id="cdt.managedbuild.tool.gnu.archiver.cygwin.lib.debug"
|
||||||
outputPrefix="lib"
|
|
||||||
outputs="a"
|
|
||||||
superClass="cdt.managedbuild.tool.gnu.archiver">
|
superClass="cdt.managedbuild.tool.gnu.archiver">
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
|
@ -2113,6 +2270,7 @@
|
||||||
archList="all"
|
archList="all"
|
||||||
osList="win32"
|
osList="win32"
|
||||||
name="%ToolChainName.Rel"
|
name="%ToolChainName.Rel"
|
||||||
|
targetTool="cdt.managedbuild.tool.gnu.archiver.cygwin.lib.release"
|
||||||
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile"
|
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile"
|
||||||
isToolChainSupported="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.IsGnuCygwinToolChainSupported"
|
isToolChainSupported="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.IsGnuCygwinToolChainSupported"
|
||||||
configurationEnvironmentSupplier="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.GnuCygwinConfigurationEnvironmentSupplier"
|
configurationEnvironmentSupplier="org.eclipse.cdt.managedbuilder.toolchain.gnu.cygwin.GnuCygwinConfigurationEnvironmentSupplier"
|
||||||
|
@ -2160,15 +2318,13 @@
|
||||||
</option>
|
</option>
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.gnu.archiver.cygwin.lib.release"
|
id="cdt.managedbuild.tool.gnu.archiver.cygwin.lib.release"
|
||||||
outputPrefix="lib"
|
superClass="cdt.managedbuild.tool.gnu.archiver">
|
||||||
outputs="a"
|
|
||||||
superClass="cdt.managedbuild.tool.gnu.archiver">
|
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.gnu.assembler.cygwin.lib.release"
|
id="cdt.managedbuild.tool.gnu.assembler.cygwin.lib.release"
|
||||||
superClass="cdt.managedbuild.tool.gnu.assembler">
|
superClass="cdt.managedbuild.tool.gnu.assembler">
|
||||||
</tool>
|
</tool>
|
||||||
</toolChain>
|
</toolChain>
|
||||||
</configuration>
|
</configuration>
|
||||||
</projectType>
|
</projectType>
|
||||||
|
@ -2187,6 +2343,7 @@
|
||||||
archList="all"
|
archList="all"
|
||||||
osList="macosx"
|
osList="macosx"
|
||||||
name="%ToolChainName.Dbg"
|
name="%ToolChainName.Dbg"
|
||||||
|
targetTool="cdt.managedbuild.tool.macosx.c.linker.macosx.exe.debug;cdt.managedbuild.tool.macosx.cpp.linker.macosx.exe.debug"
|
||||||
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile"
|
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile"
|
||||||
id="cdt.managedbuild.toolchain.gnu.macosx.exe.debug">
|
id="cdt.managedbuild.toolchain.gnu.macosx.exe.debug">
|
||||||
<targetPlatform
|
<targetPlatform
|
||||||
|
@ -2254,6 +2411,7 @@
|
||||||
archList="all"
|
archList="all"
|
||||||
osList="macosx"
|
osList="macosx"
|
||||||
name="%ToolChainName.Rel"
|
name="%ToolChainName.Rel"
|
||||||
|
targetTool="cdt.managedbuild.tool.macosx.c.linker.macosx.exe.release;cdt.managedbuild.tool.macosx.cpp.linker.macosx.exe.release"
|
||||||
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile"
|
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile"
|
||||||
id="cdt.managedbuild.toolchain.gnu.macosx.exe.release">
|
id="cdt.managedbuild.toolchain.gnu.macosx.exe.release">
|
||||||
<targetPlatform
|
<targetPlatform
|
||||||
|
@ -2329,6 +2487,7 @@
|
||||||
archList="all"
|
archList="all"
|
||||||
osList="macosx"
|
osList="macosx"
|
||||||
name="%ToolChainName.Dbg"
|
name="%ToolChainName.Dbg"
|
||||||
|
targetTool="cdt.managedbuild.tool.macosx.c.linker.macosx.so.debug;cdt.managedbuild.tool.macosx.cpp.linker.macosx.so.debug"
|
||||||
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile"
|
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile"
|
||||||
id="cdt.managedbuild.toolchain.gnu.macosx.so.debug">
|
id="cdt.managedbuild.toolchain.gnu.macosx.so.debug">
|
||||||
<targetPlatform
|
<targetPlatform
|
||||||
|
@ -2375,8 +2534,6 @@
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.macosx.c.linker.macosx.so.debug"
|
id="cdt.managedbuild.tool.macosx.c.linker.macosx.so.debug"
|
||||||
outputs="dylib"
|
|
||||||
outputPrefix="lib"
|
|
||||||
superClass="cdt.managedbuild.tool.macosx.c.linker">
|
superClass="cdt.managedbuild.tool.macosx.c.linker">
|
||||||
<option
|
<option
|
||||||
id="macosx.c.link.macosx.so.debug.option.shared"
|
id="macosx.c.link.macosx.so.debug.option.shared"
|
||||||
|
@ -2393,16 +2550,28 @@
|
||||||
defaultValue="true"
|
defaultValue="true"
|
||||||
superClass="macosx.c.link.option.nodeflibs">
|
superClass="macosx.c.link.option.nodeflibs">
|
||||||
</option>
|
</option>
|
||||||
|
<outputType
|
||||||
|
outputs="dylib"
|
||||||
|
outputPrefix="lib"
|
||||||
|
buildVariable="LIBRARIES"
|
||||||
|
superClass="cdt.managedbuild.tool.macosx.c.linker.output"
|
||||||
|
id="cdt.managedbuild.tool.macosx.c.linker.macosx.so.debug.output">
|
||||||
|
</outputType>
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.macosx.cpp.linker.macosx.so.debug"
|
id="cdt.managedbuild.tool.macosx.cpp.linker.macosx.so.debug"
|
||||||
outputs="dylib"
|
|
||||||
superClass="cdt.managedbuild.tool.macosx.cpp.linker">
|
superClass="cdt.managedbuild.tool.macosx.cpp.linker">
|
||||||
<option
|
<option
|
||||||
id="macosx.cpp.link.macosx.so.debug.option.shared"
|
id="macosx.cpp.link.macosx.so.debug.option.shared"
|
||||||
defaultValue="true"
|
defaultValue="true"
|
||||||
superClass="macosx.cpp.link.option.shared">
|
superClass="macosx.cpp.link.option.shared">
|
||||||
</option>
|
</option>
|
||||||
|
<outputType
|
||||||
|
outputs="dylib"
|
||||||
|
buildVariable="LIBRARIES"
|
||||||
|
superClass="cdt.managedbuild.tool.macosx.cpp.linker.output"
|
||||||
|
id="cdt.managedbuild.tool.macosx.cpp.linker.macosx.so.debug.output">
|
||||||
|
</outputType>
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.gnu.assembler.macosx.so.debug"
|
id="cdt.managedbuild.tool.gnu.assembler.macosx.so.debug"
|
||||||
|
@ -2420,6 +2589,7 @@
|
||||||
archList="all"
|
archList="all"
|
||||||
osList="macosx"
|
osList="macosx"
|
||||||
name="%ToolChainName.Rel"
|
name="%ToolChainName.Rel"
|
||||||
|
targetTool="cdt.managedbuild.tool.macosx.c.linker.macosx.so.release;cdt.managedbuild.tool.macosx.cpp.linker.macosx.so.release"
|
||||||
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile"
|
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile"
|
||||||
id="cdt.managedbuild.toolchain.gnu.macosx.so.release">
|
id="cdt.managedbuild.toolchain.gnu.macosx.so.release">
|
||||||
<targetPlatform
|
<targetPlatform
|
||||||
|
@ -2466,8 +2636,6 @@
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.macosx.c.linker.macosx.so.release"
|
id="cdt.managedbuild.tool.macosx.c.linker.macosx.so.release"
|
||||||
outputs="dylib"
|
|
||||||
outputPrefix="lib"
|
|
||||||
superClass="cdt.managedbuild.tool.macosx.c.linker">
|
superClass="cdt.managedbuild.tool.macosx.c.linker">
|
||||||
<option
|
<option
|
||||||
id="macosx.c.link.macosx.so.release.option.shared"
|
id="macosx.c.link.macosx.so.release.option.shared"
|
||||||
|
@ -2484,16 +2652,28 @@
|
||||||
defaultValue="true"
|
defaultValue="true"
|
||||||
superClass="macosx.c.link.option.nodeflibs">
|
superClass="macosx.c.link.option.nodeflibs">
|
||||||
</option>
|
</option>
|
||||||
|
<outputType
|
||||||
|
outputs="dylib"
|
||||||
|
outputPrefix="lib"
|
||||||
|
buildVariable="LIBRARIES"
|
||||||
|
superClass="cdt.managedbuild.tool.macosx.c.linker.output"
|
||||||
|
id="cdt.managedbuild.tool.macosx.c.linker.macosx.so.release.output">
|
||||||
|
</outputType>
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.macosx.cpp.linker.macosx.so.release"
|
id="cdt.managedbuild.tool.macosx.cpp.linker.macosx.so.release"
|
||||||
outputs="dylib"
|
|
||||||
superClass="cdt.managedbuild.tool.macosx.cpp.linker">
|
superClass="cdt.managedbuild.tool.macosx.cpp.linker">
|
||||||
<option
|
<option
|
||||||
id="macosx.cpp.link.macosx.so.release.option.shared"
|
id="macosx.cpp.link.macosx.so.release.option.shared"
|
||||||
defaultValue="true"
|
defaultValue="true"
|
||||||
superClass="macosx.cpp.link.option.shared">
|
superClass="macosx.cpp.link.option.shared">
|
||||||
</option>
|
</option>
|
||||||
|
<outputType
|
||||||
|
outputs="dylib"
|
||||||
|
buildVariable="LIBRARIES"
|
||||||
|
superClass="cdt.managedbuild.tool.macosx.cpp.linker.output"
|
||||||
|
id="cdt.managedbuild.tool.macosx.cpp.linker.macosx.so.release.output">
|
||||||
|
</outputType>
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.tool.gnu.assembler.macosx.so.release"
|
id="cdt.managedbuild.tool.gnu.assembler.macosx.so.release"
|
||||||
|
@ -2518,6 +2698,7 @@
|
||||||
archList="all"
|
archList="all"
|
||||||
osList="macosx"
|
osList="macosx"
|
||||||
name="%ToolChainName.Dbg"
|
name="%ToolChainName.Dbg"
|
||||||
|
targetTool="cdt.managedbuild.toolmacosx.lib.debug.gnu.archiver"
|
||||||
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile"
|
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile"
|
||||||
id="cdt.managedbuild.toolchain.gnu.macosx.lib.debug">
|
id="cdt.managedbuild.toolchain.gnu.macosx.lib.debug">
|
||||||
<targetPlatform
|
<targetPlatform
|
||||||
|
@ -2564,8 +2745,6 @@
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.toolmacosx.lib.debug.gnu.archiver"
|
id="cdt.managedbuild.toolmacosx.lib.debug.gnu.archiver"
|
||||||
outputPrefix="lib"
|
|
||||||
outputs="a"
|
|
||||||
superClass="cdt.managedbuild.tool.gnu.archiver">
|
superClass="cdt.managedbuild.tool.gnu.archiver">
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
|
@ -2584,6 +2763,7 @@
|
||||||
archList="all"
|
archList="all"
|
||||||
osList="macosx"
|
osList="macosx"
|
||||||
name="%ToolChainName.Rel"
|
name="%ToolChainName.Rel"
|
||||||
|
targetTool="cdt.managedbuild.toolmacosx.lib.release.gnu.archiver"
|
||||||
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile"
|
scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile"
|
||||||
id="cdt.managedbuild.toolchain.gnu.macosx.lib.release">
|
id="cdt.managedbuild.toolchain.gnu.macosx.lib.release">
|
||||||
<targetPlatform
|
<targetPlatform
|
||||||
|
@ -2630,8 +2810,6 @@
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
id="cdt.managedbuild.toolmacosx.lib.release.gnu.archiver"
|
id="cdt.managedbuild.toolmacosx.lib.release.gnu.archiver"
|
||||||
outputPrefix="lib"
|
|
||||||
outputs="a"
|
|
||||||
superClass="cdt.managedbuild.tool.gnu.archiver">
|
superClass="cdt.managedbuild.tool.gnu.archiver">
|
||||||
</tool>
|
</tool>
|
||||||
<tool
|
<tool
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* Copyright (c) 2002,2004 IBM Corporation and others.
|
* Copyright (c) 2002, 2005 IBM Corporation and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Common Public License v0.5
|
* are made available under the terms of the Common Public License v0.5
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -17,7 +17,10 @@ import java.util.List;
|
||||||
import java.util.ListIterator;
|
import java.util.ListIterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.managedbuilder.core.IBuildObject;
|
||||||
import org.eclipse.cdt.managedbuilder.core.IOptionCategory;
|
import org.eclipse.cdt.managedbuilder.core.IOptionCategory;
|
||||||
|
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
|
||||||
|
import org.eclipse.cdt.managedbuilder.core.IResourceConfiguration;
|
||||||
import org.eclipse.cdt.managedbuilder.core.ITool;
|
import org.eclipse.cdt.managedbuilder.core.ITool;
|
||||||
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
|
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
|
||||||
import org.eclipse.cdt.managedbuilder.ui.properties.BuildOptionSettingsPage;
|
import org.eclipse.cdt.managedbuilder.ui.properties.BuildOptionSettingsPage;
|
||||||
|
@ -67,6 +70,8 @@ public class ToolsSettingsBlock extends AbstractCOptionPage {
|
||||||
private static final String TREE_LABEL = LABEL + ".ToolTree"; //$NON-NLS-1$
|
private static final String TREE_LABEL = LABEL + ".ToolTree"; //$NON-NLS-1$
|
||||||
private static final String OPTIONS_LABEL = LABEL + ".ToolOptions"; //$NON-NLS-1$
|
private static final String OPTIONS_LABEL = LABEL + ".ToolOptions"; //$NON-NLS-1$
|
||||||
private static final int[] DEFAULT_SASH_WEIGHTS = new int[] { 20, 30 };
|
private static final int[] DEFAULT_SASH_WEIGHTS = new int[] { 20, 30 };
|
||||||
|
|
||||||
|
private static final String EMPTY_STRING = new String();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Dialog widgets
|
* Dialog widgets
|
||||||
|
@ -365,6 +370,9 @@ public class ToolsSettingsBlock extends AbstractCOptionPage {
|
||||||
|
|
||||||
protected void setValues() {
|
protected void setValues() {
|
||||||
|
|
||||||
|
IConfiguration config = null;
|
||||||
|
IResourceConfiguration resConfig = null;
|
||||||
|
|
||||||
if (provider == null) {
|
if (provider == null) {
|
||||||
// IResource element = parent.getProject();
|
// IResource element = parent.getProject();
|
||||||
IResource resource = (IResource) element;
|
IResource resource = (IResource) element;
|
||||||
|
@ -372,9 +380,11 @@ public class ToolsSettingsBlock extends AbstractCOptionPage {
|
||||||
optionList.setContentProvider(provider);
|
optionList.setContentProvider(provider);
|
||||||
}
|
}
|
||||||
if ( element instanceof IProject ) {
|
if ( element instanceof IProject ) {
|
||||||
optionList.setInput(parent.getSelectedConfiguration());
|
config = parent.getSelectedConfiguration();
|
||||||
|
optionList.setInput(config);
|
||||||
} else if ( element instanceof IFile){
|
} else if ( element instanceof IFile){
|
||||||
optionList.setInput(resParent.getCurrentResourceConfig());
|
resConfig = resParent.getCurrentResourceConfig();
|
||||||
|
optionList.setInput(resConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
optionList.expandAll();
|
optionList.expandAll();
|
||||||
|
@ -399,11 +409,58 @@ public class ToolsSettingsBlock extends AbstractCOptionPage {
|
||||||
// Determine what the selection in the tree should be
|
// Determine what the selection in the tree should be
|
||||||
Object primary = null;
|
Object primary = null;
|
||||||
if (selectedTool != null) {
|
if (selectedTool != null) {
|
||||||
// There is a selected tool defined
|
// There is a selected tool defined. See if it matches any current tool (by name)
|
||||||
primary = selectedTool;
|
ITool[] tools = null;
|
||||||
|
if ( element instanceof IProject ) {
|
||||||
|
tools = config.getFilteredTools();
|
||||||
|
} else if ( element instanceof IFile){
|
||||||
|
tools = resConfig.getTools();
|
||||||
|
}
|
||||||
|
String matchName = selectedTool.getName();
|
||||||
|
for (int i=0; i<tools.length; i++) {
|
||||||
|
ITool tool = tools[i];
|
||||||
|
if (tool.getName().equals(matchName)) {
|
||||||
|
primary = tool;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
} else if (selectedCategory != null) {
|
} else if (selectedCategory != null) {
|
||||||
// There is a selected option or category
|
// There is a selected option or category.
|
||||||
primary = selectedCategory;
|
// See if it matches any category in the current config (by name)
|
||||||
|
ITool[] tools = null;
|
||||||
|
if ( element instanceof IProject ) {
|
||||||
|
tools = config.getFilteredTools();
|
||||||
|
} else if ( element instanceof IFile){
|
||||||
|
tools = resConfig.getTools();
|
||||||
|
}
|
||||||
|
String matchName = EMPTY_STRING;
|
||||||
|
IBuildObject catOrTool = selectedCategory;
|
||||||
|
do {
|
||||||
|
matchName = catOrTool.getName() + matchName;
|
||||||
|
if (catOrTool instanceof ITool) break;
|
||||||
|
else if (catOrTool instanceof IOptionCategory) {
|
||||||
|
catOrTool = ((IOptionCategory)catOrTool).getOwner();
|
||||||
|
} else break;
|
||||||
|
} while (catOrTool != null);
|
||||||
|
for (int i=0; i<tools.length && primary == null; i++) {
|
||||||
|
ITool tool = tools[i];
|
||||||
|
IOptionCategory[] cats = tool.getChildCategories();
|
||||||
|
for (int j=0; j<cats.length; j++) {
|
||||||
|
String catName = EMPTY_STRING;
|
||||||
|
catOrTool = cats[j];
|
||||||
|
do {
|
||||||
|
catName = catOrTool.getName() + catName;
|
||||||
|
if (catOrTool instanceof ITool) break;
|
||||||
|
else if (catOrTool instanceof IOptionCategory) {
|
||||||
|
catOrTool = ((IOptionCategory)catOrTool).getOwner();
|
||||||
|
} else break;
|
||||||
|
} while (catOrTool != null);
|
||||||
|
if (catName.equals(matchName)) {
|
||||||
|
primary = cats[j];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (primary == null) {
|
if (primary == null) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue