/*******************************************************************************
* Copyright (c) 2004, 2011 Intel Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Intel Corporation - Initial API and implementation
* James Blackburn (Broadcom Corp.)
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.core;
import org.eclipse.cdt.core.ICommandLauncher;
import org.eclipse.cdt.core.settings.model.extension.CBuildData;
import org.eclipse.cdt.managedbuilder.macros.IFileContextBuildMacroValues;
import org.eclipse.cdt.managedbuilder.macros.IReservedMacroNameSupplier;
import org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator;
import org.eclipse.cdt.newmake.core.IMakeBuilderInfo;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
/**
* This class represents the utility that drives the build process
* (typically, but not necessarily, a variant of "make"). It defines
* the command needed to invoke the build utility in the command attribute.
* Any special flags that need to be passed to the builder are defined
* in the arguments attribute. The builder can specify the error parser(s)
* to be used to parse its output. The builder also specifies a Java class
* that generates the build file.
*
* @since 2.1
* @noextend This class is not intended to be subclassed by clients.
* @noimplement This interface is not intended to be implemented by clients.
*/
public interface IBuilder extends IHoldsOptions, IMakeBuilderInfo {
public static final String ARGUMENTS = "arguments"; //$NON-NLS-1$
public static final String BUILDER_ELEMENT_NAME = "builder"; //$NON-NLS-1$
public static final String BUILDFILEGEN_ID ="buildfileGenerator"; //$NON-NLS-1$
public static final String COMMAND = "command"; //$NON-NLS-1$
public static final String VERSIONS_SUPPORTED = "versionsSupported"; //$NON-NLS-1$
public static final String CONVERT_TO_ID = "convertToId"; //$NON-NLS-1$
public static final String VARIABLE_FORMAT = "variableFormat"; //$NON-NLS-1$
public static final String IS_VARIABLE_CASE_SENSITIVE = "isVariableCaseSensitive"; //$NON-NLS-1$
public static final String RESERVED_MACRO_NAMES = "reservedMacroNames"; //$NON-NLS-1$
public static final String RESERVED_MACRO_NAME_SUPPLIER = "reservedMacroNameSupplier"; //$NON-NLS-1$
public static final String IS_SYSTEM = "isSystem"; //$NON-NLS-1$
// static final String BUILD_COMMAND = "buildCommand"; //$NON-NLS-1$
static final String ATTRIBUTE_BUILD_PATH = "buildPath"; //$NON-NLS-1$
// static final String USE_DEFAULT_BUILD_CMD = "useDefaultBuildCmd"; //$NON-NLS-1$
static final String ATTRIBUTE_TARGET_AUTO = "autoBuildTarget"; //$NON-NLS-1$
static final String ATTRIBUTE_TARGET_INCREMENTAL = "incrementalBuildTarget"; //$NON-NLS-1$
// static final String BUILD_TARGET_FULL = "fullBuildTarget"; //$NON-NLS-1$
static final String ATTRIBUTE_TARGET_CLEAN = "cleanBuildTarget"; //$NON-NLS-1$
// static final String BUILD_FULL_ENABLED = "enableFullBuild"; //$NON-NLS-1$
static final String ATTRIBUTE_CLEAN_ENABLED = "enableCleanBuild"; //$NON-NLS-1$
static final String ATTRIBUTE_INCREMENTAL_ENABLED = "enabledIncrementalBuild"; //$NON-NLS-1$
static final String ATTRIBUTE_AUTO_ENABLED = "enableAutoBuild"; //$NON-NLS-1$
// static final String BUILD_ARGUMENTS = "buildArguments"; //$NON-NLS-1$
static final String ATTRIBUTE_ENVIRONMENT = "environment"; //$NON-NLS-1$
static final String ATTRIBUTE_APPEND_ENVIRONMENT = "appendEnvironment"; //$NON-NLS-1$
// public final static String BUILD_TARGET_INCREMENTAL = "build.target.inc"; //$NON-NLS-1$
// public final static String BUILD_TARGET_AUTO = "build.target.auto"; //$NON-NLS-1$
// public final static String BUILD_TARGET_CLEAN = "build.target.clean"; //$NON-NLS-1$
// public final static String BUILD_LOCATION = "build.location"; //$NON-NLS-1$
// public final static String BUILD_COMMAND = "build.command"; //$NON-NLS-1$
// public final static String BUILD_ARGUMENTS = "build.arguments"; //$NON-NLS-1$
static final String ATTRIBUTE_MANAGED_BUILD_ON = "managedBuildOn"; //$NON-NLS-1$
static final String ATTRIBUTE_KEEP_ENV = "keepEnvironmentInBuildfile"; //$NON-NLS-1$
static final String ATTRIBUTE_SUPORTS_MANAGED_BUILD = "supportsManagedBuild"; //$NON-NLS-1$
static final String ATTRIBUTE_CUSTOMIZED_ERROR_PARSERS = "customizedErrorParsers"; //$NON-NLS-1$
static final String ATTRIBUTE_CUSTOM_PROPS = "customBuilderProperties"; //$NON-NLS-1$
// static final String ATTRIBUTE_CUSTOMIZED_ERROR_PARSERS = "customizedErrorParsers"; //$NON-NLS-1$
static final String ATTRIBUTE_IGNORE_ERR_CMD = "ignoreErrCmd"; //$NON-NLS-1$
static final String ATTRIBUTE_STOP_ON_ERR = "stopOnErr"; //$NON-NLS-1$
static final String ATTRIBUTE_PARALLEL_BUILD_CMD = "parallelBuildCmd"; //$NON-NLS-1$
static final String ATTRIBUTE_PARALLELIZATION_NUMBER = "parallelizationNumber"; //$NON-NLS-1$
static final String ATTRIBUTE_PARALLEL_BUILD_ON = "parallelBuildOn"; //$NON-NLS-1$
static final String PARALLEL_PATTERN_NUM = "*"; //$NON-NLS-1$
static final String PARALLEL_PATTERN_NUM_START = "["; //$NON-NLS-1$
static final String PARALLEL_PATTERN_NUM_END = "]"; //$NON-NLS-1$
static final String OUTPUT_ENTRIES = "outputEntries"; //$NON-NLS-1$
static final String DEFAULT_TARGET_INCREMENTAL = "all"; //$NON-NLS-1$
static final String DEFAULT_TARGET_CLEAN = "clean"; //$NON-NLS-1$
static final String DEFAULT_TARGET_AUTO = "all"; //$NON-NLS-1$
/**
* @since 6.0
*/
static final String ATTRIBUTE_COMMAND_LAUNCHER = "commandLauncher"; //$NON-NLS-1$
/**
* @since 8.0
*/
static final String ATTRIBUTE_BUILD_RUNNER = "buildRunner"; //$NON-NLS-1$
/**
* Returns the command line arguments to pass to the build/make utility used
* to build a configuration.
*
* @return String
*/
public String getArguments();
/**
* Returns the plugin.xml element of the buildFileGenerator extension or <code>null</code> if none.
*
* @return IConfigurationElement
* @deprecated - use getBuildFileGenerator() instead
*/
@Deprecated
public IConfigurationElement getBuildFileGeneratorElement();
/**
* Returns the BuildfileGenerator used to generate buildfiles for this builder
*
* @return IManagedBuilderMakefileGenerator
*/
IManagedBuilderMakefileGenerator getBuildFileGenerator();
/**
* Returns the name of the build/make utility for the configuration.
*
* @return String
*/
public String getCommand();
/**
* Returns the semicolon separated list of unique IDs of the error parsers associated
* with the builder.
*
* @return String
*/
public String getErrorParserIds();
/**
* Returns the ordered list of unique IDs of the error parsers associated with the
* builder.
*
* @return String[]
*/
public String[] getErrorParserList();
/**
* Returns the tool-chain that is the parent of this builder.
*
* @return IToolChain
*/
public IToolChain getParent();
/**
* Returns the <code>IBuilder</code> that is the superclass of this
* target platform, or <code>null</code> if the attribute was not specified.
*
* @return IBuilder
*/
public IBuilder getSuperClass();
/**
* Returns a semi-colon delimited list of child Ids of the superclass'
* children that should not be automatically inherited by this element.
* Returns an empty string if the attribute was not specified.
* @return String
*/
public String getUnusedChildren();
/**
* Returns whether this element is abstract. Returns <code>false</code>
* if the attribute was not specified.
*
* @return boolean
*/
public boolean isAbstract();
/**
* Returns <code>true</code> if this element has changes that need to
* be saved in the project file, else <code>false</code>.
*
* @return boolean
*/
public boolean isDirty();
/**
* Returns <code>true</code> if this builder was loaded from a manifest file,
* and <code>false</code> if it was loaded from a project (.cdtbuild) file.
*
* @return boolean
*/
public boolean isExtensionElement();
/**
* Sets the arguments to be passed to the build utility used by the
* receiver to produce a build goal.
*/
public void setArguments(String makeArgs);
/**
* Sets the BuildFileGenerator plugin.xml element
*
* @deprecated as of CDT 4.0
*/
@Deprecated
public void setBuildFileGeneratorElement(IConfigurationElement element);
/**
* Sets the build command for the receiver to the value in the argument.
*/
public void setCommand(String command);
/**
* Sets the element's "dirty" (have I been modified?) flag.
*/
public void setDirty(boolean isDirty);
/**
* Sets the semicolon separated list of error parser ids
*/
public void setErrorParserIds(String ids);
/**
* Sets the isAbstract attribute of the builder.
*/
public void setIsAbstract(boolean b);
/**
* Returns the 'versionsSupported' of this builder
*
* @return String
*/
public String getVersionsSupported();
/**
* Returns the 'convertToId' of this builder
*
* @return String
*/
public String getConvertToId();
/**
* Sets the 'versionsSupported' attribute of the builder.
*/
public void setVersionsSupported(String versionsSupported);
/**
* Sets the 'convertToId' attribute of the builder.
*/
public void setConvertToId(String convertToId);
/**
* Returns the IFileContextBuildMacroValues interface reference that specifies
* the file-context macro-values provided by the tool-integrator
*
* @return IFileContextBuildMacroValues
*/
public IFileContextBuildMacroValues getFileContextBuildMacroValues();
/**
* Returns String representing the build variable pattern to be used while makefile generation
*
* @return String
*/
public String getBuilderVariablePattern();
/**
* Returns whether the builder supports case sensitive variables or not
*
* @return boolean
*/
public boolean isVariableCaseSensitive();
/**
* Returns an array of Strings representing the patterns of the builder/buildfile-generator
* reserved variables
*
* @return String[]
*/
public String[] getReservedMacroNames();
/**
* Returns the tool-integrator defined implementation of the IReservedMacroNameSupplier
* to be used for detecting the builder/buildfile-generator reserved variables
* @return IReservedMacroNameSupplier
*/
public IReservedMacroNameSupplier getReservedMacroNameSupplier();
public CBuildData getBuildData();
public boolean isCustomBuilder();
public boolean supportsCustomizedBuild();
public boolean keepEnvironmentVariablesInBuildfile();
public void setKeepEnvironmentVariablesInBuildfile(boolean keep);
public boolean canKeepEnvironmentVariablesInBuildfile();
void setBuildPath(String path);
String getBuildPath();
boolean isInternalBuilder();
boolean matches(IBuilder builder);
boolean isSystemObject();
String getUniqueRealName();
/**
* Returns the ICommandLauncher which should be used to launch the builder command.
*
* @return ICommandLauncher
* @since 6.0
*/
public ICommandLauncher getCommandLauncher();
/**
* Returns the build runner for this builder.
*
* @return build runner
* @since 8.0
*/
public AbstractBuildRunner getBuildRunner() throws CoreException;
}