diff options
author | Stefano Lattarini <stefano.lattarini@gmail.com> | 2012-01-28 09:05:19 +0100 |
---|---|---|
committer | Stefano Lattarini <stefano.lattarini@gmail.com> | 2012-01-31 11:26:04 +0100 |
commit | d8422c9488564396d19f7bda0318829e735f9a5a (patch) | |
tree | cf074f1746fcbed0f4a9bb824ada126f268bd62d | |
parent | a0a4ca7d023f85185031ae5f8cbf2dd9102fd073 (diff) | |
download | automake-d8422c9488564396d19f7bda0318829e735f9a5a.tar.gz |
[ng] general: GNU make doesn't support the '.MAKE' special target
The '.MAKE' special target can be used on NetBSD make to ensure
that the recipes for the targets declared as its dependencies are
executed also with "make -n". This special target does not work
with GNU make though, so it's pointless to use it. To obtain a
similar effect on GNU make, one can either prepend a recipe with
the '+' modifier, or use the string '$(MAKE)' somewhere in the
recipe text).
* syntax-checks.mk (sc_no_dotmake_target): New syntax check,
ensuring we don't use the '.MAKE' special target.
(syntax_check_rules): Add it.
* lib/am/install.am: Don't use the '.MAKE' target.
* lib/am/subdirs.am: Likewise.
* contrib/multilib/multilib.am: Likewise.
* contrib/check-html.am: Likewise.
* automake.in: Likewise.
-rw-r--r-- | automake.in | 12 | ||||
-rw-r--r-- | contrib/check-html.am | 1 | ||||
-rw-r--r-- | contrib/multilib/multilib.am | 9 | ||||
-rw-r--r-- | lib/am/install.am | 8 | ||||
-rw-r--r-- | lib/am/subdirs.am | 1 | ||||
-rw-r--r-- | syntax-checks.mk | 16 |
6 files changed, 23 insertions, 24 deletions
diff --git a/automake.in b/automake.in index caa7332b1..0f7dadfa9 100644 --- a/automake.in +++ b/automake.in @@ -3574,7 +3574,6 @@ sub handle_tags . "\tdone\n"); push (@tag_deps, 'tags-recursive'); &depend ('.PHONY', 'tags-recursive'); - &depend ('.MAKE', 'tags-recursive'); $output_rules .= ("ctags-recursive:\n" . "\tlist=\'\$(SUBDIRS)\'; for subdir in \$\$list; do \\\n" @@ -3585,7 +3584,6 @@ sub handle_tags . "\tdone\n"); push (@ctag_deps, 'ctags-recursive'); &depend ('.PHONY', 'ctags-recursive'); - &depend ('.MAKE', 'ctags-recursive'); $output_rules .= ("cscopelist-recursive:\n" . "\tlist=\'\$(SUBDIRS)\'; for subdir in \$\$list; do \\\n" @@ -3596,7 +3594,6 @@ sub handle_tags . "\tdone\n"); push (@cscope_deps, 'cscopelist-recursive'); &depend ('.PHONY', 'cscopelist-recursive'); - &depend ('.MAKE', 'cscopelist-recursive'); } if (&saw_sources_p (1) @@ -4500,7 +4497,6 @@ sub handle_all ($) . "\n\t\$(MAKE) " . (var ('SUBDIRS') ? 'all-recursive' : 'all-am') . "\n\n"); - depend ('.MAKE', 'all'); } else { @@ -4535,14 +4531,12 @@ sub do_check_merge_target () { pretty_print_rule ("\t\$(MAKE)", "\t ", @check); - depend ('.MAKE', 'check-am'); } } if (@check_tests) { pretty_print_rule ("\t\$(MAKE)", "\t ", @check_tests); - depend ('.MAKE', 'check-am'); } depend '.PHONY', 'check', 'check-am'; @@ -4553,8 +4547,6 @@ sub do_check_merge_target () : '') . (var ('SUBDIRS') ? 'check-recursive' : 'check-am') . "\n"); - depend ('.MAKE', 'check') - if var ('BUILT_SOURCES'); } # handle_clean ($MAKEFILE) @@ -4671,7 +4663,6 @@ sub handle_factored_dependencies { if (user_phony_rule "$_-hook") { - depend ('.MAKE', "$_-am"); register_action("$_-am", ("\t\@\$(NORMAL_INSTALL)\n" . "\t\$(MAKE) $_-hook")); @@ -4697,9 +4688,8 @@ 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'. my @undefined_conds = (TRUE,); - if ($_ ne '.PHONY' && $_ ne '.MAKE') + if ($_ ne '.PHONY') { @undefined_conds = Automake::Rule::define ($_, 'internal', diff --git a/contrib/check-html.am b/contrib/check-html.am index 7ddd948d4..9bba3910b 100644 --- a/contrib/check-html.am +++ b/contrib/check-html.am @@ -56,4 +56,3 @@ check-html recheck-html: exit $$rv .PHONY: check-html recheck-html -.MAKE: check-html recheck-html diff --git a/contrib/multilib/multilib.am b/contrib/multilib/multilib.am index d829d73c3..5549d44e0 100644 --- a/contrib/multilib/multilib.am +++ b/contrib/multilib/multilib.am @@ -1,8 +1,7 @@ ## automake - create Makefile.in from Makefile.am -## Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -## 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -## Foundation, Inc. +## Copyright (C) 1994-2012 Free Software Foundation, Inc. + ## This Makefile.in is free software; the Free Software Foundation ## gives unlimited permission to copy and/or distribute it, ## with or without modifications, as long as this notice is preserved. @@ -35,8 +34,8 @@ distclean-multi: maintainer-clean-multi: $(MULTICLEAN) DO=maintainer-clean multi-clean # $(MAKE) -.MAKE .PHONY: all-multi clean-multi distclean-multi install-am \ - install-multi maintainer-clean-multi mostlyclean-multi +.PHONY: all-multi clean-multi distclean-multi install-am \ + install-multi maintainer-clean-multi mostlyclean-multi install-exec-local: install-multi diff --git a/lib/am/install.am b/lib/am/install.am index d556b871f..68ce6002d 100644 --- a/lib/am/install.am +++ b/lib/am/install.am @@ -63,11 +63,7 @@ install-data: install-data-am uninstall: uninstall-am endif !%?SUBDIRS% -if %?maybe_BUILT_SOURCES% -.MAKE: install -endif %?maybe_BUILT_SOURCES% - -.MAKE .PHONY: install-am +.PHONY: install-am install-am: all-am @$(MAKE) install-exec-am install-data-am @@ -81,7 +77,7 @@ install-am: all-am ## If you ever modify this, keep in mind that INSTALL_PROGRAM is used ## in subdirectories, so never set it to a value relative to the top ## directory. -.MAKE .PHONY: install-strip +.PHONY: install-strip install-strip: ## Beware that there are two variables used to install programs: ## INSTALL_PROGRAM is used for ordinary *_PROGRAMS diff --git a/lib/am/subdirs.am b/lib/am/subdirs.am index 26d176b53..5e6d578d3 100644 --- a/lib/am/subdirs.am +++ b/lib/am/subdirs.am @@ -24,7 +24,6 @@ AM_RECURSIVE_TARGETS += $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) .PHONY: $(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS) -.MAKE: $(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS) # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. diff --git a/syntax-checks.mk b/syntax-checks.mk index 46c7e09be..1b5e08cc6 100644 --- a/syntax-checks.mk +++ b/syntax-checks.mk @@ -56,6 +56,7 @@ sc_AMDEP_TRUE_in_automake_in \ sc_tests_no_gmake_requirement \ sc_tests_no_gmake_checking \ sc_tests_make_can_chain_suffix_rules \ +sc_no_dotmake_target \ sc_no_am_makeflags \ sc_tests_no_make_e \ sc_docs_no_make_e \ @@ -346,6 +347,21 @@ sc_make_simple_include: "; \ $(sc_grep_for_bad_make_include) +## The '.MAKE' special target is NetBSD-make specific, and not supported +## by GNU make. No point in using it. +sc_no_dotmake_target: + @files="\ + `find $(srcdir) -name '*.am'` \ + $(srcdir)/automake.in \ + $(srcdir)/doc/*.texi \ + "; \ + if grep '\.MAKE' $$files; then \ + echo "Special target '.MAKE' not supported by GNU make." 1>&2; \ + echo "Use the '+' recipe modifier instead, or put the" \ + "'\$$(MAKE)' string somewhere in the recipe text." 1>&2; \ + exit 1; \ + fi + ## $(AM_MAKEFLAGS) is obsolete now that we assume GNU make, since it ## is smart enough to correctly pass the values of macros redefined on ## the command line to sub-make invocations. |