aboutsummaryrefslogtreecommitdiff
path: root/tools/automake/patches/310-maintainer-clean-built_sources.patch
blob: 5166c630da2eb0829be197ddf511c5662bbacec8 (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
--- a/bin/automake.in
+++ b/bin/automake.in
@@ -4760,12 +4760,42 @@ sub handle_clean
     if var ('CLEANFILES');
   $clean_files{'$(DISTCLEANFILES)'} = DIST_CLEAN
     if var ('DISTCLEANFILES');
-  $clean_files{'$(MAINTAINERCLEANFILES)'} = MAINTAINER_CLEAN
-    if var ('MAINTAINERCLEANFILES');
 
   # Built sources are automatically removed by maintainer-clean.
-  $clean_files{'$(BUILT_SOURCES)'} = MAINTAINER_CLEAN
-    if var ('BUILT_SOURCES');
+  # For each defined condition of the maintainer-clean variable, append built sources
+  # and create an unconditional definition with built sources if not already defined.
+  # Then, for each definition of built sources without maintainer-clean defined, define it.
+  # Otherwise, if the variable is not user-defined, define it with built sources.
+  my $mcleanvar = var ('MAINTAINERCLEANFILES');
+  if ($mcleanvar) {
+    foreach my $rcond ($mcleanvar->conditions->conds)
+    {
+      if (! grep { $_ eq '$(BUILT_SOURCES)' } $mcleanvar->value_as_list ($rcond)) {
+	Automake::Variable::define ($mcleanvar->name, VAR_MAKEFILE, '+', $rcond,
+				    '$(BUILT_SOURCES)', '', INTERNAL, VAR_ASIS)
+	  if var ('BUILT_SOURCES');
+      }
+    }
+    my $bsources = var ('BUILT_SOURCES');
+    if ($bsources) {
+      foreach my $rcond ($bsources->conditions->conds)
+      {
+	Automake::Variable::define ($mcleanvar->name, VAR_MAKEFILE, '', $rcond,
+				    '$(BUILT_SOURCES)', '', INTERNAL, VAR_ASIS)
+	  if ! ($mcleanvar->def ($rcond) || $mcleanvar->def (TRUE));
+      }
+      if (! $mcleanvar->def (TRUE)) {
+	Automake::Variable::define ($mcleanvar->name, VAR_MAKEFILE, '', TRUE,
+				    '$(BUILT_SOURCES)', '', INTERNAL, VAR_ASIS);
+      }
+    }
+  } else {
+    Automake::Variable::define ('MAINTAINERCLEANFILES', VAR_MAKEFILE, '', TRUE,
+				'$(BUILT_SOURCES)', '', INTERNAL, VAR_ASIS)
+      if var ('BUILT_SOURCES');
+  }
+  $clean_files{'$(MAINTAINERCLEANFILES)'} = MAINTAINER_CLEAN
+    if var ('MAINTAINERCLEANFILES');
 
   # Compute a list of "rm"s to run for each target.
   my %rms = (MOSTLY_CLEAN, [],