[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Problem with GPLv3 FAQ about linking with Visual C++

From: Alan Mackenzie
Subject: Re: Problem with GPLv3 FAQ about linking with Visual C++
Date: Mon, 1 Feb 2010 15:55:59 +0000 (UTC)
User-agent: tin/1.6.2-20030910 ("Pabbay") (UNIX) (FreeBSD/4.11-RELEASE (i386))

Antonis Christofides <> wrote:
> Hi,

Hi, Antonis,

> I have a licensing problem (I want to release my Delphi code under the
> GPLv3, and I need to know if I need to introduce additional permissions
> to link with the Delphi libraries, and whether I can use third-party
> GPLv3 code in my code; Delphi is a nonfree commercial IDE, similar to
> MS Visual C++ and MS VB). There's a FSF GPLv3 FAQ that summarizes my
> problem well:

>    I'm writing a Windows application with Microsoft Visual C++ (or
>    Visual Basic) and I will be releasing it under the GPL. Is
>    dynamically linking my program with the Visual C++ (or Visual Basic)
>    run-time library permitted under the GPL?

> The FSF's answer to this FAQ is:

>    The GPL permits this because that run-time library normally
>    accompanies the compiler or interpreter you are using. The run-time
>    libraries here are ?System Libraries? as GPLv3 defines them, and as
>    such they are not considered part of the Corresponding Source.

> However, I do not understand how this interpretation can follow from
> the GPLv3. Here is what the GPLv3 says:

>    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.

> (I will be writing "RTL" for "run-time library").

> The (Visual C++/VB/Delphi) RTL API can be said to be a Standard
> Interface and the (Visual C++/VB/Delphi) compiler can be said to be a
> Major Component. While the RTL
>  (a) is included in the normal form of packaging of the compiler,
>  (b) it does NOT serve "only to enable use of the [executable] work
>      with that Major Component" (I understand that this clause does
>      not make any sense in this case, it makes sense when the Major
>      Component is an OS run-time component).
>      The rtl DOES implement a Standard Interface, but is an
>      implementation for that interface "available to the public in
>      source code form"?

> I don't know the details for Visual C++, but for Delphi, you get the
> Delphi RTL source code with Delphi if you buy Delphi.  Would this
> qualify as "available to the public"?


> The bottom line is that if the RTL "normally accompanies the compiler",
> as the FAQ says, this does not seem sufficient for considering it as a
> System Library; an implementation of the API must also be "available to
> the public" in source code form.

> What have I understood wrong?

"System Libraries" are defined as being regarded as part "of an
executable work", i.e. part of your program, NOT part of Delphi (the
"major component").  So what it's saying is that if you distribute your
work together with the RTL:
  (a) The RTL is normally distributed with Delphi.
  (b) It (your distribution of the RTL) serves only to enable your
    program to run.

> Thanks for any help!

No problem!

Alan Mackenzie (Nuremberg, Germany).

reply via email to

[Prev in Thread] Current Thread [Next in Thread]