>From f0a7083afefe98aa7aecf4ece592915395947631 Mon Sep 17 00:00:00 2001
Message-Id:
From: Stefano Lattarini
Date: Thu, 26 Dec 2013 19:31:15 +0100
Subject: [PATCH] Allow user to extend .PRECIOUS target
References:
* bin/automake.in: Adjust to ensure we handle '.PRECIOUS' the same way
we do for '.PHONY' and '.MAKE'.
* lib/Automake/Rule.pm: Likewise.
* t/precious.sh: New test.
* t/list-of-tests.mk: Add it.
* t/phony.sh: Enhance a little while at it.
* NEWS: Update.
* THANKS: Likewise.
Reported-by: Holger Hans Peter Freyther
Signed-off-by: Stefano Lattarini
---
NEWS | 5 +++++
THANKS | 1 +
bin/automake.in | 4 ++--
lib/Automake/Rule.pm | 2 +-
t/list-of-tests.mk | 1 +
t/phony.sh | 1 +
t/precious.sh | 32 ++++++++++++++++++++++++++++++++
7 files changed, 43 insertions(+), 3 deletions(-)
create mode 100644 t/precious.sh
diff --git a/NEWS b/NEWS
index 8d902c0..dd2812a 100644
--- a/NEWS
+++ b/NEWS
@@ -93,6 +93,11 @@ New in 1.15:
implementation of the TAP driver (that is documented in the manual)
is more portable and has feature parity with the perl implementation.
+* Bug fixes:
+
+ - The user can now extend the special .PRECIOUS target, the same way
+ he could already do with the .MAKE .and .PHONY targets.
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
New in 1.14.1:
diff --git a/THANKS b/THANKS
index 2b4f8ee..58dac98 100644
--- a/THANKS
+++ b/THANKS
@@ -152,6 +152,7 @@ Harlan Stenn address@hidden
He Li address@hidden
Henrik Frystyk Nielsen address@hidden
Hib Eris address@hidden
+Holger Hans Peter Freyther address@hidden
Ian Lance Taylor address@hidden
Ignacy Gawedzki address@hidden
ÐлÑÑ Ð. ÐолÑбев address@hidden
diff --git a/bin/automake.in b/bin/automake.in
index 283d1bb..8808300 100644
--- a/bin/automake.in
+++ b/bin/automake.in
@@ -4645,9 +4645,9 @@ sub handle_factored_dependencies ()
# to append dependencies. This would not work if Automake
# refrained from defining its own .PHONY target as it does
# with other overridden targets.
- # Likewise for '.MAKE'.
+ # Likewise for '.MAKE' and '.PRECIOUS'.
my @undefined_conds = (TRUE,);
- if ($_ ne '.PHONY' && $_ ne '.MAKE')
+ if ($_ ne '.PHONY' && $_ ne '.MAKE' && $_ ne '.PRECIOUS')
{
@undefined_conds =
Automake::Rule::define ($_, 'internal',
diff --git a/lib/Automake/Rule.pm b/lib/Automake/Rule.pm
index a28a78d..5227009 100644
--- a/lib/Automake/Rule.pm
+++ b/lib/Automake/Rule.pm
@@ -340,8 +340,8 @@ sub reset()
# Tarballing.
'dist-all' => [],
- # Phonying.
'.PHONY' => [],
+ '.PRECIOUS' => [],
# Recursive install targets (so "make -n install" works for BSD Make).
'.MAKE' => [],
);
diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk
index 54afd8f..a9694d8 100644
--- a/t/list-of-tests.mk
+++ b/t/list-of-tests.mk
@@ -838,6 +838,7 @@ t/percent.sh \
t/percent2.sh \
t/per-target-flags.sh \
t/phony.sh \
+t/precious.sh \
t/pluseq.sh \
t/pluseq2.sh \
t/pluseq3.sh \
diff --git a/t/phony.sh b/t/phony.sh
index dd0c54a..a632776 100644
--- a/t/phony.sh
+++ b/t/phony.sh
@@ -26,6 +26,7 @@ EOF
$ACLOCAL
$AUTOMAKE
+$FGREP '.PHONY:' Makefile.in # For debugging.
test $($FGREP -c '.PHONY:' Makefile.in) -eq 3
:
diff --git a/t/precious.sh b/t/precious.sh
new file mode 100644
index 0000000..8750305
--- /dev/null
+++ b/t/precious.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+# Copyright (C) 2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+# Make sure .PRECIOUS can be extended by the user, and can be given
+# dependencies several times.
+
+. test-init.sh
+
+cat >Makefile.am << 'EOF'
+.PRECIOUS: foo
+.PRECIOUS: bar
+EOF
+
+$ACLOCAL
+$AUTOMAKE
+$FGREP '.PRECIOUS:' Makefile.in # For debugging.
+test $($FGREP -c '.PRECIOUS:' Makefile.in) -eq 3
+
+:
--
1.8.5.rc0.335.g7794a68