On Aug 9, 2006, at 4:57 PM, Frank Barknecht wrote:
Hallo, Hans-Christoph Steiner hat gesagt: // Hans-Christoph Steiner wrote:
But yet again, it seems to me a massive waste of time to build Yet Another Build System. How about instead making the existing one better?
I agree with that, and I see IOhannes' and Thomas' wish for being able to build smaller parts of the whole Pd-extended shebang as one possible enhancement to the big build system.
What I mean is: Maybe there is a way to make the makefiles in the various subdirectories also handle small builds? I don't really understand how it currently works, but for example a single external like hid.pd_linux has to be built anyways. So if I chdir to /externals/hcs/hid the makefile maybe could get an additional target so that I could call "make hid.pd_linux" there? I remember that it was once that way, but currently it doesn't work anymore.
I guess offering both approaches could be possible as well? I mean, even Debian manages to build thousands of packages decentralized and package them into one big distribution. ;)
Note that I'm a complete idiot when it comes to make and auto-whatever, I just understand enough to do educated guesses when copy-and-pasting, that's it.
externals/hcs/hid/Makefile allows you do type things like:
make make clean make install
And it'll build [hid] and friends. That Makefile calls externals/ Makefile so that I only have to maintain one. That Makefile will also automatically set itself up if you stick into your CVS folder and there are targets of the same name in externals/Makefile. You can also see the same file in action here:
externals/deprecated/Makefile externals/hcs/Makefile externals/hcs/usbhid/Makefile externals/bsaylor/Makefile externals/corelibs/Makefile externals/sigpack/Makefile
and more... But yes, this still depends on having packages/ Makefile.buildlayout, which is often erroneously referred to as "the whole directory layout". In reality, in order to build the externals with the Pd-extended build system, you need:
externals/ pd/ packages/Makefile.buildlayout
That doesn't seem like much of a burden to me. We've spent far more time discussing that pesty package/Makefile.buildlayout that it would have taken just to check it out wherever its needed. That is not to say that improvements can't be made. There is much that could be done, this is just the beginning. I think that it might make sense to have all of a library's targets in its own local file, which then includes other global files for global things. But that would take quite a bit of work to create.
.hc