[LLVMdev] win32 assemblers and linkers for llvm

Razvan Aciu admin at kam.ro
Tue May 13 05:59:08 PDT 2008


Yes, you are right. During my testings, I tried the llvm produced .S files 
with the gcc frontend and it compiled and linked them to the final 
executable.

The problem is with the gcc and binutils licence. This is GPL and while this 
is ok for open source or for academic purposes, it can't be used on 
commercial projects. In fact one of the strong points of llvm (and clang) is 
its BSD like license. To quote from ( 
http://clang.llvm.org/features.html#enduser ):

"We actively indend for clang (and a LLVM as a whole) to be used for 
commercial projects, and the BSD license is the simplest way to allow this. 
We feel that the license encourages contributors to pick up the source and 
work with it, and believe that those individuals and organizations will 
contribute back their work if they do not want to have to maintain a fork 
forever (which is time consuming and expensive when merges are involved). 
Further, nobody makes money on compilers these days, but many people need 
them to get bigger goals accomplished: it makes sense for everyone to work 
together."

To design the native code generators of llvm to work only with software 
under much more restrictive licenses like GPL or the MASM license, means to 
throw away this goal and simply make llvm and clang only another open source 
project, not suitable for many commercial applications (the ones who can't 
use the JIT interpreter).

There is also another licensing issue: there are some discussions what means 
for GPL "work based on project" or "work derived from project". The tendency 
is that if an independent project fully depends for its work on a GPL 
project (like a code generator which only generates code for GAS) to be 
considered a "work based on project" or even "work derived from project", so 
the intent is to also apply the GPL license to it, even this means lawsuits.

Even if right now the need for a native code generator for a *free as llvm* 
assembler maybe is not really perceived, I think it will arise sharply when 
the clang will be production ready. In that respect, if someone can adapt 
the MASM templates to produce NASM directives (it is the only thing that 
needs to be changed), these updates will be more than welcome.

Razvan


----- Original Message ----- 
From: "Anton Korobeynikov" <asl at math.spbu.ru>
To: "LLVM Developers Mailing List" <llvmdev at cs.uiuc.edu>
Sent: Tuesday, May 13, 2008 8:19 AM
Subject: Re: [LLVMdev] win32 assemblers and linkers for llvm


>> There's also then entire GNU toolchain, through MinGW and/or Cygwin.
> Which works perfectly right now without any extra tweaking :)
>
> -- 
> With best regards, Anton Korobeynikov.
>
> Faculty of Mathematics & Mechanics, Saint Petersburg State University.
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev 




More information about the llvm-dev mailing list