From 11dcec43f211e694b0c8f811be37f34868a4cdf0 Mon Sep 17 00:00:00 2001 From: Doug Schaefer Date: Wed, 4 Oct 2017 20:47:32 -0400 Subject: [PATCH] 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 --- .../cdt/build/gcc/core/GCCToolChain.java | 2 + .../org.eclipse.cdt.cmake.ui.tests/.classpath | 7 + build/org.eclipse.cdt.cmake.ui.tests/.project | 28 +++ .../.settings/org.eclipse.jdt.core.prefs | 7 + .../META-INF/MANIFEST.MF | 11 + .../build.properties | 4 + build/org.eclipse.cdt.cmake.ui.tests/pom.xml | 43 ++++ .../tests/AutomatedIntegrationSuite.java | 17 ++ .../internal/tests/NewCMakeProjectTest.java | 97 ++++++++ .../swtbot-test-plugin.properties | 1 + .../cdt/cmake/ui/internal/CMakeBuildTab.java | 7 + .../cdt/cmake/ui/internal/Messages.java | 13 +- .../ui/internal/NewCMakeProjectWizard.java | 11 +- ...essages.properties => messages.properties} | 3 + build/pom.xml | 27 --- codan/pom.xml | 10 - .../eclipse/cdt/core/index/IIndexManager.java | 14 +- .../internal/core/build/ToolChainManager.java | 2 +- core/pom.xml | 19 -- cross/pom.xml | 7 - debug/pom.xml | 26 --- dsf-gdb/pom.xml | 13 -- dsf/pom.xml | 8 - jtag/pom.xml | 7 - launch/pom.xml | 6 - llvm/pom.xml | 8 - lrparser/pom.xml | 9 - memory/pom.xml | 9 - native/pom.xml | 3 - pom.xml | 212 ++++++++++++++++-- .../cdt/qt/core/QtMinGWToolChainProvider.java | 24 +- qt/pom.xml | 8 - releng/org.eclipse.cdt.target/cdt.target | 2 +- releng/org.eclipse.cdt.testing/plugin.xml | 14 ++ releng/pom.xml | 14 -- remote/pom.xml | 5 - testsrunner/pom.xml | 10 - toolchains/arduino/pom.xml | 6 - upc/pom.xml | 12 - util/pom.xml | 5 - visualizer/pom.xml | 7 - windows/pom.xml | 5 - xlc/pom.xml | 35 +-- 43 files changed, 494 insertions(+), 284 deletions(-) create mode 100644 build/org.eclipse.cdt.cmake.ui.tests/.classpath create mode 100644 build/org.eclipse.cdt.cmake.ui.tests/.project create mode 100644 build/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.jdt.core.prefs create mode 100644 build/org.eclipse.cdt.cmake.ui.tests/META-INF/MANIFEST.MF create mode 100644 build/org.eclipse.cdt.cmake.ui.tests/build.properties create mode 100644 build/org.eclipse.cdt.cmake.ui.tests/pom.xml create mode 100644 build/org.eclipse.cdt.cmake.ui.tests/src/org/eclipse/cdt/cmake/ui/internal/tests/AutomatedIntegrationSuite.java create mode 100644 build/org.eclipse.cdt.cmake.ui.tests/src/org/eclipse/cdt/cmake/ui/internal/tests/NewCMakeProjectTest.java create mode 100644 build/org.eclipse.cdt.cmake.ui.tests/swtbot-test-plugin.properties rename build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/{Messages.properties => messages.properties} (72%) create mode 100644 releng/org.eclipse.cdt.testing/plugin.xml 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 f5cd6b21b64..3ee7de0d1b6 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 @@ public class GCCToolChain extends PlatformObject implements IToolChain { 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 00000000000..eca7bdba8f0 --- /dev/null +++ b/build/org.eclipse.cdt.cmake.ui.tests/.classpath @@ -0,0 +1,7 @@ + + + + + + + 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 00000000000..737f5d08009 --- /dev/null +++ b/build/org.eclipse.cdt.cmake.ui.tests/.project @@ -0,0 +1,28 @@ + + + org.eclipse.cdt.cmake.ui.tests + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + 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 00000000000..0c68a61dca8 --- /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 00000000000..8ae804036f2 --- /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 00000000000..34d2e4d2dad --- /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 00000000000..cb4587258c3 --- /dev/null +++ b/build/org.eclipse.cdt.cmake.ui.tests/pom.xml @@ -0,0 +1,43 @@ + + + 4.0.0 + + + org.eclipse.cdt + cdt-parent + 9.3.0-SNAPSHOT + ../../pom.xml + + + org.eclipse.cdt.cmake.ui.tests + 1.0.0-SNAPSHOT + eclipse-test-plugin + + + + + org.eclipse.tycho + target-platform-configuration + ${tycho-version} + + + + + p2-installable-unit + org.eclipse.cdt.feature.group + 0.0.0 + + + p2-installable-unit + org.eclipse.cdt.cmake.feature.group + 0.0.0 + + + + + + + + \ 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 00000000000..698779e0eb8 --- /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 00000000000..0f425bf2736 --- /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 00000000000..338038b9345 --- /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 7778df8d84b..6cc9a02e012 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 cffd11d7158..50df2366fab 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 class Messages extends NLS { 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 ad732e9e859..39f9996fca6 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 @@ package org.eclipse.cdt.cmake.ui.internal; 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; @@ -18,6 +19,12 @@ public class NewCMakeProjectWizard extends TemplateWizard { 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$ @@ -29,8 +36,8 @@ public class NewCMakeProjectWizard extends TemplateWizard { 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 e0e45fd3d9b..51b607823f3 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 @@ CMakeBuildTab_UnixMakefiles=Unix Makefiles 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 9964cdd85f0..1668c91e52d 100644 --- a/build/pom.xml +++ b/build/pom.xml @@ -10,33 +10,6 @@ 9.3.0-SNAPSHOT - - org.eclipse.cdt.build.gcc.core - org.eclipse.cdt.make.core - org.eclipse.cdt.make.ui - org.eclipse.cdt.managedbuilder.core - org.eclipse.cdt.managedbuilder.ui - - org.eclipse.cdt.managedbuilder.gnu.ui - org.eclipse.cdt.gnu.build-feature - - org.eclipse.cdt.managedbuilder.core.tests - org.eclipse.cdt.managedbuilder.ui.tests - org.eclipse.cdt.make.core.tests - org.eclipse.cdt.make.ui.tests - - org.eclipse.cdt.autotools.core - org.eclipse.cdt.autotools.docs - org.eclipse.cdt.autotools.tests - org.eclipse.cdt.autotools.ui - org.eclipse.cdt.autotools.ui.tests - org.eclipse.cdt.autotools-feature - - org.eclipse.cdt.cmake.core - org.eclipse.cdt.cmake.ui - org.eclipse.cdt.cmake-feature - - org.eclipse.cdt.build-parent pom diff --git a/codan/pom.xml b/codan/pom.xml index 1b03cd35e6d..222526734d5 100644 --- a/codan/pom.xml +++ b/codan/pom.xml @@ -12,14 +12,4 @@ org.eclipse.cdt.codan-parent pom - - org.eclipse.cdt.codan.core - org.eclipse.cdt.codan.ui - org.eclipse.cdt.codan.core.cxx - org.eclipse.cdt.codan.ui.cxx - org.eclipse.cdt.codan.checkers - org.eclipse.cdt.codan.checkers.ui - org.eclipse.cdt.codan.core.tests - org.eclipse.cdt.codan.checkers.ui.tests - 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 050afa41ac3..4ad6193abd0 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 @@ -276,13 +276,23 @@ public interface IIndexManager extends IPDOMManager { */ 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()}. *

- * 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 2333ee5e066..754f9194694 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 @@ public class ToolChainManager implements IToolChainManager { private List orderedToolChains; private List 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 7e2f3dd71a8..e65a6fc1be6 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -12,23 +12,4 @@ org.eclipse.cdt-parent pom - - - org.eclipse.cdt.core.native - org.eclipse.cdt.core.linux - org.eclipse.cdt.core.linux.x86 - org.eclipse.cdt.core.linux.x86_64 - org.eclipse.cdt.core.linux.ppc64 - org.eclipse.cdt.core.linux.ppc64le - org.eclipse.cdt.core.win32 - org.eclipse.cdt.core.win32.x86 - org.eclipse.cdt.core.win32.x86_64 - org.eclipse.cdt.core.macosx - - org.eclipse.cdt.core - org.eclipse.cdt.ui - - org.eclipse.cdt.core.tests - org.eclipse.cdt.ui.tests - diff --git a/cross/pom.xml b/cross/pom.xml index 41ab73f510d..9bcf475732a 100644 --- a/cross/pom.xml +++ b/cross/pom.xml @@ -12,11 +12,4 @@ org.eclipse.cdt.cross-parent pom - - - org.eclipse.cdt.build.crossgcc - org.eclipse.cdt.build.crossgcc-feature - org.eclipse.cdt.launch.remote - org.eclipse.cdt.launch.remote-feature - diff --git a/debug/pom.xml b/debug/pom.xml index 431d7b18538..8de9e664633 100644 --- a/debug/pom.xml +++ b/debug/pom.xml @@ -12,30 +12,4 @@ org.eclipse.cdt.debug-parent pom - - org.eclipse.cdt.debug.core - org.eclipse.cdt.debug.ui - - org.eclipse.cdt.gdb - org.eclipse.cdt.gdb.ui - org.eclipse.cdt.gdb-feature - org.eclipse.cdt.gnu.debug-feature - - org.eclipse.cdt.debug.application - org.eclipse.cdt.debug.application.doc - org.eclipse.cdt.debug.standalone-feature - - - - - - build-standalone-debugger-rcp - - org.eclipse.cdt.debug.application.product - - - diff --git a/dsf-gdb/pom.xml b/dsf-gdb/pom.xml index fc4c784badf..7ab51ca344f 100644 --- a/dsf-gdb/pom.xml +++ b/dsf-gdb/pom.xml @@ -12,17 +12,4 @@ org.eclipse.cdt.dsf-gdb-parent pom - - - org.eclipse.cdt.dsf.gdb - org.eclipse.cdt.dsf.gdb.ui - org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui - org.eclipse.cdt.gnu.dsf-feature - org.eclipse.cdt.gnu.multicorevisualizer-feature - - org.eclipse.cdt.dsf.gdb.tests - org.eclipse.cdt.tests.dsf.gdb - org.eclipse.cdt.examples.dsf.gdb - org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests - diff --git a/dsf/pom.xml b/dsf/pom.xml index 7b8981207a8..ed29028f49b 100644 --- a/dsf/pom.xml +++ b/dsf/pom.xml @@ -12,12 +12,4 @@ org.eclipse.cdt.dsf-parent pom - - org.eclipse.cdt.dsf - org.eclipse.cdt.dsf.ui - org.eclipse.cdt.examples.dsf - org.eclipse.cdt.examples.dsf.pda - org.eclipse.cdt.examples.dsf.pda.ui - org.eclipse.cdt.examples.dsf-feature - diff --git a/jtag/pom.xml b/jtag/pom.xml index f1582724acc..50fde7ba580 100644 --- a/jtag/pom.xml +++ b/jtag/pom.xml @@ -12,11 +12,4 @@ org.eclipse.cdt.jtag-parent pom - - - org.eclipse.cdt.debug.gdbjtag - org.eclipse.cdt.debug.gdbjtag.core - org.eclipse.cdt.debug.gdbjtag.ui - org.eclipse.cdt.debug.gdbjtag-feature - diff --git a/launch/pom.xml b/launch/pom.xml index e1378e2609e..fdfbc99c8dd 100644 --- a/launch/pom.xml +++ b/launch/pom.xml @@ -12,10 +12,4 @@ org.eclipse.cdt.launch-parent pom - - - org.eclipse.cdt.launch - org.eclipse.cdt.docker.launcher - org.eclipse.cdt.docker.launcher-feature - diff --git a/llvm/pom.xml b/llvm/pom.xml index 46ab5aa3883..805a755e7c8 100644 --- a/llvm/pom.xml +++ b/llvm/pom.xml @@ -12,12 +12,4 @@ org.eclipse.cdt.llvm-parent pom - - - org.eclipse.cdt.managedbuilder.llvm.ui - org.eclipse.cdt.managedbuilder.llvm-feature - org.eclipse.cdt.llvm.dsf.lldb.core - org.eclipse.cdt.llvm.dsf.lldb.ui - org.eclipse.cdt.llvm.dsf.lldb-feature - diff --git a/lrparser/pom.xml b/lrparser/pom.xml index 1fa6dcd1ff7..a6c6763766a 100644 --- a/lrparser/pom.xml +++ b/lrparser/pom.xml @@ -12,13 +12,4 @@ org.eclipse.cdt.lrparser-parent pom - - - org.eclipse.cdt.core.lrparser - org.eclipse.cdt.core.lrparser.feature - org.eclipse.cdt.core.lrparser.sdk.feature - - diff --git a/memory/pom.xml b/memory/pom.xml index 14ce725e88a..cf1225899eb 100644 --- a/memory/pom.xml +++ b/memory/pom.xml @@ -12,13 +12,4 @@ org.eclipse.cdt.memory-parent pom - - - org.eclipse.cdt.debug.ui.memory.memorybrowser - org.eclipse.cdt.debug.ui.memory.floatingpoint - org.eclipse.cdt.debug.ui.memory.search - org.eclipse.cdt.debug.ui.memory.traditional - org.eclipse.cdt.debug.ui.memory.transport - org.eclipse.cdt.debug.ui.memory-feature - diff --git a/native/pom.xml b/native/pom.xml index a28abdc1564..55dab48d281 100644 --- a/native/pom.xml +++ b/native/pom.xml @@ -12,7 +12,4 @@ org.eclipse.cdt.native-parent pom - - org.eclipse.cdt.native.serial - diff --git a/pom.xml b/pom.xml index 8fd6cf48a42..8bd9d252b58 100644 --- a/pom.xml +++ b/pom.xml @@ -55,32 +55,192 @@ - build - codan - core - cross - debug - dsf - dsf-gdb - jtag - launch - llvm - lrparser - memory - native - qt - releng - remote - testsrunner - toolchains/arduino - upc - util - visualizer - windows - xlc + + build/org.eclipse.cdt.build.gcc.core + build/org.eclipse.cdt.make.core + build/org.eclipse.cdt.make.ui + build/org.eclipse.cdt.managedbuilder.core + build/org.eclipse.cdt.managedbuilder.ui + build/org.eclipse.cdt.managedbuilder.gnu.ui + build/org.eclipse.cdt.gnu.build-feature + + build/org.eclipse.cdt.autotools.core + build/org.eclipse.cdt.autotools.docs + build/org.eclipse.cdt.autotools.ui + build/org.eclipse.cdt.autotools-feature + + build/org.eclipse.cdt.cmake.core + build/org.eclipse.cdt.cmake.ui + build/org.eclipse.cdt.cmake-feature + + codan/org.eclipse.cdt.codan.core + codan/org.eclipse.cdt.codan.ui + codan/org.eclipse.cdt.codan.core.cxx + codan/org.eclipse.cdt.codan.ui.cxx + codan/org.eclipse.cdt.codan.checkers + codan/org.eclipse.cdt.codan.checkers.ui + + core/org.eclipse.cdt.core.native + core/org.eclipse.cdt.core.linux + core/org.eclipse.cdt.core.linux.x86 + core/org.eclipse.cdt.core.linux.x86_64 + core/org.eclipse.cdt.core.linux.ppc64 + core/org.eclipse.cdt.core.linux.ppc64le + core/org.eclipse.cdt.core.win32 + core/org.eclipse.cdt.core.win32.x86 + core/org.eclipse.cdt.core.win32.x86_64 + core/org.eclipse.cdt.core.macosx + core/org.eclipse.cdt.core + core/org.eclipse.cdt.ui + + cross/org.eclipse.cdt.build.crossgcc + cross/org.eclipse.cdt.build.crossgcc-feature + cross/org.eclipse.cdt.launch.remote + cross/org.eclipse.cdt.launch.remote-feature + + debug/org.eclipse.cdt.debug.core + debug/org.eclipse.cdt.debug.ui + + debug/org.eclipse.cdt.gdb + debug/org.eclipse.cdt.gdb.ui + debug/org.eclipse.cdt.gdb-feature + debug/org.eclipse.cdt.gnu.debug-feature + + debug/org.eclipse.cdt.debug.application + debug/org.eclipse.cdt.debug.application.doc + debug/org.eclipse.cdt.debug.standalone-feature doc/org.eclipse.cdt.doc.user doc/org.eclipse.cdt.doc.isv + + dsf/org.eclipse.cdt.dsf + dsf/org.eclipse.cdt.dsf.ui + dsf/org.eclipse.cdt.examples.dsf + dsf/org.eclipse.cdt.examples.dsf.pda + dsf/org.eclipse.cdt.examples.dsf.pda.ui + dsf/org.eclipse.cdt.examples.dsf-feature + + dsf-gdb/org.eclipse.cdt.dsf.gdb + dsf-gdb/org.eclipse.cdt.dsf.gdb.ui + dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui + dsf-gdb/org.eclipse.cdt.gnu.dsf-feature + dsf-gdb/org.eclipse.cdt.gnu.multicorevisualizer-feature + dsf-gdb/org.eclipse.cdt.examples.dsf.gdb + + jtag/org.eclipse.cdt.debug.gdbjtag + jtag/org.eclipse.cdt.debug.gdbjtag.core + jtag/org.eclipse.cdt.debug.gdbjtag.ui + jtag/org.eclipse.cdt.debug.gdbjtag-feature + + launch/org.eclipse.cdt.launch + launch/org.eclipse.cdt.docker.launcher + launch/org.eclipse.cdt.docker.launcher-feature + + llvm/org.eclipse.cdt.managedbuilder.llvm.ui + llvm/org.eclipse.cdt.managedbuilder.llvm-feature + llvm/org.eclipse.cdt.llvm.dsf.lldb.core + llvm/org.eclipse.cdt.llvm.dsf.lldb.ui + llvm/org.eclipse.cdt.llvm.dsf.lldb-feature + + lrparser/org.eclipse.cdt.core.lrparser + lrparser/org.eclipse.cdt.core.lrparser.feature + lrparser/org.eclipse.cdt.core.lrparser.sdk.feature + + memory/org.eclipse.cdt.debug.ui.memory.memorybrowser + memory/org.eclipse.cdt.debug.ui.memory.floatingpoint + memory/org.eclipse.cdt.debug.ui.memory.search + memory/org.eclipse.cdt.debug.ui.memory.traditional + memory/org.eclipse.cdt.debug.ui.memory.transport + memory/org.eclipse.cdt.debug.ui.memory-feature + + native/org.eclipse.cdt.native.serial + + qt/org.eclipse.cdt.qt.core + qt/org.eclipse.cdt.qt.ui + qt/org.eclipse.cdt.qt-feature + + remote/org.eclipse.cdt.remote.core + remote/org.eclipse.cdt.remote-feature + + testsrunner/org.eclipse.cdt.testsrunner + testsrunner/org.eclipse.cdt.testsrunner.boost + testsrunner/org.eclipse.cdt.testsrunner.gtest + testsrunner/org.eclipse.cdt.testsrunner.qttest + testsrunner/org.eclipse.cdt.testsrunner.tap + testsrunner/org.eclipse.cdt.testsrunner.feature + + toolchains/arduino/org.eclipse.cdt.arduino.core + toolchains/arduino/org.eclipse.cdt.arduino.ui + toolchains/arduino/org.eclipse.cdt.arduino-feature + + upc/org.eclipse.cdt.core.parser.upc + upc/org.eclipse.cdt.core.parser.upc.feature + upc/org.eclipse.cdt.core.parser.upc.sdk.feature + + upc/org.eclipse.cdt.managedbuilder.bupc.ui + upc/org.eclipse.cdt.bupc-feature + + util/org.eclipse.cdt.util + util/org.eclipse.cdt.util-feature + + visualizer/org.eclipse.cdt.visualizer.core + visualizer/org.eclipse.cdt.visualizer.examples + visualizer/org.eclipse.cdt.visualizer.ui + visualizer/org.eclipse.cdt.visualizer-feature + + windows/org.eclipse.cdt.msw.build + windows/org.eclipse.cdt.msw-feature + + xlc/org.eclipse.cdt.core.lrparser.xlc + xlc/org.eclipse.cdt.errorparsers.xlc + xlc/org.eclipse.cdt.make.xlc.core + xlc/org.eclipse.cdt.managedbuilder.xlc.core + xlc/org.eclipse.cdt.managedbuilder.xlc.ui + xlc/org.eclipse.cdt.managedbuilder.xlupc.ui + xlc/org.eclipse.cdt.xlc.feature + xlc/org.eclipse.cdt.xlc.sdk-feature + + releng/org.eclipse.cdt.native-feature + releng/org.eclipse.cdt + releng/org.eclipse.cdt.platform-feature + releng/org.eclipse.cdt-feature + releng/org.eclipse.cdt.sdk + releng/org.eclipse.cdt.sdk-feature + releng/org.eclipse.cdt.target + releng/org.eclipse.cdt.repo + + build/org.eclipse.cdt.managedbuilder.core.tests + build/org.eclipse.cdt.managedbuilder.ui.tests + build/org.eclipse.cdt.make.core.tests + build/org.eclipse.cdt.make.ui.tests + build/org.eclipse.cdt.autotools.tests + build/org.eclipse.cdt.autotools.ui.tests + build/org.eclipse.cdt.cmake.ui.tests + codan/org.eclipse.cdt.codan.core.tests + codan/org.eclipse.cdt.codan.checkers.ui.tests + core/org.eclipse.cdt.core.tests + core/org.eclipse.cdt.ui.tests + dsf-gdb/org.eclipse.cdt.dsf.gdb.tests + dsf-gdb/org.eclipse.cdt.tests.dsf.gdb + dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests + qt/org.eclipse.cdt.qt.ui.tests + testsrunner/org.eclipse.cdt.testsrunner.tests + xlc/org.eclipse.cdt.errorparsers.xlc.tests + + releng/org.eclipse.cdt.testing + releng/org.eclipse.cdt.testing-feature + releng/org.eclipse.cdt.testing.repo + + + + @@ -122,6 +282,12 @@ ${base.test.vmargs} + + build-standalone-debugger-rcp + + debug/org.eclipse.cdt.debug.application.product + + feature-no-source 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 c50572f41dd..29a11caf641 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.build.gcc.core.GCCToolChain; 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 @@ public class QtMinGWToolChainProvider implements IToolChainProvider { 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 8ae1417f767..d0bada99e8d 100644 --- a/qt/pom.xml +++ b/qt/pom.xml @@ -12,12 +12,4 @@ org.eclipse.cdt.qt-parent pom - - - org.eclipse.cdt.qt.core - org.eclipse.cdt.qt.ui - - org.eclipse.cdt.qt.ui.tests - org.eclipse.cdt.qt-feature - diff --git a/releng/org.eclipse.cdt.target/cdt.target b/releng/org.eclipse.cdt.target/cdt.target index 6db76f48f44..da98ccade8b 100644 --- a/releng/org.eclipse.cdt.target/cdt.target +++ b/releng/org.eclipse.cdt.target/cdt.target @@ -24,7 +24,7 @@ - + diff --git a/releng/org.eclipse.cdt.testing/plugin.xml b/releng/org.eclipse.cdt.testing/plugin.xml new file mode 100644 index 00000000000..fbe88cde308 --- /dev/null +++ b/releng/org.eclipse.cdt.testing/plugin.xml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/releng/pom.xml b/releng/pom.xml index 4dc5b75886f..2d3ae1e2230 100644 --- a/releng/pom.xml +++ b/releng/pom.xml @@ -12,18 +12,4 @@ org.eclipse.cdt.releng-parent pom - - - org.eclipse.cdt.native-feature - org.eclipse.cdt - org.eclipse.cdt.platform-feature - org.eclipse.cdt-feature - org.eclipse.cdt.sdk - org.eclipse.cdt.sdk-feature - org.eclipse.cdt.target - org.eclipse.cdt.testing - org.eclipse.cdt.testing-feature - org.eclipse.cdt.testing.repo - org.eclipse.cdt.repo - diff --git a/remote/pom.xml b/remote/pom.xml index 68574a4fb41..bb58a5b8c89 100644 --- a/remote/pom.xml +++ b/remote/pom.xml @@ -12,9 +12,4 @@ org.eclipse.cdt.remote-parent pom - - - org.eclipse.cdt.remote.core - org.eclipse.cdt.remote-feature - diff --git a/testsrunner/pom.xml b/testsrunner/pom.xml index 63d910b3861..3829aabbc17 100644 --- a/testsrunner/pom.xml +++ b/testsrunner/pom.xml @@ -12,14 +12,4 @@ org.eclipse.cdt.testsrunner-parent pom - - - org.eclipse.cdt.testsrunner - org.eclipse.cdt.testsrunner.boost - org.eclipse.cdt.testsrunner.gtest - org.eclipse.cdt.testsrunner.qttest - org.eclipse.cdt.testsrunner.tap - org.eclipse.cdt.testsrunner.tests - org.eclipse.cdt.testsrunner.feature - diff --git a/toolchains/arduino/pom.xml b/toolchains/arduino/pom.xml index de80ec71678..4775ba8c5d7 100644 --- a/toolchains/arduino/pom.xml +++ b/toolchains/arduino/pom.xml @@ -13,10 +13,4 @@ org.eclipse.cdt.arduino-parent pom - - - org.eclipse.cdt.arduino.core - org.eclipse.cdt.arduino.ui - org.eclipse.cdt.arduino-feature - diff --git a/upc/pom.xml b/upc/pom.xml index 92d0b5dfcc2..2c37f543e7a 100644 --- a/upc/pom.xml +++ b/upc/pom.xml @@ -12,16 +12,4 @@ org.eclipse.cdt.upc-parent pom - - - org.eclipse.cdt.core.parser.upc - org.eclipse.cdt.core.parser.upc.feature - org.eclipse.cdt.core.parser.upc.sdk.feature - - org.eclipse.cdt.managedbuilder.bupc.ui - org.eclipse.cdt.bupc-feature - - diff --git a/util/pom.xml b/util/pom.xml index 255967f0987..2afff91bcc7 100644 --- a/util/pom.xml +++ b/util/pom.xml @@ -12,9 +12,4 @@ org.eclipse.cdt.util-parent pom - - - org.eclipse.cdt.util - org.eclipse.cdt.util-feature - diff --git a/visualizer/pom.xml b/visualizer/pom.xml index 7d6d59f0e5d..66ad5b66db4 100644 --- a/visualizer/pom.xml +++ b/visualizer/pom.xml @@ -12,11 +12,4 @@ org.eclipse.cdt.visualizer-parent pom - - - org.eclipse.cdt.visualizer.core - org.eclipse.cdt.visualizer.examples - org.eclipse.cdt.visualizer.ui - org.eclipse.cdt.visualizer-feature - diff --git a/windows/pom.xml b/windows/pom.xml index d85bab51c4a..4d125fc088e 100644 --- a/windows/pom.xml +++ b/windows/pom.xml @@ -12,9 +12,4 @@ org.eclipse.cdt.windows-parent pom - - - org.eclipse.cdt.msw.build - org.eclipse.cdt.msw-feature - diff --git a/xlc/pom.xml b/xlc/pom.xml index ec5b5c4e9b4..c42507a8fe0 100644 --- a/xlc/pom.xml +++ b/xlc/pom.xml @@ -1,30 +1,15 @@ - 4.0.0 + 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"> + 4.0.0 - - org.eclipse.cdt - cdt-parent - 9.3.0-SNAPSHOT - + + org.eclipse.cdt + cdt-parent + 9.3.0-SNAPSHOT + - org.eclipse.cdt.xlc-parent - pom - - - org.eclipse.cdt.core.lrparser.xlc - org.eclipse.cdt.errorparsers.xlc - org.eclipse.cdt.make.xlc.core - org.eclipse.cdt.managedbuilder.xlc.core - org.eclipse.cdt.managedbuilder.xlc.ui - org.eclipse.cdt.managedbuilder.xlupc.ui - org.eclipse.cdt.xlc.feature - org.eclipse.cdt.xlc.sdk-feature - org.eclipse.cdt.errorparsers.xlc.tests - - + org.eclipse.cdt.xlc-parent + pom