1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-22 06:02:11 +02:00

Bug 525591: autotools: Initial core build implementation

Add core, UI and feature plugins for the new autotools project which
uses template wizard and core build.

The template wizard currently supports generating a simple autotools
project as described using a template manifest. 

The project generator sets new autotools nature associated with new
autotools build config provider.

The generated autotools project has been tested to compile fine with gcc
(x86_64-linux-gnu-gcc) toolchain.

Change-Id: I8349999d551bb693725a246340cf46266150fadc
Signed-off-by: Chin Huat Ang <chin.huat.ang@intel.com>
This commit is contained in:
Chin Huat Ang 2017-10-24 02:16:05 +08:00 committed by Doug Schaefer
parent 4bf930decb
commit a974ba9c9e
37 changed files with 886 additions and 0 deletions

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>org.eclipse.cdt.core.autotools-feature</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.pde.FeatureBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.FeatureNature</nature>
</natures>
</projectDescription>

View file

@ -0,0 +1,2 @@
bin.includes = feature.xml,\
feature.properties

View file

@ -0,0 +1,17 @@
###############################################################################
# Copyright (c) 2017 Intel Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
###############################################################################
featureName=C/C++ Autotools Build Support - Experimental
providerName=Eclipse CDT
description=Support for projects built using Autotools
copyright=\
Copyright (c) 2017 Intel Corporation and others.\n\
All rights reserved. This program and the accompanying materials\n\
are made available under the terms of the Eclipse Public License v1.0\n\
which accompanies this distribution, and is available at\n\
http://www.eclipse.org/legal/epl-v10.html

View file

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<feature
id="org.eclipse.cdt.core.autotools"
label="%featureName"
version="1.0.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.license"
license-feature-version="0.0.0">
<description>
%description
</description>
<copyright>
%copyright
</copyright>
<license url="%licenseURL">
%license
</license>
<plugin
id="org.eclipse.cdt.core.autotools.ui"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="org.eclipse.cdt.core.autotools.core"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
</feature>

View file

@ -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>

View file

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>org.eclipse.cdt.core.autotools.core</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View file

@ -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

View file

@ -0,0 +1,15 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.core.autotools.core;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: org.eclipse.cdt.core.autotools.core.internal.Activator
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.tools.templates.freemarker;bundle-version="1.0.0",
org.eclipse.cdt.core;bundle-version="6.3.1",
org.eclipse.core.resources;bundle-version="3.12.0"
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Bundle-Vendor: %providerName
Export-Package: org.eclipse.cdt.core.autotools.core
Bundle-Localization: plugin

View file

@ -0,0 +1,24 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>About</title></head>
<body lang="EN-US">
<h2>About This Content</h2>
<p>June 22, 2007</p>
<h3>License</h3>
<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
indicated below, the Content is provided to you under the terms and conditions of the
Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
For purposes of the EPL, "Program" will mean the Content.</p>
<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
being redistributed by another party ("Redistributor") and different terms and conditions may
apply to your use of any object code in the Content. Check the Redistributor's license that was
provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
indicated below, the terms and conditions of the EPL still apply to any source code in the Content
and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
</body></html>

View file

@ -0,0 +1,8 @@
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
.,\
plugin.xml,\
about.html,\
templates/,\
plugin.properties

View file

@ -0,0 +1,10 @@
###############################################################################
# Copyright (c) 2017 Intel Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
###############################################################################
pluginName=CDT Autotools Core
providerName=Eclipse CDT

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
id="autotoolsNature"
point="org.eclipse.core.resources.natures">
<runtime>
<run
class="org.eclipse.cdt.core.autotools.core.AutotoolsNature">
</run>
</runtime>
</extension>
<extension
point="org.eclipse.cdt.core.buildConfigProvider">
<provider
class="org.eclipse.cdt.core.autotools.core.AutotoolsBuildConfigurationProvider"
id="org.eclipse.cdt.core.autotools.core.provider"
natureId="org.eclipse.cdt.core.autotools.core.autotoolsNature">
</provider>
</extension>
</plugin>

View file

