zz40-xc-ovr.m4: 1.0 interface stabilization
authorYang Tse <yangsita@gmail.com>
Mon, 28 Jan 2013 00:08:15 +0000 (01:08 +0100)
committerYang Tse <yangsita@gmail.com>
Mon, 28 Jan 2013 20:29:36 +0000 (21:29 +0100)
- Stabilization results in 4 public interface m4 macros:
  XC_CONFIGURE_PREAMBLE
  XC_CONFIGURE_PREAMBLE_VER_MAJOR
  XC_CONFIGURE_PREAMBLE_VER_MINOR
  XC_CHECK_PATH_SEPARATOR
- Avoid one level of internal indirection
- Update comments
- Drop XC_OVR_ZZ40 macro

configure.ac
m4/zz40-xc-ovr.m4

index 569804b..3e0d184 100644 (file)
@@ -26,7 +26,6 @@ AC_PREREQ(2.57)
 dnl We don't know the version number "statically" so we use a dash here
 AC_INIT([curl], [-], [a suitable curl mailing list: http://curl.haxx.se/mail/])
 
-XC_OVR_ZZ40
 XC_OVR_ZZ50
 XC_OVR_ZZ60
 CURL_OVERRIDE_AUTOCONF
@@ -49,6 +48,8 @@ CURL_CHECK_OPTION_CURLDEBUG
 CURL_CHECK_OPTION_SYMBOL_HIDING
 CURL_CHECK_OPTION_ARES
 
+XC_CHECK_PATH_SEPARATOR
+
 #
 # save the configure arguments
 #
index 7bdecca..65c7501 100644 (file)
@@ -28,15 +28,28 @@ dnl subdirectory. This allows that macro (re)definitions from this
 dnl file may override those provided in other files.
 
 
+dnl Version macros
+dnl -------------------------------------------------
+dnl Public macros.
+
+m4_define([XC_CONFIGURE_PREAMBLE_VER_MAJOR],[1])dnl
+m4_define([XC_CONFIGURE_PREAMBLE_VER_MINOR],[0])dnl
+
+
 dnl _XC_CFG_PRE_PREAMBLE
 dnl -------------------------------------------------
 dnl Private macro.
 
 AC_DEFUN([_XC_CFG_PRE_PREAMBLE],
 [
-## ---------------------------- ##
-## XC_CONFIGURE_PREAMBLE rev: 1 ##
-## ---------------------------- ##
+## -------------------------------- ##
+@%:@@%:@  [XC_CONFIGURE_PREAMBLE] ver: []dnl
+XC_CONFIGURE_PREAMBLE_VER_MAJOR.[]dnl
+XC_CONFIGURE_PREAMBLE_VER_MINOR  ##
+## -------------------------------- ##
+
+xc_configure_preamble_ver_major='XC_CONFIGURE_PREAMBLE_VER_MAJOR'
+xc_configure_preamble_ver_minor='XC_CONFIGURE_PREAMBLE_VER_MINOR'
 
 xc_configure_preamble_prev_IFS=$IFS
 
@@ -45,6 +58,7 @@ xc_msg_abrt='Can not continue.'
 xc_msg_err='configure: error:'
 ])
 
+
 dnl _XC_CFG_PRE_BASIC_CHK_CMD_ECHO
 dnl -------------------------------------------------
 dnl Private macro.
@@ -61,7 +75,7 @@ AC_REQUIRE([_XC_CFG_PRE_PREAMBLE])dnl
 
 xc_tst_str='unknown'
 (`echo "$xc_tst_str" >/dev/null 2>&1`) && xc_tst_str='success'
-case "x$xc_tst_str" in @%:@((
+case "x$xc_tst_str" in @%:@ ((
   xsuccess)
     :
     ;;
@@ -91,7 +105,7 @@ AC_REQUIRE([_XC_CFG_PRE_BASIC_CHK_CMD_ECHO])dnl
 
 xc_tst_str='unknown'
 (`test -n "$xc_tst_str" >/dev/null 2>&1`) && xc_tst_str='success'
-case "x$xc_tst_str" in @%:@((
+case "x$xc_tst_str" in @%:@ ((
   xsuccess)
     :
     ;;
@@ -121,7 +135,7 @@ AC_REQUIRE([_XC_CFG_PRE_BASIC_CHK_CMD_TEST])dnl
 
 xc_tst_str='unknown'
 (`test -n "$PATH" >/dev/null 2>&1`) && xc_tst_str='success'
-case "x$xc_tst_str" in @%:@((
+case "x$xc_tst_str" in @%:@ ((
   xsuccess)
     :
     ;;
@@ -152,7 +166,7 @@ AC_REQUIRE([_XC_CFG_PRE_BASIC_CHK_VAR_PATH])dnl
 
 xc_tst_str='unknown'
 xc_tst_str=`expr "$xc_tst_str" : '.*' 2>/dev/null`
-case "x$xc_tst_str" in @%:@((
+case "x$xc_tst_str" in @%:@ ((
   x7)
     :
     ;;
@@ -189,7 +203,7 @@ AC_REQUIRE([_XC_CFG_PRE_BASIC_CHK_CMD_EXPR])dnl
 xc_tst_str='unknown'
 xc_tst_str=`echo "$xc_tst_str" 2>/dev/null \
   | sed -e 's:unknown:success:' 2>/dev/null`
-case "x$xc_tst_str" in @%:@((
+case "x$xc_tst_str" in @%:@ ((
   xsuccess)
     :
     ;;
@@ -227,7 +241,7 @@ AC_REQUIRE([_XC_CFG_PRE_BASIC_CHK_UTIL_SED])dnl
 xc_tst_str='unknown'
 (`echo "$xc_tst_str" 2>/dev/null \
   | grep 'unknown' >/dev/null 2>&1`) && xc_tst_str='success'
-case "x$xc_tst_str" in @%:@((
+case "x$xc_tst_str" in @%:@ ((
   xsuccess)
     :
     ;;
@@ -333,24 +347,6 @@ xc_configure_preamble_result='yes'
 ])
 
 
-dnl _XC_CONFIGURE_PREAMBLE
-dnl -------------------------------------------------
-dnl Private macro.
-
-AC_DEFUN([_XC_CONFIGURE_PREAMBLE],
-[dnl
-AC_REQUIRE([_XC_CFG_PRE_PREAMBLE])dnl
-AC_REQUIRE([_XC_CFG_PRE_BASIC_CHK_CMD_ECHO])dnl
-AC_REQUIRE([_XC_CFG_PRE_BASIC_CHK_CMD_TEST])dnl
-AC_REQUIRE([_XC_CFG_PRE_BASIC_CHK_VAR_PATH])dnl
-AC_REQUIRE([_XC_CFG_PRE_BASIC_CHK_CMD_EXPR])dnl
-AC_REQUIRE([_XC_CFG_PRE_BASIC_CHK_UTIL_SED])dnl
-AC_REQUIRE([_XC_CFG_PRE_BASIC_CHK_UTIL_GREP])dnl
-AC_REQUIRE([_XC_CFG_PRE_CHECK_PATH_SEPARATOR])dnl
-AC_REQUIRE([_XC_CFG_PRE_POSTLUDE])dnl
-])
-
-
 dnl XC_CONFIGURE_PREAMBLE
 dnl -------------------------------------------------
 dnl Public macro.
@@ -359,30 +355,29 @@ dnl This macro emits shell code which does some
 dnl very basic checks related with the availability
 dnl of some commands and utilities needed to allow
 dnl configure script bootstrapping itself when using
-dnl these to figure out other settings. Also performs
-dnl PATH_SEPARATOR auto-detection and sets its value
-dnl unless it is already set with a non-empty value.
+dnl these to figure out other settings. Also emits
+dnl code that performs PATH_SEPARATOR auto-detection
+dnl and sets its value unless it is already set with
+dnl a non-empty value.
 dnl
 dnl These basic checks are intended to be placed and
 dnl executed as early as possible in the resulting
 dnl configure script, and as such these must be pure
-dnl shell code.
+dnl and portable shell code.
 dnl
-dnl Although this is a public macro it should not be
-dnl used directly from configure.ac given that in this
-dnl way its expansion may not be placed early enough in
-dnl generated configure script, it simply makes little
-dnl sense to perform these basic checks once the script
-dnl is into more serious business.
+dnl This macro may be used directly, or indirectly
+dnl when using other macros that AC_REQUIRE it such
+dnl as XC_CHECK_PATH_SEPARATOR.
 dnl
-dnl The proper way of making this macro expand early
-dnl enough in configure script is using XC_OVR_ZZ40
-dnl in configure.ac which takes care of everything.
+dnl Currently the mechanism used to ensure that this
+dnl macro expands early enough in generated configure
+dnl script is making it override autoconf and libtool
+dnl PATH_SEPARATOR check.
 
 AC_DEFUN([XC_CONFIGURE_PREAMBLE],
 [dnl
 AC_PREREQ([2.50])dnl
-AC_BEFORE([$0],[_XC_CONFIGURE_PREAMBLE])dnl
+dnl
 AC_BEFORE([$0],[_XC_CFG_PRE_PREAMBLE])dnl
 AC_BEFORE([$0],[_XC_CFG_PRE_BASIC_CHK_CMD_ECHO])dnl
 AC_BEFORE([$0],[_XC_CFG_PRE_BASIC_CHK_CMD_TEST])dnl
@@ -392,16 +387,50 @@ AC_BEFORE([$0],[_XC_CFG_PRE_BASIC_CHK_UTIL_SED])dnl
 AC_BEFORE([$0],[_XC_CFG_PRE_BASIC_CHK_UTIL_GREP])dnl
 AC_BEFORE([$0],[_XC_CFG_PRE_CHECK_PATH_SEPARATOR])dnl
 AC_BEFORE([$0],[_XC_CFG_PRE_POSTLUDE])dnl
-AC_REQUIRE([_XC_CONFIGURE_PREAMBLE])dnl
+dnl
+AC_BEFORE([$0],[AC_CHECK_TOOL])dnl
+AC_BEFORE([$0],[AC_CHECK_PROG])dnl
+AC_BEFORE([$0],[AC_CHECK_TOOLS])dnl
+AC_BEFORE([$0],[AC_CHECK_PROGS])dnl
+dnl
+AC_BEFORE([$0],[AC_PATH_TOOL])dnl
+AC_BEFORE([$0],[AC_PATH_PROG])dnl
+AC_BEFORE([$0],[AC_PATH_PROGS])dnl
+dnl
+AC_BEFORE([$0],[AC_PROG_SED])dnl
+AC_BEFORE([$0],[AC_PROG_GREP])dnl
+AC_BEFORE([$0],[AC_PROG_LN_S])dnl
+AC_BEFORE([$0],[AC_PROG_MKDIR_P])dnl
+AC_BEFORE([$0],[AC_PROG_INSTALL])dnl
+AC_BEFORE([$0],[AC_PROG_MAKE_SET])dnl
+AC_BEFORE([$0],[AC_PROG_LIBTOOL])dnl
+dnl
+AC_BEFORE([$0],[LT_INIT])dnl
+AC_BEFORE([$0],[AM_INIT_AUTOMAKE])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_WIN32_DLL])dnl
+dnl
+AC_REQUIRE([_XC_CFG_PRE_PREAMBLE])dnl
+AC_REQUIRE([_XC_CFG_PRE_BASIC_CHK_CMD_ECHO])dnl
+AC_REQUIRE([_XC_CFG_PRE_BASIC_CHK_CMD_TEST])dnl
+AC_REQUIRE([_XC_CFG_PRE_BASIC_CHK_VAR_PATH])dnl
+AC_REQUIRE([_XC_CFG_PRE_BASIC_CHK_CMD_EXPR])dnl
+AC_REQUIRE([_XC_CFG_PRE_BASIC_CHK_UTIL_SED])dnl
+AC_REQUIRE([_XC_CFG_PRE_BASIC_CHK_UTIL_GREP])dnl
+AC_REQUIRE([_XC_CFG_PRE_CHECK_PATH_SEPARATOR])dnl
+AC_REQUIRE([_XC_CFG_PRE_POSTLUDE])dnl
+dnl
+m4_pattern_forbid([^_*XC])dnl
 m4_define([$0],[])dnl
 ])
 
 
-dnl Override autoconf PATH_SEPARATOR check
+dnl Override autoconf and libtool PATH_SEPARATOR check
 dnl -------------------------------------------------
+dnl Macros overriding.
+dnl
 dnl This is done to ensure that the same check is
 dnl used across different autoconf versions and to
-dnl allow us to expand XC_CONFIGURE_PREAMBLE macro
+dnl allow expansion of XC_CONFIGURE_PREAMBLE macro
 dnl early enough in the generated configure script.
 
 dnl
@@ -449,50 +478,39 @@ m4_define([$0],[])dnl
 ])
 
 
-dnl _XC_OVR_ZZ40_WITNESS
+dnl XC_CHECK_PATH_SEPARATOR
 dnl -------------------------------------------------
-dnl Private macro.
+dnl Public macro.
 dnl
-dnl Emits shell code that allows knowing wether macro
-dnl XC_CONFIGURE_PREAMBLE has expanded before configure
-dnl body begins, and if it has suceeded when configure
-dnl finally runs. Results are recorded in config.log
-
-AC_DEFUN([_XC_OVR_ZZ40_WITNESS],
-[dnl
-m4_divert_text([BODY],
-[dnl
-#
-# Witness that XC_CONFIGURE_PREAMBLE has been used.
-#
-
-if test -z "$xc_configure_preamble_result"; then
-  AC_MSG_WARN([a macro expansion problem has been detected])
-  if test -z "$PATH_SEPARATOR"; then
-    AC_MSG_ERROR([variable 'PATH_SEPARATOR' not set (internal problem)])
-  fi
-else
-  AC_MSG_CHECKING([whether some basic commands and utilities are available])
-  AC_MSG_RESULT([$xc_configure_preamble_result])
-fi
-])dnl
-])
-
-
-dnl XC_OVR_ZZ40
-dnl -------------------------------------------------
-dnl Placing a call to this macro in configure.ac will
-dnl make macros in this file visible to other macros
-dnl used for same configure script, overriding those
-dnl provided elsewhere.
+dnl Usage of this macro ensures that generated configure
+dnl script uses the same PATH_SEPARATOR check irrespective
+dnl of autoconf or libtool version being used to generate
+dnl configure script.
 dnl
-dnl This is the proper and intended way in which macro
-dnl XC_CONFIGURE_PREAMBLE will expand early enough in
-dnl generated configure script, as well as witness of
-dnl its usage into configure body.
-
-AC_DEFUN([XC_OVR_ZZ40],
+dnl Emits shell code that computes the path separator
+dnl and stores the result in 'PATH_SEPARATOR', unless
+dnl the user has already set it with a non-empty value.
+dnl
+dnl This path separator is the symbol used to separate
+dnl or diferentiate paths inside the 'PATH' environment
+dnl variable.
+dnl
+dnl Non-empty user provided 'PATH_SEPARATOR' always
+dnl overrides the auto-detected one.
+dnl
+dnl Strictly speaking the check is done in two steps. The
+dnl first, which does the actual check, takes place in
+dnl XC_CONFIGURE_PREAMBLE macro and happens very early in
+dnl generated configure script. The second one shows and
+dnl logs the result of the check into config.log at a later
+dnl configure stage. Placement of this second stage in
+dnl generated configure script will be done where first
+dnl direct or indirect usage of this macro happens.
+
+AC_DEFUN([XC_CHECK_PATH_SEPARATOR],
 [dnl
+AC_PREREQ([2.50])dnl
+dnl
 AC_BEFORE([$0],[AC_CHECK_TOOL])dnl
 AC_BEFORE([$0],[AC_CHECK_PROG])dnl
 AC_BEFORE([$0],[AC_CHECK_TOOLS])dnl
@@ -505,6 +523,7 @@ dnl
 AC_BEFORE([$0],[AC_PROG_SED])dnl
 AC_BEFORE([$0],[AC_PROG_GREP])dnl
 AC_BEFORE([$0],[AC_PROG_LN_S])dnl
+AC_BEFORE([$0],[AC_PROG_MKDIR_P])dnl
 AC_BEFORE([$0],[AC_PROG_INSTALL])dnl
 AC_BEFORE([$0],[AC_PROG_MAKE_SET])dnl
 AC_BEFORE([$0],[AC_PROG_LIBTOOL])dnl
@@ -513,12 +532,20 @@ AC_BEFORE([$0],[LT_INIT])dnl
 AC_BEFORE([$0],[AM_INIT_AUTOMAKE])dnl
 AC_BEFORE([$0],[AC_LIBTOOL_WIN32_DLL])dnl
 dnl
-AC_BEFORE([$0],[AC_CONFIG_SRCDIR])dnl
-AC_BEFORE([$0],[AC_CONFIG_HEADERS])dnl
-AC_BEFORE([$0],[AC_CONFIG_MACRO_DIR])dnl
-AC_BEFORE([$0],[AC_CONFIG_MACRO_DIRS])dnl
+AC_REQUIRE([XC_CONFIGURE_PREAMBLE])dnl
 dnl
-AC_REQUIRE([_XC_OVR_ZZ40_WITNESS])dnl
+#
+# Check that 'PATH_SEPARATOR' has already been set.
+#
+
+if test -z "$xc_configure_preamble_result"; then
+  AC_MSG_WARN([a macro expansion problem has been detected])
+fi
+if test -z "$PATH_SEPARATOR"; then
+  AC_MSG_ERROR([variable 'PATH_SEPARATOR' not set (internal problem)])
+fi
+AC_MSG_CHECKING([for path separator])
+AC_MSG_RESULT([$PATH_SEPARATOR])
 dnl
 m4_pattern_forbid([^_*XC])dnl
 m4_define([$0],[])dnl