Amalgamator: New and Improved

NEW AMALGAMATION TOOL!!!

https://github.com/vinniefalco/Amalgamate

There are some open questions:

  1. What license can I present? I went with GPL v2 since that’s the most compatible
  2. Are you ok with making this MIT licensed?
  3. Do we want these features migrated into the official Juce amalgamator?
  4. What changes do I need to make in the license, if any?

Note, this is still a work in progress. The code is not final. I plan on adding a feature to handle the special case for the function mungeJuce(). It will likely come in the form of a command line switch “-p {filename}”, to additional pre-process a source file in order to populate the includeFilesToIgnore and alreadyIncludedFiles state variables, thus mimicing the behavior of mungeJuce().

To see how this tool is used with FreeType, there is a FreeType folder in the repo that has files needed for producing a FreeType amalgamation, including a batch file that calls the tool with the new arguments.

That’s cool Vinnie - feel free to help yourself to the amalgamation code, it’s not even in the (modules branch) codebase any more. I may do some more amalgamation stuff in the future, but if I do, I’ll probably re-write that stuff anyway, and will bake it into the introjucer.

I don’t mind what license you put on the amalgamator app files, but bear in mind that if it still links to the juce library, anyone using it will be tied to the GPL2 anyway, so using anything more permissive for your bits wouldn’t really make much difference, would it?

True for everyone except Raw Material Software - if I publish my changes GPL v2 then the improved amalgamator cannot licensed through the commercial Juce license. On the other hand if I make it MIT licensed then it can. True this is a trivial example but new ones will pop their head up I’m sure. This is why I publish all of my code under the MIT license, it avoids these problems.

In the past these licensing details went unnoticed. But now that we have the modules concept, I think they will become more relevant as people publish code that depends on Juce. For example, if I publish my own library that uses Juce under GPL v2, commercial Juce users cannot use it without getting sucked into the GPL.

Ah yes, good point - for people who already have a commercial license, using an MIT license would be ideal. Cheers!

The Amalgamate tool has moved to GitHub:

The original post has been updated to reflect the new location.