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