Add a flag that controls if clang-tidy and clang-include-fixer are built into libclang.
Based on the discussion on D55415, also make the flag default to false. Having libclang depend on clang-tools-extra means check-clang builds all of clang-tools-extra, which besides being a layering violation takes quite some time, since clang-tools-extra has many files that are slow to compile. Longer term, we likely will want to remove this flag completely. If people need this functionality, maybe there could be a libclang-tools-extra that's libclang + clang-tidy and clang-includes-fixer linked in. Differential Revision: https://reviews.llvm.org/D79599
This commit is contained in:
@@ -240,7 +240,11 @@ Build System Changes
|
||||
These are major changes to the build system that have happened since the 10.0.0
|
||||
release of Clang. Users of the build system should adjust accordingly.
|
||||
|
||||
- ...
|
||||
- clang-tidy and clang-include-fixer are no longer compiled into libclang by
|
||||
default. You can set ``LIBCLANG_INCLUDE_CLANG_TOOLS_EXTRA=ON`` to undo that,
|
||||
but it's expected that that setting will go away eventually. If this is
|
||||
something you need, please reach out to the mailing list to discuss possible
|
||||
ways forward.
|
||||
|
||||
AST Matchers
|
||||
------------
|
||||
|
||||
@@ -50,13 +50,20 @@ if (CLANG_ENABLE_ARCMT)
|
||||
list(APPEND LIBS clangARCMigrate)
|
||||
endif ()
|
||||
|
||||
if (TARGET clangTidyPlugin)
|
||||
add_definitions(-DCLANG_TOOL_EXTRA_BUILD)
|
||||
list(APPEND LIBS clangTidyPlugin)
|
||||
list(APPEND LIBS clangIncludeFixerPlugin)
|
||||
if(LLVM_ENABLE_MODULES)
|
||||
list(APPEND LLVM_COMPILE_FLAGS "-fmodules-ignore-macro=CLANG_TOOL_EXTRA_BUILD")
|
||||
endif()
|
||||
option(LIBCLANG_INCLUDE_CLANG_TOOLS_EXTRA
|
||||
"Include code from clang-tools-extra in libclang." OFF)
|
||||
|
||||
if (LIBCLANG_INCLUDE_CLANG_TOOLS_EXTRA)
|
||||
if (TARGET clangTidyPlugin)
|
||||
add_definitions(-DCLANG_TOOL_EXTRA_BUILD)
|
||||
list(APPEND LIBS clangTidyPlugin)
|
||||
list(APPEND LIBS clangIncludeFixerPlugin)
|
||||
if(LLVM_ENABLE_MODULES)
|
||||
list(APPEND LLVM_COMPILE_FLAGS "-fmodules-ignore-macro=CLANG_TOOL_EXTRA_BUILD")
|
||||
endif()
|
||||
else ()
|
||||
message(FATAL_ERROR "LIBCLANG_INCLUDE_CLANG_TOOLS_EXTRA needs clang-tools-extra in LLVM_ENABLE_PROJECTS")
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
find_library(DL_LIBRARY_PATH dl)
|
||||
|
||||
@@ -9,6 +9,11 @@ import("//llvm/version.gni")
|
||||
# in the CMake build), so libclang is always a static library on linux
|
||||
# - the GN build doesn't have LIBCLANG_BUILD_STATIC
|
||||
|
||||
declare_args() {
|
||||
# Whether to include code from clang-tools-extra in libclang.
|
||||
libclang_include_clang_tools_extra = false
|
||||
}
|
||||
|
||||
libclang_target_type = "shared_library"
|
||||
if (host_os != "win" && host_os != "mac") {
|
||||
# ELF targets need -fPIC to build shared libs but they aren't on by default.
|
||||
@@ -41,9 +46,7 @@ target(libclang_target_type, "libclang") {
|
||||
|
||||
# FIXME: Once the GN build has a way to select which bits to build,
|
||||
# only include this dependency if clang-tools-extra is part of the build.
|
||||
# FIXME: libclang depending on anything in clang-tools-extra seems like
|
||||
# a layering violation.
|
||||
if (true) {
|
||||
if (libclang_include_clang_tools_extra) {
|
||||
defines += [ "CLANG_TOOL_EXTRA_BUILD" ]
|
||||
deps += [
|
||||
"//clang-tools-extra/clang-include-fixer/plugin",
|
||||
|
||||
Reference in New Issue
Block a user