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