diff options
Diffstat (limited to 'build/org.eclipse.cdt.autotools.core')
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 ("Content"). Unless otherwise +indicated below, the Content is provided to you under the terms and conditions of the +Eclipse Public License Version 1.0 ("EPL"). 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, "Program" 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 ("Redistributor") 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("\\&", "&"); //$NON-NLS-1$ //$NON-NLS-2$ + value = value.replaceAll("\\\"", """); //$NON-NLS-1$ //$NON-NLS-2$ + value = value.replaceAll("\\\'", "'"); //$NON-NLS-1$ //$NON-NLS-2$ + value = value.replaceAll("\\<", "<"); //$NON-NLS-1$ //$NON-NLS-2$ + value = value.replaceAll("\\>", ">"); //$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); + } + } + +} |