<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<div style="color:black; font-size:11pt; font-family:sans-serif; margin:0; padding:0">
Hey LLVM Devs,<br>
</div>
<div style="color:black; font-size:11pt; font-family:sans-serif; margin:0; padding:0">
<br>
</div>
<div style="color:black; font-size:11pt; font-family:sans-serif; margin:0; padding:0">
  I am trying to see if I can use clang plugins to edit</div>
<div style="color:black; font-size:11pt; font-family:sans-serif; margin:0; padding:0">
the AST and change the executable output. Any pointers on</div>
<div style="color:black; font-size:11pt; font-family:sans-serif; margin:0; padding:0">
whether I'm doing this correctly?</div>
<div style="color:black; font-size:11pt; font-family:sans-serif; margin:0; padding:0">
<br>
</div>
<div style="color:black; font-size:11pt; font-family:sans-serif; margin:0; padding:0">
running my plugin:<br>
</div>
<div style="color:black; font-size:11pt; font-family:sans-serif; margin:0; padding:0">
clang -Xclang -load -Xclang C:\Users\User\llvm-project\build\Release\bin\MyPlugin.dll -Xclang -add-plugin -Xclang my-plugin test.c -o test.exe</div>
<div style="color:black; font-size:11pt; font-family:sans-serif; margin:0; padding:0">
<br>
</div>
<div style="color:black; font-size:11pt; font-family:sans-serif; margin:0; padding:0">
how i'm editing the AST (in my Visitor class):</div>
<div style="color:black; font-size:11pt; font-family:sans-serif; margin:0; padding:0">
varDecl->setInit(stringLiteral)</div>
<div style="color:black; font-size:11pt; font-family:sans-serif; margin:0; padding:0">
<br>
</div>
<div style="color:black; font-size:11pt; font-family:sans-serif; margin:0; padding:0">
<div style="color:black; font-size:11pt; margin:0; padding:0"><br>
</div>
<div style="color:black; font-size:11pt; margin:0; padding:0">Note: The test.exe generated in the above process does not appear to be affected by any changes made to the AST by the plugin</div>
<br>
</div>
<div style="color:black; font-size:11pt; font-family:sans-serif; margin:0; padding:0">
Cheers,</div>
<br>
<div style="color:black; font-size:11pt; font-family:sans-serif; margin:0; padding:0">
Osanne</div>
<br>
</div>
<div id="appendonsend"></div>
<div style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="divRplyFwdMsg" dir="ltr"><font style="font-size:11pt" face="Calibri, sans-serif" color="#000000"><b>From:</b> Michael Kruse <llvmdev@meinersbur.de><br>
<b>Sent:</b> 08 August 2019 17:19<br>
<b>To:</b> Osanne Gbayere <osanne_lukengo@hotmail.com><br>
<b>Cc:</b> Michael Kruse <llvmdev@meinersbur.de><br>
<b>Subject:</b> Re: [llvm-dev] building a custom plugin</font>
<div> </div>
</div>
<div>
<div dir="ltr">Good to hear that it works for you. However, I don't know anything about modifying the AST from an plugin.
<div><br>
</div>
<div>When discussing on the mailing list, please _always_ reply (or reply-all) to the mailing list to keep the discussion public. One reason being that you can get answers from other people as well, the other that contributors volunteer for the community.</div>
<div><br>
</div>
<div>Michael</div>
<div><br>
</div>
<div>
<div>
<div>
<div><br>
</div>
</div>
</div>
</div>
</div>
<br>
<div class="x_gmail_quote">
<div dir="ltr" class="x_gmail_attr">Am Do., 8. Aug. 2019 um 05:27 Uhr schrieb Osanne Gbayere <<a href="mailto:osanne_lukengo@hotmail.com">osanne_lukengo@hotmail.com</a>>:<br>
</div>
<blockquote class="x_gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr">
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
Hey Michael,<br>
</div>
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
<br>
</div>
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
  Thank you very much for your help. It's much appreciated! <br>
<br>
</div>
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
  Got my plugin working, trying to see now if I can use it to edit</div>
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
the AST and change the executable output. Any pointers on</div>
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
whether I'm doing this correctly?</div>
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
<br>
</div>
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
running my plugin:<br>
</div>
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
clang -Xclang -load -Xclang C:\Users\User\llvm-project\build\Release\bin\MyPlugin.dll -Xclang -add-plugin -Xclang my-plugin test.c -o test.exe</div>
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
<br>
</div>
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
how i'm editing the AST (in my Visitor class):</div>
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
varDecl->setInit(stringLiteral)<br>
</div>
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
<br>
</div>
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
Cheers,<br>
<br>
</div>
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
Osanne<br>
</div>
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
<span id="x_gmail-m_6730663339211650939OutlookSignature"></span><br>
</div>
<hr style="display:inline-block; width:98%">
<div id="x_gmail-m_6730663339211650939divRplyFwdMsg" dir="ltr"><font style="font-size:11pt" face="Calibri, sans-serif" color="#000000"><b>From:</b> Michael Kruse <<a href="mailto:llvmdev@meinersbur.de" target="_blank">llvmdev@meinersbur.de</a>><br>
<b>Sent:</b> Tuesday, August 6, 2019 4:58:02 PM<br>
<b>To:</b> Osanne Gbayere <<a href="mailto:osanne_lukengo@hotmail.com" target="_blank">osanne_lukengo@hotmail.com</a>><br>
<b>Cc:</b> Michael Kruse <<a href="mailto:llvmdev@meinersbur.de" target="_blank">llvmdev@meinersbur.de</a>><br>
<b>Subject:</b> Re: [llvm-dev] building a custom plugin</font>
<div> </div>
</div>
<div>
<div dir="ltr">
<div dir="ltr"><font face="arial, sans-serif"><span style="color:rgb(0,0,0)">add_llvm_library</span> is a function defined in cmake/modules/AddLLVM.cmake. In order to use it, you must include(AddLLVM) in your CMakeLists.txt. This has already been done if, like </font><span style="color:rgb(0,0,0)"><font face="arial, sans-serif">PrintFunctionNames,
 the CMakeLists.txt is invoked from within LLVM's cmake configuration run. If you want to have your plugin to compile independently of LLVM (using an LLVM found on your system), Your CMakeLists.txt has to to search for the LLVM installation via CMake's find_package(LLVM
 ...). See [1]</font></span></div>
