<div dir="ltr">See comments inline...<br><div class="gmail_extra"><br><div class="gmail_quote">On 15 October 2015 at 07:19, Joachim Durchholz via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all,<br>
<br>
I'm setting up for a compiler project using LLVM as a backend, and I need some feedback about the easiest ecosystem for that.<br>
I need to build compiler and run-time system. For now, a proof of concept that picks the low-hanging fruits of LLVM is fully adequate, I don't care too much whether that code has long-term value.<br>
<br>
I'd like your thoughts about the avenues I'm seeing right now:<br>
<br>
1) Since my C++ is ancient, rusty, and moldy, and since I'm pretty fluent in Java, do it in Java. (I find those linkage discussions scary - seems like the situation didn't get better in the past 15 years, just more complicated.)<br>
Whether that's even viable depends a lot on how much of the LLVM API needs to be wrapped. Java used to suck badly at such wrappers; things have improved a lot since JNA became available, but of course it's still far from ideal.<br>
I'm not opposed to getting up to speed with C++ again though. It would be a useful thing to have in my CV after all.<br></blockquote><div><br></div><div>It seems there isn't a current working Java LLVM interface. Which means you either have to update/modernize some old project, or write your own. I'm no C++ star, but it's not "greek" to me either. In my view, the LLVM functionality isn't too difficult to get into, and if you know basic C++, you can pretty much use the LLVM functionality.  My advice would be "use C++". <br><br></div><div>There are Python interfaces to LLVM, which may help too, although I personally haven't used them.<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
2) Use Clang for the compiler and runtime.<br>
2a) Use precompiled binaries. (Are these even available?)<br></blockquote><div><br></div><div>Depends on what you are runningo your code on. Probably.  <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
2b) Compile Clang using gcc.<br></blockquote><div>This certainly works. <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
2b1) Be extra paranoid, and use the Clang produced in (2b) to compile Clang again. (Is that worth the extra effort?)<br></blockquote><div>Probably not worth it. <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
2b2) Consider gcc-compiled Clang good enough if it runs the tests.<br>
2b3) Don't worry about testing, simply assume going to be all okay on an amd64-linux platform anyway.<br></blockquote><div><br></div><div>Running clang-test and/or llvm-test is probably quick enough that it is worth doing - at least the first build of LLVM/Clang. <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
3) Use gcc for the compiler and runtime.<br>
Um... not really. I want Clang's error messages, they are consistently being reported as vastly superior to those of gcc.<br></blockquote><div><br></div><div>Your choice. I use clang, but the code compiles correctly with gcc (most of the time...).<br><br>--<br></div><div>Mats<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Any thoughts and feedback appreciated.<br>
<br>
Regards,<br>
Jo<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div><br></div></div>