Section 4 of the LGPLv2.1 gives me permission to distribute a "work based on the Library" in object code form, provided that I also distribute "complete corresponding machine-readable source code":
- You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.
"Corresponding" and "machine-readable" are not explicitly defined. However, "complete source code" is defined:
"Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.
So "complete source code" specifically refers to these three things.
Suppose that compiling the library requires some file which is not source code for a module, an associated interface definition file, or a script to control compilation and installation. An example could be a proprietary compiler, a proprietary compiler extension, a third-party interface definition file (thus not associated with any module in the Library), or a data table used by a compiler extension which is neither a control script nor source code.
It appears I am not obligated to distribute this file together with the binary copy. Is this correct?
The GPLv2 uses similar wording about executables, so this question is also relevant to the GPLv2.
The GPLv3 specifies "all the source code needed to generate, install, and (for an executable work) run the object code" (emphasis mine), with certain exceptions for operating systems and language implementations, so I believe it does not suffer from this problem.