summaryrefslogtreecommitdiff
path: root/PLANS/subdir-objects.txt
blob: e3aec6be8281d8b47983f8d890a427da38491b3b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
Summary
-------

We want to make the behaviour currently enabled by the 'subdir-objects'
the default one, and in fact the *only* one, in Automake 1.14.
See automake bug#13378: <http://debbugs.gnu.org/13351>.

Details
-------

The fact that Automake-generated Makefiles place compiled object files in
the current directory by default, also when the corresponding source file
is in a subdirectory, is basically an historical accident, due to the fact
that the 'subdir-objects' option had only been introduced in April 1999,
starting with commit 'user-dep-gen-branchpoint-56-g88b5959', and never
made the default (likely to avoid backwards-compatibility issues).

Since I believe the behaviour enabled by the 'subdir-objects' is the most
useful one, and in fact the *only* natural one, I'd like to make it the
only one available, simplifying the Automake implementation and APIs a
little in the process.

Alas, since this also means changing the default behaviour of Automake
('subdir-objects' is not enabled by default, sadly), this means the
transition path will be less smooth than I'd like.

For automake 1.13.2 (ASAP)
--------------------------

Fix the bug spotted by Nick Bowler:

  <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13378#35>
  <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13378#44>

and exposed in test case 't/ccnoco4.sh': currently, Automake-generated
C compilation rules mistakenly pass the "-c -o" options combination
unconditionally (even to losing compiler) when the 'subdir-objects' is
used but sources are only present in the top-level directory.

For automake 1.13.2 (with more ease)
------------------------------------

Give a warning in the category 'unsupported' if the 'subdir-objects'
option is not specified.  This should give the users enough forewarning
about the planned change, and give them time to update their packages
to the new semantic.

This warning, when there are C sources in subdirs, should also mention the
need to use AM_PROG_CC_C_O in configure.ac (thanks to Peter Breitenlohner
for suggesting this).  This is not strictly required, but will make
things a little simpler for the users, by giving a more complete feedback:
<http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13378#29>

Be sure to avoid the warning when it would be irrelevant, i.e., if all
source files sit in "current" directory (thanks to Peter Johansson for
suggesting this).

For automake 1.14
-----------------

Flip the 'subdir-object' option on by default.  At the same time,
drop support for the "old" behaviour of having object files derived
from sources in a subdirectory being placed in the current directory
rather than in that same subdirectory.

Still keep the 'subdir-object' option supported (as a simple no-op
now), to save useless churn in our user's build systems.