[LLVMdev] GPL licensing issues or can GCC be used with llvm for a commercial application?

Razvan Aciu admin at kam.ro
Tue May 13 22:04:06 PDT 2008


Thanks for your replies. This is indeed a helpful mailing list. I made some 
more researches about the licensing issue and this is what I discovered:

- from FSF it seems that packaging together a GPL application and a 
commercial one it is a corner case of licensing. Here is what they say:
http://www.fsf.org/licensing/licenses/gpl-faq.html#MereAggregation
http://www.fsf.org/licensing/licenses/gpl-faq.html#GPLInProprietarySystem
It seems that if I use GCC only as a command line tool, it should be ok. 
Anyway, there is a catch: "But if the semantics of the communication are 
intimate enough, exchanging complex internal data structures, that too could 
be a basis to consider the two parts as combined into a larger program.".
In our case, the communication means sending entire programs and command 
line arguments and receiving warnings and error codes. Is this intimate 
enough or not? I think we need a more authoritative answer here.

- other guys understand GPL by strictly forbidding distribution of the GPL 
product with a non-GPL one. The nice XVID codec is released under GPL and 
here is what they say:
http://www.xvid.org/FAQ.42.0.html (go to the license questions).
In that case they say that even I only package the XVID codec with a 
proprietary software with the soly purpose to install it in Windows and 
after that I use only the Windows interface to it (like any other 
proprietary Windows software does) , GPL forbids me to do that.

- I didn't find any commercial projects (not Operating Systems or 
dual-licensed but simple applications) which package GPL applications with 
proprietary ones. If you know such applications, please let me know so I can 
check their license.

- during the testing, I saw that YASM can also assemble a GAS compatible 
syntax. I tried to use it and it worked well, except the fact that the 
segments names were too long for the COFF format, because of a standard 
prefix added to them by the llvm native generator. In that case I don't know 
if the link phase will be done ok (especially if the linker is able to 
remove the unused segments or setup the correct segments attributes).

For now, I think for a commercial developer who wants to create a complete 
compiler toolchain using llvm, trying to package its compiler with GCC is a 
very dangerous decision. If I am myself in that situation I should not do 
it, but instead I should try to use a non-GPL assembler and linker. So, from 
my point of view, the necessity of an I86 native target who address a 
BSD-like licensed assembler, strongly remains.

Razvan




More information about the llvm-dev mailing list