1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-05 08:46:02 +02:00

Bug 505882: Fork the GnuMakefileGenerator into non-API

The GnuMakefileGenerator is a huge file that needs lots of fixes.
However most of the time to implement the fixes are taken up trying
to not break API. Most extenders of CDT provide their own
implementation of GnuMakefileGenerator by copying the CDT one
and modifying it. Therefore CDT is going to take that same
approach internally and leave the existing GnuMakefileGenerator
in its unmodifiable state.

Change-Id: I12fafb5e347112648a02d4593267bd88a47b5c88
This commit is contained in:
Jonah Graham 2021-09-10 13:56:25 -04:00 committed by Torbjörn Svensson
parent 4a7bd0d1b4
commit 8d173637f7
16 changed files with 5992 additions and 35 deletions

View file

@ -1234,7 +1234,7 @@
name="Dbg Builder"
command="make"
arguments="-k"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="cdt.managedbuild.tool.testgnu.c.compiler.exe.debug"
@ -2603,7 +2603,7 @@
name="MBS30BuilderName.Dbg"
command="make"
arguments="-k"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="cdt.managedbuild.tool.testgnu30.c.compiler.exe.debug"
@ -2668,7 +2668,7 @@
name="MBS30BuilderName.Rel"
command="make"
arguments="-k"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="cdt.managedbuild.tool.testgnu30.c.compiler.exe.release"
@ -2741,7 +2741,7 @@
name="MBS30BuilderName.Dbg"
command="make"
arguments="-k"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="cdt.managedbuild.tool.testgnu30.c.compiler.so.debug"
@ -2831,7 +2831,7 @@
name="MBS30BuilderName.Rel"
command="make"
arguments="-k"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="cdt.managedbuild.tool.testgnu30.c.compiler.so.release"
@ -2928,7 +2928,7 @@
name="MBS30BuilderName.Dbg"
command="make"
arguments="-k"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="cdt.managedbuild.tool.testgnu30.c.compiler.lib.debug"
@ -2990,7 +2990,7 @@
name="MBS30BuilderName.Rel"
command="make"
arguments="-k"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="cdt.managedbuild.tool.testgnu30.c.compiler.lib.release"
@ -3093,7 +3093,7 @@
name="BuilderDbg"
command="make"
arguments="-k"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="cdt.managedbuild.tool.Testprepost30.gnu.c.compiler.exe.debug"
@ -3179,7 +3179,7 @@
<builder
id="test30_1.gnu.so.builder"
name="Builder for test30_1"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="test30_1.gnu.so.c.compiler"
@ -3393,7 +3393,7 @@
name="Platform for test30_sto"
osList="all"/>
<builder
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator"
id="test30_sto.dummy.builder"
isAbstract="false"
name="Builder for test30_sto"/>
@ -3513,7 +3513,7 @@
<builder
id="test30_2.tar.builder"
name="Builder for test30_2"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
name="tar-create"
@ -3658,7 +3658,7 @@
variableFormat="@="
isVariableCaseSensitive="false"
reservedMacroNames="PATH"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="cdt.managedbuild.tool.testenv.c.compiler.exe.debug"
@ -4030,7 +4030,7 @@
variableFormat="@="
isVariableCaseSensitive="false"
reservedMacroNames="PATH"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="cdt.managedbuild.tool.testMultipleVersions.c.compiler.exe.debug_1.1.0"
@ -4171,7 +4171,7 @@
variableFormat="@="
isVariableCaseSensitive="false"
reservedMacroNames="PATH"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="tool.testProjectConverterConvenienceRoutines.c.compiler.exe.debug_1.1.0"
@ -4201,7 +4201,7 @@
targetTool="org.eclipse.cdt.managedbuilder.core.tests.BDMacroSupportBarTool">
<builder
arguments="-k"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator"
command="make"
id="org.eclipse.cdt.managedbuilder.core.tests.BDMacroSupportBuilder"
isAbstract="false"
@ -4335,7 +4335,7 @@
name="Test Builder Version 1.0"
command="make"
arguments="-k"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="test.tool1_1.0.0"
@ -4378,7 +4378,7 @@
name="Test Builder Version 2.0"
command="make"
arguments="-k"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="test.tool1_2.0.0"
@ -4481,7 +4481,7 @@
name="Test Builder Version 1.0"
command="make"
arguments="-k"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="testProject.tool1_1.0.0"
@ -4522,7 +4522,7 @@
name="Test Builder Version 2.0"
command="make"
arguments="-k"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="testProject.tool1_2.0.0"
@ -4750,7 +4750,7 @@
name="Builder.Executable.Release"
command="make"
arguments="-k"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="cdt.test.fortran.compilestep.executable.release"
@ -4794,7 +4794,7 @@
name="Builder.Executable.Debug"
command="make"
arguments="-k"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="cdt.test.fortran.compilestep.executable.debug"
@ -4852,7 +4852,7 @@
name="AssignToOption Builder"
command="make"
arguments="-k"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
</toolChain>
</configuration>
@ -5166,7 +5166,7 @@
name="Builder"
command="make"
arguments="-k"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
</toolChain>
</configuration>
@ -5239,7 +5239,7 @@
name="Builder"
command="make"
arguments="-k"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
</toolChain>
</configuration>
@ -5283,7 +5283,7 @@
variableFormat="@="
isVariableCaseSensitive="false"
reservedMacroNames="PATH"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="enablement.this.child_1.2.3"
@ -6474,7 +6474,7 @@
name="MBS30BuilderName.Dbg"
command="make"
arguments="-k"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="cdt.managedbuild.tool.bdm.c.compiler.exe.debug"
@ -8151,7 +8151,7 @@
variableFormat="${=}"
isVariableCaseSensitive="true"
reservedMacroNames="ROOT,DEPS,OBJS,.*_SRCS,EXECUTABLES,SUBDIRS,LIBS,USER_OBJS,.*_INPUTS,.*_OUTPUTS"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator"
macroInputFileNameValue="$(notdir $&lt;)"
macroInputFileExtValue="$(suffix $(notdir $&lt;))"
macroInputFileBaseNameValue="$(basename $(notdir $&lt;))"