@ -0,0 +1,78 @@
/*******************************************************************************
* Copyright (c) 2017 Intel Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Intel Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.autotools.core;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import org.eclipse.cdt.core.IConsoleParser;
import org.eclipse.cdt.core.build.CBuildConfiguration;
import org.eclipse.cdt.core.build.IToolChain;
import org.eclipse.cdt.core.resources.IConsole;
import org.eclipse.cdt.core.autotools.core.internal.Activator;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
public class AutotoolsBuildConfiguration extends CBuildConfiguration {
public static final String AUTOTOOLS_GENERATOR = "autotools.generator"; //$NON-NLS-1$
public static final String AUTOTOOLS_ARGUMENTS = "autotools.arguments"; //$NON-NLS-1$
public static final String BUILD_COMMAND = "autotools.command.build"; //$NON-NLS-1$
public static final String CLEAN_COMMAND = "autotools.command.clean"; //$NON-NLS-1$
public AutotoolsBuildConfiguration(IBuildConfiguration config, String name) throws CoreException {
super(config, name);
}
public AutotoolsBuildConfiguration(IBuildConfiguration config, String name, IToolChain toolChain) {
super(config, name, toolChain, "run"); // TODO: why "run"
}
@Override
public IProject[] build(int kind, Map<String, String> args, IConsole console, IProgressMonitor monitor)
throws CoreException {
IProject project = getProject();
execute(Arrays.asList(new String[] { "autoreconf", "--install" }), project.getLocation(), console, monitor);
execute(Arrays.asList(new String[] { "./configure" }), project.getLocation(), console, monitor);
execute(Arrays.asList(new String[] { "make" }), project.getLocation(), console, monitor);
return new IProject[] { project };
}
@Override
public void clean(IConsole console, IProgressMonitor monitor) throws CoreException {
execute(Arrays.asList(new String[] { "make", "clean" }), getProject().getLocation(), console, monitor);
}
protected void execute(List<String> command, IPath dir, IConsole console, IProgressMonitor monitor) throws CoreException {
ProcessBuilder builder = new ProcessBuilder(command).directory(dir.toFile());
try {
Process process = builder.start();
watchProcess(process, new IConsoleParser[0], console);
} catch (IOException e) {
throw new CoreException(Activator.errorStatus("Error executing: " + String.join(" ", command), e));
}
getProject().refreshLocal(IResource.DEPTH_INFINITE, monitor);
}
}

View file

@ -0,0 +1,104 @@
/*******************************************************************************
* Copyright (c) 2017 Intel Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Intel Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.autotools.core;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.cdt.core.build.CBuildConfiguration;
import org.eclipse.cdt.core.build.ICBuildConfiguration;
import org.eclipse.cdt.core.build.ICBuildConfigurationManager;
import org.eclipse.cdt.core.build.ICBuildConfigurationProvider;
import org.eclipse.cdt.core.build.IToolChain;
import org.eclipse.cdt.core.build.IToolChainManager;
import org.eclipse.cdt.core.autotools.core.internal.Activator;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Platform;
public class AutotoolsBuildConfigurationProvider implements ICBuildConfigurationProvider {
public static final String ID = Activator.PLUGIN_ID + ".provider"; //$NON-NLS-1$
private ICBuildConfigurationManager configManager = Activator.getService(ICBuildConfigurationManager.class);
@Override
public String getId() {
return ID;
}
@Override
public ICBuildConfiguration getCBuildConfiguration(IBuildConfiguration config, String name) throws CoreException {
IToolChain toolChain = null;
// try the toolchain for the local target
Map<String, String> properties = new HashMap<>();
properties.put(IToolChain.ATTR_OS, Platform.getOS());
properties.put(IToolChain.ATTR_ARCH, Platform.getOSArch());
IToolChainManager toolChainManager = Activator.getService(IToolChainManager.class);
for (IToolChain tc : toolChainManager.getToolChainsMatching(properties)) {
toolChain = tc;
break;
}
// local didn't work, try and find one that does
if (toolChain == null) {
for (IToolChain tc : toolChainManager.getToolChainsMatching(new HashMap<>())) {
toolChain = tc;
break;
}
}
if (toolChain != null) {
return new AutotoolsBuildConfiguration(config, name, toolChain);
} else {
return null;
}
}
@Override
public ICBuildConfiguration createBuildConfiguration(IProject project, IToolChain toolChain, String launchMode,
IProgressMonitor monitor) throws CoreException {
// See if there is one already
for (IBuildConfiguration config : project.getBuildConfigs()) {
ICBuildConfiguration cconfig = config.getAdapter(ICBuildConfiguration.class);
if (cconfig != null) {
CBuildConfiguration cmakeConfig = cconfig.getAdapter(AutotoolsBuildConfiguration.class);
if (cmakeConfig != null && cmakeConfig.getToolChain().equals(toolChain)
&& launchMode.equals(cmakeConfig.getLaunchMode())) {
return cconfig;
}
}
}
// get matching toolchain file if any
Map<String, String> properties = new HashMap<>();
String os = toolChain.getProperty(IToolChain.ATTR_OS);
if (os != null && !os.isEmpty()) {
properties.put(IToolChain.ATTR_OS, os);
}
String arch = toolChain.getProperty(IToolChain.ATTR_ARCH);
if (!arch.isEmpty()) {
properties.put(IToolChain.ATTR_ARCH, arch);
}
// create config
String configName = "autotools." + launchMode + '.' + toolChain.getId(); //$NON-NLS-1$
IBuildConfiguration config = configManager.createBuildConfiguration(this, project, configName, monitor);
CBuildConfiguration autotoolsConfig = new AutotoolsBuildConfiguration(config, configName);
configManager.addBuildConfiguration(config, autotoolsConfig);
return autotoolsConfig;
}
}

View file

@ -0,0 +1,56 @@
/*******************************************************************************
* Copyright (c) 2017 Intel Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Intel Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.autotools.core;
import org.eclipse.cdt.core.build.CBuilder;
import org.eclipse.cdt.core.autotools.core.internal.Activator;
import org.eclipse.core.resources.ICommand;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.resources.IProjectNature;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
public class AutotoolsNature implements IProjectNature {
public static final String ID = Activator.PLUGIN_ID + ".autotoolsNature"; //$NON-NLS-1$
private IProject project;
public static void setupBuilder(IProjectDescription projDesc) throws CoreException {
ICommand command = projDesc.newCommand();
CBuilder.setupBuilder(command);
projDesc.setBuildSpec(new ICommand[] { command });
}
@Override
public void configure() throws CoreException {
IProjectDescription projDesc = project.getDescription();
setupBuilder(projDesc);
project.setDescription(projDesc, new NullProgressMonitor());
}
@Override
public void deconfigure() throws CoreException {
}
@Override
public IProject getProject() {
return project;
}
@Override
public void setProject(IProject project) {
this.project = project;
}
}

View file

@ -0,0 +1,88 @@
/*******************************************************************************
* Copyright (c) 2017 Intel Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Intel Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.autotools.core;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.eclipse.cdt.core.CCProjectNature;
import org.eclipse.cdt.core.CProjectNature;
import org.eclipse.cdt.core.build.CBuilder;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.IPathEntry;
import org.eclipse.cdt.core.autotools.core.internal.Activator;
import org.eclipse.core.resources.ICommand;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.tools.templates.core.IGenerator;
import org.eclipse.tools.templates.freemarker.FMProjectGenerator;
import org.eclipse.tools.templates.freemarker.SourceRoot;
import org.eclipse.tools.templates.freemarker.TemplateManifest;
import org.osgi.framework.Bundle;
public class AutotoolsProjectGenerator extends FMProjectGenerator implements IGenerator {
public AutotoolsProjectGenerator(String manifestFile) {
super(manifestFile);
}
@Override
protected void initProjectDescription(IProjectDescription description) {
description
.setNatureIds(
new String[] { CProjectNature.C_NATURE_ID, CCProjectNature.CC_NATURE_ID, AutotoolsNature.ID });
ICommand command = description.newCommand();
CBuilder.setupBuilder(command);
description.setBuildSpec(new ICommand[] { command });
}
@Override
public Bundle getSourceBundle() {
return Activator.getContext().getBundle();
}
@Override
public void generate(Map<String, Object> model, IProgressMonitor monitor) throws CoreException {
super.generate(model, monitor);
List<IPathEntry> entries = new ArrayList<>();
IProject project = getProject();
// Create the source folders
TemplateManifest manifest = getManifest();
if (manifest != null) {
List<SourceRoot> srcRoots = getManifest().getSrcRoots();
if (srcRoots != null && !srcRoots.isEmpty()) {
for (SourceRoot srcRoot : srcRoots) {
IFolder sourceFolder = project.getFolder(srcRoot.getDir());
if (!sourceFolder.exists()) {
sourceFolder.create(true, true, monitor);
}
entries.add(CoreModel.newSourceEntry(sourceFolder.getFullPath()));
}
} else {
entries.add(CoreModel.newSourceEntry(getProject().getFullPath()));
}
}
entries.add(CoreModel.newOutputEntry(getProject().getFullPath())); //$NON-NLS-1$
CoreModel.getDefault().create(project).setRawPathEntries(entries.toArray(new IPathEntry[entries.size()]),
monitor);
}
}

View file

@ -0,0 +1,55 @@
/*******************************************************************************
* Copyright (c) 2017 Intel Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Intel Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.autotools.core.internal;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
public class Activator implements BundleActivator {
// The plug-in ID
public static final String PLUGIN_ID = "org.eclipse.cdt.core.autotools.core"; //$NON-NLS-1$
private static BundleContext context;
public static BundleContext getContext() {
return context;
}
/*
* (non-Javadoc)
* @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
*/
public void start(BundleContext bundleContext) throws Exception {
Activator.context = bundleContext;
}
/*
* (non-Javadoc)
* @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
*/
public void stop(BundleContext bundleContext) throws Exception {
Activator.context = null;
}
public static IStatus errorStatus(String message, Throwable cause) {
return new Status(IStatus.ERROR, PLUGIN_ID, message, cause);
}
public static <T> T getService(Class<T> service) {
ServiceReference<T> ref = context.getServiceReference(service);
return ref != null ? context.getService(ref) : null;
}
}

