clang-analyzer plugins require LLVM_ENABLE_PLUGINS also

The clang-analyzer plugins are not linked to a particular tool, so they
can only be compiled if plugins are broadly supported. We could opt
instead to decide whether to link them to specifically against clang or
with undefined symbols, depending on the value of LLVM_ENABLE_PLUGINS,
but we do not currently expect there to be a use case for that rather
niche configuration.

Differential Revision: https://reviews.llvm.org/D119591
This commit is contained in:
Jameson Nash 2022-02-11 16:42:37 -05:00
parent fbf7bbcb83
commit 9d59cfc67e
9 changed files with 25 additions and 15 deletions

View File

@ -476,9 +476,14 @@ add_definitions( -D_GNU_SOURCE )
option(CLANG_BUILD_TOOLS
"Build the Clang tools. If OFF, just generate build targets." ON)
if(LLVM_ENABLE_PLUGINS OR LLVM_EXPORT_SYMBOLS_FOR_PLUGINS)
set(HAVE_CLANG_PLUGIN_SUPPORT ON)
else()
set(HAVE_CLANG_PLUGIN_SUPPORT OFF)
endif()
CMAKE_DEPENDENT_OPTION(CLANG_PLUGIN_SUPPORT
"Build clang with plugin support" ON
"LLVM_ENABLE_PLUGINS OR LLVM_EXPORT_SYMBOLS_FOR_PLUGINS" OFF)
"HAVE_CLANG_PLUGIN_SUPPORT" OFF)
option(CLANG_ENABLE_ARCMT "Build ARCMT." ON)
option(CLANG_ENABLE_STATIC_ANALYZER

View File

@ -1,6 +1,6 @@
add_llvm_library(AnnotateFunctions MODULE AnnotateFunctions.cpp PLUGIN_TOOL clang)
if(CLANG_PLUGIN_SUPPORT AND (WIN32 OR CYGWIN))
if(WIN32 OR CYGWIN)
set(LLVM_LINK_COMPONENTS
Support
)

View File

@ -1,6 +1,6 @@
add_llvm_library(Attribute MODULE Attribute.cpp PLUGIN_TOOL clang)
if(CLANG_PLUGIN_SUPPORT AND (WIN32 OR CYGWIN))
if(WIN32 OR CYGWIN)
target_link_libraries(Attribute PRIVATE
clangAST
clangBasic

View File

@ -3,8 +3,10 @@ if(NOT CLANG_BUILD_EXAMPLES)
set(EXCLUDE_FROM_ALL ON)
endif()
add_subdirectory(PrintFunctionNames)
add_subdirectory(AnnotateFunctions)
add_subdirectory(Attribute)
add_subdirectory(CallSuperAttribute)
add_subdirectory(PluginsOrder)
if(CLANG_PLUGIN_SUPPORT)
add_subdirectory(PrintFunctionNames)
add_subdirectory(AnnotateFunctions)
add_subdirectory(Attribute)
add_subdirectory(CallSuperAttribute)
add_subdirectory(PluginsOrder)
endif()

View File

@ -1,6 +1,6 @@
add_llvm_library(CallSuperAttr MODULE CallSuperAttrInfo.cpp PLUGIN_TOOL clang)
if(CLANG_PLUGIN_SUPPORT AND (WIN32 OR CYGWIN))
if(WIN32 OR CYGWIN)
set(LLVM_LINK_COMPONENTS
Support
)

View File

@ -1,6 +1,6 @@
add_llvm_library(PluginsOrder MODULE PluginsOrder.cpp PLUGIN_TOOL clang)
if(CLANG_PLUGIN_SUPPORT AND (WIN32 OR CYGWIN))
if(WIN32 OR CYGWIN)
set(LLVM_LINK_COMPONENTS
Support
)

View File

@ -11,7 +11,7 @@ endif()
add_llvm_library(PrintFunctionNames MODULE PrintFunctionNames.cpp PLUGIN_TOOL clang)
if(CLANG_PLUGIN_SUPPORT AND (WIN32 OR CYGWIN))
if(WIN32 OR CYGWIN)
set(LLVM_LINK_COMPONENTS
Support
)

View File

@ -1,4 +1,7 @@
if(CLANG_ENABLE_STATIC_ANALYZER AND CLANG_PLUGIN_SUPPORT)
# Since these do not specify a specific PLUGIN_TOOL (which could be clang or
# clang-tidy), we cannot compile this unless the platform supports plugins with
# undefined symbols, and cannot use it unless the user has opted for clang plugins).
if(CLANG_ENABLE_STATIC_ANALYZER AND CLANG_PLUGIN_SUPPORT AND LLVM_ENABLE_PLUGINS)
add_subdirectory(SampleAnalyzer)
add_subdirectory(CheckerDependencyHandling)
add_subdirectory(CheckerOptionHandling)

View File

@ -95,7 +95,7 @@ if (CLANG_ENABLE_ARCMT)
)
endif ()
if (CLANG_BUILD_EXAMPLES)
if(CLANG_BUILD_EXAMPLES AND CLANG_PLUGIN_SUPPORT)
list(APPEND CLANG_TEST_DEPS
Attribute
AnnotateFunctions
@ -145,8 +145,8 @@ if( NOT CLANG_BUILT_STANDALONE )
endif()
endif()
if (CLANG_ENABLE_STATIC_ANALYZER)
if (CLANG_PLUGIN_SUPPORT)
if(CLANG_ENABLE_STATIC_ANALYZER)
if(CLANG_PLUGIN_SUPPORT AND LLVM_ENABLE_PLUGINS) # Determine if we built them
list(APPEND CLANG_TEST_DEPS
SampleAnalyzerPlugin
CheckerDependencyHandlingAnalyzerPlugin