>> I assume yes, very much so.  FreeType has never used (git) submodules of
>> sorts (afaik) and quite frankly, even though it got a lot better, submoduling
>> is still pretty painful, even with modern git.  (Beware:  this is my
>> _personal_ opinion) 
>
> I've had a bit of experience with those. Couldn't agree more. Quite painful.
> You would have to take care of building all of the submodules within your own
> build system, I guess?

Exactly, this is one issue that you can avoid when using `installed' libraries 
instead (if you can).  But also the process of setting up submodules, updating 
them and -- god forbid! -- deleting them can cause a lot of headache.

>> In contrast, using (`linking') external libraries on Linux (FreeType's main
>> target system) is and has always been easy and super-efficient.  You don't
>> have to care about _any_ updates (changes to other build systems, e.g.) of
>> those libraries and you can link them in all sorts of funny ways (dynamically
>> [pretty much standard for many things], statically, or even at runtime within
>> your application).  Also, you don't have to care about target specific
>> weirdness of those other libraries.
>
> Yea, I didn't actually know that dynamic linking is the standard these days
> until today. It is amazing how complex dependency trees can be treated with
> ease using dynamic linking. I compiled a very simple program that uses
> FreeType today and tried to link everything statically. It's really painful. I
> had to seek out `.a' files of the dependencies of FreeType and then those of
> their dependencies. With something as less-dependent as FreeType, the process
> was hard, I can imagine how terribly hard it would be for more complex things.
> The size is another issue it solves. Am I correct?

You're describing two main benefits of dynamic linking and why it so popular.  
As far as I'm concerned, static linking is rather used for edge cases like 
static code analysis or when you can't be certain that a required library 
exists on a system when want to run your program. 

>> From a library user's perspective, all you (usually) do (on Linux) is [...]
>
> Thank you for writing a very clear explanation. I have been on Linux for some
> time and have been doing a lot of building from source so have learned these
> things over time. Your explanation really allowed me to confirm my concepts
> and verify them as correct, so thank you very much. :)

That's great to hear, no worries at all :)  Also sorry, haven't had the chance 
yet:  congratulations and welcome to FreeType :)

Armin


_______________________________________________
Freetype-devel mailing list
Freetype-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/freetype-devel

Reply via email to