aboutsummaryrefslogtreecommitdiffstats
path: root/main/automake/0001-automake-add-install-dep-on-install-libLTLIBRARIES-t.patch
blob: 9923474f4c79e310aec135b1c1a32ed5ae0cddb5 (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
68
69
70
From 3009ad094f5807c512e79224a8acee5a81a736b0 Mon Sep 17 00:00:00 2001
From: Jan Engelhardt <jengelh@inai.de>
Date: Sun, 29 Aug 2021 13:02:33 +0200
Subject: [PATCH] automake: add install dep on install-libLTLIBRARIES to all
 targets

A Makefile.am like

	bin_PROGRAMS =
	lib_LTLIBRARIES = library1.la
	pkglib_LTLIBRARIES = library2.la
	library2_LIBADD = library1.la

produces, in Makefile.in,

	install-binPROGRAMS: install-libLTLIBRARIES

but no

	install-pkglibLTLIBRARIES: install-libLTLIBRARIES

therefore potentially breaking `make install -j`. Rectify this by
depending on install-libLTLIBRARIES not just for bin_PROGRAMS, but
all PROGRAMS and LTLIBRARIES.

Signed-off-by: Jan Engelhardt <jengelh@inai.de>
---
 bin/automake.in | 25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/bin/automake.in b/bin/automake.in
index f04f5d5f5..30babd607 100644
--- a/bin/automake.in
+++ b/bin/automake.in
@@ -8042,13 +8042,26 @@ sub generate_makefile
   handle_all ($makefile);
 
   # FIXME: Gross!
-  if (var ('lib_LTLIBRARIES') && var ('bin_PROGRAMS'))
+  my $have_lt1 = !!var("lib_LTLIBRARIES");
+  my $have_lt2 = !!var("nobase_lib_LTLIBRARIES");
+  for my $var (variables("PROGRAMS"), variables("LTLIBRARIES"))
     {
-      $output_rules .= "install-binPROGRAMS: install-libLTLIBRARIES\n\n";
-    }
-  if (var ('nobase_lib_LTLIBRARIES') && var ('bin_PROGRAMS'))
-    {
-      $output_rules .= "install-binPROGRAMS: install-nobase_libLTLIBRARIES\n\n";
+      if ($var->name eq "lib_LTLIBRARIES"
+          || $var->name eq "nobase_lib_LTLIBRARIES"
+          || substr($var->name, 0, 7) eq "noinst_")
+        {
+          next;
+        }
+      my $shortname = $var->name;
+      $shortname =~ tr{_}{}d;
+      if ($have_lt1)
+        {
+          $output_rules .= "install-$shortname: install-libLTLIBRARIES\n\n";
+        }
+      if ($have_lt2)
+        {
+          $output_rules .= "install-$shortname: install-nobase_libLTLIBRARIES\n\n";
+        }
     }
 
   handle_install;
-- 
2.33.0