summaryrefslogtreecommitdiff
path: root/m4/xc-cc-check.m4
diff options
context:
space:
mode:
authorYang Tse <yangsita@gmail.com>2013-01-20 20:23:20 +0100
committerYang Tse <yangsita@gmail.com>2013-01-20 20:23:20 +0100
commit9d1effad0524bcb4763e06659b728ba134464608 (patch)
tree98c89886306a3f8de163cf32978c0860b0890e0d /m4/xc-cc-check.m4
parente5ea45ec2ea6034900c83b932398400923a35137 (diff)
downloadcurl-9d1effad0524bcb4763e06659b728ba134464608.tar.gz
configure: autotools compatibility fixes - step I
Fix proper macro expansion order across autotools versions for C compiler and preprocessor program checks.
Diffstat (limited to 'm4/xc-cc-check.m4')
-rw-r--r--m4/xc-cc-check.m4102
1 files changed, 102 insertions, 0 deletions
diff --git a/m4/xc-cc-check.m4 b/m4/xc-cc-check.m4
new file mode 100644
index 000000000..5e5af9c69
--- /dev/null
+++ b/m4/xc-cc-check.m4
@@ -0,0 +1,102 @@
+#---------------------------------------------------------------------------
+#
+# xc-cc-check.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 _XC_PROG_CC_PREAMBLE
+dnl -------------------------------------------------
+dnl Private macro.
+
+AC_DEFUN([_XC_PROG_CC_PREAMBLE], [
+ xc_prog_cc_prev_IFS=$IFS
+ xc_prog_cc_prev_LIBS=$LIBS
+ xc_prog_cc_prev_CFLAGS=$CFLAGS
+ xc_prog_cc_prev_LDFLAGS=$LDFLAGS
+ xc_prog_cc_prev_CPPFLAGS=$CPPFLAGS
+])
+
+
+dnl _XC_PROG_CC_POSTLUDE
+dnl -------------------------------------------------
+dnl Private macro.
+
+AC_DEFUN([_XC_PROG_CC_POSTLUDE], [
+ IFS=$xc_prog_cc_prev_IFS
+ LIBS=$xc_prog_cc_prev_LIBS
+ CFLAGS=$xc_prog_cc_prev_CFLAGS
+ LDFLAGS=$xc_prog_cc_prev_LDFLAGS
+ CPPFLAGS=$xc_prog_cc_prev_CPPFLAGS
+ export CC
+ export CPP
+ export LIBS
+ export CFLAGS
+ export LDFLAGS
+ export CPPFLAGS
+ AC_SUBST([CC])dnl
+ AC_SUBST([CPP])dnl
+ AC_SUBST([LIBS])dnl
+ AC_SUBST([CFLAGS])dnl
+ AC_SUBST([LDFLAGS])dnl
+ AC_SUBST([CPPFLAGS])dnl
+])
+
+
+dnl _XC_PROG_CC
+dnl -------------------------------------------------
+dnl Private macro.
+
+AC_DEFUN([_XC_PROG_CC], [
+ AC_REQUIRE([_XC_PROG_CC_PREAMBLE])dnl
+ AC_REQUIRE([XC_CHECK_USER_FLAGS])dnl
+ AC_REQUIRE([AC_PROG_INSTALL])dnl
+ AC_REQUIRE([AC_PROG_CC])dnl
+ AC_REQUIRE([AM_PROG_CC_C_O])dnl
+ AC_REQUIRE([AC_PROG_CPP])dnl
+ AC_REQUIRE([_XC_PROG_CC_POSTLUDE])dnl
+])
+
+
+dnl XC_CHECK_PROG_CC
+dnl -------------------------------------------------
+dnl Public macro.
+dnl
+dnl Checks for C compiler and C preprocessor programs,
+dnl while doing some previous sanity validation on user
+dnl provided LIBS, LDFLAGS, CPPFLAGS and CFLAGS values
+dnl that must succeed in order to continue execution.
+dnl
+dnl This sets variables CC and CPP, while preventing
+dnl LIBS, LDFLAGS, CFLAGS, CPPFLAGS and IFS from being
+dnl unexpectedly changed by underlying macros.
+
+AC_DEFUN([XC_CHECK_PROG_CC], [
+ AC_PREREQ([2.50])dnl
+ AC_BEFORE([$0],[_XC_PROG_CC_PREAMBLE])dnl
+ AC_BEFORE([$0],[AC_PROG_INSTALL])dnl
+ AC_BEFORE([$0],[AC_PROG_CC])dnl
+ AC_BEFORE([$0],[AM_PROG_CC_C_O])dnl
+ AC_BEFORE([$0],[AC_PROG_CPP])dnl
+ AC_BEFORE([$0],[AC_PROG_LIBTOOL])dnl
+ AC_BEFORE([$0],[AM_INIT_AUTOMAKE])dnl
+ AC_BEFORE([$0],[_XC_PROG_CC_POSTLUDE])dnl
+ AC_REQUIRE([_XC_PROG_CC])dnl
+])
+