|
LCA: Disintermediating distributionsLCA: Disintermediating distributionsPosted Feb 6, 2008 23:35 UTC (Wed) by DonDiego (subscriber, #24141)In reply to: LCA: Disintermediating distributions by stevenj Parent article: LCA: Disintermediating distributions
What 'underlying deficiencies of make' are you talking about? I don't see any such thing.
(Log in to post comments)
LCA: Disintermediating distributions Posted Feb 6, 2008 23:45 UTC (Wed) by vapier (subscriber, #15768) [Link] autotools allows you to create a build system that will work on any system that has a shell and make. that make may not be GNU make. it may have bugs. its feature set may be severely limited compared to what you're used to. many projects out there who set out to write their own build system do so using GNU make which means they write code that Works For Them. non-portable GNU-isms creep in which means the build system is no longer portable to many targets which sort of defeats the original intent: making it portable.
LCA: Disintermediating distributions Posted Feb 7, 2008 0:17 UTC (Thu) by vmole (subscriber, #111) [Link] "Don't write portable Makefiles, use a portable make." I don't remember the source of that quote, but I do know that trying to deal with each broken vendor version of make leads to nothing pain and tears before bedtime. If you're building software, just install gmake and be done with it.
LCA: Disintermediating distributions Posted Feb 7, 2008 0:38 UTC (Thu) by nix (subscriber, #2304) [Link] Well, I know Paul D. Smith (the GNU make author) has said that in the past, and I agree with him (for what very little it's worth).
LCA: Disintermediating distributions Posted Feb 7, 2008 1:11 UTC (Thu) by stevenj (subscriber, #421) [Link] Note that GNU make itself is built using automake, so it seems the GNU make developers have voted with their feet on this one.
LCA: Disintermediating distributions Posted Feb 7, 2008 1:41 UTC (Thu) by stevenj (subscriber, #421) [Link] (Although, to be fair, it's not like they could require GNU make to build. =)
LCA: Disintermediating distributions Posted Feb 7, 2008 7:05 UTC (Thu) by madscientist (subscriber, #16861) [Link] Although GNU make does come with an automake environment, it also provides a shell script that can be used to build make. Obviously this will recompile and relink everything every time you run it, but GNU make is not such a huge program that this is a problem. And once you've got it built once, you can use that make for subsequent builds. Having this avoids the catch-22 of needing some make to build make. That said, automake is awesome especially if you're developing highly portable tools, which most of the GNU tools are. For GNU make I don't so much care about the portability aspects, although that's nice too (but the shell script above would be enough of an "out" for GNU make itself). The great thing about automake is all the default rules it provides, including things like distcheck for building new packages, etc. These rules save huge amounts of time and effort for package developers/maintainers.
LCA: Disintermediating distributions Posted Feb 15, 2008 11:51 UTC (Fri) by ekj (subscriber, #1524) [Link] The catch-22 of needing a make-program to compile gnu make isn't that much of a problem really. You need a C compiler to compile GCC too. If you want it self-compiled you need to compile it twice: First use whatever C-compiler you happen to have lying around to compile GCC. Then use your fresh gcc to compile gcc.
LCA: Disintermediating distributions Posted Feb 15, 2008 22:00 UTC (Fri) by nix (subscriber, #2304) [Link] With recent versions, thanks to the magic of top-level bootstrap, `make' should give you a compiler and libraries byte-for-byte identical to what you'd have got if you did the recompile-it dance. (Older versions wouldn't have recompiled libiberty with the new compiler before linking that compiler with it; top-level bootstrap has fixed that.)
LCA: Disintermediating distributions Posted Feb 7, 2008 20:11 UTC (Thu) by vapier (subscriber, #15768) [Link] it's really a mindset. do you tell every user their system sucks and they should install Linux and up-to-date utilities ? or do you use automake and everyone out there can build your project without a problem ? some people will choose the former while others will pick the latter. in the latter case, automake is the only realistic solution.
LCA: Disintermediating distributions Posted Feb 7, 2008 0:15 UTC (Thu) by stevenj (subscriber, #421) [Link] Try using raw 'make' in a project with subdirectories sometime. Another obstacle is that 'make' relies on 'sh' (a fairly primitive language) if you want to do anything nontrivial, and portable shell programming requires extreme care. (This is also a source of unfortunate complexity in autoconf and automake, but they provide tools to lessen your dependence on sh, at least.)
LCA: Disintermediating distributions Posted Feb 7, 2008 4:39 UTC (Thu) by roelofs (subscriber, #2599) [Link] Try using raw 'make' in a project with subdirectories sometime.Have:
$(MAKE) -C subdir
or
cd subdir && $(MAKE)
I believe even MS nmake circa 1990 supported that much, and it's not even close to a standard make. Every Unix make I've used (couple dozen) was better than that. But it has been quite a few years since I messed with any of this stuff, so craniorectal impaction is always a possibility. Greg
LCA: Disintermediating distributions Posted Feb 7, 2008 10:05 UTC (Thu) by epa (subscriber, #39769) [Link] Have a look at the article linked from the parent post. Calling one 'make' from another makefile tends to lead to all sorts of crufty problems. The paper gives examples, and my own experience certainly confirms it. That said, you can use make in a large project, just not by recursive invocation.
LCA: Disintermediating distributions Posted Feb 7, 2008 11:52 UTC (Thu) by cortana (subscriber, #24596) [Link] > Try using raw 'make' in a project with subdirectories sometime. Then you have already failed. Why on earth would anyone want to call make recursively? The only reason I have ever heard is "because I don't understand what I'm doing, and I cargo culted my build system from someone else, who also did not understand what he was doing".
|
Copyright © 2008, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds
Powered by Rackspace Managed Hosting.