View file

@ -0,0 +1,2 @@
SUBDIRS = src
dist_doc_DATA = README

View file

@ -0,0 +1 @@
Autotools project README file

View file

@ -0,0 +1,8 @@
AC_INIT([main)], [1.0])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_PROG_CC
AC_CONFIG_FILES([
Makefile
src/Makefile
])
AC_OUTPUT

View file

@ -0,0 +1,13 @@
<templateManifest>
<file src="/templates/autotools/README"
dest="/${projectName}/README"/>
<file src="/templates/autotools/configure.ac"
dest="/${projectName}/configure.ac"/>
<file src="/templates/autotools/Makefile.am"
dest="/${projectName}/Makefile.am"/>
<file src="/templates/autotools/src/main.c"
dest="/${projectName}/src/main.c"
open="true"/>
<file src="/templates/autotools/src/Makefile.am"
dest="/${projectName}/src/Makefile.am"/>
</templateManifest>

View file

@ -0,0 +1,2 @@
bin_PROGRAMS = hello
hello_SOURCES = main.c

View file

@ -0,0 +1,8 @@
#include <stdio.h>
int main(void) {
printf("Hello from autotools!\n");
return 0;
}

View file

@ -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>

View file

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>org.eclipse.cdt.core.autotools.ui</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>

