diff --git a/clang/CMakeLists.txt b/clang/CMakeLists.txt --- a/clang/CMakeLists.txt +++ b/clang/CMakeLists.txt @@ -476,9 +476,14 @@ 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 diff --git a/clang/examples/AnnotateFunctions/CMakeLists.txt b/clang/examples/AnnotateFunctions/CMakeLists.txt --- a/clang/examples/AnnotateFunctions/CMakeLists.txt +++ b/clang/examples/AnnotateFunctions/CMakeLists.txt @@ -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 ) diff --git a/clang/examples/Attribute/CMakeLists.txt b/clang/examples/Attribute/CMakeLists.txt --- a/clang/examples/Attribute/CMakeLists.txt +++ b/clang/examples/Attribute/CMakeLists.txt @@ -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 diff --git a/clang/examples/CMakeLists.txt b/clang/examples/CMakeLists.txt --- a/clang/examples/CMakeLists.txt +++ b/clang/examples/CMakeLists.txt @@ -3,8 +3,10 @@ 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() diff --git a/clang/examples/CallSuperAttribute/CMakeLists.txt b/clang/examples/CallSuperAttribute/CMakeLists.txt --- a/clang/examples/CallSuperAttribute/CMakeLists.txt +++ b/clang/examples/CallSuperAttribute/CMakeLists.txt @@ -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 ) diff --git a/clang/examples/PluginsOrder/CMakeLists.txt b/clang/examples/PluginsOrder/CMakeLists.txt --- a/clang/examples/PluginsOrder/CMakeLists.txt +++ b/clang/examples/PluginsOrder/CMakeLists.txt @@ -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 ) diff --git a/clang/examples/PrintFunctionNames/CMakeLists.txt b/clang/examples/PrintFunctionNames/CMakeLists.txt --- a/clang/examples/PrintFunctionNames/CMakeLists.txt +++ b/clang/examples/PrintFunctionNames/CMakeLists.txt @@ -11,7 +11,7 @@ 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 ) diff --git a/clang/lib/Analysis/plugins/CMakeLists.txt b/clang/lib/Analysis/plugins/CMakeLists.txt --- a/clang/lib/Analysis/plugins/CMakeLists.txt +++ b/clang/lib/Analysis/plugins/CMakeLists.txt @@ -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) diff --git a/clang/test/CMakeLists.txt b/clang/test/CMakeLists.txt --- a/clang/test/CMakeLists.txt +++ b/clang/test/CMakeLists.txt @@ -95,7 +95,7 @@ ) endif () -if (CLANG_BUILD_EXAMPLES) +if(CLANG_BUILD_EXAMPLES AND CLANG_PLUGIN_SUPPORT) list(APPEND CLANG_TEST_DEPS Attribute AnnotateFunctions @@ -145,8 +145,8 @@ 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