aboutsummaryrefslogtreecommitdiff
path: root/tools/automake/patches/310-maintainer-clean-built_sources.patch
diff options
context:
space:
mode:
Diffstat (limited to 'tools/automake/patches/310-maintainer-clean-built_sources.patch')
-rw-r--r--tools/automake/patches/310-maintainer-clean-built_sources.patch49
1 files changed, 49 insertions, 0 deletions
diff --git a/tools/automake/patches/310-maintainer-clean-built_sources.patch b/tools/automake/patches/310-maintainer-clean-built_sources.patch
new file mode 100644
index 0000000000..5166c630da
--- /dev/null
+++ b/tools/automake/patches/310-maintainer-clean-built_sources.patch
@@ -0,0 +1,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, [],