linux-embedded.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Bernd Petrovitsch <bernd@firmix.at>
To: Rob Landley <rob@landley.net>
Cc: "Robert P. J. Day" <rpjday@crashcourse.ca>,
	Mike Frysinger <vapier.adi@gmail.com>,
	David Woodhouse <dwmw2@infradead.org>,
	Tim Bird <tim.bird@am.sony.com>, Greg Ungerer <gerg@snapgear.com>,
	Sam Ravnborg <sam@ravnborg.org>,
	Leon Woestenberg <leon.woestenberg@gmail.com>,
	linux-embedded@vger.kernel.org
Subject: Re: cross-compiling alternatives
Date: Fri, 13 Jun 2008 10:50:28 +0200	[thread overview]
Message-ID: <1213347028.17853.40.camel@tara.firmix.at> (raw)
In-Reply-To: <200806121925.35883.rob@landley.net>

On Don, 2008-06-12 at 19:25 -0500, Rob Landley wrote:
> On Thursday 12 June 2008 11:12:13 Robert P. J. Day wrote:
> > On Thu, 12 Jun 2008, Mike Frysinger wrote:
> > > On Thu, Jun 12, 2008 at 11:50 AM, David Woodhouse wrote:
> > > > If we just made people write portable code and proper Makefiles,
> > > > it would be less of an issue :)
> > >
> > > people cant even write proper *native* makefiles.  mtd-utils for
> > > example ;).
> >
> > meooowww!  :-)  but at the risk of dragging this even further
> > off-topic, i am *constantly* asked by people how to set up makefiles
> > for their software project, and what would be nice is a small
> > collection of examples of a makefile (or makefiles) done *right*.  as
> > in,
> 
> Make doesn't scale.
> 
> 99% of the builds in the open source world are "make all", and most of the 
> smaller projects build natively on modern dual processor 2ghz laptops in 
> under 10 seconds anyway.
>
> The larger projects with significant build times usually find that make 
> doesn't suit their needs, so that they write some other build system.  
> Sometimes they do it on top of make, such as the kernel's kbuild.  Sometimes 
> they use another language like apache's ANT.  Sometimes they roll their own 

"ant" is also only "make reimplemented in Java" (or did I miss
something). I see no win here.

> in C (anybody remember X11's imake?)  KDE switched to cmake: 

That generated "only" a Makefile IIRC.

[...]
> Current compilers have a "build at once" mode where they suck the whole 
> project in and run the optimizer on it at once, resulting in noticeably 
> smaller and faster output at the expense of needing buckets of memory to hold 
> all the source code and intermediate structures in memory at once.  The main 
> roadblock to making use of this?  Ripping out the existing makefiles and 
> replacing them with a very small shell script that does something similar 
> to "gcc *.c".
> 
> The first question you should be asking when doing a new build system from 
> scratch is probably "should I really be using make"?
> 
> > properly recursive, 
> 
> Recursive make considered harmful:
>   http://aegis.sourceforge.net/auug97.pdf

ACK.

> How is needing to call make recursively _not_ just another way of sayng "the 
> dependency checking make does, which was the central idea behind its design, 
> is a lost cause and we need to jettison it to do builds"?

The problem is that build systems have (at least) two layers:
- the lower are the usual apps and libs and kernel ... bringing their
  working Makefile's with them.
- the upper layer needs to build the kernel, libs and apps.
  This needs usually a defined sequence and set of consistent
  parameters.
But the lower layer doesn't "export" it's local available rule base so
the `make` (or shell script) on the upper layer can't use it and one
must therefore `make -C $tooldir` - even if there is absolutely nothing
to do.
Of course the upper layer may remember if an lib/app has been build to
avoid 60% of all "obviously" useless `make -C` calls. But that doesn't
solve any problem really.

> I just did a "make distclean" on a qemu tree I had lying around.  On my 1.7 
> ghz 64 bit laptop, it took 9.2 seconds to figure out it had nothing to do, 
> just because it had to recurse into so many subdirectories to do it.

"Recursive make considered harmful"
Or you need more RAM and faster disks;-)

	Bernd
-- 
Firmix Software GmbH                   http://www.firmix.at/
mobil: +43 664 4416156                 fax: +43 1 7890849-55
          Embedded Linux Development and Services



  parent reply	other threads:[~2008-06-13  8:50 UTC|newest]

