Kees Zeelenberg wrote:
> The GPL has not only exceptions for libraries provided with the operating
> but also for libraries provided with the compiler used to create the program
> you wish
> to distribute.
IANAL, but I don't think this would hold up in court. You're not USING
the compiler that provides the msvcr90.dll library -- VizStudio. In
this hypothetical, you're using the MinGW gcc compiler. We don't
provide msvcr90.dll; it doesn't belong to us and cannot reasonably be
considered to be "normally distributed...with the...compiler"
>From section 3 (GPLv2):
"However, as a special exception, the source code distributed need not
include anything that is normally distributed (in either source or
binary form) with the major components (compiler, kernel, and so on) of
the operating system on which the executable runs, unless that component
itself accompanies the executable."
Even worse: technically, on windows but unlike unix, the compiler is not
usually considered a "component...of the operating system" at all, so
it's not clear that the exception extends that far, even if you're using
GPLv3 isn't much more lenient. From section 1A (GPLv3):
"The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that Major
Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A "Major
Component", in this context, means a major essential component (kernel,
window system, and so on) of the specific operating system (if any) on
which the executable work runs, or [[[a compiler used to produce the
work]]], or an object code interpreter used to run it."
[[[ emphasis added. Again, you're using mingw gcc, and msvcrXX.dll is
not provided by THAT compiler, it's provided by that other compiler,
over there, which you /did not use/ in this scenario ]]]
> Now msvcr90.dll is provided with Visual Studio Express and
> the EULA
> explicitly allows one to distribute it with one's program.
Read it closely (I haven't; don't have access to it) but I would
/suspect/, at the most liberal, it says something like you can
redistribute the runtime DLLs with your program if and only if you used
Express to compile and link that program. I doubt Microsoft's lawyers
want to enable people to redist their DLLs simply because developers
installed -- but don't actually use -- Express.
But I seem to recall reading somewhere that the license for Express is
actually MORE restrictive, that you CANNOT personally redistribute the
DLLs -- but instead must point your users to the MS official redist.exe
Now, this is not to say that you can't compile GPL code using Express.
Sure you can -- in that case, you're actually USING the compiler that
provides these DLLs, so of course the "compiler" exception applies. But
mingw gcc != Express.
> msvcr90.dll is also
> freely (gratis) available from MS, as part of the Visual C++ Redistributable
Whether something is available gratis has nothing to do with your
obligations or rights under the GPL.
There are actually two issues:
1) Does the msvcr90.dll fall under the OS/"compiler" exception, so that
you are not obligated to distribute the source code of that DLL if you
link and GPL'ed app to it, and distribute that app?
If it does fall under that exception, then there's no problem (such as
if you were actually USING Express or $$$ VisStudio to compile your
The consensus position of this list is that ONLY msvcrt.dll falls under
that exception, because (a) that's the only one MS has explicitly stated
is actually part of the OS, and (b) those other runtime DLLs, which
might fall under a "compiler" exception if you were to use the actual
compiler that provides them (e.g. MSVS2003, MSVS2005, MSVS2008, etc),
are not part of OUR compiler. We didn't create them; Microsoft did. So
they can't be considered part of "our" compiler -- thus, using mingw gcc
but linking to the msvcrXX.dll doesn't magically confer "part of mingw
gcc" status on those DLLs and imbue them with the "compiler exception".
2) However, assume I'm wrong on part 1. Even so, do you as a developer
have the right to personally redistribute that msvcrXX DLL to end users,
even if you don't actually use MSVC (pro or express) to compile your
> Also, the description on MSDN
> on how to deploy Visual C++ library DLLs, clearly shows how to distribute
> these files
> with your application.
Sure, they tell you HOW to do it. I can tell you HOW to pick a lock.
That, by itself, doesn't mean you have the RIGHT to distribute those
files (or pick that lock). You have to look specifically at the terms
of the EULA. Instructions are not a grant of legal rights.
And just downloading and installing the redist package, and using
mingw's import libs, is not sufficient -- because, despite the name, the
redist package is NOT libre' redistributable. Anybody can download it
from MS' website and install it, but they can't give copies away to
For THAT legal ability, you must install (one of the) Microsoft
compilers -- the $$$ version for sure gives you this right. I'm not
sure if the Express version does (I have no intention of installing it
just so I can read the EULA).
> So, I would conclude that for GPL-ed programs there is no objection to link
> with msvcr90.dll and to distribute it with your program.
Don't take legal advice from a mailing list. Mine OR Kees'. Seek
To sum up, until the mingw.org project actually hires a lawyer to
provide a professional, binding legal opinion that says we CAN do this,
I don't think any of us want to wander very close to that line. If you
want to, fine...that's your decision. But we are not obligated to make
it any easier -- especially as doing even THAT much might increase our