From: Jonas Devlieghere Date: Wed, 16 May 2018 10:23:25 +0000 (+0000) Subject: [diagtool] Add diagtool to install target. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ad35972bde5110b7099283a1bc7dbb24f91326bf;p=clang [diagtool] Add diagtool to install target. 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 --- diff --git a/docs/CommandGuide/diagtool.rst b/docs/CommandGuide/diagtool.rst new file mode 100644 index 0000000000..59417f71f6 --- /dev/null +++ b/docs/CommandGuide/diagtool.rst @@ -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*] diff --git a/docs/CommandGuide/index.rst b/docs/CommandGuide/index.rst index 826ed97119..83a91182e9 100644 --- a/docs/CommandGuide/index.rst +++ b/docs/CommandGuide/index.rst @@ -15,3 +15,4 @@ Basic Commands :maxdepth: 1 clang + diagtool diff --git a/docs/ReleaseNotes.rst b/docs/ReleaseNotes.rst index 93a258c637..8414555464 100644 --- a/docs/ReleaseNotes.rst +++ b/docs/ReleaseNotes.rst @@ -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 diff --git a/tools/diagtool/CMakeLists.txt b/tools/diagtool/CMakeLists.txt index 5193c241cd..96d1c39024 100644 --- a/tools/diagtool/CMakeLists.txt +++ b/tools/diagtool/CMakeLists.txt @@ -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()