Let's say I created a project containing hundreds of source files under the MIT License (most of which I wrote myself for this project). Now I want to add a GPL library to the project, that will be called from one of the source files ("File A"). A few other files call functions in "File A". The program is otherwise pretty indepedent of the library, meaning its core functions don't rely on it at all.
Since the library will be neatly packed into the executable, I'm pretty sure I have to make the whole project available under the terms of the GPL, which is fine because the MIT License is compatible with the GPL. So far so good.
What I don't quite understand is how it affects individual source files vs. the project as a whole. The GPL FAQ says about including a GPL library:
The software modules that link with the library may be under various GPL compatible licenses, but the work as a whole must be licensed under the GPL.
- If I make the project available under GPL terms, then of course all parts of it are available under GPL terms (which they can be if they are under compatible licenses). But does that mean that all individual files "become" GPL (as in, add a GPL license header)? Is there a difference between individual code being licensed under GPL and the whole project being made available under GPL?
- Do I have to put the file that directly communicates with the GPL library under GPL? And then put all files that are somehow connected to that one under GPL as well? Or can I keep them as MIT (as they've always been) and just make the whole project available under GPL?
To keep it simple, I would like to keep all my source code under MIT License and then put the whole project under GPL in a centralized notice. I'm just not sure if I'm approaching this correctly.