diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000000..cb247fddaa8 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,72 @@ +# Contributing to Eclipse C/C++ Development Tools + +Thanks for your interest in this project. + +## Project description + +The Eclipse CDT Project provides a fully functional C and C++ Integrated +Development Environment based on the Eclipse platform. Features include: support +for project creation and managed build for various toolchains, standard make +build, source navigation, various source knowledge tools, such as type +hierarchy, call graph, include browser, macro definition browser, code editor +with syntax highlighting, folding and hyperlink navigation, source code +refactoring and code generation, visual debugging tools, including memory, +registers, and disassembly viewers. + +* https://projects.eclipse.org/projects/tools.cdt + +## Developer resources + +### Building CDT + +The recommended flow for most users is to follow instructions on [getting started with CDT development](https://wiki.eclipse.org/Getting_started_with_CDT_development). + +For information on building CDT from the command line using maven, refer to the [README](README.md)'s Command-line Build instructions with Maven section. + + +Additional information is available on: + +* https://github.com/eclipse-cdt/cdt-infra/wiki +* https://projects.eclipse.org/projects/tools.cdt/developer + +The project maintains the following source code repositories + +* https://git.eclipse.org/r/plugins/gitiles/cdt/org.eclipse.cdt +* https://git.eclipse.org/r/plugins/gitiles/cdt/org.eclipse.cdt.edc +* http://git.eclipse.org/c/cdt/org.eclipse.cdt.master.git +* https://git.eclipse.org/r/plugins/gitiles/cdt/org.eclipse.launchbar +* https://git.eclipse.org/r/plugins/gitiles/cdt/org.eclipse.tools.templates +* https://github.com/eclipse-cdt/cdt-gdb-adapter +* https://github.com/eclipse-cdt/cdt-gdb-vscode +* https://github.com/eclipse-cdt/cdt-vscode +* https://github.com/eclipse-cdt/cdt-infra + +This project uses Bugzilla to track ongoing development and issues. + +* Search for issues: https://bugs.eclipse.org/bugs/buglist.cgi?product=CDT +* Create a new report: https://bugs.eclipse.org/bugs/enter_bug.cgi?product=CDT + +Be sure to search for existing bugs before you create another one. Remember that +contributions are always welcome! + +## Eclipse Contributor Agreement + +Before your contribution can be accepted by the project team contributors must +electronically sign the Eclipse Contributor Agreement (ECA). + +* http://www.eclipse.org/legal/ECA.php + +Commits that are provided by non-committers must have a Signed-off-by field in +the footer indicating that the author is aware of the terms by which the +contribution has been provided to the project. The non-committer must +additionally have an Eclipse Foundation account and must have a signed Eclipse +Contributor Agreement (ECA) on file. + +For more information, please see the Eclipse Committer Handbook: +https://www.eclipse.org/projects/handbook/#resources-commit + +## Contact + +Contact the project developers via the project's "dev" list. + +* https://dev.eclipse.org/mailman/listinfo/cdt-dev diff --git a/README.md b/README.md new file mode 100644 index 00000000000..776118ec6bf --- /dev/null +++ b/README.md @@ -0,0 +1,93 @@ +# Eclipse CDT + +## Contributing + +Please see [CONTRIBUTING.md] for contributing information + +## Developing CDT + +Most developers, developing CDT in the Eclipse IDE, should use https://wiki.eclipse.org/Getting_started_with_CDT_development. + +## Command-line Build instructions with Maven + +Eclipse CDT uses the standard Maven and Tycho workflow for building CDT using Maven 3.6.0 and Java 8. Therefore to package CDT do: + +``` +mvn package +``` + +and the resulting p2 repository will be in `releng/org.eclipse.cdt.repo/target/repository` + +The current set of options to Maven used for building on the CI can be seen in the Jenkinsfiles +on cdt-infra: https://github.com/eclipse-cdt/cdt-infra/tree/master/jenkins/pipelines/cdt + +To build CDT plug-ins you need a standard Maven & Java developement environment. The Dockerfiles used for CDT's images are +published in cdt-infra https://github.com/eclipse-cdt/cdt-infra/tree/master/docker. The requirements for running all tests +successfully and for rebuilding non-Java parts of CDT are much more extensive than standard Maven & Java and include +items such as GCC, GDB, yarn, Node, etc. Refer to the Dockerfiles for the current versions of those dependencies. + +### Profiles + +There are a number of profiles (-P to mvn) to control the behaviour of the build. + +#### cdtRepo, simrelRepo, defaultCdtTarget + +Individual p2 repos can be turned on and off to allow building CDT, or parts of CDT against +different target platforms easily. +For example, you can: +- test CDT against a pre-built CDT by using the cdtRepo profile. +- build the standalone rcp debugger against the latest simrel `mvn verify -DuseSimrelRepo -f debug/org.eclipse.cdt.debug.application.product` + +#### build-standalone-debugger-rcp + +Using the `build-standalone-debugger-rcp` profile will include the standalone debugger, located +in `debug/org.eclipse.cdt.debug.application.product` + +#### skip-all-tests, skip-tests-except-cdt-ui, skip-tests-except-dsf-gdb, skip-tests-except-lsp, skip-tests-except-cdt-other + +Using any of the above profiles can skip large sets of tests. The CI build uses this to parallelize tests. See https://ci.eclipse.org/cdt/view/Gerrit/ + +#### baseline-compare-and-replace + +`baseline-compare-and-replace` profile controls whether baseline replace and compare +is performed. On a local build you want to avoid baseline replace and compare, +especially if you have different versions of Java than the baseline was built with. + +If you have the same version of Java as the build machine you can run baseline comparison and +replace. To do that run with the `baseline-compare-and-replace` profile. + +Requires verify phase of maven to run, i.e. will not run with `mvn package` even if profile is specified. + +#### production + +Runs the production steps of the build. This profile can only be run on the CDT CI machines +as access to Eclipse key signing server is needed to sign the jars. + +### Profiles + +There are a number of properties (-D to mvn) to control the behaviour of the build. Refer to the +pom.xml for the full list. Many of the properties are not intended to be set at the command +line. + +#### skipDoc + +Documentation generation for CDT can be time consuming. For local builds this can be skipped +with `-DskipDoc=true` + +#### skipTests + +Running tests for CDT can be time consuming. For local builds this can be skipped +with `-DskipTests=true`. + +#### jgit.dirtyWorkingTree-cdtDefault + +Running a build with uncommitted changes will normally cause an error. To run a build with +uncommited changes use `-Djgit.dirtyWorkingTree-cdtDefault=warning` + +#### dsf.gdb.tests.gdbPath + +For running CDT's DSF-GDB tests, this specifies the path to the location of gdb. + +#### cdt.tests.dsf.gdb.versions + +For running CDT's DSF-GDB tests, this specifies the executable names of the gdbs to run, comma-separated. diff --git a/pom.xml b/pom.xml index 41e77ceaf0b..861b7f3de88 100644 --- a/pom.xml +++ b/pom.xml @@ -1,4 +1,14 @@ +