/*******************************************************************************
 * 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();

}
