aboutsummaryrefslogtreecommitdiff
path: root/m4
diff options
context:
space:
mode:
authorYang Tse <yangsita@gmail.com>2013-01-23 13:51:03 +0100
committerYang Tse <yangsita@gmail.com>2013-01-23 14:10:31 +0100
commit8c6c42a67f2384328fe924f69a054ad7771ba931 (patch)
treeb4c28737f3211f507f0e5e6dcfdc399f44244c2f /m4
parent045c734e16ac527cb7faa996a92959dd5f64fc56 (diff)
zz40-xc-ovr.m4: provide XC_CONFIGURE_PREAMBLE macro
Diffstat (limited to 'm4')
-rw-r--r--m4/zz40-xc-ovr.m4384
1 files changed, 384 insertions, 0 deletions
diff --git a/m4/zz40-xc-ovr.m4 b/m4/zz40-xc-ovr.m4
new file mode 100644
index 000000000..9395e9a48
--- /dev/null
+++ b/m4/zz40-xc-ovr.m4
@@ -0,0 +1,384 @@
+#---------------------------------------------------------------------------
+#
+# zz40-xc-ovr.m4
+#
+# Copyright (c) 2013 Daniel Stenberg <daniel@haxx.se>
+#
+# Permission to use, copy, modify, and distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#
+#---------------------------------------------------------------------------
+
+# serial 1
+
+
+dnl The funny name of this file is intentional in order to make it
+dnl sort alphabetically after any libtool, autoconf or automake
+dnl provided .m4 macro file that might get copied into this same
+dnl subdirectory. This allows that macro (re)definitions from this
+dnl file may override those provided in other files.
+
+
+dnl _XC_CONFIGURE_PREAMBLE_COMMENT
+dnl -------------------------------------------------
+dnl Private macro.
+
+AC_DEFUN([_XC_CONFIGURE_PREAMBLE_COMMENT],
+[
+## ---------------------------- ##
+## XC_CONFIGURE_PREAMBLE rev: 1 ##
+## ---------------------------- ##
+])
+
+
+dnl _XC_CHECK_COMMAND_TEST
+dnl -------------------------------------------------
+dnl Private macro.
+dnl
+dnl Check that 'test' command is available, else abort.
+
+AC_DEFUN([_XC_CHECK_COMMAND_TEST],
+[dnl
+#
+# Require that 'test' command is available.
+#
+
+xc_tst_str='unknown'
+test -n "$xc_tst_str" && xc_tst_str='success'
+case "x$xc_tst_str" in
+ xsuccess)
+ :
+ ;;
+ *)
+ echo "configure: error: 'test' command not found. Can not continue."
+ exit 1
+ ;;
+esac
+])
+
+
+dnl _XC_CHECK_PATH
+dnl -------------------------------------------------
+dnl Private macro.
+dnl
+dnl Check that PATH is set, otherwise abort.
+
+AC_DEFUN([_XC_CHECK_PATH],
+[dnl
+AC_REQUIRE([_XC_CHECK_COMMAND_TEST])dnl
+#
+# Require that PATH variable is set.
+#
+
+xc_tst_str='unknown'
+test -n "$PATH" && xc_tst_str='success'
+case "x$xc_tst_str" in
+ xsuccess)
+ :
+ ;;
+ *)
+ echo "configure: error: PATH variable not set. Can not continue."
+ exit 1
+ ;;
+esac
+])
+
+
+dnl _XC_CHECK_COMMAND_EXPR
+dnl -------------------------------------------------
+dnl Private macro.
+dnl
+dnl Check that 'expr' command is available, else abort.
+
+AC_DEFUN([_XC_CHECK_COMMAND_EXPR],
+[dnl
+#
+# Require that 'expr' command is available.
+#
+
+xc_tst_str='unknown'
+xc_tst_str=`expr "$xc_tst_str" : '.*'`
+case "x$xc_tst_str" in
+ x7)
+ :
+ ;;
+ *)
+ echo "configure: error: 'expr' command not found. Can not continue."
+ exit 1
+ ;;
+esac
+])
+
+
+dnl _XC_CHECK_UTILITY_SED
+dnl -------------------------------------------------
+dnl Private macro.
+dnl
+dnl Check that 'sed' utility is found within PATH. This
+dnl 'sed' is required in order to allow configure script
+dnl bootstrapping itself. No fancy testing for a proper
+dnl 'sed' this early please, that should be done later.
+
+AC_DEFUN([_XC_CHECK_UTILITY_SED],
+[dnl
+#
+# Require that 'sed' utility is found within PATH.
+#
+
+xc_tst_str='unknown'
+xc_tst_str=`echo "$xc_tst_str" | sed -e 's:unknown:success:'`
+case "x$xc_tst_str" in
+ xsuccess)
+ :
+ ;;
+ *)
+ echo "configure: error: 'sed' utility not in PATH. Can not continue."
+ exit 1
+ ;;
+esac
+])
+
+
+dnl _XC_CHECK_UTILITY_GREP
+dnl -------------------------------------------------
+dnl Private macro.
+dnl
+dnl Check that 'grep' utility is found within PATH. This
+dnl 'grep' is required in order to allow configure script
+dnl bootstrapping itself. No fancy testing for a proper
+dnl 'grep' this early please, that should be done later.
+
+AC_DEFUN([_XC_CHECK_UTILITY_GREP],
+[dnl
+#
+# Require that 'grep' utility is found within PATH.
+#
+
+xc_tst_str='unknown'
+echo "$xc_tst_str" | grep 'unknown' >/dev/null 2>&1 && xc_tst_str='success'
+case "x$xc_tst_str" in
+ xsuccess)
+ :
+ ;;
+ *)
+ echo "configure: error: 'grep' utility not in PATH. Can not continue."
+ exit 1
+ ;;
+esac
+])
+
+
+dnl _XC_CHECK_PATH_SEPARATOR
+dnl -------------------------------------------------
+dnl Private macro.
+dnl
+dnl Check and compute the path separator for us. This
+dnl path separator is the symbol used to diferentiate
+dnl or separate paths inside the PATH environment var.
+dnl
+dnl User provided PATH_SEPARATOR always overrides the
+dnl auto-detected one.
+
+AC_DEFUN([_XC_CHECK_PATH_SEPARATOR],
+[dnl
+AC_REQUIRE([_XC_CHECK_COMMAND_TEST])dnl
+AC_REQUIRE([_XC_CHECK_PATH])dnl
+AC_REQUIRE([_XC_CHECK_COMMAND_EXPR])dnl
+#
+# Auto-detect and set PATH_SEPARATOR, unless it is already set.
+#
+
+# Directory count in PATH when using a colon separator.
+xc_tst_dirs_col=0
+xc_tst_prev_IFS=$IFS; IFS=':'
+for xc_tst_dir in $PATH; do
+ IFS=$xc_tst_prev_IFS
+ test -d "$xc_tst_dir" && xc_tst_dirs_col=`expr $xc_tst_dirs_col + 1`
+done
+IFS=$xc_tst_prev_IFS
+
+# Directory count in PATH when using a semicolon separator.
+xc_tst_dirs_sem=0
+xc_tst_prev_IFS=$IFS; IFS=';'
+for xc_tst_dir in $PATH; do
+ IFS=$xc_tst_prev_IFS
+ test -d "$xc_tst_dir" && xc_tst_dirs_sem=`expr $xc_tst_dirs_sem + 1`
+done
+IFS=$xc_tst_prev_IFS
+
+if test $xc_tst_dirs_sem -eq $xc_tst_dirs_col; then
+ # When both counting methods give the same result we do not want to
+ # chose one over the other, and consider auto-detection not possible.
+ if test -z "$PATH_SEPARATOR"; then
+ # Stop dead until user provides PATH_SEPARATOR definition.
+ echo "configure: error: PATH_SEPARATOR variable not set. Can not continue."
+ exit 1
+ fi
+else
+ # Separator with the greater directory count is the auto-detected one.
+ if test $xc_tst_dirs_sem -gt $xc_tst_dirs_col; then
+ xc_tst_auto_separator=';'
+ else
+ xc_tst_auto_separator=':'
+ fi
+ if test -z "$PATH_SEPARATOR"; then
+ # Simply use the auto-detected one when not already set.
+ PATH_SEPARATOR="$xc_tst_auto_separator"
+ elif "x$PATH_SEPARATOR" != "x$xc_tst_auto_separator"; then
+ echo "configure: warning: PATH_SEPARATOR does not match auto-detected one."
+ fi
+fi
+AC_SUBST([PATH_SEPARATOR])dnl
+])
+
+
+dnl _XC_CONFIGURE_PREAMBLE
+dnl -------------------------------------------------
+dnl Private macro.
+
+AC_DEFUN([_XC_CONFIGURE_PREAMBLE],
+[dnl
+AC_REQUIRE([_XC_CONFIGURE_PREAMBLE_COMMENT])dnl
+AC_REQUIRE([_XC_CHECK_COMMAND_TEST])dnl
+AC_REQUIRE([_XC_CHECK_PATH])dnl
+AC_REQUIRE([_XC_CHECK_COMMAND_EXPR])dnl
+AC_REQUIRE([_XC_CHECK_UTILITY_SED])dnl
+AC_REQUIRE([_XC_CHECK_UTILITY_GREP])dnl
+AC_REQUIRE([_XC_CHECK_PATH_SEPARATOR])dnl
+echo "checking whether some basic commands and utilities are available... yes"
+])
+
+
+dnl XC_CONFIGURE_PREAMBLE
+dnl -------------------------------------------------
+dnl Public macro.
+dnl
+dnl This macro 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.
+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
+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 is not 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
+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.
+
+AC_DEFUN([XC_CONFIGURE_PREAMBLE],
+[dnl
+AC_PREREQ([2.50])dnl
+AC_BEFORE([$0],[_XC_CONFIGURE_PREAMBLE])dnl
+AC_BEFORE([$0],[_XC_CHECK_COMMAND_TEST])dnl
+AC_BEFORE([$0],[_XC_CHECK_PATH])dnl
+AC_BEFORE([$0],[_XC_CHECK_COMMAND_EXPR])dnl
+AC_BEFORE([$0],[_XC_CHECK_UTILITY_SED])dnl
+AC_BEFORE([$0],[_XC_CHECK_UTILITY_GREP])dnl
+AC_BEFORE([$0],[_XC_CHECK_PATH_SEPARATOR])dnl
+AC_REQUIRE([_XC_CONFIGURE_PREAMBLE])dnl
+m4_define([$0],[])dnl
+])
+
+
+dnl Override autoconf's PATH_SEPARATOR check
+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 early enough in the generated configure script.
+
+dnl
+dnl Override when using autoconf 2.53 and newer.
+dnl
+
+m4_defun([_AS_PATH_SEPARATOR_PREPARE],
+[dnl
+AC_REQUIRE([XC_CONFIGURE_PREAMBLE])dnl
+m4_define([$0],[])dnl
+])
+
+dnl
+dnl Override when using autoconf 2.50 to 2.52
+dnl
+
+m4_defun([_AC_INIT_PREPARE_FS_SEPARATORS],
+[dnl
+AC_REQUIRE([XC_CONFIGURE_PREAMBLE])dnl
+ac_path_separator=$PATH_SEPARATOR
+m4_define([$0],[])dnl
+])
+
+dnl
+dnl Override when using libtool 1.4.2
+dnl
+
+m4_defun([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR],
+[dnl
+AC_REQUIRE([XC_CONFIGURE_PREAMBLE])dnl
+lt_cv_sys_path_separator=$PATH_SEPARATOR
+m4_define([$0],[])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
+dnl This is the proper and intended way in which macro
+dnl XC_CONFIGURE_PREAMBLE will expand early enough in
+dnl generated configure script.
+
+AC_DEFUN([XC_OVR_ZZ40],
+[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_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_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
+dnl
+m4_define([$0],[])dnl
+])
+