View file

@ -15,7 +15,7 @@ package org.eclipse.cdt.managedbuilder.core.tests;
import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
import org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator;
import org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator;
import org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceDelta;

View file

@ -85,7 +85,7 @@ public class ManagedBuildCoreTests extends TestCase {
String expectedCommand = "make";
String expectedArguments = "-k";
String[] expectedBuilderName = { "Dbg Builder", "Rel Builder" };
String expectedBuilderInfo = "org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator";
String expectedBuilderInfo = "org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator";
String[] expectedToolId1 = { "cdt.managedbuild.tool.testgnu.c.compiler.exe.debug",
"cdt.managedbuild.tool.testgnu.c.compiler.exe.release" };
String expectedSuperToolId1 = "cdt.managedbuild.tool.testgnu.c.compiler";

View file

@ -24,6 +24,7 @@ Export-Package: org.eclipse.cdt.build.core.scannerconfig,
org.eclipse.cdt.managedbuilder.macros,
org.eclipse.cdt.managedbuilder.makegen,
org.eclipse.cdt.managedbuilder.makegen.gnu,
org.eclipse.cdt.managedbuilder.makegen.gnu2;x-internal:=true,
org.eclipse.cdt.managedbuilder.makegen.internal;x-internal:=true,
org.eclipse.cdt.managedbuilder.pdomdepgen,
org.eclipse.cdt.managedbuilder.projectconverter,

View file

@ -355,7 +355,7 @@
variableFormat="${=}"
isVariableCaseSensitive="true"
reservedMacroNames="ROOT,DEPS,OBJS,.*_SRCS,EXECUTABLES,SUBDIRS,LIBS,USER_OBJS,.*_INPUTS,.*_OUTPUTS"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator"
macroInputFileNameValue="$(notdir $&lt;)"
macroInputFileExtValue="$(suffix $(notdir $&lt;))"
macroInputFileBaseNameValue="$(basename $(notdir $&lt;))"

View file

@ -111,7 +111,7 @@ import org.eclipse.cdt.managedbuilder.internal.macros.BuildMacroProvider;
import org.eclipse.cdt.managedbuilder.internal.tcmodification.ToolChainModificationManager;
import org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider;
import org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator;
import org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator;
import org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator;
import org.eclipse.cdt.managedbuilder.projectconverter.UpdateManagedProjectManager;
import org.eclipse.cdt.managedbuilder.tcmodification.IToolChainModificationManager;
import org.eclipse.core.resources.ICommand;

View file

@ -23,8 +23,14 @@ package org.eclipse.cdt.managedbuilder.makegen.gnu;
public class GnuDependencyGroupInfo {
// Member Variables
String groupBuildVar;
boolean conditionallyInclude;
/**
* @noreference
*/
public String groupBuildVar;
/**
* @noreference
*/
public boolean conditionallyInclude;
// ArrayList groupFiles;
// Constructor

View file

@ -112,7 +112,9 @@ import org.eclipse.core.runtime.SubProgressMonitor;
*
* @since 1.2
* @noinstantiate This class is not intended to be instantiated by clients.
* @deprecated Replaced by {@link org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator}
*/
@Deprecated
public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator2 {
private static final IPath DOT_SLASH_PATH = new Path("./"); //$NON-NLS-1$

View file

@ -21,7 +21,9 @@ import java.util.Vector;
*
* @noextend This class is not intended to be subclassed by clients.
* @noimplement This interface is not intended to be implemented by clients.
* @deprecated Replaced by {@link org.eclipse.cdt.managedbuilder.makegen.gnu2.IManagedBuildGnuToolInfo}
*/
@Deprecated
public interface IManagedBuildGnuToolInfo {
public final String DOT = "."; //$NON-NLS-1$

View file

@ -54,7 +54,9 @@ import org.eclipse.core.runtime.Path;
* and outputs while a Gnu makefile is being generated.
*
* @noextend This class is not intended to be subclassed by clients.
* @deprecated Replaced by {@link org.eclipse.cdt.managedbuilder.makegen.gnu2.ManagedBuildGnuToolInfo}
*/
@Deprecated
public class ManagedBuildGnuToolInfo implements IManagedBuildGnuToolInfo {
/*

View file

@ -0,0 +1,128 @@
/*******************************************************************************
* Copyright (c) 2005, 2010 Intel Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Intel Corporation - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.makegen.gnu2;
import java.util.Vector;
/**
* This interface returns information about a Tool's inputs
* and outputs while a Gnu makefile is being generated.
*
* @noextend This class is not intended to be subclassed by clients.
* @noimplement This interface is not intended to be implemented by clients.
*/
public interface IManagedBuildGnuToolInfo {
public final String DOT = "."; //$NON-NLS-1$
/**
* Returns <code>true</code> if the tool's inputs have been calculated,
* else <code>false</code>.
*
* @return boolean
*/
public boolean areInputsCalculated();
/**
* Returns the tool's inputs in command line format. This will use
* variables rather than actual file names as appropriate.
*
* @return Vector
*/
public Vector<String> getCommandInputs();
/**
* Returns the raw list of tool's input file names.
*
* @return Vector
*/
public Vector<String> getEnumeratedInputs();
/**
* Returns <code>true</code> if the tool's outputs have been calculated,
* else <code>false</code>.
*
* @return boolean
*/
public boolean areOutputsCalculated();
/**
* Returns the tool's outputs in command line format. This will use
* variables rather than actual file names as appropriate.
*
* @return Vector
*/
public Vector<String> getCommandOutputs();
/**
* Returns the raw list of tool's primary output file names.
*
* @return Vector
*/
public Vector<String> getEnumeratedPrimaryOutputs();
/**
* Returns the raw list of tool's secondary output file names.
*
* @return Vector
*/
public Vector<String> getEnumeratedSecondaryOutputs();
/**
* Returns the raw list of tool's output variable names.
*
* @return Vector
*/
public Vector<String> getOutputVariables();
/**
* Returns <code>true</code> if the tool's dependencies have been calculated,
* else <code>false</code>.
*
* @return boolean
*/
public boolean areDependenciesCalculated();
/**
* Returns the tool's dependencies in command line format. This will use
* variables rather than actual file names as appropriate.
* Dependencies are top build directory relative.
*
* @return Vector
*/
public Vector<String> getCommandDependencies();
/**
* Returns the tool's additional targets as determined by the
* dependency calculator.
* Additional targets are top build directory relative
*
* @return Vector
*/
public Vector<String> getAdditionalTargets();
/**
* Returns the raw list of tool's input dependencies.
*
* @return Vector
*/
//public Vector<String> getEnumeratedDependencies();
/**
* Returns <code>true</code> if this is the target tool
* else <code>false</code>.
*
* @return boolean
*/
public boolean isTargetTool();
}

View file

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.managedbuilder.gnu.ui; singleton:=true
Bundle-Version: 8.4.100.qualifier
Bundle-Version: 8.4.200.qualifier
Bundle-Activator: org.eclipse.cdt.managedbuilder.gnu.ui.GnuUIPlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin

View file

@ -2168,7 +2168,7 @@
variableFormat="${=}"
isVariableCaseSensitive="true"
reservedMacroNames="ROOT,DEPS,OBJS,.*_SRCS,EXECUTABLES,SUBDIRS,LIBS,USER_OBJS,.*_INPUTS,.*_OUTPUTS"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator"
buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator"
macroInputFileNameValue="$(notdir $&lt;)"
macroInputFileExtValue="$(suffix $(notdir $&lt;))"
macroInputFileBaseNameValue="$(basename $(notdir $&lt;))"

View file

@ -63,6 +63,12 @@
<li><a href="#GnuMakefileGenerator.addRuleForTool">Removed unneded boolean from function</a></li>
<li><a href="#GnuMakefileGenerator.addDefaultHeader">Changed methods from static to non-static</a></li>
</ol>
<p>
Planned Removals after December 2023
</p>
<ol>
<li><a href="#GnuMakefileGeneratorAPI">GnuMakefileGenerator is no longer part of API</a></li>
</ol>
<p>
API Changes prior to CDT 10.0 / 2020-09.
@ -488,6 +494,22 @@
<p>
See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=573722" target="_blank">Bug 573722</a>.
</p>
<h3>API Removals after December 2023</h3>
<h3>1. <a name="GnuMakefileGeneratorAPI">GnuMakefileGenerator is no longer part of API</a></h3>
<p>
The following classes have been removed from the API.
</p>
<ul>
<li>org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator</li>
<li>org.eclipse.cdt.managedbuilder.makegen.gnu.IManagedBuildGnuToolInfo</li>
<li>org.eclipse.cdt.managedbuilder.makegen.gnu.ManagedBuildGnuToolInfo</li>
</ul>
<p>
See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=505882" target="_blank">Bug 505882</a>.
</p>
</body>
</html>