Add UI tests plugin for CMake. Fix a couple of bugs it found.

Also restructures the pom.xmls to put the modules in the top level
so we can order them to have the test plugins build after them.

Change-Id: I2f0e4ebd252791fb8844cdf0f635d574946207aa
diff --git a/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/GCCToolChain.java b/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/GCCToolChain.java
index f5cd6b2..3ee7de0 100644
--- a/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/GCCToolChain.java
+++ b/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/GCCToolChain.java
@@ -106,6 +106,8 @@
 		idBuilder.append(pathToToolChain.toString());
 		this.id = idBuilder.toString();
 
+		properties.put(ATTR_ARCH, arch);
+
 		IEnvironmentVariable pathVar = null;
 		if (envVars != null) {
 			for (IEnvironmentVariable envVar : envVars) {
diff --git a/build/org.eclipse.cdt.cmake.ui.tests/.classpath b/build/org.eclipse.cdt.cmake.ui.tests/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/build/org.eclipse.cdt.cmake.ui.tests/.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.8"/>
+	<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.cmake.ui.tests/.project b/build/org.eclipse.cdt.cmake.ui.tests/.project
new file mode 100644
index 0000000..737f5d0
--- /dev/null
+++ b/build/org.eclipse.cdt.cmake.ui.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.cdt.cmake.ui.tests</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>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/build/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/build/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/build/org.eclipse.cdt.cmake.ui.tests/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.cmake.ui.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..8ae8040
--- /dev/null
+++ b/build/org.eclipse.cdt.cmake.ui.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Tests
+Bundle-SymbolicName: org.eclipse.cdt.cmake.ui.tests
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: Eclipse CDT
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.swtbot.go;bundle-version="2.7.0",
+ org.eclipse.cdt.core;bundle-version="6.4.0",
+ org.eclipse.core.resources;bundle-version="3.12.0",
+ org.eclipse.cdt.cmake.core;bundle-version="1.2.0"
diff --git a/build/org.eclipse.cdt.cmake.ui.tests/build.properties b/build/org.eclipse.cdt.cmake.ui.tests/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/build/org.eclipse.cdt.cmake.ui.tests/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/build/org.eclipse.cdt.cmake.ui.tests/pom.xml b/build/org.eclipse.cdt.cmake.ui.tests/pom.xml
new file mode 100644
index 0000000..cb45872
--- /dev/null
+++ b/build/org.eclipse.cdt.cmake.ui.tests/pom.xml
@@ -0,0 +1,43 @@
+<?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>9.3.0-SNAPSHOT</version>
+		<relativePath>../../pom.xml</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.cdt.cmake.ui.tests</artifactId>
+	<version>1.0.0-SNAPSHOT</version>
+	<packaging>eclipse-test-plugin</packaging>
+	
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>target-platform-configuration</artifactId>
+				<version>${tycho-version}</version>
+				<configuration>
+					<dependency-resolution>
+						<extraRequirements>
+							<requirement>
+								<type>p2-installable-unit</type>
+								<id>org.eclipse.cdt.feature.group</id>
+								<versionRange>0.0.0</versionRange>
+							</requirement>
+							<requirement>
+								<type>p2-installable-unit</type>
+								<id>org.eclipse.cdt.cmake.feature.group</id>
+								<versionRange>0.0.0</versionRange>
+							</requirement>
+						</extraRequirements>
+					</dependency-resolution>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>
\ No newline at end of file
diff --git a/build/org.eclipse.cdt.cmake.ui.tests/src/org/eclipse/cdt/cmake/ui/internal/tests/AutomatedIntegrationSuite.java b/build/org.eclipse.cdt.cmake.ui.tests/src/org/eclipse/cdt/cmake/ui/internal/tests/AutomatedIntegrationSuite.java
new file mode 100644
index 0000000..698779e
--- /dev/null
+++ b/build/org.eclipse.cdt.cmake.ui.tests/src/org/eclipse/cdt/cmake/ui/internal/tests/AutomatedIntegrationSuite.java
@@ -0,0 +1,17 @@
+/*******************************************************************************
+ * Copyright (c) 2017 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
+ *******************************************************************************/
+package org.eclipse.cdt.cmake.ui.internal.tests;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ NewCMakeProjectTest.class })
+public class AutomatedIntegrationSuite {
+
+}
diff --git a/build/org.eclipse.cdt.cmake.ui.tests/src/org/eclipse/cdt/cmake/ui/internal/tests/NewCMakeProjectTest.java b/build/org.eclipse.cdt.cmake.ui.tests/src/org/eclipse/cdt/cmake/ui/internal/tests/NewCMakeProjectTest.java
new file mode 100644
index 0000000..0f425bf
--- /dev/null
+++ b/build/org.eclipse.cdt.cmake.ui.tests/src/org/eclipse/cdt/cmake/ui/internal/tests/NewCMakeProjectTest.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright (c) 2017 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
+ *******************************************************************************/
+package org.eclipse.cdt.cmake.ui.internal.tests;
+
+import static org.eclipse.swtbot.eclipse.finder.matchers.WidgetMatcherFactory.withPartName;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.cdt.cmake.core.CMakeNature;
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.index.IIndexManager;
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.model.ICProject;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
+import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
+import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTable;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTableItem;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+@SuppressWarnings("nls")
+public class NewCMakeProjectTest {
+
+	private static SWTWorkbenchBot bot;
+
+	@BeforeClass
+	public static void beforeClass() {
+		SWTBotPreferences.KEYBOARD_LAYOUT = "EN_US";
+		SWTBotPreferences.TIMEOUT = 10000;
+		bot = new SWTWorkbenchBot();
+	}
+
+	@Before
+	public void before() {
+		bot.resetWorkbench();
+
+		for (SWTBotView view : bot.views(withPartName("Welcome"))) {
+			view.close();
+		}
+	}
+
+	@Test(timeout = 60000)
+	public void createCMakeProject() throws Exception {
+		// open C++ perspective
+		if (!"C/C++".equals(bot.activePerspective().getLabel())) {
+			bot.perspectiveByLabel("C/C++").activate();
+		}
+
+		// Activate C/C++ wizard
+		bot.menu("File").menu("New").menu("C/C++ Project").click();
+		bot.shell("New C/C++ Project").activate();
+
+		// Double click on the template
+		SWTBotTable templateTable = bot.table();
+		bot.getDisplay().syncExec(() -> {
+			for (int i = 0; i < templateTable.rowCount(); ++i) {
+				SWTBotTableItem item = templateTable.getTableItem(i);
+				if ("CMake Project".equals(item.widget.getData(SWTBotPreferences.DEFAULT_KEY))) {
+					item.doubleClick();
+					break;
+				}
+			}
+		});
+
+		// Select the shell again since magic wizardry happened
+		bot.shell("New CMake Project").activate();
+
+		// Create the project
+		String projectName = "CMakeTestProj";
+		bot.textWithLabel("Project name:").setText(projectName);
+		bot.button("Finish").click();
+		
+		// Make sure it shows up in Project Explorer
+		bot.viewByPartName("Project Explorer").show();
+		bot.tree().getTreeItem(projectName);
+
+		// Make sure the project indexer completes. At that point we're stable.
+		IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
+		ICProject cproject = CoreModel.getDefault().create(project);
+		IIndexManager indexManager = CCorePlugin.getIndexManager();
+		while (!indexManager.isProjectContentSynced(cproject)) {
+			Thread.sleep(1000);
+		}
+
+		// Make sure it has the right nature
+		assertTrue(project.hasNature(CMakeNature.ID));
+	}
+
+}
diff --git a/build/org.eclipse.cdt.cmake.ui.tests/swtbot-test-plugin.properties b/build/org.eclipse.cdt.cmake.ui.tests/swtbot-test-plugin.properties
new file mode 100644
index 0000000..338038b
--- /dev/null
+++ b/build/org.eclipse.cdt.cmake.ui.tests/swtbot-test-plugin.properties
@@ -0,0 +1 @@
+# This file tells the Maven build to use the settings for SWTBot test plugins
diff --git a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakeBuildTab.java b/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakeBuildTab.java
index 7778df8..6cc9a02 100644
--- a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakeBuildTab.java
+++ b/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakeBuildTab.java
@@ -1,3 +1,10 @@
+/*******************************************************************************
+ * Copyright (c) 2017 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
+ *******************************************************************************/
 package org.eclipse.cdt.cmake.ui.internal;
 
 import java.util.HashMap;
