[cfe-dev] Clang Plugins on Windows

Christopher Baish via cfe-dev cfe-dev at lists.llvm.org
Thu Oct 3 08:17:21 PDT 2019


Good Afternoon All,

Thank you very much for all of your help. A combination of these suggestions got it working for me.
For future reference:
Pass -DLLVM_EXPORT_SYMBOLS_FOR_PLUGINS=ON
Run the clang.exe binary, but pass "--driver-mode=cl" to it so that it took clang-cl style flags. This was because clang-cl wouldn't work with the plugin.

This was a summer internship for me, so this email address will become inactive. If anyone is trying to do anything similar in the future, my boss can be contacted at tor.klingberg at starleaf.com and is happy to answer questions.

Kind Regards

Chris Baish


________________________________
From: Stephan Bergmann <sbergman at redhat.com>
Sent: 30 September 2019 14:12
To: cfe-dev at lists.llvm.org <cfe-dev at lists.llvm.org>
Cc: Christopher Baish <christopher.baish at starleaf.com>
Subject: Re: [cfe-dev] Clang Plugins on Windows

On 30/09/2019 14:40, Christopher Baish via cfe-dev wrote:
> I have written a plugin for Clang which does additional type checking
> around format strings. It is currently running as a plugin on Linux and
> macOS machines.
> We are hoping to also run it on our Windows builds, in order to boost
> our coverage, however I understand that the 'normal' way to use a clang
> plugin doesn't work on Windows.
>
> The plugin currently works via a RecursiveASTVisitor, and then having
> found an instance of a var-args function call runs the custom type checker.
>
> This
> (https://stackoverflow.com/questions/25657586/how-to-enable-dll-building-for-windows-in-llvm)
> implies that it would be possible to alter something in the build system
> to compile in the plugin library statically. This would be ideal for our
> use case, because we are building clang from source already, and we are
> only using it with the plugin, never alone.
> Unfortunately I can't find any information on how to go about statically
> linking the library into the main executable, or about other ways we
> could go about getting this working.

We're using such a dynamic library plugin for LibreOffice.  I can't
remember all the details of how I got it working on Windows, but what
probably is relevant is building LLVM/Clang with
-DLLVM_EXPORT_SYMBOLS_FOR_PLUGINS=ON and maybe some of the options we
pass to cl.exe (aka $(COMPILER_PLUGINS_CXX) in our makefile) when
linking the plugin DLL at
<https://opengrok.libreoffice.org/xref/core/compilerplugins/Makefile-clang.mk?r=db123aba#202>.
  Maybe that helps a bit...

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20191003/ef732cc0/attachment.html>


More information about the cfe-dev mailing list