View file

@ -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

View file

@ -0,0 +1,16 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.core.autotools.ui;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: org.eclipse.cdt.core.autotools.ui.internal.Activator
Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.tools.templates.ui;bundle-version="1.1.1",
org.eclipse.ui.ide;bundle-version="3.13.0",
org.eclipse.cdt.core.autotools.core;bundle-version="1.0.0",
org.eclipse.tools.templates.freemarker;bundle-version="1.0.0"
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Bundle-Localization: plugin

View file

@ -0,0 +1,24 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>About</title></head>
<body lang="EN-US">
<h2>About This Content</h2>
<p>June 22, 2007</p>
<h3>License</h3>
<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
indicated below, the Content is provided to you under the terms and conditions of the
Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
For purposes of the EPL, "Program" will mean the Content.</p>
<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
being redistributed by another party ("Redistributor") and different terms and conditions may
apply to your use of any object code in the Content. Check the Redistributor's license that was
provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
indicated below, the terms and conditions of the EPL still apply to any source code in the Content
and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
</body></html>

View file

@ -0,0 +1,7 @@
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
.,\
plugin.xml,\
about.html,\
plugin.properties

View file

@ -0,0 +1,12 @@
###############################################################################
# Copyright (c) 2017 Intel Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
###############################################################################
pluginName=CDT Autotools UI
providerName=Eclipse CDT
autotoolsTemplate.label=Autotools Project
autotoolsTemplate.description=An Autotools project with a Hello World executable build using the CDT's core build system. Can be built using toolchain containers.

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
point="org.eclipse.tools.templates.ui.templates">
<template
id="org.eclipse.cdt.core.autotools.ui.template1"
label="%autotoolsTemplate.label"
wizard="org.eclipse.cdt.core.autotools.ui.internal.NewAutotoolsProjectWizard">
<tagReference
id="org.eclipse.cdt.ui.cdtTag">
</tagReference>
<description>
%autotoolsTemplate.description
</description>
</template>
</extension>
</plugin>

View file

@ -0,0 +1,61 @@
/*******************************************************************************
* Copyright (c) 2017 Intel Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Intel Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.autotools.ui.internal;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
/**
* The activator class controls the plug-in life cycle
*/
public class Activator extends AbstractUIPlugin {
// The plug-in ID
public static final String PLUGIN_ID = "org.eclipse.cdt.core.autotools.ui"; //$NON-NLS-1$
// The shared instance
private static Activator plugin;
/**
* The constructor
*/
public Activator() {
}
/*
* (non-Javadoc)
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
*/
public void start(BundleContext context) throws Exception {
super.start(context);
plugin = this;
}
/*
* (non-Javadoc)
* @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
*/
public void stop(BundleContext context) throws Exception {
plugin = null;
super.stop(context);
}
/**
* Returns the shared instance
*
* @return the shared instance
*/
public static Activator getDefault() {
return plugin;
}
}