diff --git a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/Messages.java b/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/Messages.java
index cffd11d..50df236 100644
--- a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/Messages.java
+++ b/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/Messages.java
@@ -1,3 +1,10 @@
+/*******************************************************************************
+ * Copyright (c) 2017 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
+ *******************************************************************************/
 package org.eclipse.cdt.cmake.ui.internal;
 
 import org.eclipse.osgi.util.NLS;
@@ -15,9 +22,13 @@
 	public static String CMakePropertyPage_FailedToStartCMakeGui_Title;
 	public static String CMakePropertyPage_LaunchCMakeGui;
 
+	public static String NewCMakeProjectWizard_Description;
+	public static String NewCMakeProjectWizard_PageTitle;
+	public static String NewCMakeProjectWizard_WindowTitle;
+
 	static {
 		// initialize resource bundle
-		NLS.initializeMessages(Messages.class.getName(), Messages.class);
+		NLS.initializeMessages("org.eclipse.cdt.cmake.ui.internal.messages", Messages.class); //$NON-NLS-1$
 	}
 
 	private Messages() {
diff --git a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/NewCMakeProjectWizard.java b/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/NewCMakeProjectWizard.java
index ad732e9..39f9996 100644
--- a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/NewCMakeProjectWizard.java
+++ b/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/NewCMakeProjectWizard.java
@@ -9,6 +9,7 @@
 
 import org.eclipse.cdt.cmake.core.CMakeProjectGenerator;
 import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.wizard.IWizardContainer;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.tools.templates.core.IGenerator;
 import org.eclipse.tools.templates.ui.TemplateWizard;
@@ -19,6 +20,12 @@
 	private WizardNewProjectCreationPage mainPage;
 
 	@Override
+	public void setContainer(IWizardContainer wizardContainer) {
+		super.setContainer(wizardContainer);
+		setWindowTitle(Messages.NewCMakeProjectWizard_WindowTitle);
+	}
+
+	@Override
 	public void addPages() {
 		mainPage = new WizardNewProjectCreationPage("basicNewProjectPage") { //$NON-NLS-1$
 			@Override
@@ -29,8 +36,8 @@
 				Dialog.applyDialogFont(getControl());
 			}
 		};
-		mainPage.setTitle("New CMake Project"); //$NON-NLS-1$
-		mainPage.setDescription("Specify properties of new CMake project."); //$NON-NLS-1$
+		mainPage.setTitle(Messages.NewCMakeProjectWizard_PageTitle);
+		mainPage.setDescription(Messages.NewCMakeProjectWizard_Description);
 		this.addPage(mainPage);
 	}
 
diff --git a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/Messages.properties b/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/messages.properties
similarity index 72%
rename from build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/Messages.properties
rename to build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/messages.properties
index e0e45fd..51b6078 100644
--- a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/Messages.properties
+++ b/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/messages.properties
@@ -8,3 +8,6 @@
 CMakePropertyPage_FailedToStartCMakeGui_Body=Failed to run the CMake GUI: 
 CMakePropertyPage_FailedToStartCMakeGui_Title=Failed to run CMake GUI
 CMakePropertyPage_LaunchCMakeGui=Launch CMake GUI...
+NewCMakeProjectWizard_Description=Specify properties of new CMake project.
+NewCMakeProjectWizard_PageTitle=New CMake Project
+NewCMakeProjectWizard_WindowTitle=New CMake Project
diff --git a/build/pom.xml b/build/pom.xml
index 9964cdd..1668c91 100644
--- a/build/pom.xml
+++ b/build/pom.xml
@@ -10,33 +10,6 @@
 		<version>9.3.0-SNAPSHOT</version>
 	</parent>
 
