blob: d35511a92dacb315e012dff31d15036a387ac83e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2011 Broadcom 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:
* Broadcom Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.core.resources;
import org.eclipse.core.runtime.IAdaptable;
/**
* Build Configurations provide a mechanism for orthogonal configuration specific
* builds within a single project. The resources plugin maintains build deltas per
* interested builder, per configuration, and allow build configurations to reference
* each other.
*<p>
* All projects have at least one build configuration. By default this
* has name {@link #DEFAULT_CONFIG_NAME}. One configuration in the project is defined
* to be 'active'. The active configuration is built by default. If unset, the
* active configuration defaults to the first configuration in the project.
*</p>
*<p>
* Build configurations are created and set on the project description using:
* {@link IProjectDescription#setBuildConfigs(String[])}.
* Build configurations set on Projects must have unique non-null names.
*</p>
*<p>
* When a project is built, a specific configuration is built. This configuration
* is passed to the builders so they can adapt their behavior
* appropriately. Builders which don't care about configurations may ignore this,
* and work as before.
*</p>
*<p>
* Build configuration can reference other builds configurations. These references are created
* using {@link IWorkspace#newBuildConfig(String, String)}, and set on the referencing project
* with {@link IProjectDescription#setBuildConfigReferences(String, IBuildConfiguration[])}.
* A referenced build configuration may have a <code>null</code> configuration name which is resolved to the
* referenced project's current active build configuration at build time.
*</p>
*<p>
* Workspace build will ensure that the projects are built in an appropriate order as defined
* by the reference graph.
*</p>
*
* @see IWorkspace#newBuildConfig(String, String)
* @see IProjectDescription#setActiveBuildConfig(String)
* @see IProjectDescription#setBuildConfigs(String[])
* @see IProjectDescription#setBuildConfigReferences(String, IBuildConfiguration[])
* @noimplement This interface is not intended to be implemented by clients.
* @noextend This interface is not intended to be extended by clients.
* @since 3.7
*/
public interface IBuildConfiguration extends IAdaptable {
/**
* The Id of the default build configuration
*/
public static final String DEFAULT_CONFIG_NAME = ""; //$NON-NLS-1$
/**
* @return the project that the config is for; never null.
*/
public IProject getProject();
/**
* Returns the human readable name of this build configuration. If this
* {@link IBuildConfiguration} is set on a Project, this can never be null.
* <p>
* If this IBuildConfiguration is being used as a reference to a build configuration
* in another project, this may be null. Such build configuration references are
* resolved to the current active configuration at build time.
* </p>
* @return the name of the configuration; or null if this is a reference to the active
* configuration
*/
public String getName();
}