Thread overview: 182+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1209577322.25560.402.camel@pmac.infradead.org>
     [not found] ` <87bq3rgq40.fsf@basil.nowhere.org>
     [not found]   ` <1209582709.25560.441.camel@pmac.infradead.org>
     [not found]     ` <1209582709.25560.441.camel-ZP4jZrcIevRpWr+L1FloEB2eb7JE58TQ@public.gmane.org>
2008-05-28 21:52       ` [PATCH 0/1] Embedded Maintainer(s), linux-embedded@vger list Rob Landley
2008-06-09 21:27         ` Leon Woestenberg
2008-06-10  3:53           ` Rob Landley
2008-06-10  4:30             ` Sam Ravnborg
2008-06-10  6:55               ` Rob Landley
2008-06-10  7:54                 ` Sam Ravnborg
2008-06-10  9:09                   ` Wolfgang Denk
2008-06-10 13:12                     ` Jamie Lokier
2008-06-10 13:25                       ` Will Newton
2008-06-10 13:33                         ` David Woodhouse
2008-06-10 13:47                           ` Will Newton
2008-06-10 13:53                             ` David Woodhouse
2008-06-10 14:00                               ` Grant Likely
2008-06-10 14:01                             ` Wolfgang Denk
2008-06-10 14:29                               ` Jamie Lokier
2008-06-11  5:34                             ` Rob Landley
2008-06-10 13:49                         ` Wolfgang Denk
2008-06-11  5:25                           ` Rob Landley
2008-06-12 18:18                             ` Enrico Weigelt
2008-06-12 18:55                               ` Wolfgang Denk
2008-06-12 20:55                                 ` Enrico Weigelt
2008-06-15 21:48                               ` Rob Landley
2008-06-17 14:11                                 ` Enrico Weigelt
2008-06-10 13:47                       ` Wolfgang Denk
2008-06-10 10:20                   ` Jamie Lokier
2008-06-10 10:36                     ` Adrian Bunk
2008-06-10 10:50                     ` Sam Ravnborg
2008-06-11  5:28                       ` Paul Mundt
2008-06-10 17:36                   ` Tim Bird
2008-06-11  3:35                   ` Rob Landley
2008-06-11  5:47                     ` Greg Ungerer
2008-06-12  0:41                       ` Rob Landley
2008-06-12  7:55                         ` Jamie Lokier
2008-06-12 15:23                         ` cross-compiling alternatives (was Re: [PATCH 0/1] Embedded Maintainer(s)...) Tim Bird
2008-06-12 15:50                           ` David Woodhouse
2008-06-12 16:05                             ` Mike Frysinger
2008-06-12 16:08                               ` David Woodhouse
2008-06-12 16:15                                 ` Mike Frysinger
2008-06-12 16:12                               ` Robert P. J. Day
2008-06-13  0:25                                 ` Rob Landley
2008-06-13  1:22                                   ` Bill Gatliff
2008-06-13  6:55                                   ` Alexander Neundorf
2008-06-13 15:06                                     ` Enrico Weigelt
2008-06-13  7:04                                   ` David Woodhouse
2008-06-13 15:02                                     ` linux-embedded-owner
2008-06-13 17:00                                       ` David Woodhouse
2008-06-13 17:12                                         ` Bill Traynor
2008-06-13 18:44                                           ` Tim Bird
2008-06-13 18:55                                             ` Sam Ravnborg
2008-06-13 19:00                                             ` Bill Traynor
2008-06-13 19:43                                             ` Johannes Stezenbach
2008-06-13 17:30                                       ` Makefile debugger linux-embedded-owner
2008-06-13  8:50                                   ` Bernd Petrovitsch [this message]
2008-06-13  9:11                                     ` cross-compiling alternatives Alexander Neundorf
2008-06-13 14:51                                   ` cross-compiling alternatives (was Re: [PATCH 0/1] Embedded Maintainer(s)...) Enrico Weigelt
2008-06-16  7:58                                     ` Alexander Neundorf
2008-06-16 16:00                                       ` Enrico Weigelt
2008-06-16 17:38                                         ` Adrian Bunk
2008-06-17 13:57                                           ` Enrico Weigelt
2008-06-13 11:14                                 ` Geert Uytterhoeven
2008-06-13 11:22                                 ` Bart Van Assche
2008-06-12 18:29                               ` Josh Boyer
2008-06-12 19:02                                 ` Mike Frysinger
2008-06-13 13:29                                   ` Josh Boyer
2008-06-13 13:59                                   ` Josh Boyer
2008-06-12 16:08                             ` Paul Mundt
2008-06-12 16:28                               ` Bill Gatliff
2008-06-12 16:31                                 ` Paul Mundt
2008-06-12 16:38                                   ` Mike Frysinger
2008-06-12 18:50                                     ` Bernhard Fischer
2008-06-12 17:14                                   ` Bill Gatliff
2008-06-12 17:22                                     ` Mike Frysinger
2008-06-12 17:23                                     ` Sam Ravnborg
2008-06-13 18:01                                     ` Rob Landley
2008-06-12 16:37                                 ` David Woodhouse
2008-06-12 17:01                                   ` Adrian Bunk
2008-06-12 17:19                                     ` Bill Gatliff
2008-06-12 17:17                                   ` Bill Gatliff
2008-06-13 11:15                                   ` Geert Uytterhoeven
2008-06-13 11:17                                     ` David Woodhouse
2008-06-12 18:34                                 ` Enrico Weigelt
2008-06-12 19:00                                   ` Bill Gatliff
2008-06-15 21:51                                   ` Rob Landley
2008-06-12 18:30                               ` Enrico Weigelt
2008-06-12 18:57                                 ` Wolfgang Denk
2008-06-12 16:23                             ` Tim Bird
2008-06-12 18:37                               ` Enrico Weigelt
2008-06-13 18:45                                 ` Robert Schwebel
2008-06-15 23:12                                   ` Enrico Weigelt
2008-06-16  8:02                                     ` Alexander Neundorf
2008-06-16  8:28                                       ` cross-compiling alternatives Bernd Petrovitsch
2008-06-16  9:25                                         ` Alexander Neundorf
2008-06-13  1:25                               ` cross-compiling alternatives (was Re: [PATCH 0/1] Embedded Maintainer(s)...) Rob Landley
2008-06-13  1:28                                 ` Robert P. J. Day
2008-06-13  1:29                                 ` Mike Frysinger
2008-06-13  6:30                                   ` Alexander Neundorf
2008-06-13 18:51                                     ` Robert Schwebel
2008-06-13 22:25                                       ` Jamie Lokier
2008-06-13 23:19                                         ` Robert Schwebel
2008-06-14  0:07                                           ` Jamie Lokier
2008-06-14 11:26                                             ` Robert Schwebel
2008-06-16 11:39                                               ` Jamie Lokier
2008-06-16 12:06                                                 ` Alexander Neundorf
2008-06-16 13:32                                                   ` Jamie Lokier
2008-06-16 16:28                                                     ` Bernhard Fischer
2008-06-16 22:28                                                       ` Jamie Lokier
2008-06-16 22:44                                                         ` Adrian Bunk
2008-06-16  5:11                                             ` Enrico Weigelt
2008-06-16 11:33                                               ` Jamie Lokier
2008-06-16  8:33                                             ` cross-compiling alternatives Bernd Petrovitsch
2008-06-16 11:17                                               ` Jamie Lokier
2008-06-16 11:43                                                 ` Bernd Petrovitsch
2008-06-16  7:55                                           ` cross-compiling alternatives (was Re: [PATCH 0/1] Embedded Maintainer(s)...) Alexander Neundorf
2008-06-16 15:15                                             ` Enrico Weigelt
2008-06-17  6:27                                               ` Alexander Neundorf
2008-06-17 13:46                                                 ` Enrico Weigelt
2008-06-17 14:22                                                   ` Alexander Neundorf
2008-06-16  4:57                                         ` Enrico Weigelt
2008-06-16 11:44                                           ` Jamie Lokier
2008-06-16  4:31                                       ` Enrico Weigelt
2008-06-16  8:13                                       ` Alexander Neundorf
2008-06-16  8:21                                       ` cross-compiling alternatives Bernd Petrovitsch
2008-06-13  3:11                                 ` cross-compiling alternatives (was Re: [PATCH 0/1] Embedded Maintainer(s)...) Sam Ravnborg
2008-06-13 18:47                                   ` Robert Schwebel
2008-06-13  6:43                             ` Alexander Neundorf
2008-06-13  8:38                               ` Bernd Petrovitsch
2008-06-13  9:06                                 ` Alexander Neundorf
2008-06-13  9:12                                   ` David Woodhouse
2008-06-13  9:32                                     ` Alexander Neundorf
2008-06-13 15:28                                       ` Enrico Weigelt
2008-06-14  0:31                                         ` Jamie Lokier
2008-06-16  4:23                                           ` Enrico Weigelt
2008-06-16 10:49                                             ` Jamie Lokier
2008-06-16 11:09                                               ` David Woodhouse
2008-06-16 11:52                                                 ` Jamie Lokier
2008-06-16 11:59                                                   ` David Woodhouse
2008-06-16 16:43                                                   ` Bernhard Fischer
2008-06-13 10:03                                   ` cross-compiling alternatives Bernd Petrovitsch
2008-06-13 11:24                                     ` Alexander Neundorf
2008-06-13 13:17                                     ` Jamie Lokier
2008-06-13 13:28                                       ` Bernd Petrovitsch
2008-06-13 13:40                                       ` Alexander Neundorf
2008-06-13 13:56                                         ` Matthieu CASTET
2008-06-13 14:41                                           ` Enrico Weigelt
2008-06-13 14:49                                             ` Jamie Lokier
2008-06-13 14:51                                               ` Enrico Weigelt
2008-06-13 14:55                                       ` Enrico Weigelt
2008-06-13 15:16                                     ` Enrico Weigelt
2008-06-13 18:45                                       ` Bernd Petrovitsch
2008-06-13 19:10                                         ` Robert Schwebel
2008-06-16  4:08                                         ` Enrico Weigelt
2008-06-16  7:31                                           ` Peter Korsgaard
2008-06-16 14:33                                             ` Enrico Weigelt
2008-06-16 16:45                                               ` Bernhard Fischer
2008-06-13 19:14                                   ` cross-compiling alternatives (was Re: [PATCH 0/1] Embedded Maintainer(s)...) Rob Landley
2008-06-13 15:25                               ` Enrico Weigelt
2008-06-12 18:25                         ` [PATCH 0/1] Embedded Maintainer(s), linux-embedded@vger list Enrico Weigelt
2008-06-12 21:11                           ` David VomLehn
2008-06-12 21:42                             ` James Chapman
2008-06-12 21:46                               ` Mike Frysinger
2008-06-12 21:53                                 ` Tim Bird
2008-06-12 21:56                                   ` Mike Frysinger
2008-06-13  8:39                                     ` James Chapman
2008-06-13  9:02                                       ` Daniel THOMPSON
2008-06-13 11:28                                         ` James Chapman
2008-06-12 22:02                                 ` Jim Freeman
2008-06-13 13:14                                   ` Samuel Robb
2008-06-13 14:36                                     ` Enrico Weigelt
2008-06-13 14:26                                   ` Enrico Weigelt
2008-06-13 22:24                               ` David VomLehn
2008-06-15 15:39                         ` Leon Woestenberg
2008-06-15 21:43                           ` Rob Landley
2008-06-23 17:22     ` Denys Vlasenko
2008-06-23 18:57       ` Sam Ravnborg
2008-06-23 19:12         ` Denys Vlasenko
2008-06-23 19:33           ` Sam Ravnborg
     [not found] ` <1209636171.25560.508.camel@pmac.infradead.org>
     [not found]   ` <20080501104158.GM20451@one.firstfloor.org>
2008-06-23 17:28     ` Denys Vlasenko
2008-06-23 17:45       ` Adrian Bunk
2008-06-23 18:19         ` Denys Vlasenko
2008-06-23 19:05         ` Tim Bird
2008-06-25  9:50         ` James Chapman
2008-06-25 15:41           ` Adrian Bunk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1213347028.17853.40.camel@tara.firmix.at \
    --to=bernd@firmix.at \
    --cc=dwmw2@infradead.org \
    --cc=gerg@snapgear.com \
    --cc=leon.woestenberg@gmail.com \
    --cc=linux-embedded@vger.kernel.org \
    --cc=rob@landley.net \
    --cc=rpjday@crashcourse.ca \
    --cc=sam@ravnborg.org \
    --cc=tim.bird@am.sony.com \
    --cc=vapier.adi@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).