configmake: provide fallbacks for oldest supported autotools
authorEric Blake <eblake@redhat.com>
Tue, 14 Dec 2010 22:55:43 +0000 (15:55 -0700)
committerEric Blake <eblake@redhat.com>
Wed, 15 Dec 2010 00:04:52 +0000 (17:04 -0700)
* m4/configmake.m4: New file.
* modules/configmake (Files): Ship it.
(configure.ac): Use it to guarantee fallbacks.

Signed-off-by: Eric Blake <eblake@redhat.com>
ChangeLog
m4/configmake.m4 [new file with mode: 0644]
modules/configmake

index d3354ae..1ec24da 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2010-12-14  Eric Blake  <eblake@redhat.com>
+
+       configmake: provide fallbacks for oldest supported autotools
+       * m4/configmake.m4: New file.
+       * modules/configmake (Files): Ship it.
+       (configure.ac): Use it to guarantee fallbacks.
+
 2010-12-13  Pádraig Brady <P@draigBrady.com>
 
        read-file: Improve handling of large files
diff --git a/m4/configmake.m4 b/m4/configmake.m4
new file mode 100644 (file)
index 0000000..192fab3
--- /dev/null
@@ -0,0 +1,50 @@
+# configmake.m4 serial 1
+dnl Copyright (C) 2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# gl_CONFIGMAKE_PREP
+# ------------------
+# Guarantee all of the standard directory variables, even when used with
+# autoconf 2.59 (datarootdir wasn't supported until 2.59c) or automake
+# 1.9.6 (pkglibexecdir wasn't supported until 1.10b.).
+AC_DEFUN([gl_CONFIGMAKE_PREP],
+[
+  dnl Technically, datadir should default to datarootdir.  But if
+  dnl autoconf is too old to provide datarootdir, then reversing the
+  dnl definition is a reasonable compromise.  Only AC_SUBST a variable
+  dnl if it was not already defined earlier by autoconf.
+  if test "x$datarootdir" = x; then
+    AC_SUBST([datarootdir], ['${datadir}'])
+  fi
+  dnl Copy the approach used in autoconf 2.60.
+  if test "x$docdir" = x; then
+    AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
+      ['${datarootdir}/doc/${PACKAGE_TARNAME}'],
+      ['${datarootdir}/doc/${PACKAGE}'])])
+  fi
+  dnl The remaining variables missing from autoconf 2.59 are easier.
+  if test "x$htmldir" = x; then
+    AC_SUBST([htmldir], ['${docdir}'])
+  fi
+  if test "x$dvidir" = x; then
+    AC_SUBST([dvidir], ['${docdir}'])
+  fi
+  if test "x$pdfdir" = x; then
+    AC_SUBST([pdfdir], ['${docdir}'])
+  fi
+  if test "x$psdir" = x; then
+    AC_SUBST([psdir], ['${docdir}'])
+  fi
+  if test "x$lispdir" = x; then
+    AC_SUBST([lispdir], ['${datarootdir}/emacs/site-lisp'])
+  fi
+  if test "x$localedir" = x; then
+    AC_SUBST([localedir], ['${datarootdir}/locale'])
+  fi
+
+  dnl Automake 1.9.6 only lacks pkglibexecdir; and since 1.11 merely
+  dnl provides it without AC_SUBST, this blind use of AC_SUBST is safe.
+  AC_SUBST([pkglibexecdir], ['${libexecdir}/${PACKAGE}'])
+])
index d826c13..c9af259 100644 (file)
@@ -2,10 +2,12 @@ Description:
 Variables set by "configure" or "make".
 
 Files:
+m4/configmake.m4
 
 Depends-on:
 
 configure.ac:
+gl_CONFIGMAKE_PREP
 
 Makefile.am:
 # Retrieve values of the variables through 'configure' followed by
@@ -22,7 +24,8 @@ Makefile.am:
 #
 # Another advantage is that 'make' output is shorter.
 #
-# Listed in the same order as the GNU makefile conventions.
+# Listed in the same order as the GNU makefile conventions, and
+# provided by autoconf 2.59c+.
 # The Automake-defined pkg* macros are appended, in the order
 # listed in the Automake 1.10a+ documentation.
 configmake.h: Makefile