automake
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

What gets distributed in presence of conditional statements?


From: Andrey Borzenkov
Subject: What gets distributed in presence of conditional statements?
Date: Sat, 4 May 2013 09:57:34 +0400

I hit this problem in GRUB2 and still am not sure what is the best way
to proceed.

GRUB2 autogenerates Makefile.am (using autogen), and Makefile.am
basically consists of series

if PLATFORM_A_ENABLED
module_1_SOURCES = ...
...
EXTRA_DIST += ...
...
endif

if PLATFORM_B_ENABLED
module_1_sources = ...
...
EXTRA_DIST += ...
...
endif 

for every object (module, program, etc) that is built.

The problem is, some objects are not built for every supported
platform. If grub2 is configured for such platform, "make dist"
will be missing EXTRA_DIST snippets for such objects, and using such
tarball will fail on other platforms.

The problem so far seems to be restricted to EXTRA_DIST only; other
parts (SOURCES, SCRIPTS or even dist_DATA) all gets collected even if
put under condition that evaluates to false.

So what is the best way to actually solve it? Empirically using
dist_noinst_DATA instead of EXTRA_DATA does solve the problem
(dist_noinst_DATA is apparently honored even when condition itself is
disabled).

Alternative is to place EXTRA_DIST outside of conditionals, but this is
more intrusive probably.

I could not find definitive description in automake documentation which
files are collected for distribution in presence of conditionals. Can I
rely on dist_xxx_DATA being stable in the future?

This is automake 1.12.

TIA

-andrey



reply via email to

[Prev in Thread] Current Thread [Next in Thread]