r198747 - Add tests for clang plugins
Jordan Rose
jordan_rose at apple.com
Wed Jan 8 16:57:47 PST 2014
Great, now I don't have to do it. Thanks, Alp.
Jordan
On Jan 8, 2014, at 16:54, Alp Toker <alp at nuanti.com> wrote:
> Figured it out. r198820 (Add a test for Static Analyzer checker plugins)
>
> Alp.
>
> On 08/01/2014 19:01, Alp Toker wrote:
>> Hi Jordan,
>>
>> It should be possible to add a test for analyzer plugins using SampleAnalyzerPlugin now.
>>
>> Can you suggest an invocation that loads and verifies that it works?
>>
>> This should be testable now using the facilities I've checked in (assuming there's something in tree that knows how to load it).
>>
>> Alp.
>>
>>
>> On 08/01/2014 11:38, Alp Toker wrote:
>>> Author: alp
>>> Date: Wed Jan 8 05:38:47 2014
>>> New Revision: 198747
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=198747&view=rev
>>> Log:
>>> Add tests for clang plugins
>>>
>>> Somehow the entire plugin infrastructure went wholly untested until now.
>>>
>>> The only plugins available for use in testing are the examples, so plugin tests
>>> will only be run if CLANG_BUILD_EXAMPLES is enabled in the build.
>>>
>>> (The examples should really be enabled by default, not just to aid testing but
>>> also to prevent bitrot in some key user-facing code. I'll propose that
>>> shortly.)
>>>
>>> Requires supporting changes in LLVM r198746.
>>>
>>> Added:
>>> cfe/trunk/test/Frontend/plugins.c
>>> Modified:
>>> cfe/trunk/CMakeLists.txt
>>> cfe/trunk/test/lit.cfg
>>> cfe/trunk/test/lit.site.cfg.in
>>>
>>> Modified: cfe/trunk/CMakeLists.txt
>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/CMakeLists.txt?rev=198747&r1=198746&r2=198747&view=diff
>>> ==============================================================================
>>> --- cfe/trunk/CMakeLists.txt (original)
>>> +++ cfe/trunk/CMakeLists.txt Wed Jan 8 05:38:47 2014
>>> @@ -319,6 +319,10 @@ macro(add_clang_library name)
>>> add_llvm_symbol_exports( ${name} ${LLVM_EXPORTED_SYMBOL_FILE} )
>>> endif()
>>> + if (MODULE)
>>> + set_property(TARGET ${name} PROPERTY SUFFIX ${LLVM_PLUGIN_EXT})
>>> + endif ()
>>> +
>>> if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ${name} STREQUAL "libclang")
>>> install(TARGETS ${name}
>>> LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
>>>
>>> Added: cfe/trunk/test/Frontend/plugins.c
>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Frontend/plugins.c?rev=198747&view=auto
>>> ==============================================================================
>>> --- cfe/trunk/test/Frontend/plugins.c (added)
>>> +++ cfe/trunk/test/Frontend/plugins.c Wed Jan 8 05:38:47 2014
>>> @@ -0,0 +1,5 @@
>>> +// RUN: %clang_cc1 -load %llvmshlibdir/PrintFunctionNames%pluginext -plugin print-fns %s 2>&1 | FileCheck %s
>>> +// REQUIRES: plugins, examples
>>> +
>>> +// CHECK: top-level-decl: "x"
>>> +void x();
>>>
>>> Modified: cfe/trunk/test/lit.cfg
>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/lit.cfg?rev=198747&r1=198746&r2=198747&view=diff
>>> ==============================================================================
>>> --- cfe/trunk/test/lit.cfg (original)
>>> +++ cfe/trunk/test/lit.cfg Wed Jan 8 05:38:47 2014
>>> @@ -195,6 +195,22 @@ config.clang = inferClang(config.environ
>>> if not lit_config.quiet:
>>> lit_config.note('using clang: %r' % config.clang)
>>> +# Plugins (loadable modules)
>>> +# TODO: This should be supplied by Makefile or autoconf.
>>> +if sys.platform in ['win32', 'cygwin']:
>>> + has_plugins = (config.enable_shared == 1)
>>> +else:
>>> + has_plugins = True
>>> +
>>> +if has_plugins and config.llvm_plugin_ext:
>>> + config.available_features.add('plugins')
>>> +
>>> +config.substitutions.append( ('%llvmshlibdir', config.llvm_shlib_dir) )
>>> +config.substitutions.append( ('%pluginext', config.llvm_plugin_ext) )
>>> +
>>> +if config.clang_examples:
>>> + config.available_features.add('examples')
>>> +
>>> # Note that when substituting %clang_cc1 also fill in the include directory of
>>> # the builtin headers. Those are part of even a freestanding environment, but
>>> # Clang relies on the driver to locate them.
>>>
>>> Modified: cfe/trunk/test/lit.site.cfg.in
>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/lit.site.cfg.in?rev=198747&r1=198746&r2=198747&view=diff
>>> ==============================================================================
>>> --- cfe/trunk/test/lit.site.cfg.in (original)
>>> +++ cfe/trunk/test/lit.site.cfg.in Wed Jan 8 05:38:47 2014
>>> @@ -6,6 +6,8 @@ config.llvm_src_root = "@LLVM_SOURCE_DIR
>>> config.llvm_obj_root = "@LLVM_BINARY_DIR@"
>>> config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
>>> config.llvm_libs_dir = "@LLVM_LIBS_DIR@"
>>> +config.llvm_shlib_dir = "@SHLIBDIR@"
>>> +config.llvm_plugin_ext = "@LLVM_PLUGIN_EXT@"
>>> config.lit_tools_dir = "@LLVM_LIT_TOOLS_DIR@"
>>> config.clang_obj_root = "@CLANG_BINARY_DIR@"
>>> config.clang_tools_dir = "@CLANG_TOOLS_DIR@"
>>> @@ -14,6 +16,7 @@ config.llvm_use_sanitizer = "@LLVM_USE_S
>>> config.clang_arcmt = @ENABLE_CLANG_ARCMT@
>>> config.clang_staticanalyzer = @ENABLE_CLANG_STATIC_ANALYZER@
>>> config.clang_rewriter = @ENABLE_CLANG_REWRITER@
>>> +config.clang_examples = @CLANG_BUILD_EXAMPLES@
>>> config.host_arch = "@HOST_ARCH@"
>>> # Support substitution of the tools and libs dirs with user parameters. This is
>>> @@ -21,6 +24,7 @@ config.host_arch = "@HOST_ARCH@"
>>> try:
>>> config.clang_tools_dir = config.clang_tools_dir % lit_config.params
>>> config.llvm_tools_dir = config.llvm_tools_dir % lit_config.params
>>> + config.llvm_shlib_dir = config.llvm_shlib_dir % lit_config.params
>>> config.llvm_libs_dir = config.llvm_libs_dir % lit_config.params
>>> except KeyError:
>>> e = sys.exc_info()[1]
>>>
>>>
>>> _______________________________________________
>>> cfe-commits mailing list
>>> cfe-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>
>
> --
> http://www.nuanti.com
> the browser experts
>
More information about the cfe-commits
mailing list