summaryrefslogtreecommitdiff
path: root/source3/m4/check_gnu_make.m4
diff options
context:
space:
mode:
authorJames Peach <jpeach@samba.org>2007-04-22 03:17:31 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:19:34 -0500
commit821bf2bd7278da4e71fcdcfc03348a712cd0fc90 (patch)
treec1478a5a9dea7e473b0c00ec7b53543be963b045 /source3/m4/check_gnu_make.m4
parentd27d6e822ecd90ebddf59121c2051b693b6b0f90 (diff)
downloadsamba-821bf2bd7278da4e71fcdcfc03348a712cd0fc90.tar.gz
samba-821bf2bd7278da4e71fcdcfc03348a712cd0fc90.tar.bz2
samba-821bf2bd7278da4e71fcdcfc03348a712cd0fc90.zip
r22441: Add automatic dependency tracking. The dependency generation is
toolchain independent, but since there's no portable method for doing makefile includes, we can actually use the dependencies with GNU make. It's easy to add this for other makes, but I don't have any to test. This also moves as much m4 as possible into the m4 directory where no-one has to look at it. AFAICT, there's no way to hide depcomp in there too, which is unfortunate. (This used to be commit aa14900f8291a017aa7fab2bbb9a6c79b12889b2)
Diffstat (limited to 'source3/m4/check_gnu_make.m4')
-rw-r--r--source3/m4/check_gnu_make.m478
1 files changed, 78 insertions, 0 deletions
diff --git a/source3/m4/check_gnu_make.m4 b/source3/m4/check_gnu_make.m4
new file mode 100644
index 0000000000..44e1d9aa20
--- /dev/null
+++ b/source3/m4/check_gnu_make.m4
@@ -0,0 +1,78 @@
+##### http://autoconf-archive.cryp.to/check_gnu_make.html
+#
+# SYNOPSIS
+#
+# CHECK_GNU_MAKE()
+#
+# DESCRIPTION
+#
+# This macro searches for a GNU version of make. If a match is found,
+# the makefile variable `ifGNUmake' is set to the empty string,
+# otherwise it is set to "#". This is useful for including a special
+# features in a Makefile, which cannot be handled by other versions
+# of make. The variable _cv_gnu_make_command is set to the command to
+# invoke GNU make if it exists, the empty string otherwise.
+#
+# Here is an example of its use:
+#
+# Makefile.in might contain:
+#
+# # A failsafe way of putting a dependency rule into a makefile
+# $(DEPEND):
+# $(CC) -MM $(srcdir)/*.c > $(DEPEND)
+#
+# @ifGNUmake@ ifeq ($(DEPEND),$(wildcard $(DEPEND)))
+# @ifGNUmake@ include $(DEPEND)
+# @ifGNUmake@ endif
+#
+# Then configure.in would normally contain:
+#
+# CHECK_GNU_MAKE()
+# AC_OUTPUT(Makefile)
+#
+# Then perhaps to cause gnu make to override any other make, we could
+# do something like this (note that GNU make always looks for
+# GNUmakefile first):
+#
+# if ! test x$_cv_gnu_make_command = x ; then
+# mv Makefile GNUmakefile
+# echo .DEFAULT: > Makefile ;
+# echo \ $_cv_gnu_make_command \$@ >> Makefile;
+# fi
+#
+# Then, if any (well almost any) other make is called, and GNU make
+# also exists, then the other make wraps the GNU make.
+#
+# LAST MODIFICATION
+#
+# 2002-01-04
+#
+# COPYLEFT
+#
+# Copyright (c) 2002 John Darrington <j.darrington@elvis.murdoch.edu.au>
+#
+# Copying and distribution of this file, with or without
+# modification, are permitted in any medium without royalty provided
+# the copyright notice and this notice are preserved.
+
+AC_DEFUN(
+ [CHECK_GNU_MAKE], [ AC_CACHE_CHECK( for GNU make,_cv_gnu_make_command,
+ _cv_gnu_make_command='' ;
+dnl Search all the common names for GNU make
+ for a in "$MAKE" make gmake gnumake ; do
+ if test -z "$a" ; then continue ; fi ;
+ if ( sh -c "$a --version" 2> /dev/null | grep GNU 2>&1 > /dev/null ) ; then
+ _cv_gnu_make_command=$a ;
+ break;
+ fi
+ done ;
+ ) ;
+dnl If there was a GNU version, then set @ifGNUmake@ to the empty string, '#' otherwise
+ if test "x$_cv_gnu_make_command" != "x" ; then
+ ifGNUmake='' ;
+ else
+ ifGNUmake='#' ;
+ AC_MSG_RESULT("Not found");
+ fi
+ AC_SUBST(ifGNUmake)
+] )