From a27309d507066ad16c00e0e34843f3cebcb19c15 Mon Sep 17 00:00:00 2001 From: cartu38 opendev Date: Tue, 18 Apr 2017 09:06:25 +0100 Subject: [PATCH] Bug 514385: defaultValue-generation for a build-option Change-Id: I15550a75206baf906285d3fc7becb491cac13ffa Signed-off-by: cartu38 opendev --- .../META-INF/MANIFEST.MF | 2 +- .../schema/buildDefinitions.exsd | 10 ++++++ .../cdt/managedbuilder/core/IOption.java | 11 ++++++ .../core/IOptionDefaultValueGenerator.java | 34 +++++++++++++++++++ .../internal/core/FolderInfo.java | 6 ++++ .../managedbuilder/internal/core/Option.java | 33 ++++++++++++++++++ .../internal/core/OptionReference.java | 7 ++++ 7 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOptionDefaultValueGenerator.java diff --git a/build/org.eclipse.cdt.managedbuilder.core/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.managedbuilder.core/META-INF/MANIFEST.MF index 8a343cf2fcb..05b5bb3796b 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/META-INF/MANIFEST.MF +++ b/build/org.eclipse.cdt.managedbuilder.core/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.cdt.managedbuilder.core; singleton:=true -Bundle-Version: 8.4.0.qualifier +Bundle-Version: 8.5.0.qualifier Bundle-Activator: org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin Bundle-Vendor: %providerName Bundle-Localization: plugin diff --git a/build/org.eclipse.cdt.managedbuilder.core/schema/buildDefinitions.exsd b/build/org.eclipse.cdt.managedbuilder.core/schema/buildDefinitions.exsd index 5a0b969d40b..cc87103afef 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/schema/buildDefinitions.exsd +++ b/build/org.eclipse.cdt.managedbuilder.core/schema/buildDefinitions.exsd @@ -1363,6 +1363,16 @@ Additional special types exist to flag options of special relevance to the build + + + + Optional class which can be used to override the default value for an option. This class must implement the IOptionDefaultValueGenerator interface. If no generator is specified then the 'defaultValue' attribute is used to generate the option's default value. + + + + + + diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOption.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOption.java index fc659b185c0..9128abbf672 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOption.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOption.java @@ -11,6 +11,7 @@ * James Blackburn (Broadcom Corp.) * Petri Tuononen - [321040] Get Library Search Paths * Baltasar Belyavsky (Texas Instruments) - [279633] Custom command-generator support + * cartu38 opendev (STMicroelectronics) - [514385] Custom defaultValue-generator support *******************************************************************************/ package org.eclipse.cdt.managedbuilder.core; @@ -107,6 +108,10 @@ public interface IOption extends IBuildObject { public static final String TOOL_TIP = "tip"; //$NON-NLS-1$ public static final String CONTEXT_ID = "contextId"; //$NON-NLS-1$ public static final String DEFAULT_VALUE = "defaultValue"; //$NON-NLS-1$ + /** + * @since 8.5 + */ + public static final String DEFAULTVALUE_GENERATOR = "defaultValueGenerator"; //$NON-NLS-1$ public static final String ENUM_VALUE = "enumeratedOptionValue"; //$NON-NLS-1$ /** * @since 8.1 @@ -482,6 +487,12 @@ public interface IOption extends IBuildObject { */ public Object getDefaultValue(); + /** + * @return an instance of the class that overrides the default defaultValue generation for the option + * @since 8.5 + */ + public IOptionDefaultValueGenerator getDefaultValueGenerator(); + /** * @return the type for the value of the option. */ diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOptionDefaultValueGenerator.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOptionDefaultValueGenerator.java new file mode 100644 index 00000000000..e2efab913fe --- /dev/null +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOptionDefaultValueGenerator.java @@ -0,0 +1,34 @@ +/******************************************************************************* + * Copyright (c) 2017 STMicroelectronics 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: + * cartu38 opendev (STMicroelectronics) - [514385] Custom defaultValue-generator support + *******************************************************************************/ + +package org.eclipse.cdt.managedbuilder.core; + +/** + * This interface can be implemented by clients to contribute custom defaultValue-generator for a + * build-option. + * + * The custom defaultValue-generator class should be referenced in the