This is the mail archive of the automake@gnu.org mailing list for the automake project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Speeding up config and make


I recently dawned on me that there is a simple way to speed
up downloading, configuring and building packages by tweaking
Makefile.am.  Change this:

  foo_SOURCES = ..........

To this:

  foo_src = .............
  nodist_foo_SOURCES = foosrc.c
  EXTRA_DIST = $(foo_src)
  foosrc.c : $(foo_src)
     for f in foo.h $(foo_src) ; do echo "#include \"$$f\"" ; done > $@

It has the following effects:

1.  The resulting makefiles have fewer dependencies.
    They are smaller.  Faster to configure.

2.  There are fewer compilations.  They are much bigger, but
    still take less time overall.

3.  Make runs *much* faster.  There are far fewer dependency
    computations to make.  This savings is *FAR* greater than the
    compile time wasted recompiling unmodified code.  Besides,
    most building is on a clean tree anyway.

4.  The executables are potentially faster because inter-procedural
    optimizations are easier to perform.

5.  Downloads go faster.  The distribution is smaller (marginally).

6.  Changing one file triggers a full recompile.  It's still faster.

7.  It is aesthetically displeasing.

8.  It leads to the following question:

What if "make" were dropped altogether and replaced with a simple
script that simply performed all the build steps all the time?
If it takes less time to recompile the world than compute the
dependency tree, why bother with make at all?  To heck with dependencies.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]