From b7804ef3a746cd6c2c95c81eb19a81fb9df34cc6 Mon Sep 17 00:00:00 2001 From: Petr Hosek Date: Fri, 17 May 2019 06:07:37 +0000 Subject: [PATCH] [Analysis] Only run plugins tests if plugins are actually enabled When plugins aren't enabled, don't try to run plugins tests. Don't enable plugins unconditionally based on the platform, instead check if LLVM shared library is actually being built which may not be the case for every host configuration, even if the host itself supports plugins. This addresses test failures introduced by r360891/D59464. Differential Revision: https://reviews.llvm.org/D62050 llvm-svn: 360991 --- clang/test/Analysis/checker-plugins.c | 4 ++-- clang/test/CMakeLists.txt | 3 ++- clang/test/lit.cfg.py | 8 +------- clang/test/lit.site.cfg.py.in | 1 + llvm/cmake/modules/HandleLLVMOptions.cmake | 10 +++------- 5 files changed, 9 insertions(+), 17 deletions(-) diff --git a/clang/test/Analysis/checker-plugins.c b/clang/test/Analysis/checker-plugins.c index ce618f5cdd521..4ed4e8630e277 100644 --- a/clang/test/Analysis/checker-plugins.c +++ b/clang/test/Analysis/checker-plugins.c @@ -1,9 +1,9 @@ +// REQUIRES: plugins + // RUN: %clang_analyze_cc1 -verify %s \ // RUN: -load %llvmshlibdir/SampleAnalyzerPlugin%pluginext \ // RUN: -analyzer-checker='example.MainCallChecker' -// REQUIRES: plugins - // Test that the MainCallChecker example analyzer plugin loads and runs. int main(); diff --git a/clang/test/CMakeLists.txt b/clang/test/CMakeLists.txt index 9f6bcbb5ab538..339f637847deb 100644 --- a/clang/test/CMakeLists.txt +++ b/clang/test/CMakeLists.txt @@ -24,7 +24,8 @@ llvm_canonicalize_cmake_booleans( CLANG_ENABLE_STATIC_ANALYZER ENABLE_BACKTRACES HAVE_LIBZ - LLVM_ENABLE_PER_TARGET_RUNTIME_DIR) + LLVM_ENABLE_PER_TARGET_RUNTIME_DIR + LLVM_ENABLE_PLUGINS) configure_lit_site_cfg( ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in diff --git a/clang/test/lit.cfg.py b/clang/test/lit.cfg.py index ec08cc1eeae64..c66ed9c08aba9 100644 --- a/clang/test/lit.cfg.py +++ b/clang/test/lit.cfg.py @@ -85,13 +85,7 @@ os.path.join(config.clang_tools_dir, 'hmaptool')))) # Plugins (loadable modules) -# TODO: This should be supplied by Makefile or autoconf. -if sys.platform in ['win32', 'cygwin']: - has_plugins = config.enable_shared -else: - has_plugins = True - -if has_plugins and config.llvm_plugin_ext: +if config.has_plugins and config.llvm_plugin_ext: config.available_features.add('plugins') # Set available features we allow tests to conditionalize on. diff --git a/clang/test/lit.site.cfg.py.in b/clang/test/lit.site.cfg.py.in index 953fd8dd33aa0..06633b227c1ec 100644 --- a/clang/test/lit.site.cfg.py.in +++ b/clang/test/lit.site.cfg.py.in @@ -27,6 +27,7 @@ config.enable_backtrace = @ENABLE_BACKTRACES@ config.host_arch = "@HOST_ARCH@" config.python_executable = "@PYTHON_EXECUTABLE@" config.use_z3_solver = lit_config.params.get('USE_Z3_SOLVER', "@USE_Z3_SOLVER@") +config.has_plugins = @LLVM_ENABLE_PLUGINS@ # Support substitution of the tools and libs dirs with user parameters. This is # used when we can't determine the tool dir at configuration time. diff --git a/llvm/cmake/modules/HandleLLVMOptions.cmake b/llvm/cmake/modules/HandleLLVMOptions.cmake index ada9a680649b4..f716dbdcd2eac 100644 --- a/llvm/cmake/modules/HandleLLVMOptions.cmake +++ b/llvm/cmake/modules/HandleLLVMOptions.cmake @@ -920,14 +920,10 @@ endif() # Plugin support # FIXME: Make this configurable. -if(WIN32 OR CYGWIN) - if(BUILD_SHARED_LIBS OR LLVM_BUILD_LLVM_DYLIB) - set(LLVM_ENABLE_PLUGINS ON) - else() - set(LLVM_ENABLE_PLUGINS OFF) - endif() -else() +if(BUILD_SHARED_LIBS OR LLVM_BUILD_LLVM_DYLIB) set(LLVM_ENABLE_PLUGINS ON) +else() + set(LLVM_ENABLE_PLUGINS OFF) endif() # By default we should enable LLVM_ENABLE_IDE only for multi-configuration