[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Automake-NG] [PATCH 11/12] [ng] compile: don't support $(INCLUDES) anym
From: |
Stefano Lattarini |
Subject: |
[Automake-NG] [PATCH 11/12] [ng] compile: don't support $(INCLUDES) anymore |
Date: |
Mon, 21 May 2012 09:36:28 +0200 |
The $(INCLUDES) variables has been since long supplanted and obsoleted
by the $(AM_CPPFLAGS) variable (in documentation since the commit
3d248ab5 of 2001-06-12, "* automake.texi (Program variables): Document
AM_CPPFLAGS. Deprecate INCLUDES", and in code since the commit '1415d22f'
of 2002-07-09, "* automake.in (generate_makefile): Suggest using
AM_CPPFLAGS instead of INCLUDES".
So we can drop support for $(INCLUDES).
* NG-NEWS, doc/automake-ng.texi: Update.
* automake.in: Drop usages of $(INCLUDES) from several calls to
'register_language'.
(generate_makefile): Don't explicitly warn about the definition of
the $(INCLUDES) variable anymore.
* t/pluseq5.sh: Adjusted to avoid using the INCLUDES variable.
* t/werror2.sh: Likewise.
* t/warnopts.sh: Likewise, and remove extra-verbose comment.
Signed-off-by: Stefano Lattarini <address@hidden>
---
NG-NEWS | 6 ++++++
automake.in | 33 ++++++++++++++-------------------
doc/automake-ng.texi | 16 ++++------------
syntax-checks.mk | 15 +++++++++++++++
t/pluseq5.sh | 20 ++++----------------
t/warnopts.sh | 34 ++++++++++++++++++----------------
t/werror2.sh | 5 ++---
7 files changed, 63 insertions(+), 66 deletions(-)
diff --git a/NG-NEWS b/NG-NEWS
index 18aa0ce..2fbc0e4 100644
--- a/NG-NEWS
+++ b/NG-NEWS
@@ -211,6 +211,12 @@ Miscellaneous
Similarly, the $(mkinstallscripts) make variable is not defined anymore;
one should use $(MKDIR_P) instead.
+* The $(INCLUDES) variable is not anymore passed to the invocations of
+ compilers with a C-like preprocessing step (as are for example C, C++,
+ Objective C, preprocessed assembler ...). One should just use
+ $(AM_CPPFLAGS) instead, which has been supported and recommended for
+ a long time.
+
-----
Copyright (C) 2012 Free Software Foundation, Inc.
diff --git a/automake.in b/automake.in
index c38f1b3..c0fcd5b 100644
--- a/automake.in
+++ b/automake.in
@@ -733,7 +733,7 @@ register_language ('name' => 'c',
'flags' => ['CFLAGS', 'CPPFLAGS'],
'ccer' => 'CC',
'compiler' => 'COMPILE',
- 'compile' => '$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES)
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)',
+ 'compile' => '$(CC) $(DEFS) $(DEFAULT_INCLUDES)
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)',
'lder' => 'CCLD',
'ld' => '$(CC)',
'linker' => 'LINK',
@@ -750,7 +750,7 @@ register_language ('name' => 'cxx',
'link' => '$(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS)
$(LDFLAGS) -o $@',
'autodep' => 'CXX',
'flags' => ['CXXFLAGS', 'CPPFLAGS'],
- 'compile' => '$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES)
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)',
+ 'compile' => '$(CXX) $(DEFS) $(DEFAULT_INCLUDES)
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)',
'ccer' => 'CXX',
'compiler' => 'CXXCOMPILE',
'compile_flag' => '-c',
@@ -769,7 +769,7 @@ register_language ('name' => 'objc',
'link' => '$(OBJCLD) $(AM_OBJCFLAGS) $(OBJCFLAGS)
$(AM_LDFLAGS) $(LDFLAGS) -o $@',
'autodep' => 'OBJC',
'flags' => ['OBJCFLAGS', 'CPPFLAGS'],
- 'compile' => '$(OBJC) $(DEFS) $(DEFAULT_INCLUDES)
$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_OBJCFLAGS) $(OBJCFLAGS)',
+ 'compile' => '$(OBJC) $(DEFS) $(DEFAULT_INCLUDES)
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_OBJCFLAGS) $(OBJCFLAGS)',
'ccer' => 'OBJC',
'compiler' => 'OBJCCOMPILE',
'compile_flag' => '-c',
@@ -787,7 +787,7 @@ register_language ('name' => 'objcxx',
'link' => '$(OBJCXXLD) $(AM_OBJCXXFLAGS) $(OBJCXXFLAGS)
$(AM_LDFLAGS) $(LDFLAGS) -o $@',
'autodep' => 'OBJCXX',
'flags' => ['OBJCXXFLAGS', 'CPPFLAGS'],
- 'compile' => '$(OBJCXX) $(DEFS) $(DEFAULT_INCLUDES)
$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_OBJCXXFLAGS) $(OBJCXXFLAGS)',
+ 'compile' => '$(OBJCXX) $(DEFS) $(DEFAULT_INCLUDES)
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_OBJCXXFLAGS) $(OBJCXXFLAGS)',
'ccer' => 'OBJCXX',
'compiler' => 'OBJCXXCOMPILE',
'compile_flag' => '-c',
@@ -805,7 +805,7 @@ register_language ('name' => 'upc',
'link' => '$(UPCLD) $(AM_UPCFLAGS) $(UPCFLAGS) $(AM_LDFLAGS)
$(LDFLAGS) -o $@',
'autodep' => 'UPC',
'flags' => ['UPCFLAGS', 'CPPFLAGS'],
- 'compile' => '$(UPC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES)
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_UPCFLAGS) $(UPCFLAGS)',
+ 'compile' => '$(UPC) $(DEFS) $(DEFAULT_INCLUDES)
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_UPCFLAGS) $(UPCFLAGS)',
'ccer' => 'UPC',
'compiler' => 'UPCCOMPILE',
'compile_flag' => '-c',
@@ -907,7 +907,7 @@ register_language ('name' => 'asm',
'config_vars' => ['CCAS', 'CCASFLAGS'],
'flags' => ['CCASFLAGS'],
- # Users can set AM_CCASFLAGS to include DEFS, INCLUDES,
+ # Users can set AM_CCASFLAGS to include, say, DEFS,
# or anything else required. They can also set CCAS.
# Or simply use Preprocessed Assembler.
'compile' => '$(CCAS) $(AM_CCASFLAGS) $(CCASFLAGS)',
@@ -924,7 +924,7 @@ register_language ('name' => 'cppasm',
'autodep' => 'CCAS',
'flags' => ['CCASFLAGS', 'CPPFLAGS'],
- 'compile' => '$(CCAS) $(DEFS) $(DEFAULT_INCLUDES)
$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)',
+ 'compile' => '$(CCAS) $(DEFS) $(DEFAULT_INCLUDES)
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)',
'ccer' => 'CPPAS',
'compiler' => 'CPPASCOMPILE',
'compile_flag' => '-c',
@@ -978,7 +978,7 @@ register_language ('name' => 'ppfc',
'flags' => ['FCFLAGS', 'CPPFLAGS'],
'ccer' => 'PPFC',
'compiler' => 'PPFCCOMPILE',
- 'compile' => '$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES)
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)',
+ 'compile' => '$(FC) $(DEFS) $(DEFAULT_INCLUDES)
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)',
'compile_flag' => '-c',
'output_flag' => '-o',
'libtool_tag' => 'FC',
@@ -988,11 +988,11 @@ register_language ('name' => 'ppfc',
# Preprocessed Fortran 77
#
# The current support for preprocessing Fortran 77 just involves
-# passing "$(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS)
-# $(CPPFLAGS)" as additional flags to the Fortran 77 compiler, since
-# this is how GNU Make does it; see the "GNU Make Manual, Edition 0.51
-# for 'make' Version 3.76 Beta" (specifically, from info file
-# '(make)Catalogue of Rules').
+# passing "$(DEFS) $(DEFAULT_INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)"
+# as additional flags to the Fortran 77 compiler, since this is how
+# GNU Make does it; see the "GNU Make Manual, Edition 0.51 for 'make'
+# Version 3.76 Beta" (specifically, from info file '(make)Catalogue
+# of Rules').
#
# A better approach would be to write an Autoconf test
# (i.e. AC_PROG_FPP) for a Fortran 77 preprocessor, because not all
@@ -1010,7 +1010,7 @@ register_language ('name' => 'ppf77',
'flags' => ['FFLAGS', 'CPPFLAGS'],
'ccer' => 'PPF77',
'compiler' => 'PPF77COMPILE',
- 'compile' => '$(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES)
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FFLAGS) $(FFLAGS)',
+ 'compile' => '$(F77) $(DEFS) $(DEFAULT_INCLUDES)
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FFLAGS) $(FFLAGS)',
'compile_flag' => '-c',
'output_flag' => '-o',
'libtool_tag' => 'F77',
@@ -7766,11 +7766,6 @@ sub generate_makefile ($$)
}
}
- # Catch some obsolete variables.
- msg_var ('obsolete', 'INCLUDES',
- "'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')")
- if var ('INCLUDES');
-
# Must do this after reading .am file.
define_variable ('subdir', $relative_dir, INTERNAL);
diff --git a/doc/automake-ng.texi b/doc/automake-ng.texi
index b6522fe..f1702fc 100644
--- a/doc/automake-ng.texi
+++ b/doc/automake-ng.texi
@@ -6050,12 +6050,6 @@ files in the source directory are ignored.
@code{AM_CPPFLAGS} is ignored in preference to a per-executable (or
per-library) @code{_CPPFLAGS} variable if it is defined.
address@hidden INCLUDES
-This does the same job as @code{AM_CPPFLAGS} (or any per-target
address@hidden variable if it is used). It is an older name for the
-same functionality. This variable is deprecated; we suggest using
address@hidden and per-target @code{_CPPFLAGS} instead.
-
@item AM_CFLAGS
This is the variable the @file{Makefile.am} author can use to pass
in additional C compiler flags. It is more fully documented elsewhere.
@@ -6388,8 +6382,8 @@ assembly code. This compiler must work a bit like a C
compiler; in
particular it must accept @option{-c} and @option{-o}. The values of
@code{CCASFLAGS} and @code{AM_CCASFLAGS} (or its per-target
definition) is passed to the compilation. For preprocessed files,
address@hidden, @code{DEFAULT_INCLUDES}, @code{INCLUDES}, @code{CPPFLAGS}
-and @code{AM_CPPFLAGS} are also used.
address@hidden, @code{DEFAULT_INCLUDES}, @code{CPPFLAGS} and
address@hidden are also used.
The autoconf macro @code{AM_PROG_AS} will define @code{CCAS} and
@code{CCASFLAGS} for you (unless they are already set, it simply sets
@@ -6478,8 +6472,7 @@ command used is as follows:
@table @file
@item .F
address@hidden(F77) -F $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)@*
-$(AM_FFLAGS) $(FFLAGS)}
address@hidden(F77) -F $(DEFS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FFLAGS)
$(FFLAGS)}
@item .r
@code{$(F77) -F $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)}
@@ -6501,8 +6494,7 @@ is as follows:
@code{$(F77) -c $(AM_FFLAGS) $(FFLAGS)}
@item .F
address@hidden(F77) -c $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)@*
-$(AM_FFLAGS) $(FFLAGS)}
address@hidden(F77) -c $(DEFS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FFLAGS)
$(FFLAGS)}
@item .r
@code{$(F77) -c $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)}
diff --git a/syntax-checks.mk b/syntax-checks.mk
index 9b273cf..957051a 100644
--- a/syntax-checks.mk
+++ b/syntax-checks.mk
@@ -46,6 +46,7 @@ sc_perl_syntax \
sc_no_brace_variable_expansions \
sc_rm_minus_f \
sc_no_for_variable_in_macro \
+sc_old_includes_vars \
sc_mkinstalldirs \
sc_pre_normal_post_install_uninstall \
sc_perl_no_undef \
@@ -137,6 +138,20 @@ sc_no_for_variable_in_macro:
exit 1; \
else :; fi
+## Older, deprecated, and now invalid aliases for $(AM_CPPFLAGS).
+sc_old_includes_vars:
+ @files="\
+ $(xtests) \
+ $(pms) \
+ $(ams) \
+ $(srcdir)/automake.in \
+ $(srcdir)/doc/*.texi \
+ "; \
+ if grep -E '\bINCLUDES\b' $$files; then \
+ echo '$$(INCLUDES) is deprecated, use $$(AM_CPPFLAGS) instead' >&2; \
+ exit 1; \
+ else :; fi
+
## The script and variable 'mkinstalldirs' are obsolete.
sc_mkinstalldirs:
@files="\
diff --git a/t/pluseq5.sh b/t/pluseq5.sh
index 5db9c47..83223ff 100755
--- a/t/pluseq5.sh
+++ b/t/pluseq5.sh
@@ -24,9 +24,9 @@ END
cat > Makefile.am << 'END'
if CHECK
-INCLUDES = abc
+AM_CPPFLAGS = abc
endif
-INCLUDES += def
+AM_CPPFLAGS += def
END
$ACLOCAL
@@ -34,10 +34,10 @@ AUTOMAKE_fails
# We expect the following diagnostic:
#
-# Makefile.am:4: cannot apply '+=' because 'INCLUDES' is not defined in
+# Makefile.am:4: cannot apply '+=' because 'AM_CPPFLAGS' is not defined in
# Makefile.am:4: the following conditions:
# Makefile.am:4: !CHECK
-# Makefile.am:4: either define 'INCLUDES' in these conditions, or use
+# Makefile.am:4: either define 'AM_CPPFLAGS' in these conditions, or use
# Makefile.am:4: '+=' in the same conditions as the definitions.
# Is !CHECK mentioned?
@@ -45,16 +45,4 @@ grep ':.*!CHECK$' stderr
# Is there only one missing condition?
test `grep ': ' stderr | wc -l` = 1
-# By the way, Automake should suggest using AM_CPPFLAGS,
-# because INCLUDES is an obsolete name.
-grep AM_CPPFLAGS stderr
-
-# A way to suppress the obsolete warning is to use
-# -Wno-obsolete:
-echo 'AUTOMAKE_OPTIONS = -Wno-obsolete' >> Makefile.am
-AUTOMAKE_fails
-grep AM_CPPFLAGS stderr && Exit 1
-# !CHECK should still be mentioned.
-grep ':.*!CHECK$' stderr
-
:
diff --git a/t/warnopts.sh b/t/warnopts.sh
index 1662d91..774a38a 100755
--- a/t/warnopts.sh
+++ b/t/warnopts.sh
@@ -20,6 +20,7 @@
cat >>configure.ac <<END
AC_CONFIG_FILES([sub/Makefile])
+AM_CONDITIONAL([COND_FALSE], [false])
AC_OUTPUT
END
@@ -28,38 +29,37 @@ mkdir sub
# These two Makefile contain the same errors, but have different
# warnings disabled.
-cat >Makefile.am <<END
-AUTOMAKE_OPTIONS = -Wno-obsolete
-INCLUDES = -Ifoo
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = -Wno-unsupported
+if COND_FALSE
+AUTOMAKE_OPTIONS += no-dependencies
+endif
foo_SOURCES = unused
SUBDIRS = sub
END
-cat >sub/Makefile.am <<END
+cat > sub/Makefile.am << 'END'
AUTOMAKE_OPTIONS = -Wno-syntax
-INCLUDES = -Ifoo
+if COND_FALSE
+AUTOMAKE_OPTIONS += no-dependencies
+endif
foo_SOURCES = unused
END
$ACLOCAL
AUTOMAKE_fails
# The expected diagnostic is
-# Makefile.am:3: warning: variable 'foo_SOURCES' is defined but no program or
-# library has 'foo' as canonical name (possible typo)
-# sub/Makefile.am:2: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS'
+# automake: warnings are treated as errors
+# Makefile.am:5: warning: variable 'foo_SOURCES' is defined but no program or
+# Makefile.am:5: library has 'foo' as canonical name (possible typo)
+# sub/Makefile.am:1: warning: 'AUTOMAKE_OPTIONS' cannot have conditional
contents
grep '^Makefile.am:.*foo_SOURCES' stderr
-grep '^sub/Makefile.am:.*INCLUDES' stderr
+grep '^sub/Makefile.am:.*AUTOMAKE_OPTIONS' stderr
grep '^sub/Makefile.am:.*foo_SOURCES' stderr && Exit 1
-grep '^Makefile.am:.*INCLUDES' stderr && Exit 1
+grep '^Makefile.am:.*AUTOMAKE_OPTIONS' stderr && Exit 1
# Only three lines of warnings.
test `grep -v 'warnings are treated as errors' stderr | wc -l` = 3
-# On fast machines the autom4te.cache created during the above run of
-# $AUTOMAKE is likely to have the same time stamp as the configure.ac
-# created below; thus causing traces for the old configure.ac to be
-# used. We could do '$sleep', but it's faster to erase the
-# directory. (Erase autom4te*.cache, not autom4te.cache, because some
-# bogus installations of Autoconf use a versioned cache).
rm -rf autom4te*.cache
# If we add a global -Wnone, all warnings should disappear.
@@ -71,3 +71,5 @@ AC_OUTPUT
END
$ACLOCAL
$AUTOMAKE
+
+:
diff --git a/t/werror2.sh b/t/werror2.sh
index 67e0e01..e77a85b 100755
--- a/t/werror2.sh
+++ b/t/werror2.sh
@@ -21,7 +21,7 @@
. ./defs || Exit 1
-echo AC_OUTPUT>>configure.ac
+echo AC_OUTPUT >> configure.ac
: > Makefile.am
@@ -35,9 +35,8 @@ $AUTOCONF
./configure
$MAKE
-cat >Makefile.am <<END
+cat > Makefile.am << 'END'
AUTOMAKE_OPTIONS = -Werror
-INCLUDES = -Ifoo
foo_SOURCES = unused
END
--
1.7.9.5
- [Automake-NG] [PATCH 00/12] Several cleanups (with small backward incompatibilities), Stefano Lattarini, 2012/05/21
- [Automake-NG] [PATCH 01/12] [ng] push_dist_common: don't directly append to an Automake::Variable, Stefano Lattarini, 2012/05/21
- [Automake-NG] [PATCH 04/12] [ng] cleanup: remove a workaround for BSD make (comments continaution), Stefano Lattarini, 2012/05/21
- [Automake-NG] [PATCH 02/12] [ng] cleanup: remove a workaround only needed by Solaris make, Stefano Lattarini, 2012/05/21
- [Automake-NG] [PATCH 03/12] [ng] cleanup: remove obsolescent comments about subdir-objects and deptrack, Stefano Lattarini, 2012/05/21
- [Automake-NG] [PATCH 06/12] [ng] cleanup: remove obsolete special-handling of default source for libs, Stefano Lattarini, 2012/05/21
- [Automake-NG] [PATCH 05/12] [ng] cleanup: remove a workaround for BSD make (default sources and VPATH), Stefano Lattarini, 2012/05/21
- [Automake-NG] [PATCH 08/12] [ng] config.h.{bot, top}: don't support anymore (distribution and deps), Stefano Lattarini, 2012/05/21
- [Automake-NG] [PATCH 07/12] [ng] acconfig.h: don't support anymore (distribution and dependencies), Stefano Lattarini, 2012/05/21
- [Automake-NG] [PATCH 12/12] [ng] cleanup: don't support $(ACLOCAL_M4_SOURCES) anymore, it's obsolete, Stefano Lattarini, 2012/05/21
- [Automake-NG] [PATCH 11/12] [ng] compile: don't support $(INCLUDES) anymore,
Stefano Lattarini <=
- [Automake-NG] [PATCH 10/12] [ng] mkinstalldirs: remove support for the script and the variable, Stefano Lattarini, 2012/05/21
- [Automake-NG] [PATCH 09/12] [ng] cleanup: minor cleanups in remake-hdr.am, Stefano Lattarini, 2012/05/21
- Re: [Automake-NG] [PATCH 00/12] Several cleanups (with small backward incompatibilities), Akim Demaille, 2012/05/21