-	<modules>
-		<module>org.eclipse.cdt.build.gcc.core</module>
-		<module>org.eclipse.cdt.make.core</module>
-		<module>org.eclipse.cdt.make.ui</module>
-		<module>org.eclipse.cdt.managedbuilder.core</module>
-		<module>org.eclipse.cdt.managedbuilder.ui</module>
-
-		<module>org.eclipse.cdt.managedbuilder.gnu.ui</module>
-		<module>org.eclipse.cdt.gnu.build-feature</module>
-
-		<module>org.eclipse.cdt.managedbuilder.core.tests</module>
-		<module>org.eclipse.cdt.managedbuilder.ui.tests</module>
-		<module>org.eclipse.cdt.make.core.tests</module>
-		<module>org.eclipse.cdt.make.ui.tests</module>
-
-		<module>org.eclipse.cdt.autotools.core</module>
-		<module>org.eclipse.cdt.autotools.docs</module>
-		<module>org.eclipse.cdt.autotools.tests</module>
-		<module>org.eclipse.cdt.autotools.ui</module>
-		<module>org.eclipse.cdt.autotools.ui.tests</module>
-		<module>org.eclipse.cdt.autotools-feature</module>
-
-		<module>org.eclipse.cdt.cmake.core</module>
-		<module>org.eclipse.cdt.cmake.ui</module>
-		<module>org.eclipse.cdt.cmake-feature</module>
-	</modules>
-
 	<artifactId>org.eclipse.cdt.build-parent</artifactId>
 	<packaging>pom</packaging>
 </project>
diff --git a/codan/pom.xml b/codan/pom.xml
index 1b03cd3..22252673 100644
--- a/codan/pom.xml
+++ b/codan/pom.xml
@@ -12,14 +12,4 @@
 
 	<artifactId>org.eclipse.cdt.codan-parent</artifactId>
 	<packaging>pom</packaging>
-	<modules>
-		<module>org.eclipse.cdt.codan.core</module>
-		<module>org.eclipse.cdt.codan.ui</module>
-		<module>org.eclipse.cdt.codan.core.cxx</module>
-		<module>org.eclipse.cdt.codan.ui.cxx</module>
-		<module>org.eclipse.cdt.codan.checkers</module>
-		<module>org.eclipse.cdt.codan.checkers.ui</module>
-		<module>org.eclipse.cdt.codan.core.tests</module>
-		<module>org.eclipse.cdt.codan.checkers.ui.tests</module>
-	</modules>
 </project>
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/IIndexManager.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/IIndexManager.java
index 050afa4..4ad6193 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/IIndexManager.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/IIndexManager.java
@@ -277,12 +277,22 @@
 	boolean isProjectIndexed(ICProject proj);
 
 	/**
+	 * @param cproject
+	 *            the project to check
+	 * @return whether the content in the project fragment of the specified
+	 *         project's index is complete (contains all sources) and up to date.
+	 * @throws CoreException
+	 * @since 6.4
+	 */
+	public boolean isProjectContentSynced(ICProject cproject) throws CoreException;
+
+	/**
 	 * Returns whether the indexer-setup for a project is currently postponed. Note,
 	 * that a postponed setup does not prevent the indexer from becoming idle
 	 * ({@link #isIndexerIdle()}.
 	 * <p>
-	 * The fact that the indexer-setup for a project is no longer postponed, will be reported using
-	 * {@link IndexerSetupParticipant#onIndexerSetup(ICProject)}.
+	 * The fact that the indexer-setup for a project is no longer postponed, will be
+	 * reported using {@link IndexerSetupParticipant#onIndexerSetup(ICProject)}.
 	 */
 	boolean isIndexerSetupPostponed(ICProject proj);
 
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/build/ToolChainManager.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/build/ToolChainManager.java
index 2333ee5..754f919 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/build/ToolChainManager.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/build/ToolChainManager.java
@@ -33,7 +33,7 @@
 	private List<IToolChain> orderedToolChains;
 	private List<ISafeRunnable> listeners = new ArrayList<>();
 
