purpose of EXTRA_DIST

Ralf Corsepius ralf.corsepius at rtems.org
Thu Oct 27 05:13:45 UTC 2005

On Wed, 2005-10-26 at 11:54 -0700, Till Straumann wrote:
> Ralf Corsepius wrote:
> > On Wed, 2005-10-26 at 08:13 -0500, Joel Sherrill  wrote:
> > 
> >>Ralf Corsepius wrote:
> >>
> >>>On Tue, 2005-10-25 at 14:35 -0700, Till Straumann wrote:
> >>>
> >>>
> >>>>What's the purpose of EXTRA_DIST, i.e.,
> >>>>what files are supposed to be listed ?
> >>>
> >>>
> >>>info automake
> >>>
> Thanks - 'info automake' says that you can add directories
> to EXTRA_DIST. What is the reason e.g.,
> libbsp/powerpc/Makefile.am
> meticulously lists files from the 'shared' directory and
> does not simply
> EXTRA_DIST = shared
Because using directories there is error-prone at best. I am not using
it to avoid picking up arbitrary files (such as *.o, .deps .libs, CVS,
editor backup files, etc.).

IMNSHO, automake better never should have documented this behavior and
am inclined to file a bug against automake on this ;)

> ? And why (trying to learn and understand...) does
>   libbsp/powerpc/motorola_powerpc/Makefile.am
> list files from ../shared/ in EXTRA_DIST (e.g., start.S)
> (that are, BTW. already added to EXTRA_DIST in
>   libbsp/powerpc/Makefile.am)
To be checked in detail. Without having looked into the sources, it
could be a historic artifact, it could be something else.
However, first of ally you should be aware that the BSPs' "shared/" as
implemented in RTEMS, violate the auto*tool working principles [1] and
therefore requires special treatment.

Other likely candidates:
* Compiling the *.S is not being compiled by automake rules (not
mentioned in an automake *_SOURCES variable) therefore doesn't get added
to the tarball automatically (applies to most start.S).

* Older versions of automake had problems in handling *.S. Modern
automakes (> 1.9.x, with RTEMS patch or automake/CVS) should correctly
handle *.S, so this also might be historical artifact.

Finally, as handling "shared/" is beyond the autotool's scope, handling
it in Makefile.ams partially also is a design compromise, catering
constraints being dictated by automake (for good reasons), history
(RTEMS < 4.6.99 did not use automake compilation rules!) and user
demands (such as your wish for "shared/").

As such a compromise, the current implementation is far from being
perfect and final, and will remain facing a lingering course until we
can find a "perfect solution".

I don't know how such a perfect solution would look like, because "make
dist|distcheck" and "shared" are diverging goals, we probably won't be
able to solve without major restructurization of the source tree.


[1] shared/ is one of the reasons why "make dist" and "make distcheck"
won't work in RTEMS. Getting "make dist|distcheck" functional requires
all sources being used underneath a configure script to be under control
of the corresponding configure.ac and Makefile.ams' control.
I.e. all sources must me located in directories below the configure.ac.
Sources outside of this source-tree are not allowed. "shared" however,
is outside of a BSP's configure script, i.e. violates the auto*tools'
working principles.

More information about the users mailing list