Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'build/org.eclipse.cdt.autotools.core')
-rw-r--r--build/org.eclipse.cdt.autotools.core/.classpath7
-rw-r--r--build/org.eclipse.cdt.autotools.core/.gitignore5
-rw-r--r--build/org.eclipse.cdt.autotools.core/.project34
-rw-r--r--build/org.eclipse.cdt.autotools.core/.settings/org.eclipse.jdt.core.prefs11
-rw-r--r--build/org.eclipse.cdt.autotools.core/.settings/org.eclipse.jdt.ui.prefs3
-rw-r--r--build/org.eclipse.cdt.autotools.core/ChangeLog4354
-rw-r--r--build/org.eclipse.cdt.autotools.core/META-INF/MANIFEST.MF33
-rw-r--r--build/org.eclipse.cdt.autotools.core/about.html28
-rw-r--r--build/org.eclipse.cdt.autotools.core/build.properties9
-rw-r--r--build/org.eclipse.cdt.autotools.core/html/maintopic.html13
-rw-r--r--build/org.eclipse.cdt.autotools.core/html/subtopic.html13
-rw-r--r--build/org.eclipse.cdt.autotools.core/html/toc.html13
-rw-r--r--build/org.eclipse.cdt.autotools.core/plugin.properties180
-rw-r--r--build/org.eclipse.cdt.autotools.core/plugin.xml568
-rw-r--r--build/org.eclipse.cdt.autotools.core/pom.xml17
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/autotools/core/AutotoolsNewProjectNature.java237
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/autotools/core/AutotoolsPlugin.java293
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/autotools/core/Resources.properties111
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsConfigurationBuilder.java168
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsNewMakeGenerator.java1452
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsProblemMarkerInfo.java58
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsPropertyConstants.java56
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/DefaultNoDependencyCalculator.java51
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/ErrorParser.java233
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/ErrorParserManager.java475
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/IAutotoolsMarker.java21
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/IConfigurationCloneListener.java12
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/MakeMessages.java57
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/MarkerGenerator.java188
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/MarkerResolutionGenerator.java28
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/PkgconfigErrorResolution.java123
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/VersionComparator.java57
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AbstractConfigurationOption.java77
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsConfiguration.java342
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsConfigurationManager.java530
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsOptionValueHandler.java123
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/BinConfigureOption.java62
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/ConfigureMessages.java64
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/ConfigureMessages.properties101
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/ConfigureOptionCategory.java78
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/ConfigureTool.java64
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/FlagConfigureOption.java106
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/FlagValueConfigureOption.java56
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/IAConfiguration.java30
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/IConfigureOption.java39
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/IFlagConfigureValueOption.java17
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/InternalConfigureOption.java59
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/MultiArgConfigureOption.java119
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/StringConfigureOption.java62
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/wizards/NewAutotoolsProject.java143
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/wizards/SetAutotoolsStringOptionValue.java79
51 files changed, 11059 insertions, 0 deletions
diff --git a/build/org.eclipse.cdt.autotools.core/.classpath b/build/org.eclipse.cdt.autotools.core/.classpath
new file mode 100644
index 00000000000..8a8f1668cdc
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/build/org.eclipse.cdt.autotools.core/.gitignore b/build/org.eclipse.cdt.autotools.core/.gitignore
new file mode 100644
index 00000000000..8d94ef8debe
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/.gitignore
@@ -0,0 +1,5 @@
+bin
+@dot
+javaCompiler...args
+build.xml
+target
diff --git a/build/org.eclipse.cdt.autotools.core/.project b/build/org.eclipse.cdt.autotools.core/.project
new file mode 100644
index 00000000000..7c4082aeb19
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.autotools.core</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/build/org.eclipse.cdt.autotools.core/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.autotools.core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..54e493c07c9
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/build/org.eclipse.cdt.autotools.core/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.autotools.core/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..4c7131801a1
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,3 @@
+#Tue Jan 02 14:11:13 EST 2007
+eclipse.preferences.version=1
+internal.default.compliance=default
diff --git a/build/org.eclipse.cdt.autotools.core/ChangeLog b/build/org.eclipse.cdt.autotools.core/ChangeLog
new file mode 100644
index 00000000000..f7908a25bd0
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/ChangeLog
@@ -0,0 +1,4354 @@
+2012-01-03 Jeff Johnston <jjohnstn@redhat.com>
+
+ Refactor all packages to be org.eclipse.cdt.autotools.core.
+
+2011-12-16 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsPropertyConstants.java (fACVersions): Add
+ 2.68.
+ (fAMVersions): Add 1.11.1.
+
+2011-10-19 Jeff Johnston <jjohnstn@redhat.com>
+
+ Bug #361461
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsNewMakeGenerator.java (regenerateMakefiles): Fix autogen.sh
+ case whereby autogen.sh doesn't run or create configure script.
+
+2011-10-03 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/FlagConfigureOption.java (getParameter): Remote
+ extraneous space at beginning of CFLAGS constructed string.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/ConfigureMessages.properties: Fix tips for
+ various CFLAGS settings.
+
+2011-10-03 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/AbstractConfigurationOption.java (isFlag): New method.
+ (isFlagValue): Ditto.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/AutotoolsConfigurationManager.java (getSavedConfigs): Add
+ support for flags and flag values.
+ (saveConfigs): Ditto.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/AutotoolsConfiguration.java (initConfigOptions): Ditto.
+ (configOpts): New CFLAGS and value options.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/ConfigureMessages.java (getParameter): New method.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/ConfigureOptionCategory.java (isFlagValue): New method.
+ (isFlag): Ditto.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/IConfigureOption.java (isFlag): New method.
+ (isFlagValue): Ditto.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/ConfigureMessages.properties: Add new messages
+ for CFLAGS settings.
+
+2011-09-27 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsNewMakeGenerator.java (runScript): Add
+ check for additionalEnvs not being null to prevent NPE.
+
+2011-09-15 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves bug#356278
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsNewMakeGenerator.java (stripEnvVarsFromOption): New
+ method.
+ (runScript): Strip env-vars from script options. Also display any env-vars stripped from command and options.
+ (stripEnvVars): Rewrite so quoted strings are checked first and then simplify the last type of specifier to
+ just non-space value.
+ * src/org/eclipse/linuxtools/cdt/autotools/core/Resources.properties: Add new
+ message.
+
+2011-08-24 Sami Wagiaalla <swagiaal@redhat.com>
+
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/MarkerGenerator.java (addMarker):
+ Add all attributes using the attribute map.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/ErrorParser.java:
+ Small cleanups.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsProblemMarkerInfo.java:
+ Use attribute setter and getter.
+ (getProblemType): New.
+ (getLibraryInfo): New.
+ (mySetType): New.
+ (mySetAttribute): New.
+ (myGetAttribute): New.
+ (myGetAttributes): New.
+ * plugin.xml: Set AutoconfErrorParser name and id.
+
+2011-08-16 Jeff Johnston <jjohnstn@redhat.com>
+
+ * META-INF/MANIFEST.MF: Bump version to 1.0.2.
+ * pom.xml: Ditto.
+
+2011-07-25 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves: bug#351660
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsNewMakeGenerator.java (addMakeTargetsToManager):
+ Fix to set MakeTargets to a single dummy target with invalid name to avoid MakeTargetManager from trying
+ to send out extraneous change event.
+
+2011-07-20 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves: bug#351660
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsNewMakeGenerator.java (addMakeTargetsToManager):
+ Fix to always create a new MakeTarget rather than finding an existing one so that
+ modifications made do not result in events being sent to project/workspace.
+
+2011-07-14 Sami Wagiaalla <swagiaal@redhat.com>
+
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/MarkerGenerator.java (addMarker):
+ Use argument problemMarkerInfo.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/ErrorParserManager.java (addProblemMarker):
+ New method.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/ErrorParser.java:
+ Implement IErrorParser.
+ (ErrorParser): New no argument constructor.
+ Remove epm instance variable.
+ Add project instance variable.
+ (processLine): New.
+ (processLine): Use addProblemMarker.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsProblemMarkerInfo.java:
+ Extend org.eclipse.cdt.core.ProblemMarkerInfo.
+ (AutotoolsProblemMarkerInfo): Call super().
+ * plugin.xml: Added ErrorParser to org.eclipse.cdt.core.ErrorParser
+ extension point.
+
+2011-07-13 Sami Wagiaalla <swagiaal@redhat.com>
+
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/MarkerGenerator.java (addMarker):
+ Set the markers type attribute.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/IAutotoolsMarker.java (MARKER_PROBLEM_TYPE):
+ New global constant.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/ErrorParserManager.java (generateExternalMarker):
+ Take type argument.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/ErrorParser.java (getCheckType):
+ Return AutotoolsProblemMarkerInfo.Type object instead of String.
+ (processLine): Pass Type to generateMarker().
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsProblemMarkerInfo.java:
+ Added Type enum.
+ (type): New instance variable.
+ (AutotoolsProblemMarkerInfo): Constructors now takes type argument.
+
+2011-07-13 Sami Wagiaalla <swagiaal@redhat.com>
+
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsNewMakeGenerator.java (getBuildPath):
+ New.
+ (getSourcePath): New.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/ErrorParser.java (getCheckType):
+ Use source directory to find configure.
+ (ErrorParser): Take sourceDir argument.
+
+2011-07-13 Sami Wagiaalla <swagiaal@redhat.com>
+
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/ErrorParser.java (processLine):
+ Look for failed checks.
+ (getCheckType): New.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsNewMakeGenerator.java (getConfigurePath):
+ New.
+ (runCommand): Pass configure path when creating ErrorParser.
+ (runScript): Ditto.
+
+2011-06-22 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves: #349881
+ * plugin.xml: Add call-on-empty-delta behaviour for Autotools builder.
+
+2011-06-16 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves: #348432
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/VersionComparator.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsPropertyConstants.java: Add new
+ constants for various Autoconf versions.
+
+2011-05-26 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves #343879
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsNewMakeGenerator.java (runScript):
+ For Windows/Mac targets, do not pass PWD environment variable forward.
+
+2011-05-19 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/ErrorParserManager.java (outputLine): Fix
+ to use IErrorMarkeredOutputStream interface rather than reflection.
+
+2011-04-27 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves #343875
+ * src/org/eclipse/linuxtools/cdt/autotools/core/AutotoolsNewProjectNature.java (.run): Add
+ code to turn on and off workspace autobuilding around our call to change the project
+ description.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsConfigurationBuilder.java (build): Add
+ check for creating a CDT project in which case do not build yet.
+ (isCdtProjectCreated): New method.
+ (shouldBuild): Do not return true for autobuild, instead let the builder tell us.
+ * plugin.xml: Make the Autotools builder configurable.
+
+2011-04-26 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves #343731
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsNewMakeGenerator.java (runScript):
+ Add support for running scripts on Windows and Mac.
+ (regenerateMakefiles): Invoke autoreconf as a script instead of a command.
+
+2010-12-08 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves #331735
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/AutotoolsConfigurationManager.java (cloneCfg): Add
+ a check for getSavedConfigs returning null.
+
+2010-12-03 Jeff Johnston <jjohnstn@redhat.com>
+
+ * META-INF/MANIFEST.MF: Bump up version to 1.0.1 for 0.7 release.
+
+2010-11-10 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/MarkerResolutionGenerator.java (getResolutions): Return
+ no resolutions at present until we have package kit interfaces to call.
+
+2010-10-29 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsProblemMarkerInfo.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/ErrorParser.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/ErrorParserManager.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/IAutotoolsMarker.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/MarkerResolutionGenerator.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/PkgconfigErrorResolution.java: New file.
+ * plugin.properties: Add new strings for new extensions added.
+ * plugin.xml: Add a new marker for configuration errors. Also add an error resolution
+ generator for this new type of marker.
+ * src/org/eclipse/linuxtools/cdt/autotools/core/Resources.properties: Add new messages.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsNewMakeGenerator.java (runCommand): Add
+ ErrorParserManager to parse errors from configuration.
+ (runScript): Ditto.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/MarkerGenerator.java: Rewritten to
+ not extend IMarkerGenerator.
+ (addMarker): Accept an AutotoolsProblemMarkerInfo.
+ (hasMarkers): New method.
+ (removeAllMarkers): Remove Autotools markers rather than C/C++ ones.
+
+2010-08-05 Andrew Overholt <overholt@redhat.com>
+
+ * plugin.properties: Change provider to Eclipse Linux Tools.
+
+2010-06-03 Jeff Johnston <jjohnstn@redhat.com>
+
+ Bug #315652
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsConfigurationBuilder.java (shouldBuild): Always
+ return true for automatic build.
+
+2010-05-27 Andrew Overholt <overholt@redhat.com>
+
+ Bug #270326
+
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsNewMakeGenerator.java
+ (initialize): Test fix for black-on-black configure console.
+
+2010-05-27 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves: #314587
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsNewMakeGenerator.java (getWinOSType): New method.
+ (getPathString): Modify to check for WinOSType if platform is WIN_32.
+
+2010-05-26 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/cdt/autotools/core/Resources.properties: Add new error message for setting options
+ via template.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/wizards/SetAutotoolsStringOptionValue.java: New file.
+ * plugin.xml: Add new template process type.
+
+2010-05-26 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves: #314122
+ 2010-05-26 Jon Beniston <jon@beniston.com>
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/AutotoolsConfigurationManager.java (saveConfigs): Convert
+ any special characters in value before saving.
+ (xmlEscape): New method.
+
+2010-05-21 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves: #313754
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsNewMakeGenerator.java (stripEnvVars): Add
+ support to strip off environment variables that follow the command.
+
+2010-05-07 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/AutotoolsConfigurationManager.java
+ (resourceChanged): Don't access resource delta if it is null.
+
+2010-04-06 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves #308261
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/AutotoolsConfiguration.java (copy): Only set
+ the isDirty flag to true if we are cloning a configuration to a new id. A straight copy should not change the isDirty
+ flag.
+
+2010-03-18 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves #306406
+ * src/org/eclipse/linuxtools/cdt/autotools/core/AutotoolsNewProjectNature.java (addAutotoolsBuilder): Don't save
+ project description unless builder list has been modified. To save the project description, use a Job so it is
+ done asynchronously.
+
+2010-03-15 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsNewMakeGenerator.java (regenerateMakefiles): Use the
+ id of the IConfiguration not the name to fetch the IAConfiguration for it.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/AutotoolsOptionValueHandler.java (handleValue): Make
+ sure ICConfigurationDescription exists before accessing it.
+
+2010-03-12 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves #304005
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsConfigurationBuilder.java (build): Add logic to
+ check for dirty configuration.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsNewMakeGenerator.java (runScript): Change to use getId
+ instead of getName method for IAConfiguration.
+ (runCommand): Ditto.
+ (regenerateMakefiles): Add call to sync configurations.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/AutotoolsConfiguration.java (getId): New
+ method.
+ (copy): Changed to two separate methods, one which takes an id and the other which takes no parameter
+ and expects the id to be copied.
+ (AutotoolsConfiguration): Changed to accept an id rather than a name.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/AutotoolsConfigurationManager.java: Change to keep
+ track of temporary configuration list for a project. This is needed when performing configuration settings and the
+ user has not yet confirmed. In addition, store all configurations by id and not name since the id does not change.
+ (resourceChanged): Logic changed to rename both saved and temporary configuration lists which are now Map structures.
+ (AutotoolsConfigurationManager): Add hash maps for saved and temporary configuration lists.
+ (syncConfigurations): New method.
+ (applyConfigs): Ditto.
+ (saveConfigs): Changed to take the project as parameter. A second private
+ version of the function also has been added which takes an array of Configuration
+ Descriptions. The option value "Name" for configure tool is resolved for saved configurations.
+ (getConfigs): Renamed to getSavedConfigs.
+ (getSavedConfigs): New method renamed from getConfigs.
+ (getConfigurations): Renamed to getSavedConfigs.
+ (isConfigurationAlreadySaved): Modified calls.
+ (setSyncing): New method.
+ (createDefaultConfiguration): Pass id instead of name to constructor.
+ (isSyncing): New method.
+ (addConfiguration): No longer need to check for existence because we are adding to a Map.
+ (replaceConfiguration): Removed.
+ (saveAllConfigs): Ditto.
+ (replaceProjectConfigurations): Split into two versions. The new version takes an additional
+ parameter which is an array of Configuration descriptions.
+ (getTmpConfigs): New method.
+ (syncNameField): New method.
+ (clearTmpConfigurations): New method.
+ (findCfg): Find by id and not name.
+ (getTmpConfiguration): New method.
+ (getConfiguration): Try and find configuration by id before creating default.
+ (cloneCfg): New method taken out of AutotoolsConfigurationPropertyPage and added here to perform cloning of an Autotools configuration.
+ Logic has been added to not perform cloning if the target configuration already has been saved and to return a boolean regarding this.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/AutotoolsOptionValueHandler.java (handleValue): Changed to
+ call new cloneCfg interface in AutotoolsConfigurationManager. Logic to check for an Autotools Clone listener is removed. The return
+ code of cloneCfg is checked to see if the configuration has already been saved. If not saved and we are not doing a sync
+ then it returns without resolving the Name option field. The Name option field is now the Configuration Description id
+ which does not change on a rename operation.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/IAConfiguration.java: Add new getId method. Remove name methods
+ which are no longer used.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/wizards/NewAutotoolsProject.java (process): Modified call to
+ saveConfigs.
+ (process): Ditto.
+
+2010-02-25 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsNewMakeGenerator.java (getAutogenPath): Fix typo
+ so we split tokens on white-space, not non-white-space.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/AutotoolsConfigurationManager.java (saveConfigs):
+ Since we base ourselves on hashing by name, do not save multiple configurations with same name.
+ (getConfigs): Do not load multiple configurations with same name, just the first.
+
+2010-02-24 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves #303616
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsNewMakeGenerator.java (runScript): Use
+ unresolved default if environment variable is uninitialized.
+ (initializeBuildConfigDirs): Ditto.
+ (runCommand): Ditto.
+
+2010-02-24 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves #303613
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/ConfigureMessages.properties: Fix tooltip
+ for config tool directory.
+
+2010-02-23 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves #303616
+ * src/org/eclipse/inuxtools/internal/cdt/autotools/core/AutotoolsNewMakeGenerator.java (getAutogenArgs):
+ Add additional parameter of arguments found in the command itself.
+ (getConfigArgs): Ditto.
+ (getAutogenPath): Fix to split out additional arguments specified with the command.
+ (getConfigurePath): Ditto.
+ (runScript): Fix to resolve build macros for arguments.
+ (runCommand): Ditto.
+ (regenerateMakefiles): Fix references to functions above to pass additional parms.
+
+2010-02-09 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsNewMakeGenerator.java (addMakeTargetsToManager): Add
+ code to use reflection to look for new MakeTargetManager setTargets method which will set the entire list
+ of MakeTargets at one time.
+
+2009-12-01 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves #296616
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/MakeTarget.java: Removed.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/MakeTargetManager.java: Removed.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/ProjectTargets.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/core/AutotoolsNewProjectNature.java:
+ (removeOldAutotoolsNature): New Method.
+ (addAutotoolsBuilder): Compensate for case where we are dealing with old Autotools project.
+
+2009-11-16 Andrew Overholt <overholt@redhat.com>
+
+ * plugin.properties: Fix provider name.
+
+2009-11-04 Jeff Johnston <jjohnstn@redhat.com>
+
+ * META-INF/MANIFEST.MF: Change dependencies to handle CDT 6.0.0 and up.
+
+2009-11-02 Jeff Johnston <jjohnstn@redhat.com>
+
+ * plugin.xml: Make special source content types for configure and autogen.sh and have each tool
+ reference their proper input scripts. Add a discovery profile id for the inputs to each tool
+ and have neither support managed build. Add the gcc and g++ compiler directly to the set of
+ tools for the GNU Autotools toolchain.
+ * src/org/eclipse/linuxtools/cdt/autotools/core/Resources.properties: New message for running
+ distclean in top-level directory.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsNewMakeGenerator.java (addMakeTargetsToManager):
+ Try and find an old MakeTarget to use instead of always creating one from scratch.
+ (regenerateMakefiles): When a full configure is required and the top-level source directory has
+ already been configured in, a make distclean to the top-level source directory is required before
+ a configuration can be performed in an alternate directory. Do this automatically, but let the
+ user know what happened. In addition, change the console for Autotools configuration so that
+ the console is not cleared within one build.
+
+2009-10-29 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/DefaultNoDependencyCalculator.java: New file.
+ * plugin.properties: Add required messages.
+ * plugin.xml: Add gcc and g++ tools to GNU toolchain. Add content types for configure and autogen.sh
+ scripts and make these the source content types for configure and autogen.sh respectively.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsPropertyConstants.java: Add
+ compat constants for use with older projects.
+
+2009-10-27 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/wizards/NewAutotoolsProject.java: Clean
+ up unused imports.
+ * plugin.xml: Add gcc and g++ to toolchain. Specify GCCStdMakePerFile discovery profile
+ for toolchain and for configure tool inputs.
+
+2009-10-20 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/wizards/NewAutotoolsProject.java (process): Add
+ creation of default Autotools configuration.
+
+2009-10-13 Jeff Johnston <jjohnstn@redhat.com>
+
+ * build.properties: Remove icons.
+ * icons/ac16/acmacro_arg_obj.gif: Removed.
+ * icons/ac16/acmacro_obj.gif: Removed.
+ * icons/ac16/ammacro_obj.gif: Removed.
+ * icons/ac16/case_obj.gif: Removed.
+ * icons/ac16/condition_obj.gif: Removed.
+ * icons/ac16/convert_normal.gif: Removed.
+ * icons/ac16/elif_obj.gif: Removed.
+ * icons/ac16/else_obj.gif: Removed.
+ * icons/ac16/for_obj.gif: Removed.
+ * icons/ac16/if_obj.gif: Removed.
+ * icons/ac16/while_obj.gif: Removed.
+ * icons/autoconf.gif: Removed.
+ * icons/automake.gif: Removed.
+ * icons/dlcl16/build_configs.gif: Removed.
+ * icons/dlcl16/config_category.gif: Removed.
+ * icons/dlcl16/config_tool.gif: Removed.
+ * icons/dlcl16/newc_app.gif: Removed.
+ * icons/dlcl16/newcc_app.gif: Removed.
+ * icons/dlcl16/open_include.gif: Removed.
+ * icons/dtool16/alphab_sort_co.gif: Removed.
+ * icons/dtool16/build_menu.gif: Removed.
+ * icons/dtool16/convert-normal.gif: Removed.
+ * icons/dtool16/make.gif: Removed.
+ * icons/dtool16/makefile.gif: Removed.
+ * icons/dtool16/newc_app.gif: Removed.
+ * icons/dtool16/newcc_app.gif: Removed.
+ * icons/dtool16/segment_edit.gif: Removed.
+ * icons/dtool16/target_add.gif: Removed.
+ * icons/dtool16/target_build.gif: Removed.
+ * icons/dtool16/target_delete.gif: Removed.
+ * icons/dtool16/target_edit.gif: Removed.
+ * icons/dtool16/update_old.gif: Removed.
+ * icons/elcl16/build_configs.gif: Removed.
+ * icons/elcl16/config_category.gif: Removed.
+ * icons/elcl16/config_tool.gif: Removed.
+ * icons/elcl16/newc_app.gif: Removed.
+ * icons/elcl16/newcc_app.gif: Removed.
+ * icons/elcl16/open_include.gif: Removed.
+ * icons/etool16/alphab_sort_co.gif: Removed.
+ * icons/etool16/build_menu.gif: Removed.
+ * icons/etool16/convert_normal.gif: Removed.
+ * icons/etool16/make.gif: Removed.
+ * icons/etool16/makefile.gif: Removed.
+ * icons/etool16/newc_app.gif: Removed.
+ * icons/etool16/newcc_app.gif: Removed.
+ * icons/etool16/segment_edit.gif: Removed.
+ * icons/etool16/target_add.gif: Removed.
+ * icons/etool16/target_build.gif: Removed.
+ * icons/etool16/target_delete.gif: Removed.
+ * icons/etool16/target_edit.gif: Removed.
+ * icons/etool16/target_filter.gif: Removed.
+ * icons/etool16/update_old.gif: Removed.
+ * icons/obj16/acmacro_obj.gif: Removed.
+ * icons/obj16/command_obj.gif: Removed.
+ * icons/obj16/define_obj.gif: Removed.
+ * icons/obj16/environment_obj.gif: Removed.
+ * icons/obj16/envvar_obj.gif: Removed.
+ * icons/obj16/error_obj.gif: Removed.
+ * icons/obj16/fatalerror_obj.gif: Removed.
+ * icons/obj16/hfolder_obj.gif: Removed.
+ * icons/obj16/include_obj.gif: Removed.
+ * icons/obj16/info_obj.gif: Removed.
+ * icons/obj16/irule_obj.gif: Removed.
+ * icons/obj16/lib_obj.gif: Removed.
+ * icons/obj16/macro_obj.gif: Removed.
+ * icons/obj16/relation_obj.gif: Removed.
+ * icons/obj16/target_obj.gif: Removed.
+ * icons/obj16/trule_obj.gif: Removed.
+ * icons/obj16/warning_obj.gif: Removed.
+ * icons/sample.gif:
+
+2009-10-09 Jeff Johnston <jjohnstn@redhat.com>
+
+ Refactoring of org.eclipse.linuxtools.cdt.autotools into org.eclipse.linuxtools.cdt.autotools.core
+ and org.eclipse.linuxtools.cdt.autotools.ui.
+
+ * .settings/org.eclipse.core.resources.prefs: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/AbstractAutotoolsHandler.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/AbstractTargetAction.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/AclocalHandler.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/AutoconfHandler.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/AutoheaderHandler.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/AutomakeHandler.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/AutoreconfHandler.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAclocalAction.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAction.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAutoconfAction.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAutoheaderAction.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAutomakeAction.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAutoreconfAction.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeLibtoolizeAction.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeMessages.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeMessages.properties: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/LibtoolizeHandler.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/ReconfigureAction.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/ReconfigureHandler.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/SingleInputDialog.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/TwoInputDialog.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsBuilder.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsConfigurationBuilder.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsMakefileBuilder.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsMakeTargetManager.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewMakeGenerator.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewProjectNature.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsOptionValueHandler.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsPlugin.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsProjectNature.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsProjectPropertyTester.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsScannerInfo.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsScannerInfoProvider.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutoconfSubstRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakeCompletionProcessor.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakeConfigMacro.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakeDocumentProvider.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakeEditor.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakeEditorFactory.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakeErrorHandler.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/Automakefile.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakefileCodeScanner.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakefileContentOutlinePage.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakefileReconcilingStrategy.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakefileSourceConfiguration.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakefileUtil.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakeIfElse.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakeMacroDefinitionRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakeMacroReferenceRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakeTextHover.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakeWordDetector.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/AbstractConfigurationOption.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/AutotoolsConfiguration.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/AutotoolsConfigurationManager.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/BinConfigureOption.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/ConfigureMessages.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/ConfigureMessages.properties: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/ConfigureOptionCategory.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/ConfigureTool.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/IAConfiguration.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/IConfigureOption.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/InternalConfigureOption.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/MultiArgConfigureOption.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/StringConfigureOption.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/AbstractElementListSelectionDialog.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/AbstractMakefile.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/AbstractMakefileCodeScanner.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/AddBuildTargetAction.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/ArchiveTarget.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/BadDirective.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/Command.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/Comment.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/CompletionProposalComparator.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/Conditional.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/DefaultRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/DefineVariable.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/DeleteOnErrorRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/Directive.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/EditorUtility.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/ElementListSelectionDialog.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/Else.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/EmptyLine.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/Endef.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/Endif.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/ExportAllVariablesRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/ExportVariable.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/ExternalEditorInput.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/ExternalEditorInputFactory.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/GNUAutomakefile.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/GNUMakefileConstants.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/GNUMakefileUtil.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/GNUTargetRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/GNUVariableDef.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/IAutomakeConditional.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/If.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/Ifdef.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/Ifeq.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/Ifndef.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/Ifneq.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/IgnoreRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/IMakefileDocumentProvider.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/IMakefileEditorActionDefinitionIds.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/Include.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/InferenceRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/IntermediateRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/IReconcilingParticipant.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/ISelectionValidator.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/ITranslationUnitEditorInput.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/LexicalSortingAction.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/LowResolutionTimeRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MacroDefinition.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MacroDefinitionRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MacroReferenceRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakefileAnnotationHover.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakefileCodeScanner.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakefileCompletionProcessor.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakeFileConstants.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakefileContentOutlinePage.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakefileDocumentProvider.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakefileDocumentSetupParticipant.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakefileEditor.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakefileEditorActionContributor.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakefileEditorPreferenceConstants.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakefileEditorTogglePresentationAction.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakefileMessages.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakefilePartitionScanner.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakefileReader.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakefileReconcilingStrategy.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakeFileResources.properties: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakefileSourceConfiguration.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakefileStorageDocumentProvider.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakefileTextHover.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakefileWordDetector.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MessageLine.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/NotParallelRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/NullMakefile.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/OpenDeclarationAction.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/OpenIncludeAction.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/OverrideDefine.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/OverrideVariable.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/Parent.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/PhonyRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/PosixMakefileUtil.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/PosixRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/PreciousRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/ProjectionMakefileUpdater.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/Rule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/SccsGetRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/SecondaryRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/SelectionList.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/SelectionStatusDialog.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/SilentRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/SpecialRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/StaticTargetRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/StatusInfo.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/StatusTool.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/StringMatcher.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/SuffixesRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/Target.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/TargetRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/TargetVariable.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/Terminal.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/TwoArrayQuickSort.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/UnExport.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/Util.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/VariableDefinition.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/VPath.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/WordPartDetector.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/WorkingCopyManager.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/MakeMessages.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/MakeTarget.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/MakeTargetManager.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/MarkerGenerator.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ProjectTargets.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/text/hover/AutoconfPrototype.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/text/hover/AutoconfTextHover.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/text/hover/HoverMessages.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/text/hover/HoverMessages.properties: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/AbstractAutotoolsCPropertyTab.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/AutotoolsConsole.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/AutotoolsPluginImages.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/CBuildStepsConsole.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/CConfigureConsole.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/Console.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/ConsoleMessages.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/ConsoleMessages.properties: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/CWordFinder.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/editors/autoconf/ProjectionFileUpdater.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/ErrorParserBlock.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/FileRelevance.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/HTML2TextReader.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/HTMLPrinter.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/HTMLTextPresenter.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/LineBreakingReader.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/LocationAdapter.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/MakeResources.properties: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/MakeUIImages.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/MakeUIMessages.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/MessageLine.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/OptionalMessageDialog.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/preferences/AbstractEditorPreferencePage.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/preferences/AutoconfEditorPreferencePage.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/preferences/AutomakeEditorPreferencePage.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/preferences/AutotoolsEditorPreferenceConstants.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/preferences/AutotoolsPreferencePage.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/preferences/AutotoolsPreferencesMessages.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/preferences/AutotoolsPreferencesMessages.properties: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/preferences/ColorEditor.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/preferences/ColorManager.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/preferences/OverlayPreferenceStore.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/preferences/StatusInfo.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/preferences/TabFolderLayout.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AbstractConfigurePropertyOptionsPage.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsBuildPropertyPage.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsCategoryPropertyOptionPage.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsConfigurePrefStore.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsConfigurePropertyPage.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsConfigurePropertyTab.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsEditorPropertyTab.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsGeneralPropertyPage.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsHeadPropertyPage.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsPropertyConstants.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsPropertyManager.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsPropertyMessages.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsPropertyMessages.properties: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsToolPropertyOptionPage.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsToolsPropertyTab.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/IProjectPropertyListener.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/IPropertyChangeManager.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/ToolListContentProvider.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/ToolListElement.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/ToolListLabelProvider.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/ResourceLookup.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/ResourceLookupTree.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/SingleCharReader.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/SubstitutionTextReader.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/wizards/AutotoolsWizardMessages.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/wizards/AutotoolsWizardMessages.properties: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/wizards/ConfigurationContentProvider.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/wizards/ConfigurationLabelProvider.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/wizards/ManagedProjectOptionBlock.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/wizards/NewAutotoolsProject.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/MakeGenerator.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/popup/actions/GetDefinedSymbolsAction.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/popup/actions/GetIncludePathAction.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/Resources.properties: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfAnnotationHover.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfCodeScanner.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfDocumentProvider.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfDocumentSetupParticipant.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfEditor.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfEditorMacroValidator.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfEditorMessages.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfEditorMessages.properties: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfErrorHandler.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfIdentifierRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfKeywordDetector.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfM4WordDetector.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfMacro.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfMacroCodeScanner.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfMacroContentAssistProcessor.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfMacroDamagerRepairer.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfMacroParameterListValidator.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfMacroPartitionRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfMacroProposalContextInformation.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfMacroRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfMacroWordDetector.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfPartitioner.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfPartitionScanner.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfPKGWordDetector.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfReconcilingStrategy.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfSourceViewerConfiguration.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfWhitespaceDetector.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfWordDetector.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/IAutotoolEditorActionDefinitionIds.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/IAutotoolHelpContextIds.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/IAutotoolsEditor.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/InlineDataRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/MultilineRuleDamagerRepairer.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/outline/AutoconfContentOutlinePage.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/outline/AutoconfContentProvider.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/outline/AutoconfLabelProvider.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/ParseException.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/parser/AutoconfCaseConditionElement.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/parser/AutoconfCaseElement.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/parser/AutoconfElement.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/parser/AutoconfElifElement.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/parser/AutoconfElseElement.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/parser/AutoconfForElement.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/parser/AutoconfIfElement.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/parser/AutoconfMacroArgumentElement.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/parser/AutoconfMacroDetector.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/parser/AutoconfMacroElement.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/parser/AutoconfOutlineErrorHandler.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/parser/AutoconfParser.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/parser/AutoconfRootElement.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/parser/AutoconfSelectElement.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/parser/AutoconfTokenizer.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/parser/AutoconfUntilElement.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/parser/AutoconfWhileElement.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/parser/IAutoconfErrorHandler.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/parser/IAutoconfMacroDetector.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/parser/IAutoconfMacroValidator.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/parser/IMacroDetector.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/parser/ITokenConstants.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/parser/ParseException.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/parser/Token.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/RecursiveSingleLineRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/RestrictedEndOfLineRule.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/wizards/AutotoolsBuildWizard.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/wizards/AutotoolsNewCProjectWizardV2.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/wizards/ConvertToAutotoolsProjectWizard.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/wizards/ConvertToAutotoolsProjectWizardPage.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/wizards/CProjectPlatformPage.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/wizards/NewAutotoolsCCProjectWizard.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/wizards/NewAutotoolsCProjectWizard.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/wizards/NewAutotoolsProjectOptionPage.java: Removed.
+ * templates/projecttemplates/EmptyProject/template.properties: Removed.
+ * templates/projecttemplates/EmptyProject/template.xml: Removed.
+ * templates/projecttemplates/HelloWorldCAutotoolsProject/src/AUTHORS: Removed.
+ * templates/projecttemplates/HelloWorldCAutotoolsProject/src/Basename.c: Removed.
+ * templates/projecttemplates/HelloWorldCAutotoolsProject/src/configure.ac.top: Removed.
+ * templates/projecttemplates/HelloWorldCAutotoolsProject/src/COPYING: Removed.
+ * templates/projecttemplates/HelloWorldCAutotoolsProject/src/Makefile.am.src: Removed.
+ * templates/projecttemplates/HelloWorldCAutotoolsProject/src/Makefile.am.top: Removed.
+ * templates/projecttemplates/HelloWorldCAutotoolsProject/src/NEWS: Removed.
+ * templates/projecttemplates/HelloWorldCAutotoolsProject/src/README: Removed.
+ * templates/projecttemplates/HelloWorldCAutotoolsProject/template.properties: Removed.
+ * templates/projecttemplates/HelloWorldCAutotoolsProject/template.xml: Removed.
+ * templates/projecttemplates/HelloWorldCPPAutotoolsProject/src/AUTHORS: Removed.
+ * templates/projecttemplates/HelloWorldCPPAutotoolsProject/src/Basename.cpp: Removed.
+ * templates/projecttemplates/HelloWorldCPPAutotoolsProject/src/configure.ac.top: Removed.
+ * templates/projecttemplates/HelloWorldCPPAutotoolsProject/src/COPYING: Removed.
+ * templates/projecttemplates/HelloWorldCPPAutotoolsProject/src/Makefile.am.src: Removed.
+ * templates/projecttemplates/HelloWorldCPPAutotoolsProject/src/Makefile.am.top: Removed.
+ * templates/projecttemplates/HelloWorldCPPAutotoolsProject/src/NEWS: Removed.
+ * templates/projecttemplates/HelloWorldCPPAutotoolsProject/src/README: Removed.
+ * templates/projecttemplates/HelloWorldCPPAutotoolsProject/template.properties: Removed.
+ * templates/projecttemplates/HelloWorldCPPAutotoolsProject/template.xml: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/core/AutotoolsNewProjectNature.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/core/AutotoolsPlugin.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/core/Resources.properties: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsConfigurationBuilder.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsNewMakeGenerator.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/AutotoolsPropertyConstants.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/AutotoolsOptionValueHandler.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/IConfigurationCloneListener.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/MakeMessages.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/MakeTarget.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/MakeTargetManager.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/MarkerGenerator.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/ProjectTargets.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/wizards/NewAutotoolsProject.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/ui: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/AbstractConfigurationOption.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/AutotoolsConfiguration.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/AutotoolsConfigurationManager.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/BinConfigureOption.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/ConfigureMessages.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/ConfigureOptionCategory.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/ConfigureTool.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/IAConfiguration.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/IConfigureOption.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/InternalConfigureOption.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/MultiArgConfigureOption.java: New file.
+ * src/org/eclipse/linuxtools/internal/cdt/autotools/core/configure/StringConfigureOption.java: New file.
+ * .project: Changed due to refactoring.
+ * META-INF/MANIFEST.MF: Refactored.
+ * plugin.xml: Refactored. Moving UI elements to org.eclipse.linuxtools.cdt.autotools.ui plug-in.
+
+2009-10-06 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/AutotoolsConfigurationManager.java (saveConfigs): Store
+ configuration data into .autotools file stored in project rather than using project working location.
+ (getConfigs): Get configs from .autotools file stored in the project rather than using project working
+ location.
+
+2009-10-05 Jeff Johnston <jjohnstn@redhat.com>
+
+ * plugin.xml: Fix category for Autotools C++ wizard.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsOptionValueHandler.java (fixName): New method.
+ (handleValue): Add support to generate build directory if property option is on or defaulted.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsBuildPropertyPage.java (createControls):
+ Add support for automatic build name generation option.
+ (initialize): Ditto.
+ (performDefaults): Ditto.
+ (performOK): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsPropertyConstants.java:
+ Add support for auto build-name generation option.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsPropertyMessages.properties: Add
+ messages for new property for automatically naming the build directory.
+
+2009-09-29 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsEditorPropertyPage.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsPropertyPage.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsToolsPropertyPage.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsConfigurePropertyTab.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsEditorPropertyTab.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsGeneralPropertyPage.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsHeadPropertyPage.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsToolsPropertyTab.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/wizards/NewAutotoolsProject.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/wizards/AutotoolsBuildWizard.java: New file.
+ * templates/projecttemplates/EmptyProject/template.properties: New file.
+ * templates/projecttemplates/EmptyProject/template.xml: New file.
+ * templates/projecttemplates/HelloWorldCAutotoolsProject/src: New file.
+ * templates/projecttemplates/HelloWorldCAutotoolsProject/src/AUTHORS: New file.
+ * templates/projecttemplates/HelloWorldCAutotoolsProject/src/Basename.c: New file.
+ * templates/projecttemplates/HelloWorldCAutotoolsProject/src/configure.ac.top: New file.
+ * templates/projecttemplates/HelloWorldCAutotoolsProject/src/COPYING: New file.
+ * templates/projecttemplates/HelloWorldCAutotoolsProject/src/Makefile.am.src: New file.
+ * templates/projecttemplates/HelloWorldCAutotoolsProject/src/Makefile.am.top: New file.
+ * templates/projecttemplates/HelloWorldCAutotoolsProject/src/NEWS: New file.
+ * templates/projecttemplates/HelloWorldCAutotoolsProject/src/README: New file.
+ * templates/projecttemplates/HelloWorldCAutotoolsProject/template.properties: New file.
+ * templates/projecttemplates/HelloWorldCAutotoolsProject/template.xml: New file.
+ * templates/projecttemplates/HelloWorldCPPAutotoolsProject/src: New file.
+ * templates/projecttemplates/HelloWorldCPPAutotoolsProject/src/AUTHORS: New file.
+ * templates/projecttemplates/HelloWorldCPPAutotoolsProject/src/Basename.cpp: New file.
+ * templates/projecttemplates/HelloWorldCPPAutotoolsProject/src/configure.ac.top: New file.
+ * templates/projecttemplates/HelloWorldCPPAutotoolsProject/src/COPYING: New file.
+ * templates/projecttemplates/HelloWorldCPPAutotoolsProject/src/Makefile.am.src: New file.
+ * templates/projecttemplates/HelloWorldCPPAutotoolsProject/src/Makefile.am.top: New file.
+ * templates/projecttemplates/HelloWorldCPPAutotoolsProject/src/NEWS: New file.
+ * templates/projecttemplates/HelloWorldCPPAutotoolsProject/src/README: New file.
+ * templates/projecttemplates/HelloWorldCPPAutotoolsProject/template.properties: New file.
+ * templates/projecttemplates/HelloWorldCPPAutotoolsProject/template.xml: New file.
+ * plugin.properties: Add strings to support additions to plugin.xml.
+ * plugin.xml: Add a new template process for creating an Autotools project. Add templates for
+ an empty project, a helloworld C project, and a helloworld C++ project. Add a CDT wizard for
+ creating a new Autotools project. Remove project type name from Autotools project type so that
+ it does not get added by MBSWizard and instead is added as part of the new AutotoolsBuildWizard.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewMakeGenerator.java (regenerateMakefiles): When forced to
+ autoreconf missing files, do not restart the console for the subsequent configuration.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsOptionValueHandler.java (handleValue): Handle class rename.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/AutotoolsConfiguration.java (setDefaultOptions): New
+ method.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/IAConfiguration.java: Add setDefaultOptions method.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsCategoryPropertyOptionPage.java (updateFields): Add
+ call to set the values.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsConfigurePropertyPage.java:
+ (performSave): Deal with AutotoolsPropertyPage being renamed AutotoolsConfigurePropertyPage.
+ (isSingle): Add override to specify this is a single page.
+ (AutotoolsConfigurePropertyPage): New.
+
+2009-09-21 Jeff Johnston <jjohnstn@redhat.com>
+
+ * plugin.xml: Make configure source tool directory use our shared applicability calculator.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewMakeGenerator.java (createDirectory):
+ Change to return boolean and to use Java File logic.
+ (regenerateMakefiles): Fail if createDirectory fails for build directory. Change over to not
+ use Root or Workspace for file management. Use Java File instead.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/ToolListLabelProvider.java:
+ Remove compiler warning.
+ * src/org/eclipse/linuxtools/cdt/autotools/Resources.properties: Add new failure message if the
+ build directory cannot be created.
+
+2009-09-18 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsDefaultBuildDirHandler.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewMakefileBuilder.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/AbstractAutotoolsPage.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsOptionValueHandler.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/IAConfiguration.java: New file.
+ * plugin.properties: Add configure name string.
+ * plugin.xml: Add configure name to configure options for build definition and set its option value handler and
+ calculator to be AutotoolsOptionValueHandler. Add back a builder for toolchain to prevent errror when displaying
+ toolChain editor property page. Add new AutotoolsNatureV2.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsConfigurationBuilder.java (performMakefileGeneration): Add
+ multiconfiguration support.
+ (clean): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewMakeGenerator.java (addMakeTargetsToManager):
+ (createDirectory): Use Java File interface to perform mkdirs.
+ (regenerateMakefiles): Add configuration parameter to support multiconfiguration.
+ (initializeBuildConfigDirs): Use build location from ManagedBuild.
+ (generateMakefiles): Call new regenerateMakefile interface.
+ (reconfigure): Use new regenerateMakefiles interface.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/AutotoolsConfiguration.java (setConfigToolDirectory):
+ (setActive): Remove.
+ (isActive): Remove.
+ (configOpts): Remove builddir.
+ (copy): Change output to be IAConfiguration.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/AutotoolsConfigurationManager.java: Remove active
+ configuration tracking.
+ (resourceChanged): Remove active configuration logic.
+ (saveConfigs): Fix bug with adding header information in loop.
+ (replaceConfiguration): Use IAConfiguration interface.
+ (getConfigs): Remove active configuration logic.
+ (configurationAlreadyExists): Use IAConfiguration interface.
+ (getConfigurations): Don't add a configuration to project automatically.
+ (AutotoolsConfigurationManager): Remove active configuration management set up.
+ (createDefaultConfiguration): Do not default configuration name now that we are syncing up with build configurations.
+ (addConfiguration): Use IAConfiguration interface. Remove active configuration management.
+ (replaceProjectConfigurations): New method.
+ (findCfg): New method.
+ (getConfiguration): New method.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/AbstractAutotoolsCPropertyTab.java: Extend AbstractCBuildPropertyTab.
+ (isIndexerAffected): New method.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsCategoryPropertyOptionPage.java (AutotoolsCategoryPropertyOptionPage):
+ Use IAConfiguration interface.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsConfigurePrefStore.java (setSelection): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsConfigurePropertyPage.java: Remove configuration
+ tracking. Let AutotoolsPropertyPage do it.
+ (handleOptionSelection): Use AbstractPage cast.
+ (setValues): Disable for multiconfiguration. Get current configuration using getAutotoolsCfg method.
+ (createControls): Don't bother getting current Autotools configuration. Don't call setValues().
+ (canBeVisible): Check for project.
+ (updateData): Get ManagedBuild configuration from input to use later to find syncing AutotoolsConfiguration with
+ same name.
+ (getAutotoolsCfg): New Method.
+ (performCancel): Do nothing.
+ (displayPageForElement): Set selection based on current Autotools configuration from getAutotoolsCfg().
+ (performDefaults): Do nothing.
+ (performOK): Replace Autotools configurations for project.
+ (createSelectionArea): Use a temporary AutotoolsConfiguration for a tree label provider.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsEditorPropertyPage.java (createControls):
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsPropertyPage.java: Rewritten to extend
+ AbstractPage and to replace content with AbstractPage.java as well since the majority of methods in AbstractPage
+ are private and manipulate private data. Add AutotoolsConfiguration tracking and a call-back mechanism for registering
+ cloned configurations from AutotoolsOptionValueHandler. When needed, call the super methods so they may access
+ private methods.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsToolPropertyOptionPage.java (AutotoolsToolPropertyOptionPage):
+ Use IAConfiguration interface.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/ToolListLabelProvider.java (ToolListLabelProvider): Ditto.
+ (getCfg): Ditto.
+ (setCfg): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/wizards/AutotoolsNewCProjectWizardV2.java (doRun): Remove AutotoolsConfiguration
+ logic and defer to when needed.
+
+2009-09-09 Jeff Johnston <jjohnstn@redhat.com>
+
+ Switching to use CommonBuilder.
+
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsConfigurationBuilder.java: New file.
+ * META-INF/MANIFEST.MF: Update dependencies.
+ * plugin.xml: Change build configuration to non-managed-build. Add AutotoolsConfigurationBuilder
+ as separate builder and remove AutotoolsNewMakeGenerator as Managed Build Makefile generator. Make
+ Autotools Nature require Managed Build Nature.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewMakeGenerator.java (addMakeTargetsToManager):
+ Specify CDT common builder as target builder and also specify build directory as container.
+ (regenerateMakefiles): Add build directory to console messages. Make full configure default to false.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewProjectNature.java (addAutotoolsBuilder): Change
+ to put new Configuration builder ahead of Common Builder.
+ (configure): Remove Std Make bits.
+ * src/org/eclipse/linuxtools/cdt/autotools/Resources.properties: Add new messages and add build directory
+ specification to Makefile generator messages.
+ * src/org/eclipse/linuxtools/cdt/autotools/wizards/AutotoolsNewCProjectWizardV2.java (addNature): Refer
+ to Managed Nature rather than Make Nature.
+
+2009-08-17 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewMakeGenerator.java (getPathString): New
+ method.
+ (runScript): Call getPathString method on command path. Use CCorePlugin to get
+ environment variable manager instead of ManagedBuildManager.
+ (runCommand): Ditto.
+ (initializeBuildConfigDirs): Remove code to set build location in builder.
+ (initialize): Get the C Configuration description for the active configuration.
+
+2009-07-29 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/AutotoolsConsole.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/Console.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/CBuildStepsConsole.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/CConfigureConsole.java: Inherit from
+ Console class.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/MakeResources.properties: ADd newline
+ at end of file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/ConsoleMessages.properties: Add console
+ names.
+ * plugin.xml: Add CBuildConsole extensions for Autotools console and BuildSteps console.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAction.java:
+ (executeConsoleCommand): New method to execute commands in a special console.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAclocalAction.java: (run): Use
+ new executeConsoleCommand method from InvokeAction which this class now inherits from.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAutoconfAction.java (run): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAutoheaderAction.java (run): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAutomakeAction.java (run): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAutoreconfAction.java (run): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeLibtoolizeAction.java (run): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeMessages.properties: Add CWD message.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewMakeGenerator.java (stripEnvVars): Make
+ public static.
+
+2009-07-29 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/ReconfigureAction.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/ReconfigureHandler.java: New file.
+ * plugin.properties: Add strings for Reconfigure menu item.
+ * plugin.xml: Add Reconfigure project menu item.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewMakeGenerator.java (regenerateMakefiles):
+ (reconfigure): New method.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/AutotoolsConfigurationManager.java (resourceChanged):
+ Now that plugin working area is used, no need to manage the files there for project deletion or
+ renaming.
+ (addConfiguration): If this is first configuration for project, call setActiveConfiguration.
+ (replaceConfiguration): Ditto.
+ (saveConfigs): Use plugin working area for project.
+ (getConfigs): New method which gets configs for single project.
+ (loadConfigs): Removed.
+ (getActiveConfiguration): Call getConfigurations internally.
+ (getConfigurations): Call getconfigs method and create default configuration if needed.
+ (setActiveConfiguration):
+ (getInstance): Remove loadConfigs call.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/ConfigureMessages.properties: Add save
+ config error message.
+
+2009-07-13 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/AutotoolsConfiguration.java (getToolArgs): Add
+ support for caching parameters.
+ (getToolParameters): Clean up warnings.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/BinConfigureOption.java (setValue): Set configuration
+ dirty on value change.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/text/hover/AutoconfPrototype.java: Clean
+ up compiler warnings.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/text/hover/AutoconfTextHover.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/AbstractAutotoolsPage.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsConfigurePropertyPage.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsEditorPropertyPage.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsToolsPropertyPage.java: Ditto.
+
+2009-07-10 Jeff Johnston <jjohnstn@redhat.com>
+
+ * icons/obj16/fatalerror_obj.gif: New file.
+ * icons/obj16/info_obj.gif: New file.
+ * icons/obj16/warning_obj.gif: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/AbstractAutotoolsCPropertyTab.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/AbstractAutotoolsPage.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/FileRelevance.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/LocationAdapter.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/OptionalMessageDialog.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/ResourceLookup.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/ResourceLookupTree.java: New file.
+ * plugin.xml: Fix new MakefileGenerator id and nature references.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewMakefileBuilder.java (clean): New override method.
+ (getTargets): New override method.
+ (removeBuildDir): New method.
+ (build): Minor format change.
+ (AutotoolsNewMakefileBuilder):
+ (makeArray): New method.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewMakeGenerator.java (getAutogenPath): New method
+ that calls stripEnvVars.
+ (runScript): Add additional enviornment variables specified on command line.
+ (stripEnvVars): New method to strip env vars from a command string.
+ (getConfigurePath): Changed to use stripEnvVars.
+ (regenerateMakefiles): Fix deletion logic to not delete build directory.
+ (makeArray): New method.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewProjectNature.java: Change id.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/AbstractConfigurationOption.java (getParameters):
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/AutotoolsConfiguration.java (Option): Add
+ defaultValue field.
+ (Option.getDefaultValue): New method.
+ (Option.Option): Added constructor.
+ (initConfigOptions): Fix autogen to not have id with dot in name.
+ (configOpts): Add default value processing.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/ConfigureMessages.properties: Change name of autogen
+ tool name message.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/MakeResources.properties: Added messages.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/MakeUIImages.java: Add new image.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsConfigurePropertyPage.java (handleOptionSelection):
+ Change cast.
+ (cfgChanged): Add comment.
+ (getProject): Changed to get project from page.
+ (createControls): Remove configuration combo which is no longer used.
+ (updateData): Update comment.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsEditorPropertyPage.java (updateButtons):
+ Update comment.
+ (cfgChanged): Added comment.
+ (getProject): Changed to get project from page.
+ (updateData): Update comment.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsPropertyMessages.java: Added messages.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsPropertyPage.java: Changed to inherit from
+ AbstractAutotoolsPage.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsToolPropertyOptionPage.java (createFieldEditors):
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsToolsPropertyPage.java (updateButtons):
+ Update comment.
+ (cfgChanged): Added comment.
+ (getProject): Changed to get project from page.
+ (updateData): Update comment.
+
+2009-06-26 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves #280509
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewMakeGenerator.java (regenerateMakefiles): Add
+ logic to use autoreconf if no configure script and no autogen.sh.
+ * src/org/eclipse/linuxtools/cdt/autotools/Resources.properties: Add messages.
+
+2009-06-26 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves #280696, #280504, #280505, #280506
+
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAction.java (showSuccess):
+ Changed to issue a information dialog that does not have a cancel button.
+ (executeCommand): Changed to create a ProgressMonitorDialog that is issued
+ until the command completes successfully or with failure.
+ (ExecuteProgressDialog): New private internal class that implements IRunnableWithProgress
+ which is used to run the command for a ProgressMonitorDialog.
+ (simpleParseOptions): New method to parse options and account for quoted strings.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/AutoheaderHandler.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/AutoreconfHandler.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAutoheaderAction.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAutoreconfAction.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeLibtoolizeAction.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/LibtoolizeHandler.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/SingleInputDialog.java: New file.
+ * plugin.properties: Add new messages for additional tools/commands added.
+ * plugin.xml: Change invoking autotools to be a single menu item in Project menu which
+ expands to show all tools available, including aclocal, autoconf, autoheader, automake,
+ autoreconf, and libtoolize.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeMessages.properties: Add support
+ for autoheader, autoreconf, and libtoolize.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsPropertyConstants.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsPropertyMessages.properties: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsToolsPropertyPage.java
+ (createControls): Ditto.
+ (initialize): Ditto.
+ (performDefaults): Ditto.
+ (performOK): Ditto.
+
+2009-06-26 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewMakeGenerator.java (toolsCfg):
+ New AutotoolsConfiguration acquired from AutotoolsConfigurationManager.
+ (runScript): Use new toolsCfg instead of cfg.
+ (getConfigArgs): Ditto.
+ (initializeBuildConfigDirs): Ditto.
+ (autogenExists): Ditto.
+ (runCommand): Ditto.
+ (getAutogenArgs): Ditto.
+ (configureExists): Ditto.
+ (regenerateMakefiles): Ditto.
+ (getConfigurePath): Ditto.
+ (getMakefileName): Ditto.
+ (initialize): Initialize toolsCfg to active Autotools configuration for project.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/AbstractConfigurationOption.java (getParameters):
+ New method.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/AutotoolsConfiguration.java (getToolArgs): New
+ method.
+ (getConfigArgs): Removed.
+ (configOpts): Add autogen.sh support.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/ConfigureMessages.properties: Add autogen.sh
+ stuff.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/ConfigureOptionCategory.java (getParameters): New
+ method.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/ConfigureTool.java (getParameters): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/IConfigureOption.java (getParameters): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/MultiArgConfigureOption.java (getParameters): Fix
+ to properly separate options of all kinds and not just for configure.
+
+2009-06-26 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves #281582, #281583
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsMakefileBuilder.java (clean): Do not
+ use ManagedBuildManager to get a Makefile generator. Just create a new Autotools Makefile
+ generator.
+ (removeBuildDir): Ditto.
+ (build): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsScannerInfo.java (getCompilationString):
+ Fix to support g++, top-level building, and compilation strings that span multiple lines.
+
+2009-06-15 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves #280117
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsScannerInfo.java (buildFile): Fix so we don't
+ leave loop early before finding build directory.
+
+2009-06-11 Jeff Johnston <jjohnstn@redhat.com>
+
+ * icons/ac16/convert-normal.gif: Removed.
+ * icons/etool16/convert-normal.gif: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/properties/AutotoolsBuildPropertyPage.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/properties/AutotoolsEditorPropertyPage.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/properties/AutotoolsPropertyConstants.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/properties/AutotoolsPropertyManager.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/properties/AutotoolsPropertyMessages.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/properties/AutotoolsPropertyMessages.properties: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/properties/AutotoolsPropertyPage.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/properties/AutotoolsToolsPropertyPage.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/properties/IProjectPropertyListener.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/properties/IPropertyChangeManager.java: Removed.
+ * icons/ac16/convert_normal.gif: New file.
+ * icons/dlcl16/config_category.gif: New file.
+ * icons/dlcl16/config_tool.gif: New file.
+ * icons/elcl16/config_category.gif: New file.
+ * icons/elcl16/config_tool.gif: New file.
+ * icons/etool16/convert_normal.gif: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/ConfigureTool.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/InternalConfigureOption.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/MultiArgConfigureOption.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AbstractConfigurePropertyOptionsPage.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsCategoryPropertyOptionPage.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsConfigurePrefStore.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsConfigurePropertyPage.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsToolPropertyOptionPage.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/ToolListContentProvider.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/ToolListElement.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/ToolListLabelProvider.java: New file.
+ * plugin.properties: Change messages.
+ * plugin.xml: Remove warnings.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAclocalAction.java: Changed due to refactoring.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAutoconfAction.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAutomakeAction.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsBuilder.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsMakefileBuilder.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewMakeGenerator.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsScannerInfo.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsScannerInfoProvider.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/AbstractConfigurationOption.java (isMultiArg):
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/AutotoolsConfiguration.java (getConfigToolDirectory):
+ Rewritten to use option.
+ (setConfigToolDirectory): Ditto.
+ (setDirty): Rewritten.
+ (Option): Add public methods to get name, description, type, and tooltip.
+ (setBuildDirectory): Rewritten to use option.
+ (getConfigArgs): New method.
+ (initConfigOptions): Set options for everything including tools.
+ (getOption): New method.
+ (getOptionList): Ditto.
+ (AutotoolsConfiguration): Keep track of parms dirty vs config dirty.
+ (getChildOptions): Add support for both categories and tools.
+ (setOption): Alter dirty flag.
+ (getToolParameters): New method.
+ (getTools): Ditto.
+ (configOpts): New internal map.
+ (getBuildDirectory): Rewrite to use simple option.
+ (copy): Copy using option copy methods and add internal variables as well.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/AutotoolsConfigurationManager.java (ConfigureFileFilter):
+ New class to make it easy to find configuration data for project.
+ (resourceChanged): Added internal map changes as well.
+ (addConfigurationHeader): New method.
+ (saveConfigs): Changed to use IFile.
+ (replaceConfiguration): New method.
+ (setActiveConfiguration): Ditto.
+ (getConfigurations): If default configuration created, mark it active.
+ (AutotoolsConfigurationManager): Create active configs map.
+ (getInstance): Fixed to only load configs the one time.
+ (loadConfigs): Fixed to properly load configuration files and use xml parsing.
+ (getActiveConfiguration): New method.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/BinConfigureOption.java (getType):
+ (copy): New method.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/ConfigureMessages.java:
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/ConfigureMessages.properties:
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/ConfigureOptionCategory.java (getValue):
+ (getType): New method.
+ (isMultiArg): Ditto.
+ (copy): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/IConfigureOption.java:
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/StringConfigureOption.java (getType):
+ (copy): New method.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/text/hover/AutoconfTextHover.java: Changed due to
+ refactoring of properties.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/AutotoolsPluginImages.java: Add new images for
+ Autotools configuration property page.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsBuildPropertyPage.java: Changed due to
+ refactoring of properties.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsEditorPropertyPage.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsPropertyConstants.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsPropertyManager.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsPropertyMessages.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsPropertyMessages.properties: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsPropertyPage.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/AutotoolsToolsPropertyPage.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/IProjectPropertyListener.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/properties/IPropertyChangeManager.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/MakeGenerator.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfEditor.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/wizards/AutotoolsNewCProjectWizardV2.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/wizards/ConvertToAutotoolsProjectWizardPage.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/wizards/NewAutotoolsCCProjectWizard.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/wizards/NewAutotoolsCProjectWizard.java: Ditto.
+
+2009-05-29 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/AbstractConfigurationOption.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/AutotoolsConfiguration.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/AutotoolsConfigurationManager.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/BinConfigureOption.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/ConfigureMessages.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/ConfigureMessages.properties: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/ConfigureOptionCategory.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/IConfigureOption.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/configure/StringConfigureOption.java: New file.
+ * .classpath: Checking in.
+ * plugin.xml: Fix compiler warnings.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAclocalAction.java (run): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAction.java (separateTargets): Ditto.
+ (separateOptions): Ditto.
+ (executeCommand): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAutoconfAction.java (run): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAutomakeAction.java (run): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/TwoInputDialog.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsBuilder.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsDefaultBuildDirHandler.java (handleValue): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsMakefileBuilder.java (clean): Ditto.
+ (build): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewMakefileBuilder.java (performMakefileGeneration): Ditto.
+ (build): Ditto.
+ (AutotoolsNewMakefileBuilder): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewMakeGenerator.java (runScript): Ditto.
+ (saveTargets): Ditto.
+ (runCommand): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewProjectNature.java (configure): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsPlugin.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsProjectNature.java (removeNature): Ditto.
+ (addAutotoolsBuilder): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsScannerInfo.java (buildFile): Ditto.
+ (getDefinedSymbols): Ditto.
+ (getIncludePaths): Ditto.
+ (definedSymbols): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsScannerInfoProvider.java (setDirty): Ditto.
+ (getScannerInformation): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutoconfSubstRule.java (DecreasingCharArrayLengthComparator): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakeCompletionProcessor.java (DirectiveComparator): Ditto.
+ (computeContextInformation): Ditto.
+ (computeCompletionProposals): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakeDocumentProvider.java (connect): Ditto.
+ (shutdown): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakeEditor.java (getAdapter): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakeErrorHandler.java (AutomakeMarker): Ditto.
+ (checkChildren): Ditto.
+ (AutomakeMarker.setAttributes): Ditto.
+ (AutomakeMarker.getAttributes): Ditto.
+ (createMarker): Ditto.
+ (AutomakeMarker.AutomakeMarker): Ditto.
+ (AutomakeMarker.getAdapter): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakefileCodeScanner.java (createRules): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakefileContentOutlinePage.java (AutomakefileContentProvider.getElements): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/AbstractElementListSelectionDialog.java (setSelectionListElements): Ditto.
+ (getWidgetSelection): Ditto.
+ (verifyCurrentSelection): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/AbstractMakefile.java (getMacroDefinitions): Ditto.
+ (getBuiltinInferenceRules): Ditto.
+ (getRules): Ditto.
+ (getInferenceRules): Ditto.
+ (getTargetRules): Ditto.
+ (getBuiltinMacroDefinitions): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/AddBuildTargetAction.java (getTargetRules): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/CompletionProposalComparator.java (compare): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/EditorUtility.java (getWorkspaceFileAtLocation): Ditto.
+ (isLinked): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/ElementListSelectionDialog.java (open): Ditto.
+ (setElements): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/ExternalEditorInput.java (getAdapter): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/GNUAutomakefile.java (getBuiltins): Ditto.
+ (addDirective): Ditto.
+ (parseVPath): Ditto.
+ (getDirectives): Ditto.
+ (parse): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/LexicalSortingAction.java (LexicalCSorter.isSorterProperty): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakefileCompletionProcessor.java (DirectiveComparator): Ditto.
+ (computeContextInformation): Ditto.
+ (computeCompletionProposals): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakefileContentOutlinePage.java (MakefileContentProvider.getElements): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakefileDocumentProvider.java (shutdown): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakefileEditor.java (getAdapter): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakefileMessages.java (getFormattedString): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakefilePartitionScanner.java (MakefilePartitionScanner): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/NullMakefile.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/OpenIncludeAction.java (resolveIncludeLink): Ditto.
+ (findFile): Ditto.
+ (getIncludeStatement): Ditto.
+ (chooseFile): Ditto.
+ (run): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/Parent.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/PosixMakefileUtil.java (findTargets): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/ProjectionMakefileUpdater.java (createAnnotationMap): Ditto.
+ (fCollapseConditional): Ditto.
+ (fCollapseRule): Ditto.
+ (fCollapseMacroDef): Ditto.
+ (match): Ditto.
+ (processReconcile): Ditto.
+ (computeAdditions): Ditto.
+ (initialize): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/Rule.java (getCommands): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/SelectionList.java (getSelection): Ditto.
+ (setElements): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/SelectionStatusDialog.java (setInitialSelection): Ditto.
+ (getPrimaryInitialSelection): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/StringMatcher.java (parseWildCards): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/WorkingCopyManager.java (setWorkingCopy): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/MakeTarget.java (getAdapter): Ditto.
+ (getEnvironment): Ditto.
+ (setEnvironment): Ditto.
+ (build): Ditto.
+ (getExpandedEnvironment): Ditto.
+ (getAttributeMap): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/MakeTargetManager.java (initializeBuilders): Ditto.
+ (getTargetBuilders): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ProjectTargets.java (findTarget): Ditto.
+ (remove): Ditto.
+ (get): Ditto.
+ (getAsXML): Ditto.
+ (contains): Ditto.
+ (add): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/editors/autoconf/ProjectionFileUpdater.java (createAnnotationMap): Ditto.
+ (match): Ditto.
+ (processReconcile): Ditto.
+ (computeAdditions): Ditto.
+ (initialize): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/ErrorParserBlock.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/HTML2TextReader.java (static initializer): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/HTMLTextPresenter.java (updatePresentation): Ditto.
+ (adaptTextPresentation): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/preferences/AutoconfEditorPreferencePage.java (ColorListContentProvider.getElements): Ditto.
+ (addTextKeyToCover): Ditto.
+ (createSyntaxPage): Ditto.
+ (createOverlayStore): Ditto.
+ (HighlightingColorListItem): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/preferences/AutomakeEditorPreferencePage.java (ColorListContentProvider.getElements): Ditto.
+ (addTextKeyToCover): Ditto.
+ (createSyntaxPage): Ditto.
+ (createOverlayStore): Ditto.
+ (HighlightingColorListItem): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/preferences/ColorManager.java (dispose): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/preferences/StatusInfo.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/MakeGenerator.java (addMakeTargetsToManager): Ditto.
+ (runScript): Ditto.
+ (regenerateMakefiles): Ditto.
+ (runCommand): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/Resources.properties: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfAnnotationHover.java (getMarkersForLine): Ditto.
+ (select): Ditto.
+ (getHoverInfo): Ditto.
+ (formatMultipleMessages): Ditto.
+ (.createInformationControl): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfCodeScanner.java (AutoconfCodeScanner): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfDocumentProvider.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfEditor.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfErrorHandler.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfIdentifierRule.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfMacro.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfMacroCodeScanner.java (AutoconfMacroCodeScanner): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfMacroContentAssistProcessor.java (computeCompletionProposals): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfMacroDamagerRepairer.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfMacroParameterListValidator.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfPartitionScanner.java (AutoconfPartitionScanner): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/IAutotoolsEditor.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/InlineDataRule.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/outline/AutoconfContentOutlinePage.java (updateSelection): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/parser/AutoconfElement.java (AutoconfElement): Ditto.
+ (toString): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/parser/AutoconfOutlineErrorHandler.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/parser/AutoconfParser.java (ExprEndCondition): Ditto.
+ (ExprEndCondition.serialVersionUID): Ditto.
+ (BlockEndCondition): Ditto.
+ (checkBlockValidity): Ditto.
+ (BlockEndCondition.serialVersionUID): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/RecursiveSingleLineRule.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/RestrictedEndOfLineRule.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/properties/AutotoolsPropertyManager.java (AutotoolsPropertyManager): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/properties/AutotoolsToolsPropertyPage.java (performOK): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/wizards/AutotoolsNewCProjectWizardV2.java (doRun): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/wizards/ConvertToAutotoolsProjectWizardPage.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/wizards/CProjectPlatformPage.java (handleConfigurationSelectionChange): Ditto.
+ (CProjectPlatformPage): Ditto.
+ (filterSupportedConfigurations): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/wizards/NewAutotoolsCCProjectWizard.java (doRun): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/wizards/NewAutotoolsCProjectWizard.java (doRun): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/wizards/NewAutotoolsProjectOptionPage.java (ManagedWizardOptionBlock.setupHelpContextIds): Ditto.
+
+2009-05-01 Jeff Johnston <jjohnstn@redhat.com>
+
+ * plugin.xml: Add new Autotools nature for time-being. Specify new builder which is based
+ on MakefileBuilder and specify new project wizard.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsMakefileBuilder: Move hastTargetBuilder
+ to AutotoolsPlugin.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsMakeTargetManager: Use AutotoolsPlugin
+ hasTargetBuilder method.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/properties/AutotoolsBuildPropertyPage: Ditto.
+ * src/org/eclipse.linuxtools/cdt/autotools/AutotoolsProjectPropertyTester.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsScannerInfoProvider.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewMakefileBuilder: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewMakeGenerator: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewProjectNature: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsPlugin.java: Move hasTargetBuilder
+ method here.
+ * src/org/eclipse/linuxtools/cdt/autotools/MakeGenerator.java: Apply fix for stopping
+ build on failure to generate Makefile.
+ * src/org/eclipse/linuxtools/cdt/autotools/Resources.properties: Change message for no
+ makefile generated.
+ * src/org/eclipse/linuxtools/cdt/autotools/wizards/AutotoolsNewCProjectWizardV2.java: New file.
+
+2009-04-30 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves #249199
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/AbstractAutotoolsHandler.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/AutoconfHandler.java: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/AutomakeHandler.java: New file.
+ * plugin.properties: Add messages for invoking autotools.
+ * plugin.xml: Change invoke autotools actions from Actions in an ActionSet to instead
+ use org.eclipse.ui.menus, org.eclipse.ui.commands, and org.eclipse.ui.handlers and
+ do not add these actions to project menu if not an Autotools project.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/AclocalHandler.java (execute): Implemented.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAclocalAction.java (run): Add check
+ for null container.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAutoconfAction.java (run): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAutomakeAction.java (run): Ditto.
+
+2009-04-21 Jeff Johnston <jjohnstn@redhat.com>
+2009-05-01 Jeff Johnston <jjohnstn@redhat.com>
+
+ * plugin.xml: Add new Autotools nature for time-being. Specify new builder which is based
+ on MakefileBuilder and specify new project wizard.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsMakefileBuilder: Move hastTargetBuilder
+ to AutotoolsPlugin.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsMakeTargetManager: Use AutotoolsPlugin
+ hasTargetBuilder method.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/properties/AutotoolsBuildPropertyPage: Ditto.
+ * src/org/eclipse.linuxtools/cdt/autotools/AutotoolsProjectPropertyTester.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsScannerInfoProvider.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewMakefileBuilder: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewMakeGenerator: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewProjectNature: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsPlugin.java: Move hasTargetBuilder
+ method here.
+ * src/org/eclipse/linuxtools/cdt/autotools/MakeGenerator.java: Apply fix for stopping
+ build on failure to generate Makefile.
+ * src/org/eclipse/linuxtools/cdt/autotools/Resources.properties: Change message for no
+ makefile generated.
+ * src/org/eclipse/linuxtools/cdt/autotools/wizards/AutotoolsNewCProjectWizardV2.java: New file.
+
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/OpenIncludeAction.java
+ (run): Fix compiler warnings.
+ (getIncludeStatement): Ditto.
+ (chooseFile): Ditto.
+ (.visit): Ditto.
+ (findFile): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakefileMessages.java
+ (getFormattedString): Fix compiler warnings.
+ * src/org/eclipse/linuxtools/cdt/autotools/MakeGenerator.java
+ (getAutogenArgs): Fix compiler warnings.
+ (runScript): Ditto.
+ (getConfigArgs): Ditto.
+ (MakeTargetComparator): Ditto.
+ (makeArray): Ditto.
+ (runCommand): Ditto.
+ (addMakeTargetsToManager): Ditto plus do not start/stop MakeTargetManager
+ anymore.
+ (saveTargets): New method.
+ (translateDocumenttoCDTProject): Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeMessages.java
+ (getFormattedString): Cast 2nd argument for message fomatting to avoid compile
+ warnings.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/wizards/AutotoolsWizardMessages.java
+ (getFormattedString): Cast 2nd argument for message formatting to avoid compiler
+ warnings.
+ (getFormattedString): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/AutotoolsPluginImages.java
+ (makeIconFileURL): Fix static member reference to avoid compiler warning.
+ 2009-05-01 Jeff Johnston <jjohnstn@redhat.com>
+
+ * plugin.xml: Add new Autotools nature for time-being. Specify new builder which is based
+ on MakefileBuilder and specify new project wizard.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsMakefileBuilder: Move hastTargetBuilder
+ to AutotoolsPlugin.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsMakeTargetManager: Use AutotoolsPlugin
+ hasTargetBuilder method.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/properties/AutotoolsBuildPropertyPage: Ditto.
+ * src/org/eclipse.linuxtools/cdt/autotools/AutotoolsProjectPropertyTester.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsScannerInfoProvider.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewMakefileBuilder: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewMakeGenerator: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsNewProjectNature: New file.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsPlugin.java: Move hasTargetBuilder
+ method here.
+ * src/org/eclipse/linuxtools/cdt/autotools/MakeGenerator.java: Apply fix for stopping
+ build on failure to generate Makefile.
+ * src/org/eclipse/linuxtools/cdt/autotools/Resources.properties: Change message for no
+ makefile generated.
+ * src/org/eclipse/linuxtools/cdt/autotools/wizards/AutotoolsNewCProjectWizardV2.java: New file.
+ (static initializer): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsPlugin.java
+ (getFormattedString): Cast 2nd argument to avoid compiler warning.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/ui/preferences/AbstractEditorPreferencePage.java
+ (validatePositiveNumber): Properly template containers.
+ (getTextFields): Ditto.
+ (initializeFields): Ditto.
+ (updateStatus): Ditto.
+ (getCheckBoxes): Ditto.
+ (getNumberFields): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakefileCodeScanner.java
+ (createRules): Use templated List.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/MakefileCodeScanner.java
+ (createRules): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/editors/automake/AbstractMakefileCodeScanner.java
+ (createTextAttribute): Correctly access static member function.
+ (initializeRules): Use templated List.
+
+2009-04-17 Jeff Johnston <jjohnstn@redhat.com>
+
+ * META-INF/MANIFEST.MF: Allow org.eclipse.cdt.make.core and org.eclipse.cdt.make.ui version numbers
+ to start pre-6.0.0 and exclude 6.1.0.
+
+2009-04-16 Jeff Johnston <jjohnstn@redhat.com>
+
+ * META-INF/MANIFEST.MF: Update dependencies to not put upper sealing for version numbers as 6.0.0.
+
+2009-03-31 Jeff Johnston <jjohnstn@redhat.com>
+
+ * plugin.xml: Set expected value to true for Autotools property page enablement.
+
+2009-02-19 Jeff Johnston <jjohnstn@redhat.com>
+
+ * .settings/org.eclipse.jdt.core.prefs: Specify Java 1.5.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsBuilder.java: Inherit from Builder.
+ (AutotoolsBuilder): Change to take ToolChain parameter and call super constructor.
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsMakefileBuilder.java (clean): Change
+ to set the Builder for the ToolChain and call different super.build method that does not
+ take new private MyBoolean argument.
+ (build): Ditto.
+ (getTargets): Fix Java 1.5 warnings.
+ (makeArrayList): Ditto.
+
+2009-01-20 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves #261717
+
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/text/hover/AutoconfTextHover.java (getMacroList):
+ Don't bother processing macros if the macro document turns out to be null.
+
+2009-01-15 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves #261257
+
+ * META-INF/MANIFEST.MF: Update plug-in to add .qualifier to id and update
+ to 1.0.2.qualifier.
+ * plugin.xml: Update invoke autotools action set to set visible to true.
+
+2009-01-06 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/cdt/autotools/MakeGenerator.java (getConfigArgs): If there
+ are no -- args in the user arguments, still pass them on to configure.
+
+2008-11-26 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves #472731
+
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsMakefileBuilder.java (hasTargetBuilder):
+ Add check for ManagedProject being null which is apparently possible.
+
+2008-11-25 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakeDocumentProvider.java: Change
+ Copyright to make Red Hat a contributor to the copyright of the original file modified to make
+ this new class.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakeEditor.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/Automakefile.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakefileCodeScanner.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakefileContentOutlinePage.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakefileReconcilingStrategy.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakefileSourceConfiguration.java: Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakeMacroDefinitionRule.java: Ditto.
+
+2008-11-03 Andrew Overholt <overholt@redhat.com>
+
+ * build.properties: Remove libhoverdocs/.
+
+2008-10-31 Andrew Overholt <overholt@redhat.com>
+
+ * META-INF/MANIFEST.MF: Use plugin.properties for provider.
+ * plugin.properties: Add "(Incubation)" to Bundle-Name.
+
+2008-10-28 Andrew Overholt <overholt@redhat.com>
+
+ * META-INF/MANIFEST.MF: Update BREE to J2SE-1.5.
+
+2008-10-14 Jeff Johnston <jjohnstn@redhat.com>
+
+ * META-INF/MANIFEST.MF: Bump up release to 1.0.1.
+
+2008-10-10 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsMakefileBuilder.java (build): Add check for default
+ configuration coming back null from buildinfo.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/properties/AutotoolsBuildPropertyPage.java (performDefaults):
+ Set make -w default to be true.
+ * src/org/eclipse/linuxtools/cdt/autotools/wizards/ConvertToAutotoolsProjectWizardPage.java (convertProject):
+ Set make -w project property to true and don't turn off indexer.
+ * src/org/eclipse/linuxtools/cdt/autotools/wizards/NewAutotoolsCCProjectWizard.java (doRun): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/wizards/NewAutotoolsCProjectWizard.java (doRun): Ditto.
+
+2008-10-10 Jeff Johnston <jjohnstn@redhat.com>
+
+ Fix for #249416
+
+ * src/org/eclipse/linuxtools/cdt/autotools/MakeGenerator.java: Fix addition of MakeTargets to run faster.
+ (addMakeTargetsToManager): Rewritten to not use MakeTargetManager addTarget or removeTarget methods which
+ cause a rewrite of the .cproject file each time.
+ (isValidTarget): Remove checking MakeTargetManager existing target.
+ (translateDocumentToCDTProject): New method which outputs the MakeTargets to the .cproject file.
+ (MakeTargetComparator): New Comparator for sorting MakeTargets.
+ (createTargetElement): New method.
+ * src/org/eclipse/linuxtools/cdt/autotools/Resources.properties: Add subtask message for refreshing Make Targets
+ which might take some time.
+
+2008-10-07 Jeff Johnston <jjohnstn@redhat.com>
+
+ Fix for #249231
+
+ * src/org/eclipse/linuxtools/cdt/autotools/MakeGenerator.java (getAutogenArgs): Add
+ support to resolve build macros.
+ (getConfigArgs): Ditto.
+ (initializeBuildConfigDirs): Ditto.
+
+2008-10-03 Jeff Johnston <jjohnstn@redhat.com>
+
+ Fix for #249644.
+
+ * plugin.xml: Change visible to true for invoke autotools action set. Also add
+ new popupmenus for running autoconf directly on configure.ac or configure.in.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAclocalAction.java (run): Use
+ getCWD to get the relative current working directory and pass a string to the new
+ TwoInputDialog constructor.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAutomakeAction.java (run): Ditto.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/InvokeAction.java (getCWD): New method
+ to get the relative CWD for an autotools action.
+ * src/org/eclipse/linuxtools/cdt/autotools/actions/TwoInputDialog.java (createDialogArea):
+ Use CLabel instead of Label for first label (the CWD).
+ (TwoInputDialog): Change to accept a String for the first message instead of an IPath.
+ * src/org/eclipse/linuxtools/cdt/autotools/MakeGenerator.java (addMakeTargetsToManager):
+ Temporarily disable.
+
+2008-10-01 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsScannerInfo.java (getIncludePaths): Fix bug that
+ was properly resolving relative paths. Also add support for parsing -isystem specifiers and putting
+ the paths on the include path list.
+
+2008-09-19 Jeff Johnston <jjohnstn@redhat.com>
+
+ * META-INF/MANIFEST.MF: Change Eclipse-AutoStart over to Bundle-ActivationPolicy.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/LibHover.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/LibHoverMessages.java: Removed.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/LibHoverMessages.properties: Removed.
+ * plugin.xml: Remove CHelpProvider library hover extension as this functionality
+ has been moved into its own plugin.
+
+2008-09-18 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/cdt/autotools/editors/automake/AutomakefileCodeScanner.java (createRules):
+ Specify Token.UNDEFINED for WordRules default token. Otherwise, just getting the first possible
+ character of a word detector will result in default token being returned and no further parsing.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/editors/AutoconfCodeScanner.java (AutoconfCodeScanner):
+ Ditto.
+
+2008-09-17 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/org/eclipse/linuxtools/cdt/autotools/AutotoolsScannerInfoProvider.java (getScannerInformation):
+ Return null if project is not an Autotools project.
+ (unsubscribe): Check scanner info for null before accessing.
+
+2008-09-17 Jeff Johnston <jjohnstn@redhat.com>
+
+ Refactored from com.redhat.eclipse.cdt.autotools to org.eclipse.linuxtools.cdt.autotools
+
+ * src/org/eclipse/linuxtools/cdt/autotools/internal/text/hover/AutoconfTextHover.java:
+ (AUTOCONF_MACROS_DOC_NAME): Change to use default URL pointing to sourceware.org.
+ (AUTOMAKE_MACROS_DOC_NAME): Ditto.
+ (getHoverDoc): Remove unused variable.
+ (getAMDoc): Modify to handle either a file or URL.
+ (getACDoc): Ditto.
+ (.createInformationControl): Switch to use non-deprecated constructor.
+ * src/org/eclipse/linuxtools/cdt/autotools/ui/LibHover.java (getLibHoverDocs): Modify to handle
+ either an external file name or URL.
+ (getLibHoverDocName): New method that returns default URL pointing to sourceware.org.
+ (HelpResource.getHref): Change to return URL.
+ (getFunctionInfo): Remove unread variable.
+
+2008-09-09 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsMakefileBuilder(hasTargetBuilder): Change logic
+ to look for ProjectType id rather than looking at builder id of configuration since ManagedProject
+ might have had configuration removed. Resolves #461647.
+ * plugin.xml: Fix typo in referenced nature of autoolsNature. Resolves #461201.
+
+2008-08-08 Jeff Johnston <jjohnstn@redhat.com>
+
+ * META-INF/MANIFEST.MF: Update version number to 1.0.0 and specify minimum/maximum versions
+ for all dependencies now that CDT 5.0 and Eclipse 3.4 must be used.
+
+2008-07-04 Jeff Johnston <jjohnstn@redhat.com>
+
+ * icons/ac16/acmacro_arg_obj.gif: New File.
+ * src/com/redhat/eclipse/cdt/autotools/ui/properties/AutotoolsEditorPropertyPage.java:
+ (getproject): Remove.
+ * META-INF/MANIFEST.MF: Add org.eclipse.core.filesystem as dependency.
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java: Update imports.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/outline/AutoconfLabelProvider.java (getImage):
+ Use special image for acmacro argument.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AutoconfEditorPreferencePage.java:
+ Update imports.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/AutotoolsPluginImages.java: Add image for
+ acmacro argument.
+ * src/com/redhat/eclipse/cdt/autotools/internal/text/hover/AutoconfTextHover.java: Update imports.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeEditor.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileReconcilingStrategy.java (reconcile):
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeDocumentProvider.java: Update imports.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MakefileReconcilingStrategy.java (reconcile):
+ Call new form of parse method.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/Directive.java:
+ (getMakefile): New required method.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/GNUAutomakefile.java:
+ (parse): New required method.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/AbstractMakefile.java:
+ (getFileURI): New required method.
+ (getMakefile): Ditto.
+ (setFileURI): Ditto.
+ (getMakefileReaderProvider): Ditto.
+ (parse): Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/OpenDeclarationAction.java:
+ (openInEditor): Use URI instead of File.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/NullMakefile.java:
+ (parse): New required method to implement.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MakefileDocumentProvider.java (createMakefile):
+ Add throws modifier.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfMacroCodeScanner.java: Update imports.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfMacroContentAssistProcessor.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfDocumentProvider.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfMacroDamagerRepairer.java: Ditto.
+
+2008-07-04 Jeff Johnston <jjohnstn@redhat.com>
+
+ * META-INF/MANIFEST.MF: Bump release to 0.9.7.
+
+2008-04-17 14:12 Ed Swartz <ed.swartz@nokia.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/:
+ internal/ui/editors/autoconf/ProjectionFileUpdater.java,
+ ui/editors/AutoconfCodeScanner.java,
+ ui/editors/AutoconfPKGWordDetector.java,
+ ui/editors/outline/AutoconfLabelProvider.java: Collapse and
+ decorate long macro arguments, and notice PKG_ macros
+
+2008-04-17 13:13 Ed Swartz <ed.swartz@nokia.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/:
+ internal/ui/editors/autoconf/ProjectionFileUpdater.java,
+ ui/editors/AutoconfEditorMacroValidator.java,
+ ui/editors/parser/AutoconfElement.java,
+ ui/editors/parser/AutoconfParser.java: Fix editor collapsing and
+ remove line number metadata from AutoconfElement, since the "end
+ line" is only meaningful in the context of the client.
+
+2008-04-17 10:43 Ed Swartz <ed.swartz@nokia.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/:
+ AutoconfEditorMessages.properties,
+ outline/AutoconfContentOutlinePage.java,
+ parser/AutoconfCaseConditionElement.java,
+ parser/AutoconfCaseElement.java, parser/AutoconfElement.java,
+ parser/AutoconfElifElement.java, parser/AutoconfElseElement.java,
+ parser/AutoconfForElement.java, parser/AutoconfIfElement.java,
+ parser/AutoconfMacroDetector.java,
+ parser/AutoconfMacroElement.java,
+ parser/AutoconfOutlineErrorHandler.java,
+ parser/AutoconfParser.java, parser/AutoconfRootElement.java,
+ parser/AutoconfTokenizer.java, parser/AutoconfWhileElement.java,
+ parser/OldAutoconfParser.java, parser/Token.java: More autoconf
+ parser work. Remove old parser and standardize AST node
+ constructors. Add more tests and fix some bugs.
+
+2008-04-10 15:40 Ed Swartz <ed.swartz@nokia.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/:
+ internal/ui/editors/autoconf/ProjectionFileUpdater.java,
+ ui/editors/AutoconfEditor.java,
+ ui/editors/AutoconfEditorMacroValidator.java,
+ ui/editors/AutoconfEditorMessages.properties,
+ ui/editors/AutoconfErrorHandler.java,
+ ui/editors/AutoconfReconcilingStrategy.java,
+ ui/editors/outline/AutoconfLabelProvider.java,
+ ui/editors/parser/AutoconfElement.java,
+ ui/editors/parser/AutoconfMacroArgumentElement.java,
+ ui/editors/parser/AutoconfMacroElement.java,
+ ui/editors/parser/AutoconfParser.java,
+ ui/editors/parser/AutoconfParser2.java,
+ ui/editors/parser/AutoconfSelectElement.java,
+ ui/editors/parser/AutoconfTokenizer.java,
+ ui/editors/parser/AutoconfUntilElement.java,
+ ui/editors/parser/AutoconfWhileElement.java,
+ ui/editors/parser/ITokenConstants.java,
+ ui/editors/parser/OldAutoconfParser.java,
+ ui/editors/parser/ParseException.java: More autoconf parser work.
+
+2008-04-09 14:38 Ed Swartz <ed.swartz@nokia.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/:
+ AutoconfEditorMacroValidator.java,
+ AutoconfEditorMessages.properties, AutoconfErrorHandler.java,
+ parser/AutoconfCaseConditionElement.java,
+ parser/AutoconfElement.java,
+ parser/AutoconfMacroArgumentElement.java,
+ parser/AutoconfMacroDetector.java, parser/AutoconfParser.java,
+ parser/AutoconfParser2.java, parser/AutoconfTokenizer.java,
+ parser/IAutoconfErrorHandler.java,
+ parser/IAutoconfMacroDetector.java, parser/IMacroDetector.java,
+ parser/ITokenConstants.java, parser/Token.java: New autoconf
+ parser work in progress
+
+2008-04-07 14:06 Ed Swartz <ed.swartz@nokia.com>
+
+ * META-INF/MANIFEST.MF,
+ src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfEditor.java,
+ src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfEditorMacroValidator.java,
+ src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfErrorHandler.java,
+ src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfMacroPartitionRule.java,
+ src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfMacroWordDetector.java,
+ src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfReconcilingStrategy.java,
+ src/com/redhat/eclipse/cdt/autotools/ui/editors/ParseException.java,
+ src/com/redhat/eclipse/cdt/autotools/ui/editors/outline/AutoconfLabelProvider.java,
+ src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfElement.java,
+ src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfMacroArgumentElement.java,
+ src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfMacroElement.java,
+ src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfOutlineErrorHandler.java,
+ src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfParser.java,
+ src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/IAutoconfErrorHandler.java,
+ src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/IAutoconfMacroValidator.java,
+ src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/ParseException.java:
+ Initial checkpoint for autotools parser changes
+
+
+2008-01-28 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/actions/AclocalHandler.java: New file for
+ future menu support.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsProjectNature.java: New file.
+ * META-INF/MANIFEST.MF: Release updated.
+ * plugin.properties: Add some new messages for autotools tool invocation.
+ * plugin.xml: Update release to 0.9.6. Add autotools project nature. Make
+ autotools commands enablement dependent on autotools project nature.
+ Specify enablesFor 1 for all autotools tool actions.
+ * src/com/redhat/eclipse/cdt/autotools/actions/AbstractTargetAction.java (setSelectedContainer): New
+ method for future menu support.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsMakefileBuilder.java (hasTargetBuilder): Use
+ AutotoolsProjectNature static addAutotoolsBuilder method.
+ (addAutotoolsBuilder): Moved to AutotoolsProjectNature.
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java (runScript): New method to
+ run scripts.
+ (regenerateMakefiles): Use runScript method to run configuration scripts. Use
+ runCommand for executables like "make".
+ (runCommand): Added comments.
+ * src/com/redhat/eclipse/cdt/autotools/wizards/ConvertToAutotoolsProjectWizardPage.java (convertProject):
+ Add new autotools project nature.
+ * src/com/redhat/eclipse/cdt/autotools/wizards/NewAutotoolsCCProjectWizard.java (addNature):
+ Ditto plus set up autotools builder.
+ (doRun): Don't set up autotools builder since it is done in addNature.
+ * src/com/redhat/eclipse/cdt/autotools/wizards/NewAutotoolsCProjectWizard.java (addNature):
+ Add new autotools project nature and set up autotools builder.
+ (doRun): Don't set up autotools builder since it is done in addNature.
+
+2007-12-05 Jeff Johnston <jjohnstn@redhat.com>
+
+ * plugin.xml: Update release to 0.9.5.3.
+
+2007-12-05 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #412651, #412661
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java (getConfigurePath): Fetch tool command
+ name instead of hard-wiring to "configure".
+ (autogenExists): Fetch command name from autogen.sh options.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsMakefileBuilder.java: (removeBuildDir): New method.
+ (clean): If user has specified remove build directory, then use removeBuildDir method.
+ * src/com/redhat/eclipse/cdt/autotools/Resources.properties: New messages for supporting
+ build directory removal operation.
+
+2007-11-28 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/LibHoverMessages.java: New File.
+ * src/com/redhat/eclipse/cdt/autotools/ui/LibHoverMessages.properties: New File.
+ * src/com/redhat/eclipse/cdt/autotools/ui/LibHover.java: Add references to
+ LibHoverMessages instead of hard-coded strings.
+ * libhoverdocs/glibc-2.7-2.xml: Regenerated.
+
+2007-11-27 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/LibHover.java
+ (HelpResource.getHref): Use latest glibc doc version.
+ (getLibHoverDocs): Ditto.
+ * libhoverdocs/glibc-2.7-2.xml: New C library docs based on glibc-2.7-2 manual.
+ * libhoverdocs/glibc.xml: Old glibc docs removed.
+
+2007-11-19 Jeff Johnston <jjohnstn@redhat.com>
+
+ * plugin.xml: Update release to 0.9.5.2. Also clear all OS lists for build definitions to
+ default to "all" OSes.
+
+2007-11-15 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #385991
+ * src/com/redhat/eclipse/cdt/autotools/ui/LibHover.java (getMatchingFunctions): New method.
+ (FunctionSummary.compareTo): New method to support Comparable interface.
+ (FunctionSummary.getIncludes): Fix to avoid type cast exception/
+ (getFunctionInfo): Revised to call getFunctionSummaryFromNode method.
+ (FunctionSummary): Add Comparable interface.
+ (getFunctionSummaryFromNode): New method.
+ (FunctionSummary.FunctionPrototypeSummary.getPrototypeString): Add NLS
+ comments.
+
+
+2007-11-01 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/properties/AutotoolsToolsPropertyPage.java: New File for
+ setting tool paths for the various autotools.
+ * src/com/redhat/eclipse/cdt/autotools/actions/InvokeAclocalAction.java (run): Use the
+ project properties setting to determine what tools to use.
+ * src/com/redhat/eclipse/cdt/autotools/actions/InvokeAutoconfAction.java (run): Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/actions/InvokeAutomakeAction.java (run): Ditto.
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/properties/AutotoolsPropertyMessages.properties: New
+ messages.
+ * src/com/redhat/eclipse/cdt/autotools/ui/properties/AutotoolsPropertyConstants.java: Add new
+ constants for setting the tool paths for aclocal, automake, and autoconf.
+ * plugin.xml: Add tools settings property page for Autotools.
+ * plugin.properties: New message for added property page.
+
+2007-10-30 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #359311, #359301, #359321
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfMacro.java: New File.
+ * src/com/redhat/eclipse/cdt/autotools/ui/properties/AutotoolsPropertyManager.java: New File.
+ * src/com/redhat/eclipse/cdt/autotools/ui/properties/IProjectPropertyListener.java: New File.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsProjectPropertyTester.java: New File.
+ * src/com/redhat/eclipse/cdt/autotools/ui/properties/IPropertyChangeManager.java: New File.
+ * src/com/redhat/eclipse/cdt/autotools/internal/text/hover/AutoconfTextHover.java:
+ (getAMDoc): New method.
+ (fBindingService):
+ (getAutomakeMacrosDocName): Modified to take a version parameter.
+ (getAutoconfMacrosDocName): Ditto.
+ (getPrototype): Changed to take an editor input.
+ (getAutoconfMacrosDocName): Ditto.
+ (AutotoolsHoverDoc): New internal class.
+ (getMacroList): New method to merge AC and AM macros together based on version
+ properties.
+ (getACDoc): New method.
+ (getIndexedInfo): Changed to take editor input.
+ (getHoverDoc): New metohd.
+ (getIndexedInfoFromDocument): New method that will parse the given document.
+ (getDefaultAutoconfMacrosDocName): New method to get the default preference
+ Autoconf macros doc name.
+ (getHoverRegion): Modified to get editor from elsewhere.
+ (getDefaultAutomakeMacrosDocName): New method to get the default preference
+ Autoconf AM macros doc name.
+ (getHoverInfo): Changed to take an editor input.
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfMacroParser.java: Removed.
+
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/editors/autoconf/ProjectionFileUpdater.java (initialize):
+ (processReconcile): Use stored editor.
+ (install): Change input parameter to AutoconfEditor.
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfParser.java (parseMacro):
+ (parse): Modified to take IEditorInput argument and pass that on to AutoconfErrorHandler.
+ (AutoconfParser): Modified to take an editor parameter.
+
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsDefaultBuildDirHandler.java: Updated
+ copyright to just Red Hat Inc.
+ * plugin.properties: New messages.
+ * plugin.xml: Add ICPropertyTab extension for editor properties. Add properties
+ page for Autotools properties.
+ * src/com/redhat/eclipse/cdt/autotools/ui/properties/AutotoolsEditorPropertyPage.java: New file.
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/properties/AutotoolsPropertyPage.java: Rewritten.
+ * src/com/redhat/eclipse/cdt/autotools/ui/properties/AutotoolsBuildPropertyPage.java:
+ * src/com/redhat/eclipse/cdt/autotools/ui/properties/AutotoolsPropertyConstants.java:
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfErrorHandler.java (AutoconfErrorHandler):
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfSourceViewerConfiguration.java
+ (AutoconfSourceViewerConfiguration): Take editor as parameter.
+ (getPresentationReconciler): Pass along or use editor passed in.
+ (getContentAssistant): Ditto.
+ (getReconciler): Ditto.
+ (getTextHover): Ditto.
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfDocumentProvider.java (connect):
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfMacroDamagerRepairer.java:
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfMacroContentAssistProcessor.java (computeCompletionProposals):
+ (AutoconfMacroContentAssistProcessor): Take editor input.
+ (computeMacroStart): Use editor.
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfReconcilingStrategy.java (reconcile):
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfEditor.java: Make this implement
+ IProjectPropertyListener
+ (handlePreferenceStoreChanged): Modified to call handleVersionChange method if a
+ autoconf or automake macro version preference change has occurred.
+ (doSetInput): Deregister editor as property listener if editor was for a project
+ file previously and register editor as property listener if editor is now for a
+ project.
+ (getAutoconfDocumentProvider): Make static.
+ (getAutoconfCodeScanner): Pass this to constructor.
+ (handleVersionChange): New method.
+ (handleProjectPropertyChanged): New IProjectPropertyListener method.
+ (initializeEditor): Pass this to source viewer configuration constructor.
+ (getAutoconfParser): Pass this to constructor.
+ (dispose): Deregister editor as property listener for a project if applicable.
+ (getAutoconfMacroCodeScanner): Pass this to constructor.
+
+2007-10-23 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfMacroCodeScanner.java: New File.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/RestrictedEndOfLineRule.java: New File.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfPartitionScanner.java (AutoconfPartitionScanner):
+ Move macro partitioning ahead of comments.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfSourceViewerConfiguration.java (getPresentationReconciler):
+ Use AutoconfMacroCodeScanner for macro damager repairer.
+ (getContentAssistant): Use AutoconfMacroCodeScanner for macro content assist.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfCodeScanner.java (nextToken):
+ New method that simply defaults to super.nextToken to be used for debugging purposes.
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfEditor.java (getAutoconfMacroCodeScanner):
+
+ * plugin.xml: Update to release 0.9.5.1.
+
+2007-10-23 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #330701
+ * src/com/redhat/eclipse/cdt/autotools/ui/properties/AutotoolsBuildPropertyPage.java: New File to
+ add property settings for how to clean an Autotools project and whether or not to use the
+ current Autotools info scanner.
+ * src/com/redhat/eclipse/cdt/autotools/ui/properties/AutotoolsPropertyMessages.java: New File.
+ * src/com/redhat/eclipse/cdt/autotools/ui/properties/AutotoolsPropertyConstants.java: New File.
+ * src/com/redhat/eclipse/cdt/autotools/ui/properties/AutotoolsPropertyMessages.properties: New File.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfParser.java (parseLines):
+ Process macros ahead of stripping out comments as this prevents removing quotes inside the
+ macro which have precedence over # (e.g. used to specify #include and not meaning a
+ comment to end of line).
+ (parseWhile): Change comment typo.
+ (parseFor): Ditto.
+ * plugin.properties: Add new messages regarding property pages.
+ * plugin.xml: Add Autotools build IcPropertyTab (AutotoolsBuildPropertyPage). Also
+ specify that AutotoolsDefaultBuildDirHandler is also an option applicability tester.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AutotoolsPreferencesMessages.properties:
+ Change the message for autoconf and automake versions to include the word "Default".
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfPartitioner.java (computePartitioning):
+ Add override method as way to print out partitions. Cannot compute and print out partitions at
+ connect time as in 4.0.1 we initially are given an empty document that is later filled.
+ (printPartitions): Change argument to be an array of partition regions.
+
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsMakefileBuilder.java (build):
+ (clean): New method. Pay attention to user clean method preference.
+ (getTargets): Pay attention to user clean target preference.
+
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsScannerInfo.java (getCompilationString):
+ Pay attention to user preference on scanner info retrieval and disable if need be.
+ (createIncludeChain): Use AutotoolsPropertyConstants to get property names to use.
+ (followIncludeChain): Ditto.
+ (getMakefile): Add nls comments.
+ (AutotoolsScannerInfo): Ditto.
+ (getDefinedSymbols): Ditto.
+ (buildFile): Ditto.
+
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java (regenerateMakefiles): Don't
+ call AutotoolsScannerInfoProvider.setDirty method anymore. Instead, set a project property
+ to indicate the scanner info is dirty.
+ (addMakeTargetsToManager): Add a try/catch statement to prevent duplicate entries from
+ stopping loop that adds make targets.
+ (initializeBuildConfigDirs): Formatting change.
+
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsScannerInfoProvider.java (getScannerInformation):
+ Add a check for project property indicating the scanner info is dirty in which case call
+ setDirty method.
+ (setDirty): Make private.
+
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsDefaultBuildDirHandler.java: Now implements
+ IOptionApplicability.
+ (isOptionEnabled): New interface method to implement.
+ (isOptionVisible): Ditto.
+ (isOptionUsedInCommandLine): Ditto (set to false).
+
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsBuilder.java (getProject): New method.
+ (AutotoolsBuilder): Add project argument.
+ (getCleanBuildTarget): Implemented using new Autotools CLEAN_MAKE_TARGET property.
+
+ * src/com/redhat/eclipse/cdt/autotools/Resources.properties: Add new message.
+
+2007-10-09 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #323641
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsScannerInfo.java (getDefinedSymbols): Use
+ the patch provided by Jose Fonseca to provide a proper regular expression for parsing
+ the defined symbols from the make output.
+
+2007-10-05 Jeff Johnston <jjohnstn@redhat.com>
+
+ * plugin.xml: Ensure the ids for InvokeAutoconf and InvokeAutomake actions are unique.
+
+2007-10-04 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsDefaultBuildDirHandler.java (handleValue):
+ Add some place holders for supporting the user manually setting the build directory.
+ * src/com/redhat/eclipse/cdt/autotools/Resources.properties: Add some dialog messages for
+ future usage.
+ * plugin.xml: Update version to 0.9.5.
+
+2007-10-02 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #315811
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsDefaultBuildDirHandler.java: New File.
+ * plugin.xml: Change build definition to version 4.0.0. Remove unused project converter
+ extension. For build directory, specify an option handler which is implemented by
+ AutotoolsDefaultBuildDirHandler.
+
+2007-09-24 Andrew Overholt <overholt@redhat.com>
+
+ * plugin.xml: Update version to 0.9.4.
+
+2007-09-21 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/actions/InvokeAutoconfAction.java (run):
+ Fix array indexing.
+
+2007-09-18 Jeff Johnston <jjohnstn@redhat.com>
+
+ * plugin.xml: Add ELF and GNU_ELF binary parsers as default for an Autotools project.
+
+2007-09-05 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #274551
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsScannerInfo.java (getCompilationString): Support
+ the case where the file isn't part of the build and there is no scanner info to gather.
+ (buildFile): Minor cosmetic changes.
+
+ * META-INF/MANIFEST.MF: Update release.
+
+2007-09-04 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java (regenerateMakefiles): Add a
+ clause to check for the case whereby there was no way to generate the Makefile and one
+ didn't already exist.
+ * src/com/redhat/eclipse/cdt/autotools/Resources.properties (Makegenerator.didnt.generate):
+ New message.
+
+2007-08-24 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #254248
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/outline/AutoconfContentOutlinePage.java (selectionChanged):
+ Make call to editor.selectAndReveal method to focus editor page on selected outline item.
+
+2007-08-24 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #254246
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/CWordFinder.java (findWord): Fix
+ to handle being in the first word of the file.
+
+2007-08-17 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #253331
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsMakefileBuilder.java (build): Enable
+ autobuilding.
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java (regenerateMakefiles): If
+ the configuration options change, clean the previous build directory so a full rebuild
+ will occur.
+
+2007-08-15 Jeff Johnston <jjohnstn@redhat.com>
+
+ * META-INF/MANIFEST.MF: Change release to 0.9.2 and specify minimum java runtime as
+ 1.4.
+
+2007-08-15 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #251412
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsMakefileBuilder.java (addAutotoolsBuilder):
+ When calling IProject.setDescription(), pass a NullProgressMonitor instead of
+ null, despite what the function API says because an isCancelled() call may occur
+ and will result in an exception thrown. Also, use a try/catch block to handle any
+ of the legitimate exceptions that might occur in this operation.
+
+2007-08-15 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/Resources.properties: Add new messages
+ for new C and C++ project wizards.
+ * src/com/redhat/eclipse/cdt/autotools/wizards/NewAutotoolsProjectWizard.java: Renamed...
+ * src/com/redhat/eclipse/cdt/autotools/wizards/NewAutotoolsCProjectWizard.java: ..to this.
+ (doRun): Rewritten based on conversion wizard to properly set up project.
+ (getProjectType): New method.
+ * src/com/redhat/eclipse/cdt/autotools/wizards/NewAutotoolsCCProjectWizard.java: New file
+ copied from NewAutotoolsCProjectWizard but inherits from NewCCProjectWizard.
+
+ * icons/dlcl16/newc_app.gif: New gif.
+ * icons/dlcl16/newcc_app.gif: Ditto.
+ * icons/elcl16/newc_app.gif: Ditto.
+ * icons/elcl16/newcc_app.gif: Ditto.
+
+ * plugin.properties: Add new strings for new C and C++ project wizards.
+ * plugin.xml: Add new C and C++ project wizards.
+
+2007-08-09 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #251604
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java (getAutogenArgs): New method.
+ (regenerateMakefiles): Pass user-specified autogen.sh options when invoking autogen.sh.
+ * plugin.xml: Add autogen.sh tool support with user options.
+ * plugin.properties: Add new autogen tool message strings.
+
+2007-07-24 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfEditor.java
+ (handlePreferenceStoreChanged): Add support for changing automake macros version.
+ * src/com/redhat/eclipse/cdt/autotools/internal/text/hover/AutoconfTextHover.java
+ (getAutomakeMacrosDocument):
+ New method.
+ (getIndexInfo, getPrototype): Create private versions of these that take a document
+ as an input parameter. Change the public static methods to call the private
+ versions with the autoconf macro document and the automake macro document, if
+ the macro isn't found yet.
+ (init): Set up the autoconf macro document and automake macro document.
+ (reinit): Reset both the autoconf and automake macro documents.
+
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AutoconfEditorPreferencePage.java
+ (LATEST_VERSION): Replace with LATEST_AC_VERSION and LATEST_AM_VERSION.
+ (createOverlayStore): Add automake version setting.
+ (initializeVersion): Replace with initializeACVersion and initializeAMVersion.
+ (initialize): Call the two replacements of initializeVersion.
+ (createVersionTabContent): Add automake version support.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AutotoolsEditorPreferenceConstants.java
+ Add automake version support.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AutotoolsPreferencesMessages.properties:
+ Add messages used in automake version preference.
+
+ * libhoverdocs/ammacros-1.4-p6.xml: New automake macro docs for 1.4-p6.
+ * libhoverdocs/ammacros-1.9.5.xml: New automake macro docs for 1.9.5.
+ * libhoverdocs/ammacros-1.9.6.xml: New automake macro docs for 1.9.6.
+
+2007-07-17 Jeff Johnston <jjohnstn@redhat.com>
+
+ * MANIFEST.MF: Bump up release to 0.9.1.
+
+2007-07-16 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/GNUAutomakefile.java
+ (parse): Fix Automake if/else constructs to be child/parent directives as appropriate.
+ (bypassIf, bypassElse, isTrue): Removed.
+ (parseIf): Add rules parameter.
+ (addDirective): Remove caveat when dealing with automake if/else.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/IAutomakeConditional.java
+ (getRules, setRules): New methods for the interface.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/Else.java: Add ICommand
+ interface and implement required methods including new ones add to IAutomakeConditional.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/If.java: Ditto.
+
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeErrorHandler.java
+ (update): Change to call checkChildren for makefile.
+ (checkChildren): New recursive method to check for bad directives.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileContentOutlinePage.java
+ (AutomakefileLabelProvider.getImage): Add support for IAutomakeConditional elements and
+ remove reference to AutomakeIfElse class.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeMacroDefinitionRule.java
+ (isValidCharacter): Add support for "+-$()@" chars.
+
+2007-07-11 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/GNUAutomakefile.java
+ (parseIf): Add @if support.
+ (isTrue): Default to true for if conditions.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/GNUMakefileConstants.java:
+ Add @if and @endif macros.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/GNUMakefileUtil.java
+ (isIf): Add @if support.
+ (isEndif): Add @endif support.
+
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileCodeScanner.java:
+ Add support for @if and @endif keywords.
+ (createRules): Add support for whitespace and simple identifiers.
+
+2007-07-09 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #247518
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileCodeScanner.java
+ (createRules): Use new AutoconfSubstRule class for identifying autoconf substituitions.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileUtil.java (isConfigMacro):
+ Refine so that macro must start and end with @ and contain at least one valid char.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutoconfSubstRule.java: New file.
+
+2007-07-06 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #246153
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeDocumentProvider.java (createFileInfo):
+ Rewrite to handle workspace files as well as external ones.
+ (createMakefile): Change to accept a file name rather than an IFile.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeEditor
+ (getDefault): New method.
+ (doSetInput): Ditto.
+ (initializeEditor): Add a few lines that would have been performed by
+ base class initializeEditor.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeErrorHandler
+ (AutomakeMarker): New internal class for error marking.
+ (update): Switch to using internal markers and directly updating the
+ Annotation model.
+ (removeExistingMarkers): Directly reference the annotation model.
+ (AutomakeErrorHandler): Fetch and store the annotation model for the input.
+ Change prototype.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileReconcilingStrategy.java
+ (AutomakefileReconcilingStrategy): Change to store an IEditorInput. Use new
+ AutomakeErrorHandler interface.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MakefileEditor.java
+ (initializeEditor): Remove fixme comment.
+
+2007-07-04 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #246783
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeEditor.java:
+ (initializeEditor): Call AutotoolsEditorPreferenceConstants.initializeDefaultValues
+ to ensure the editor default values are set.
+
+2007-06-29 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #246154
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsBuilder.java: New proxy
+ class to wrap an existing IBuilder and override build path functionality.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsMakefileBuilder.java:
+ (build): Wrap the builder using the new AutotoolsBuilder class so the
+ build path will work properly.
+
+2007-06-28 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #246134
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfErrorHandler.java:
+ (AutoconfErrorHandler): Change constructor to just take IDocument input.
+ (AutoconfMarker): New private class for marking autoconf document.
+ (createMarker): New private method to create AutoconfMarker in document.
+ (handleError): Create a marker and add it to annotation model durectly
+ instead of using MarkerUtilities.
+ (removeAllMarkers): Remove directly from annotation model instead of using file.
+ (removeExistingMarkers): Ditto.
+ (getDocument): New method.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfDocumentProvider.java:
+ (connect): Change constructor call to AutoconfErrorHandler.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfEditor.java:
+ (getViewer): New method to return the source viewer for the editor.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfMacroParser.java:
+ (AutoconfMacroParser): Change constructor call to AutoconfErrorHandler.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfParser.java:
+ Change all uses of AutoconfOutlineErrorHandler to AutoconfErrorHandler.
+
+2007-06-26 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #245820
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileUtil.java (isAutomakeCommand):
+ New method.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/Conditional.java (isIf): New
+ method.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/IAutomakeConditional.java:
+ New interface.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/Else.java: Changed to
+ implement new IAutomakeConditional interface.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/If.java: New file.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/GNUAutomakefile.java
+ (parse): Add Automake if/else parsing and support for Makefile.in processed if/else blocks.
+ (bypassIf, bypassElse, parseIf): New private methods.
+ (addDirective): Don't add directives to an Automake if or else construct.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/GNUMakefileConstants.java:
+ Add CONDITIONAL_IF constant.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/GNUMakefileUtil.java
+ (isIf): New method.
+
+2007-06-25 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MakefileEditorTogglePresentationAction.java:
+ New file.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MakefileEditorActionContributor.java: Ditto.
+
+ * icons/etool16/alphab_sort_co.gif: New icon.
+ * icons/etool16/build_menu.gif: Ditto.
+ * icons/etool16/convert_normal.gif: Ditto.
+ * icons/etool16/make.gif: Ditto.
+ * icons/etool16/makefile.gif: Ditto.
+ * icons/etool16/newc_app.gif: Ditto.
+ * icons/etool16/newcc_app.gif: Ditto.
+ * icons/etool16/segment_edit.gif: Ditto.
+ * icons/etool16/target_add.gif: Ditto.
+ * icons/etool16/target_build.gif: Ditto.
+ * icons/etool16/target_delete.gif: Ditto.
+ * icons/etool16/target_edit.gif: Ditto.
+ * icons/etool16/target_filter.gif: Ditto.
+ * icons/etool16/update_old.gif: Ditto.
+
+ * plugin.xml: Change Automake editor to use new internal MakefileEditorActionContributor
+ class rather than point to the internal one in internal CDT make.
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfDocumentSetupParticipant.java:
+ (setup): Don't bother registering this as document listener.
+ (documentAboutToBeChanged): Remove body of method as this is no longer needed.
+
+2007-06-25 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #245611
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfMacroContentAssistProcessor.java
+ (getMacroList): Change to call AutoconfTextHover to get the name of the macros
+ document since it will depend on current preferences.
+ * src/com/redhat/eclipse/cdt/autotools/internal/text/hover/AutoconfTextHover.java
+ (getAutoconfMacrosDocName): New static method.
+
+2007-06-19 Jeff Johnston <jjohnstn@redhat.com>
+
+ * libhoverdocs/acmacros-2.59.xml: New autoconf hover text and syntax info
+ for autoconf 2.59.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AutoconfEditorPreferencePage.java:
+ Add 2.59 support.
+
+2007-06-18 Jeff Johnston <jjohnstn@redhat.com>
+
+ * libhoverdocs/acmacros-2.13.xml: New autoconf hover text and syntax info
+ for autoconf 2.13.
+ * libhoverdocs/acmacros-2.61.xml: New autoconf hover text and syntax info
+ for autoconf 2.61.
+ * libhoverdocs/acmacros.xml: Replaced with files above.
+
+ * src/com/redhat/eclipse/cdt/autotools/internal/text/hover (init): Change document
+ to be dependent on autoconf version preference.
+ (reinit): New method to force reinitialization of help document.
+ (getPrototype): Fix to allow for earlier versions which specify multiple
+ prototypes in one using "[,", for example.
+
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AutoconfEditorPreferencePage.java:
+ Add version preference support.
+ (createOverlayStore): Add version support.
+ (createContents): Add version tab.
+ (initializeVersion): New method.
+ (createVersionTabContents): Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AutotoolsEditorPreferenceConstants.java:
+ Add AUTOCONF_VERSION and initialize the default autoconf version value to be the
+ highest possible.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AutotoolsPreferencesMessages.properties:
+ Add new messages pertaining to autoconf version.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfEditor.java (handlePreferenceStoreChanged):
+ If the autoconf version is changed, invalidate the document and force a reparse.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfEditorMessages.java (getFormattedString):
+ Add new method which takes 3 replacement strings.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfEditorMessages.properties:
+ Change macro error messages to take the autoconf version as a parameter.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfParser.java: Fix
+ typo for too many args message id.
+ (parseMacro): For wrong number of argument messages, get the current autoconf version preference
+ and pass it in to the message.
+
+2007-06-07 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/Automakefile.java: Rebase on
+ GNUAutomakefile class. Remove all parsing methods.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeDocumentProvider.java: Fix
+ comments to refer to internal Autotools classes as appropriate.
+
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/Conditional.java: New file.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/DefineVariable.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/DeleteOnErrorRule.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/Else.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/Endef.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/Endif.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/ExportAllVariablesRule.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/ExternalEditorInput.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/GNUAutomakefile.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/GNUTargetRule.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/GNUVariableDef.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/Ifdef.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/Ifeq.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/Ifndef.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/Ifneq.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/Include.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/IntermediateRule.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/LowResolutionTimeRule.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/NotParallelRule.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/OverrideDefine.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/OverrideVariable.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/PhonyRule.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/SecondaryRule.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/StaticTargetRule.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/TargetVariable.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/Terminal.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/UnExport.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/VPath.java: Ditto.
+
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/ExternalEditorInput.java: Update comments
+ that should refer to internal Autotools classes.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/MakefileDocumentProvider.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/ProjectionMakefileUpdater.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/WorkingCopyManager.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/editors/autoconf/ProjectionFileUpdater.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AutoconfEditorPreferencePage.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AutomakeEditorPreferencePage.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfDocumentProvider.java: Ditto.
+
+2007-06-07 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #243184
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeConfigMacro.java: New file.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/Automakefile.java (parse): Add
+ support for autoconf macros.
+ (parseConfigMacro): New method.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileCodeScanner.java
+ (createRules): Add rule for configure macros.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileContentOutlinePage.java
+ (getImage): Add support for AutomakeConfigMacro.
+ (getText): Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileUtil.java (isConfigMacro):
+ New method.
+
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/MakeUIImages.java: Add acmacro_obj image.
+ * icons/obj16/acmacro_obj.gif: New icon.
+
+2007-06-05 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/actions/BuildSpecial.java: Removed. No
+ longer used now that MakeTargets work.
+ * src/com/redhat/eclipse/cdt/autotools/actions/CheckboxTablePart.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/actions/MakeContentProvider.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/actions/MakeTargetDialog.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/actions/SharedPart.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/actions/SharedPartWithButtons.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/actions/StructuredViewerPart.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/actions/TargetListViewerPart.java: Ditto.
+
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/editors/autoconf/ProjectionFileUpdater.java: New file.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AutotoolsEditorPreferenceConstants.java:
+ Add new constants for Autoconf editor folding.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/IAutotoolsEditor.java: New interface.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfEditor.java: Make class
+ implement IAutotoolsEditor interface. This allows ProjectionFileUpdater class to
+ work. Add folding support based on MakefileEditor class.
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfElement.java
+ (getStartOffset, setStartOffset, getEndLineNumber, setEndLineNumber): New methods.
+ (getEndOffset, setEndOffset, getLastChild): Ditto.
+ (AutoconfElement): New constructor which takes start offset.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfCaseElement.java:
+ Add new constructor to match that of AutoconfElement.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfElifElement.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfElseElement.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfForElement.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfIfElement.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfMacroElement.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfWhileElement.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfParser.java:
+ (AutoconfLineReader): New internal class to replace LineNumberReader class. Change
+ all internal parse routines to use this class instead of LineNumberReader.
+ (parseLines): When a semicolon is found that denotes a multistatement line, update the end
+ offset of the previous construct and set the start offset for the next construct to be after
+ the semicolon and additional whitespace.
+ (parseMacro, parseIf, parseElif, parseElse, parseCase, parseFor, parseWhile): Construct with
+ start offset based on previous mark. After processing, set the end line number for the
+ element.
+
+2007-06-01 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeEditor.java:
+ Refactor AutomakeEditorPreferenceConstants to AutotoolsEditorPreferenceConstants.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/ColorManager.java: Moved from here to..
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/ColorManager.java: ...here
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeEditorFactory.java:
+ Changed due to movement of ColorManager class.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileCodeScanner.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/AbstractMakefileCodeScanner.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MakefileCodeScanner.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MakefileSourceConfiguration.java: Ditto.
+
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AbstractAutomakeEditorPreferencePaga.java:
+ Refactored to be...
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AbstractEditorPreferencePage.java:
+ ...this.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AutoconfEditorPreferencePage.java: New file.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AutomakeEditorPreferenceConstants.java:
+ Refactored to be...
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AutotoolsEditorPreferenceConstants.java:
+ ...this.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AutomakePreferencesMessages.java:
+ Refactored to be...
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AutotoolsPreferencesMessages.java:
+ ...this.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AutomakePreferencesMessages.properties:
+ Refactored to be...
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AutotoolsPreferencesMessages.properties:
+ ...this.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AutomakeEditorPreferencePage.java:
+ Use new refactored classes.
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfCodeScanner.java: Add color preference
+ support.
+ (AutoconfCodeScanner): A color provider is no longer needed as input.
+ (getToken, getTokenProperties, addToken, indexOf, affectsBehavior): New methods.
+ (adaptToPreferenceChange, adaptToColorChange, adaptToStyleChange); Ditto.
+ (createTextAttribute, initialize): Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfColorProvider.java: Removed and replaced
+ with ColorManager.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfEditor.java: Change to use
+ ColorManager.
+ (initializeEditor): Set the preference change store and initialize the editor preferences.
+ (getAutoconfCodeScanner): Changed to match new AutoconfCodeScanner constructor.
+ (getPreferenceColor): New method.
+ (getColorProvider): Removed.
+ (handlePreferenceStoreChanged): New method.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfSourceViewerConfiguration.java:
+ Inherit from TextSourceViewerConfiguration. Store the preference store.
+ * plugin.properties: Add new internationalized string for Autoconf editor preferences.
+ * plugin.xml: Add Autoconf editor preference page.
+
+2007-05-30 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #241908
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java (addMakeTargetsToManager):
+ Change builder id used to one used in plugin.xml.
+
+2007-05-30 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #241782
+ * src/com/redhat/eclipse/cdt/autotools/Resources.properties: Add new message
+ for Autotools preference page.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeEditor.java
+ (initializeEditor): Initialize color and folding preference defaults.
+ (handlePreferenceStoreChanges): Call super method to refresh editor.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/ColorManager.java:
+ Change constants to be in Autotools domain.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AbstractAutomakeEditorPreferencePage.java:
+ New file.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AutomakeEditorPreferenceConstants.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AutomakeEditorPreferencePage.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AutomakePreferencesMessages.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AutomakePreferencesMessages.properties:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/AutotoolsPreferencePage.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/ColorEditor.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/OverlayPreferenceStore.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/StatusInfo.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/preferences/TabFolderLayout.java: Ditto.
+
+ * plugin.properties: Add new internationalized strings from plugin.xml.
+ * plugin.xml: Add Autotools and Automake Editor preference pages. Also
+ clean up some extensions to use internationalized strings.
+
+2007-05-28 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #241612
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsPlugin.java:
+ Add utility methods from MakeUIPlugin to log messages and
+ issue error dialogs, etc..
+ * src/com/redhat/eclipse/cdt/autotools/actions/MakeTargetDialog.java:
+ Use MakeUIMessages instead of MakeUIPlugin for messages.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeCompletionProcessor.java:
+ Replace internal CDT classes with internal Autotools classes.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeDocumentProvider.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeEditor.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeEditorFactory.java:
+ Ditto.
+ (getPreferenceColor): New method.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeErrorHandler.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/Automakefile.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileCodeScanner.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileContentOutlinePage.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileReconcilingStrategy.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileSourceConfiguration.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeIfElse.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeMacroDefinitionRule.java:
+ Ditto.
+ (evaluate): Remove unused local variable ch.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeTextHover.java: Ditto.
+
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/AbstractElementListSelectionDialog.java:
+ New file transported from CDT internals.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/AbstractMakefile.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/AbstractMakefileCodeScanner.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/AddBuildTargetAction.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/ArchiveTarget.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/BadDirective.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/ColorManager.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/Command.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/Comment.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/CompletionProposalComparator.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/DefaultRule.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/Directive.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/EditorUtility.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/ElementListSelectionDialog.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/EmptyLine.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/ExternalEditorInput.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/ExternalEditorInputFactory: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/GNUMakefileConstants.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/IgnoreRule.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/IMakefileDocumentProvider.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/IMakefileEditorActionDefinitionIds.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/InferenceRule.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/IReconcilingParticipant.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/ISelectionValidator.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/ITranslationUnitEditorInput.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/LexicalSortingAction.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MacroDefinition.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MacroDefinitionRule.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MacroReferenceRule.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MakefileAnnotationHover.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MakefileCodeScanner.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MakefileCompletionProcessor.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MakefileConstants.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MakefileContentOutlinePage.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MakefileDocumentProvider.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MakefileDocumentSetupParticipant.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MakefileEditor.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MakefileEditorPreferenceConstants.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MakefileMessages.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MakefilePartitionScanner.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MakefileReader.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MakefileReconcilingStrategy.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MakeFileResources.properties: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MakefileSourceConfiguration.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MakefileStorageDocumentProvider.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MakefileTextHover.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MakefileWordDetector.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/MessageLine.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/NullMakefile.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/OpenDeclarationAction.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/OpenIncludeAction.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/Parent.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/PosixMakefileUtil.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/PosixRule.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/PreciousRule.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/ProjectionMakefileUpdater.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/Rule.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/SccsGetRule.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/SelectionList.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/SilentRule.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/SpecialRule.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/StatusInfo.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/StringMatcher.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/SuffixesRule.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/Target.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/TargetRule.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/TwoArrayQuickSort.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/Util.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/VariableDefinition.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/WordPartDetector.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/editors/automake/WorkingCopyManager.java: Ditto.
+
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/AutotoolsPluginImages.java: Switch to
+ use new ac16 icon directory instead of etools16.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/ErrorParserBlock.java: Use
+ MakeUIMessages instead of MakeUIPlugin for messages.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/MakeUIImages.java: Use
+ AutotoolsPlugin for error dialogs. Add new images.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/MakeUIMessages.java: New file.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/MakeUIPlugin.java: Removed.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/MessageLine.java: Fix typo.
+
+ * src/com/redhat/eclipse/cdt/autotools/internal/wizards/AutotoolsWizardMessages.java:
+ Fix bundle id for messages.
+
+ * plugin.xml: Fix icon references.
+
+ * icons/ac16: New folder containing icons that used to be in etool16.
+ * icons/dlcl16/build_configs.gif: New icon.
+ * icons/dlcl16/open_include.gif: Ditto.
+ * icons/elcl16/build_configs.gif: Ditto.
+ * icons/elcl16/open_include.gif: Ditto.
+ * icons/dtool16/alphab_sort_co.gif: Ditto.
+ * icons/dtool16/build_menu.gif: Ditto.
+ * icons/dtool16/convert-normal.gif: Ditto.
+ * icons/dtool16/make.gif: Ditto.
+ * icons/dtool16/makefile.gif: Ditto.
+ * icons/dtool16/newc_app.gif: Ditto.
+ * icons/dtool16/newcc_app.gif: Ditto.
+ * icons/dtool16/segment_edit.gif: Ditto.
+ * icons/dtool16/target_add.gif: Ditto.
+ * icons/dtool16/target_build.gif: Ditto.
+ * icons/dtool16/target_delete.gif: Ditto.
+ * icons/dtool16/target_edit.gif: Ditto.
+ * icons/dtool16/update_old.gif: Ditto.
+ * icons/etool16: Move autoconf editor icons to ac16 folder.
+ * icons/obj16/command_obj.gif: New icon.
+ * icons/obj16/define_obj.gif: Ditto.
+ * icons/obj16/environment_obj.gif: Ditto.
+ * icons/obj16/envvar_obj.gif: Ditto.
+ * icons/obj16/error_obj.gif: Ditto.
+ * icons/obj16/hfolder_obj.gif: Ditto.
+ * icons/obj16/include_obj.gif: Ditto.
+ * icons/obj16/irule_obj.gif: Ditto.
+ * icons/obj16/lib_obj.gif: Ditto.
+ * icons/obj16/macro_obj.gif: Ditto.
+ * icons/obj16/relation_obj.gif: Ditto.
+ * icons/obj16/target_obj.gif: Ditto.
+ * icons/obj16/trule_obj.gif: Ditto.
+
+2007-05-14 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java:
+ (addMakeTargetsToManager): Use MakeCorePlugin to get an IMakefile
+ rather than use the internal PosixMakefile class directly.
+
+2007-05-14 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java:
+ (initialize): Store the configuration for later usage.
+ (getConfigSettingsPath): Use stored configuration instead of fetching
+ it each time.
+ (runCommand): Ditto.
+ (addMakeTargetsToManager): Use the real MakeTargetManager to store
+ targets. Mark targets added by parsing the Makefile with special
+ tag. Delete all MakeTargets with special tag before adding the
+ new targets.
+ (initializeBuildConfigDirs): Use stored configuration to get the
+ tool options rather than the ManagedBuildInfo.
+ (getConfigArgs): Ditto.
+ (addMakeTargetsToManager):
+
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsMakefileBuilder.java:
+ Inherit from CommonBuilder.
+ (build): Change to fetch make target name from args map and store for
+ later use.
+ (getTargets): Change to get make target from stored make target name.
+
+ * plugin.xml: Remove Build Special Targets menu item as it is no longer
+ needed. Add MakeTargetBuilder extension so we can use MakeTargets.
+
+2007-05-11 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #239886
+ * src/com/redhat/eclipse/cdt/autotools/actions/InvokeAclocalAction.java (run):
+ Pass the CWD to TwoInputDialog and use it when executing the command. On
+ success, show a success dialog.
+ * src/com/redhat/eclipse/cdt/autotools/actions/InvokeAutoconfAction.java (run):
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/actions/TwoInputDialog.java (TwoInputDialog):
+ Take the CWD as a parameter.
+ (createDialogArea): Add label with CWD.
+
+ * src/com/redhat/eclipse/cdt/autotools/actions/InvokeAutomakeAction.java (run):
+ * src/com/redhat/eclipse/cdt/autotools/actions/InvokeMessages.java (getString):
+ Add comments.
+ (getFormattedString): New method.
+
+ * src/com/redhat/eclipse/cdt/autotools/actions/InvokeAction.java (getExecDir):
+ New method to return the CWD.
+ (showSuccess): New method to display a success dialog.
+
+ * src/com/redhat/eclipse/cdt/autotools/actions/InvokeMessages.properties: Add new
+ messages.
+
+2007-05-10 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #238173
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfIdentifierRule.java (evaluate):
+ Cast read character to char before invoking Character methods to avoid gcj bug.
+
+2007-04-30 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #238493
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/RecursiveSingleLineRule.java (evaluate):
+ Add check for scanner column < 0 which means we are already at EOF.
+
+2007-04-25 jjohnstn <jjohnstn@toocool.toronto.redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/wizards/NewAutotoolsProjectOptionPage.java (ManagedWizardOptionBlock.setupHelpContextIds):
+ Switch to use CDTHelpContextIds for static help context id.
+ * src/com/redhat/eclipse/cdt/autotools/wizards/CProjectPlatformPage.java (createControl):
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/wizards/ManagedProjectOptionBlock.java (createContents):
+ Ditto.
+
+2007-04-25 Jeff Johnston <jjohnstn@redhat.com>
+
+ Bugzilla #182821
+
+ 2007-04-25 Mikhail Sennikovsky
+ * plugin.xml: Add plugin extensions which let the CDT know that includes and
+ defined symbols are supported for the Autotools tool-chain.
+
+2007-04-12 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #236304
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java (runCommand): Use the
+ job description as a message in the console.
+ (regenerateMakefiles): Fix autogen.sh logic to run configure after invoking
+ autogen.sh if config.status doesn't exist. Make sure console is reused for
+ 2nd step. Change some of the status messages with new ones.
+ (autogenExists): Fix bug where path to autogen.sh wasn't being set on return.
+ * src/com/redhat/eclipse/cdt/autotools/Resources.properties: Add new MakeGenerator messages.
+
+2007-04-11 jjohnstn <jjohnstn@toocool.toronto.redhat.com>
+
+ Bugzilla #236077
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/CWordFinder.java: New file.
+ * src/com/redhat/eclipse/cdt/autotools/internal/text/hover/AutoconfTextHover.java: Replace
+ CDT internal classes with Autotools internal classes.
+ * src/com/redhat/eclipse/cdt/autotools/internal/wizards/ManagedProjectOptionBlock.java (createContents):
+ Replace WorkbenchHelp reference with non-deprecated alternative.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsMakeTargetManager.java: Fix
+ imports.
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java (runCommand): Replace
+ deprecated environmental variable method being used.
+ (createFile): Make protected instead of private.
+ (getInvalidDirList): Remove.
+ * src/com/redhat/eclipse/cdt/autotools/wizards/ConvertToAutotoolsProjectWizardPage.java (convertProject):
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsPlugin.java (getWorkingCopyManager):
+ Moved into AutomakeEditorFactory.
+ (getAutomakefileDocumentProvider): Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeEditorFactory.java: New file.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeCompletionProcessor.java:
+ Change all calls to getWorkingCopyManager and getAutomakefileDocumentProvider to use
+ new AutomakeEditorFactory class.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeEditor.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileContentOutlinePage.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileReconcilingStrategy.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeCompletionProcessor.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfEditorMessages.java (getResourceBundle):
+ New method.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfEditorMessages.properties: Add
+ new messages that were formerly fetched internally from CDT.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfEditor.java: Comment out unused
+ projectSupport.
+ (createActions): Use AutoconfEditorMessages.
+ (InformationDispatchAction.makeAnnotationHoverFocusable): Ditto.
+ (fProjectionModelUpdater): Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfAnnotationHover.java (formatMultipleMessages):
+ Use AutoconfEditorMessages instead of CUIMessages.
+ * src/com/redhat/eclipse/cdt/autotools/interenal/ui/ErrorParserBlock.java: New file.
+ * src/com/redhat/eclipse/cdt/autotools/wizards/CProjectPlatformPage.java (createControl): Remove
+ usage of WorkbenchHelp class which is deprecated.
+ * src/com/redhat/eclipse/cdt/autotools/wizards/NewAutotoolsProjectOptionPage.java (ManagedWizardOptionBlock.setupHelpContextIds):
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/wizards/ConvertToAutotoolsProjectWizardPage.java (convertProject):
+ Remove unused code. Switch to use non-deprecated interface for getting
+ indexer.
+
+2007-04-10 jjohnstn <jjohnstn@toocool.toronto.redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/wizards/NewAutotoolsProjectWizard.java:
+ Removed.
+ * src/com/redhat/eclipse/cdt/autotools/wizards/NewAutotoolsProjectOptionPage.java:
+ Use new internal ManagedProjectOptionBlock class.
+ * src/com/redhat/eclipse/cdt/autotools/wizards/CProjectPlatformPage.java:
+ Switch to use new AutotoolsWizardMessages internal class.
+ * src/com/redhat/eclipse/cdt/autotools/wizards/ConvertToAutotoolsProjectWizardPage.java:
+ Fix imports.
+ * src/com/redhat/eclipse/cdt/autotools/wizards/ConvertToAutotoolsProjectWizard.java (doRunEpilogue):
+ Switch to new IRunnableWithProgress interface.
+ * src/com/redhat/eclipse/cdt/autotools/internal/wizards/AutotoolsWizardMessages.java:
+ New file to support old wizard code.
+ * src/com/redhat/eclipse/cdt/autotools/internal/wizards/AutotoolsWizardMessages.properties:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/wizards/ConfigurationContentProvider.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/wizards/ConfigurationLabelProvider.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/wizards/ManagedProjectOptionBlock:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/AutotoolsPluginImages.java:
+ Add build_configs.gif for Wizard support.
+ * src/com/redhat/eclipse/cdt/autotools/internal/MarkerGenerator.java (addMarker):
+ New method required by IMarkerGenerator interface.
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java (getProject):
+ New method.
+ (initializeBuildConfigDirs): Change the default build directory
+ for the configuration's builder.
+ Add support for CDT 4.0 M6.
+ * cdtpatches/*: Removed.
+ * icons/eclcl16: New icon directory.
+ * icons/eclcl16/build_configs.gif: New icon.
+ * plugin.properties: Add new strings used in plugin.xml.
+ * plugin.xml: Add buildType and buildArtefactType extensions. Add
+ toolchain to Autotools project buildDefinitions extension.
+
+2007-04-04 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #235076
+ * src/com/redhat/eclipse/cdt/autotools/wizards/CProjectPlatformPage.java (CProjectPlatformPage):
+ Add missing NLS comment.
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java (makefileCvsExists): Use
+ getMakefileCVSPath method.
+ (configureExists): Use getConfigurePath method.
+ (getConfigurePath): New method.
+ (getMakefileCVSPath): New method.
+ (regenerateMakefiles): Use getConfigurePath and getMakefileCVSPath to get the
+ command to use when either of these is found to exist.
+ (autogenExists): Change to protected method.
+
+2007-03-30 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfMacroDamagerRepairer.java (createPresentation):
+ Comment out macro parsing as this is now done by the reconciler and overall parsing.
+ * src/com/redhat/eclipse/cdt/autotools/internal/text/hover/AutoconfTextHover.java (getPrototype):
+ Fix so it is properly setting minimum and maximum parm counts for a macro.
+ * src/com/redhat/eclipse/cdt/autotools/internal/text/hover/AutoconfPrototype.java (setMaxParms):
+ Fix typo.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfParser.java (matchParentheses):
+ Update logic.
+ (parseMacro): Add error checking for minimum and maximum parameters as well as unmatched
+ parentheses or square-brackets.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfMacroElement.java (setParmCount):
+ New method.
+ (setQuoteDepth): Ditto.
+ (getParmCount): Ditto.
+ (getQuoteDepth): Ditto.
+ (setDepth): Ditto.
+ (getDepth): Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfEditorMessages.properties: Add
+ new error messages for parsing of macros.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/outline/AutoconfContentOutlinePage (update):
+ Use viewer refresh instead of redraw when updating.
+ (updateSelection): New method.
+
+2007-03-19 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/Makegenerator.java (regenerateMakefiles):
+ Refine algorithm so we don't cause a reconfigure if the configuration settings
+ file doesn't contain the project name. If the configuration arguments are
+ unchanged and the settings file is the old style, rewrite with project
+ name.
+
+2007-03-19 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #230128
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java (saveConfigArgs): Add
+ the project name as first argument saved.
+ (regenerateMakefiles): Read off first argument and verify that it matches the
+ current project name.
+
+2007-03-19 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #232965
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java (runCommand):
+ Change prototype to accept a console and a boolean which when true
+ means to restart the console which may possibly clear the console.
+ (regenerateMakefiles): Change calls to runCommand. For multiple
+ actions (e.g. autogen.sh then configure), opt for the 2nd, 3rd, etc...
+ calls to not clear the console. Don't run config.status unless
+ the top-level Makefile is missing.
+ * src/com/redhat/eclipse/cdt/autotools/Resources.properties: Add new
+ MakeGenerator.unsupportedConfig message.
+
+2007-03-16 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java (regenerateMakefiles):
+ If configuration parameters have changed, mark all Scanner Info as dirty.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsScannerInfoProvider.java (getCollectionName):
+ Make synchronized to avoid concurrent access of the infoCollection.
+ (getScannerInformation): Ditto.
+ (setDirty): New method.
+
+2007-03-14 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzilla #230493
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsScannerInfo.java (getDefinedSymbols):
+ Recalculate each time if compilation string is null.
+ (getIncludePaths): Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsScannerInfoProvider.java (getScannerInformation):
+ Use a map of configurations to keep ScannerInfo seperate per configuration. Use
+ current configuration to fetch scanner info.
+
+2007-02-27 Jeff Johnston <jjohnstn@redhat.com>
+
+ * plugin.xml: Bump up release to 0.0.8.1.
+
+2007-02-27 Jeff Johnston <jjohnstn@redhat.com>
+
+ Resolves Bugzillas #230253, #205310.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsMakeTargetManager.java (addTargets):
+ New method to do mass add of MakeTargets for performance improvement.
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java:
+ (addMakeTargetsToManager): Use new AutotoolsMakeTargetManager addTargets method.
+ * src/com/redhat/eclipse/cdt/autotools/wizards/NewAutotoolsProjectWizard.java (doRun):
+ Set indexer to NullIndexer before applying options.
+ * src/com/redhat/eclipse/cdt/autotools/wizards/ConvertToAutotoolsProjectWizardPage.java (convertProject):
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/wizards/ConvertToAutotoolsProjectWizard.java:
+ Add new NULL_INDEXER_ID.
+ * src/com/redhat/eclipse/cdt/autotools/internal/MakeTargetManager.java: Expose
+ projectTargetMap to inheriting classes.
+
+2007-02-23 Jeff Johnston <jjohnstn@redhat.com>
+
+ Fix for Bugzilla 229891.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsMakefileBuilder.java (getMakeTargets):
+ Use Make Target info to find the real build target which may have been set by the
+ Build Special Targets action.
+ (build): Set up the IMakeBuildInfo needed to fetch Make Target from.
+
+2007-02-22 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/actions/InvokeMessages.properties: Fix a few
+ typos.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfDocumentSetupParticipant.java (setup):
+ Use IDocumentExtension3 version of setDocumentParitioner if document is an instance of
+ IDocumentExtension3.
+
+2007-02-22 Andrew Overholt <overholt@redhat.com>
+
+ * icons/automake.gif: New craptacular icon for automake editor.
+ * icons/autoconf.gif: Another manifestation of my poor artistic skills.
+ * plugin.xml: Use new icons.
+
+2007-02-21 Jeff Johnston <jjohnstn@redhat.com>
+
+ Fix for Bugzilla 229893.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfDocumentProvider.java: Switch
+ to superclass TextFileDocumentProvider instead of FileDocumentProvider so as to fix
+ undo support.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfDocumentSetupParticipant.java:
+ New file.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfEditorMessages.properties: Fix typo.
+ * plugin.xml: Add extension for document setup that ties document setup for configuration
+ files to AutoconfDocumentSetupParticipant.
+
+2007-02-20 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfParser.java (findDelimeter): Ignore
+ escaped character.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfPartitionScanner.java (AutoconfPartitionScanner):
+ Add escape character for # format comment and eat "\#" as character.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfCodeScanner.java (AutoconfCodeScanner):
+ Ditto.
+ * plugin.xml: Update release to 0.0.8.
+
+2007-02-20 Andrew Overholt <overholt@redhat.com>
+
+ Patch from Jordy Potman
+ http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=229352
+
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileSourceConfiguration.java
+ (AutomakefileSourceConfiguration): Update super constructor call to reflect
+ change in CDT 3.1.2.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeEditor.java
+ (initializeEditor): Likewise.
+
+2007-02-20 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfElement.java: New class.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfElifElement: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfElseElement.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfOutlineErrorHandler.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfMacroElement.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfIfElement.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfRootElement.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfWhileElement.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfCaseElement.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfForElement.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfCaseConditionElement.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfCodeScanner.java (AutoconfCodeScanner):
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/parser/AutoconfParser.java: New class to
+ do Autoconf file parsing and error marking.
+ Add AutoconfIdentifierRule and InlineDataRule.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfDocumentProvider.java (createDocument):
+ Changed to use new AutoconfErrorHandler interface.
+ (documentAboutToBeChanged): Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfErrorHandler.java (removeExistingMarkers):
+ Add verification that file exists.
+ (removeAllExistingMarkers): Ditto.
+ (handleError): Ditto.
+ (getCharOffset): Reformatted.
+ (AutoconfErrorHandler): Change constructor to take an IStorageEditorInput rather than
+ an IFile. This allows external files to be edited without error handling.
+ * src/com/redhat/eclipse/cdt/autotools/editors/AutoconfEditorMessages.properties: New messages
+ added for outline parsing.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfPartitionScanner.java (AutoconfPartitionScanner):
+ Use new AutoconfIdentifierRule.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfSourceViewerConfiguration.java (getPresentationReconciler):
+ Change default partition to use MultilineRuleDamagerRepairer.
+ (getReconciler): New method.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfMacroDamagerRepairer.java (createPresentation):
+ Change to use new AutoconfErrorHandler constructor.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfMacroParser.java (AutoconfMacroParser): Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfEditor.java (doSetInput): New.
+ (getInputDocument): Ditto.
+ (getRootElement): Ditto.
+ (getAutoconfParser): Ditto.
+ (getAdapter): Ditto.
+ (InformationProvider): Ditto.
+ (getOutlinePage): Ditto.
+ (setRootElement): Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/outline/AutoconfContentOutlinePage.java: New file.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/outline/AutoconfContentProvider.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/outline/AutoconfLabelProvider.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfIdentifierRule.java: New class to
+ prevent matches of other strings that happen to be inside common identifiers.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/InlineDataRule.java: New class to
+ recognize inline data files.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/MultilineRuleDamagerRepairer.java: New class
+ to handle damage/repair when multiline rules are used.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfReconciliingStrategy.java: New class
+ for delayed document-change parsing.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/AutotoolsPluginImages.java: New class
+ to handle image repository.
+ * icons/etool16/acmacro_obj.gif: New image for Autoconf outline view.
+ * icons/etool16/ammacro_obj.gif: Ditto.
+ * icons/etool16/case_obj.gif: Ditto.
+ * icons/etool16/condition_obj.gif: Ditto.
+ * icons/etool16/elif_obj.gif: Ditto.
+ * icons/etool16/for_obj.gif: Ditto.
+ * icons/etool16/if_obj.gif: Ditto.
+ * icons/etool16/while_obj.gif: Ditto.
+ * plugin.xml: Add new error marker extension for outline view.
+
+2007-02-02 Andrew Overholt <overholt@redhat.com>
+
+ * cdtpatches/README: Fix CVS location of managedbuilder.
+
+2007-02-02 Andrew Overholt <overholt@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeCompletionProcessor.java:
+ New file.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/Automakefile.java (getBuiltins):
+ Add $<, $@, and $?.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileSourceConfiguration.java
+ (getContentAssistant): Make use of AutomakeCompletionProcessor.
+
+2007-01-31 Jeff Johnston <jjohnstn@redhat.com>
+
+ * cdtpatches/cdt.ui.buildconsole.patch: New file that contains the
+ 3.1.1 version of the patch for Bugzilla 153816 which adds multiple
+ build console support to CDT 4.0.
+ * cdtpatches/cdt.ui.patch: Altered to remove any build console patches.
+ * cdtpatches/README: Updated to include the new patch.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/CConfigureConsole.java (CConfigureConsole):
+ Modified to use new CUIPlugin build console manager interface.
+
+2007-01-31 Andrew Overholt <overholt@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeErrorHandler.java: New class.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfDocumentProvider.java: Remove unnecessary import.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeDocumentProvider.java
+ (connect): New method. Update error markers at document load time.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileReconcilingStrategy.java
+ (reconcile): Update error markers.
+ (AutomakefileReconcilingStrategy): Set class-wide variables.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeEditor.java
+ (getAutomakeErrorHandler): New method.
+
+2007-01-26 Jeff Johnston <jjohnstn@redhat.com>
+
+ Fix for Bugzilla 224644.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsMakefileBuilder.java (getMakeTargets):
+ Don't add "clean" for fullbuild anymore. It causes unnecessary extra building to occur.
+ (build): Set a flag that build was called.
+ (clean): Only clean if this method is called directly and via a call to build method.
+ Clean by doing a make clean rather than calling super.clean.
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java (runCommand): When an
+ error occurs in configure, we want to set the status of the project to "needs rebuild".
+ (getConfigSettingsPath): New method to generate name of config settings file.
+ (saveConfigArgs): Use new getConfigSettingsPath method.
+ (regenerateMakefiles): Ditto, when checking if config options have changed.
+ (autogenExists): Clean up unused variables.
+ (getMakefileName): Return "Makefile" instead of "makefile".
+
+2007-01-22 Andrew Overholt <overholt@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileCodeScanner.java:
+ Update copyright.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeDocumentProvider.java:
+ Likewise.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeIfElse.java:
+ Likewise.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileReconcilingStrategy.java:
+ Likewise.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileUtil.java:
+ Likewise.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/Automakefile.java:
+ Likewise.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileSourceConfiguration.java:
+ Likewise.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeEditor.java
+ (getAutomakeSourceViewer): New method. Update copyright.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileContentOutlinePage.java:
+ Update copyright.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeTextHover.java
+ (getHoverInfo): Remove debugging println. Update copyright.
+
+2007-01-19 Jeff Johnston <jjohnstn@redhat.com>
+
+ Fix for Bugzilla 214624.
+ * src/com/redhat/eclipse/cdt/autotools/internal/MarkerGenerator.java: New file.
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java (runCommand): Add check
+ for return code being 0 or 1 to reveal whether command ran correctly.
+ (regenerateMakefiles): Add boolean checking for runCmd calls and also quit
+ if runCmd fails. For autogen.sh cases, check if configure is run by autogen.sh
+ and don't bother calling configure afterwards if true. Add error checking to
+ ensure a second command is not run if the first fails.
+ (PathVar): New private class.
+ (autogenExists): Fixed to take a path parameter to fill in. It also looks for
+ any file that ends in autogen.sh to handle projects like Gnome.
+ * Resources.properties: Add new messages used by MakeGenerator.
+ * cdtpatches/managedbuilder.core.patch: New patch to cause ManagedMake build
+ to stop if an error occurs generating Makefile.
+ * cdtpatches/README: Add details on how to install new patch.
+
+2007-01-16 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfMacroParser.java: New code
+ to parse an Autoconf macro.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfMacroDamagerRepairer.java (createPresentation):
+ Use new AutoconfMacroParser.parse method instead of embedding the code. Remove
+ all corresponding parse methods.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfDocumentProvider.java (documentAboutToBeChanged):
+ Add checks for whether we should remove the error markers in an autoconf_macro
+ partition.
+
+2007-01-12 Jeff Johnston <jjohnstn@redhat.com>
+
+ * about.html: New EPL license file.
+
+2007-01-12 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/ParseException.java: New file.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfEditorMessages.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfErrorHandler.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/text/hover/AutoconfPrototype.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfAnnotationHover.java: Ditto.
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfCodeScanner.java: Add
+ copyright info.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfColorProvider.java: Ditto.
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfDocumentProvider.java: Ditto.
+ (createDocument): New method.
+ (documentChanged): Ditto.
+ (documentAboutToBeChanged): Ditto.
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfEditor.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfKeywordDetector.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfM4WordDetector.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfMacroContentAssistProcessor.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfMacroDamagerRepairer.java: Ditto.
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfMacroPartitionRule.java : Ditto.
+ (matchParentheses): Fix up logic.
+ (evaluate):
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfMacroRule.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfMacroWordDetector.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfPartitioner.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfPartitionScanner.java: Ditto.
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfSourceViewerConfiguration.java: Ditto.
+ (getPresentationReconciler): Use AutoconfMacroDamagerRepairer for macro partition.
+ (getAnnotationHover): New method.
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfWhitespaceDetector.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfWordDetector.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/IAutotoolEditorActionDefinitionIds.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/IAutotoolHelpContextIds.java: Ditto.
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/RecursiveSingleLineRule.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/LibHover.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/popup/actions/GetDefinedSymbolsAction.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/popup/actions/GetIncludePathAction.java: Ditto.
+
+ * src/com/redhat/eclipse/cdt/autotools/internal/text/hover/AutoconfTextHover.java: Ditto.
+ (getIndexedInfo): New method.
+ (getPrototype): Ditto.
+
+ * src/com/redhat/eclipse/cdt/autotools/internal/text/hover/HoverMessages.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeWordDetector.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/actions/BuildSpecial.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/actions/InvokeAclocalAction.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/actions/InvokeAction.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/actions/InvokeAutoconfAction.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/actions/InvokeAutomakeAction.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/actions/InvokeMessages.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/actions/TwoInputDialog.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsScannerInfoProvider.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsScannerInfo.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsPlugin.java: Ditto.
+
+2007-01-12 Andrew Overholt <overholt@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeTextHover.java: New class. Hover help provider for automake editor.
+ (getHoverControlCreator): New method. Return null for now.
+ (AutomakeTextHover): New method.
+ (getHoverRegion): New method. Return an IRegion from an offset in the document.
+ (findWord): New method. Return an IRegion of the hover region.
+ (getHoverInfo): New method. Return the hover information for a particular region.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileSourceConfiguration.java (getTextHover): New method.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/Automakefile.java (getDirectiveContainingLine): Likewise.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeEditor.java (getMakefile): Likewise.
+
+2007-01-09 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfDocumentProvider.java: Revert
+ to version 1.2 prior to 2006-11-27. This reversion is required because the previous
+ fix causes a regression in autoconf partitioning.
+
+2007-01-08 Andrew Overholt <overholt@redhat.com>
+
+ * libhoverdocs/acmacros.xml: Add PKG_* macros from pkgconfig.
+
+2007-01-05 Andrew Overholt <overholt@redhat.com>
+
+ * libhoverdocs/acmacros.xml: Add AM_* macros from automake's Public-macros.html.
+
+2007-01-05 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java (regenerateMakefiles):
+ Add check for Makefile.cvs ahead of configure check. Use resource strings
+ for runCommand descriptions.
+ (makefileCvsExists): New internal method.
+ * src/com/redhat/eclipse/cdt/autotools/Resources.properties: Add new
+ resource strings.
+
+2007-01-02 Andrew Overholt <overholt@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileCodeScanner.java
+ (automaticVariables): New $<, etc. variables.
+ (createRules): Add automatic variables as keywords. Also add @AC_SUBST_VAR@
+ highlighting.
+ (nextToken): New method.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeDocumentProvider.java
+ (getDocument): New method.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeWordDetector.java:
+ New file.
+
+2006-12-15 Andrew Overholt <overholt@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileSourceConfiguration.java
+ (getAutomakeCodeScanner): New method.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeEditor.java
+ (getAutomakeSourceViewerConfiguration): Likewise.
+ (getAutomakefileDocumentProvider): Likewise
+ (initializeEditor): Set up field variables.
+
+2006-12-12 Andrew Overholt <overholt@redhat.com>
+
+ * META-INF/MANIFEST.MF: Add package visibility for tests.
+ * plugin.xml: Add filename associations for AutomakeEditor.
+
+2006-12-11 Jeff Johnston <jjohnstn@redhat.com>
+
+ * MANIFEST.MF: Update release to 0.0.6.
+
+2006-12-11 Kyu Lee <klee@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/actions/TwoInputDialog.java: New class
+ for getting 2 text field inputs.
+ * src/com/redhat/eclipse/cdt/autotools/actions/InvokeMessages.java: New class
+ for NLS strings.
+ * src/com/redhat/eclipse/cdt/autotools/actions/InvokeAutomakeAction.java: New
+ class for handling invoke automake.
+ * src/com/redhat/eclipse/cdt/autotools/actions/InvokeAutoconfAction.java: New
+ class for handling invoke autoconf.
+ * src/com/redhat/eclipse/cdt/autotools/actions/InvokeAction.java: New super
+ class for invoking autotools classes.
+ * src/com/redhat/eclipse/cdt/autotools/actions/InvokeAclocalAction.java: New
+ class for handling invoke aclocal.
+ * src/com/redhat/eclipse/cdt/autotools/actions/InvokeMessages.properties:
+ Property file for NLS strings.
+ * plugin.xml: Added menu options for invoking autotools under project menu.
+
+2006-12-11 Andrew Overholt <overholt@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsPlugin.java
+ (getWorkingCopyManager): New method.
+ (getAutomakefileDocumentProvider): Likewise.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeEditor.java
+ (initializeEditor): New method.
+ (getAutomakeOutlinePage): Likewise.
+ (createPartControl): Likewise.
+ (getAdapter): Likewise.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeDocumentProvider.java:
+ New file.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeMacroReferenceRule.java:
+ Likewise.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeMacroDefinitionRule.java:
+ Likewise.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeIfElse.java:
+ Likewise.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileUtil.java:
+ Likewise.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileSourceConfiguration.java:
+ Likewise.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileReconcilingStrategy.java:
+ Likewise.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakefileContentOutlinePage.java:
+ Likewise.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/Automakefile.java:
+ Likewise.
+
+2006-12-08 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/wizards/ConvertToAutotoolsProjectWizard.java
+ (setCurrentProject): Make protected to allow subclasses to use.
+ * MANIFEST.MF: Export org.eclipse.linuxtools.cdt.autotools.wizards classes to the
+ autotools.tests plug-in.
+
+2006-12-01 Andrew Overholt <overholt@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake: New directory.
+ * src/com/redhat/eclipse/cdt/autotools/editors/automake/AutomakeEditor.java: New
+ file. Simple extension of MakefileEditor for now.
+ * plugin.xml: Add automake editor.
+
+2006-11-29 Jeff Johnston <jjohnstn@redhat.com>
+
+ * plugin.xml: Add .m4 file support to the Autoconf editor.
+
+2006-11-27 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfEditor.java
+ (performRevert): Method copied from CDT and JDT editors.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfDocumentProvider.java:
+ Change base class to be TextFileDocumentProvider. This means no longer providing
+ a createDocument() method.
+ (createDocument): Deleted.
+ (AutoconfStorageDocumentProvider.AutoconfStorageDocumentProvider): New internal
+ class based on StorageDocumentProvider.
+ (AutoconfStorageDocumentProvider.setupDocument): New method of internal class.
+ (AutoconfDocumentProvider): New constructor which sets up a
+ TextFileDocumentProvider that takes the internal AutoconfStorageDocumentProvider
+ class as parent DocumentProvider. This emulates what the CDT CEditor does and is
+ done to provide proper edit reversion support.
+
+2006-11-22 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/IAutotoolHelpContextIds.java:
+ Add CONTENT_ASSIST string.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfSourceViewerConfiguration.java
+ (getContentAssistant): New routine to add content assist support.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfEditor.java
+ (createActions): Add action for content assist.
+ * src/com/redhat/eclipse/cdt/autotools/internal/text/hover/AutoconfTextHover.java
+ (getIndexedInfo):
+ (getInformationControlCreator): New method.
+ (getTooltipAffordanceString): Make static.
+ (init): Ditto.
+ (getIndexedInfo): Ditto plus add call to init.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfMacroContentAssistProcessor.java:
+ New class for macro content assist.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfMacroParameterListValidator.java:
+ New class for content assist to help with macro call parameters.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfMacroProposalContextInformation.java:
+ New file for parameter context assist information.
+
+2006-11-14 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfPartitionScanner.java
+ (AutoconfPartitionScanner): Change partitions to be comments, macros, and
+ default.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfSourceViewerConfiguration.java
+ (getPresentationReconciler): Change to match new paritioning. Use a special new
+ MultiLineDamagerRepairer for macros.
+ (getConfiguredContentTypes): Change to list of new partitions.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfEditor.java
+ (createPartControl): Specify new AUTOCONF_MACRO partition.
+ (InformationDispatchAction.makeAnnotationHoverFocusable): Ditto.
+ (InformationDispatchAction.makeTextHoverFocusable): Ditto.
+ (getAutoconfInlineCodeScanner, getAutoconfStringScanner): Removed.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfInlineCodeScanner.java:
+ Removed.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfSectionRule.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfStringScanner.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfCodeScanner.java
+ (AutoconfCodeScanner): Change rules to add a recursive single line rule for
+ strings and a multiline rule for inlined code. Also add a rule to discover m4
+ macros.
+ * src/com/redhat/eclipse.cdt/autotools/ui/editors/AutoconfM4WordDetector.java:
+ New file.
+ * src/com/redhat/eclipse.cdt/autotools/ui/editors/AutoconfMacroPartitionRule.java:
+ Ditto.
+ * src/com/redhat/eclipse.cdt/autotools/ui/editors/MultiLineDamagerRepairer.java:
+ Ditto.
+ * src/com/redhat/eclipse.cdt/autotools/ui/editors/RecursiveSingleLineRule.java:
+ Ditto.
+
+2006-10-31 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/internal/text/hover/AutoconfTextHover.java
+ (init): Turn off parser validation.
+ * libhoverdocs/acmacros.xml: Update including m4 macros.
+
+2006-10-30 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfDocumentProvider.java:
+ Remove unneeded import.
+ * src/com/redhat/eclipse/cdt/autotools/ui/LibHover.java
+ (getLibHoverDocs): Specify no xml validation since there may be duplicate
+ function ids due to multiple standard definitions used in glibc.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfSourceViewerConfiguration.java
+ (getTextHover): New method to add text hover for autoconf editor.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfPartitioner.java
+ (connect): Remove calls to print debug messages.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfEditor.java
+ (isFoldingEnabled):
+ (InformationDispatchAction.InformationDispatchAction): New for scrollable
+ tooltip support.
+ (createPartControl): Ditto.
+ (fProjectionModelUpdater): Ditto.
+ (InformationProvider.getInformation): Ditto.
+ (InformationDispatchAction): Ditto.
+ (initializeKeyBindingScopes): Ditto.
+ (InformationDispatchAction.makeTextHoverFocusable): Ditto.
+ (InformationProvider.getInformation2): Ditto.
+ (InformationProvider): Ditto.
+ (InformationDispatchAction.computeOffsetAtLocation): Ditto.
+ (fInformationPresenter): Ditto.
+ (.createInformationControl): Ditto.
+ (InformationProvider.getInformationPresenterControlCreator): Ditto.
+ (createActions): Ditto.
+ (InformationDispatchAction..createInformationControl): Ditto.
+ (InformationDispatchAction.run): Ditto.
+ (InformationDispatchAction.fTextOperationAction): Ditto.
+ (InformationDispatchAction.makeAnnotationHoverFocusable): Ditto.
+ (fProjectionSupport): Ditto.
+ (InformationProvider.getSubject): Ditto.
+ (InformationProvider.InformationProvider): Ditto.
+ * src/libhoverdocs/acmacros.xml: New file containing autoconf hover help.
+ * src/libhoverdocs/glibc.xml: Updated.
+ * src/libhoverdocs/LIBHOVERDOCS.LICENSE: New file with licensing info.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/IAutotoolEditorActionDefinitionIds.java:
+ New file.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editoros/IAutotoolHelpContextIds.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/text/hover/AutoconfTextHover.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/text/hover/HoverMessages.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/text/hover/HoverMessages.properties:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/HTML2TextReader.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/HTMLPrinter.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/HTMLTextPresenter.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/LineBreakingReader.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/SingleCharReader.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/SubstitutionTextReader.java:
+ Ditto.
+ * plugin.xml: Fix autoconf editor to look for configure.in or configure.ac. Add
+ hover help for autoconf editor and set up F2 key binding for scrollable tooltips.
+ * plugin.properties: Add autoconf editor strings.
+
+2006-10-16 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfCodeScanner.java: New
+ file.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfWordDetector.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfWhitespaceDetector.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfStringScanner.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfSourceViewerConfiguration.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfSectionRule.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfPartitionScanner.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfPartitioner.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfMacroWordDetector.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfMacroRule.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfKeywordDetector.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfInlineCodeScanner.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfEditor.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfDocumentProvider.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/ui/editors/AutoconfColorProvider.java:
+ Ditto.
+ * plugin.properties: Add Autoconf editor name.
+ * plugin.xml: Add Autoconf editor.
+
+2006-10-03 Jeff Johnston <jjohnstn@redhat.com>
+
+ Fix for Bugzilla 209161.
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java
+ (initializeBuildConfigDirs): New method.
+ (initialize): Call initializeBuildConfigDirs().
+ (regenerateMakefiles): Ditto if configuration parameters have changed.
+ (createDirectory): Return project path if input directory is empty string or
+ ".".
+
+2006-09-29 Jeff Johnston <jjohnstn@redhat.com>
+
+ * build.properties: Update so plugin.properties built into binary.
+ * build.xml: New file.
+
+2006-09-28 Jeff Johnston <jjohnstn@redhat.com>
+
+ * plugin.xml: Bump up release number to 0.0.5.
+
+2006-09-15 Jeff Johnston <jjohnstn@redhat.com>
+
+ Fix for Bugzilla 206719
+ * plugin.xml: Comment out deprecated ManagedBuildInfo extension and replace with
+ new org.eclipse.cdt.managedbuilder.core.buildDefinitions extension point.
+ * plugin.properties: Add new strings from new build definition.
+ * src/com/redhat/eclipse/cdt/autotools/wizards/CProjectPlatformPage.java
+ (CProjectPlatformPage): Fix project type reference to refer to new project type
+ id in build definition.
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java
+ (initialize): Switch over to new option ids in new build definition.
+ (getConfigArgs): Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsScannerInfo.java
+ (getCompilationString): Don't bother if input resource isn't a file.
+ (buildFile): Fix how build directory is fetched to work with new build
+ definition.
+ (AutotoolsScannerInfo): Save the original resource reference.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsMakefileBuilder.java
+ (AUTOTOOLS_CONFIG_ID): Change to match new build definition.
+
+2006-09-13 Jeff Johnston <jjohnstn@redhat.com>
+
+ Fix for Bugzilla 206359
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsPlugin.java
+ (verifyScannerInfoProvider): New method to check ScannerInfoProvider and set it
+ only if necessary.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsMakefileBuilder.java
+ (hasTargetBuilder): Call verifyScannerInfoProvider instead of
+ setScannerInfoProvider to prevent changing the project file every time the
+ hasTargetBuilder check is made.
+
+2006-09-12 Jeff Johnston <jjohnstn@redhat.com>
+
+ Fix for Bugzilla 206164.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsScannerInfo.java
+ (followIncludeChain): Follow the session property as far as possible. When it
+ ends try looking for the new OPEN_INCLUDE_P persistent property to re-establish
+ the chain.
+ (createIncludeChain): Set a new persistent property OPEN_INCLUDE_P that is the
+ location of the resource.
+
+2006-09-11 Jeff Johnston <jjohnstn@redhat.com>
+
+ * cdtpatches/cdt.ui.patch: Update patch to include defined symbol hover help.
+
+2006-09-11 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsScannerInfo.java
+ (getDefinedSymbols): Prepare code for failure to get compilation string.
+
+2006-09-06 Jeff Johnston <jjohnstn@redhat.com>
+
+ * cdtpatches/README: New file to instruct how to apply patches to the CDT.
+ * cdtpatches/cdt.core.patch: Patch for org.eclipse.cdt.core.
+ * cdtpatches/cdt.ui.patch: Patch for org.eclipse.cdt.ui.
+
+2006-08-28 Jeff Johnston <jjohnstn@redhat.com>
+
+ * plugin.xml: Replace DynamicScannerInfo extension hack with existing CDT
+ ScannerInfoProvider extension. Change version to 0.0.4.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/CConfigureConsole.java
+ (CConfigureConsole): Use new getSubConsoleManager method of CUIPlugin.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/ConfigureConsole.java: No
+ longer needed, so removed.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/ConfigureConsoleDocument.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/ConfigureConsoleManager.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/ConfigureConsolePage.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/ConfigureConsolePartition.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/ConfigureConsolePartitioner.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/ConfigureConsoleStream.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/ConfigureConsoleViewer.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/ConsoleEvent.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/ConsoleOutputTextStore.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/ScrollLockAction.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/wizards/ConvertToAutotoolsProjectWizardPage.java
+ (convertProject): Set scanner info provider for project.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsScannerInfoProvider.java: Extend
+ AbstractCExtension.
+ (getScannerInformation): Call AutotoolsScannerInfo.followIncludeChain method to
+ get real underlying resource to get dynamic build info from.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsScannerInfo.java: Implement new
+ interface IScannerInfoPlus.
+ (followIncludeChain): New method to adhere to new interface.
+ (createIncludeChain): New method.
+ (getDefinedSymbols): Add defined symbols found by ManagedBuildManager.
+ (getIncludePaths): Append include path found by ManagedBuildManager.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsPlugin.java
+ (setScannerInfoProvider): New method.
+ (getConsoleManager): Removed.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsMakefileBuilder.java:
+ (hasTargetBuilder): Replace the default scanner provider for Managed Make
+ projects with AutotoolsScannerInfoProvider.
+
+2006-08-21 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/actions/BuildSpecial.java
+ (run): If there are no targets yet
+ (i.e. no makefile), try and regenerate the makefile.* src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java (getConfigArgs):
+ Make sure there is an "other" string to process rather than adding an empty
+ argument.
+
+2006-08-16 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java
+ (regenerateMakefiles): Add logic to check if the configuration arguments have
+ changed since the last configuration and reconfigure if they have.
+ (saveConfigArgs): New method.
+
+2006-08-03 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsMakefileBuilder.java
+ (addAutotoolsBuilder): Check for ManagedMake's genmakebuilder and remove if
+ found.
+ (hasTargetBuilder): Look for Autotools default configuration and if found, add
+ the Autotools Makefile builder.
+
+2006-07-31 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/LibHover.java
+ (getLibHoverDocs): New method which replaces buildDocPath and fetches libhover
+ base data file from the plugin's jar.
+ * src/com/redhat/eclipse/cdt/autotools/ui/LibHover.java
+ (buildDocPath): Replaced by getLibHoverDocs. Change all callers.
+ * src/com/redhat/eclipse/cdt/autotools/ui/LibHover.java
+ (getDocument): Removed.
+
+2006-07-24 Jeff Johnston <jjohnstn@redhat.com>
+
+ * plugin.xml: Remove unused sample extensions.
+ * src/com/redhat/eclipse/cdt/autotools/editors/*: Remove all files.
+ * src/com/redhat/eclipse/cdt/autotools/preferences/*: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/properties/*: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/views/*: Ditto.
+
+2006-07-24 Jeff Johnston <jjohnstn@redhat.com>
+
+ * plugin.xml: Update release.
+ * META-INF/MANIFEST.MF: Export libhoverdocs.
+
+2006-07-13 Jeff Johnston <jjohnstn@redhat.com>
+
+ * plugin.xml: Update release.
+
+2006-07-11 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsMakefileBuilder.java
+ (getMakeTargets): Use IMakeBuildInfo.BUILD_TARGET_INCREMENTAL instead of
+ IMakeBuildInfo.BUILD_TARGET_FULL which is now obsoleted and not set by the
+ MakeTargets.
+ (clean): Ditto.
+
+2006-07-10 Jeff Johnston <jjohnstn@redhat.com>
+
+ * plugin.xml: Add new "other" option which allows the end-user to specify any
+ configuration option manually.
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java
+ (getConfigArgs): New function to get configure arguments from preferences.
+ (runCommand): Change prototype to take an argument array.
+ (regenerateMakefiles): Only when running full configure, pass args to runCommand
+ and get these from getConfigArgs method.
+
+2006-07-05 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsScannerInfo.java
+ (getCompilationString): Don't use previous compilation string if we have marked
+ the scanner info as dirty.
+ (getIncludePaths): Don't continue processing if the compilation string is null.
+
+2006-06-26 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/popup/actions/GetDefinedSymbolsAction.java:
+ New file.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsScannerInfo.java
+ (getDefinedSymbols): Fill in function details to fetch flags used in dynamic
+ compilation info.
+ (getCompilationString): New function to get and save the actual compilation
+ string from the make invocation.
+ (getIncludePaths): Move logic into getCompilationString.
+ (compilationString): New field to store compilation string.
+ (definedSymbols): New field to store map of defined symbols.
+ * plugin.xml: Add defined symbols menu item.
+
+2006-06-20 jjohnstn <jjohnstn@toy.toronto.redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/popup/actions/GetIncludePathAction.java:
+ Remove unused imports.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/MakeUIImages.java: New class
+ copied from Std Make internal packages to local internal package.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/MessageLine.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/MakeUIPlugin.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/MakeResources.properties: New
+ properties message file used by MakeUIPlugin.
+ * src/com/redhat/eclipse/cdt/autotools/actions/TargetListViewerPart.java: Use
+ Autotools StructureViewPart instead of internal one from Std Make plugin.
+ * src/com/redhat/eclipse/cdt/autotools/actions/MakeTargetDialog.java: Use new
+ Autotools internal classes rather than internal ones from Std Make plugin.
+ * src/com/redhat/eclipse/cdt/autotools/actions/AbstractTargetAction.java
+ (getShell): Use new AutotoolsPlugin getActiveWorkbenchShell method instead of
+ the one in internal MakeUIPlugin.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsMakefileBuilder.java: Remove
+ unused imports.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsPlugin.java
+ (getActiveWorkbenchShell): New method.
+
+2006-06-19 Jeff Johnston <jjohnstn@redhat.com>
+
+ * plugin.xml: Add dependency on org.eclipse.core.variables.
+ * src/com/redhat/eclipse/cdt/autotools/internal/MakeTargetManager: New internal
+ class copied from Std Make projects.
+ * src/com/redhat/eclipse/cdt/autotools/internal/MakeTarget: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ProjectTargets: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/MakeMessages: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsMakeTargetManager: Base on local
+ internal MakeTargetManager class rather than unpublished Std Make internal class.
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator: Remove reference to Std
+ Make MakeMessages internal class.
+ * src/com/redhat/eclipse/cdt/autotools/Resources.properties: Add new message
+ about invoking make for the project.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsPlugin.java
+ (getFormattedString): New method to get resource string with arguments.
+
+2006-06-16 Jeff Johnston <jjohnstn@redhat.com>
+
+ * plugin.xml: Added "org.eclipse.cdt.core.DynamicScannerInfoProvider" extension.
+ * src/com/redhat/eclipse/cdt/autotools/popup/actions/GetIncludePathAction.java
+ (run): Altered to use new AutotoolsScannerInfo class.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsScannerInfoProvider.java: New
+ class used to hook up to added extension point:
+ org.eclipse.cdt.core.DynamicScannerInfoProvider.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsScannerInfo.java: New file based
+ on AutotoolsMakefileMiner.java. Class implements IScannerInfo interface.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsMakefileMiner.java: Transformed
+ into AutotoolsScannerInfo.java.
+
+2006-06-14 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/popup/actions/GetIncludePathAction.java:
+ Fix up imports.
+
+2006-06-08 Jeff Johnston <jjohnstn@redhat.com>
+
+ * plugin.xml: Make provider Red Hat.
+
+2006-06-08 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsMakefileMiner.java: New file.
+ * src/com/redhat/eclipse/cdt/autotools/popup/actions: GetIncludePathAction.java:
+ Ditto.
+ * plugin.xml: Add extensions to create menu for source files that will grab the
+ dynamic include path for the build and display it in a message dialog. This is
+ just a temporary test.
+
+2006-05-19 Andrew Overholt <overholt@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/actions/BuildSpecial.java
+ (run): Create our target selection dialog in-line. Make this dialog have a
+ filter for selection of make target.
+ * src/com/redhat/eclipse/cdt/autotools/actions/BuildTargetDialog.java: Remove:
+ no longer necessary.
+
+2006-05-18 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsMakefileBuilder.java
+ (clean): Overriding method to check for MakeTargets in which case we don't want
+ to clean out directory.
+ * plugin.xml: Remove unneeded extension.
+
+2006-04-28 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/LibHover.java
+ (getHref): Change to reference the glibc book rather than the Gnu help.
+
+2006-04-28 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/ui/LibHover.java: New file based on Chris
+ Moller's hover help, using ICHelpProvider interface.
+ * plugin.xml: Add CHelpProvider extension to supply hover help.
+ * libhoverdocs/glibc.xml: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/AutoconfPlugin.java: Refactored.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsPlugin.java: Refactored from
+ AutoconfPlugin.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/CConfigureConsole.java:
+ Refactor AutoconfPlugin to AutotoolsPlugin.
+ * src/com/redhat/eclipse/cdt/autotools/wizards/CProjectPlatformPage.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/wizards/ConvertToAutotoolsProjectWizard.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/wizards/ConvertToAutotoolsProjectWizardPage.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/preferences/PreferenceInitializer.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/actions/TargetListViewerPart.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/actions/MakeTargetDialog.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/actions/MakeContentProvider.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/actions/BuildTargetDialog.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/actions/BuildSpecial.java: Ditto.
+
+2006-04-18 Jeff Johnston <jjohnstn@redhat.com>
+
+ * plugin.xml: Remove toc extension since we have moved docs to a separate
+ plug-in.
+ * getdocs.sh: Moved to autotools-doc plugin.
+ * doc.zip: Ditto.
+ * toc.xml: Ditto.
+ * testToc.xml: Removed.
+
+2006-04-07 Jeff Johnston <jjohnstn@redhat.com>
+
+ * toc.xml: Add references for Gnu Tools documents.
+ * doc.zip: New file containing zipped up html files for Gnu tools.
+ * getdocs.sh: Shell script to get html files from the web and build doc.zip.
+ * plugin.xml: Connect toc extension to toc.xml so that Gnu tools help is
+ provided with Autotools plugin.
+
+2006-03-21 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/AutoconfPlugin.java
+ (getConsoleManager): New method.
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java
+ (runCommand): Specify the Autotools configure console to use for configuration
+ output.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/CConfigureConsole.java: New
+ file stodified from ManagedBuild Project internal directory.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/ConfigureConsoleDocument.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/ConfigureConsoleManager.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/ConfigureConsolePage.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/ConfigureConsolePartitioner.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/ConfigureConsolePartition.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/ConfigureConsoleStream.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/ConfigureConsoleViewer.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/ConfigureConsole.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/ConsoleEvent.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/ConsoleMessages.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/ConsoleMessages.properties:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/internal/ui/ScrollLockAction.java: Ditto.
+ * plugin.xml: Set up CBuildConsole extension to be CConfigureConsole.
+
+2006-03-15 Andrew Overholt <overholt@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java
+ (addMakeTargetsToManager): New method.
+ (regenerateMakefiles): Call addMakeTargetsToManager after Makefile is generated.
+
+2006-03-13 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/wizards/NewAutotoolsProjectOptionPage.java
+ (getProject): If dealing with a ConvertToAutotoolsProjectWizard, use it's
+ getProject method.
+ * src/com/redhat/eclipse/cdt/autotools/wizards/ConvertToAutotoolsProjectWizard.java
+ (setCurrentProject): New method.
+ (applyOptions): Change prototype to accept project as input. Call
+ setCurrentProject method using the project variable before getting the optionPage
+ to performApply.
+ * src/com/redhat/eclipse/cdt/autotools/wizards/ConvertToAutotoolsProjectWizardPage.java
+ (applyOptions): Add project as input variable and pass this on call.
+ (convertProject): Pass project when calling applyOptions method.
+
+2006-03-09 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsMakefileBuilder.java
+ (getMakeTargets): When doing a full build, we don't want to do a "clean" if the
+ target is not "all".
+
+2006-03-09 Andrew Overholt <overholt@redhat.com>
+
+ * .cvsignore: Initial checkin. Ignore bin.
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java
+ (regenerateMakefiles): Rename CONFIG_STATUS_NAME to CONFIG_STATUS. Call
+ autogen.sh first if configure does not exist.
+ (configureExists): New method.
+ (autogenExists): New method.
+ (runCommand): New method. Run configure or autogen and report success.
+ * plugin.properties: Change "CVS Autotools" to Autotools.
+ * plugin.xml: Likewise.
+ * src/com/redhat/eclipse/cdt/autotools/wizards/NewAutotoolsProjectWizard.java
+ (NewAutotoolsProjectWizard): Likewise.
+
+2006-03-08 Jeff Johnston <jjohnstn@redhat.com>
+
+ * plugin.xml: Set up default gcc scanner in our ManagedMakeProject target
+ extension -
+ org.eclipse.cdt.managedbuilder.internal.scannerconfig.DefaultGCCScannerInfoCollector.
+ * src/com/redhat/eclipse/cdt/autotools/wizards/ConvertToAutotoolsProjectWizardPage.java
+ (convertProject): Remove commented code about setting ScannerConfig as we now
+ set the default GCC scanner collector in our ManagedMakeProject extension.
+
+2006-03-07 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/AutoconfPlugin.java
+ (ftargetManager): New field.
+ (getUniqueIdentifier): New method.
+ (getTargetManager): Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsMakefileBuilder.java: New
+ builder that extends ManagedMakeProject's GeneratedMakefileBuilder and allows us
+ to override behavior.
+ * src/com/redhat/eclipse/cdt/autotools/AutotoolsMakeTargetManager.java: New
+ class that extends a Std MakeProject's MakeTargetManager and allows us to
+ override behavior.
+ * src/com/redhat/eclipse/cdt/autotools/Resources.properties: New strings added
+ to support BuildSpecial functionality.
+ * src/com/redhat/eclipse/cdt/autotools/AbstractTargetAction.java: New file based
+ on Std MakeProject class.
+ * src/com/redhat/eclipse/cdt/autotools/actions/BuildSpecial.java: Rewritten to
+ extend AbstractTargetAction and to create a dialog rather than print out hello
+ world.
+ * src/com/redhat/eclipse/cdt/autotools/actions/BuildTargetDialog.java: New file
+ that implements the Build Special Targets dialog. Based on a Std Make Project's
+ BuildTargetDialog.
+ * src/com/redhat/eclipse/cdt/autotools/actions/CheckboxTablePart.java: New file
+ to support new dialogs.
+ * src/com/redhat/eclipse/cdt/autotools/actions/MakeContentProvider.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/actions/MakeTargetDialog.java: New file
+ that implements the Make Target dialog allowing management of make targets. Based
+ on Std Make Project's MakeTargetDialog.
+ * src/com/redhat/eclipse/cdt/autotools/actions/SharedPartWithButtons.java:
+ Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/actions/StructuredViewerPart.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/actions/TargetListViewerPart.java: Ditto.
+ * src/com/redhat/eclipse/cdt/autotools/wizards/ConvertToAutotoolsProjectWizardPage.java:
+ Instead of adding a ManagedProject builder, add our new AutotoolsMakefileBuilder.
+ * plugin.xml: Add our new AutotoolsMakefileBuilder as an official builder.
+
+2006-02-24 Jeff Johnston <jjohnstn@redhat.com>
+
+ * src/com/redhat/eclipse/cdt/autotools/MakeGenerator.java: Remove some warnings.
+ * plugin.xml: Fix duplicate target configuration options and re-add in --build
+ option.
+
+2006-02-23 Jeff Johnston <jjohnstn@redhat.com>
+
+ * Initial import.
diff --git a/build/org.eclipse.cdt.autotools.core/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.autotools.core/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..f3e334d00e6
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/META-INF/MANIFEST.MF
@@ -0,0 +1,33 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name.0
+Bundle-SymbolicName: org.eclipse.cdt.autotools.core;singleton:=true
+Bundle-Version: 1.0.2.qualifier
+Bundle-Activator: org.eclipse.cdt.autotools.core.AutotoolsPlugin
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui;bundle-version="3.4.0",
+ org.eclipse.core.runtime;bundle-version="3.4.0",
+ org.eclipse.jface.text;bundle-version="3.4.0",
+ org.eclipse.ui.editors;bundle-version="3.4.0",
+ org.eclipse.ui.workbench.texteditor;bundle-version="3.4.0",
+ org.eclipse.core.resources;bundle-version="3.4.0",
+ org.eclipse.ui.ide;bundle-version="3.4.0",
+ org.eclipse.cdt.managedbuilder.core;bundle-version="5.0.100",
+ org.eclipse.cdt.core;bundle-version="5.1.0",
+ org.eclipse.cdt.ui;bundle-version="5.1.0",
+ org.eclipse.cdt.managedbuilder.ui;bundle-version="5.0.100",
+ org.eclipse.cdt.managedbuilder.gnu.ui;bundle-version="5.0.100",
+ org.eclipse.cdt.make.core;bundle-version="5.1.0",
+ org.eclipse.cdt.make.ui;bundle-version="5.0.100",
+ org.eclipse.ui.console;bundle-version="3.3.0",
+ org.eclipse.help;bundle-version="3.3.100",
+ org.eclipse.core.variables;bundle-version="3.2.100",
+ org.eclipse.ui.views;bundle-version="3.3.0",
+ org.eclipse.core.filesystem;bundle-version="1.2.0"
+Bundle-ActivationPolicy: lazy
+Bundle-Vendor: %provider
+Export-Package: org.eclipse.cdt.autotools.core,
+ org.eclipse.cdt.internal.autotools.core,
+ org.eclipse.cdt.internal.autotools.core.configure
+nt: J2SE-1.5
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/build/org.eclipse.cdt.autotools.core/about.html b/build/org.eclipse.cdt.autotools.core/about.html
new file mode 100644
index 00000000000..c258ef55d83
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 5, 2006</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.autotools.core/build.properties b/build/org.eclipse.cdt.autotools.core/build.properties
new file mode 100644
index 00000000000..70e82cc3ce5
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/build.properties
@@ -0,0 +1,9 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+ META-INF/,\
+ .,\
+ html/,\
+ about.html,\
+ plugin.properties
+src.includes = about.html
diff --git a/build/org.eclipse.cdt.autotools.core/html/maintopic.html b/build/org.eclipse.cdt.autotools.core/html/maintopic.html
new file mode 100644
index 00000000000..a476078ace4
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/html/maintopic.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <title>Main Topic</title>
+</head>
+
+<body>
+<h1>Main Topic</h1>
+Please enter your text here.
+</body>
+</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.autotools.core/html/subtopic.html b/build/org.eclipse.cdt.autotools.core/html/subtopic.html
new file mode 100644
index 00000000000..8a61c501d6a
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/html/subtopic.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <title>Sub Topic</title>
+</head>
+
+<body>
+<h1>Sub Topic</h1>
+Please enter your text here.
+</body>
+</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.autotools.core/html/toc.html b/build/org.eclipse.cdt.autotools.core/html/toc.html
new file mode 100644
index 00000000000..326f0a9ff3c
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/html/toc.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <title>Table of Contents</title>
+</head>
+
+<body>
+<h1>Table of Contents</h1>
+Please enter your text here.
+</body>
+</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.autotools.core/plugin.properties b/build/org.eclipse.cdt.autotools.core/plugin.properties
new file mode 100644
index 00000000000..9ad19876275
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/plugin.properties
@@ -0,0 +1,180 @@
+#################################################################################
+# Copyright (c) 2006, 2008, 2009 Red Hat, Inc.
+# 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:
+# Red Hat Incorporated - initial API and implementation
+#################################################################################
+ConvertWizard.description=Convert to C/C++ Autotools Project
+NewCProject.description=GNU C Autotools Project
+NewCProjectV2.description=GNU C Autootols Project V2
+NewCCProject.description=GNU C++ Autotools Project
+NewCWizard.name=GNU C Autotools Project
+NewCWizardV2.name=GNU C Autotools Project V2
+NewCCWizard.name=GNU C++ Autotools Project
+
+Autotools.wizard.name=GNU Autotools Build Wizard
+
+Autoconf.editor.name=Autoconf Editor
+
+BuildProperty.value.name.default=Default;
+BuildProperty.type.name.autotools=GNU Autotools
+
+PreferenceAutotools.name=Autotools
+PreferenceAutomakeEditor.name=Automake Editor
+PreferenceAutoconfEditor.name=Autoconf Editor
+
+PropertyAutotools.name=Autotools
+PropertyAutotools.general.name=General
+PropertyAutotools.configure.name=Configure Settings
+PropertyTabEditor.name=Editors
+AutotoolsBuildPropertyTab.name=Behaviour
+AutotoolsEditorsPropertyTab.name=Editors
+AutotoolsToolsPropertyTab.name=Tools Settings
+AutotoolsConfigurePropertyTab.name=Configure Settings
+
+PropertyTabEditor.tooltip=Set options for Autotools-specific editors
+PropertyTabBuild.tooltip=Set additional Autotools build options
+
+Makefile.builder.name=Autotools Makefile Generator
+Autotools.projecttype.name=GNU Autotools
+AutotoolsNature.name=Autotools Project Nature
+AutotoolsNewNature.name=Autotools Project Nature V2
+Configuration.build.name=Build (GNU)
+Autotools.targetplatform.name=GNU Autotools Target Platform
+Autotools.gnu.toolchain.name=GNU Autotools Toolchain
+Configure.outputType=Configure Output (config.status)
+Autogen.outputType=Autogen Output (configure)
+
+CommandCategorySource.name=Source
+CommandCategorySource.description=Source commands
+CommandCategoryTools.name=Tools
+CommandCategoryTools.description=Autotool tools
+ShowTooltip.name=Show Tooltip Description
+ShowTooltip.description=Shows the tooltip description for the element at the cursor
+
+# Scope and Key Commands
+ACeditor.scope.name=Autoconf Editor
+ACeditor.scope.description=Editor for Autoconf Configuration Source Files
+
+Tool.configure=configure
+
+OptionCategory.configure.general=General
+Option.configure.name=Name
+Option.configure.builddir=Build directory
+Option.configure.builddir.tip=Subdirectory off of project where build will occur
+Option.configure.configdir=Configure tool directory
+Option.configure.configdir.tip=Subdirectory off of project containing configure scripts
+Option.configure.cache_file=Name of configuration cache file (--cache-file)
+Option.configure.cache_file.tip=Specify the name of the configuration cache file [config.cache]
+Option.configure.no_create=Turn off file creation <not advised> (--no-create)
+Option.configure.no_create.tip=This tells configuration not to generate the output files as part of configuration
+Option.configure.quiet=Turn off checking messages (--quiet)
+Option.configure.quiet.tip=This turns off "checking ..." style messages from the configuration console output
+Option.configure.help=Display help contents of top-level configuration (--help)
+Option.configure.help.tip=Ask configuration file to display its help documentation
+Option.configure.version=Display version of autotools used to create configuration (--version)
+Option.configure.version.tip=This outputs the version of the Autotools used to create the configuration files
+
+OptionCategory.configure.platform=Platform Specifiers
+Option.configure.host=Host platform (--host)
+Option.configure.host.tip=Platform that project will run on
+Option.configure.target=Target platform (--target)
+Option.configure.target.tip=Platform that project will target output for
+Option.configure.build=Build platform (--build)
+Option.configure.build.tip=Platform where project is being built
+
+OptionCategory.configure.directories=Directory specifiers
+Option.configure.prefix=Arch-independent install directory (--prefix)
+Option.configure.prefix.tip=Place where architecture-independent files are installed [/usr/local]
+Option.configure.exec_prefix=Arch-dependent install directory (--exec-prefix)
+Option.configure.exec_prefix.tip=Place where architecture-dependent files are installed [PREFIX]
+Option.configure.libdir=Object code library directory (--libdir)
+Option.configure.libdir.tip=Place where object code libraries are installed [EPREFIX/lib]
+Option.configure.bindir=User executable directory (--bindir)
+Option.configure.bindir.tip=Place where binary executables are installed [EPREFIX/bin]
+Option.configure.sbindir=System admin executable directory (--sbindir)
+Option.configure.sbindir.tip=Place where system admin executables are installed [EPREFIX/sbin]
+Option.configure.includedir=C Header file directory (--includdir)
+Option.configure.includedir.tip=Place where header files will be installed [PREFIX/include]
+Option.configure.datadir=Read-only architecture-independent data (--datadir)
+Option.configure.datadir.tip=Place where read-only architecture-independent data is installed [PREFIX/share]
+Option.configure.sysconfdir=Read-only single-machine data directory (--syconfdir)
+Option.configure.sysconfdir.tip=Place where read-only single-machine data is stored [PREFIX/etc]
+Option.configure.infodir=Info file documentation directory (--infodir)
+Option.configure.infodir.tip=Place where info files are installed [PREFIX/info]
+Option.configure.mandir=Man file documentation directory (--mandir)
+Option.configure.mandir.tip=Place where man file documentation is installed [PREFIX/man]
+Option.configure.srcdir=Sources directory (--srcdir)
+Option.configure.srcdir.tip=Place where configure can find sources [configure directory or ..]
+Option.configure.localstatedir=Modifiable single-machine data directory (--localstatedir)
+Option.configure.localstatedir.tip=Place where modifiable single-machine data is installed [PREFIX/var]
+Option.configure.sharedstatedir=Modifiable architecture-independent data directory (--sharedstatedir)
+Option.configure.sharedstatedir.tip=Place where modifiable architecture-independent data is installed [PREFIX/com}
+Option.configure.libexecdir=Program executable directory (--libexecdir)
+Option.configure.libexecdir=Place where program executables will be installed [EPREFIX/libexec]
+Option.configure.oldincludedir=Non-gcc C header file directory (--oldincludedir)
+Option.configure.oldincludedir.tip=Place where non-gcc C header files are installed [/usr/include]
+
+OptionCategory.configure.filenames=File-name transformations
+Option.configure.program_prefix=Installed program prefix (--program-prefix)
+Option.configure.program_prefix.tip=Prepend PREFIX to the beginning of installed program names
+Option.configure.program_suffix=Installed program suffix (--program-suffix)
+Option.configure.program_suffix.tip=Append SUFFIX to the end of installed program names
+Option.configure.program_transform_name=Installed program name transform (--program-transform-name)
+Option.configure.program_transform_name.tip=A sed string used to transform installed program names
+
+OptionCategory.configure.features=Features and packages
+Option.configure.enable_maintainer_mode=Enable maintainer mode (--enable-maintainer-mode)
+Option.configure.enable_maintainer_mode.tip=Specify this to have Makefiles generated with checks for Autotool configuration file changes
+Option.configure.user=User-specified configuration options
+Option.configure.user.tip=Specify one or more configuration options (e.g. --enable-FEATURE, --disable-FEATURE, or --with-PACKAGE)
+
+Tool.autogen = autogen.sh
+
+OptionCategory.autogen.general=Options
+Option.autogen.user=Command line options
+Option.autogen.user.tip=Specify options to pass to the top-level autogen.sh script
+
+RedHatVendor.name = Red Hat
+Bundle-Name.0 = Autotools Plug-in
+provider=Eclipse CDT
+ConvertWizard.name = Convert to a C/C++ Autotools Project
+InvokeAutotools.label = Invoke Autotools
+InvokeAutotools.mnemonic = I
+InvokeAutoconf.label = Invoke Autoconf
+InvokeAutoconf.mnemonic = c
+InvokeAutoconf.description = Run autoconf in the selected directory
+InvokeAutoheader.label = Invoke Autoheader
+InvokeAutoheader.mnemonic = h
+InvokeAutoheader.description = Run autoheader from the selected directory
+InvokeAutomake.label = Invoke Automake
+InvokeAutomake.mnemonic = m
+InvokeAutomake.description = Run automake from the selected directory
+InvokeAutoreconf.label = Invoke Autoreconf
+InvokeAutoreconf.mnemonic = r
+InvokeAutoreconf.description = Run autoreconf from the selected directory
+InvokeAclocal.label = Invoke Aclocal
+InvokeAclocal.mnemonic = l
+InvokeAclocal.description = Run aclocal from the selected directory
+InvokeLibtoolize.label = Invoke Libtoolize
+InvokeLibtoolize.mnemonic = t
+InvokeLibtoolize.description = Run libtoolize in the selected directory
+Reconfigure.label = Reconfigure Project
+Reconfigure.mnemonic = f
+Reconfigure.description = Run configuration scripts for project
+DynamicBuild.label = Dynamic Build Info
+GetIncludePath.label = Get Include Path
+GetDefinedSymbols.label = Get Defined Symbols
+IncludesOption.name = includes
+SymbolsOption.name = symbols
+AutomakeEditor.name = AutomakeEditor
+Automake.name = automake
+ConfigureScript.name=Configure Script
+AutogenScript.name=Autogen Script
+
+AutotoolsProblemMarker.name=Configure Problem
+AutotoolsErrorParser.name=Autotools Error Parser \ No newline at end of file
diff --git a/build/org.eclipse.cdt.autotools.core/plugin.xml b/build/org.eclipse.cdt.autotools.core/plugin.xml
new file mode 100644
index 00000000000..35dcb05e86a
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/plugin.xml
@@ -0,0 +1,568 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+
+ <extension
+ id="autotoolsProperties"
+ name="Autotools Build Properties"
+ point="org.eclipse.cdt.managedbuilder.core.buildProperties">
+ <propertyValue
+ property="org.eclipse.cdt.build.core.buildType"
+ id="org.eclipse.linuxtools.cdt.autotools.core.buildType.default"
+ name="%BuildProperty.value.name.default"/>
+ <propertyValue
+ property="org.eclipse.cdt.build.core.buildArtefactType"
+ id="org.eclipse.linuxtools.cdt.autotools.core.buildArtefactType.autotools"
+ name="%BuildProperty.type.name.autotools"/>
+ </extension>
+ <extension
+ id="cdt.autotools.core.managed.build.info"
+ name="Autotools Managed Build Info"
+ point="org.eclipse.cdt.managedbuilder.core.buildDefinitions">
+ <managedBuildRevision fileVersion="4.0.0"/>
+ <tool
+ command="configure"
+ id="org.eclipse.linuxtools.cdt.autotools.core.tool.configure"
+ isAbstract="false"
+ name="%Tool.configure"
+ natureFilter="both"
+ supportsManagedBuild="false">
+ <optionCategory
+ id="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.general"
+ name="%OptionCategory.configure.general"
+ owner="org.eclipse.linuxtools.cdt.autotools.core.tool.configure"/>
+ <option
+ applicabilityCalculator="org.eclipse.cdt.internal.autotools.core.configure.AutotoolsOptionValueHandler"
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.general"
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.name"
+ isAbstract="false"
+ name="%Option.configure.name"
+ resourceFilter="all"
+ valueHandler="org.eclipse.cdt.internal.autotools.core.configure.AutotoolsOptionValueHandler"
+ valueType="string">
+ </option>
+ <option
+ applicabilityCalculator="org.eclipse.cdt.internal.autotools.core.configure.AutotoolsOptionValueHandler"
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.general"
+ defaultValue="build"
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.builddir"
+ isAbstract="false"
+ name="%Option.configure.builddir"
+ resourceFilter="all"
+ tip="%Option.configure.builddir.tip"
+ valueHandler="org.eclipse.cdt.internal.autotools.core.configure.AutotoolsOptionValueHandler"
+ valueType="string"/>
+ <option
+ applicabilityCalculator="org.eclipse.cdt.internal.autotools.core.configure.AutotoolsOptionValueHandler"
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.general"
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.configdir"
+ isAbstract="false"
+ name="%Option.configure.configdir"
+ resourceFilter="all"
+ tip="%Option.configure.configdir.tip"
+ valueType="string"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.general"
+ command="--cache-file="
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.cache_file"
+ isAbstract="false"
+ name="%Option.configure.cache_file"
+ resourceFilter="all"
+ tip="%Option.configure.cache_file.tip"
+ valueType="string"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.general"
+ command="--help"
+ defaultValue="false"
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.help"
+ isAbstract="false"
+ name="%Option.configure.help"
+ resourceFilter="all"
+ tip="%Option.configure.help.tip"
+ valueType="boolean"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.general"
+ command="--no-create"
+ defaultValue="false"
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.no_create"
+ isAbstract="false"
+ name="%Option.configure.no_create"
+ resourceFilter="all"
+ tip="%Option.configure.no_create.tip"
+ valueType="boolean"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.general"
+ command="--quiet"
+ defaultValue="false"
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.quiet"
+ isAbstract="false"
+ name="%Option.configure.quiet"
+ resourceFilter="all"
+ tip="%Option.configure.quiet.tip"
+ valueType="boolean"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.general"
+ command="--version"
+ defaultValue="false"
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.version"
+ isAbstract="false"
+ name="%Option.configure.version"
+ resourceFilter="all"
+ tip="%Option.configure.version.tip"
+ valueType="boolean"/>
+ <optionCategory
+ id="org.eclipse.linuxtools.cdt.autotools.core.configure.optionCategory.configure.platform"
+ name="%OptionCategory.configure.platform"
+ owner="org.eclipse.linuxtools.cdt.autotools.core.tool.configure"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.configure.optionCategory.configure.platform"
+ command="--host="
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.host"
+ isAbstract="false"
+ name="%Option.configure.host"
+ resourceFilter="all"
+ tip="%Option.configure.host.tip"
+ valueType="string"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.configure.optionCategory.configure.platform"
+ command="--target="
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.target"
+ isAbstract="false"
+ name="%Option.configure.target"
+ resourceFilter="all"
+ tip="%Option.configure.target.tip"
+ valueType="string"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.configure.optionCategory.configure.platform"
+ command="--build="
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.build"
+ isAbstract="false"
+ name="%Option.configure.build"
+ resourceFilter="all"
+ tip="%Option.configure.build.tip"
+ valueType="string"/>
+ <optionCategory
+ id="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.directories"
+ name="%OptionCategory.configure.directories"
+ owner="org.eclipse.linuxtools.cdt.autotools.core.tool.configure"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.directories"
+ command="--prefix="
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.prefix"
+ isAbstract="false"
+ name="%Option.configure.prefix"
+ resourceFilter="all"
+ tip="%Option.configure.prefix.tip"
+ valueType="string"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.directories"
+ command="--exec-prefix="
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.exec_prefix"
+ isAbstract="false"
+ name="%Option.configure.exec_prefix"
+ resourceFilter="all"
+ tip="%Option.configure.exec_prefix.tip"
+ valueType="string"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.directories"
+ command="--libdir="
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.libdir"
+ isAbstract="false"
+ name="%Option.configure.libdir"
+ resourceFilter="all"
+ tip="%Option.configure.libdir.tip"
+ valueType="string"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.directories"
+ command="--bindir="
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.bindir"
+ isAbstract="false"
+ name="%Option.configure.bindir"
+ resourceFilter="all"
+ tip="%Option.configure.bindir.tip"
+ valueType="string"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.directories"
+ command="--sbindir="
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.sbindir"
+ isAbstract="false"
+ name="%Option.configure.sbindir"
+ resourceFilter="all"
+ tip="%Option.configure.sbindir.tip"
+ valueType="string"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.directories"
+ command="--includedir="
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.includedir"
+ isAbstract="false"
+ name="%Option.configure.includedir"
+ resourceFilter="all"
+ tip="%Option.configure.includedir.tip"
+ valueType="string"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.directories"
+ command="--datadir="
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.datadir"
+ isAbstract="false"
+ name="%Option.configure.datadir"
+ resourceFilter="all"
+ tip="%Option.configure.datadir.tip"
+ valueType="string"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.directories"
+ command="--sysconfdir="
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.sysconfdir"
+ isAbstract="false"
+ name="%Option.configure.sysconfdir"
+ resourceFilter="all"
+ tip="%Option.configure.sysconfdir.tip"
+ valueType="string"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.directories"
+ command="--infodir="
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.infodir"
+ isAbstract="false"
+ name="%Option.configure.infodir"
+ resourceFilter="all"
+ tip="%Option.configure.infodir.tip"
+ valueType="string"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.directories"
+ command="--mandir="
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.mandir"
+ isAbstract="false"
+ name="%Option.configure.mandir"
+ resourceFilter="all"
+ tip="%Option.configure.mandir.tip"
+ valueType="string"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.directories"
+ command="--srcdir="
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.srcdir"
+ isAbstract="false"
+ name="%Option.configure.srcdir"
+ resourceFilter="all"
+ tip="%Option.configure.srcdir.tip"
+ valueType="string"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.directories"
+ command="--localstatedir="
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.localstatedir"
+ isAbstract="false"
+ name="%Option.configure.localstatedir"
+ resourceFilter="all"
+ tip="%Option.configure.localstatedir"
+ valueType="string"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.directories"
+ command="--sharedstatedir="
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.sharedstatedir"
+ isAbstract="false"
+ name="%Option.configure.sharedstatedir"
+ resourceFilter="all"
+ tip="%Option.configure.sharedstatedir"
+ valueType="string"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.directories"
+ command="--libexecdir="
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.libexecdir"
+ isAbstract="false"
+ name="%Option.configure.libexecdir"
+ resourceFilter="all"
+ tip="%Option.configure.libexecdir"
+ valueType="string"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.directories"
+ command="--oldincludedir="
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.oldincludedir"
+ isAbstract="false"
+ name="%Option.configure.oldincludedir"
+ resourceFilter="all"
+ tip="%Option.configure.oldincludedir.tip"
+ valueType="string"/>
+ <optionCategory
+ id="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.filenames"
+ name="%OptionCategory.configure.filenames"
+ owner="org.eclipse.linuxtools.cdt.autotools.core.tool.configure"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.filenames"
+ command="--program-prefix="
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.program_prefix"
+ isAbstract="false"
+ name="%Option.configure.program_prefix"
+ resourceFilter="all"
+ tip="%Option.configure.program_prefix.tip"
+ valueType="string"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.filenames"
+ command="--program-suffix="
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.program_suffix"
+ isAbstract="false"
+ name="%Option.configure.program_suffix"
+ resourceFilter="all"
+ tip="%Option.configure.program_suffix.tip"
+ valueType="string"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.filenames"
+ command="--program-transform-name="
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.program_transform_name"
+ isAbstract="false"
+ name="%Option.configure.program_transform_name"
+ resourceFilter="all"
+ tip="%Option.configure.program_transform_name.tip"
+ valueType="string"/>
+ <optionCategory
+ id="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.features"
+ name="%OptionCategory.configure.features"
+ owner="org.eclipse.linuxtools.cdt.autotools.core.tool.configure"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.features"
+ command="--enable-maintainer-mode"
+ defaultValue="false"
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.enable_maintainer_mode"
+ isAbstract="false"
+ name="%Option.configure.enable_maintainer_mode"
+ resourceFilter="all"
+ tip="%Option.configure.enable_maintainer_mode.tip"
+ valueType="boolean"/>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.configure.features"
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.user"
+ isAbstract="false"
+ name="%Option.configure.user"
+ resourceFilter="all"
+ tip="%Option.configure.user.tip"
+ valueType="string"/>
+ <outputType
+ id="org.eclipse.linuxtools.cdt.autotools.core.outputType.configure"
+ name="%Configure.outputType"
+ outputs="status"
+ primaryOutput="true"/>
+ <inputType
+ id="org.eclipse.linuxtools.cdt.autotools.core.inputType.configure"
+ multipleOfType="false"
+ sourceContentType="org.eclipse.linuxtools.cdt.autotools.core.configureScript">
+ </inputType>
+ </tool>
+ <tool
+ command="autogen.sh"
+ id="org.eclipse.linuxtools.cdt.autotools.core.tool.autogen"
+ isAbstract="false"
+ name="%Tool.autogen"
+ natureFilter="both"
+ supportsManagedBuild="false">
+ <optionCategory
+ id="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.autogen.general"
+ name="%OptionCategory.autogen.general"
+ owner="org.eclipse.linuxtools.cdt.autotools.core.tool.autogen">
+ </optionCategory>
+ <option
+ category="org.eclipse.linuxtools.cdt.autotools.core.optionCategory.autogen.general"
+ id="org.eclipse.linuxtools.cdt.autotools.core.option.autogen.user"
+ isAbstract="false"
+ name="%Option.autogen.user"
+ resourceFilter="all"
+ tip="%Option.autogen.user.tip"
+ valueType="string">
+ </option>
+ <outputType
+ id="org.eclipse.linuxtools.cdt.autotools.core.outputType.autogen"
+ name="%Autogen.outputType"
+ outputNames="configure"
+ primaryOutput="true">
+ </outputType>
+ <inputType
+ id="org.eclipse.linuxtools.cdt.autotools.core.inputType.autogen"
+ multipleOfType="false"
+ sourceContentType="org.eclipse.linuxtools.cdt.autotools.core.autogenScript">
+ </inputType>
+ </tool>
+ <targetPlatform
+ archList="all"
+ binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.GNU_ELF"
+ id="org.eclipse.linuxtools.cdt.autotools.core.targetPlatform"
+ isAbstract="false"
+ name="%Autotools.targetplatform.name"/>
+ <projectType
+ buildArtefactType="org.eclipse.linuxtools.cdt.autotools.core.buildArtefactType.autotools"
+ id="org.eclipse.linuxtools.cdt.autotools.core.projectType"
+ isAbstract="false">
+ <configuration
+ buildProperties="org.eclipse.linuxtools.cdt.autotools.core.buildType.default"
+ cleanCommand="rm -rf"
+ errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GASErrorParser"
+ id="org.eclipse.linuxtools.cdt.autotools.core.configuration.build"
+ name="%Configuration.build.name">
+ <toolChain
+ archList="all"
+ id="org.eclipse.linuxtools.cdt.autotools.core.toolChain"
+ name="%Autotools.gnu.toolchain.name"
+ scannerConfigDiscoveryProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile"
+ supportsManagedBuild="false"
+ targetTool="org.eclipse.linuxtools.cdt.autotools.core.tool.configure">
+ <tool
+ id="org.eclipse.linuxtools.cdt.autotools.core.gnu.toolchain.tool.configure"
+ isAbstract="false"
+ natureFilter="both"
+ superClass="org.eclipse.linuxtools.cdt.autotools.core.tool.configure"/>
+ <tool
+ id="org.eclipse.linuxtools.cdt.autotools.core.toolchain.tool.autogen"
+ isAbstract="false"
+ natureFilter="both"
+ superClass="org.eclipse.linuxtools.cdt.autotools.core.tool.autogen">
+ </tool>
+ <tool
+ id="org.eclipse.linuxtools.cdt.autotools.core.toolchain.tool.gcc"
+ isAbstract="false"
+ superClass="cdt.managedbuild.tool.gnu.c.compiler">
+ </tool>
+ <tool
+ id="org.eclipse.linuxtools.cdt.autotools.core.toolchain.tool.gpp"
+ isAbstract="false"
+ superClass="cdt.managedbuild.tool.gnu.cpp.compiler">
+ </tool>
+ <targetPlatform
+ id="org.eclipse.linuxtools.cdt.autotools.core.toolchain.targetPlatform"
+ isAbstract="false"
+ name="%Autotools.targetplatform.name"
+ superClass="org.eclipse.linuxtools.cdt.autotools.core.targetPlatform">
+ </targetPlatform>
+ <builder
+ id="org.eclipse.linuxtools.cdt.autotools.core.toolchain.builder"
+ isAbstract="false"
+ isVariableCaseSensitive="false">
+ </builder>
+ <supportedProperties>
+ <property
+ id="org.eclipse.cdt.build.core.buildArtefactType">
+ <value
+ id="org.eclipse.linuxtools.cdt.autotools.core.buildArtefactType.autotools">
+ </value>
+ </property>
+ </supportedProperties>
+ </toolChain>
+ </configuration>
+ </projectType>
+ </extension>
+ <extension
+ id="autotoolsNatureV2"
+ name="%AutotoolsNewNature.name"
+ point="org.eclipse.core.resources.natures">
+ <requires-nature
+ id="org.eclipse.cdt.managedbuilder.core.managedBuildNature">
+ </requires-nature>
+ <runtime>
+ <run
+ class="org.eclipse.cdt.autotools.core.AutotoolsNewProjectNature">
+ </run>
+ </runtime>
+ <builder
+ id="org.eclipse.cdt.autotools.core.genmakebuilderV2">
+ </builder>
+ </extension>
+ <extension
+ id="genmakebuilderV2"
+ name="%Makefile.builder.name"
+ point="org.eclipse.core.resources.builders">
+ <builder
+ callOnEmptyDelta="true"
+ hasNature="true"
+ isConfigurable="true">
+ <run
+ class="org.eclipse.cdt.internal.autotools.core.AutotoolsConfigurationBuilder">
+ </run>
+ </builder>
+ </extension>
+ <extension
+ point="org.eclipse.cdt.core.templateProcessTypes">
+ <processType
+ name="NewAutotoolsProject"
+ processRunner="org.eclipse.cdt.internal.autotools.core.wizards.NewAutotoolsProject">
+ <simple
+ name="name">
+ </simple>
+ <simple
+ external="true"
+ name="location"
+ nullable="true">
+ </simple>
+ <simple
+ name="artifactExtension">
+ </simple>
+ <simple
+ external="true"
+ name="isCProject">
+ </simple>
+ </processType>
+ <processType
+ name="SetAutotoolsStringOptionValue"
+ processRunner="org.eclipse.cdt.internal.autotools.core.wizards.SetAutotoolsStringOptionValue">
+ <simple
+ name="name">
+ </simple>
+ <complexArray
+ name="resourcePaths">
+ <baseType>
+ <simple
+ name="id">
+ </simple>
+ <simple
+ name="value">
+ </simple>
+ </baseType>
+ </complexArray>
+ </processType>
+ </extension>
+ <extension
+ point="org.eclipse.core.contenttype.contentTypes">
+ <content-type
+ id="org.eclipse.cdt.autotools.core.configureScript"
+ name="%ConfigureScript.name"
+ priority="high">
+ </content-type>
+ <content-type
+ id="org.eclipse.cdt.autotools.core.autogenScript"
+ name="%AutogenScript.name"
+ priority="high">
+ </content-type>
+ <file-association
+ content-type="org.eclipse.cdt.autotools.core.configureScript"
+ file-names="configure">
+ </file-association>
+ <file-association
+ content-type="org.eclipse.cdt.autotools.core.autogenScript"
+ file-names="autogen.sh">
+ </file-association>
+ </extension>
+ <extension
+ id="problem"
+ name="%AutotoolsProblemMarker.name"
+ point="org.eclipse.core.resources.markers">
+ <super
+ type="org.eclipse.cdt.core.problem">
+ </super>
+ <persistent
+ value="true">
+ </persistent>
+ <attribute
+ name="libraryInfo">
+ </attribute>
+ </extension>
+ <extension
+ point="org.eclipse.ui.ide.markerResolution">
+ <markerResolutionGenerator
+ class="org.eclipse.cdt.internal.autotools.core.MarkerResolutionGenerator"
+ markerType="org.eclipse.cdt.autotools.core.problem">
+ </markerResolutionGenerator>
+ </extension>
+ <extension
+ id="AutoconfErrorParser"
+ name="AutoconfErrorParser"
+ point="org.eclipse.cdt.core.ErrorParser">
+ <errorparser
+ class="org.eclipse.cdt.internal.autotools.core.ErrorParser"
+ id="org.eclipse.cdt.autotools.core.ErrorParser"
+ name="Autoconf Error Parser">
+ </errorparser>
+ </extension>
+</plugin>
diff --git a/build/org.eclipse.cdt.autotools.core/pom.xml b/build/org.eclipse.cdt.autotools.core/pom.xml
new file mode 100644
index 00000000000..f7b13545c0f
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/pom.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>cdt-parent</artifactId>
+ <version>8.1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+
+ <version>1.0.2-SNAPSHOT</version>
+ <artifactId>org.eclipse.cdt.autotools.core</artifactId>
+ <packaging>eclipse-plugin</packaging>
+</project> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/autotools/core/AutotoolsNewProjectNature.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/autotools/core/AutotoolsNewProjectNature.java
new file mode 100644
index 00000000000..82ee3b48cf3
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/autotools/core/AutotoolsNewProjectNature.java
@@ -0,0 +1,237 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Red Hat Inc.. 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:
+ * Red Hat Incorporated - initial implementation
+ * IBM Rational Software - add and remove nature static methods
+ *******************************************************************************/
+package org.eclipse.cdt.autotools.core;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.cdt.internal.autotools.core.AutotoolsConfigurationBuilder;
+import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
+import org.eclipse.core.resources.ICommand;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.IProjectNature;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceDescription;
+import org.eclipse.core.resources.IWorkspaceRunnable;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.ISchedulingRule;
+import org.eclipse.core.runtime.jobs.Job;
+
+public class AutotoolsNewProjectNature implements IProjectNature {
+
+ public static final String AUTOTOOLS_NATURE_ID = "org.eclipse.cdt.autotools.core.autotoolsNatureV2"; //$NON-NLS-1$
+ public static final String OLD_AUTOTOOLS_NATURE_ID = "org.eclipse.linuxtools.cdt.autotools.autotoolsNatureV2"; //$NON-NLS-1$
+ public final static String BUILDER_ID = ManagedBuilderCorePlugin.getUniqueIdentifier() + ".genmakebuilder"; //$NON-NLS-1$
+ public final static String OLD_AUTOTOOLS_BUILDER_ID = "org.eclipse.linuxtools.cdt.autotools.genmakebuilder"; //$NON-NLS-1$
+
+ private IProject project;
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.resources.IProjectNature#configure()
+ */
+ public void configure() throws CoreException {
+ addAutotoolsBuilder(project, new NullProgressMonitor());
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.resources.IProjectNature#deconfigure()
+ */
+ public void deconfigure() throws CoreException {
+ // TODO remove builder from here
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.resources.IProjectNature#getProject()
+ */
+ public IProject getProject() {
+ return project;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.resources.IProjectNature#setProject(org.eclipse.core.resources.IProject)
+ */
+ public void setProject(IProject project) {
+ this.project = project;
+ }
+
+ /**
+ * Add the Autotools builder to the project
+ * @param project
+ * @param monitor
+ * @throws CoreException
+ */
+ public static void addAutotoolsBuilder(IProject project, IProgressMonitor monitor) throws CoreException {
+ // Add the builder to the project
+ IProjectDescription description = project.getDescription();
+ ICommand[] commands = description.getBuildSpec();
+ ArrayList<ICommand> commandList = new ArrayList<ICommand>();
+
+ // Make sure the Autotools Configuration builder just precedes the Common Builder
+ for (int i = 0; i < commands.length; i++) {
+ ICommand command = commands[i];
+ if (command.getBuilderName().equals(AutotoolsConfigurationBuilder.BUILDER_ID)) {
+ // ignore it
+ } else {
+ if (command.getBuilderName().equals(OLD_AUTOTOOLS_BUILDER_ID)) {
+ ICommand newCommand = description.newCommand();
+ newCommand.setBuilderName(BUILDER_ID);
+ command = newCommand;
+ }
+ if (command.getBuilderName().equals(BUILDER_ID)) {
+ // add Autotools Configuration builder just before builder
+ ICommand newCommand = description.newCommand();
+ newCommand.setBuilderName(AutotoolsConfigurationBuilder.BUILDER_ID);
+ commandList.add(newCommand);
+ }
+ commandList.add(command);
+ }
+ }
+ final ICommand[] newCommands = commandList.toArray(new ICommand[commandList.size()]);
+ if (newCommands.length == commands.length) {
+ boolean hasCorrectBuilderCommands = true;
+ for (int j = 0; j < commands.length; ++j) {
+ if (!commands[j].getBuilderName().equals(newCommands[j].getBuilderName())) {
+ hasCorrectBuilderCommands = false;
+ break;
+ }
+ }
+ if (hasCorrectBuilderCommands)
+ return;
+ }
+ final ISchedulingRule rule = ResourcesPlugin.getWorkspace().getRoot();
+ final IProject proj = project;
+
+ Job backgroundJob = new Job("Autotools Set Project Description") {
+ /* (non-Javadoc)
+ * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ ResourcesPlugin.getWorkspace().run(new IWorkspaceRunnable() {
+ protected boolean savedAutoBuildingValue;
+
+ public void run(IProgressMonitor monitor) throws CoreException {
+ IWorkspace workspace = ResourcesPlugin.getWorkspace();
+ turnOffAutoBuild(workspace);
+ IProjectDescription description = proj.getDescription();
+ description.setBuildSpec(newCommands);
+ proj.setDescription(description, new NullProgressMonitor());
+ restoreAutoBuild(workspace);
+ }
+
+ protected final void turnOffAutoBuild(IWorkspace workspace) throws CoreException {
+ IWorkspaceDescription workspaceDesc = workspace.getDescription();
+ savedAutoBuildingValue = workspaceDesc.isAutoBuilding();
+ workspaceDesc.setAutoBuilding(false);
+ workspace.setDescription(workspaceDesc);
+ }
+
+ protected final void restoreAutoBuild(IWorkspace workspace) throws CoreException {
+ IWorkspaceDescription workspaceDesc = workspace.getDescription();
+ workspaceDesc.setAutoBuilding(savedAutoBuildingValue);
+ workspace.setDescription(workspaceDesc);
+ }
+
+ }, rule, IWorkspace.AVOID_UPDATE, monitor);
+ } catch (CoreException e) {
+ return e.getStatus();
+ }
+ IStatus returnStatus = Status.OK_STATUS;
+ return returnStatus;
+ }
+ };
+ backgroundJob.setRule(rule);
+ backgroundJob.schedule();
+ }
+
+ /**
+ * Utility method for adding an autotools nature to a project.
+ *
+ * @param proj the project to add the autotools nature to.
+ * @param monitor a progress monitor to indicate the duration of the operation, or
+ * <code>null</code> if progress reporting is not required.
+ */
+ public static void addAutotoolsNature(IProject project, IProgressMonitor monitor) throws CoreException {
+ addNature(project, AUTOTOOLS_NATURE_ID, monitor);
+ }
+
+ /**
+ * Utility method for adding a nature to a project.
+ *
+ * @param proj the project to add the nature to.
+ * @param natureId the id of the nature to assign to the project
+ * @param monitor a progress monitor to indicate the duration of the operation, or
+ * <code>null</code> if progress reporting is not required.
+ */
+ public static void addNature(IProject project, String natureId, IProgressMonitor monitor) throws CoreException {
+ IProjectDescription description = project.getDescription();
+ String[] prevNatures = description.getNatureIds();
+ for (int i = 0; i < prevNatures.length; i++) {
+ if (natureId.equals(prevNatures[i]))
+ return;
+ }
+ String[] newNatures = new String[prevNatures.length + 1];
+ System.arraycopy(prevNatures, 0, newNatures, 0, prevNatures.length);
+ newNatures[prevNatures.length] = natureId;
+ description.setNatureIds(newNatures);
+ project.setDescription(description, monitor);
+ }
+
+ /**
+ * Utility method to remove the autotools nature from a project.
+ *
+ * @param project to remove the autotools nature from
+ * @param mon progress monitor to indicate the duration of the operation, or
+ * <code>null</code> if progress reporting is not required.
+ * @throws CoreException
+ */
+ public static void removeAutotoolsNature(IProject project, IProgressMonitor mon) throws CoreException {
+ removeNature(project, AUTOTOOLS_NATURE_ID, mon);
+ }
+
+ /**
+ * Utility method to remove the old autotools nature from a project.
+ *
+ * @param project to remove the old autotools nature from
+ * @param mon progress monitor to indicate the duration of the operation, or
+ * <code>null</code> if progress reporting is not required.
+ * @throws CoreException
+ */
+ public static void removeOldAutotoolsNature(IProject project, IProgressMonitor mon) throws CoreException {
+ removeNature(project, OLD_AUTOTOOLS_NATURE_ID, mon);
+ }
+
+ /**
+ * Utility method for removing a project nature from a project.
+ *
+ * @param proj the project to remove the nature from
+ * @param natureId the nature id to remove
+ * @param monitor a progress monitor to indicate the duration of the operation, or
+ * <code>null</code> if progress reporting is not required.
+ */
+ public static void removeNature(IProject project, String natureId, IProgressMonitor monitor) throws CoreException {
+ IProjectDescription description = project.getDescription();
+ String[] prevNatures = description.getNatureIds();
+ List<String> newNatures = new ArrayList<String>(Arrays.asList(prevNatures));
+ newNatures.remove(natureId);
+ description.setNatureIds((String[])newNatures.toArray(new String[newNatures.size()]));
+ project.setDescription(description, monitor);
+ }
+
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/autotools/core/AutotoolsPlugin.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/autotools/core/AutotoolsPlugin.java
new file mode 100644
index 00000000000..9793b03959b
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/autotools/core/AutotoolsPlugin.java
@@ -0,0 +1,293 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Red Hat Inc..
+ * 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:
+ * Red Hat Incorporated - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.autotools.core;
+
+import java.lang.reflect.InvocationTargetException;
+import java.text.MessageFormat;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
+import org.eclipse.cdt.managedbuilder.core.IManagedProject;
+import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
+import org.eclipse.cdt.managedbuilder.core.ManagedCProjectNature;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The main plugin class to be used in the desktop.
+ */
+
+public class AutotoolsPlugin extends AbstractUIPlugin {
+
+ //The shared instance.
+ private static AutotoolsPlugin plugin;
+ private ResourceBundle resourceBundle;
+
+ public static final String PLUGIN_ID = "org.eclipse.cdt.autotools.core"; //$NON-NLS-1$
+ public static final String AUTOTOOLS_PROJECT_TYPE_ID = "org.eclipse.linuxtools.cdt.autotools.core.projectType"; //$NON-NLS-1$
+
+ /**
+ * The constructor.
+ */
+ public AutotoolsPlugin() {
+ Assert.isTrue(plugin == null);
+ plugin = this;
+ try {
+ resourceBundle = ResourceBundle.getBundle(PLUGIN_ID + ".Resources"); //$NON-NLS-1$
+ } catch (MissingResourceException x) {
+ resourceBundle = null;
+ }
+
+ }
+
+ public static String getPluginId() {
+ return PLUGIN_ID;
+ }
+
+ public static String getUniqueIdentifier() {
+ if (getDefault() == null) {
+ // If the default instance is not yet initialized,
+ // return a static identifier. This identifier must
+ // match the plugin id defined in plugin.xml
+ return PLUGIN_ID;
+ }
+ return getDefault().getBundle().getSymbolicName();
+ }
+
+ /**
+ * This method is called upon plug-in activation
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ }
+
+ /**
+ * This method is called when the plug-in is stopped
+ */
+ public void stop(BundleContext context) throws Exception {
+ super.stop(context);
+ plugin = null;
+ }
+
+ /**
+ * Returns the shared instance.
+ */
+ public static AutotoolsPlugin getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Returns active shell.
+ */
+ public static Shell getActiveWorkbenchShell() {
+ IWorkbenchWindow window = getDefault().getWorkbench().getActiveWorkbenchWindow();
+ if (window != null) {
+ return window.getShell();
+ }
+ return null;
+ }
+
+ /**
+ * Returns the string from the plugin's resource bundle,
+ * or 'key' if not found.
+ *
+ * @param key the message key
+ * @return the resource bundle message
+ */
+ public static String getResourceString(String key) {
+ ResourceBundle bundle = AutotoolsPlugin.getDefault().getResourceBundle();
+ try {
+ return bundle.getString(key);
+ } catch (MissingResourceException e) {
+ return key;
+ }
+ }
+
+ /**
+ * Returns the string from the plugin's resource bundle,
+ * or 'key' if not found.
+ *
+ * @param key the message key
+ * @param args an array of substituition strings
+ * @return the resource bundle message
+ */
+ public static String getFormattedString(String key, String[] args) {
+ return MessageFormat.format(getResourceString(key), (Object[])args);
+ }
+
+ /**
+ * Returns the plugin's resource bundle,
+ */
+ public ResourceBundle getResourceBundle() {
+ return resourceBundle;
+ }
+
+ public static boolean hasTargetBuilder(IProject project) {
+ try {
+ // When a project is converted to an Autotools project, we
+ // replace the ManagedMake builder with a special one that
+ // handles MakeTargets. If a project is brought into Eclipse and
+ // uses the New Project Wizard to create a ManagedMake project that
+ // is of type: Autotools, this added step is not done. If we know
+ // we have an Autotools project from the configuration id, then
+ // we should add the builder now. We also should replace the
+ // default ManagedMake scanner provider with the Autotools one,
+ // then return true.
+ if (project.getNature(ManagedCProjectNature.MNG_NATURE_ID) != null) {
+ IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
+ IManagedProject m = info.getManagedProject();
+ if (m != null && m.getProjectType().getId().equals(AUTOTOOLS_PROJECT_TYPE_ID)) {
+ AutotoolsNewProjectNature.addAutotoolsBuilder(project, new NullProgressMonitor());
+ return true;
+ }
+ }
+ } catch (CoreException e) {
+ // Don't care...fall through to not found.
+ } catch (Exception f) {
+ // Don't care...fall through to not found.
+ }
+ // Otherwise not found.
+ return false;
+ }
+
+ /**
+ * Returns an image descriptor for the image file at the given
+ * plug-in relative path.
+ *
+ * @param path the path
+ * @return the image descriptor
+ */
+ public static ImageDescriptor getImageDescriptor(String path) {
+ return AbstractUIPlugin.imageDescriptorFromPlugin(PLUGIN_ID, path);
+ }
+
+ public static void log(IStatus status) {
+ ResourcesPlugin.getPlugin().getLog().log(status);
+ }
+
+ public static void logErrorMessage(String message) {
+ log(new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.ERROR, message, null));
+ }
+
+ public static void logException(Throwable e, final String title, String message) {
+ if (e instanceof InvocationTargetException) {
+ e = ((InvocationTargetException) e).getTargetException();
+ }
+ IStatus status = null;
+ if (e instanceof CoreException)
+ status = ((CoreException) e).getStatus();
+ else {
+ if (message == null)
+ message = e.getMessage();
+ if (message == null)
+ message = e.toString();
+ status = new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.OK, message, e);
+ }
+ ResourcesPlugin.getPlugin().getLog().log(status);
+ Display display;
+ display = Display.getCurrent();
+ if (display == null)
+ display = Display.getDefault();
+ final IStatus fstatus = status;
+ display.asyncExec(new Runnable() {
+ public void run() {
+ ErrorDialog.openError(null, title, null, fstatus);
+ }
+ });
+ }
+
+ public static void logException(Throwable e) {
+ logException(e, null, null);
+ }
+
+ public static void log(Throwable e) {
+ if (e instanceof InvocationTargetException)
+ e = ((InvocationTargetException) e).getTargetException();
+ IStatus status = null;
+ if (e instanceof CoreException)
+ status = ((CoreException) e).getStatus();
+ else
+ status = new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.OK, e.getMessage(), e);
+ log(status);
+ }
+
+ /**
+ * Utility method with conventions
+ */
+ public static void errorDialog(Shell shell, String title, String message, IStatus s) {
+ log(s);
+ // if the 'message' resource string and the IStatus' message are the same,
+ // don't show both in the dialog
+ if (s != null && message.equals(s.getMessage())) {
+ message = null;
+ }
+ ErrorDialog.openError(shell, title, message, s);
+ }
+
+ /**
+ * Utility method with conventions
+ */
+ public static void errorDialog(Shell shell, String title, String message, Throwable t) {
+ log(t);
+ IStatus status;
+ if (t instanceof CoreException) {
+ status = ((CoreException) t).getStatus();
+ // if the 'message' resource string and the IStatus' message are the same,
+ // don't show both in the dialog
+ if (status != null && message.equals(status.getMessage())) {
+ message = null;
+ }
+ } else {
+ status = new Status(IStatus.ERROR, AutotoolsPlugin.getUniqueIdentifier(), -1, "Internal Error: ", t); //$NON-NLS-1$
+ }
+ ErrorDialog.openError(shell, title, message, status);
+ }
+
+ /**
+ * Returns the workspace instance.
+ */
+ public static IWorkspace getWorkspace() {
+ return ResourcesPlugin.getWorkspace();
+ }
+
+ /**
+ * Returns the active workbench window or <code>null</code> if none
+ */
+ public static IWorkbenchWindow getActiveWorkbenchWindow() {
+ return getDefault().getWorkbench().getActiveWorkbenchWindow();
+ }
+
+ /**
+ * Returns the active workbench page or <code>null</code> if none.
+ */
+ public static IWorkbenchPage getActivePage() {
+ IWorkbenchWindow window= getActiveWorkbenchWindow();
+ if (window != null) {
+ return window.getActivePage();
+ }
+ return null;
+ }
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/autotools/core/Resources.properties b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/autotools/core/Resources.properties
new file mode 100644
index 00000000000..c91080762f0
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/autotools/core/Resources.properties
@@ -0,0 +1,111 @@
+#################################################################################
+# Copyright (c) 2006, 2007, 2009 Red Hat, Inc.
+# 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:
+# Red Hat Incorporated - initial API and implementation
+# IBM Rational Software - ManagedMakeMessages copied to AutotoolsMakefileBuilder
+#################################################################################
+MakeCWizard.title=C/Make Project
+MakeCWizard.description=Create a New C Project using 'make' to build it
+
+WARNING_UNSUPPORTED_CONFIGURATION=Warning: unsupported configuration
+
+AutotoolsMakefileBuilder.message.finished=Build complete for project {0}
+AutotoolsMakefileBuilder.message.stopped=Build stopped
+AutotoolsMakefileBuilder.type.clean=Clean-only build
+AutotoolsMakefileBuilder.message.clean.deleting.output=Removing build artifacts from {0}
+AutotoolsMakefileBuilder.message.console.header=**** {0} of configuration {1} for project {2} ****
+
+MakeGenerator.makefile.built=Makefile built
+MakeGenerator.refresh=Refresh
+MakeGenerator.refresh.error=Refresh error
+MakeGenerator.generation.error=Configuration failed with error
+MakeGenerator.configuring=Configuring
+MakeGenerator.make.message=Invoking {0} for project {1}
+MakeGenerator.config.error=Error {0} occurred while running {1}
+MakeGenerator.createdir.error=Error creating build directory: {0}
+MakeGenerator.run.config.status=Running config.status in build directory: {0}
+MakeGenerator.makefile.cvs=Invoking Makefile.cvs in build directory: {0}
+MakeGenerator.autogen.sh=Invoking autogen.sh in build directory: {0}
+MakeGenerator.autoreconf=Invoking autoreconf in build directory: {0}
+MakeGenerator.gen.makefile=Generating Makefile in build directory: {0}
+MakeGenerator.clean.builddir=Cleaning build directory: {0}
+MakeGenerator.clean.topdir=Cleaning top-level source directory to allow other configuration to run
+MakeGenerator.gen.configure=Generating configure
+MakeGenerator.unsupportedConfig=Warning: unsupported configuration {0}
+MakeGenerator.success=[Operation successful]
+MakeGenerator.didnt.generate=No Makefile generated
+MakeGenerator.refresh.MakeTargets=Refreshing Make Targets
+MakeGenerator.commandline.envvars=Command-line environment variables:
+
+BuildDir.apply=Build directory already in use
+BuildDir.default=Default build directory to unused value?
+BuildDir.yes=Yes
+BuildDir.no=No
+
+WizardAutotoolsProjectConversion.title=Convert to CVS C/C++ Autotools Project
+WizardAutotoolsProjectConversion.description=Convert a CVS source repository to C/C++ Autotools Project
+WizardAutotoolsProjectConversion.message.add_nature=Adding C/C++ Autotools Managed Project Nature
+WizardAutotoolsProjectConversion.message.add_builder=Adding C/C++ Autotools Managed Project Builder
+WizardMakeProjectConversion.monitor.convertingToMakeProject=Converting Project...
+WizardAutotoolsConversion=CVS C/C++ Autotools Conversion
+WizardAutotoolsConversion.windowTitle=Conversion to CVS C/C++ Autotools Project
+WizardAutotoolsConversion.config.title=Select a configuration
+WizardAutotoolsConversion.config.desc=Select the configuration you wish to deploy on
+WizardAutotoolsConversion.options.title=Additional Project Settings
+WizardAutotoolsConversion.options.desc=Define the inter-project dependencies, if any.
+WizardAutotoolsConversion.message.save=Saving new build options
+
+WizardAutotoolsNewCProject.title=Autotools C Project
+WizardAutotoolsNewCProject.description=Create a new C Autotools project
+WizardAutotoolsNewCProject.monitor.creatingProject=Creating Project...
+WizardAutotoolsNewCProject.windowTitle=GNU Autotools C Project
+WizardAutotoolsNewCProject.config.title=Select a configuration
+WizardAutotoolsNewCProject.config.desc=Select the configuration you wish to deploy on
+WizardAutotoolsNewCProject.options.title=Additional Project Settings
+WizardAutotoolsNewCProject.options.desc=Define the inter-project dependencies, if any.
+WizardAutotoolsNewCProject.message.save=Saving new build options
+
+WizardAutotoolsNewCProjectV2.title=Autotools C Project V2
+WizardAutotoolsNewCProjectV2.description=Create a new C Autotools project
+WizardAutotoolsNewCProjectV2.monitor.creatingProject=Creating Project...
+WizardAutotoolsNewCProjectV2.windowTitle=GNU Autotools C Project V2
+WizardAutotoolsNewCProjectV2.config.title=Select a configuration
+WizardAutotoolsNewCProjectV2.config.desc=Select the configuration you wish to deploy on
+WizardAutotoolsNewCProjectV2.options.title=Additional Project Settings
+WizardAutotoolsNewCProjectV2.options.desc=Define the inter-project dependencies, if any.
+WizardAutotoolsNewCProjectV2.message.save=Saving new build options
+
+WizardAutotoolsNewCCProject.title=Autotools C++ Project
+WizardAutotoolsNewCCProject.description=Create a new C++ Autotools project
+WizardAutotoolsNewCCProject.monitor.creatingProject=Creating Project...
+WizardAutotoolsNewCCProject.windowTitle=GNU Autotools C++ Project
+WizardAutotoolsNewCCProject.config.title=Select a configuration
+WizardAutotoolsNewCCProject.config.desc=Select the configuration you wish to deploy on
+WizardAutotoolsNewCCProject.options.title=Additional Project Settings
+WizardAutotoolsNewCCProject.options.desc=Define the inter-project dependencies, if any.
+WizardAutotoolsNewCCProject.message.save=Saving new build options
+
+
+BuildTargetDialog.title.buildTarget=Build Special Targets
+BuildTargetDialog.title.makeTargetsFor=Make targets for
+BuildTargetDialog.button.build=Build
+
+TargetListViewer.button.add=Add...
+TargetListViewer.button.remove=Remove
+TargetListViewer.button.edit=Edit...
+TargetListViewer.label.target=Target
+TargetListViewer.label.location=Location
+TargetListViewer.exception.error=Error
+TargetListViewer.exception.message=An error occurred performing the selected action
+
+AutotoolsPreferencePage.useAutotoolsFileScanner.label=Use make -w for includepath scanning
+MakeTargetPreferencePage.buildTargetInBackground.label=Build target in background
+
+SetAutotoolsStringOptionValue.error=SetAutotoolsStringOptionValue failure: {0}
+
+UpdatePackage.msg=Update package: {0}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsConfigurationBuilder.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsConfigurationBuilder.java
new file mode 100644
index 00000000000..033a8e185f2
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsConfigurationBuilder.java
@@ -0,0 +1,168 @@
+package org.eclipse.cdt.internal.autotools.core;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Map;
+
+import org.eclipse.cdt.autotools.core.AutotoolsPlugin;
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.resources.ACBuilder;
+import org.eclipse.cdt.core.resources.IConsole;
+import org.eclipse.cdt.core.settings.model.ICProjectDescription;
+import org.eclipse.cdt.internal.autotools.core.configure.AutotoolsConfigurationManager;
+import org.eclipse.cdt.internal.autotools.core.configure.IAConfiguration;
+import org.eclipse.cdt.managedbuilder.core.IBuilder;
+import org.eclipse.cdt.managedbuilder.core.IConfiguration;
+import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
+import org.eclipse.cdt.managedbuilder.core.IMultiConfiguration;
+import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IncrementalProjectBuilder;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.core.runtime.OperationCanceledException;
+
+public class AutotoolsConfigurationBuilder extends ACBuilder {
+
+ public static final String BUILDER_NAME = "genmakebuilderV2"; //$NON-NLS-1$
+ public static final String BUILDER_ID = AutotoolsPlugin.getPluginId() + "." + BUILDER_NAME; //$NON-NLS-1$
+ public static final String OLD_BUILDER_ID = "org.eclipse.linuxtools.cdt.autotools.core.genmakebuilderV2"; //$NON-NLS-1$
+
+ private static final String BUILD_STOPPED="AutotoolsMakefileBuilder.message.stopped"; //$NON-NLS-1$
+ private AutotoolsNewMakeGenerator generator;
+
+ public AutotoolsConfigurationBuilder() {
+ super();
+ generator = new AutotoolsNewMakeGenerator();
+ }
+
+ protected boolean isCdtProjectCreated(IProject project){
+ ICProjectDescription des = CoreModel.getDefault().getProjectDescription(project, false);
+ return des != null && !des.isCdtProjectCreating();
+ }
+
+ @Override
+ protected IProject[] build(int kind, @SuppressWarnings("rawtypes") Map args, IProgressMonitor monitor)
+ throws CoreException {
+ IProject project = getProject();
+ if(!isCdtProjectCreated(project))
+ return project.getReferencedProjects();
+
+ boolean bPerformBuild = true;
+ IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
+ if (!shouldBuild(kind, info)) {
+ return new IProject[0];
+ }
+ if (kind == IncrementalProjectBuilder.AUTO_BUILD) {
+ IResourceDelta delta = getDelta(getProject());
+ if (delta != null) {
+ IResource res = delta.getResource();
+ if (res != null) {
+ bPerformBuild = res.getProject().equals(getProject());
+ }
+ } else {
+ bPerformBuild = false;
+ }
+ IConfiguration cfg = info.getDefaultConfiguration();
+ if (cfg != null) {
+ IAConfiguration acfg = AutotoolsConfigurationManager.getInstance().findCfg(project, cfg.getName());
+ if (acfg == null || acfg.isDirty())
+ bPerformBuild = true;
+ }
+ }
+ if (bPerformBuild) {
+ MultiStatus result = performMakefileGeneration(project, info, monitor);
+ if (result.getSeverity() == IStatus.ERROR) {
+ // Failure to create Makefile, output error message to console.
+ IConsole console = CCorePlugin.getDefault().getConsole();
+ console.start(project);
+
+ OutputStream cos = console.getOutputStream();
+ String errormsg = AutotoolsPlugin.getResourceString(BUILD_STOPPED);
+ StringBuffer buf = new StringBuffer(errormsg);
+ buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$ //$NON-NLS-2$
+ buf.append("(").append(result.getMessage()).append(")"); //$NON-NLS-1$ //$NON-NLS-2$
+
+ try {
+ cos.write(buf.toString().getBytes());
+ cos.flush();
+ cos.close();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ AutotoolsPlugin.log(e);
+ }
+ }
+ }
+ checkCancel(monitor);
+ return getProject().getReferencedProjects();
+ }
+
+ @Override
+ protected void clean(IProgressMonitor monitor) throws CoreException {
+ IProject project = getProject();
+ final IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(getProject());
+ if (shouldBuild(CLEAN_BUILD, info)) {
+ IConfiguration icfg = info.getDefaultConfiguration();
+ if (icfg instanceof IMultiConfiguration) {
+ IMultiConfiguration mcfg = (IMultiConfiguration)icfg;
+ IConfiguration[] cfgs = (IConfiguration[])mcfg.getItems();
+ for (int i = 0; i < cfgs.length; ++i) {
+ IAConfiguration cfg = AutotoolsConfigurationManager.getInstance().getConfiguration(project, icfg.getName());
+ cfg.setDirty(true);
+ }
+ } else {
+ IAConfiguration cfg = AutotoolsConfigurationManager.getInstance().getConfiguration(project, icfg.getName());
+ cfg.setDirty(true); // Mark Configuration dirty so next build will do full reconfigure
+ }
+ }
+ }
+
+ protected MultiStatus performMakefileGeneration(IProject project, IManagedBuildInfo info,
+ IProgressMonitor monitor) throws CoreException {
+ MultiStatus result;
+
+ try {
+ generator.initialize(project, info, monitor);
+ result = generator.regenerateMakefiles(false);
+ } catch (CoreException e) {
+ String errMsg = AutotoolsPlugin.getResourceString("MakeGenerator.didnt.generate"); //$NON-NLS-1$
+ result = new MultiStatus(AutotoolsPlugin.getUniqueIdentifier(), IStatus.ERROR,
+ errMsg, e);
+ }
+
+ return result;
+ }
+
+ /**
+ * Check whether the build has been canceled.
+ */
+ public void checkCancel(IProgressMonitor monitor) {
+ if (monitor != null && monitor.isCanceled())
+ throw new OperationCanceledException();
+ }
+
+ protected boolean shouldBuild(int kind, IManagedBuildInfo info) {
+ IConfiguration cfg = info.getDefaultConfiguration();
+ IBuilder builder = null;
+ if (cfg != null) {
+ builder = cfg.getEditableBuilder();
+ switch (kind) {
+ case IncrementalProjectBuilder.AUTO_BUILD :
+ return builder.isAutoBuildEnable();
+ case IncrementalProjectBuilder.INCREMENTAL_BUILD : // now treated as the same!
+ case IncrementalProjectBuilder.FULL_BUILD :
+ return builder.isFullBuildEnabled() | builder.isIncrementalBuildEnabled() ;
+ case IncrementalProjectBuilder.CLEAN_BUILD :
+ return builder.isCleanBuildEnabled();
+ }
+ }
+ return true;
+ }
+
+}
+
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsNewMakeGenerator.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsNewMakeGenerator.java
new file mode 100644
index 00000000000..f7bbd236872
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsNewMakeGenerator.java
@@ -0,0 +1,1452 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Red Hat Inc..
+ * 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:
+ * Red Hat Incorporated - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.autotools.core;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.eclipse.cdt.autotools.core.AutotoolsPlugin;
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.CommandLauncher;
+import org.eclipse.cdt.core.ConsoleOutputStream;
+import org.eclipse.cdt.core.ICDescriptor;
+import org.eclipse.cdt.core.envvar.IEnvironmentVariable;
+import org.eclipse.cdt.core.resources.IConsole;
+import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
+import org.eclipse.cdt.core.settings.model.ICProjectDescription;
+import org.eclipse.cdt.core.settings.model.ICStorageElement;
+import org.eclipse.cdt.internal.autotools.core.configure.AutotoolsConfigurationManager;
+import org.eclipse.cdt.internal.autotools.core.configure.IAConfiguration;
+import org.eclipse.cdt.internal.autotools.core.configure.IConfigureOption;
+import org.eclipse.cdt.make.core.IMakeBuilderInfo;
+import org.eclipse.cdt.make.core.IMakeTarget;
+import org.eclipse.cdt.make.core.IMakeTargetManager;
+import org.eclipse.cdt.make.core.MakeCorePlugin;
+import org.eclipse.cdt.make.core.makefile.IMakefile;
+import org.eclipse.cdt.make.core.makefile.ITarget;
+import org.eclipse.cdt.make.core.makefile.ITargetRule;
+import org.eclipse.cdt.managedbuilder.core.BuildException;
+import org.eclipse.cdt.managedbuilder.core.IBuilder;
+import org.eclipse.cdt.managedbuilder.core.IConfiguration;
+import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
+import org.eclipse.cdt.managedbuilder.core.IMultiConfiguration;
+import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
+import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
+import org.eclipse.cdt.managedbuilder.macros.BuildMacroException;
+import org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider;
+import org.eclipse.cdt.newmake.core.IMakeCommonBuildInfo;
+import org.eclipse.cdt.ui.CUIPlugin;
+import org.eclipse.core.filesystem.URIUtil;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceStatus;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.SubProgressMonitor;
+
+
+@SuppressWarnings("deprecation")
+public class AutotoolsNewMakeGenerator extends MarkerGenerator {
+
+ public final String CONFIG_STATUS = "config.status"; //$NON-NLS-1$
+ public final String MAKEFILE = "Makefile"; //$NON-NLS-1$
+ public final String MAKEFILE_CVS = "Makefile.cvs"; //$NON-NLS-1$
+ public final String SETTINGS_FILE_NAME = ".cdtconfigure"; //$NON-NLS-1$
+ public final String SHELL_COMMAND = "sh"; //$NON-NLS-1$
+
+ public final String AUTOGEN_TOOL_ID = "autogen"; //$NON-NLS-1$
+ public final String CONFIGURE_TOOL_ID = "configure"; //$NON-NLS-1$
+
+ public final String GENERATED_TARGET = AutotoolsPlugin.PLUGIN_ID + ".generated.MakeTarget"; //$NON-NLS-1$
+
+ private static final String MAKE_TARGET_KEY = MakeCorePlugin.getUniqueIdentifier() + ".buildtargets"; //$NON-NLS-1$
+ private static final String BUILD_TARGET_ELEMENT = "buildTargets"; //$NON-NLS-1$
+ private static final String TARGET_ELEMENT = "target"; //$NON-NLS-1$
+ private static final String TARGET_ATTR_ID = "targetID"; //$NON-NLS-1$
+ private static final String TARGET_ATTR_PATH = "path"; //$NON-NLS-1$
+ private static final String TARGET_ATTR_NAME = "name"; //$NON-NLS-1$
+ private static final String TARGET_STOP_ON_ERROR = "stopOnError"; //$NON-NLS-1$
+ private static final String TARGET_USE_DEFAULT_CMD = "useDefaultCommand"; //$NON-NLS-1$
+ private static final String TARGET_ARGUMENTS = "buildArguments"; //$NON-NLS-1$
+ private static final String TARGET_COMMAND = "buildCommand"; //$NON-NLS-1$
+ private static final String TARGET_RUN_ALL_BUILDERS = "runAllBuilders";
+ private static final String TARGET = "buildTarget"; //$NON-NLS-1$
+ private static final String DEFAULT_AUTORECONF = "autoreconf"; //$NON-NLS-1$
+
+ private IProject project;
+
+ private IProgressMonitor monitor;
+
+ private IPath buildLocation;
+ private String buildDir;
+ private String srcDir;
+ private String winOSType = "";
+
+ private IConfiguration cfg;
+ private ICConfigurationDescription cdesc;
+ private IAConfiguration toolsCfg;
+ private IBuilder builder;
+
+ public void generateDependencies() throws CoreException {
+ // TODO Auto-generated method stub
+
+ }
+
+ public MultiStatus generateMakefiles(IResourceDelta delta)
+ throws CoreException {
+ return regenerateMakefiles(false);
+ }
+
+ private void initializeBuildConfigDirs(IConfiguration c, IAConfiguration a) {
+ IBuilder b = c.getBuilder();
+ IPath buildDirectory = b.getBuildLocation();
+ if (buildDirectory == null || buildDirectory.isEmpty()) {
+ // default build directory to project directory
+ buildDirectory = project.getLocation();
+ }
+ buildLocation = buildDirectory;
+ buildDir = buildDirectory.toString();
+ srcDir = a.getConfigToolDirectory();
+ try {
+ String resolved = ManagedBuildManager.getBuildMacroProvider().resolveValue(srcDir, "", null,
+ IBuildMacroProvider.CONTEXT_CONFIGURATION, c);
+ srcDir = resolved;
+ } catch (BuildMacroException e) {
+ // do nothing
+ }
+ }
+
+ public void initialize(IProject project, IManagedBuildInfo info,
+ IProgressMonitor monitor) {
+ this.project = project;
+ ICProjectDescription pdesc = CCorePlugin.getDefault().getProjectDescription(project);
+ this.cdesc = pdesc.getActiveConfiguration();
+ this.cfg = info.getDefaultConfiguration();
+ this.builder = cfg.getBuilder();
+ this.monitor = monitor;
+ CUIPlugin.getDefault().getPreferenceStore().getString("dummy");
+ }
+
+ public IProject getProject() {
+ return project;
+ }
+
+ public boolean isGeneratedResource(IResource resource) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public void regenerateDependencies(boolean force) throws CoreException {
+ // TODO Auto-generated method stub
+
+ }
+
+ /*
+ * (non-Javadoc) Check whether the build has been cancelled. Cancellation
+ * requests propagated to the caller by throwing <code>OperationCanceledException</code>.
+ *
+ * @see org.eclipse.core.runtime.OperationCanceledException#OperationCanceledException()
+ */
+ protected void checkCancel() {
+ if (monitor != null && monitor.isCanceled()) {
+ throw new OperationCanceledException();
+ }
+ }
+
+ /*
+ * (non-Javadoc) Return or create the makefile needed for the build. If we
+ * are creating the resource, set the derived bit to true so the CM system
+ * ignores the contents. If the resource exists, respect the existing
+ * derived setting.
+ *
+ * @param makefilePath @return IFile
+ */
+ protected IFile createFile(IPath makefilePath) throws CoreException {
+ // Create or get the handle for the makefile
+ IWorkspaceRoot root = CCorePlugin.getWorkspace().getRoot();
+ IFile newFile = root.getFileForLocation(makefilePath);
+ if (newFile == null) {
+ newFile = root.getFile(makefilePath);
+ }
+ // Create the file if it does not exist
+ ByteArrayInputStream contents = new ByteArrayInputStream(new byte[0]);
+ try {
+ newFile.create(contents, false, new SubProgressMonitor(monitor, 1));
+ // Make sure the new file is marked as derived
+ if (!newFile.isDerived()) {
+ newFile.setDerived(true);
+ }
+
+ } catch (CoreException e) {
+ // If the file already existed locally, just refresh to get contents
+ if (e.getStatus().getCode() == IResourceStatus.PATH_OCCUPIED)
+ newFile.refreshLocal(IResource.DEPTH_ZERO, null);
+ else
+ throw e;
+ }
+
+ return newFile;
+ }
+
+ /*
+ * Create a directory
+ *
+ * @param boolean @return whether the directory was created
+ */
+ private boolean createDirectory(String dirName) throws CoreException {
+ // Create or get the handle for the build directory
+ IPath path = new Path(dirName);
+ boolean rc = true;
+ if (dirName.length() == 0 || dirName.equals("."))
+ path = project.getLocation().append(dirName);
+ File f = path.toFile();
+ if (!f.exists())
+ rc = f.mkdirs();
+
+ return rc;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator#getMakefileName()
+ */
+ public String getMakefileName() {
+ return MAKEFILE;
+ }
+
+ /**
+ * Reconfigure the project.
+ * @return MultiStatus status of regeneration operation
+ * @throws CoreException
+ */
+ public MultiStatus reconfigure() throws CoreException {
+ return regenerateMakefiles(true);
+ }
+
+ public MultiStatus regenerateMakefiles(boolean reconfigure) throws CoreException {
+ MultiStatus status = null;
+ if (cfg instanceof IMultiConfiguration) {
+ IMultiConfiguration mfcg = (IMultiConfiguration)cfg;
+ Object[] objs = mfcg.getItems();
+ for (int i = 0; i < objs.length; ++i) {
+ IConfiguration icfg = (IConfiguration)objs[i];
+ Status rc = regenerateMakefiles(icfg, reconfigure);
+ if (!rc.isOK()) {
+ if(status == null){
+ status = new MultiStatus(
+ AutotoolsPlugin.getUniqueIdentifier(),
+ IStatus.ERROR,
+ "",
+ null);
+ }
+ status.add(rc);
+ }
+ }
+ } else {
+ Status rc = regenerateMakefiles(cfg, reconfigure);
+ if (!rc.isOK()) {
+ if(status == null){
+ status = new MultiStatus(
+ AutotoolsPlugin.getUniqueIdentifier(),
+ IStatus.ERROR,
+ "",
+ null);
+ }
+ status.add(rc);
+ }
+ }
+ if(status == null){
+ status = new MultiStatus(
+ ManagedBuilderCorePlugin.getUniqueIdentifier(),
+ IStatus.OK,
+ "",
+ null);
+ }
+ return status;
+ }
+
+ private Status regenerateMakefiles(IConfiguration icfg, boolean reconfigure) throws CoreException {
+ Status status;
+ int rc = IStatus.OK;
+ String errMsg = new String();
+ boolean needFullConfigure = false;
+
+ // See if the user has cancelled the build
+ checkCancel();
+
+ // Synchronize the Autotools configurations with the Project Description
+ AutotoolsConfigurationManager.getInstance().syncConfigurations(getProject());
+ toolsCfg = AutotoolsConfigurationManager.getInstance().getConfiguration(getProject(), icfg.getId());
+
+ initializeBuildConfigDirs(icfg, toolsCfg);
+ // Create the top-level directory for the build output
+ if (!createDirectory(buildDir)) {
+ rc = IStatus.ERROR;
+ errMsg = AutotoolsPlugin.getFormattedString("MakeGenerator.createdir.error", //$NON-NLS-1$
+ new String[] {buildDir});
+ status = new MultiStatus(AutotoolsPlugin
+ .getUniqueIdentifier(), rc, errMsg, null);
+ }
+ checkCancel();
+
+ // // How did we do
+ // if (!getInvalidDirList().isEmpty()) {
+ // status = new MultiStatus (
+ // ManagedBuilderCorePlugin.getUniqueIdentifier(),
+ // IStatus.WARNING,
+ // new String(),
+ // null);
+ // // Add a new status for each of the bad folders
+ // iter = getInvalidDirList().iterator();
+ // while (iter.hasNext()) {
+ // status.add(new Status (
+ // IStatus.WARNING,
+ // ManagedBuilderCorePlugin.getUniqueIdentifier(),
+ // SPACES_IN_PATH,
+ // ((IContainer)iter.next()).getFullPath().toString(),
+ // null));
+ // }
+ // } else {
+ // status = new MultiStatus(
+ // ManagedBuilderCorePlugin.getUniqueIdentifier(),
+ // IStatus.OK,
+ // new String(),
+ // null);
+ // }
+
+ // Get a build console for the project
+ IConsole console = CCorePlugin.getDefault().getConsole("org.eclipse.cdt.autotools.ui.configureConsole"); //$NON-NLS-1$
+ boolean consoleStart = true;
+
+ // Make sure there's a monitor to cancel the build
+ if (monitor == null) {
+ monitor = new NullProgressMonitor();
+ }
+
+ try {
+ // If a config.status file exists in the build directory, we call it
+ // to
+ // regenerate the makefile
+ IPath configfile = buildLocation.append(CONFIG_STATUS);
+ IPath topConfigFile = project.getLocation().append(CONFIG_STATUS);
+ IPath makefilePath = buildLocation.append(MAKEFILE);
+ IPath topMakefilePath = project.getLocation().append(MAKEFILE);
+ File configStatus = configfile.toFile();
+ File topConfigStatus = topConfigFile.toFile();
+ File makefile = makefilePath.toFile();
+ File topMakefile = topMakefilePath.toFile();
+
+ // Check if a configure has been done in the top-level source directory
+ if (!(configfile.equals(topConfigFile)) && topConfigStatus.exists()) {
+ // Must perform distclean on source directory because 2nd configuration
+ // cannot occur otherwise
+ // There is a make target for cleaning.
+ if (topMakefile != null && topMakefile.exists()) {
+ String[] makeargs = new String[1];
+ IPath makeCmd = new Path("make"); //$NON-NLS-1$
+ String target = null;
+ try {
+ target = getProject().getPersistentProperty(AutotoolsPropertyConstants.CLEAN_MAKE_TARGET);
+ } catch (CoreException ce) {
+ // do nothing
+ }
+ if (target == null)
+ target = AutotoolsPropertyConstants.CLEAN_MAKE_TARGET_DEFAULT;
+ String args = builder.getBuildArguments();
+ if (args != null && !(args = args.trim()).equals("")) { //$NON-NLS-1$
+ String[] newArgs = makeArray(args);
+ makeargs = new String[newArgs.length + 1];
+ System.arraycopy(newArgs, 0, makeargs, 0, newArgs.length);
+ }
+ makeargs[makeargs.length - 1] = target;
+ rc = runCommand(makeCmd,
+ project.getLocation(),
+ makeargs,
+ AutotoolsPlugin.getResourceString("MakeGenerator.clean.topdir"), //$NON-NLS-1$
+ errMsg, console, consoleStart);
+ consoleStart = false;
+ }
+ }
+ // If the active configuration is dirty, then we need to do a full
+ // reconfigure.
+ if (toolsCfg.isDirty() || reconfigure) {
+ needFullConfigure = true;
+ // If we are going to do a full reconfigure, then if the current
+ // build directory exists, we should clean it out first. This is
+ // because the reconfiguration could change compile flags, etc..
+ // and the Makefile might not detect a rebuild is required. In
+ // addition, the build directory itself could have been changed and
+ // we should remove the previous build.
+ if (buildLocation != null && buildLocation.toFile().exists()) {
+ // See what type of cleaning the user has set up in the
+ // build properties dialog.
+ String cleanDelete = null;
+ try {
+ cleanDelete = getProject().getPersistentProperty(AutotoolsPropertyConstants.CLEAN_DELETE);
+ } catch (CoreException ce) {
+ // do nothing
+ }
+
+ if (cleanDelete != null && cleanDelete.equals(AutotoolsPropertyConstants.TRUE))
+ buildLocation.toFile().delete();
+ else {
+ // There is a make target for cleaning.
+ if (makefile != null && makefile.exists()) {
+ String[] makeargs = new String[1];
+ IPath makeCmd = new Path("make"); //$NON-NLS-1$
+ String target = null;
+ try {
+ target = getProject().getPersistentProperty(AutotoolsPropertyConstants.CLEAN_MAKE_TARGET);
+ } catch (CoreException ce) {
+ // do nothing
+ }
+ if (target == null)
+ target = AutotoolsPropertyConstants.CLEAN_MAKE_TARGET_DEFAULT;
+ String args = builder.getBuildArguments();
+ if (args != null && !(args = args.trim()).equals("")) { //$NON-NLS-1$
+ String[] newArgs = makeArray(args);
+ makeargs = new String[newArgs.length + 1];
+ System.arraycopy(newArgs, 0, makeargs, 0, newArgs.length);
+ }
+ makeargs[makeargs.length - 1] = target;
+ rc = runCommand(makeCmd,
+ buildLocation,
+ makeargs,
+ AutotoolsPlugin.getFormattedString("MakeGenerator.clean.builddir", new String[]{buildDir}), //$NON-NLS-1$
+ errMsg, console, consoleStart);
+ consoleStart = false;
+ }
+ }
+ }
+ // Mark the scanner info as dirty.
+ try {
+ project.setSessionProperty(AutotoolsPropertyConstants.SCANNER_INFO_DIRTY, Boolean.TRUE);
+ } catch (CoreException ce) {
+ // do nothing
+ }
+ }
+
+ ArrayList<String> configureEnvs = new ArrayList<String>();
+ ArrayList<String> configureCmdParms = new ArrayList<String>();
+ IPath configurePath = getConfigurePath(configureEnvs, configureCmdParms);
+ String[] configArgs = getConfigArgs(configureCmdParms);
+ ArrayList<String> autogenEnvs = new ArrayList<String>();
+ ArrayList<String> autogenCmdParms = new ArrayList<String>();
+ IPath autogenPath = getAutogenPath(autogenEnvs, autogenCmdParms);
+
+ // Check if we have a config.status (meaning configure has already run).
+ if (!needFullConfigure && configStatus != null && configStatus.exists()) {
+ // If no corresponding Makefile in the same build location, then we
+ // can simply run config.status again to ensure the top level Makefile has been
+ // created.
+ if (makefile == null || !makefile.exists()) {
+ rc = runScript(configfile, buildLocation, null,
+ AutotoolsPlugin.getFormattedString("MakeGenerator.run.config.status", new String[]{buildDir}), //$NON-NLS-1$
+ errMsg, console, null, consoleStart);
+ consoleStart = false;
+ }
+ }
+ // Look for configure and configure from scratch
+ else if (configurePath.toFile().exists()) {
+ rc = runScript(configurePath,
+ buildLocation,
+ configArgs,
+ AutotoolsPlugin.getFormattedString("MakeGenerator.gen.makefile", new String[]{buildDir}), //$NON-NLS-1$
+ errMsg, console, configureEnvs, consoleStart);
+ consoleStart = false;
+ if (rc != IStatus.ERROR) {
+ File makefileFile = buildLocation.append(MAKEFILE).toFile();
+ addMakeTargetsToManager(makefileFile);
+ // TODO: should we do something special if configure doesn't
+ // return ok?
+ toolsCfg.setDirty(false);
+ }
+ }
+ // If no configure, look for autogen.sh which may create configure and
+ // possibly even run it.
+ else if (autogenPath.toFile().exists()) {
+ // Remove the existing config.status file since we use it
+ // to figure out if configure was run.
+ if (configStatus.exists())
+ configStatus.delete();
+ // Get any user-specified arguments for autogen.
+ String[] autogenArgs = getAutogenArgs(autogenCmdParms);
+ rc = runScript(autogenPath,
+ autogenPath.removeLastSegments(1), autogenArgs,
+ AutotoolsPlugin.getFormattedString("MakeGenerator.autogen.sh", new String[]{buildDir}), //$NON-NLS-1$
+ errMsg, console, autogenEnvs, consoleStart);
+ consoleStart = false;
+ if (rc != IStatus.ERROR) {
+ configStatus = configfile.toFile();
+ // Check for config.status. If it is created, then
+ // autogen.sh ran configure and we should not run it
+ // ourselves.
+ if (configStatus == null || !configStatus.exists()) {
+ if (!configurePath.toFile().exists()) {
+ // no configure script either...try running autoreconf
+ String[] reconfArgs = new String[1];
+ String reconfCmd = project.getPersistentProperty(AutotoolsPropertyConstants.AUTORECONF_TOOL);
+ if (reconfCmd == null)
+ reconfCmd = DEFAULT_AUTORECONF;
+ IPath reconfCmdPath = new Path(reconfCmd);
+ reconfArgs[0] = "-i"; //$NON-NLS-1$
+ rc = runScript(reconfCmdPath,
+ project.getLocation().append(srcDir),
+ reconfArgs,
+ AutotoolsPlugin.getFormattedString("MakeGenerator.autoreconf", new String[]{buildDir}), //$NON-NLS-1$
+ errMsg, console, null, consoleStart);
+ consoleStart = false;
+ }
+ // Check if configure generated and if yes, run it.
+ if (rc != IStatus.ERROR && configurePath.toFile().exists()) {
+ rc = runScript(configurePath,
+ buildLocation,
+ configArgs,
+ AutotoolsPlugin.getFormattedString("MakeGenerator.gen.makefile", new String[]{buildDir}), //$NON-NLS-1$
+ errMsg, console, configureEnvs, false);
+ if (rc != IStatus.ERROR) {
+ File makefileFile = buildLocation.append(MAKEFILE).toFile();
+ addMakeTargetsToManager(makefileFile);
+ toolsCfg.setDirty(false);
+ }
+ }
+ } else {
+ File makefileFile = buildLocation.append(MAKEFILE).toFile();
+ addMakeTargetsToManager(makefileFile);
+ toolsCfg.setDirty(false);
+ }
+ }
+ }
+ // If nothing this far, look for a Makefile.cvs file which needs to be run.
+ else if (makefileCvsExists()) {
+ String[] makeargs = new String[1];
+ IPath makeCmd = new Path("make"); //$NON-NLS-1$
+ makeargs[0] = "-f" + getMakefileCVSPath().toOSString(); //$NON-NLS-1$
+ rc = runCommand(makeCmd,
+ project.getLocation().append(buildDir),
+ makeargs,
+ AutotoolsPlugin.getFormattedString("MakeGenerator.makefile.cvs", new String[]{buildDir}), //$NON-NLS-1$
+ errMsg, console, consoleStart);
+ consoleStart = false;
+ if (rc != IStatus.ERROR) {
+ File makefileFile = project.getLocation().append(buildDir)
+ .append(MAKEFILE).toFile();
+ addMakeTargetsToManager(makefileFile);
+ toolsCfg.setDirty(false);
+ }
+ }
+ // If nothing this far, try running autoreconf -i
+ else {
+ String[] reconfArgs = new String[1];
+ String reconfCmd = project.getPersistentProperty(AutotoolsPropertyConstants.AUTORECONF_TOOL);
+ if (reconfCmd == null)
+ reconfCmd = DEFAULT_AUTORECONF;
+ IPath reconfCmdPath = new Path(reconfCmd);
+ reconfArgs[0] = "-i"; //$NON-NLS-1$
+ rc = runScript(reconfCmdPath,
+ project.getLocation().append(srcDir),
+ reconfArgs,
+ AutotoolsPlugin.getFormattedString("MakeGenerator.autoreconf", new String[]{buildDir}), //$NON-NLS-1$
+ errMsg, console, null, consoleStart);
+ consoleStart = false;
+ // Check if configure generated and if yes, run it.
+ if (rc != IStatus.ERROR) {
+ if (configurePath.toFile().exists()) {
+ rc = runScript(configurePath,
+ buildLocation,
+ configArgs,
+ AutotoolsPlugin.getFormattedString("MakeGenerator.gen.makefile", new String[]{buildDir}), //$NON-NLS-1$
+ errMsg, console, configureEnvs, false);
+ if (rc != IStatus.ERROR) {
+ File makefileFile = buildLocation.append(MAKEFILE).toFile();
+ addMakeTargetsToManager(makefileFile);
+ // TODO: should we do something special if configure doesn't
+ // return ok?
+ toolsCfg.setDirty(false);
+ }
+ }
+ }
+ }
+ // If we didn't create a Makefile, consider that an error.
+ if (makefile == null || !makefile.exists()) {
+ rc = IStatus.ERROR;
+ errMsg = AutotoolsPlugin.getResourceString("MakeGenerator.didnt.generate"); //$NON-NLS-1$
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ // forgetLastBuiltState();
+ rc = IStatus.ERROR;
+ } finally {
+ // getGenerationProblems().clear();
+ status = new MultiStatus(AutotoolsPlugin
+ .getUniqueIdentifier(), rc, errMsg, null);
+ }
+ return status;
+ }
+
+ /**
+ * Strip a command of VAR=VALUE pairs that appear ahead or behind the command and add
+ * them to a list of environment variables.
+ *
+ * @param command - command to strip
+ * @param envVars - ArrayList to add environment variables to
+ * @return stripped command
+ */
+ public static String stripEnvVars(String command, ArrayList<String> envVars) {
+ Pattern p1 = Pattern.compile("(\\w+[=]\\\".*?\\\"\\s+)\\w+.*");
+ Pattern p2 = Pattern.compile("(\\w+[=]'.*?'\\s+)\\w+.*");
+ Pattern p3 = Pattern.compile("(\\w+[=][^\\s]+\\s+)\\w+.*");
+ Pattern p4 = Pattern.compile("\\w+\\s+(\\w+[=]\\\".*?\\\"\\s*)+.*");
+ Pattern p5 = Pattern.compile("\\w+\\s+(\\w+[=]'.*?'\\s*)+.*");
+ Pattern p6 = Pattern.compile("\\w+\\s+(\\w+[=][^\\s]+).*");
+ boolean finished = false;
+ while (!finished) {
+ Matcher m1 = p1.matcher(command);
+ if (m1.matches()) {
+ command = command.replaceFirst("\\w+[=]\\\".*?\\\"","").trim();
+ String s = m1.group(1).trim();
+ envVars.add(s.replaceAll("\\\"", ""));
+ } else {
+ Matcher m2 = p2.matcher(command);
+ if (m2.matches()) {
+ command = command.replaceFirst("\\w+[=]'.*?'", "").trim();
+ String s = m2.group(1).trim();
+ envVars.add(s.replaceAll("'", ""));
+ } else {
+ Matcher m3 = p3.matcher(command);
+ if (m3.matches()) {
+ command = command.replaceFirst("\\w+[=][^\\s]+", "").trim();
+ envVars.add(m3.group(1).trim());
+ } else {
+ Matcher m4 = p4.matcher(command);
+ if (m4.matches()) {
+ command = command.replaceFirst("\\w+[=]\\\".*?\\\"","").trim();
+ String s = m4.group(1).trim();
+ envVars.add(s.replaceAll("\\\"", ""));
+ } else {
+ Matcher m5 = p5.matcher(command);
+ if (m5.matches()) {
+ command = command.replaceFirst("\\w+[=]'.*?'", "").trim();
+ String s = m5.group(1).trim();
+ envVars.add(s.replaceAll("'", ""));
+ } else {
+ Matcher m6 = p6.matcher(command);
+ if (m6.matches()) {
+ command = command.replaceFirst("\\w+[=][^\\s+]+", "").trim();
+ envVars.add(m6.group(1).trim());
+ } else {
+ finished = true;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return command;
+ }
+
+ /**
+ * Strip a configure option of VAR=VALUE pairs and add
+ * them to a list of environment variables.
+ *
+ * @param str - string to strip
+ * @param envVars - ArrayList to add environment variables to
+ * @return stripped option
+ */
+ public static String stripEnvVarsFromOption(String str, ArrayList<String> envVars) {
+ Pattern p1 = Pattern.compile("(\\w+[=]\\\".*?\\\"\\s*).*");
+ Pattern p2 = Pattern.compile("(\\w+[=]'.*?'\\s*).*");
+ Pattern p3 = Pattern.compile("(\\w+[=][^\\s]+).*");
+ boolean finished = false;
+ while (!finished) {
+ Matcher m1 = p1.matcher(str);
+ if (m1.matches()) {
+ str = str.replaceFirst("\\w+[=]\\\".*?\\\"","").trim();
+ String s = m1.group(1).trim();
+ envVars.add(s.replaceAll("\\\"", ""));
+ } else {
+ Matcher m2 = p2.matcher(str);
+ if (m2.matches()) {
+ str = str.replaceFirst("\\w+[=]'.*?'", "").trim();
+ String s = m2.group(1).trim();
+ envVars.add(s.replaceAll("'", ""));
+ } else {
+ Matcher m3 = p3.matcher(str);
+ if (m3.matches()) {
+ str = str.replaceFirst("\\w+[=][^\\s]+", "").trim();
+ envVars.add(m3.group(1).trim());
+ } else {
+ finished = true;
+ }
+ }
+ }
+ }
+ return str;
+ }
+
+ private IPath getBuildPath(){
+ return new Path(this.buildDir);
+ }
+
+ private IPath getSourcePath(){
+ IPath sourcePath;
+ if (srcDir.equals(""))
+ sourcePath = project.getLocation();
+ else
+ sourcePath = project.getLocation().append(srcDir);
+ return sourcePath;
+ }
+
+ protected IPath getConfigurePath(ArrayList<String> envVars, ArrayList<String> cmdParms) {
+ IPath configPath;
+ IConfigureOption configOption = toolsCfg.getOption(CONFIGURE_TOOL_ID);
+ String command = "configure"; // $NON-NLS-1$
+ if (configOption != null)
+ command = stripEnvVars(configOption.getValue().trim(), envVars);
+
+ String[] tokens = command.split("\\s");
+ if (tokens.length > 1) {
+ command = tokens[0];
+ for (int i = 1; i < tokens.length; ++i)
+ cmdParms.add(tokens[i]);
+ }
+ if (srcDir.equals(""))
+ configPath = project.getLocation().append(command);
+ else
+ configPath = project.getLocation().append(srcDir).append(command);
+ return configPath;
+ }
+
+ protected IPath getMakefileCVSPath() {
+ IPath makefileCVSPath;
+ if (srcDir.equals(""))
+ makefileCVSPath = project.getLocation().append(MAKEFILE_CVS);
+ else
+ makefileCVSPath= project.getLocation().append(srcDir).append(
+ MAKEFILE_CVS);
+ return makefileCVSPath;
+ }
+
+ protected boolean makefileCvsExists() {
+ IPath makefileCVSPath = getMakefileCVSPath();
+ return makefileCVSPath.toFile().exists();
+ }
+
+ protected IPath getAutogenPath(ArrayList<String> envVars, ArrayList<String> cmdParms) {
+ IPath autogenPath;
+ IConfigureOption autogenOption = toolsCfg.getOption(AUTOGEN_TOOL_ID);
+ String command = "autogen.sh"; // $NON-NLS-1$
+ if (autogenOption != null)
+ command = stripEnvVars(autogenOption.getValue().trim(), envVars);
+
+ String[] tokens = command.split("\\s");
+ if (tokens.length > 1) {
+ command = tokens[0];
+ for (int i = 1; i < tokens.length; ++i)
+ cmdParms.add(tokens[i]);
+ }
+
+ if (srcDir.equals(""))
+ autogenPath = project.getLocation().append(command);
+ else
+ autogenPath = project.getLocation().append(srcDir).append(command);
+ return autogenPath;
+ }
+
+ private String[] getAutogenArgs(ArrayList<String> cmdParms) {
+ // Get the arguments to be passed to config from build model
+ ArrayList<String> autogenArgs = toolsCfg.getToolArgs(AUTOGEN_TOOL_ID);
+ cmdParms.addAll(autogenArgs);
+ return cmdParms.toArray(new String[cmdParms.size()]);
+ }
+
+ private String[] getConfigArgs(ArrayList<String> cmdParms) {
+ // Get the arguments to be passed to config from build model
+ ArrayList<String> configArgs = toolsCfg.getToolArgs(CONFIGURE_TOOL_ID);
+ cmdParms.addAll(configArgs);
+ return cmdParms.toArray(new String[cmdParms.size()]);
+ }
+
+ // Run a command or executable (e.g. make).
+ private int runCommand(IPath commandPath, IPath runPath, String[] args,
+ String jobDescription, String errMsg, IConsole console,
+ boolean consoleStart) throws BuildException, CoreException,
+ NullPointerException, IOException {
+
+ int rc = IStatus.OK;
+
+ removeAllMarkers(project);
+
+ String[] configTargets = args;
+ if (args == null)
+ configTargets = new String[0];
+
+ for (int i = 0; i < configTargets.length; ++i) {
+ // try to resolve the build macros in any argument
+ try{
+ String resolved =
+ ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(
+ configTargets[i],
+ "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_CONFIGURATION,
+ cfg);
+ configTargets[i] = resolved;
+ } catch (BuildMacroException e) {
+ }
+ }
+
+ String[] msgs = new String[2];
+ msgs[0] = commandPath.toString();
+ msgs[1] = project.getName();
+ monitor.subTask(AutotoolsPlugin.getFormattedString(
+ "MakeGenerator.make.message", msgs)); //$NON-NLS-1$
+
+
+ ConsoleOutputStream consoleOutStream = null;
+ StringBuffer buf = new StringBuffer();
+
+ // Launch command - main invocation
+ if (consoleStart)
+ console.start(project);
+
+ try {
+ consoleOutStream = console.getOutputStream();
+ String[] consoleHeader = new String[3];
+
+ consoleHeader[0] = jobDescription;
+ consoleHeader[1] = toolsCfg.getId();
+ consoleHeader[2] = project.getName();
+ buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$ //$NON-NLS-2$
+ buf.append(jobDescription);
+ buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$ //$NON-NLS-2$
+ buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$ //$NON-NLS-2$
+
+ consoleOutStream.write(buf.toString().getBytes());
+ consoleOutStream.flush();
+
+ // Get a launcher for the config command
+ CommandLauncher launcher = new CommandLauncher();
+ // Set the environment
+ IEnvironmentVariable variables[] =
+ CCorePlugin.getDefault().getBuildEnvironmentManager().getVariables(cdesc, true);
+ String[] env = null;
+ ArrayList<String> envList = new ArrayList<String>();
+ if (variables != null) {
+ for (int i = 0; i < variables.length; i++) {
+ envList.add(variables[i].getName()
+ + "=" + variables[i].getValue()); //$NON-NLS-1$
+ }
+ env = (String[]) envList.toArray(new String[envList.size()]);
+ }
+
+ // Hook up an error parser manager
+ URI uri = URIUtil.toURI(runPath);
+ ErrorParserManager epm = new ErrorParserManager(project, uri, this, new String[] {ErrorParser.ID});
+ epm.setOutputStream(consoleOutStream);
+ epm.addErrorParser(ErrorParser.ID, new ErrorParser(getSourcePath(), getBuildPath()));
+
+ OutputStream stdout = epm.getOutputStream();
+ OutputStream stderr = stdout;
+
+ launcher.showCommand(true);
+ Process proc = launcher.execute(commandPath, configTargets, env,
+ runPath, new NullProgressMonitor());
+ if (proc != null) {
+ try {
+ // Close the input of the process since we will never write to
+ // it
+ proc.getOutputStream().close();
+ } catch (IOException e) {
+ }
+
+ if (launcher.waitAndRead(stdout, stderr, new SubProgressMonitor(
+ monitor, IProgressMonitor.UNKNOWN)) != CommandLauncher.OK) {
+ errMsg = launcher.getErrorMessage();
+ }
+
+ // Force a resync of the projects without allowing the user to
+ // cancel.
+ // This is probably unkind, but short of this there is no way to
+ // ensure
+ // the UI is up-to-date with the build results
+ // monitor.subTask(ManagedMakeMessages
+ // .getResourceString(REFRESH));
+ monitor.subTask(AutotoolsPlugin.getResourceString("MakeGenerator.refresh")); //$NON-NLS-1$
+ try {
+ project.refreshLocal(IResource.DEPTH_INFINITE, null);
+ } catch (CoreException e) {
+ monitor.subTask(AutotoolsPlugin
+ .getResourceString("MakeGenerator.refresh.error")); //$NON-NLS-1$
+ }
+ } else {
+ errMsg = launcher.getErrorMessage();
+ }
+
+ // Report either the success or failure of our mission
+ buf = new StringBuffer();
+ if (errMsg != null && errMsg.length() > 0) {
+ String errorDesc = AutotoolsPlugin
+ .getResourceString("MakeGenerator.generation.error"); //$NON-NLS-1$
+ buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$//$NON-NLS-2$
+ buf.append(errorDesc);
+ buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$//$NON-NLS-2$
+ buf.append("(").append(errMsg).append(")"); //$NON-NLS-1$ //$NON-NLS-2$
+ rc = IStatus.ERROR;
+ } else if (proc.exitValue() >= 1 || proc.exitValue() < 0) {
+ // We have an invalid return code from configuration.
+ String[] errArg = new String[2];
+ errArg[0] = Integer.toString(proc.exitValue());
+ errArg[1] = commandPath.toString();
+ errMsg = AutotoolsPlugin.getFormattedString(
+ "MakeGenerator.config.error", errArg); //$NON-NLS-1$
+ buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$//$NON-NLS-2$
+ buf.append(AutotoolsPlugin.getResourceString("MakeGenerator.generation.error")); //$NON-NLS-1$
+ buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$//$NON-NLS-2$
+ if (proc.exitValue() == 1)
+ rc = IStatus.WARNING;
+ else
+ rc = IStatus.ERROR;
+ } else {
+ // Report a successful build
+ String successMsg =
+ AutotoolsPlugin.getResourceString("MakeGenerator.success"); //$NON-NLS-1$
+ buf.append(successMsg);
+ buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$//$NON-NLS-2$
+ rc = IStatus.OK;
+ }
+
+ // Write message on the console
+ consoleOutStream.write(buf.toString().getBytes());
+ consoleOutStream.flush();
+ // // Generate any error markers that the build has discovered
+ // monitor.subTask(ManagedMakeMessages
+ // .getResourceString(MARKERS));
+ // epm.reportProblems();
+
+ } finally {
+ consoleOutStream.close();
+ }
+
+ // If we have an error and no specific error markers, use the default error marker.
+ if (rc == IStatus.ERROR && !hasMarkers(project)) {
+ addMarker(project, -1, errMsg, SEVERITY_ERROR_BUILD, null);
+ }
+
+ return rc;
+ }
+
+ // Method to get the Win OS Type to distinguish between Cygwin and MingW
+ private String getWinOSType() {
+ if (winOSType.equals("")) {
+ try {
+ CommandLauncher launcher = new CommandLauncher();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ launcher.execute(
+ new Path(SHELL_COMMAND), //$NON-NLS-1$
+ new String[] { "-c", "echo $OSTYPE" }, //$NON-NLS-1$ //$NON-NLS-2$
+ new String[0],
+ new Path("."), //$NON-NLS-1$
+ new NullProgressMonitor());
+ if (launcher.waitAndRead(out, out) == CommandLauncher.OK)
+ winOSType = out.toString().trim();
+ } catch (CoreException e) {
+ // do nothing
+ }
+ }
+ return winOSType;
+ }
+
+ // Get the path string. We add a Win check to handle MingW.
+ // For MingW, we would rather represent C:\a\b as /C/a/b which
+ // doesn't cause Makefile to choke. For Cygwin we use /cygdrive/C/a/b
+ private String getPathString(IPath path) {
+ String s = path.toString();
+ if (Platform.getOS().equals(Platform.OS_WIN32)) {
+ if (getWinOSType().equals("cygwin")) {
+ s = s.replaceAll("^([A-Z])(:)", "/cygdrive/$1");
+ } else {
+ s = s.replaceAll("^([A-Z])(:)", "/$1");
+ }
+ }
+ return s;
+ }
+
+ // Run an autotools script (e.g. configure, autogen.sh, config.status).
+ private int runScript(IPath commandPath, IPath runPath, String[] args,
+ String jobDescription, String errMsg, IConsole console,
+ ArrayList<String> additionalEnvs,
+ boolean consoleStart) throws BuildException, CoreException,
+ NullPointerException, IOException {
+
+ int rc = IStatus.OK;
+ boolean removePWD = false;
+
+ removeAllMarkers(project);
+
+ // We want to run the script via the shell command. So, we add the command
+ // script as the first argument and expect "sh" to be on the runtime path.
+ // Any other arguments are placed after the script name.
+ String[] configTargets = null;
+ if (args == null)
+ configTargets = new String[1];
+ else {
+ configTargets = new String[args.length+1];
+ System.arraycopy(args, 0, configTargets, 1, args.length);
+ }
+ configTargets[0] = getPathString(commandPath);
+
+ // Fix for bug #343731
+ if (Platform.getOS().equals(Platform.OS_WIN32)
+ || Platform.getOS().equals(Platform.OS_MACOSX)) {
+ removePWD = true;
+ // Neither Mac or Windows support calling scripts directly.
+ String command = null;
+ for (String arg : configTargets) {
+ // TODO check for spaces in args
+ if (command == null)
+ command = arg;
+ else
+ command += " " + arg;
+ }
+ configTargets = new String[] { "-c", command };
+ }
+
+ for (int i = 0; i < configTargets.length; ++i) {
+ // try to resolve the build macros in any argument
+ try{
+ String resolved =
+ ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(
+ configTargets[i],
+ "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_CONFIGURATION,
+ cfg);
+ // strip any env-var settings from options
+ // fix for bug #356278
+ if (resolved.charAt(0) != '-')
+ resolved = stripEnvVarsFromOption(resolved, additionalEnvs);
+ configTargets[i] = resolved;
+ } catch (BuildMacroException e) {
+ }
+ }
+
+ String[] msgs = new String[2];
+ msgs[0] = commandPath.toString();
+ msgs[1] = project.getName();
+ monitor.subTask(AutotoolsPlugin.getFormattedString(
+ "MakeGenerator.make.message", msgs)); //$NON-NLS-1$
+
+
+ ConsoleOutputStream consoleOutStream = null;
+ StringBuffer buf = new StringBuffer();
+
+ // Launch command - main invocation
+ if (consoleStart)
+ console.start(project);
+
+ try {
+ consoleOutStream = console.getOutputStream();
+ String[] consoleHeader = new String[3];
+
+ consoleHeader[0] = jobDescription;
+ consoleHeader[1] = toolsCfg.getId();
+ consoleHeader[2] = project.getName();
+ buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$ //$NON-NLS-2$
+ buf.append(jobDescription);
+ buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$ //$NON-NLS-2$
+ buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$ //$NON-NLS-2$
+
+ // Display command-line environment variables that have been stripped by us
+ // because launch showCommand won't do this.
+ if (additionalEnvs != null && additionalEnvs.size() > 0) {
+ buf.append(AutotoolsPlugin
+ .getResourceString("MakeGenerator.commandline.envvars"));
+ buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$ //$NON-NLS-2$
+ buf.append("\t");
+ for (int i = 0; i < additionalEnvs.size(); ++i) {
+ String envvar = additionalEnvs.get(i);
+ buf.append(envvar.replaceFirst("(\\w+=)(.*)"," $1\"$2\""));
+ }
+ buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$ //$NON-NLS-2$
+ buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ consoleOutStream.write(buf.toString().getBytes());
+ consoleOutStream.flush();
+
+ // Get a launcher for the config command
+ CommandLauncher launcher = new CommandLauncher();
+ // Set the environment
+ IEnvironmentVariable variables[] =
+ CCorePlugin.getDefault().getBuildEnvironmentManager().getVariables(cdesc, true);
+ String[] env = null;
+ ArrayList<String> envList = new ArrayList<String>();
+ if (variables != null) {
+ for (int i = 0; i < variables.length; i++) {
+ // For Windows/Mac, check for PWD environment variable being passed.
+ // Remove it for now as it is causing errors in configuration.
+ // Fix for bug #343879
+ if (!removePWD || !variables[i].getName().equals("PWD")) // $NON-NLS-1$
+ envList.add(variables[i].getName()
+ + "=" + variables[i].getValue()); //$NON-NLS-1$
+ }
+ if (additionalEnvs != null)
+ envList.addAll(additionalEnvs); // add any additional environment variables specified ahead of script
+ env = (String[]) envList.toArray(new String[envList.size()]);
+ }
+
+ // Hook up an error parser manager
+ URI uri = URIUtil.toURI(runPath);
+ ErrorParserManager epm = new ErrorParserManager(project, uri, this, new String[] {ErrorParser.ID});
+ epm.setOutputStream(consoleOutStream);
+ epm.addErrorParser(ErrorParser.ID, new ErrorParser(getSourcePath(), getBuildPath()));
+
+ OutputStream stdout = epm.getOutputStream();
+ OutputStream stderr = stdout;
+
+ launcher.showCommand(true);
+ // Run the shell script via shell command.
+ Process proc = launcher.execute(new Path(SHELL_COMMAND), configTargets, env,
+ runPath, new NullProgressMonitor());
+ if (proc != null) {
+ try {
+ // Close the input of the process since we will never write to
+ // it
+ proc.getOutputStream().close();
+ } catch (IOException e) {
+ }
+
+ if (launcher.waitAndRead(stdout, stderr, new SubProgressMonitor(
+ monitor, IProgressMonitor.UNKNOWN)) != CommandLauncher.OK) {
+ errMsg = launcher.getErrorMessage();
+ }
+
+ // Force a resync of the projects without allowing the user to
+ // cancel.
+ // This is probably unkind, but short of this there is no way to
+ // ensure
+ // the UI is up-to-date with the build results
+ // monitor.subTask(ManagedMakeMessages
+ // .getResourceString(REFRESH));
+ monitor.subTask(AutotoolsPlugin.getResourceString("MakeGenerator.refresh")); //$NON-NLS-1$
+ try {
+ project.refreshLocal(IResource.DEPTH_INFINITE, null);
+ } catch (CoreException e) {
+ monitor.subTask(AutotoolsPlugin
+ .getResourceString("MakeGenerator.refresh.error")); //$NON-NLS-1$
+ }
+ } else {
+ errMsg = launcher.getErrorMessage();
+ }
+
+ // Report either the success or failure of our mission
+ buf = new StringBuffer();
+ if (errMsg != null && errMsg.length() > 0) {
+ String errorDesc = AutotoolsPlugin
+ .getResourceString("MakeGenerator.generation.error"); //$NON-NLS-1$
+ buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$//$NON-NLS-2$
+ buf.append(errorDesc);
+ buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$//$NON-NLS-2$
+ buf.append("(").append(errMsg).append(")"); //$NON-NLS-1$ //$NON-NLS-2$
+ rc = IStatus.ERROR;
+ } else if (proc.exitValue() >= 1 || proc.exitValue() < 0) {
+ // We have an invalid return code from configuration.
+ String[] errArg = new String[2];
+ errArg[0] = Integer.toString(proc.exitValue());
+ errArg[1] = commandPath.toString();
+ errMsg = AutotoolsPlugin.getFormattedString(
+ "MakeGenerator.config.error", errArg); //$NON-NLS-1$
+ buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$//$NON-NLS-2$
+ buf.append(AutotoolsPlugin.getResourceString("MakeGenerator.generation.error")); //$NON-NLS-1$
+ buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$//$NON-NLS-2$
+ if (proc.exitValue() == 1)
+ rc = IStatus.WARNING;
+ else
+ rc = IStatus.ERROR;
+ } else {
+ // Report a successful build
+ String successMsg =
+ AutotoolsPlugin.getResourceString("MakeGenerator.success"); //$NON-NLS-1$
+ buf.append(successMsg);
+ buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$//$NON-NLS-2$
+ rc = IStatus.OK;
+ }
+
+ // Write message on the console
+ consoleOutStream.write(buf.toString().getBytes());
+ consoleOutStream.flush();
+
+ // // Generate any error markers that the build has discovered
+ // monitor.subTask(ManagedMakeMessages
+ // .getResourceString(MARKERS));
+ // epm.reportProblems();
+ } finally {
+ consoleOutStream.close();
+ }
+
+ // If we have an error and no specific error markers, use the default error marker.
+ if (rc == IStatus.ERROR && !hasMarkers(project)) {
+ addMarker(project, -1, errMsg, SEVERITY_ERROR_BUILD, null);
+ }
+
+ return rc;
+ }
+
+ private ICStorageElement createTargetElement(ICStorageElement parent, IMakeTarget target) {
+ ICStorageElement targetElem = parent.createChild(TARGET_ELEMENT);
+ targetElem.setAttribute(TARGET_ATTR_NAME, target.getName());
+ targetElem.setAttribute(TARGET_ATTR_ID, target.getTargetBuilderID());
+ targetElem.setAttribute(TARGET_ATTR_PATH, target.getContainer().getProjectRelativePath().toString());
+ ICStorageElement elem = targetElem.createChild(TARGET_COMMAND);
+ elem.setValue(target.getBuildAttribute(IMakeCommonBuildInfo.BUILD_COMMAND, "make")); //$NON-NLS-1$
+
+ String targetAttr = target.getBuildAttribute(IMakeCommonBuildInfo.BUILD_ARGUMENTS, null);
+ if ( targetAttr != null) {
+ elem = targetElem.createChild(TARGET_ARGUMENTS);
+ elem.setValue(targetAttr);
+ }
+
+ targetAttr = target.getBuildAttribute(IMakeTarget.BUILD_TARGET, null);
+ if (targetAttr != null) {
+ elem = targetElem.createChild(TARGET);
+ elem.setValue(targetAttr);
+ }
+
+ elem = targetElem.createChild(TARGET_STOP_ON_ERROR);
+ elem.setValue(Boolean.valueOf(target.isStopOnError()).toString());
+
+ elem = targetElem.createChild(TARGET_USE_DEFAULT_CMD);
+ elem.setValue(Boolean.valueOf(target.isDefaultBuildCmd()).toString());
+
+ elem = targetElem.createChild(TARGET_RUN_ALL_BUILDERS);
+ elem.setValue(Boolean.valueOf(target.runAllBuilders()).toString());
+
+ return targetElem;
+ }
+
+ /**
+ * This output method saves the information into the .cdtproject metadata file.
+ *
+ * @param doc
+ * @throws CoreException
+ */
+ private void saveTargets(IMakeTarget[] makeTargets) throws CoreException {
+ // FIXME: fix this when MakeTargetManager fixes its code.
+ ICDescriptor descriptor = CCorePlugin.getDefault().getCProjectDescription(getProject(), true);
+ ICStorageElement rootElement = descriptor.getProjectStorageElement(MAKE_TARGET_KEY);
+
+ //Nuke the children since we are going to write out new ones
+ rootElement.clear();
+
+ // Fetch the ProjectTargets as ICStorageElements
+ rootElement = rootElement.createChild(BUILD_TARGET_ELEMENT);
+ for (int i = 0; i < makeTargets.length; ++i)
+ createTargetElement(rootElement, makeTargets[i]);
+
+ //Save the results
+ descriptor.saveProjectData();
+ }
+
+ protected static class MakeTargetComparator implements Comparator<Object> {
+ public int compare(Object a, Object b) {
+ IMakeTarget make1 = (IMakeTarget)a;
+ IMakeTarget make2 = (IMakeTarget)b;
+ return make1.getName().compareToIgnoreCase(make2.getName());
+ }
+
+ }
+
+ /**
+ * This method parses the given Makefile and produces MakeTargets for all targets so the
+ * end-user can access them from the MakeTargets popup-menu.
+ *
+ * @param makefileFile the Makefile to parse
+ * @throws CoreException
+ */
+ private void addMakeTargetsToManager(File makefileFile) throws CoreException {
+ // We don't bother if the Makefile wasn't created.
+ if (makefileFile == null || !makefileFile.exists())
+ return;
+
+ checkCancel();
+ if (monitor == null)
+ monitor = new NullProgressMonitor();
+ String statusMsg = AutotoolsPlugin.getResourceString("MakeGenerator.refresh.MakeTargets"); //$NON-NLS-1$
+ monitor.subTask(statusMsg);
+
+ IMakeTargetManager makeTargetManager =
+ MakeCorePlugin.getDefault().getTargetManager();
+
+ IMakefile makefile = MakeCorePlugin.createMakefile(makefileFile.toURI(), false, null);
+ ITargetRule[] targets = makefile.getTargetRules();
+ ITarget target = null;
+ Map<String, IMakeTarget> makeTargets = new HashMap<String, IMakeTarget>(); // use a HashMap so duplicate names are handled
+ String[] id = makeTargetManager.getTargetBuilders(getProject());
+ if (id.length == 0) {
+ return;
+ }
+ String targetBuildID = id[0];
+ IMakeBuilderInfo buildInfo = MakeCorePlugin.createBuildInfo(getProject(),
+ makeTargetManager.getBuilderID(targetBuildID));
+ boolean isStopOnError = buildInfo.isStopOnError();
+ IPath buildCommand = buildInfo.getBuildCommand();
+ String defaultBuildCommand = buildCommand.toString();
+ String buildArguments = buildInfo.getBuildArguments();
+
+ // Bug #351660 - reset targets to a single dummy target so that
+ // we will never be able to find any of the new targets we are about to
+ // create and thus avoid an extraneous event notification on a change to
+ // the MakeTarget. The dummy target should have an invalid name for
+ // a normal make target.
+ IMakeTarget dummyTarget = makeTargetManager.createTarget(
+ project, "\ndummyTarget\n", targetBuildID); //$NON-NLS-1$
+ makeTargetManager.setTargets(project, new IMakeTarget[]{dummyTarget});
+
+ for (int i = 0; i < targets.length; i++) {
+ target = targets[i].getTarget();
+ String targetName = target.toString();
+ if (!isValidTarget(targetName, makeTargetManager))
+ continue;
+ try {
+ // Bug #351660 - always create a new MakeTarget because an
+ // existing MakeTarget will cause events to occur on every
+ // modification whereas a new MakeTarget not yet added will
+ // not cause this delay.
+ IMakeTarget makeTarget = makeTargetManager.createTarget(
+ project, targetName, targetBuildID);
+ makeTarget.setContainer(project);
+ makeTarget.setStopOnError(isStopOnError);
+ makeTarget.setRunAllBuilders(false);
+ makeTarget.setUseDefaultBuildCmd(true);
+ makeTarget.setBuildAttribute(IMakeTarget.BUILD_ARGUMENTS, buildArguments);
+ makeTarget.setBuildAttribute(IMakeTarget.BUILD_COMMAND, defaultBuildCommand);
+
+ makeTarget.setBuildAttribute(GENERATED_TARGET, "true"); //$NON-NLS-1$
+ makeTarget.setBuildAttribute(IMakeTarget.BUILD_TARGET,
+ targetName);
+
+ //TODO: should this be raw build directory in macro form?
+ makeTarget.setBuildAttribute(IMakeTarget.BUILD_LOCATION,
+ buildDir);
+ makeTargets.put(makeTarget.getName(), makeTarget);
+ } catch (CoreException e) {
+ // Duplicate target. Ignore.
+ }
+ }
+
+ IMakeTarget[] makeTargetArray = new IMakeTarget[makeTargets.size()];
+ Collection<IMakeTarget> values = makeTargets.values();
+ ArrayList<IMakeTarget> valueList = new ArrayList<IMakeTarget>(values);
+ valueList.toArray(makeTargetArray);
+ MakeTargetComparator compareMakeTargets = new MakeTargetComparator();
+ Arrays.sort(makeTargetArray, compareMakeTargets);
+
+ // Check if we have MakeTargetManager patch which adds the ability
+ // to save multiple targets at once. If yes, use it as it updates
+ // the MakeTargets now. Otherwise, fall back to old method which
+ // saves the targets externally..requiring closing the project and
+ // reopening to see them.
+ Class<? extends IMakeTargetManager> c = makeTargetManager.getClass();
+ boolean targetsAdded = false;
+ try {
+ Method m = c.getMethod("setTargets", IContainer.class, IMakeTarget[].class);
+ m.invoke(makeTargetManager, project, makeTargetArray);
+ targetsAdded = true;
+ } catch (NoSuchMethodException e) {
+ // ignore and use fail-safe saveTargets method
+ } catch (IllegalArgumentException e) {
+ // ignore and use fail-safe saveTargets method
+ } catch (IllegalAccessException e) {
+ // ignore and use fail-safe saveTargets method
+ } catch (InvocationTargetException e) {
+ // ignore and use fail-safe saveTargets method
+ }
+ if (!targetsAdded)
+ saveTargets(makeTargetArray);
+ }
+
+ private boolean isValidTarget(String targetName, IMakeTargetManager makeTargetManager) {
+ return !(targetName.endsWith("-am") //$NON-NLS-1$
+ || targetName.endsWith("PROGRAMS") //$NON-NLS-1$
+ || targetName.endsWith("-generic") //$NON-NLS-1$
+ || (targetName.indexOf('$') >= 0)
+ || (targetName.charAt(0) == '.')
+ || targetName.equals(targetName.toUpperCase()));
+ }
+
+ // Turn the string into an array.
+ private String[] makeArray(String string) {
+ string = string.trim();
+ char[] array = string.toCharArray();
+ ArrayList<String> aList = new ArrayList<String>();
+ StringBuilder buffer = new StringBuilder();
+ boolean inComment = false;
+ for (int i = 0; i < array.length; i++) {
+ char c = array[i];
+ boolean needsToAdd = true;
+ if (array[i] == '"' || array[i] == '\'') {
+ if (i > 0 && array[i - 1] == '\\') {
+ inComment = false;
+ } else {
+ inComment = !inComment;
+ needsToAdd = false; // skip it
+ }
+ }
+ if (c == ' ' && !inComment) {
+ if (buffer.length() > 0){
+ String str = buffer.toString().trim();
+ if(str.length() > 0){
+ aList.add(str);
+ }
+ }
+ buffer = new StringBuilder();
+ } else {
+ if (needsToAdd)
+ buffer.append(c);
+ }
+ }
+ if (buffer.length() > 0){
+ String str = buffer.toString().trim();
+ if(str.length() > 0){
+ aList.add(str);
+ }
+ }
+ return (String[])aList.toArray(new String[aList.size()]);
+ }
+} \ No newline at end of file
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsProblemMarkerInfo.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsProblemMarkerInfo.java
new file mode 100644
index 00000000000..62f3489a245
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsProblemMarkerInfo.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2010 Siemens AG.
+ * All rights reserved. This content 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:
+ * Norbert Ploett - Initial implementation
+ * Red Hat Inc. - Modified for use with autotools plug-in
+ *******************************************************************************/
+
+package org.eclipse.cdt.internal.autotools.core;
+
+import org.eclipse.cdt.core.ProblemMarkerInfo;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.IPath;
+
+/**
+ * @noextend This class is not intended to be subclassed by clients.
+ */
+public class AutotoolsProblemMarkerInfo {
+
+ public static enum Type{PACKAGE, HEADER, PROG, FILE, GENERIC}
+
+ private ProblemMarkerInfo marker;
+
+ public AutotoolsProblemMarkerInfo(IResource file, String description, int severity, String name, Type type) {
+ this(file, -1, description, severity, null, null, name, type);
+ }
+
+ public AutotoolsProblemMarkerInfo(IResource file, int lineNumber, String description, int severity, String variableName, Type type) {
+ this(file, lineNumber, description, severity, variableName, null, null, type);
+ }
+
+ public AutotoolsProblemMarkerInfo(IResource file, int lineNumber, String description, int severity, String variableName,
+ IPath externalPath, String libraryInfo, Type type) {
+ this.marker = new ProblemMarkerInfo(file, lineNumber, description, severity, variableName, externalPath);
+
+ marker.setAttribute(IAutotoolsMarker.MARKER_PROBLEM_TYPE, type.name());
+ marker.setAttribute(IAutotoolsMarker.MARKER_LIBRARY_INFO, libraryInfo);
+
+ marker.setType (IAutotoolsMarker.AUTOTOOLS_PROBLEM_MARKER);
+ }
+
+ public ProblemMarkerInfo getMarker() {
+ return marker;
+ }
+
+ public String getProblemType() {
+ return marker.getAttribute(IAutotoolsMarker.MARKER_PROBLEM_TYPE);
+ }
+
+ public String getLibraryInfo(){
+ return marker.getAttribute(IAutotoolsMarker.MARKER_LIBRARY_INFO);
+ }
+
+} \ No newline at end of file
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsPropertyConstants.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsPropertyConstants.java
new file mode 100644
index 00000000000..5755bfb3d94
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsPropertyConstants.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2009 Red Hat Inc.
+ * 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:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.autotools.core;
+
+import org.eclipse.cdt.autotools.core.AutotoolsPlugin;
+import org.eclipse.core.runtime.QualifiedName;
+
+
+public class AutotoolsPropertyConstants {
+
+ static final String PREFIX = AutotoolsPlugin.getUniqueIdentifier() + "."; // $NON-NLS-1$
+ static final String PREFIX_COMPAT = "org.eclipse.linuxtools.cdt.autotools."; // $NON-NLS-1$
+ public static final String AUTOMAKE_VERSION_STRING = "AutoconfEditorAutomakeVersion"; // $NON-NLS-1$
+ public static final QualifiedName AUTOMAKE_VERSION = new QualifiedName(PREFIX, AUTOMAKE_VERSION_STRING);
+ public static final QualifiedName AUTOMAKE_VERSION_COMPAT = new QualifiedName(PREFIX_COMPAT, AUTOMAKE_VERSION_STRING);
+ public static final String AUTOCONF_VERSION_STRING = "AutoconfEditorAutoconfVersion"; // $NON-NLS-1$
+ public static final QualifiedName AUTOCONF_VERSION = new QualifiedName(PREFIX, AUTOCONF_VERSION_STRING);
+ public static final QualifiedName AUTOCONF_VERSION_COMPAT = new QualifiedName(PREFIX_COMPAT, AUTOCONF_VERSION_STRING);
+ public static final String AUTOCONF_MACRO_VERSIONING = "AutoconfEditorMacroVersioning"; // $NON-NLS-1$
+ public static final QualifiedName AUTOCONF_TOOL = new QualifiedName(PREFIX, "AutoconfToolPath"); // $NON-NLS-1$
+ public static final QualifiedName AUTOMAKE_TOOL = new QualifiedName(PREFIX, "AutomakeToolPath"); // $NON-NLS-1$
+ public static final QualifiedName ACLOCAL_TOOL = new QualifiedName(PREFIX, "AclocalToolPath"); // $NON-NLS-1$
+ public static final QualifiedName AUTOHEADER_TOOL = new QualifiedName(PREFIX, "AutoheaderToolPath"); // $NON-NLS-1$
+ public static final QualifiedName AUTORECONF_TOOL = new QualifiedName(PREFIX, "AutoreconfToolPath"); // $NON-NLS-1$
+ public static final QualifiedName LIBTOOLIZE_TOOL = new QualifiedName(PREFIX, "LibtoolizePath"); // $NON-NLS-1$
+ public static final QualifiedName CLEAN_DELETE = new QualifiedName(PREFIX, "CleanDelete"); // $NON-NLS-1$
+ public static final QualifiedName CLEAN_MAKE_TARGET = new QualifiedName(PREFIX, "CleanMakeTarget"); // $NON-NLS-1$
+ public static final QualifiedName SCANNER_USE_MAKE_W = new QualifiedName(PREFIX, "ScannerUseMakeW");
+ public static final QualifiedName AUTO_BUILD_NAME = new QualifiedName(PREFIX, "AutoBuildName"); // $NON-NLS-1$
+ public static final QualifiedName OPEN_INCLUDE = new QualifiedName(PREFIX, "IncludeResourceMapping"); // $NON-NLS-1$
+ public static final QualifiedName OPEN_INCLUDE_P = new QualifiedName(PREFIX, "PersistentIncludeResourceMapping"); //$NON-NLS-1$
+ public static final QualifiedName SCANNER_INFO_DIRTY = new QualifiedName(PREFIX, "ScannerInfoDirty"); // $NON-NLSp-1$
+
+ public static final String[] fACVersions = {"2.13", "2.59", "2.61", "2.68"}; // $NON-NLS-1$
+ public static final String AC_VERSION_2_13 = fACVersions[0];
+ public static final String AC_VERSION_2_59 = fACVersions[1];
+ public static final String AC_VERSION_2_61 = fACVersions[2];
+ public static final String AC_VERSION_2_68 = fACVersions[3];
+ public static final String LATEST_AC_VERSION = fACVersions[fACVersions.length - 1];
+
+ public static final String[] fAMVersions = {"1.4-p6", "1.9.5", "1.9.6", "1.11.1"}; // $NON-NLS-1$
+ public static final String LATEST_AM_VERSION = fAMVersions[fAMVersions.length - 1];
+
+ public static final String CLEAN_MAKE_TARGET_DEFAULT = "distclean"; // $NON-NLS-1$
+
+ public static final String TRUE = "true"; // $NON-NLS-1$
+ public static final String FALSE = "false"; // $NON-NLS-1$
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/DefaultNoDependencyCalculator.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/DefaultNoDependencyCalculator.java
new file mode 100644
index 00000000000..49f404a1903
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/DefaultNoDependencyCalculator.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2006 IBM 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:
+ * IBM - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.cdt.internal.autotools.core;
+
+import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
+import org.eclipse.cdt.managedbuilder.makegen.IManagedDependencyGenerator;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+
+/**
+ * This is the dependency calculator used by the makefile generation system when
+ * nothing is defined for a tool.
+ *
+ * @since 2.0
+ */
+@SuppressWarnings("deprecation")
+public class DefaultNoDependencyCalculator implements IManagedDependencyGenerator {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderDependencyCalculator#findDependencies(org.eclipse.core.resources.IResource, org.eclipse.core.resources.IProject)
+ */
+ public IResource[] findDependencies(IResource resource, IProject project) {
+ // Never answers any dependencies
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderDependencyCalculator#getCalculatorType()
+ */
+ public int getCalculatorType() {
+ return TYPE_NODEPS;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderDependencyCalculator#getDependencyCommand(org.eclipse.core.resources.IResource)
+ */
+ public String getDependencyCommand(IResource resource, IManagedBuildInfo info) {
+ // Never answers this call with an actual value
+ return null;
+ }
+
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/ErrorParser.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/ErrorParser.java
new file mode 100644
index 00000000000..b35599bc99a
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/ErrorParser.java
@@ -0,0 +1,233 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Red Hat Inc.
+ * 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:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.autotools.core;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.LineNumberReader;
+import java.lang.reflect.Method;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.eclipse.cdt.autotools.core.AutotoolsPlugin;
+import org.eclipse.cdt.core.IErrorParser;
+import org.eclipse.cdt.core.ProblemMarkerInfo;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+
+// This class would normally extend IErrorParser and use the CDT error parser
+// extension. However, we want an extended IMarker that contains library info and
+// possibly other data in the future. The standard CDT ErrorParserManager doesn't allow
+// us to pass an extended ProblemMarkerInfo, so we are forced to have our own mechanism
+// which is similar to the CDT one.
+public class ErrorParser extends MarkerGenerator implements IErrorParser{
+
+ public static final String ID = AutotoolsPlugin.PLUGIN_ID + ".errorParser"; //$NON-NLS-1$
+ private Pattern pkgconfigError =
+ Pattern.compile(".*?(configure:\\s+error:\\s+Package requirements\\s+\\((.*?)\\)\\s+were not met).*"); //$NON-NLS-1$
+ private Pattern genconfigError =
+ Pattern.compile(".*?configure:\\s+error:\\s+(.*)"); //$NON-NLS-1$
+ private Pattern checkingFail =
+ Pattern.compile("checking for (.*)\\.\\.\\. no"); //$NON-NLS-1$
+
+ private Pattern changingConfigDirectory =
+ Pattern.compile("Configuring in (.*)"); //$NON-NLS-1$
+
+ private IPath buildDir;
+ private IPath sourcePath;
+ private IProject project;
+
+ public ErrorParser(){
+ }
+
+ public ErrorParser(IPath sourcePath, IPath buildPath) {
+ this.buildDir = buildPath;
+ this.sourcePath = sourcePath;
+ }
+
+ public boolean processLine(String line,
+ org.eclipse.cdt.core.ErrorParserManager eoParser) {
+
+ if (this.project == null)
+ this.project = eoParser.getProject();
+
+ if (this.buildDir == null)
+ this.buildDir = new Path(eoParser.getWorkingDirectoryURI().getPath());
+
+ if (this.sourcePath == null)
+ this.sourcePath = eoParser.getProject().getLocation();
+
+ AutotoolsProblemMarkerInfo marker = processLine(line);
+ if ( marker != null){
+ // Check to see if addProblemMarker exists.
+ try {
+ Method method = eoParser.getClass().getMethod("addProblemMarker", ProblemMarkerInfo.class);
+ try {
+ method.invoke(eoParser, marker);
+ return true;
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ } catch (SecurityException e) {
+ return false;
+ } catch (NoSuchMethodException e) {
+ return false;
+ }
+ }
+ return false;
+ }
+
+ public boolean processLine(String line, ErrorParserManager eoParser) {
+ if (this.project == null)
+ this.project = eoParser.getProject();
+
+ AutotoolsProblemMarkerInfo marker = processLine(line);
+ if ( marker != null){
+ eoParser.addProblemMarker(marker);
+ return true;
+ }
+ return false;
+ }
+
+ public AutotoolsProblemMarkerInfo processLine(String line) {
+ Matcher m;
+
+ m = changingConfigDirectory.matcher(line);
+ if(m.matches()){
+ // set configuration directory.
+ this.buildDir = this.buildDir.append(m.group(1));
+ this.sourcePath = this.sourcePath.append(m.group(1));
+ return null;
+ }
+
+ m = pkgconfigError.matcher(line);
+ if (m.matches()) {
+ return new AutotoolsProblemMarkerInfo(getProject(), -1, m.group(1), SEVERITY_ERROR_BUILD, null, null, m.group(2), AutotoolsProblemMarkerInfo.Type.PACKAGE);
+ }
+
+ m = genconfigError.matcher(line);
+ if (m.matches()) {
+ return new AutotoolsProblemMarkerInfo(getProject(), -1, m.group(1), SEVERITY_ERROR_BUILD, null,
+ AutotoolsProblemMarkerInfo.Type.GENERIC);
+ }
+
+ m = checkingFail.matcher(line);
+ if (m.matches()) {
+ // We know that there is a 'checking for ...' fail.
+ // Find the log file containing this check
+ AutotoolsProblemMarkerInfo.Type type = getCheckType(m.group(1));
+ if (type != null)
+ return new AutotoolsProblemMarkerInfo(getProject(), "Missing " + type + " " + m.group(1), SEVERITY_INFO, m.group(1), type);
+ }
+
+ return null;
+ }
+
+ /**
+ * Given the name of the filed check object, look for it in the log file
+ * file and then examine the configure script to figure out what the type of
+ * the check was.
+ *
+ * @param name
+ * @return
+ */
+ private AutotoolsProblemMarkerInfo.Type getCheckType(String name) {
+ int lineNumber = getErrorConfigLineNumber(name);
+
+ // now open configure file.
+ File file = new File(sourcePath + "/configure");
+ // If the log file is not present there is nothing we can do.
+ if (!file.exists())
+ return null;
+
+ FileReader stream;
+ try {
+ stream = new FileReader(file);
+ LineNumberReader reader = new LineNumberReader(stream);
+
+ // look for something like:
+ // if test "${ac_cv_prog_WINDRES+set}" = set; then :
+ Pattern errorPattern = Pattern.compile(".*ac_cv_([a-z]*)_.*"); //$NON-NLS-1$
+
+ // skip to the line
+ String line = reader.readLine();
+ for (int i = 0; i < lineNumber + 10 && line != null; i++) {
+ if (i < lineNumber) {
+ line = reader.readLine();
+ continue;
+ }
+ Matcher m = errorPattern.matcher(line);
+ if (m.matches()) {
+ String typeString = m.group(1);
+ if (typeString.equals("prog"))
+ return AutotoolsProblemMarkerInfo.Type.PROG;
+ if (typeString.equals("header"))
+ return AutotoolsProblemMarkerInfo.Type.HEADER;
+ if (typeString.equals("file"))
+ return AutotoolsProblemMarkerInfo.Type.FILE;
+
+ return null;
+ }
+ line = reader.readLine();
+ }
+ stream.close();
+
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+
+ return null;
+ }
+
+ /**
+ * Check the log file for the check for the given name and return the line
+ * number in configure where the check occurs.
+ *
+ * @param name
+ * @return
+ */
+ private int getErrorConfigLineNumber(String name) {
+ try {
+ File file = new File(buildDir + "/config.log");
+ // If the log file is not present there is nothing we can do.
+ if (!file.exists())
+ return -1;
+
+ FileReader stream = new FileReader(file);
+ LineNumberReader reader = new LineNumberReader(stream);
+
+ Pattern errorPattern = Pattern
+ .compile("configure:(\\d+): checking for " + name); //$NON-NLS-1$
+ String line = reader.readLine();
+ while (line != null) {
+ Matcher m = errorPattern.matcher(line);
+
+ if (m.matches()) {
+ return Integer.parseInt(m.group(1));
+ }
+
+ line = reader.readLine();
+ }
+ stream.close();
+
+ } catch (Exception e) {
+ return -1;
+ }
+ return -1;
+ }
+
+ @Override
+ public IProject getProject() {
+ return this.project;
+ }
+
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/ErrorParserManager.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/ErrorParserManager.java
new file mode 100644
index 00000000000..af6ffdf2c6c
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/ErrorParserManager.java
@@ -0,0 +1,475 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2010 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * Sergey Prigogin (Google)
+ * James Blackburn (Broadcom) - Bug 247838
+ * Andrew Gvozdev (Quoin Inc)
+ * Dmitry Kozlov (CodeSourcery) - Build error highlighting and navigation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.autotools.core;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Vector;
+
+import org.eclipse.cdt.autotools.core.AutotoolsPlugin;
+import org.eclipse.cdt.core.IErrorParser;
+import org.eclipse.cdt.core.IErrorParser2;
+import org.eclipse.cdt.core.IMarkerGenerator;
+import org.eclipse.cdt.core.ProblemMarkerInfo;
+import org.eclipse.cdt.internal.core.IErrorMarkeredOutputStream;
+import org.eclipse.cdt.utils.EFSExtensionManager;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.URIUtil;
+
+/**
+ * The purpose of ErrorParserManager is to delegate the work of error parsing
+ * build output to {@link IErrorParser}s, assist in finding {@link IResource}s, and
+ * help create appropriate error/warning/info markers to be displayed
+ * by the Problems view.
+ *
+ * @noextend This class is not intended to be subclassed by clients.
+ */
+@SuppressWarnings("restriction")
+public class ErrorParserManager extends OutputStream {
+ /**
+ * The list of error parsers stored in .project for 3.X projects
+ * as key/value pair with key="org.eclipse.cdt.core.errorOutputParser"
+ * @deprecated since CDT 4.0.
+ */
+
+ /**
+ * Delimiter for error parsers presented in one string.
+ * @since 5.2
+ */
+ public final static char ERROR_PARSER_DELIMITER = ';';
+
+ private int nOpens;
+ private int lineCounter=0;
+
+ private final IProject fProject;
+ private final MarkerGenerator fMarkerGenerator;
+
+ private Map<String, ErrorParser> fErrorParsers;
+ private ArrayList<ProblemMarkerInfo> fErrors;
+
+ private Vector<URI> fDirectoryStack;
+ private final URI fBaseDirectoryURI;
+
+ private String previousLine;
+ private OutputStream outputStream;
+ private final StringBuilder currentLine = new StringBuilder();
+
+
+ /**
+ * Constructor.
+ *
+ * @param project - project being built.
+ * @param markerGenerator - marker generator able to create markers.
+ */
+ public ErrorParserManager(IProject project, MarkerGenerator markerGenerator) {
+ this(project, markerGenerator, null);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param project - project being built.
+ * @param markerGenerator - marker generator able to create markers.
+ * @param parsersIDs - array of error parsers' IDs.
+ */
+ public ErrorParserManager(IProject project, MarkerGenerator markerGenerator, String[] parsersIDs) {
+ this(project, project.getLocationURI(), markerGenerator, parsersIDs);
+ }
+
+
+ /**
+ * URI based constructor.
+ *
+ * @param project - project being built.
+ * @param baseDirectoryURI - absolute location URI of working directory of where the build is performed.
+ * @param markerGenerator - marker generator able to create markers.
+ * @param parsersIDs - array of error parsers' IDs.
+ * @since 5.1
+ */
+ public ErrorParserManager(IProject project, URI baseDirectoryURI, MarkerGenerator markerGenerator, String[] parsersIDs) {
+ fProject = project;
+ fMarkerGenerator = markerGenerator;
+ fDirectoryStack = new Vector<URI>();
+ fErrors = new ArrayList<ProblemMarkerInfo>();
+ fErrorParsers = new LinkedHashMap<String, ErrorParser>();
+
+ if (baseDirectoryURI != null)
+ fBaseDirectoryURI = baseDirectoryURI;
+ else
+ fBaseDirectoryURI = project.getLocationURI();
+ }
+
+ public void addErrorParser(String id, ErrorParser parser) {
+ fErrorParsers.put(id, parser);
+ }
+
+ /**
+ * @return current project.
+ */
+ public IProject getProject() {
+ return fProject;
+ }
+
+ /**
+ * @return the current URI location where the build is being performed
+ * @since 5.1
+ */
+ public URI getWorkingDirectoryURI() {
+ if (!fDirectoryStack.isEmpty())
+ return fDirectoryStack.lastElement();
+
+ // Fall back to the Project Location / Build directory
+ return fBaseDirectoryURI;
+ }
+
+ /**
+ * {@link #pushDirectory} and {@link #popDirectory} are used to change working directory
+ * from where file name is searched (see {@link #findFileInWorkspace}).
+ * The intention is to handle make output of commands "pushd dir" and "popd".
+ *
+ * @param dir - another directory level to keep in stack -- corresponding to 'pushd'.
+ */
+ public void pushDirectory(IPath dir) {
+ if (dir != null) {
+ URI uri;
+ URI workingDirectoryURI = getWorkingDirectoryURI();
+ if (!dir.isAbsolute())
+ uri = URIUtil.append(workingDirectoryURI, dir.toString());
+ else {
+ uri = toURI(dir);
+ if (uri == null) // Shouldn't happen; error logged
+ return;
+ }
+ pushDirectoryURI(uri);
+ }
+ }
+
+ /**
+ * {@link #pushDirectoryURI} and {@link #popDirectoryURI} are used to change working directory
+ * from where file name is searched (see {@link #findFileInWorkspace}).
+ * The intention is to handle make output of commands "pushd dir" and "popd".
+ *
+ * @param dir - another directory level to keep in stack -- corresponding to 'pushd'.
+ * @since 5.1
+ */
+ public void pushDirectoryURI(URI dir) {
+ if (dir != null) {
+ if (dir.isAbsolute())
+ fDirectoryStack.addElement(dir);
+ else
+ fDirectoryStack.addElement(URIUtil.makeAbsolute(dir, getWorkingDirectoryURI()));
+ }
+ }
+
+ /**
+ * {@link #pushDirectoryURI(URI)} and {@link #popDirectoryURI()} are used to change working directory
+ * from where file name is searched (see {@link #findFileInWorkspace(IPath)}).
+ * The intention is to handle make output of commands "pushd" and "popd".
+ *
+ * @return previous build directory location corresponding 'popd' command.
+ * @since 5.1
+ */
+ public URI popDirectoryURI() {
+ int i = fDirectoryStack.size();
+ if (i != 0) {
+ URI dir = fDirectoryStack.lastElement();
+ fDirectoryStack.removeElementAt(i - 1);
+ return dir;
+ }
+ return fBaseDirectoryURI;
+ }
+
+ /**
+ * @return number of directories in the stack.
+ */
+ public int getDirectoryLevel() {
+ return fDirectoryStack.size();
+ }
+
+
+ /**
+ * Parses the input and tries to generate error or warning markers
+ */
+ private void processLine(String line) {
+ String lineTrimmed = line.trim();
+ lineCounter++;
+
+ ProblemMarkerInfo marker=null;
+
+ for (ErrorParser parser : fErrorParsers.values()) {
+ ErrorParser curr = parser;
+ int types = IErrorParser2.NONE;
+ if (curr instanceof IErrorParser2) {
+ types = ((IErrorParser2) curr).getProcessLineBehaviour();
+ }
+ if ((types & IErrorParser2.KEEP_LONGLINES) == 0) {
+ // long lines are not given to parsers, unless it wants it
+ if (lineTrimmed.length() > 1000)
+ continue;
+ }
+ // standard behavior (pre 5.1) is to trim the line
+ String lineToParse = lineTrimmed;
+ if ((types & IErrorParser2.KEEP_UNTRIMMED) !=0 ) {
+ // untrimmed lines
+ lineToParse = line;
+ }
+
+ boolean consume = false;
+ // Protect against rough parsers who may accidentally
+ // throw an exception on a line they can't handle.
+ // It should not stop parsing of the rest of output.
+ try {
+ consume = curr.processLine(lineToParse, this);
+ } catch (Exception e){
+ AutotoolsPlugin.log(e);
+ } finally {
+ if (fErrors.size() > 0) {
+ if (marker==null)
+ marker = fErrors.get(0);
+ fErrors.clear();
+ }
+ }
+
+ if (consume)
+ break;
+ }
+ outputLine(line, marker);
+ }
+
+ /**
+ * Conditionally output line to outputStream. If stream
+ * supports error markers, use it, otherwise use conventional stream
+ */
+ private void outputLine(String line, ProblemMarkerInfo marker) {
+ String l = line + "\n"; //$NON-NLS-1$
+ if ( outputStream == null ) return;
+ try {
+ if (marker != null) {
+ if (outputStream instanceof IErrorMarkeredOutputStream) {
+ IErrorMarkeredOutputStream mos = (IErrorMarkeredOutputStream)outputStream;
+ mos.write(l, marker);
+ }
+ }
+ byte[] b = l.getBytes();
+ outputStream.write(b, 0, b.length);
+ } catch (IOException e) {
+ AutotoolsPlugin.log(e);
+ }
+ }
+
+ /**
+ * @return counter counting processed lines of output
+ * @since 5.2
+ */
+ public int getLineCounter() {
+ return lineCounter;
+ }
+
+
+ /**
+ * Add marker to the list of error markers.
+ *
+ * @param file - resource to add the new marker.
+ * @param lineNumber - line number of the error.
+ * @param desc - description of the error.
+ * @param severity - severity of the error.
+ * @param varName - variable name.
+ */
+ public void generateMarker(IResource file, int lineNumber, String desc, int severity, String varName,
+ AutotoolsProblemMarkerInfo.Type type) {
+ generateExternalMarker(file, lineNumber, desc, severity, varName, null, null, type);
+ }
+
+ /**
+ * Add marker to the list of error markers.
+ *
+ * @param file - resource to add the new marker.
+ * @param lineNumber - line number of the error.
+ * @param desc - description of the error.
+ * @param severity - severity of the error, one of
+ * <br>{@link IMarkerGenerator#SEVERITY_INFO},
+ * <br>{@link IMarkerGenerator#SEVERITY_WARNING},
+ * <br>{@link IMarkerGenerator#SEVERITY_ERROR_RESOURCE},
+ * <br>{@link IMarkerGenerator#SEVERITY_ERROR_BUILD}
+ * @param varName - variable name.
+ * @param externalPath - external path pointing to a file outside the workspace.
+ */
+ public void generateExternalMarker(IResource file, int lineNumber, String desc, int severity,
+ String varName, IPath externalPath, String libraryInfo, AutotoolsProblemMarkerInfo.Type type) {
+ AutotoolsProblemMarkerInfo problemMarkerInfo =
+ new AutotoolsProblemMarkerInfo(file, lineNumber, desc, severity, varName, externalPath, libraryInfo, type);
+ addProblemMarker(problemMarkerInfo);
+ }
+
+ /**
+ * Add the given marker to the list of error markers.
+ *
+ * @param problemMarkerInfo - The marker to be added
+ */
+ public void addProblemMarker(AutotoolsProblemMarkerInfo problemMarkerInfo){
+ fErrors.add(problemMarkerInfo.getMarker());
+ fMarkerGenerator.addMarker(problemMarkerInfo);
+ }
+
+ /**
+ * Called by the error parsers.
+ * @return the previous line, save in the working buffer.
+ */
+ public String getPreviousLine() {
+ return new String((previousLine) == null ? "" : previousLine); //$NON-NLS-1$
+ }
+
+ /**
+ * Method setOutputStream.
+ * Note: you have to close this stream explicitly
+ * don't rely on ErrorParserManager.close().
+ * @param os - output stream
+ */
+ public void setOutputStream(OutputStream os) {
+ outputStream = os;
+ }
+
+ /**
+ * Method getOutputStream.
+ * Note: you have to close this stream explicitly
+ * don't rely on ErrorParserManager.close().
+ * @return OutputStream
+ */
+ public OutputStream getOutputStream() {
+ nOpens++;
+ return this;
+ }
+
+ /**
+ * @see java.io.OutputStream#close()
+ * Note: don't rely on this method to close underlying OutputStream,
+ * close it explicitly
+ */
+ @Override
+ public synchronized void close() throws IOException {
+ if (nOpens > 0 && --nOpens == 0) {
+ checkLine(true);
+ fDirectoryStack.removeAllElements();
+ }
+ }
+
+ /**
+ * @see java.io.OutputStream#flush()
+ */
+ @Override
+ public void flush() throws IOException {
+ if (outputStream != null)
+ outputStream.flush();
+ }
+
+ /**
+ * @see java.io.OutputStream#write(int)
+ */
+ @Override
+ public synchronized void write(int b) throws IOException {
+ currentLine.append((char) b);
+ checkLine(false);
+ }
+
+ @Override
+ public synchronized void write(byte[] b, int off, int len) throws IOException {
+ if (b == null) {
+ throw new NullPointerException();
+ } else if (off != 0 || (len < 0) || (len > b.length)) {
+ throw new IndexOutOfBoundsException();
+ } else if (len == 0) {
+ return;
+ }
+ currentLine.append(new String(b, 0, len));
+ checkLine(false);
+ }
+
+ // This method examines contents of currentLine buffer
+ // if it contains whole line this line is checked by error
+ // parsers (processLine method).
+ // If flush is true rest of line is checked by error parsers.
+ private void checkLine(boolean flush) {
+ String buffer = currentLine.toString();
+ int i = 0;
+ while ((i = buffer.indexOf('\n')) != -1) {
+ String line = buffer.substring(0, i);
+ // get rid of any trailing '\r'
+ if (line.endsWith("\r")) //$NON-NLS-1$
+ line=line.substring(0,line.length()-1);
+ processLine(line);
+ previousLine = line;
+ buffer = buffer.substring(i + 1); // skip the \n and advance
+ }
+ currentLine.setLength(0);
+ if (flush) {
+ if (buffer.length() > 0) {
+ processLine(buffer);
+ previousLine = buffer;
+ }
+ } else {
+ currentLine.append(buffer);
+ }
+ }
+
+
+ /**
+ * Converts a location {@link IPath} to an {@link URI}. Contrary to
+ * {@link URIUtil#toURI(IPath)} this method does not assume that the path belongs
+ * to local file system.
+ *
+ * The returned URI uses the scheme and authority of the current working directory
+ * as returned by {@link #getWorkingDirectoryURI()}
+ *
+ * @param path - the path to convert to URI.
+ * @return URI
+ * @since 5.1
+ */
+ private URI toURI(IPath path) {
+// try {
+ URI baseURI = getWorkingDirectoryURI();
+ String uriString = path.toString();
+
+ // On Windows "C:/folder/" -> "/C:/folder/"
+ if (path.isAbsolute() && uriString.charAt(0) != IPath.SEPARATOR)
+ uriString = IPath.SEPARATOR + uriString;
+
+ return EFSExtensionManager.getDefault().createNewURIFromPath(baseURI, uriString);
+ }
+
+
+
+ /**
+ * @param ids - array of error parser IDs
+ * @return error parser IDs delimited with error parser delimiter ";"
+ * @since 5.2
+ */
+ public static String toDelimitedString(String[] ids) {
+ String result=""; //$NON-NLS-1$
+ for (String id : ids) {
+ if (result.length()==0) {
+ result = id;
+ } else {
+ result += ERROR_PARSER_DELIMITER + id;
+ }
+ }
+ return result;
+ }
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/IAutotoolsMarker.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/IAutotoolsMarker.java
new file mode 100644
index 00000000000..a85a55e344f
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/IAutotoolsMarker.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Red Hat Inc.
+ * 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:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.autotools.core;
+
+import org.eclipse.cdt.autotools.core.AutotoolsPlugin;
+
+public interface IAutotoolsMarker {
+ public static String AUTOTOOLS_PROBLEM_MARKER = AutotoolsPlugin.PLUGIN_ID + ".problem"; //$NON-NLS-1$
+ public static final String MARKER_VARIABLE = "problem.variable"; //$NON-NLS-1$
+ public static final String MARKER_EXTERNAL_LOCATION = "problem.externalLocation"; //$NON-NLS-1$
+ public static final String MARKER_LIBRARY_INFO="problem.libraryInfo"; //$NON-NLS-1$
+ public static final String MARKER_PROBLEM_TYPE="problem.type"; //$NON-NLS-1$
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/IConfigurationCloneListener.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/IConfigurationCloneListener.java
new file mode 100644
index 00000000000..60d7b9611c6
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/IConfigurationCloneListener.java
@@ -0,0 +1,12 @@
+package org.eclipse.cdt.internal.autotools.core;
+
+import org.eclipse.cdt.managedbuilder.core.IConfiguration;
+
+public interface IConfigurationCloneListener {
+ /**
+ * Notified when a configuration gets cloned.
+ * @param cloneName - name of the cloned configuration
+ * @param c - the clone
+ */
+ public void cloneCfg(String cloneName, IConfiguration c);
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/MakeMessages.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/MakeMessages.java
new file mode 100644
index 00000000000..829a3f824b6
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/MakeMessages.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2002, 2004 QNX Software Systems 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:
+ * QNX Software Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.autotools.core;
+
+import java.text.MessageFormat;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+public class MakeMessages {
+
+ private static final String RESOURCE_BUNDLE= MakeMessages.class.getName();
+ private static ResourceBundle fgResourceBundle;
+ static {
+ try {
+ fgResourceBundle = ResourceBundle.getBundle(RESOURCE_BUNDLE);
+ } catch (MissingResourceException x) {
+ fgResourceBundle = null;
+ }
+ }
+
+ private MakeMessages() {
+ }
+
+ public static String getString(String key) {
+ try {
+ return fgResourceBundle.getString(key);
+ } catch (MissingResourceException e) {
+ return '!' + key + '!';
+ } catch (NullPointerException e) {
+ return "#" + key + "#"; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ /**
+ * Gets a string from the resource bundle and formats it with the argument
+ *
+ * @param key the string used to get the bundle value, must not be null
+ */
+ public static String getFormattedString(String key, Object arg) {
+ return MessageFormat.format(getString(key), new Object[] { arg });
+ }
+
+ /**
+ * Gets a string from the resource bundle and formats it with arguments
+ */
+ public static String getFormattedString(String key, Object[] args) {
+ return MessageFormat.format(getString(key), args);
+ }
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/MarkerGenerator.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/MarkerGenerator.java
new file mode 100644
index 00000000000..1ea92240bfe
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/MarkerGenerator.java
@@ -0,0 +1,188 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2006, 2010 QNX Software Systems 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:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.autotools.core;
+
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.eclipse.cdt.autotools.core.AutotoolsPlugin;
+import org.eclipse.cdt.core.IMarkerGenerator;
+import org.eclipse.cdt.core.ProblemMarkerInfo;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.runtime.CoreException;
+
+public abstract class MarkerGenerator {
+
+ static final int SEVERITY_INFO = IMarkerGenerator.SEVERITY_INFO;
+ static final int SEVERITY_WARNING = IMarkerGenerator.SEVERITY_WARNING;
+ static final int SEVERITY_ERROR_RESOURCE = IMarkerGenerator.SEVERITY_ERROR_RESOURCE;
+ static final int SEVERITY_ERROR_BUILD = IMarkerGenerator.SEVERITY_ERROR_BUILD;
+
+ /**
+ * Constructor for MarkerGenerator
+ */
+ public MarkerGenerator() {
+ super();
+ }
+
+ /*
+ * callback from Output Parser
+ */
+ public void addMarker(IResource file, int lineNumber, String errorDesc, int severity, String errorVar) {
+
+ try {
+ IMarker[] cur = file.findMarkers(IAutotoolsMarker.AUTOTOOLS_PROBLEM_MARKER, false, IResource.DEPTH_ONE);
+ /*
+ * Try to find matching markers and don't put in duplicates
+ */
+ if ((cur != null) && (cur.length > 0)) {
+ for (int i = 0; i < cur.length; i++) {
+ int line = ((Integer) cur[i].getAttribute(IMarker.LOCATION)).intValue();
+ int sev = ((Integer) cur[i].getAttribute(IMarker.SEVERITY)).intValue();
+ String mesg = (String) cur[i].getAttribute(IMarker.MESSAGE);
+ if (line == lineNumber && sev == mapMarkerSeverity(severity) && mesg.equals(errorDesc)) {
+ return;
+ }
+ }
+ }
+
+ IMarker marker = file.createMarker(IAutotoolsMarker.AUTOTOOLS_PROBLEM_MARKER);
+ marker.setAttribute(IMarker.LOCATION, lineNumber);
+ marker.setAttribute(IMarker.MESSAGE, errorDesc);
+ marker.setAttribute(IMarker.SEVERITY, mapMarkerSeverity(severity));
+ marker.setAttribute(IMarker.LINE_NUMBER, lineNumber);
+ marker.setAttribute(IMarker.CHAR_START, -1);
+ marker.setAttribute(IMarker.CHAR_END, -1);
+ if (errorVar != null) {
+ marker.setAttribute(IAutotoolsMarker.MARKER_VARIABLE, errorVar);
+ }
+ }
+ catch (CoreException e) {
+ AutotoolsPlugin.log(e.getStatus());
+ }
+
+ }
+
+ public abstract IProject getProject();
+
+ public boolean hasMarkers(IResource file) {
+ IMarker[] markers;
+ try {
+ markers = file.findMarkers(IAutotoolsMarker.AUTOTOOLS_PROBLEM_MARKER, false, IResource.DEPTH_ONE);
+ } catch (CoreException e) {
+ return false;
+ }
+ return markers.length > 0;
+ }
+
+ /*
+ * callback from Output Parser
+ */
+ public void addMarker(AutotoolsProblemMarkerInfo autotoolsMarker) {
+
+ ProblemMarkerInfo info = autotoolsMarker.getMarker();
+
+ try {
+ IResource markerResource = info.file ;
+ if (markerResource==null) {
+ markerResource = getProject();
+ }
+ IMarker[] cur = markerResource.findMarkers(IAutotoolsMarker.AUTOTOOLS_PROBLEM_MARKER, true, IResource.DEPTH_ONE);
+// IMarker[] cur = markerResource.findMarkers(ICModelMarker.C_MODEL_PROBLEM_MARKER, true, IResource.DEPTH_ONE);
+ /*
+ * Try to find matching markers and don't put in duplicates
+ */
+ if ((cur != null) && (cur.length > 0)) {
+ for (int i = 0; i < cur.length; i++) {
+ int line = ((Integer) cur[i].getAttribute(IMarker.LOCATION)).intValue();
+ int sev = ((Integer) cur[i].getAttribute(IMarker.SEVERITY)).intValue();
+ String mesg = (String) cur[i].getAttribute(IMarker.MESSAGE);
+ if (line == info.lineNumber && sev == mapMarkerSeverity(info.severity) && mesg.equals(info.description)) {
+ return;
+ }
+ }
+ }
+
+ IMarker marker = markerResource.createMarker(IAutotoolsMarker.AUTOTOOLS_PROBLEM_MARKER);
+// IMarker marker = markerResource.createMarker(ICModelMarker.C_MODEL_PROBLEM_MARKER);
+ marker.setAttribute(IMarker.LOCATION, info.lineNumber);
+ marker.setAttribute(IMarker.MESSAGE, info.description);
+ marker.setAttribute(IMarker.SEVERITY, mapMarkerSeverity(info.severity));
+ marker.setAttribute(IMarker.LINE_NUMBER, info.lineNumber);
+ marker.setAttribute(IMarker.CHAR_START, -1);
+ marker.setAttribute(IMarker.CHAR_END, -1);
+ if (info.variableName != null) {
+ marker.setAttribute(IAutotoolsMarker.MARKER_VARIABLE, info.variableName);
+ }
+ if (info.externalPath != null) {
+ marker.setAttribute(IAutotoolsMarker.MARKER_EXTERNAL_LOCATION, info.externalPath.toOSString());
+ }
+
+ // Add all other client defined attributes.
+ Map<String, String> attributes = info.getAttributes();
+ if (attributes != null){
+ for (Entry<String, String> entry : attributes.entrySet()) {
+ marker.setAttribute(entry.getKey(), entry.getValue());
+ }
+ }
+
+
+ }
+ catch (CoreException e) {
+ AutotoolsPlugin.log(e.getStatus());
+ }
+ }
+
+ private int mapMarkerSeverity(int severity) {
+ switch (severity) {
+ case SEVERITY_ERROR_BUILD :
+ case SEVERITY_ERROR_RESOURCE :
+ return IMarker.SEVERITY_ERROR;
+ case SEVERITY_INFO :
+ return IMarker.SEVERITY_INFO;
+ case SEVERITY_WARNING :
+ return IMarker.SEVERITY_WARNING;
+ }
+ return IMarker.SEVERITY_ERROR;
+ }
+
+ /* (non-Javadoc)
+ * Removes the IMarkers for the project specified in the argument if the
+ * project exists, and is open.
+ *
+ * @param project
+ */
+ public void removeAllMarkers(IProject project) {
+ if (project == null || !project.isAccessible()) return;
+
+ // Clear out the problem markers
+ IWorkspace workspace = project.getWorkspace();
+ IMarker[] markers;
+ try {
+ markers = project.findMarkers(IAutotoolsMarker.AUTOTOOLS_PROBLEM_MARKER, true, IResource.DEPTH_INFINITE);
+// markers = project.findMarkers(ICModelMarker.C_MODEL_PROBLEM_MARKER, true, IResource.DEPTH_INFINITE);
+ } catch (CoreException e) {
+ // Handled just about every case in the sanity check
+ return;
+ }
+ if (markers != null) {
+ try {
+ workspace.deleteMarkers(markers);
+ } catch (CoreException e) {
+ // The only situation that might cause this is some sort of resource change event
+ return;
+ }
+ }
+ }
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/MarkerResolutionGenerator.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/MarkerResolutionGenerator.java
new file mode 100644
index 00000000000..d0b3cbeea60
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/MarkerResolutionGenerator.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Red Hat Inc.
+ * 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:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.autotools.core;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.ui.IMarkerResolution;
+import org.eclipse.ui.IMarkerResolutionGenerator;
+
+public class MarkerResolutionGenerator implements IMarkerResolutionGenerator {
+
+ public IMarkerResolution[] getResolutions(IMarker marker) {
+// System.out.println("in marker resolution, library info is " + marker.getAttribute(IAutotoolsMarker.MARKER_LIBRARY_INFO, ""));
+// String libraryInfo = marker.getAttribute(IAutotoolsMarker.MARKER_LIBRARY_INFO, null);
+// if (libraryInfo != null) {
+// return new IMarkerResolution[] {new PkgconfigErrorResolution(libraryInfo)};
+// };
+ return new IMarkerResolution[0];
+ }
+
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/PkgconfigErrorResolution.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/PkgconfigErrorResolution.java
new file mode 100644
index 00000000000..6519ab42432
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/PkgconfigErrorResolution.java
@@ -0,0 +1,123 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Red Hat Inc.
+ * 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:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.autotools.core;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.eclipse.cdt.autotools.core.AutotoolsPlugin;
+import org.eclipse.cdt.core.CommandLauncher;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.ui.IMarkerResolution;
+
+public class PkgconfigErrorResolution implements IMarkerResolution {
+
+ private class ConsoleOutputStream extends OutputStream {
+
+ protected StringBuffer fBuffer;
+
+ public ConsoleOutputStream() {
+ fBuffer= new StringBuffer();
+ }
+
+ public synchronized String readBuffer() {
+ String buf = fBuffer.toString();
+ fBuffer.setLength(0);
+ return buf;
+ }
+
+ @Override
+ public synchronized void write(int c) throws IOException {
+ byte ascii[] = new byte[1];
+ ascii[0] = (byte) c;
+ fBuffer.append(new String(ascii));
+ }
+
+ @Override
+ public synchronized void write(byte[] b, int off, int len) throws IOException {
+ fBuffer.append(new String(b, off, len));
+ }
+ }
+
+ private final static String PKG_UPDATE_MSG = "UpdatePackage.msg"; //$NON-NLS-1$
+ private String pkgName;
+
+ public PkgconfigErrorResolution(String pkgconfigRequirement) {
+ // Get the pkgconfig package name from the requirement message.
+ Pattern p = Pattern.compile("(.*?)[\\s,>,<,=].*");
+ Matcher m = p.matcher(pkgconfigRequirement);
+ if (m.matches()) {
+ pkgName = m.group(1);
+ }
+ }
+
+ public String getLabel() {
+ // TODO Auto-generated method stub
+ return AutotoolsPlugin.getFormattedString(PKG_UPDATE_MSG, new String[] {pkgName});
+ }
+
+ public void run(IMarker marker) {
+ // We have a pkgconfig library missing requirement for "pkg". Now, "pkg" does
+ // not necessarily match the actual system package needed to be updated (e.g.
+ // gtk+-2.0 is the name of the pkgconfig file for gtk2).
+ // We can try and find the "pkg.pc" file and look at what real package provides
+ // it. Updating that package will update the actual package in question as well
+ // as updating the pkgconfig info for "pkg".
+ // Note, that we won't have any pkgconfig path settings from the configure call
+ // so we can't handle the situation where the user doesn't have pkgconfig files
+ // stored in the usual place.
+ IPath pkgconfigPath =
+ new Path("/usr/lib/pkgconfig").append(pkgName+".pc"); //$NON-NLS-1$ //$NON-NLS-2$
+ // Get a launcher for the config command
+ CommandLauncher launcher = new CommandLauncher();
+ IPath commandPath = new Path("rpm"); //$NON-NLS-1$
+ String[] commandArgs =
+ new String[] {"-q", //$NON-NLS-1$
+ "--queryformat", //$NON-NLS-1$
+ "%{NAME}", //$NON-NLS-1$
+ "--whatprovides", //$NON-NLS-1$
+ pkgconfigPath.toOSString()};
+ try {
+ // Use CDT launcher to run rpm to query the package that provides
+ // the pkgconfig .pc file for the package in question.
+ ConsoleOutputStream output = new ConsoleOutputStream();
+ Process proc = launcher.execute(commandPath, commandArgs, null,
+ new Path("."), new NullProgressMonitor());
+ if (proc != null) {
+ try {
+ // Close the input of the process since we will never write to
+ // it
+ proc.getOutputStream().close();
+ } catch (IOException e) {
+ }
+ if (launcher.waitAndRead(output, output, new NullProgressMonitor())
+ != CommandLauncher.OK) {
+ AutotoolsPlugin.logErrorMessage(launcher.getErrorMessage());
+ } else {
+ String result = output.readBuffer();
+ if (!result.startsWith("error:")) //$NON-NLS-1$
+ System.out.println("need to execute update of " + result);
+ }
+ }
+
+ } catch (CoreException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } //$NON-NLS-1$
+ }
+
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/VersionComparator.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/VersionComparator.java
new file mode 100644
index 00000000000..8ca7c564a29
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/VersionComparator.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat, Inc.
+ * 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:
+ * Red Hat Incorporated - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.cdt.internal.autotools.core;
+
+public class VersionComparator {
+
+ /**
+ * Compare two version numbers if
+ * return -1 if v1 is older than v2 0 if they are the same and +1
+ * if v1 is newer than v2
+ *
+ * Version numbers are expected to be in the format x.y.z...
+ *
+ * So:
+ * VersionComparator.compare("1.0", "1.2") return -1
+ * VersionComparator.compare("1.5", "1.2") returns 1
+ * VersionComparator.compare("1.5.1", "1.5.5") returns -1
+ * VersionComparator.compare("1.5", "1.5.1") returns 1
+ * VersionComparator.compare("1.5.1", "1.5.1") returns 0
+ */
+ public static int compare(String v1, String v2) {
+ String[] v1digits = v1.split("\\.");
+ String[] v2digits = v2.split("\\.");
+
+ for (int i = 0; i < v1digits.length && i < v2digits.length; i++) {
+ int d1 = Integer.valueOf(v1digits[i]);
+ int d2 = Integer.valueOf(v2digits[i]);
+
+ if (d1 < d2)
+ return -1;
+
+ if (d1 > d2)
+ return 1;
+ }
+
+ // At this point all digits have the same value
+ // so the version with the longer string wins
+
+ if (v1digits.length < v2digits.length)
+ return -1;
+
+ if (v1digits.length > v2digits.length)
+ return 1;
+
+ return 0;
+ }
+
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AbstractConfigurationOption.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AbstractConfigurationOption.java
new file mode 100644
index 00000000000..b01d74f8df5
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AbstractConfigurationOption.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * Copyright (c) 2009, 2011 Red Hat Inc.
+ * 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:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.autotools.core.configure;
+
+import java.util.ArrayList;
+
+public abstract class AbstractConfigurationOption implements IConfigureOption {
+
+ protected String name;
+ private String msgName;
+ protected AutotoolsConfiguration cfg;
+
+ public AbstractConfigurationOption(String name, AutotoolsConfiguration cfg) {
+ this(name, name, cfg);
+ }
+
+ public AbstractConfigurationOption(String name, String msgName, AutotoolsConfiguration cfg) {
+ this.name = name;
+ this.msgName = msgName;
+ this.cfg = cfg;
+ }
+
+ public String getDescription() {
+ return ConfigureMessages.getConfigureDescription(msgName);
+ }
+
+ public String getToolTip() {
+ return ConfigureMessages.getConfigureTip(msgName);
+ }
+
+ public String getMsgName() {
+ return msgName;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public AutotoolsConfiguration getCfg() {
+ return cfg;
+ }
+
+ public ArrayList<String> getParameters() {
+ ArrayList<String> parameters = new ArrayList<String>();
+ if (isParmSet())
+ parameters.add(getParameter());
+ return parameters;
+ }
+
+ public String getParameterName() {
+ return "--" + getName();
+ }
+
+ public boolean isCategory() {
+ return false;
+ }
+
+ public boolean isFlag() {
+ return false;
+ }
+
+ public boolean isFlagValue() {
+ return false;
+ }
+
+ public boolean isMultiArg() {
+ return false;
+ }
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsConfiguration.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsConfiguration.java
new file mode 100644
index 00000000000..03b728d8993
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsConfiguration.java
@@ -0,0 +1,342 @@
+/*******************************************************************************
+ * Copyright (c) 2009, 2011 Red Hat Inc.
+ * 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:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.autotools.core.configure;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+
+public class AutotoolsConfiguration implements IAConfiguration {
+
+ public static class Option {
+ private String name;
+ private String transformedName;
+ private int type;
+ private String defaultValue;
+
+ public Option(String name, int type) {
+ this(name, name, type);
+ }
+
+ public Option(String name, String transformedName, int type) {
+ this.name = name;
+ this.transformedName = transformedName;
+ this.type = type;
+ }
+
+ public Option(String name, String transformedName, String defaultValue, int type) {
+ this.name = name;
+ this.transformedName = transformedName;
+ this.type = type;
+ this.defaultValue = defaultValue;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public int getType() {
+ return type;
+ }
+
+ public String getDefaultValue() {
+ return defaultValue;
+ }
+
+ public String getDescription() {
+ return ConfigureMessages.getConfigureDescription(transformedName);
+ }
+
+ public String getToolTip() {
+ return ConfigureMessages.getConfigureTip(transformedName);
+ }
+ }
+
+ // Configure options and categories. List below is ordered.
+ // All options following a category are children of that category
+ // in a tree view, up to the next category.
+ private static Option[] configOpts = new Option[] {
+ new Option("configure", IConfigureOption.TOOL), // $NON-NLS-1$
+ new Option("general", IConfigureOption.CATEGORY), // $NON-NLS-1$
+ new Option("configdir", IConfigureOption.INTERNAL), // $NON-NLS-1$
+ new Option("cache-file", "cache_file", IConfigureOption.STRING), // $NON-NLS-1$
+ new Option("help", IConfigureOption.BIN), // $NON-NLS-1$
+ new Option("no-create", "no_create", IConfigureOption.BIN), // $NON-NLS-1$
+ new Option("quiet", IConfigureOption.BIN), // $NON-NLS-1$
+ new Option("version", IConfigureOption.BIN), // $NON-NLS-1$
+ new Option("platform", IConfigureOption.CATEGORY), // $NON-NLS-1$
+ new Option("host", IConfigureOption.STRING), // $NON-NLS-1$
+ new Option("build", IConfigureOption.STRING), // $NON-NLS-1$
+ new Option("target", IConfigureOption.STRING), // $NON-NLS-1$
+ new Option("directories", IConfigureOption.CATEGORY), // $NON-NLS-1$
+ new Option("prefix", IConfigureOption.STRING), // $NON-NLS-1$
+ new Option("exec-prefix", "exec_prefix", IConfigureOption.STRING), // $NON-NLS-1$
+ new Option("libdir", IConfigureOption.STRING), // $NON-NLS-1$
+ new Option("bindir", IConfigureOption.STRING), // $NON-NLS-1$
+ new Option("sbindir", IConfigureOption.STRING), // $NON-NLS-1$
+ new Option("includedir", IConfigureOption.STRING), // $NON-NLS-1$
+ new Option("datadir", IConfigureOption.STRING), // $NON-NLS-1$
+ new Option("sysconfdir", IConfigureOption.STRING), // $NON-NLS-1$
+ new Option("infodir", IConfigureOption.STRING), // $NON-NLS-1$
+ new Option("mandir", IConfigureOption.STRING), // $NON-NLS-1$
+ new Option("srcdir", IConfigureOption.STRING), // $NON-NLS-1$
+ new Option("localstatedir", IConfigureOption.STRING), // $NON-NLS-1$
+ new Option("sharedstatedir", IConfigureOption.STRING), // $NON-NLS-1$
+ new Option("libexecdir", IConfigureOption.STRING), // $NON-NLS-1$
+ new Option("oldincludedir", IConfigureOption.STRING), // $NON-NLS-1$
+ new Option("filenames", IConfigureOption.CATEGORY), // $NON-NLS-1$
+ new Option("program-prefix", "program_prefix", IConfigureOption.STRING), // $NON-NLS-1$
+ new Option("program-suffix", "program_suffix", IConfigureOption.STRING), // $NON-NLS-1$
+ new Option("program-transform-name", "program_transform_name", IConfigureOption.STRING), // $NON-NLS-1$
+ new Option("features", IConfigureOption.CATEGORY), // $NON-NLS-1$
+ new Option("enable-maintainer-mode", "enable_maintainer_mode", IConfigureOption.BIN), // $NON-NLS-1$
+ new Option("CFLAGS", IConfigureOption.FLAG), // $NON-NLS-1$
+ new Option("cflags-debug", "cflags_debug", IConfigureOption.FLAGVALUE), // $NON-NLS-1$ // $NON-NLS-2$
+ new Option("cflags-gprof", "cflags_gprof", IConfigureOption.FLAGVALUE), // $NON-NLS-1$ // $NON-NLS-2$
+ new Option("cflags-gcov", "cflags_gcov", IConfigureOption.FLAGVALUE), // $NON-NLS-1$ // $NON-NLS-2$
+ new Option("user", IConfigureOption.MULTIARG), // $NON-NLS-1$
+ new Option("autogen", "autogen", "autogen.sh", IConfigureOption.TOOL), // $NON-NLS-1$
+ new Option("options", IConfigureOption.CATEGORY), // $NON-NLS-1$
+ new Option("autogenOpts", IConfigureOption.MULTIARG), // $NON-NLS-1$
+ };
+
+ private static Option[] toolList;
+
+ private String id;
+ private boolean isDirty;
+ private boolean isParmsDirty;
+ private Map<String, IConfigureOption> configOptions;
+ private ArrayList<String> configParms = new ArrayList<String>();
+
+ public AutotoolsConfiguration(String name) {
+ this(name, true);
+ }
+
+ private AutotoolsConfiguration(String name, boolean initialize) {
+ this.id = name;
+ configOptions = new HashMap<String, IConfigureOption>();
+ if (initialize)
+ initConfigOptions();
+ isParmsDirty = true;
+ }
+
+ private void initConfigOptions() {
+ // Put configure options in hash map. Ignore categories.
+ ArrayList<Option> tools = new ArrayList<Option>();
+ FlagConfigureOption lastFlag = null;
+ for (int i = 0; i < configOpts.length; ++i) {
+ Option opt = configOpts[i];
+ String defaultValue = opt.getDefaultValue();
+ int type = opt.type;
+ switch (type) {
+ case IConfigureOption.BIN:
+ BinConfigureOption b = new BinConfigureOption(opt.name, opt.transformedName, this);
+ if (defaultValue != null)
+ b.setValue(defaultValue);
+ configOptions.put(opt.name, b);
+ break;
+ case IConfigureOption.STRING:
+ StringConfigureOption s = new StringConfigureOption(opt.name, opt.transformedName, this);
+ if (defaultValue != null)
+ s.setValue(defaultValue);
+ configOptions.put(opt.name, s);
+ break;
+ case IConfigureOption.INTERNAL:
+ InternalConfigureOption io = new InternalConfigureOption(opt.name, opt.transformedName, this);
+ if (defaultValue != null)
+ io.setValue(defaultValue);
+ configOptions.put(opt.name, io);
+ break;
+ case IConfigureOption.MULTIARG:
+ MultiArgConfigureOption m = new MultiArgConfigureOption(opt.name, opt.transformedName, this);
+ if (defaultValue != null)
+ m.setValue(defaultValue);
+ configOptions.put(opt.name, m);
+ break;
+ case IConfigureOption.TOOL:
+ tools.add(opt);
+ ConfigureTool t = new ConfigureTool(opt.name, opt.transformedName, this);
+ if (defaultValue != null)
+ t.setValue(defaultValue);
+ configOptions.put(opt.name, t);
+ break;
+ case IConfigureOption.CATEGORY:
+ configOptions.put(opt.name, new ConfigureOptionCategory(opt.name));
+ break;
+ case IConfigureOption.FLAG:
+ FlagConfigureOption f = new FlagConfigureOption(opt.name, opt.transformedName, this);
+ if (defaultValue != null)
+ f.setValue(defaultValue);
+ lastFlag = f;
+ configOptions.put(opt.name, f);
+ break;
+ case IConfigureOption.FLAGVALUE:
+ FlagValueConfigureOption fv
+ = new FlagValueConfigureOption(opt.name, opt.transformedName,
+ this, ConfigureMessages.getParameter(opt.transformedName));
+ if (defaultValue != null)
+ fv.setValue(defaultValue);
+ lastFlag.addChild(opt.name);
+ configOptions.put(opt.name, fv);
+ break;
+ }
+ }
+ toolList = tools.toArray(new Option[tools.size()]);
+ }
+
+ public static Option[] getOptionList() {
+ return configOpts.clone();
+ }
+
+ public static Option[] getChildOptions(String name) {
+ ArrayList<Option> options = new ArrayList<Option>();
+ for (int i = 0; i < configOpts.length; ++i) {
+ Option opt = configOpts[i];
+ if (opt.getName().equals(name)) {
+ if (opt.getType() == IConfigureOption.CATEGORY) {
+ for (int j = i + 1; j < configOpts.length; ++j) {
+ Option o = configOpts[j];
+ int type = o.getType();
+ if (type != IConfigureOption.CATEGORY &&
+ type != IConfigureOption.TOOL)
+ options.add(o);
+ else
+ return options.toArray(new Option[options.size()]);
+ }
+ } else if (opt.getType() == IConfigureOption.TOOL) {
+ for (int j = i + 1; j < configOpts.length; ++j) {
+ Option o = configOpts[j];
+ int type = o.getType();
+ if (type == IConfigureOption.CATEGORY)
+ options.add(o);
+ else if (type == IConfigureOption.TOOL)
+ return options.toArray(new Option[options.size()]);
+ }
+ }
+ }
+ }
+ return options.toArray(new Option[options.size()]);
+ }
+
+ public static Option[] getTools() {
+ return toolList.clone();
+ }
+
+ public IConfigureOption getOption(String name) {
+ return configOptions.get(name);
+ }
+
+ public IAConfiguration copy() {
+ return copy(id);
+ }
+
+ public IAConfiguration copy(String newId) {
+ AutotoolsConfiguration cfg = new AutotoolsConfiguration(newId, false);
+ Collection<IConfigureOption> oldValues = configOptions.values();
+ for (Iterator<IConfigureOption> i = oldValues.iterator(); i.hasNext();) {
+ IConfigureOption opt = i.next();
+ cfg.configOptions.put(opt.getName(), opt.copy(cfg));
+ }
+ if (getId().equals(newId))
+ cfg.setDirty(isDirty()); // copying with same id, do not change dirty attribute
+ else
+ cfg.setDirty(true); // we are cloning with a new id, treat it as never built/dirty
+ return cfg;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public boolean isDirty() {
+ return isDirty;
+ }
+
+ public void setDirty(boolean value) {
+ isDirty = value;
+ if (isDirty)
+ isParmsDirty = true;
+ }
+
+ public Map<String, IConfigureOption> getOptions() {
+ return configOptions;
+ }
+
+ public String getToolParameters(String name) {
+ StringBuffer buf = new StringBuffer();
+ Option[] options = getChildOptions(name);
+ for (int i = 0; i < options.length; ++i) {
+ IConfigureOption option = getOption(options[i].getName());
+ if (option.getType() == IConfigureOption.CATEGORY) {
+ Option[] childOptions = getChildOptions(option.getName());
+ for (int j = 0; j < childOptions.length; ++j) {
+ IConfigureOption childOption = getOption(childOptions[j].getName());
+ String parameter = childOption.getParameter();
+ if (!parameter.equals(""))
+ buf.append(" " + parameter);
+ }
+ } else {
+ String parameter = option.getParameter();
+ if (!parameter.equals(""))
+ buf.append(" " + parameter);
+ }
+ }
+ return buf.toString();
+ }
+
+ public ArrayList<String> getToolArgs(String name) {
+ if (isParmsDirty) {
+ configParms = new ArrayList<String>();
+ Option[] options = getChildOptions(name);
+ for (int i = 0; i < options.length; ++i) {
+ IConfigureOption option = getOption(options[i].getName());
+ if (option.getType() == IConfigureOption.CATEGORY) {
+ Option[] childOptions = getChildOptions(option.getName());
+ for (int j = 0; j < childOptions.length; ++j) {
+ IConfigureOption childOption = getOption(childOptions[j].getName());
+ ArrayList<String> parameters = childOption.getParameters();
+ configParms.addAll(parameters);
+ }
+ } else {
+ ArrayList<String> parameters = option.getParameters();
+ configParms.addAll(parameters);
+ }
+ }
+ }
+ return configParms;
+ }
+
+ public void setOption(String name, String value) {
+ IConfigureOption option = configOptions.get(name);
+ if (option != null) {
+ if (!option.getValue().equals(value)) {
+ option.setValue(value);
+ setDirty(true);
+ }
+ }
+ }
+
+ public void setConfigToolDirectory(String configToolDirectory) {
+ setOption("configdir", configToolDirectory);
+ }
+
+ public String getConfigToolDirectory() {
+ IConfigureOption option = configOptions.get("configdir");
+ return option.getValue();
+ }
+
+ public void setDefaultOptions() {
+ initConfigOptions();
+ }
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsConfigurationManager.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsConfigurationManager.java
new file mode 100644
index 00000000000..2eac3af257a
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsConfigurationManager.java
@@ -0,0 +1,530 @@
+/*******************************************************************************
+ * Copyright (c) 2009, 2010, 2011 Red Hat Inc.
+ * 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:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.autotools.core.configure;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.eclipse.cdt.autotools.core.AutotoolsPlugin;
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
+import org.eclipse.cdt.core.settings.model.ICProjectDescription;
+import org.eclipse.cdt.core.settings.model.extension.CConfigurationData;
+import org.eclipse.cdt.internal.autotools.core.configure.AutotoolsConfiguration.Option;
+import org.eclipse.cdt.managedbuilder.core.BuildException;
+import org.eclipse.cdt.managedbuilder.core.IConfiguration;
+import org.eclipse.cdt.managedbuilder.core.IHoldsOptions;
+import org.eclipse.cdt.managedbuilder.core.IOption;
+import org.eclipse.cdt.managedbuilder.core.ITool;
+import org.eclipse.cdt.managedbuilder.core.IToolChain;
+import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IPath;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+public class AutotoolsConfigurationManager implements IResourceChangeListener {
+
+ public final static String CFG_FILE_NAME = ".autotools"; //$NON-NLS-1$
+ private final static String CFG_CANT_SAVE = "Configure.Error.NoProjectToSave"; //$NON-NLS-1$
+
+
+ private static AutotoolsConfigurationManager instance;
+
+ private boolean isSyncing;
+
+ private static Map<String, Map<String, IAConfiguration>> configs;
+ private static Map<String, Map<String, IAConfiguration>> tmpConfigs;
+
+ private AutotoolsConfigurationManager() {
+ configs = new HashMap<String, Map<String, IAConfiguration>>();
+ tmpConfigs = new HashMap<String, Map<String, IAConfiguration>>();
+ AutotoolsPlugin.getWorkspace().addResourceChangeListener(this);
+ }
+
+ public static AutotoolsConfigurationManager getInstance() {
+ if (instance == null) {
+ instance = new AutotoolsConfigurationManager();
+ }
+ return instance;
+ }
+
+ public IAConfiguration createDefaultConfiguration(IProject project, String id) {
+ IAConfiguration cfg = new AutotoolsConfiguration(id);
+ return cfg;
+ }
+
+ public IAConfiguration findCfg(IProject p, String id) {
+ Map<String, IAConfiguration> cfgs = getConfigurations(p);
+ return cfgs.get(id);
+ }
+
+ public IAConfiguration getConfiguration(IProject p, String cfgId) {
+ return getConfiguration(p, cfgId, true);
+ }
+
+ public IAConfiguration getConfiguration(IProject p, String cfgId, boolean persist) {
+ IAConfiguration cfg = findCfg(p, cfgId);
+ if (cfg == null) {
+ cfg = createDefaultConfiguration(p, cfgId);
+ if (persist) {
+ addConfiguration(p, cfg);
+ }
+ } else {
+ if (!persist) {
+ cfg = cfg.copy();
+ }
+ }
+ return cfg;
+ }
+
+
+ public boolean isConfigurationAlreadySaved(IProject project, ICConfigurationDescription cfgd) {
+ Map<String, IAConfiguration> cfgs = getSavedConfigs(project);
+ if (cfgs != null)
+ return cfgs.get(cfgd.getId()) != null;
+ return false;
+ }
+
+ public void addConfiguration(IProject project, IAConfiguration cfg) {
+ String projectName = project.getName();
+ Map<String, IAConfiguration> cfgs = getSavedConfigs(project);
+ if (cfgs == null) {
+ cfgs = new HashMap<String, IAConfiguration>();
+ configs.put(projectName, cfgs);
+ }
+ cfgs.put(cfg.getId(), cfg);
+ saveConfigs(project);
+ }
+
+ public boolean isSyncing() {
+ return isSyncing;
+ }
+
+ private void setSyncing(boolean value) {
+ isSyncing = value;
+ }
+
+ /**
+ * Synchronize the current set of configurations for the project with the
+ * Autotools saved configuration data. This is required when configuration
+ * management occurs outside of the Autotools Configure Settings page in the
+ * Property menu.
+ *
+ * @param project to synchronize configurations for
+ *
+ */
+ public void syncConfigurations(IProject project) {
+ setSyncing(true);
+ clearTmpConfigurations(project);
+ ICProjectDescription pd = CoreModel.getDefault().getProjectDescription(project);
+ ICConfigurationDescription[] cfgs = pd.getConfigurations();
+ Map <String, IAConfiguration> newCfgList = new HashMap<String, IAConfiguration>();
+ for (int i = 0; i < cfgs.length; ++i) {
+ cfgs[i].getConfigurationData();
+ IAConfiguration acfg = getTmpConfiguration(project, cfgs[i]);
+ newCfgList.put(cfgs[i].getId(), acfg);
+ }
+ setSyncing(false);
+ clearTmpConfigurations(project);
+ replaceProjectConfigurations(project, newCfgList);
+ }
+
+ public void replaceProjectConfigurations(IProject project, Map<String, IAConfiguration> cfgs) {
+ String projectName = project.getName();
+ configs.put(projectName, cfgs);
+ saveConfigs(project);
+ }
+
+ public void replaceProjectConfigurations(IProject project, Map<String, IAConfiguration> cfgs, ICConfigurationDescription[] cfgds) {
+ String projectName = project.getName();
+ configs.put(projectName, cfgs);
+ saveConfigs(project, cfgds);
+ }
+
+ private Map<String, IAConfiguration> getSavedConfigs(IProject project) {
+ String projectName = project.getName();
+ Map<String, IAConfiguration> list = configs.get(projectName);
+ if (list == null) {
+ try {
+ IPath fileLocation = project.getLocation().append(CFG_FILE_NAME);
+ File dirFile = fileLocation.toFile();
+ Map<String, IAConfiguration> cfgList = new HashMap<String, IAConfiguration>();
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ DocumentBuilder db = dbf.newDocumentBuilder();
+ if (dirFile.exists()) {
+ Document d = db.parse(dirFile);
+ Element e = d.getDocumentElement();
+ // Get the stored configuration data
+ NodeList cfgs = e.getElementsByTagName("configuration"); // $NON-NLS-1$
+ for (int x = 0; x < cfgs.getLength(); ++x) {
+ Node n = cfgs.item(x);
+ NamedNodeMap attrs = n.getAttributes();
+ // Originally we used the configuration name, but now we use
+ // the ConfigurationDescription id which is unique. Check for
+ // id first, but fall back to name for older .autotools files.
+ Node nameNode = attrs.getNamedItem("name"); // $NON-NLS-1$
+ Node cfgIdNode = attrs.getNamedItem("id"); // $NON-NLS-1$
+ String cfgId = null;
+ if (cfgIdNode != null)
+ cfgId = cfgIdNode.getNodeValue();
+ else if (nameNode != null) {
+ String cfgName = nameNode.getNodeValue();
+ ICConfigurationDescription cfgd =
+ CoreModel.getDefault().getProjectDescription(project).getConfigurationByName(cfgName);
+ if (cfgd != null)
+ cfgId = cfgd.getId();
+ else
+ continue; // have to punt, this doesn't map to real cfg
+ }
+ IAConfiguration cfg = new AutotoolsConfiguration(cfgId);
+ NodeList l = n.getChildNodes();
+ for (int y = 0; y < l.getLength(); ++y) {
+ Node child = l.item(y);
+ if (child.getNodeName().equals("option")) { // $NON-NLS-1$
+ NamedNodeMap optionAttrs = child.getAttributes();
+ Node id = optionAttrs.getNamedItem("id"); // $NON-NLS-1$
+ Node value = optionAttrs.getNamedItem("value"); // $NON-NLS-1$
+ if (id != null && value != null)
+ cfg.setOption(id.getNodeValue(), value.getNodeValue());
+ } else if (child.getNodeName().equals("flag")) { //$NON-NLS-1$
+ // read in flag values
+ NamedNodeMap optionAttrs = child.getAttributes();
+ Node id = optionAttrs.getNamedItem("id"); // $NON-NLS-1$
+ IConfigureOption opt = cfg.getOption(id.getNodeValue());
+ if (opt instanceof FlagConfigureOption) {
+ NodeList l2 = child.getChildNodes();
+ for (int z = 0; z < l2.getLength(); ++z) {
+ Node flagChild = l2.item(z);
+ if (flagChild.getNodeName().equals("flagvalue")) { //$NON-NLS-1$
+ NamedNodeMap optionAttrs2 = flagChild.getAttributes();
+ Node id2 = optionAttrs2.getNamedItem("id"); // $NON-NLS-1$
+ Node value = optionAttrs2.getNamedItem("value"); // $NON-NLS-1$
+ cfg.setOption(id2.getNodeValue(), value.getNodeValue());
+ }
+ }
+ }
+ }
+ }
+ cfg.setDirty(false);
+ cfgList.put(cfg.getId(), cfg);
+ }
+ if (cfgList.size() > 0) {
+ configs.put(projectName, cfgList);
+ list = cfgList;
+ }
+ }
+ } catch (ParserConfigurationException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (SAXException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ return list;
+ }
+
+ public IAConfiguration getTmpConfiguration(IProject p, ICConfigurationDescription cfgd) {
+ Map <String, IAConfiguration> list = getTmpConfigs(p);
+ IAConfiguration acfg = list.get(cfgd.getId());
+ if (acfg != null) {
+ return acfg;
+ }
+ IAConfiguration oldCfg = getConfiguration(p, cfgd.getId(), false);
+ list.put(cfgd.getId(), oldCfg);
+ return oldCfg;
+ }
+
+ /**
+ * Clone a configuration and put it on the tmp list if it is not already a saved configuration
+ * and not already on the tmp list.
+ *
+ * @param p project
+ * @param oldId the id of the old configuration to clone
+ * @param cfgd the configuration descriptor for the clone
+ * @return true if the configuration is already saved, false otherwise
+ */
+ public boolean cloneCfg(IProject p, String oldId, ICConfigurationDescription cfgd) {
+ if (isConfigurationAlreadySaved(p, cfgd))
+ return true;
+ Map <String, IAConfiguration> tmpList = getTmpConfigs(p);
+ String newId = cfgd.getId();
+ // Don't bother if the new configuration is already on the tmp list
+ IAConfiguration cfg = tmpList.get(newId);
+ if (cfg != null)
+ return false;
+ // Otherwise, try and find the old id to copy the configuration from
+ // or punt if not found
+ IAConfiguration oldCfg = null;
+ Map <String, IAConfiguration> savedList = getSavedConfigs(p);
+ if (savedList != null)
+ oldCfg = savedList.get(oldId);
+ if (oldCfg != null) {
+ IAConfiguration newCfg = oldCfg.copy(cfgd.getId());
+ tmpList.put(cfgd.getId(), newCfg);
+ // Check to see if the new configuration is already stored as part of the project description.
+ // If yes, it should already be saved. This can occur if the configuration was added as part of
+ // another CDT Property page and the Autotools Property page was never opened.
+ if (CoreModel.getDefault().getProjectDescription(p).getConfigurationById(newId) != null) {
+ addConfiguration(p, newCfg);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private Map<String, IAConfiguration> getTmpConfigs(IProject p) {
+ Map <String, IAConfiguration> tmpList = tmpConfigs.get(p.getName());
+ if (tmpList == null) {
+ tmpList = new HashMap<String, IAConfiguration>();
+ tmpConfigs.put(p.getName(), tmpList);
+ }
+ return tmpList;
+ }
+
+ public void clearTmpConfigurations(IProject p) {
+ tmpConfigs.remove(p.getName());
+ }
+
+ public void saveConfigs(IProject project) {
+ ICConfigurationDescription[] cfgds = CoreModel.getDefault().getProjectDescription(project).getConfigurations();
+ saveConfigs(project, cfgds);
+ }
+
+ private void syncNameField(ICConfigurationDescription cfgd) {
+ IConfiguration icfg = ManagedBuildManager.getConfigurationForDescription(cfgd);
+ String id = cfgd.getId();
+ if (icfg != null) {
+ IToolChain toolchain = icfg.getToolChain();
+ ITool[] tools = toolchain.getTools();
+ for (int j = 0; j < tools.length; ++j) {
+ ITool tool = tools[j];
+ if (tool.getName().equals("configure")) { //$NON-NLS-1$
+ IOption option =
+ tool.getOptionBySuperClassId("org.eclipse.linuxtools.cdt.autotools.core.option.configure.name"); // $NON-NLS-1$
+ IHoldsOptions h = (IHoldsOptions)tool;
+ try {
+ IOption optionToSet = h.getOptionToSet(option, false);
+ optionToSet.setValue(id);
+ } catch (BuildException e) {
+ }
+ }
+ }
+ }
+ }
+
+ private String xmlEscape(String value) {
+ value = value.replaceAll("\\&", "&amp;"); //$NON-NLS-1$ //$NON-NLS-2$
+ value = value.replaceAll("\\\"", "&quot;"); //$NON-NLS-1$ //$NON-NLS-2$
+ value = value.replaceAll("\\\'", "&apos;"); //$NON-NLS-1$ //$NON-NLS-2$
+ value = value.replaceAll("\\<", "&lt;"); //$NON-NLS-1$ //$NON-NLS-2$
+ value = value.replaceAll("\\>", "&gt;"); //$NON-NLS-1$ //$NON-NLS-2$
+ return value;
+ }
+
+ private void saveConfigs(IProject project, ICConfigurationDescription[] cfgds) {
+ try {
+ String projectName = project.getName();
+ IPath output = project.getLocation().append(CFG_FILE_NAME);
+ File f = output.toFile();
+ if (!f.exists())
+ f.createNewFile();
+ if (f.exists()) {
+ PrintWriter p = new PrintWriter(new BufferedWriter(new FileWriter(f)));
+ Map<String, IAConfiguration> cfgs = configs.get(projectName);
+ p.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); //$NON-NLS-1$
+ p.println("<configurations>"); // $NON-NLS-1$
+ Option[] optionList = AutotoolsConfiguration.getOptionList();
+ // Before saving, force any cloning to occur via the option value handler.
+ setSyncing(true);
+ for (int i = 0; i < cfgds.length; ++i) {
+ @SuppressWarnings("unused")
+ CConfigurationData data = cfgds[i].getConfigurationData();
+ }
+ setSyncing(false);
+ for (int i = 0; i < cfgds.length; ++i) {
+ ICConfigurationDescription cfgd = cfgds[i];
+ String id = cfgd.getId();
+ IAConfiguration cfg = cfgs.get(id);
+ if (cfg == null) {
+ cfg = createDefaultConfiguration(project, id);
+ }
+ p.println("<configuration id=\"" + cfg.getId() + "\">"); //$NON-NLS-1$ //$NON-NLS-2$
+ for (int j = 0; j < optionList.length; ++j) {
+ Option option = optionList[j];
+ IConfigureOption opt = cfg.getOption(option.getName());
+ if (opt.isFlag()) {
+ p.println("<flag id=\"" + option.getName() + "\">"); //$NON-NLS-1$ //$NON-NLS-2$
+ FlagConfigureOption fco = (FlagConfigureOption)opt;
+ ArrayList<String> children = fco.getChildren();
+ for (int k = 0; k < children.size(); ++k) {
+ String childName = children.get(k);
+ IConfigureOption childopt = cfg.getOption(childName);
+ p.println("<flagvalue id=\"" + childopt.getName() + "\" value=\"" + xmlEscape(childopt.getValue()) + "\"/>"); //$NON-NLS-1$ //$NON-NLS-2$ // $NON-NLS-3$
+ }
+ p.println("</flag>"); //$NON-NLS-1$
+ }
+ else if (!opt.isCategory() && !opt.isFlagValue())
+ p.println("<option id=\"" + option.getName() + "\" value=\"" + xmlEscape(opt.getValue()) + "\"/>"); //$NON-NLS-1$ //$NON-NLS-2$ // $NON-NLS-3$
+ }
+ p.println("</configuration>"); //$NON-NLS-1$
+ // Sync name field as this configuration is now officially saved
+ syncNameField(cfgd);
+ }
+ p.println("</configurations>");
+ p.close();
+ }
+ } catch (IOException e) {
+ AutotoolsPlugin.log(e);
+ }
+ }
+
+ // Perform apply of configuration changes. This rewrites out the current known list of configurations
+ // with any changes currently that have been made to them. If a configuration has been renamed, but this
+ // has not yet been confirmed by the end-user, then only the changes to the configuration are made. The
+ // name currently remains the same in the output file.
+ public void applyConfigs(String projectName, ICConfigurationDescription[] cfgds) {
+ try {
+ IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+ IResource res = (IProject)root.findMember(projectName, false);
+ if (res == null || res.getType() != IResource.PROJECT) {
+ AutotoolsPlugin.logErrorMessage(ConfigureMessages.getFormattedString(CFG_CANT_SAVE,
+ new String[]{projectName}));
+ return;
+ }
+ IProject project = (IProject)res;
+ IPath output = project.getLocation().append(CFG_FILE_NAME);
+ File f = output.toFile();
+ if (!f.exists())
+ f.createNewFile();
+ if (f.exists()) {
+ PrintWriter p = new PrintWriter(new BufferedWriter(new FileWriter(f)));
+ try {
+ Map<String, IAConfiguration> cfgs = getSavedConfigs(project);
+ if (cfgs == null)
+ return;
+ p.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); //$NON-NLS-1$
+ p.println("<configurations>"); // $NON-NLS-1$
+ Option[] optionList = AutotoolsConfiguration.getOptionList();
+ HashSet<String> savedIds = new HashSet<String>();
+ setSyncing(true);
+ for (int x = 0; x < cfgds.length; ++x) {
+ ICConfigurationDescription cfgd = cfgds[x];
+ @SuppressWarnings("unused")
+ CConfigurationData data = cfgd.getConfigurationData();
+ String id = cfgd.getId();
+ savedIds.add(id);
+ IAConfiguration cfg = getTmpConfiguration(project, cfgd);
+ cfgs.put(id, cfg); // add to list in case we have a new configuration not yet added to Project Description
+ p.println("<configuration id=\"" + id + "\">"); //$NON-NLS-1$ //$NON-NLS-2$
+ for (int j = 0; j < optionList.length; ++j) {
+ Option option = optionList[j];
+ IConfigureOption opt = cfg.getOption(option.getName());
+ if (!opt.isCategory())
+ p.println("<option id=\"" + option.getName() + "\" value=\"" + opt.getValue() + "\"/>"); //$NON-NLS-1$ //$NON-NLS-2$ // $NON-NLS-3$
+ }
+ p.println("</configuration>"); //$NON-NLS-1$
+ syncNameField(cfgd);
+ }
+ setSyncing(false);
+
+ // Put all the remaining configurations already saved back into the file.
+ // These represent deleted configurations, but confirmation has not occurred.
+ for (Iterator<String> i = cfgs.keySet().iterator(); i.hasNext(); ) {
+ String id = i.next();
+ // A remaining id won't appear in our savedIds list.
+ if (!savedIds.contains(id)) {
+ IAConfiguration cfg = cfgs.get(id);
+ p.println("<configuration id=\"" + id + "\">"); //$NON-NLS-1$ //$NON-NLS-2$
+ for (int j = 0; j < optionList.length; ++j) {
+ Option option = optionList[j];
+ IConfigureOption opt = cfg.getOption(option.getName());
+ if (!opt.isCategory())
+ p.println("<option id=\"" + option.getName() + "\" value=\"" + opt.getValue() + "\"/>"); //$NON-NLS-1$ //$NON-NLS-2$ // $NON-NLS-3$
+ }
+ p.println("</configuration>"); //$NON-NLS-1$
+ }
+ }
+ p.println("</configurations>");
+ } finally {
+ p.close();
+ }
+ }
+ } catch (IOException e) {
+ AutotoolsPlugin.log(e);
+ }
+ }
+
+ public Map<String, IAConfiguration> getConfigurations(IProject project) {
+ Map<String, IAConfiguration> list = getSavedConfigs(project);
+ if (list == null) {
+ list = new HashMap<String, IAConfiguration>();
+ configs.put(project.getName(), list);
+ }
+ return list;
+ }
+
+ public void resourceChanged(IResourceChangeEvent event) {
+ IResource res = event.getResource();
+ if (!(res instanceof IProject))
+ return;
+ String name = res.getName();
+ IResourceDelta delta = event.getDelta();
+ if (delta == null)
+ return;
+ int kind = delta.getKind();
+ if (configs.containsKey(name)) {
+ if (kind == IResourceDelta.REMOVED) {
+ configs.remove(name);
+ tmpConfigs.remove(name);
+ } else if (kind == IResourceDelta.CHANGED) {
+ int flags = delta.getFlags();
+ if ((flags & IResourceDelta.MOVED_TO) != 0) {
+ IPath path = delta.getMovedToPath();
+ Map<String, IAConfiguration> cfgs = configs.get(name);
+ String newName = path.lastSegment();
+ configs.remove(name);
+ configs.put(newName, cfgs);
+ Map<String, IAConfiguration> tmpcfgs = tmpConfigs.get(name);
+ tmpConfigs.remove(name);
+ tmpConfigs.put(newName, tmpcfgs);
+ }
+ }
+ }
+ }
+
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsOptionValueHandler.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsOptionValueHandler.java
new file mode 100644
index 00000000000..fc8e793a3eb
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsOptionValueHandler.java
@@ -0,0 +1,123 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Red Hat Inc..
+ * 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:
+ * Red Hat Incorporated - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.autotools.core.configure;
+
+import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
+import org.eclipse.cdt.internal.autotools.core.AutotoolsPropertyConstants;
+import org.eclipse.cdt.managedbuilder.core.BuildException;
+import org.eclipse.cdt.managedbuilder.core.IBuildObject;
+import org.eclipse.cdt.managedbuilder.core.IBuilder;
+import org.eclipse.cdt.managedbuilder.core.IConfiguration;
+import org.eclipse.cdt.managedbuilder.core.IHoldsOptions;
+import org.eclipse.cdt.managedbuilder.core.IManagedOptionValueHandler;
+import org.eclipse.cdt.managedbuilder.core.IOption;
+import org.eclipse.cdt.managedbuilder.core.IOptionApplicability;
+import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
+import org.eclipse.cdt.managedbuilder.core.ManagedOptionValueHandler;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+
+public class AutotoolsOptionValueHandler extends ManagedOptionValueHandler
+ implements IOptionApplicability {
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IManagedOptionValueHandler#handleValue(IConfiguration,IToolChain,IOption,String,int)
+ */
+
+ public final static String DEFAULT_BUILD_DIR = "build"; //$NON-NLS-1$
+ public final static String CONFIGURE_TOOL_ID = "org.eclipse.linuxtools.cdt.autotools.core.gnu.toolchain.tool.configure"; //$NON-NLS-1$
+ public final static String BUILD_DIR_OPTION_ID = "org.eclipse.linuxtools.cdt.autotools.core.option.configure.builddir"; //$NON-NLS-1$
+ public final static String BUILD_DIR_APPLY = "BuildDir.apply"; //$NON-NLS-1$
+ public final static String BUILD_DIR_DEFAULT_QUESTION = "BuildDir.default"; //$NON-NLS-1$
+ public final static String BUILD_DIR_YES = "BuildDir.yes"; //$NON-NLS-1$
+ public final static String BUILD_DIR_NO = "BuildDir.no"; //$NON-NLS-1$
+
+ //FIXME: Use holder to set option value, not the "option" parameter
+ public boolean handleValue(IBuildObject buildObject,
+ IHoldsOptions holder,
+ IOption option,
+ String extraArgument, int event)
+ {
+ // Get the current value of the build dir option.
+ String value = (String)option.getValue();
+
+ if (buildObject instanceof IConfiguration &&
+ (event == IManagedOptionValueHandler.EVENT_OPEN)) {
+// SortedSet<Integer> nums = new TreeSet<Integer>();
+ IConfiguration configuration = (IConfiguration)buildObject;
+ ICConfigurationDescription cfgd = ManagedBuildManager.getDescriptionForConfiguration(configuration);
+ if (option.getName().equals("Name") && cfgd != null) {
+ String cfgId = cfgd.getId();
+ if (!value.equals("") && !value.equals(cfgId)) {
+ // we have a cloned configuration and we know that the
+ // clonee's name is the value of the option
+ IProject project = (IProject)configuration.getManagedProject().getOwner();
+ String autoName = null;
+ String autoNameTemplate = null;
+ // Check if we are supposed to automatically name the build directory for any
+ // new configuration. If yes, generate a build directory under the project using
+ // the configuration name which must be unique.
+ try {
+ autoName = project.getPersistentProperty(AutotoolsPropertyConstants.AUTO_BUILD_NAME);
+ } catch (CoreException e) {
+ // ignore
+ }
+ if (autoName == null || autoName.equals(AutotoolsPropertyConstants.TRUE)) {
+ autoNameTemplate = "${workspace_loc:/" + project.getName() + // $NON-NLS-1$
+ "}/build-" + fixName(configuration.getName()); // $NON-NLS-1$
+ IBuilder cfgBuilder = configuration.getEditableBuilder();
+ cfgBuilder.setBuildPath(autoNameTemplate);
+ }
+ // Clone old configuration to tmp configuration list
+ boolean isSaved = AutotoolsConfigurationManager.getInstance().cloneCfg(project, value, cfgd);
+ // Check to see if we should patch up the name option. If we aren't synchronizing
+ // configurations or the configuration isn't already saved, we leave the name field alone
+ // so we will trigger this again when the clone will get used.
+ if (!isSaved && !AutotoolsConfigurationManager.getInstance().isSyncing()) {
+ return true;
+ }
+ }
+ try {
+ IOption optionToSet = holder.getOptionToSet(option, false);
+ optionToSet.setValue(cfgId);
+ } catch (BuildException e) {
+ return false;
+ }
+ }
+ }
+
+ // The event was not handled, thus return false
+ return true;
+ }
+
+ private String fixName(String cfgName) {
+ // Replace whitespace with underscores.
+ return cfgName.replaceAll("\\s", "_");
+ }
+
+ // IOptionApplicability methods
+
+ public boolean isOptionEnabled(IBuildObject configuration,
+ IHoldsOptions holder, IOption option) {
+ return true;
+ }
+
+ public boolean isOptionUsedInCommandLine(IBuildObject configuration,
+ IHoldsOptions holder, IOption option) {
+ return false;
+ }
+
+ public boolean isOptionVisible(IBuildObject configuration,
+ IHoldsOptions holder, IOption option) {
+ return true;
+ }
+
+
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/BinConfigureOption.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/BinConfigureOption.java
new file mode 100644
index 00000000000..b71e48ff282
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/BinConfigureOption.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Red Hat Inc.
+ * 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:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.autotools.core.configure;
+
+public class BinConfigureOption extends AbstractConfigurationOption {
+
+ private boolean value;
+
+ public BinConfigureOption(String name, AutotoolsConfiguration cfg) {
+ super(name, cfg);
+ }
+
+ public BinConfigureOption(String name, String msgName, AutotoolsConfiguration cfg) {
+ super(name, msgName, cfg);
+ }
+
+ private BinConfigureOption(String name, AutotoolsConfiguration cfg, boolean value) {
+ super(name, cfg);
+ this.value = value;
+ }
+
+ public boolean isParmSet() {
+ return value;
+ }
+
+ public String getParameter() {
+ if (isParmSet())
+ return getParameterName();
+ else
+ return ""; // $NON-NLS-1$
+ }
+
+ public String getValue() {
+ return Boolean.toString(value);
+ }
+
+ public void setValue(String value) {
+ boolean oldValue = this.value;
+ if (value.equals("true")) // $NON-NLS-1$
+ this.value = true;
+ else
+ this.value = false;
+ if (this.value != oldValue)
+ cfg.setDirty(true);
+ }
+
+ public IConfigureOption copy(AutotoolsConfiguration config) {
+ return new BinConfigureOption(name, config, value);
+ }
+
+ public int getType() {
+ return BIN;
+ }
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/ConfigureMessages.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/ConfigureMessages.java
new file mode 100644
index 00000000000..3d4b3041177
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/ConfigureMessages.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007, 2009, 2011 Red Hat Inc..
+ * 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:
+ * Red Hat Incorporated - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.autotools.core.configure;
+
+import java.text.MessageFormat;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+public class ConfigureMessages {
+ private static final String BUNDLE_NAME = ConfigureMessages.class.getName();
+
+ private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
+ .getBundle(BUNDLE_NAME);
+
+ private ConfigureMessages() {
+ }
+
+ public static String getConfigureDescription(String name) {
+ return getString("Option.configure." + name); //$NON-NLS-11$
+ }
+
+ public static String getConfigureTip(String name) {
+ return getString("Option.configure." + name + ".tip"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ public static String getParameter(String name) {
+ return getString("Option.configure." + name + ".parm"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ /**
+ * Returns the string from the resource bundle,
+ * or 'key' if not found.
+ *
+ * @param key the message key
+ * @return the resource bundle message
+ */
+ public static String getString(String key) {
+ try {
+ return RESOURCE_BUNDLE.getString(key);
+ } catch (MissingResourceException e) {
+ return '!' + key + '!';
+ }
+ }
+
+ /**
+ * Returns the formatted string from the resource bundle,
+ * or 'key' if not found.
+ *
+ * @param key the message key
+ * @param args an array of substituition strings
+ * @return the resource bundle message
+ */
+ public static String getFormattedString(String key, String[] args) {
+ return MessageFormat.format(getString(key), (Object[])args);
+ }
+
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/ConfigureMessages.properties b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/ConfigureMessages.properties
new file mode 100644
index 00000000000..0823b6ca45a
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/ConfigureMessages.properties
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ * Copyright (c) 2009, 2011 Red Hat, Inc.
+ * 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:
+ * Red Hat Incorporated - initial API and implementation
+ *******************************************************************************/
+Option.configure.configure=configure
+Option.configure.general=General
+Option.configure.builddir=Build directory
+Option.configure.builddir.tip=Subdirectory off of project where build will occur
+Option.configure.configdir=Configure tool directory
+Option.configure.configdir.tip=Subdirectory off of project where configure script resides
+Option.configure.cache_file=Name of cache file (--cache-file)
+Option.configure.cache_file.tip=Specify the name of the configuration cache file [config.cache]
+Option.configure.no_create=Turn off file creation <not advised> (--no-create)
+Option.configure.no_create.tip=This tells configuration not to generate the output files as part of configuration
+Option.configure.quiet=Turn off checking messages (--quiet)
+Option.configure.quiet.tip=This turns off "checking ..." style messages from the configuration console output
+Option.configure.help=Display help contents (--help)
+Option.configure.help.tip=Ask configuration file to display its help documentation
+Option.configure.version=Display version of autotools used (--version)
+Option.configure.version.tip=This outputs the version of the Autotools used to create the configuration files
+
+Option.configure.platform=Platform specifiers
+Option.configure.host=Host platform (--host)
+Option.configure.host.tip=Platform that project will run on
+Option.configure.target=Target platform (--target)
+Option.configure.target.tip=Platform that project will target output for
+Option.configure.build=Build platform (--build)
+Option.configure.build.tip=Platform where project is being built
+
+Option.configure.directories=Directory specifiers
+Option.configure.prefix=Arch-independent install directory (--prefix)
+Option.configure.prefix.tip=Place where architecture-independent files are installed [/usr/local]
+Option.configure.exec_prefix=Arch-dependent install directory (--exec-prefix)
+Option.configure.exec_prefix.tip=Place where architecture-dependent files are installed [PREFIX]
+Option.configure.libdir=Object code library directory (--libdir)
+Option.configure.libdir.tip=Place where object code libraries are installed [EPREFIX/lib]
+Option.configure.bindir=User executable directory (--bindir)
+Option.configure.bindir.tip=Place where binary executables are installed [EPREFIX/bin]
+Option.configure.sbindir=System admin executable directory (--sbindir)
+Option.configure.sbindir.tip=Place where system admin executables are installed [EPREFIX/sbin]
+Option.configure.includedir=C Header file directory (--includdir)
+Option.configure.includedir.tip=Place where header files will be installed [PREFIX/include]
+Option.configure.datadir=Read-only arch-independent data (--datadir)
+Option.configure.datadir.tip=Place where read-only architecture-independent data is installed [PREFIX/share]
+Option.configure.sysconfdir=Read-only single-machine data directory (--sysconfdir)
+Option.configure.sysconfdir.tip=Place where read-only single-machine data is stored [PREFIX/etc]
+Option.configure.infodir=Info file directory (--infodir)
+Option.configure.infodir.tip=Place where info files are installed [PREFIX/info]
+Option.configure.mandir=Man file documentation directory (--mandir)
+Option.configure.mandir.tip=Place where man file documentation is installed [PREFIX/man]
+Option.configure.srcdir=Sources directory (--srcdir)
+Option.configure.srcdir.tip=Place where configure can find sources [configure directory or ..]
+Option.configure.localstatedir=Single-machine data directory (--localstatedir)
+Option.configure.localstatedir.tip=Place where modifiable single-machine data is installed [PREFIX/var]
+Option.configure.sharedstatedir=Arch-independent data directory (--sharedstatedir)
+Option.configure.sharedstatedir.tip=Place where modifiable architecture-independent data is installed [PREFIX/com}
+Option.configure.libexecdir=Program executable directory (--libexecdir)
+Option.configure.libexecdir.tip=Place where program executables will be installed [EPREFIX/libexec]
+Option.configure.oldincludedir=Non-gcc C header file directory (--oldincludedir)
+Option.configure.oldincludedir.tip=Place where non-gcc C header files are installed [/usr/include]
+
+Option.configure.filenames=File-name transformations
+Option.configure.program_prefix=Program prefix (--program-prefix)
+Option.configure.program_prefix.tip=Prepend PREFIX to the beginning of installed program names
+Option.configure.program_suffix=Program suffix (--program-suffix)
+Option.configure.program_suffix.tip=Append SUFFIX to the end of installed program names
+Option.configure.program_transform_name=Program name transform (--program-transform-name)
+Option.configure.program_transform_name.tip=A sed string used to transform installed program names
+
+Option.configure.features=Advanced
+Option.configure.enable_maintainer_mode=Enable maintainer mode (--enable-maintainer-mode)
+Option.configure.enable_maintainer_mode.tip=Specify this to have Makefiles generated with checks for Autotool configuration file changes
+Option.configure.user=Additional command-line options
+Option.configure.user.tip=Specify one or more configuration options (e.g. --enable-FEATURE, --disable-FEATURE, or --with-PACKAGE)
+
+Option.configure.cflags_debug=Debug (-g)
+Option.configure.cflags_debug.tip=Specify this to generate debugging info when building
+Option.configure.cflags_debug.parm=-g
+Option.configure.cflags_gprof=Gprof support (-pg)
+Option.configure.cflags_gprof.tip=Specify this to compile your executable so it will generate gprof data when run
+Option.configure.cflags_gprof.parm=-pg
+Option.configure.cflags_gcov=Gcov support (-fprofile-arcs -ftest-coverage)
+Option.configure.cflags_gcov.tip=Specify this to compile your executable so it will generate gcov coverage data when run
+Option.configure.cflags_gcov.parm=-fprofile-arcs -ftest-coverage
+
+Option.configure.autogen=autogen
+Option.configure.options=Options
+Option.configure.autogenOpts=Additional command-line options
+Option.configure.autogenOpts.tip=Specify any additional options required
+
+Tool.command=Command
+Tool.allopts=All Options
+
+Configure.Error.AlreadyExists="A configuration named {0} already exists"
+Configure.Error.NoProjectToSave="Project: {0} does not exist at time of saving configuration" \ No newline at end of file
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/ConfigureOptionCategory.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/ConfigureOptionCategory.java
new file mode 100644
index 00000000000..c53713b8354
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/ConfigureOptionCategory.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Red Hat Inc.
+ * 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:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.autotools.core.configure;
+
+import java.util.ArrayList;
+
+public class ConfigureOptionCategory implements IConfigureOption {
+
+ private String name;
+
+ public ConfigureOptionCategory(String name) {
+ this.name = name;
+ }
+
+ public IConfigureOption copy(AutotoolsConfiguration config) {
+ return new ConfigureOptionCategory(name);
+ }
+
+ public String getDescription() {
+ return ConfigureMessages.getConfigureDescription(name);
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getParameter() {
+ return "";
+ }
+
+ public ArrayList<String> getParameters() {
+ return new ArrayList<String>();
+ }
+
+ public String getToolTip() {
+ return "";
+ }
+
+ public String getValue() {
+ return "null";
+ }
+
+ public boolean isCategory() {
+ return true;
+ }
+
+ public boolean isParmSet() {
+ return false;
+ }
+
+ public void setValue(String value) {
+ // Do nothing..nothing to set
+ }
+
+ public boolean isMultiArg() {
+ return false;
+ }
+
+ public boolean isFlag() {
+ return false;
+ }
+
+ public boolean isFlagValue() {
+ return false;
+ }
+
+ public int getType() {
+ return CATEGORY;
+ }
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/ConfigureTool.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/ConfigureTool.java
new file mode 100644
index 00000000000..1ae34a8c074
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/ConfigureTool.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Red Hat Inc.
+ * 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:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.autotools.core.configure;
+
+import java.util.ArrayList;
+
+public class ConfigureTool extends AbstractConfigurationOption {
+
+ private String value;
+
+ public ConfigureTool(String name, AutotoolsConfiguration cfg) {
+ super(name, cfg);
+ this.value = name;
+ }
+
+ public ConfigureTool(String name, String transformedName, AutotoolsConfiguration cfg) {
+ super(name, transformedName, cfg);
+ this.value = name;
+ }
+
+ private ConfigureTool(String name, AutotoolsConfiguration cfg, String value) {
+ super(name, cfg);
+ this.value = value;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String newValue) {
+ if (!newValue.equals(value)) {
+ cfg.setDirty(true);
+ value = newValue;
+ }
+ }
+
+ public boolean isParmSet() {
+ return false;
+ }
+
+ public String getParameter() {
+ return ""; // $NON-NLS-1$
+ }
+
+ public ArrayList<String> getParameters() {
+ return new ArrayList<String>();
+ }
+
+ public IConfigureOption copy(AutotoolsConfiguration config) {
+ return new ConfigureTool(name, config, value);
+ }
+
+ public int getType() {
+ return TOOL;
+ }
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/FlagConfigureOption.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/FlagConfigureOption.java
new file mode 100644
index 00000000000..8f5080b265f
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/FlagConfigureOption.java
@@ -0,0 +1,106 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat Inc.
+ * 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:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.autotools.core.configure;
+
+import java.util.ArrayList;
+
+public class FlagConfigureOption extends AbstractConfigurationOption {
+
+ private String value;
+ private ArrayList<String> children =
+ new ArrayList<String>();
+
+ public FlagConfigureOption(String name, AutotoolsConfiguration cfg) {
+ super(name, cfg);
+ this.value = ""; // $NON-NLS-1$
+ }
+
+ public FlagConfigureOption(String name, String msgName, AutotoolsConfiguration cfg) {
+ super(name, msgName, cfg);
+ this.value = ""; // $NON-NLS-1$
+ }
+
+ @SuppressWarnings("unchecked")
+ private FlagConfigureOption(String name, AutotoolsConfiguration cfg,
+ String value, ArrayList<String> children) {
+ super(name, cfg);
+ this.value = value;
+ this.children = (ArrayList<String>)children.clone();
+ }
+
+ public String getParameter() {
+ StringBuffer parm = new StringBuffer(getName()+"=\""); //$NON-NLS-1$
+ boolean haveParm = false;
+ if (isParmSet()) {
+ String separator = "";
+ for (int i = 0; i < children.size(); ++i) {
+ String fvname = children.get(i);
+ IConfigureOption o = cfg.getOption(fvname);
+ if (o.isParmSet()) {
+ if (o instanceof IFlagConfigureValueOption) {
+ parm.append(separator + ((IFlagConfigureValueOption)o).getFlags()); //$NON-NLS-1$
+ separator = " ";
+ haveParm = true;
+ }
+ }
+ }
+ if (haveParm) {
+ parm.append("\""); //$NON-NLS-1$
+ return parm.toString();
+ }
+ }
+ return ""; //$NON-NLS-1$
+ }
+
+ public String getParameterName() {
+ return getName();
+ }
+
+ public boolean isParmSet() {
+ for (int i = 0; i < children.size(); ++i) {
+ String s = children.get(i);
+ IConfigureOption o = cfg.getOption(s);
+ if (o.isParmSet())
+ return true;
+ }
+ return false;
+ }
+
+ public void setValue(String value) {
+ // can't occur
+ }
+
+ public IConfigureOption copy(AutotoolsConfiguration config) {
+ FlagConfigureOption f = new FlagConfigureOption(name, config, value, children);
+ return f;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public int getType() {
+ return FLAG;
+ }
+
+ public boolean isFlag() {
+ return true;
+ }
+
+ public void addChild(String name) {
+ children.add(name);
+ }
+
+ public ArrayList<String> getChildren() {
+ return children;
+ }
+
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/FlagValueConfigureOption.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/FlagValueConfigureOption.java
new file mode 100644
index 00000000000..b5b99f7997c
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/FlagValueConfigureOption.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat Inc.
+ * 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:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.autotools.core.configure;
+
+import java.util.ArrayList;
+
+public class FlagValueConfigureOption extends BinConfigureOption implements IFlagConfigureValueOption {
+
+ private String flags;
+
+ public FlagValueConfigureOption(String name, String msgName, AutotoolsConfiguration cfg,
+ String flags) {
+ super(name, msgName, cfg);
+ this.flags = flags;
+ }
+
+ private FlagValueConfigureOption(String name, AutotoolsConfiguration cfg, String value,
+ String flags) {
+ super(name, cfg);
+ this.setValue(value);
+ this.flags = flags;
+ }
+
+ public ArrayList<String> getParameters() {
+ return new ArrayList<String>();
+ }
+
+ public String getParameter() {
+ return "";
+ }
+
+ public IConfigureOption copy(AutotoolsConfiguration cfg) {
+ return new FlagValueConfigureOption(name, cfg, getValue(), flags);
+ }
+
+ public int getType() {
+ return FLAGVALUE;
+ }
+
+ public String getFlags() {
+ return flags;
+ }
+
+ public boolean isFlagValue() {
+ return true;
+ }
+
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/IAConfiguration.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/IAConfiguration.java
new file mode 100644
index 00000000000..f71e1ee0abf
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/IAConfiguration.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Red Hat Inc.
+ * 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:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.autotools.core.configure;
+
+import java.util.ArrayList;
+import java.util.Map;
+
+public interface IAConfiguration {
+ public IConfigureOption getOption(String name);
+ public String getId();
+ public boolean isDirty();
+ public void setDirty(boolean value);
+ public Map<String, IConfigureOption> getOptions();
+ public String getToolParameters(String name);
+ public ArrayList<String> getToolArgs(String name);
+ public void setOption(String name, String value);
+ public void setConfigToolDirectory(String configToolDirectory);
+ public String getConfigToolDirectory();
+ public IAConfiguration copy();
+ public IAConfiguration copy(String id);
+ public void setDefaultOptions();
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/IConfigureOption.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/IConfigureOption.java
new file mode 100644
index 00000000000..51437fbcd30
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/IConfigureOption.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Red Hat Inc.
+ * 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:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.autotools.core.configure;
+
+import java.util.ArrayList;
+
+public interface IConfigureOption {
+
+ public final static int CATEGORY = 0;
+ public final static int BIN = 1;
+ public final static int STRING = 2;
+ public final static int INTERNAL = 3;
+ public final static int MULTIARG = 4;
+ public final static int TOOL = 5;
+ public final static int FLAG = 6;
+ public final static int FLAGVALUE = 7;
+ public String getName();
+ public String getParameter();
+ public ArrayList<String> getParameters();
+ public boolean isParmSet();
+ public String getDescription();
+ public String getToolTip();
+ public void setValue(String value);
+ public IConfigureOption copy(AutotoolsConfiguration cfg);
+ public String getValue();
+ public boolean isCategory();
+ public boolean isMultiArg();
+ public boolean isFlag();
+ public boolean isFlagValue();
+ public int getType();
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/IFlagConfigureValueOption.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/IFlagConfigureValueOption.java
new file mode 100644
index 00000000000..f74ebb3ff1a
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/IFlagConfigureValueOption.java
@@ -0,0 +1,17 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat Inc.
+ * 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:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.autotools.core.configure;
+
+public interface IFlagConfigureValueOption {
+
+ String getFlags();
+
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/InternalConfigureOption.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/InternalConfigureOption.java
new file mode 100644
index 00000000000..8b0e4c89657
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/InternalConfigureOption.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Red Hat Inc.
+ * 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:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.autotools.core.configure;
+
+public class InternalConfigureOption extends AbstractConfigurationOption {
+
+ private String value;
+
+ public InternalConfigureOption(String name, AutotoolsConfiguration cfg) {
+ super(name, cfg);
+ this.value = ""; // $NON-NLS-1$
+ }
+
+ public InternalConfigureOption(String name, String msgName, AutotoolsConfiguration cfg) {
+ super(name, msgName, cfg);
+ this.value = ""; // $NON-NLS-1$
+ }
+
+ private InternalConfigureOption(String name, AutotoolsConfiguration cfg,
+ String value) {
+ super(name, cfg);
+ this.value = value;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String newValue) {
+ if (!newValue.equals(value)) {
+ cfg.setDirty(true);
+ value = newValue;
+ }
+ }
+
+ public boolean isParmSet() {
+ return false;
+ }
+
+ public String getParameter() {
+ return "";
+ }
+
+ public IConfigureOption copy(AutotoolsConfiguration config) {
+ return new InternalConfigureOption(name, config, value);
+ }
+
+ public int getType() {
+ return INTERNAL;
+ }
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/MultiArgConfigureOption.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/MultiArgConfigureOption.java
new file mode 100644
index 00000000000..5006fcfd44d
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/MultiArgConfigureOption.java
@@ -0,0 +1,119 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Red Hat Inc.
+ * 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:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.autotools.core.configure;
+
+import java.util.ArrayList;
+
+
+public class MultiArgConfigureOption extends AbstractConfigurationOption {
+
+ private String value;
+ private ArrayList<String> userArgs;
+ private boolean isDirty;
+
+ public MultiArgConfigureOption(String name, AutotoolsConfiguration cfg) {
+ super(name, cfg);
+ this.value = ""; // $NON-NLS-1$
+ }
+
+ public MultiArgConfigureOption(String name, String msgName, AutotoolsConfiguration cfg) {
+ super(name, msgName, cfg);
+ this.value = ""; // $NON-NLS-1$
+ }
+
+ private MultiArgConfigureOption(String name, AutotoolsConfiguration cfg,
+ String value) {
+ super(name, cfg);
+ this.value = value;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String newValue) {
+ if (!newValue.equals(value)) {
+ cfg.setDirty(true);
+ isDirty = true;
+ value = newValue;
+ }
+ }
+
+ public boolean isParmSet() {
+ return value.length() > 0;
+ }
+
+ public boolean isMultiArg() {
+ return true;
+ }
+
+ public String getParameter() {
+ return value;
+ }
+
+ public ArrayList<String> getParameters() {
+ // May be multiple user-specified options in which case we
+ // need to split them up into individual options
+ if (!isDirty && userArgs != null)
+ return userArgs;
+ // Otherwise, we need to calculate userArgs
+ userArgs = new ArrayList<String>();
+ isDirty = false;
+ int lastArgIndex = -1;
+ int i = 0;
+ while (i < value.length()) {
+ char ch = value.charAt(i);
+ // Skip white-space
+ while (Character.isWhitespace(ch)) {
+ ++i;
+ if (i < value.length())
+ ch = value.charAt(i);
+ else // Otherwise we are done
+ return userArgs;
+ }
+
+ // Simplistic parser. We break up into strings delimited
+ // by blanks. If quotes are used, we ignore blanks within.
+ // If a backslash is used, we ignore the next character and
+ // pass it through.
+ lastArgIndex = i;
+ boolean inString = false;
+ while (i < value.length()) {
+ ch = value.charAt(i);
+ if (ch == '\\') // escape character
+ ++i; // skip over the next character
+ else if (ch == '\"') { // double quotes
+ inString = !inString;
+ } else if (Character.isWhitespace(ch)) {
+ if (!inString) {
+ userArgs.add(value.substring(lastArgIndex, i));
+ break;
+ }
+ }
+ ++i;
+ }
+ // Look for the case where we ran out of chars for the last
+ // token.
+ if (i >= value.length())
+ userArgs.add(value.substring(lastArgIndex));
+ ++i;
+ }
+ return userArgs;
+ }
+
+ public IConfigureOption copy(AutotoolsConfiguration config) {
+ return new MultiArgConfigureOption(name, config, value);
+ }
+
+ public int getType() {
+ return MULTIARG;
+ }
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/StringConfigureOption.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/StringConfigureOption.java
new file mode 100644
index 00000000000..065cdbf3146
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/StringConfigureOption.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Red Hat Inc.
+ * 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:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.autotools.core.configure;
+
+
+public class StringConfigureOption extends AbstractConfigurationOption {
+
+ private String value;
+
+ public StringConfigureOption(String name, AutotoolsConfiguration cfg) {
+ super(name, cfg);
+ this.value = ""; // $NON-NLS-1$
+ }
+
+ public StringConfigureOption(String name, String msgName, AutotoolsConfiguration cfg) {
+ super(name, msgName, cfg);
+ this.value = ""; // $NON-NLS-1$
+ }
+
+ private StringConfigureOption(String name, AutotoolsConfiguration cfg,
+ String value) {
+ super(name, cfg);
+ this.value = value;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String newValue) {
+ if (!newValue.equals(value)) {
+ cfg.setDirty(true);
+ value = newValue;
+ }
+ }
+
+ public boolean isParmSet() {
+ return value.length() > 0;
+ }
+
+ public String getParameter() {
+ if (isParmSet())
+ return getParameterName() + "=" + getValue(); // $NON-NLS-1$
+ return "";
+ }
+
+ public IConfigureOption copy(AutotoolsConfiguration config) {
+ return new StringConfigureOption(name, config, value);
+ }
+
+ public int getType() {
+ return STRING;
+ }
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/wizards/NewAutotoolsProject.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/wizards/NewAutotoolsProject.java
new file mode 100644
index 00000000000..bb7fc9eef3b
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/wizards/NewAutotoolsProject.java
@@ -0,0 +1,143 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2009 Symbian Software Limited 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:
+ * Bala Torati (Symbian) - Initial API and implementation
+ * Red Hat Inc - Modification to use with Autotools project
+ *******************************************************************************/
+package org.eclipse.cdt.internal.autotools.core.wizards;
+
+import java.util.List;
+
+import org.eclipse.cdt.autotools.core.AutotoolsNewProjectNature;
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
+import org.eclipse.cdt.core.templateengine.TemplateCore;
+import org.eclipse.cdt.core.templateengine.process.ProcessArgument;
+import org.eclipse.cdt.core.templateengine.process.ProcessFailureException;
+import org.eclipse.cdt.core.templateengine.process.ProcessRunner;
+import org.eclipse.cdt.core.templateengine.process.processes.Messages;
+import org.eclipse.cdt.internal.autotools.core.configure.AutotoolsConfigurationManager;
+import org.eclipse.cdt.managedbuilder.core.BuildException;
+import org.eclipse.cdt.managedbuilder.core.IConfiguration;
+import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
+import org.eclipse.cdt.managedbuilder.core.IOption;
+import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
+import org.eclipse.cdt.managedbuilder.templateengine.ProjectCreatedActions;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceDescription;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+
+
+/**
+ * Creates a new Project in the workspace.
+ */
+public class NewAutotoolsProject extends ProcessRunner {
+ protected boolean savedAutoBuildingValue;
+ protected ProjectCreatedActions pca;
+ protected IManagedBuildInfo info;
+
+ public NewAutotoolsProject() {
+ pca = new ProjectCreatedActions();
+ }
+
+ public void process(TemplateCore template, ProcessArgument[] args, String processId, IProgressMonitor monitor) throws ProcessFailureException {
+ String projectName = args[0].getSimpleValue();
+ String location = args[1].getSimpleValue();
+ String artifactExtension = args[2].getSimpleValue();
+ String isCProjectValue = args[3].getSimpleValue();
+ boolean isCProject = Boolean.valueOf(isCProjectValue).booleanValue();
+
+ IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
+
+ try {
+ if (!project.exists()) {
+ IWorkspace workspace = ResourcesPlugin.getWorkspace();
+ turnOffAutoBuild(workspace);
+
+ IPath locationPath = null;
+ if (location != null && !location.trim().equals("")) { //$NON-NLS-1$
+ locationPath = Path.fromPortableString(location);
+ }
+
+ List<?> configs = template.getTemplateInfo().getConfigurations();
+ if (configs == null || configs.size() == 0) {
+ throw new ProcessFailureException(Messages.getString("NewManagedProject.4") + projectName); //$NON-NLS-1$
+ }
+
+ pca.setProject(project);
+ pca.setProjectLocation(locationPath);
+ pca.setConfigs((IConfiguration[]) configs.toArray(new IConfiguration[configs.size()]));
+ pca.setArtifactExtension(artifactExtension);
+ info = pca.createProject(monitor, CCorePlugin.DEFAULT_INDEXER, isCProject);
+
+ AutotoolsNewProjectNature.addAutotoolsNature(project, monitor);
+
+ // For each IConfiguration, create a corresponding Autotools Configuration
+ IConfiguration[] cfgs = pca.getConfigs();
+ for (int i = 0; i < cfgs.length; ++i) {
+ IConfiguration cfg = cfgs[i];
+ ICConfigurationDescription cfgd = ManagedBuildManager.getDescriptionForConfiguration(cfg);
+ String id = cfgd.getId();
+ AutotoolsConfigurationManager.getInstance().getConfiguration(project, id, true);
+ }
+ AutotoolsConfigurationManager.getInstance().saveConfigs(project);
+
+ info.setValid(true);
+ ManagedBuildManager.saveBuildInfo(project, true);
+
+ restoreAutoBuild(workspace);
+
+ }
+ else {
+ AutotoolsNewProjectNature.addAutotoolsNature(project, monitor);
+ // throw new ProcessFailureException(Messages.getString("NewAutotoolsProject.5") + projectName); //$NON-NLS-1$
+ }
+ } catch (CoreException e) {
+ throw new ProcessFailureException(Messages.getString("NewManagedProject.3") + e.getMessage(), e); //$NON-NLS-1$
+ } catch (BuildException e) {
+ throw new ProcessFailureException(Messages.getString("NewManagedProject.3") + e.getMessage(), e); //$NON-NLS-1$
+ }
+ }
+
+ protected final void turnOffAutoBuild(IWorkspace workspace) throws CoreException {
+ IWorkspaceDescription workspaceDesc = workspace.getDescription();
+ savedAutoBuildingValue = workspaceDesc.isAutoBuilding();
+ workspaceDesc.setAutoBuilding(false);
+ workspace.setDescription(workspaceDesc);
+ }
+
+ protected final void restoreAutoBuild(IWorkspace workspace) throws CoreException {
+ IWorkspaceDescription workspaceDesc = workspace.getDescription();
+ workspaceDesc.setAutoBuilding(savedAutoBuildingValue);
+ workspace.setDescription(workspaceDesc);
+ }
+
+ /**
+ * setOptionValue
+ * @param config
+ * @param option
+ * @param val
+ * @throws BuildException
+ */
+ protected void setOptionValue(IConfiguration config, IOption option, String val) throws BuildException {
+ if (val != null) {
+ if (!option.isExtensionElement()) {
+ option.setValue(val);
+ } else {
+ IOption newOption = config.getToolChain().createOption(option, option.getId() + "." + ManagedBuildManager.getRandomNumber(), option.getName(), false); //$NON-NLS-1$
+ newOption.setValue(val);
+ }
+ }
+ }
+
+}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/wizards/SetAutotoolsStringOptionValue.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/wizards/SetAutotoolsStringOptionValue.java
new file mode 100644
index 00000000000..9fe1b63fc21
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/wizards/SetAutotoolsStringOptionValue.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2010 Symbian Software Limited 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:
+ * Bala Torati (Symbian) - Initial API and implementation
+ * Jon Beniston - Add support for Autotools
+ *******************************************************************************/
+
+package org.eclipse.cdt.internal.autotools.core.wizards;
+
+import org.eclipse.cdt.autotools.core.AutotoolsPlugin;
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
+import org.eclipse.cdt.core.templateengine.TemplateCore;
+import org.eclipse.cdt.core.templateengine.process.ProcessArgument;
+import org.eclipse.cdt.core.templateengine.process.ProcessFailureException;
+import org.eclipse.cdt.core.templateengine.process.ProcessRunner;
+import org.eclipse.cdt.internal.autotools.core.configure.AutotoolsConfigurationManager;
+import org.eclipse.cdt.internal.autotools.core.configure.IAConfiguration;
+import org.eclipse.cdt.managedbuilder.core.BuildException;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceDescription;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+
+public class SetAutotoolsStringOptionValue extends ProcessRunner {
+
+ public void process(TemplateCore template, ProcessArgument[] args, String processId, IProgressMonitor monitor) throws ProcessFailureException {
+ String projectName = args[0].getSimpleValue();
+ IProject projectHandle = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
+ IWorkspace workspace = ResourcesPlugin.getWorkspace();
+ IWorkspaceDescription workspaceDesc = workspace.getDescription();
+ boolean autoBuilding = workspaceDesc.isAutoBuilding();
+ workspaceDesc.setAutoBuilding(false);
+ try {
+ workspace.setDescription(workspaceDesc);
+ } catch (CoreException e) {//ignore
+ }
+
+ ProcessArgument[][] resourcePathObjects = args[1].getComplexArrayValue();
+ for(int i=0; i<resourcePathObjects.length; i++) {
+ ProcessArgument[] resourcePathObject = resourcePathObjects[i];
+ String id = resourcePathObject[0].getSimpleValue();
+ String value = resourcePathObject[1].getSimpleValue();
+ try {
+ setOptionValue(projectHandle, id, value);
+ } catch (BuildException e) {
+ throw new ProcessFailureException(AutotoolsPlugin.getFormattedString("SetAutotoolsStringOptionValue.error", new String[]{e.getMessage()}), e); //$NON-NLS-1$
+ }
+ }
+
+ workspaceDesc.setAutoBuilding(autoBuilding);
+ try {
+ workspace.setDescription(workspaceDesc);
+ } catch (CoreException e) {//ignore
+ }
+ }
+
+ private void setOptionValue(IProject projectHandle, String id, String
+ value) throws BuildException, ProcessFailureException {
+
+ AutotoolsConfigurationManager.getInstance().syncConfigurations(projectHandle);
+ ICConfigurationDescription[] cfgds =
+ CoreModel.getDefault().getProjectDescription(projectHandle).getConfigurations();
+ if (cfgds != null && cfgds.length >= 1) {
+ IAConfiguration iaConfig =
+ AutotoolsConfigurationManager.getInstance().getConfiguration(projectHandle,
+ cfgds[0].getId());
+ iaConfig.setOption(id, value);
+ }
+ }
+
+}

Back to the top