<div dir="ltr"><span style="color:rgb(0,0,0)"><font face="arial, sans-serif"><br>
</font></span></div>
<div><span style="color:rgb(0,0,0)"><font face="arial, sans-serif">To get things started, I suggest you copy the PrintFunctionNames to e.g. PrintFunctionNames2 as a sibling folder and add add_subdirectory(PrintFunctionNames2) in the parent dir's CMakeLists.txt</font></span></div>
<div><span style="color:rgb(0,0,0)"><font face="arial, sans-serif"><br>
</font></span></div>
<div><span style="color:rgb(0,0,0)"><font face="arial, sans-serif">Michael</font></span></div>
<div><span style="color:rgb(0,0,0)"><font face="arial, sans-serif"><br>
</font></span></div>
<div dir="ltr"><span style="color:rgb(0,0,0)"><font face="arial, sans-serif"><br>
</font></span></div>
<div dir="ltr"><span style="color:rgb(0,0,0)"><font face="arial, sans-serif">[1] </font></span><a href="https://www.llvm.org/docs/CMake.html#embedding-llvm-in-your-project" target="_blank">https://www.llvm.org/docs/CMake.html#embedding-llvm-in-your-project</a></div>
<div dir="ltr"> <br>
</div>
<div dir="ltr"><br>
</div>
<br>
<div class="x_gmail_quote">
<div dir="ltr" class="x_gmail_attr">Am Di., 6. Aug. 2019 um 03:41 Uhr schrieb Osanne Gbayere <<a href="mailto:osanne_lukengo@hotmail.com" target="_blank">osanne_lukengo@hotmail.com</a>>:<br>
</div>
<blockquote class="x_gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr">
<div style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
</div>
<div>
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
Hi Michael,<br>
<br>
</div>
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
  Thanks for this! I've attempted to run CMake to build PrintFunctionNames with success, however with my<span id="x_gmail-m_6730663339211650939gmail-m_6288731960298109951x_OutlookSignature"></span><br>
</div>
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
custom plugin and also when I try to build PrintFunctionNames individually, I get the following error:</div>
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
<br>
</div>
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
<span>CMake Error at CMakeLists.txt:1 (add_llvm_library):<br>
</span><span>  Unknown CMake command "add_llvm_library".</span></div>
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
<br>
</div>
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
I haven't found much in the way of solving this issue. Are there any libraries I need to add to my CMake</div>
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
environment?<br>
</div>
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
<br>
</div>
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
Cheers,</div>
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
<br>
</div>
<div dir="auto" style="direction:ltr; margin:0px; padding:0px; font-family:sans-serif; font-size:11pt; color:black">
Osanne <br>
</div>
<hr style="display:inline-block; width:98%">
<div id="x_gmail-m_6730663339211650939gmail-m_6288731960298109951x_divRplyFwdMsg" dir="ltr">
<font style="font-size:11pt" face="Calibri, sans-serif" color="#000000"><b>From:</b> Michael Kruse <<a href="mailto:llvmdev@meinersbur.de" target="_blank">llvmdev@meinersbur.de</a>><br>
<b>Sent:</b> Friday, August 2, 2019 8:46:59 PM<br>
<b>To:</b> Osanne Gbayere <<a href="mailto:osanne_lukengo@hotmail.com" target="_blank">osanne_lukengo@hotmail.com</a>><br>
<b>Cc:</b> <a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a> <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>><br>
<b>Subject:</b> Re: [llvm-dev] building a custom plugin</font>
<div> </div>
</div>
</div>
<font size="2"><span style="font-size:11pt">
<div class="x_gmail-m_6730663339211650939gmail-m_6288731960298109951PlainText">The code for building the PrintFunctionNames plugin is available here:<br>
<br>
<a href="https://github.com/llvm/llvm-project/blob/master/clang/examples/PrintFunctionNames/CMakeLists.txt" target="_blank">https://github.com/llvm/llvm-project/blob/master/clang/examples/PrintFunctionNames/CMakeLists.txt</a><br>
<br>
Michael<br>
</div>
</span></font>
<div id="x_gmail-m_6730663339211650939gmail-m_6288731960298109951DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2">
<br>
<table style="border-top:1px solid rgb(211,212,222)">
<tbody>
<tr>
<td style="width:55px; padding-top:13px"><a href="http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail&utm_term=oa-4885-a" target="_blank"><img alt="" style="width:46px; height:29px" width="46" height="29"></a></td>
<td style="width:470px; padding-top:12px; color:rgb(65,66,78); font-size:13px; font-family:Arial,Helvetica,sans-serif; line-height:18px">
Virus-free. <a href="http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail&utm_term=oa-4885-a" target="_blank" style="color:rgb(68,83,234)">
www.avg.com</a> </td>
</tr>
</tbody>
</table>
<a href="#x_m_6730663339211650939_m_6288731960298109951_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2" width="1" height="1"></a></div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</body>
</html>