diff --git a/docs/ClangTools.html b/docs/ClangTools.html new file mode 100644 index 000000000000..6124153b38dc --- /dev/null +++ b/docs/ClangTools.html @@ -0,0 +1,118 @@ + + + +Clang Tools + + + + + + + +
+ +

Clang Tools

+

Clang Tools are standalone commandline (and potentially GUI) tools design for +use by C++ developers who are already using and enjoying Clang as their +compiler. These tools provide developer-oriented functionality such as fast +syntax checking, automatic formatting, refactoring, etc.

+ +

Only a couple of the most basic and fundamental tools are kept in the primary +Clang Subversion project. The rest of the tools are kept in a side-project so +that developers who don't want or need to build them don't. If you want to get +access to the extra Clang Tools repository, simply check it out into the tools +tree of your Clang checkout and follow the usual process for building and +working with a combined LLVM/Clang checkout:

+ + +

This document describes a high-level overview of the organization of Clang +Tools within the project as well as giving an introduction to some of the more +important tools. However, it should be noted that this document is currently +focused on Clang and Clang Tool developers, not on end users of these tools.

+ + +

Clang Tools Organization

+ + +

Clang Tools are CLI or GUI programs that are intended to be directly used by +C++ developers. That is they are not primarily for use by Clang +developers, although they are hopefully useful to C++ developers who happen to +work on Clang, and we try to actively dogfood their functionality. They are +developed in three components: the underlying infrastructure for building +a standalone tool based on Clang, core shared logic used by many different tools +in the form of refactoring and rewriting libraries, and the tools +themselves.

+ +

The underyling infrastructure for Clang Tools is the +LibTooling platform. See its documentation for +much more detailed information about how this infrastructuro works. The common +refactoring and rewriting toolkit-style library is also part of LibTooling +organizationally.

+ +

A few Clang Tools are developed along side the core Clang libraries as +examples and test cases of fundamental functionality. However, most of the tools +are developed in a side repository to provide easy separation from the core +libraries. We intentionally do not support public libraries in the side +repository, as we want to carefully review and find good APIs for libraries as +they are lifted out of a few tools and into the core Clang library set.

+ +

Regardless of which repositiory Clang Tools' code resides in, the development +process and practices for all Clang Tools are exactly those of Clang itself. +They are entirely within the Clang project, regardless of the version +control scheme.

+ + + +

Core Clang Tools

+ + +

The core set of Clang tools that are within the main repository are tools +that very specifically compliment, and allow use and testing of Clang +specific functionality.

+ +

clang-check

+

This tool combines the LibTooling framework for running a Clang tool with the +basic Clang diagnostics by syntax checking specific files in a fast, commandline +interface. It can also accept flags to re-display the diagnostics in different +formats with different flags, suitable for use driving an IDE or editor.

+ +

FIXME: Link to user-oriented clang-check documentation.

+ +

clang-fixit

+

A tool which specifically applies the Clang fix-it hint diagnostic technogoy +on top of a dedicated tool. It is designed to explore alternative interfaces for +applying fix-it hints, including automatic application, prompting users with +options for different fixes, etc.

+ +

Note that the clang-fixit tool is planned, but not yet implemented.

+ +

FIXME: Link to user-oriented clang-fixit documentation.

+ + +

Extra Clang Tools

+ + +

As various categories of Clang Tools are added to the extra repository, +they'll be tracked here. The focus of this documentation is on the scope and +features of the tools for other tool developers; each tool should provide its +own user-focused documentation.

+ +
+ + + diff --git a/docs/Tooling.html b/docs/Tooling.html index 4adaf16c547e..74837f4c99b9 100644 --- a/docs/Tooling.html +++ b/docs/Tooling.html @@ -97,6 +97,23 @@

LibTooling

  • do not want to write your tools in C++
  • + +

    Clang Tools

    + + +

    These are a collection of specific developer tools built on top of the +LibTooling infrastructure as part of the Clang project. They are targeted at +automating and improving core development activities of C/C++ developers.

    +

    Examples of tools we are building or planning as part of the Clang +project:

    + + diff --git a/www/get_started.html b/www/get_started.html index 2acd84b65254..7756f9e2e47b 100644 --- a/www/get_started.html +++ b/www/get_started.html @@ -58,6 +58,14 @@

    On Unix-like Systems

  • cd ../..
  • +
  • Checkout extra Clang Tools: (optional) + +
  • Checkout Compiler-RT: