diff options
Diffstat (limited to 'build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/IManagedDependencyCommands.java')
-rw-r--r-- | build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/IManagedDependencyCommands.java | 134 |
1 files changed, 67 insertions, 67 deletions
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/IManagedDependencyCommands.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/IManagedDependencyCommands.java index c3b0fb191aa..fbdfe425477 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/IManagedDependencyCommands.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/IManagedDependencyCommands.java @@ -22,61 +22,61 @@ import org.eclipse.core.runtime.IPath; * IManagedDependencyCalculator or IManagedDependencyPreBuild. * An object implementing the interface is returned from a call to * IManagedDependencyGenerator2.getDependencySourceInfo. - * + * * Discussion of Dependency Calculation: - * - * There are two major, and multiple minor, modes of dependency calculation + * + * There are two major, and multiple minor, modes of dependency calculation * supported by the MBS. The major modes are: - * - * 1. The build file generator invokes tool integrator provided methods + * + * 1. The build file generator invokes tool integrator provided methods * that calculate all dependencies using whatever method the tool * integrator wants. The build file generator then adds the dependencies - * to the build file using the appropriate build file syntax. + * to the build file using the appropriate build file syntax. * See the IManagedDependencyCalculator interface for more information. * - * 2. The build file generator and the tool-chain cooperate in creating and + * 2. The build file generator and the tool-chain cooperate in creating and * using separate "dependency" files. The build file generator calls * the dependency calculator to get the dependency file names and to get - * commands that need to be added to the build file. In this case, - * dependency calculation is done at "build time", rather than at - * "build file generation time" as in mode #1. This currently + * commands that need to be added to the build file. In this case, + * dependency calculation is done at "build time", rather than at + * "build file generation time" as in mode #1. This currently * supports the GNU concept of using .d files in GNU make. - * + * * There are multiple ways that these separate dependency files can - * be created by the tool-chain and used by the builder. - * + * be created by the tool-chain and used by the builder. + * * a. In some cases (e.g., Fortran 90 using modules) the dependency files - * must be created/updated prior to invoking the build of the project - * artifact (e.g., an application). In this case, the dependency + * must be created/updated prior to invoking the build of the project + * artifact (e.g., an application). In this case, the dependency * generation step must occur separately before the main build. * See the IManagedDependencyPreBuild interface for more information. - * + * * b. In other cases (e.g., C/C++) the dependency files can be created as - * a side effect of the main build. This implies that the up to date - * dependency files are not required for the current build, but for - * the next build. C/C++ builds can be treated in this manner as is - * described in the following link: + * a side effect of the main build. This implies that the up to date + * dependency files are not required for the current build, but for + * the next build. C/C++ builds can be treated in this manner as is + * described in the following link: * http://www.gnu.org/software/automake/manual/html_node/Dependency-Tracking-Evolution.html#Dependency-Tracking-Evolution * - * Use the IManagedDependencyCommands interface defined in this file + * Use the IManagedDependencyCommands interface defined in this file * for this mode. - * + * * Two sub-scenarios of this mode are to: - * - * Create dependency files in the same invocation of the tool that - * creates the tool's build artifact - by adding additional options + * + * Create dependency files in the same invocation of the tool that + * creates the tool's build artifact - by adding additional options * to the tool invocation command line. - * + * * Create dependency files in a separate invocation of the tool, or * by the invocation of another tool. - * + * * MBS can also help in the generation of the dependency files. Prior to * CDT 3.1, MBS and gcc cooperated in generating dependency files using the * following steps: - * - * 1. Gcc is invoked to perform the compilation that generates the object + * + * 1. Gcc is invoked to perform the compilation that generates the object * file. - * + * * 2. An "echo" command creates the .d file, adding the name of the .d * file to the beginning of the newly created .d file. Note that this * causes problems with some implementations of "echo" that don't @@ -84,87 +84,87 @@ import org.eclipse.core.runtime.IPath; * switch). * 3. Gcc is invoked again with the appropriate additional command line - * options to append its dependency file information to the .d file + * options to append its dependency file information to the .d file * that was created by "echo". - * + * * 4. Steps 1 - 3 are invoked in the make file. Step 4 occurs after the - * make invocation has finished. In step 4, MBS code post-processes - * the .d files to add a dummy dependency for each header file, for + * make invocation has finished. In step 4, MBS code post-processes + * the .d files to add a dummy dependency for each header file, for * the reason explained in the link above. - * - * This mode is no longer used by the default gcc implementation, but can - * still be used by selecting the DefaultGCCDependencyCalculator. - * - * + * + * This mode is no longer used by the default gcc implementation, but can + * still be used by selecting the DefaultGCCDependencyCalculator. + * + * * Note for GNU make: these separate dependency files are "include"d by - * a main makefile. Therefore, if the dependency files are required to + * a main makefile. Therefore, if the dependency files are required to * be up to date before the main build begins, they must be updated by * a separate invocation of make. Also, the configuration "clean" step * must be invoked by a separate invocation of make. This is so that - * we can exclude the dependency files for a "make clean" invocation + * we can exclude the dependency files for a "make clean" invocation * using syntax like: - * + * * ifneq ($(MAKECMDGOALS), clean) * -include $(DEPS) * endif - * + * * Otherwise, because GNU make attempts to re-make make files, we - * can end up with out of date or missing dependency files being + * can end up with out of date or missing dependency files being * re-generated and then immediately "clean"ed. */ public interface IManagedDependencyCommands extends IManagedDependencyInfo { - + /** * Returns the list of generated dependency files. - * - * The paths can be either relative to the top build directory, or absolute + * + * The paths can be either relative to the top build directory, or absolute * in the file system. * - * @return IPath[] + * @return IPath[] */ public IPath[] getDependencyFiles(); /** - * Returns the command lines to be invoked before the normal tool invocation + * Returns the command lines to be invoked before the normal tool invocation * to calculate dependencies. - * - * @return String[] This can be null or an empty array if no dependency - * generation command needs to be invoked before the normal + * + * @return String[] This can be null or an empty array if no dependency + * generation command needs to be invoked before the normal * tool invocation. */ public String[] getPreToolDependencyCommands(); - + /** * Returns the command line options to be used to calculate dependencies. - * The options are added to the normal tool invocation. - * - * @return String[] This can be null or an empty array if no additional + * The options are added to the normal tool invocation. + * + * @return String[] This can be null or an empty array if no additional * arguments need to be added to the tool invocation. * SHOULD THIS RETURN AN IOption[]? */ public String[] getDependencyCommandOptions(); // IMPLEMENTATION NOTE: This should be called from addRuleFromSource for both resconfig & non-resconfig - + /** - * Returns the command lines to be invoked after the normal tool invocation - * to calculate dependencies. - * - * @return String[] This can be null or an empty array if no dependency - * generation commands needs to be invoked after the normal + * Returns the command lines to be invoked after the normal tool invocation + * to calculate dependencies. + * + * @return String[] This can be null or an empty array if no dependency + * generation commands needs to be invoked after the normal * tool invocation */ public String[] getPostToolDependencyCommands(); - + /** * Returns true if the command lines and/or options returned by this interface * are not specific to the particular source file, but are only specific to, - * at most, the configuration and tool. If the build context is a resource - * configuration, this method should return false if any of the command lines - * and/or options are different than if the build context were the parent + * at most, the configuration and tool. If the build context is a resource + * configuration, this method should return false if any of the command lines + * and/or options are different than if the build context were the parent * configuration. This can be used by the build file generator in helping * to determine if a "pattern" (generic) rule can be used. - * + * * @return boolean */ public boolean areCommandsGeneric(); |