-	private void init() {
+	private synchronized void init() {
 		if (providerElements == null) {
 			providerElements = new HashMap<>();
 			providers = new HashMap<>();
diff --git a/core/pom.xml b/core/pom.xml
index 7e2f3dd..e65a6fc 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -12,23 +12,4 @@
 
 	<artifactId>org.eclipse.cdt-parent</artifactId>
 	<packaging>pom</packaging>
-
-	<modules>
-		<module>org.eclipse.cdt.core.native</module>
-		<module>org.eclipse.cdt.core.linux</module>
-		<module>org.eclipse.cdt.core.linux.x86</module>
-		<module>org.eclipse.cdt.core.linux.x86_64</module>
-		<module>org.eclipse.cdt.core.linux.ppc64</module>
-		<module>org.eclipse.cdt.core.linux.ppc64le</module>
-		<module>org.eclipse.cdt.core.win32</module>
-		<module>org.eclipse.cdt.core.win32.x86</module>
-		<module>org.eclipse.cdt.core.win32.x86_64</module>
-		<module>org.eclipse.cdt.core.macosx</module>
-
-		<module>org.eclipse.cdt.core</module>
-		<module>org.eclipse.cdt.ui</module>
-
-		<module>org.eclipse.cdt.core.tests</module>
-		<module>org.eclipse.cdt.ui.tests</module>
-	</modules>
 </project>
diff --git a/cross/pom.xml b/cross/pom.xml
index 41ab73f..9bcf475 100644
--- a/cross/pom.xml
+++ b/cross/pom.xml
@@ -12,11 +12,4 @@
 
 	<artifactId>org.eclipse.cdt.cross-parent</artifactId>
 	<packaging>pom</packaging>
-
-	<modules>
-		<module>org.eclipse.cdt.build.crossgcc</module>
-		<module>org.eclipse.cdt.build.crossgcc-feature</module>
-		<module>org.eclipse.cdt.launch.remote</module>
-		<module>org.eclipse.cdt.launch.remote-feature</module>
-	</modules>
 </project>
diff --git a/debug/pom.xml b/debug/pom.xml
index 431d7b1..8de9e66 100644
--- a/debug/pom.xml
+++ b/debug/pom.xml
@@ -12,30 +12,4 @@
 
 	<artifactId>org.eclipse.cdt.debug-parent</artifactId>
 	<packaging>pom</packaging>
-	<modules>
-		<module>org.eclipse.cdt.debug.core</module>
-		<module>org.eclipse.cdt.debug.ui</module>
-
-		<module>org.eclipse.cdt.gdb</module>
-		<module>org.eclipse.cdt.gdb.ui</module>
-		<module>org.eclipse.cdt.gdb-feature</module>
-		<module>org.eclipse.cdt.gnu.debug-feature</module>
-
-		<module>org.eclipse.cdt.debug.application</module>
-		<module>org.eclipse.cdt.debug.application.doc</module>
-		<module>org.eclipse.cdt.debug.standalone-feature</module>
-		<!--
-		TODO:  Investigate/Fix hanging before re-enable re-enabling
-		<module>org.eclipse.cdt.debug.application.tests</module>
-		-->
-	</modules>
-
-	<profiles>
-		<profile>
-			<id>build-standalone-debugger-rcp</id>
-			<modules>
-				<module>org.eclipse.cdt.debug.application.product</module>
-			</modules>
-		</profile>
-	</profiles>
 </project>
diff --git a/dsf-gdb/pom.xml b/dsf-gdb/pom.xml
index fc4c784..7ab51ca 100644
--- a/dsf-gdb/pom.xml
+++ b/dsf-gdb/pom.xml
@@ -12,17 +12,4 @@
 
 	<artifactId>org.eclipse.cdt.dsf-gdb-parent</artifactId>
 	<packaging>pom</packaging>
-
-	<modules>
-		<module>org.eclipse.cdt.dsf.gdb</module>
-		<module>org.eclipse.cdt.dsf.gdb.ui</module>
-		<module>org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui</module>
-		<module>org.eclipse.cdt.gnu.dsf-feature</module>
-		<module>org.eclipse.cdt.gnu.multicorevisualizer-feature</module>
-
-		<module>org.eclipse.cdt.dsf.gdb.tests</module>
-		<module>org.eclipse.cdt.tests.dsf.gdb</module>
-		<module>org.eclipse.cdt.examples.dsf.gdb</module>
-		<module>org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests</module>
-	</modules>
 </project>
diff --git a/dsf/pom.xml b/dsf/pom.xml
index 7b89812..ed29028 100644
--- a/dsf/pom.xml
+++ b/dsf/pom.xml
@@ -12,12 +12,4 @@
 
 	<artifactId>org.eclipse.cdt.dsf-parent</artifactId>
 	<packaging>pom</packaging>
-	<modules>
-		<module>org.eclipse.cdt.dsf</module>
-		<module>org.eclipse.cdt.dsf.ui</module>
-		<module>org.eclipse.cdt.examples.dsf</module>
-		<module>org.eclipse.cdt.examples.dsf.pda</module>
-		<module>org.eclipse.cdt.examples.dsf.pda.ui</module>
-		<module>org.eclipse.cdt.examples.dsf-feature</module>
-	</modules>
 </project>
diff --git a/jtag/pom.xml b/jtag/pom.xml
index f158272..50fde7b 100644
--- a/jtag/pom.xml
+++ b/jtag/pom.xml
@@ -12,11 +12,4 @@
 
   <artifactId>org.eclipse.cdt.jtag-parent</artifactId>
   <packaging>pom</packaging>
-
-  <modules>
-		<module>org.eclipse.cdt.debug.gdbjtag</module>
-		<module>org.eclipse.cdt.debug.gdbjtag.core</module>
-		<module>org.eclipse.cdt.debug.gdbjtag.ui</module>
-		<module>org.eclipse.cdt.debug.gdbjtag-feature</module>
-  </modules>
 </project>
diff --git a/launch/pom.xml b/launch/pom.xml
index e1378e2..fdfbc99 100644
--- a/launch/pom.xml
+++ b/launch/pom.xml
@@ -12,10 +12,4 @@
 
 	<artifactId>org.eclipse.cdt.launch-parent</artifactId>
 	<packaging>pom</packaging>
-
-	<modules>
-		<module>org.eclipse.cdt.launch</module>
-		<module>org.eclipse.cdt.docker.launcher</module>
-		<module>org.eclipse.cdt.docker.launcher-feature</module>
-	</modules>
 </project>
diff --git a/llvm/pom.xml b/llvm/pom.xml
index 46ab5aa..805a755 100644
--- a/llvm/pom.xml
+++ b/llvm/pom.xml
@@ -12,12 +12,4 @@
 
 	<artifactId>org.eclipse.cdt.llvm-parent</artifactId>
 	<packaging>pom</packaging>
-
-	<modules>
-		<module>org.eclipse.cdt.managedbuilder.llvm.ui</module>
-		<module>org.eclipse.cdt.managedbuilder.llvm-feature</module>
-		<module>org.eclipse.cdt.llvm.dsf.lldb.core</module>
-		<module>org.eclipse.cdt.llvm.dsf.lldb.ui</module>
-		<module>org.eclipse.cdt.llvm.dsf.lldb-feature</module>
-	</modules>
 </project>
diff --git a/lrparser/pom.xml b/lrparser/pom.xml
index 1fa6dcd..a6c6763 100644
--- a/lrparser/pom.xml
+++ b/lrparser/pom.xml
@@ -12,13 +12,4 @@
 
 	<artifactId>org.eclipse.cdt.lrparser-parent</artifactId>
 	<packaging>pom</packaging>
-
-	<modules>
-		<module>org.eclipse.cdt.core.lrparser</module>
-		<module>org.eclipse.cdt.core.lrparser.feature</module>
-		<module>org.eclipse.cdt.core.lrparser.sdk.feature</module>
-<!--
-		<module>org.eclipse.cdt.core.lrparser.tests</module>
--->
-	</modules>
 </project>
diff --git a/memory/pom.xml b/memory/pom.xml
index 14ce725..cf12258 100644
--- a/memory/pom.xml
+++ b/memory/pom.xml
@@ -12,13 +12,4 @@
 
 	<artifactId>org.eclipse.cdt.memory-parent</artifactId>
 	<packaging>pom</packaging>
-
-	<modules>
-		<module>org.eclipse.cdt.debug.ui.memory.memorybrowser</module>
-		<module>org.eclipse.cdt.debug.ui.memory.floatingpoint</module>
-		<module>org.eclipse.cdt.debug.ui.memory.search</module>
-		<module>org.eclipse.cdt.debug.ui.memory.traditional</module>
-		<module>org.eclipse.cdt.debug.ui.memory.transport</module>
-		<module>org.eclipse.cdt.debug.ui.memory-feature</module>
-	</modules>
 </project>
diff --git a/native/pom.xml b/native/pom.xml
index a28abdc..55dab48 100644
--- a/native/pom.xml
+++ b/native/pom.xml
@@ -12,7 +12,4 @@
 
 	<artifactId>org.eclipse.cdt.native-parent</artifactId>
 	<packaging>pom</packaging>
-	<modules>
-		<module>org.eclipse.cdt.native.serial</module>
-	</modules>
 </project>
diff --git a/pom.xml b/pom.xml
index 8fd6cf4..8bd9d25 100644
--- a/pom.xml
+++ b/pom.xml
@@ -55,32 +55,192 @@
 	</licenses>
 
 	<modules>
-		<module>build</module>
-		<module>codan</module>
-		<module>core</module>
-		<module>cross</module>
-		<module>debug</module>
-		<module>dsf</module>
-		<module>dsf-gdb</module>
-		<module>jtag</module>
-		<module>launch</module>
-		<module>llvm</module>
-		<module>lrparser</module>
-		<module>memory</module>
-		<module>native</module>
-		<module>qt</module>
-		<module>releng</module>
-		<module>remote</module>
-		<module>testsrunner</module>
-		<module>toolchains/arduino</module>
-		<module>upc</module>
-		<module>util</module>
-		<module>visualizer</module>
-		<module>windows</module>
-		<module>xlc</module>
+		<!-- The test plug-ins need to be at the end -->
+		<module>build/org.eclipse.cdt.build.gcc.core</module>
+		<module>build/org.eclipse.cdt.make.core</module>
+		<module>build/org.eclipse.cdt.make.ui</module>
+		<module>build/org.eclipse.cdt.managedbuilder.core</module>
+		<module>build/org.eclipse.cdt.managedbuilder.ui</module>
+		<module>build/org.eclipse.cdt.managedbuilder.gnu.ui</module>
+		<module>build/org.eclipse.cdt.gnu.build-feature</module>
+
+		<module>build/org.eclipse.cdt.autotools.core</module>
+		<module>build/org.eclipse.cdt.autotools.docs</module>
+		<module>build/org.eclipse.cdt.autotools.ui</module>
+		<module>build/org.eclipse.cdt.autotools-feature</module>
+
+		<module>build/org.eclipse.cdt.cmake.core</module>
+		<module>build/org.eclipse.cdt.cmake.ui</module>
+		<module>build/org.eclipse.cdt.cmake-feature</module>
+
+		<module>codan/org.eclipse.cdt.codan.core</module>
+		<module>codan/org.eclipse.cdt.codan.ui</module>
+		<module>codan/org.eclipse.cdt.codan.core.cxx</module>
+		<module>codan/org.eclipse.cdt.codan.ui.cxx</module>
+		<module>codan/org.eclipse.cdt.codan.checkers</module>
+		<module>codan/org.eclipse.cdt.codan.checkers.ui</module>
+
+		<module>core/org.eclipse.cdt.core.native</module>
+		<module>core/org.eclipse.cdt.core.linux</module>
+		<module>core/org.eclipse.cdt.core.linux.x86</module>
+		<module>core/org.eclipse.cdt.core.linux.x86_64</module>
+		<module>core/org.eclipse.cdt.core.linux.ppc64</module>
+		<module>core/org.eclipse.cdt.core.linux.ppc64le</module>
+		<module>core/org.eclipse.cdt.core.win32</module>
+		<module>core/org.eclipse.cdt.core.win32.x86</module>
+		<module>core/org.eclipse.cdt.core.win32.x86_64</module>
+		<module>core/org.eclipse.cdt.core.macosx</module>
+		<module>core/org.eclipse.cdt.core</module>
+		<module>core/org.eclipse.cdt.ui</module>
+		
+		<module>cross/org.eclipse.cdt.build.crossgcc</module>
+		<module>cross/org.eclipse.cdt.build.crossgcc-feature</module>
+		<module>cross/org.eclipse.cdt.launch.remote</module>
+		<module>cross/org.eclipse.cdt.launch.remote-feature</module>
+		
+		<module>debug/org.eclipse.cdt.debug.core</module>
+		<module>debug/org.eclipse.cdt.debug.ui</module>
+
+		<module>debug/org.eclipse.cdt.gdb</module>
+		<module>debug/org.eclipse.cdt.gdb.ui</module>
+		<module>debug/org.eclipse.cdt.gdb-feature</module>
+		<module>debug/org.eclipse.cdt.gnu.debug-feature</module>
+
+		<module>debug/org.eclipse.cdt.debug.application</module>
+		<module>debug/org.eclipse.cdt.debug.application.doc</module>
+		<module>debug/org.eclipse.cdt.debug.standalone-feature</module>
 
 		<module>doc/org.eclipse.cdt.doc.user</module>
 		<module>doc/org.eclipse.cdt.doc.isv</module>
+		
+		<module>dsf/org.eclipse.cdt.dsf</module>
+		<module>dsf/org.eclipse.cdt.dsf.ui</module>
+		<module>dsf/org.eclipse.cdt.examples.dsf</module>
+		<module>dsf/org.eclipse.cdt.examples.dsf.pda</module>
+		<module>dsf/org.eclipse.cdt.examples.dsf.pda.ui</module>
+		<module>dsf/org.eclipse.cdt.examples.dsf-feature</module>
+
+		<module>dsf-gdb/org.eclipse.cdt.dsf.gdb</module>
+		<module>dsf-gdb/org.eclipse.cdt.dsf.gdb.ui</module>
+		<module>dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui</module>
+		<module>dsf-gdb/org.eclipse.cdt.gnu.dsf-feature</module>
+		<module>dsf-gdb/org.eclipse.cdt.gnu.multicorevisualizer-feature</module>
+		<module>dsf-gdb/org.eclipse.cdt.examples.dsf.gdb</module>
+
+		<module>jtag/org.eclipse.cdt.debug.gdbjtag</module>
+		<module>jtag/org.eclipse.cdt.debug.gdbjtag.core</module>
+		<module>jtag/org.eclipse.cdt.debug.gdbjtag.ui</module>
+		<module>jtag/org.eclipse.cdt.debug.gdbjtag-feature</module>
+
+		<module>launch/org.eclipse.cdt.launch</module>
+		<module>launch/org.eclipse.cdt.docker.launcher</module>
+		<module>launch/org.eclipse.cdt.docker.launcher-feature</module>
+
+		<module>llvm/org.eclipse.cdt.managedbuilder.llvm.ui</module>
+		<module>llvm/org.eclipse.cdt.managedbuilder.llvm-feature</module>
+		<module>llvm/org.eclipse.cdt.llvm.dsf.lldb.core</module>
+		<module>llvm/org.eclipse.cdt.llvm.dsf.lldb.ui</module>
+		<module>llvm/org.eclipse.cdt.llvm.dsf.lldb-feature</module>
+
+		<module>lrparser/org.eclipse.cdt.core.lrparser</module>
+		<module>lrparser/org.eclipse.cdt.core.lrparser.feature</module>
+		<module>lrparser/org.eclipse.cdt.core.lrparser.sdk.feature</module>
+
+		<module>memory/org.eclipse.cdt.debug.ui.memory.memorybrowser</module>
+		<module>memory/org.eclipse.cdt.debug.ui.memory.floatingpoint</module>
+		<module>memory/org.eclipse.cdt.debug.ui.memory.search</module>
+		<module>memory/org.eclipse.cdt.debug.ui.memory.traditional</module>
+		<module>memory/org.eclipse.cdt.debug.ui.memory.transport</module>
+		<module>memory/org.eclipse.cdt.debug.ui.memory-feature</module>
+
+		<module>native/org.eclipse.cdt.native.serial</module>
+
+		<module>qt/org.eclipse.cdt.qt.core</module>
+		<module>qt/org.eclipse.cdt.qt.ui</module>
+		<module>qt/org.eclipse.cdt.qt-feature</module>
+
+		<module>remote/org.eclipse.cdt.remote.core</module>
+		<module>remote/org.eclipse.cdt.remote-feature</module>
+
+		<module>testsrunner/org.eclipse.cdt.testsrunner</module>
+		<module>testsrunner/org.eclipse.cdt.testsrunner.boost</module>
+		<module>testsrunner/org.eclipse.cdt.testsrunner.gtest</module>
+		<module>testsrunner/org.eclipse.cdt.testsrunner.qttest</module>
+		<module>testsrunner/org.eclipse.cdt.testsrunner.tap</module>
+		<module>testsrunner/org.eclipse.cdt.testsrunner.feature</module>
+
+		<module>toolchains/arduino/org.eclipse.cdt.arduino.core</module>
+		<module>toolchains/arduino/org.eclipse.cdt.arduino.ui</module>
+		<module>toolchains/arduino/org.eclipse.cdt.arduino-feature</module>
+
+		<module>upc/org.eclipse.cdt.core.parser.upc</module>
+		<module>upc/org.eclipse.cdt.core.parser.upc.feature</module>
+		<module>upc/org.eclipse.cdt.core.parser.upc.sdk.feature</module>
+
+		<module>upc/org.eclipse.cdt.managedbuilder.bupc.ui</module>
+		<module>upc/org.eclipse.cdt.bupc-feature</module>
+
+		<module>util/org.eclipse.cdt.util</module>
+		<module>util/org.eclipse.cdt.util-feature</module>
+
+		<module>visualizer/org.eclipse.cdt.visualizer.core</module>
+		<module>visualizer/org.eclipse.cdt.visualizer.examples</module>
+		<module>visualizer/org.eclipse.cdt.visualizer.ui</module>
+		<module>visualizer/org.eclipse.cdt.visualizer-feature</module>
+
+		<module>windows/org.eclipse.cdt.msw.build</module>
+		<module>windows/org.eclipse.cdt.msw-feature</module>
+
+		<module>xlc/org.eclipse.cdt.core.lrparser.xlc</module>
+		<module>xlc/org.eclipse.cdt.errorparsers.xlc</module>
+		<module>xlc/org.eclipse.cdt.make.xlc.core</module>
+		<module>xlc/org.eclipse.cdt.managedbuilder.xlc.core</module>
+		<module>xlc/org.eclipse.cdt.managedbuilder.xlc.ui</module>
+		<module>xlc/org.eclipse.cdt.managedbuilder.xlupc.ui</module>
+		<module>xlc/org.eclipse.cdt.xlc.feature</module>
+		<module>xlc/org.eclipse.cdt.xlc.sdk-feature</module>
+
+		<module>releng/org.eclipse.cdt.native-feature</module>
+		<module>releng/org.eclipse.cdt</module>
+		<module>releng/org.eclipse.cdt.platform-feature</module>
+		<module>releng/org.eclipse.cdt-feature</module>
+		<module>releng/org.eclipse.cdt.sdk</module>
+		<module>releng/org.eclipse.cdt.sdk-feature</module>
+		<module>releng/org.eclipse.cdt.target</module>
+		<module>releng/org.eclipse.cdt.repo</module>
+
+		<module>build/org.eclipse.cdt.managedbuilder.core.tests</module>
+		<module>build/org.eclipse.cdt.managedbuilder.ui.tests</module>
+		<module>build/org.eclipse.cdt.make.core.tests</module>
+		<module>build/org.eclipse.cdt.make.ui.tests</module>
+		<module>build/org.eclipse.cdt.autotools.tests</module>
+		<module>build/org.eclipse.cdt.autotools.ui.tests</module>
+		<module>build/org.eclipse.cdt.cmake.ui.tests</module>
+		<module>codan/org.eclipse.cdt.codan.core.tests</module>
+		<module>codan/org.eclipse.cdt.codan.checkers.ui.tests</module>
+		<module>core/org.eclipse.cdt.core.tests</module>
+		<module>core/org.eclipse.cdt.ui.tests</module>
+		<module>dsf-gdb/org.eclipse.cdt.dsf.gdb.tests</module>
+		<module>dsf-gdb/org.eclipse.cdt.tests.dsf.gdb</module>
+		<module>dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests</module>
+		<module>qt/org.eclipse.cdt.qt.ui.tests</module>
+		<module>testsrunner/org.eclipse.cdt.testsrunner.tests</module>
+		<module>xlc/org.eclipse.cdt.errorparsers.xlc.tests</module>
+
+		<module>releng/org.eclipse.cdt.testing</module>
+		<module>releng/org.eclipse.cdt.testing-feature</module>
+		<module>releng/org.eclipse.cdt.testing.repo</module>
+
+		<!-- TODO:  Investigate/Fix hanging before re-enable re-enabling
+		<module>debug/org.eclipse.cdt.debug.application.tests</module>
+		-->
+		
+		<!--
+		<module>lrparser/org.eclipse.cdt.core.lrparser.tests</module>
+		<module>qt/org.eclipse.cdt.qt.core.tests</module>
+		<module>upc/org.eclipse.cdt.core.parser.upc.tests</module>
+		<module>org.eclipse.cdt.core.lrparser.xlc.tests</module>
+		-->
 	</modules>
 
 	<pluginRepositories>
@@ -122,6 +282,12 @@
 				<base.ui.test.vmargs>${base.test.vmargs}</base.ui.test.vmargs>
 			</properties>
 		</profile>
+		<profile>
+			<id>build-standalone-debugger-rcp</id>
+			<modules>
+				<module>debug/org.eclipse.cdt.debug.application.product</module>
+			</modules>
+		</profile>
 		<!-- Automatic profile for features that shouldn't generate sources -->
 		<profile>
 			<id>feature-no-source</id>
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/core/QtMinGWToolChainProvider.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/core/QtMinGWToolChainProvider.java
index c50572f..29a11ca 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/core/QtMinGWToolChainProvider.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/core/QtMinGWToolChainProvider.java
@@ -7,6 +7,7 @@
  *******************************************************************************/
 package org.eclipse.cdt.qt.core;
 
+import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -16,6 +17,8 @@
 import org.eclipse.cdt.core.build.IToolChain;
 import org.eclipse.cdt.core.build.IToolChainManager;
 import org.eclipse.cdt.core.build.IToolChainProvider;
+import org.eclipse.cdt.core.envvar.EnvironmentVariable;
+import org.eclipse.cdt.core.envvar.IEnvironmentVariable;
 import org.eclipse.cdt.internal.qt.core.Activator;
 import org.eclipse.cdt.utils.WindowsRegistry;
 import org.eclipse.core.runtime.CoreException;
@@ -46,12 +49,23 @@
 						Path gcc = Paths.get("bin\\gcc.exe"); //$NON-NLS-1$
 						try {
 							Files.walk(installLocation.resolve("Tools"), 1) //$NON-NLS-1$
-									.filter(path -> Files.exists(path.resolve(gcc))).map(path -> {
-										GCCToolChain toolChain = new GCCToolChain(this, TOOLCHAIN_ID, "", //$NON-NLS-1$
-												new Path[] { path.resolve("bin") }); //$NON-NLS-1$
+									.filter(path -> Files.exists(path.resolve(gcc))).forEach(path -> {
+										IEnvironmentVariable[] env = new IEnvironmentVariable[] {
+												new EnvironmentVariable("PATH", //$NON-NLS-1$
+														path.resolve("bin").toString(), //$NON-NLS-1$
+														IEnvironmentVariable.ENVVAR_PREPEND, File.pathSeparator) };
+										GCCToolChain toolChain = new GCCToolChain(this, path.resolve(gcc),
+												Platform.ARCH_X86, env);
 										toolChain.setProperty(IToolChain.ATTR_PACKAGE, "qt"); //$NON-NLS-1$
-										return toolChain;
-									}).forEach(toolChain -> manager.addToolChain(toolChain));
+										manager.addToolChain(toolChain);
+
+										if (Platform.getOSArch().equals(Platform.ARCH_X86_64)) {
+											toolChain = new GCCToolChain(this, path.resolve(gcc), Platform.ARCH_X86_64,
+													env);
+											toolChain.setProperty(IToolChain.ATTR_PACKAGE, "qt"); //$NON-NLS-1$
+											manager.addToolChain(toolChain);
+										}
+									});
 						} catch (IOException e) {
 							Activator.log(e);
 						}
diff --git a/qt/pom.xml b/qt/pom.xml
index 8ae1417..d0bada9 100644
--- a/qt/pom.xml
+++ b/qt/pom.xml
@@ -12,12 +12,4 @@
 
 	<artifactId>org.eclipse.cdt.qt-parent</artifactId>
 	<packaging>pom</packaging>
-
-	<modules>
-		<module>org.eclipse.cdt.qt.core</module>
-		<module>org.eclipse.cdt.qt.ui</module>
-		<!--module>org.eclipse.cdt.qt.core.tests</module-->
-		<module>org.eclipse.cdt.qt.ui.tests</module>
-		<module>org.eclipse.cdt.qt-feature</module>
-	</modules>
 </project>
diff --git a/releng/org.eclipse.cdt.target/cdt.target b/releng/org.eclipse.cdt.target/cdt.target
index 6db76f4..da98cca 100644
--- a/releng/org.eclipse.cdt.target/cdt.target
+++ b/releng/org.eclipse.cdt.target/cdt.target
@@ -24,7 +24,7 @@
 <repository location="http://download.eclipse.org/technology/swtbot/snapshots/"/>
 </location>
 <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
-    <repository location="http://download.eclipse.org/tm/updates/4.2milestones/20161026"/>
+<repository location="http://download.eclipse.org/tm/updates/4.2milestones/20161026"/>
 </location>
 <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
 <unit id="org.eclipse.remote.feature.group" version="0.0.0"/>
diff --git a/releng/org.eclipse.cdt.testing/plugin.xml b/releng/org.eclipse.cdt.testing/plugin.xml
new file mode 100644
index 0000000..fbe88cd
--- /dev/null
+++ b/releng/org.eclipse.cdt.testing/plugin.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+
+   <extension
+         id="testingProduct"
+         point="org.eclipse.core.runtime.products">
+      <product
+            application="org.eclipse.ui.ide.workbench"
+            name="CDT Testing">
+      </product>
+   </extension>
+
+</plugin>
diff --git a/releng/pom.xml b/releng/pom.xml
index 4dc5b75..2d3ae1e 100644
--- a/releng/pom.xml
+++ b/releng/pom.xml
@@ -12,18 +12,4 @@
 
 	<artifactId>org.eclipse.cdt.releng-parent</artifactId>
 	<packaging>pom</packaging>
-
-	<modules>
-		<module>org.eclipse.cdt.native-feature</module>
-		<module>org.eclipse.cdt</module>
-		<module>org.eclipse.cdt.platform-feature</module>
-		<module>org.eclipse.cdt-feature</module>
-		<module>org.eclipse.cdt.sdk</module>
-		<module>org.eclipse.cdt.sdk-feature</module>
-		<module>org.eclipse.cdt.target</module>
-		<module>org.eclipse.cdt.testing</module>
-		<module>org.eclipse.cdt.testing-feature</module>
-		<module>org.eclipse.cdt.testing.repo</module>
-		<module>org.eclipse.cdt.repo</module>
-	</modules>
 </project>
diff --git a/remote/pom.xml b/remote/pom.xml
index 68574a4..bb58a5b 100644
--- a/remote/pom.xml
+++ b/remote/pom.xml
@@ -12,9 +12,4 @@
 
 	<artifactId>org.eclipse.cdt.remote-parent</artifactId>
 	<packaging>pom</packaging>
-
-	<modules>
-		<module>org.eclipse.cdt.remote.core</module>
-		<module>org.eclipse.cdt.remote-feature</module>
-	</modules>
 </project>
diff --git a/testsrunner/pom.xml b/testsrunner/pom.xml
index 63d910b..3829aab 100644
--- a/testsrunner/pom.xml
+++ b/testsrunner/pom.xml
@@ -12,14 +12,4 @@
 
 	<artifactId>org.eclipse.cdt.testsrunner-parent</artifactId>
 	<packaging>pom</packaging>
-
-	<modules>
-		<module>org.eclipse.cdt.testsrunner</module>
-		<module>org.eclipse.cdt.testsrunner.boost</module>
-		<module>org.eclipse.cdt.testsrunner.gtest</module>
-		<module>org.eclipse.cdt.testsrunner.qttest</module>
-		<module>org.eclipse.cdt.testsrunner.tap</module>
-		<module>org.eclipse.cdt.testsrunner.tests</module>
-		<module>org.eclipse.cdt.testsrunner.feature</module>
-	</modules>
 </project>
diff --git a/toolchains/arduino/pom.xml b/toolchains/arduino/pom.xml
index de80ec7..4775ba8 100644
--- a/toolchains/arduino/pom.xml
+++ b/toolchains/arduino/pom.xml
@@ -13,10 +13,4 @@
 
 	<artifactId>org.eclipse.cdt.arduino-parent</artifactId>
 	<packaging>pom</packaging>
-
-	<modules>
-		<module>org.eclipse.cdt.arduino.core</module>
-		<module>org.eclipse.cdt.arduino.ui</module>
-		<module>org.eclipse.cdt.arduino-feature</module>
-	</modules>
 </project>
diff --git a/upc/pom.xml b/upc/pom.xml
index 92d0b5d..2c37f54 100644
--- a/upc/pom.xml
+++ b/upc/pom.xml
@@ -12,16 +12,4 @@
 
 	<artifactId>org.eclipse.cdt.upc-parent</artifactId>
 	<packaging>pom</packaging>
-
-	<modules>
-		<module>org.eclipse.cdt.core.parser.upc</module>
-		<module>org.eclipse.cdt.core.parser.upc.feature</module>
-		<module>org.eclipse.cdt.core.parser.upc.sdk.feature</module>
-
-		<module>org.eclipse.cdt.managedbuilder.bupc.ui</module>
-		<module>org.eclipse.cdt.bupc-feature</module>
-<!-- 
-		<module>org.eclipse.cdt.core.parser.upc.tests</module>
--->
-	</modules>
 </project>
diff --git a/util/pom.xml b/util/pom.xml
index 255967f..2afff91 100644
--- a/util/pom.xml
+++ b/util/pom.xml
@@ -12,9 +12,4 @@
 
 	<artifactId>org.eclipse.cdt.util-parent</artifactId>
 	<packaging>pom</packaging>
-
-	<modules>
-		<module>org.eclipse.cdt.util</module>
-		<module>org.eclipse.cdt.util-feature</module>
-	</modules>
 </project>
diff --git a/visualizer/pom.xml b/visualizer/pom.xml
index 7d6d59f..66ad5b6 100644
--- a/visualizer/pom.xml
+++ b/visualizer/pom.xml
@@ -12,11 +12,4 @@
 
 	<artifactId>org.eclipse.cdt.visualizer-parent</artifactId>
 	<packaging>pom</packaging>
-
-	<modules>
-		<module>org.eclipse.cdt.visualizer.core</module>
-		<module>org.eclipse.cdt.visualizer.examples</module>
-		<module>org.eclipse.cdt.visualizer.ui</module>
-		<module>org.eclipse.cdt.visualizer-feature</module>
-	</modules>
 </project>
diff --git a/windows/pom.xml b/windows/pom.xml
index d85bab5..4d125fc 100644
--- a/windows/pom.xml
+++ b/windows/pom.xml
@@ -12,9 +12,4 @@
 
 	<artifactId>org.eclipse.cdt.windows-parent</artifactId>
 	<packaging>pom</packaging>
-
-	<modules>
-		<module>org.eclipse.cdt.msw.build</module>
-		<module>org.eclipse.cdt.msw-feature</module>
-	</modules>
 </project>
diff --git a/xlc/pom.xml b/xlc/pom.xml
index ec5b5c4..c42507a 100644
--- a/xlc/pom.xml
+++ b/xlc/pom.xml
@@ -1,30 +1,15 @@
 <?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>
+	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>9.3.0-SNAPSHOT</version>
-  </parent>
+	<parent>
+		<groupId>org.eclipse.cdt</groupId>
+		<artifactId>cdt-parent</artifactId>
+		<version>9.3.0-SNAPSHOT</version>
+	</parent>
 
-  <artifactId>org.eclipse.cdt.xlc-parent</artifactId>
-  <packaging>pom</packaging>
-
-	<modules>
-		<module>org.eclipse.cdt.core.lrparser.xlc</module>
-		<module>org.eclipse.cdt.errorparsers.xlc</module>
-		<module>org.eclipse.cdt.make.xlc.core</module>
-		<module>org.eclipse.cdt.managedbuilder.xlc.core</module>
-		<module>org.eclipse.cdt.managedbuilder.xlc.ui</module>
-		<module>org.eclipse.cdt.managedbuilder.xlupc.ui</module>
-		<module>org.eclipse.cdt.xlc.feature</module>
-		<module>org.eclipse.cdt.xlc.sdk-feature</module>
-		<module>org.eclipse.cdt.errorparsers.xlc.tests</module>
-<!--
-		<module>org.eclipse.cdt.core.lrparser.xlc.tests</module>
--->
-	</modules>
+	<artifactId>org.eclipse.cdt.xlc-parent</artifactId>
+	<packaging>pom</packaging>
 </project>