View file

@ -0,0 +1,27 @@
/*******************************************************************************
* Copyright (c) 2017 Intel Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Intel Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.autotools.ui.internal;
import org.eclipse.osgi.util.NLS;
public class Messages extends NLS {
private static final String BUNDLE_NAME = "org.eclipse.cdt.core.autotools.ui.internal.messages"; //$NON-NLS-1$
public static String NewAutotoolsProjectWizard_Description;
public static String NewAutotoolsProjectWizard_Title;
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
}
private Messages() {
}
}

View file

@ -0,0 +1,51 @@
/*******************************************************************************
* Copyright (c) 2017 Intel Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Intel Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.autotools.ui.internal;
import org.eclipse.cdt.core.autotools.core.AutotoolsProjectGenerator;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.tools.templates.core.IGenerator;
import org.eclipse.tools.templates.ui.TemplateWizard;
import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;
public class NewAutotoolsProjectWizard extends TemplateWizard {
private WizardNewProjectCreationPage mainPage;
@Override
public void addPages() {
mainPage = new WizardNewProjectCreationPage("basicNewProjectPage") { //$NON-NLS-1$
@Override
public void createControl(Composite parent) {
super.createControl(parent);
createWorkingSetGroup((Composite) getControl(), getSelection(),
new String[] { "org.eclipse.ui.resourceWorkingSetPage" }); //$NON-NLS-1$
Dialog.applyDialogFont(getControl());
}
};
mainPage.setTitle(Messages.NewAutotoolsProjectWizard_Title);
mainPage.setDescription(Messages.NewAutotoolsProjectWizard_Description);
this.addPage(mainPage);
}
@Override
protected IGenerator getGenerator() {
AutotoolsProjectGenerator generator = new AutotoolsProjectGenerator("templates/autotools/manifest.xml"); //$NON-NLS-1$
generator.setProjectName(mainPage.getProjectName());
if (!mainPage.useDefaults()) {
generator.setLocationURI(mainPage.getLocationURI());
}
return generator;
}
}

View file

@ -0,0 +1,9 @@
###############################################################################
# Copyright (c) 2017 Intel Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
###############################################################################
NewAutotoolsProjectWizard_Description=Specify properties of new Autotools project.
NewAutotoolsProjectWizard_Title=New Autotools Project

View file

@ -73,6 +73,10 @@
<module>build/org.eclipse.cdt.cmake.ui</module> <module>build/org.eclipse.cdt.cmake.ui</module>
<module>build/org.eclipse.cdt.cmake-feature</module> <module>build/org.eclipse.cdt.cmake-feature</module>
<module>build/org.eclipse.cdt.core.autotools.core</module>
<module>build/org.eclipse.cdt.core.autotools.ui</module>
<module>build/org.eclipse.cdt.core.autotools-feature</module>
<module>codan/org.eclipse.cdt.codan.core</module> <module>codan/org.eclipse.cdt.codan.core</module>
<module>codan/org.eclipse.cdt.codan.ui</module> <module>codan/org.eclipse.cdt.codan.ui</module>
<module>codan/org.eclipse.cdt.codan.core.cxx</module> <module>codan/org.eclipse.cdt.codan.core.cxx</module>

View file

@ -149,6 +149,12 @@
<feature url="features/org.eclipse.cdt.cmake.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.cmake.source" version="0.0.0"> <feature url="features/org.eclipse.cdt.cmake.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.cmake.source" version="0.0.0">
<category name="extra"/> <category name="extra"/>
</feature> </feature>
<feature url="features/org.eclipse.cdt.core.autotools_0.0.0.qualifier.jar" id="org.eclipse.cdt.core.autotools" version="0.0.0">
<category name="extra"/>
</feature>
<feature url="features/org.eclipse.cdt.core.autotools.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.core.autotools.source" version="0.0.0">
<category name="extra"/>
</feature>
<feature url="features/org.eclipse.cdt.llvm.dsf.lldb_0.0.0.qualifier.jar" id="org.eclipse.cdt.llvm.dsf.lldb" version="0.0.0"> <feature url="features/org.eclipse.cdt.llvm.dsf.lldb_0.0.0.qualifier.jar" id="org.eclipse.cdt.llvm.dsf.lldb" version="0.0.0">
<category name="extra"/> <category name="extra"/>
</feature> </feature>