]> granicus.if.org Git - clang/commitdiff
[diagtool] Add diagtool to install target.
authorJonas Devlieghere <jonas@devlieghere.com>
Wed, 16 May 2018 10:23:25 +0000 (10:23 +0000)
committerJonas Devlieghere <jonas@devlieghere.com>
Wed, 16 May 2018 10:23:25 +0000 (10:23 +0000)
Although not very well known, diagtool is an incredibly convenient
utility for dealing with diagnostics.
Particularly useful are the "tree" and "show-enabled" commands:

 - The former prints the hierarchy of diagnostic (warning) flags and
   which of them are enabled by default.
 - The latter can be used to replace an invocation to clang and will
   print which diagnostics are disabled, warnings or errors.
   For instance: `diagtool show-enabled -Wall -Werror /tmp/test.c` will
   print that -Wunused-variable (warn_unused_variable) will be treated as
   an error.

This patch adds them to the install target so it gets shipped with the
LLVM release. It also adds a very basic man page and mentions this
change in the release notes.

Differential revision: https://reviews.llvm.org/D46694

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@332448 91177308-0d34-0410-b5e6-96231b3b80d8

docs/CommandGuide/diagtool.rst [new file with mode: 0644]
docs/CommandGuide/index.rst
docs/ReleaseNotes.rst
tools/diagtool/CMakeLists.txt

diff --git a/docs/CommandGuide/diagtool.rst b/docs/CommandGuide/diagtool.rst
new file mode 100644 (file)
index 0000000..59417f7
--- /dev/null
@@ -0,0 +1,52 @@
+diagtool - clang diagnostics tool
+=================================
+
+SYNOPSIS
+--------
+
+:program:`diagtool` *command* [*args*]
+
+DESCRIPTION
+-----------
+
+:program:`diagtool` is a combination of four tool for dealing with diagnostics in :program:`clang`.
+
+SUBCOMMANDS
+-----------
+
+:program:`diagtool` is separated into several subcommands each tailored to a
+different purpose. A brief summary of each command follows, with more detail in
+the sections that follow.
+
+  * :ref:`find_diagnostic_id` - Print the id of the given diagnostic.
+  * :ref:`list_warnings` - List warnings and their corresponding flags.
+  * :ref:`show_enabled` - Show which warnings are enabled for a given command line.
+  * :ref:`tree` - Show warning flags in a tree view.
+
+.. _find_diagnostic_id:
+
+find-diagnostic-id
+~~~~~~~~~~~~~~~~~~
+
+:program:`diagtool` find-diagnostic-id *diagnostic-name*
+
+.. _list_warnings:
+
+list-warnings
+~~~~~~~~~~~~~
+
+:program:`diagtool` list-warnings
+
+.. _show_enabled:
+
+show-enabled
+~~~~~~~~~~~~
+
+:program:`diagtool` show-enabled [*options*] *filename ...*
+
+.. _tree:
+
+tree
+~~~~
+
+:program:`diagtool` tree [*diagnostic-group*]
index 826ed9711980511cc549e3b8fe6e5e7a6a1994b7..83a91182e9ca6d8a0cb2d09550ed6c3443e62e8e 100644 (file)
@@ -15,3 +15,4 @@ Basic Commands
    :maxdepth: 1
 
    clang
+   diagtool
index 93a258c6378fde20f6001f7a8518e5848cf9d775..84145554647327edfa5086473794cfebb1349450 100644 (file)
@@ -93,6 +93,11 @@ Non-comprehensive list of changes in this release
   behavior can be restored by setting ``-fclang-abi-compat`` to ``6`` or
   lower.
 
+- An existing tool named ``diagtool`` has been added to the release. As the
+  name suggests, it helps with dealing with diagnostics in ``clang``, such as
+  finding out the warning hierarchy, and which of them are enabled by default
+  or for a particular compiler invocation.
+
 - ...
 
 New Compiler Flags
index 5193c241cd8e2696073a043b3a868ffab2e13a52..96d1c390249c3ca43c2a67c63370401869a95aff 100644 (file)
@@ -17,3 +17,15 @@ target_link_libraries(diagtool
   clangBasic
   clangFrontend
   )
+
+if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
+  install(TARGETS diagtool
+    COMPONENT diagtool
+    RUNTIME DESTINATION bin)
+
+  if (NOT CMAKE_CONFIGURATION_TYPES)
+    add_llvm_install_targets(install-diagtool
+      DEPENDS diagtool
+      COMPONENT diagtool)
+  endif()
+endif()