| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314 | 
							- dnl
 
- dnl  This file is part of Bakefile (http://www.bakefile.org)
 
- dnl
 
- dnl  Copyright (C) 2003-2007 Vaclav Slavik, David Elliott and others
 
- dnl
 
- dnl  Permission is hereby granted, free of charge, to any person obtaining a
 
- dnl  copy of this software and associated documentation files (the "Software"),
 
- dnl  to deal in the Software without restriction, including without limitation
 
- dnl  the rights to use, copy, modify, merge, publish, distribute, sublicense,
 
- dnl  and/or sell copies of the Software, and to permit persons to whom the
 
- dnl  Software is furnished to do so, subject to the following conditions:
 
- dnl
 
- dnl  The above copyright notice and this permission notice shall be included in
 
- dnl  all copies or substantial portions of the Software.
 
- dnl
 
- dnl  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 
- dnl  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 
- dnl  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
 
- dnl  THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 
- dnl  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 
- dnl  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 
- dnl  DEALINGS IN THE SOFTWARE.
 
- dnl
 
- dnl  Compiler detection macros by David Elliott and Vadim Zeitlin
 
- dnl
 
- dnl ===========================================================================
 
- dnl Macros to detect different C/C++ compilers
 
- dnl ===========================================================================
 
- dnl Based on autoconf _AC_LANG_COMPILER_GNU
 
- dnl _AC_BAKEFILE_LANG_COMPILER(NAME, LANG, SYMBOL, IF-YES, IF-NO)
 
- AC_DEFUN([_AC_BAKEFILE_LANG_COMPILER],
 
- [
 
-     AC_LANG_PUSH($2)
 
-     AC_CACHE_CHECK(
 
-         [whether we are using the $1 $2 compiler],
 
-         [bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_[]$3],
 
-         [AC_TRY_COMPILE(
 
-             [],
 
-             [
 
-              #ifndef $3
 
-                 choke me
 
-              #endif
 
-             ],
 
-             [bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_[]$3=yes],
 
-             [bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_[]$3=no]
 
-          )
 
-         ]
 
-     )
 
-     if test "x$bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_[]$3" = "xyes"; then
 
-         :; $4
 
-     else
 
-         :; $5
 
-     fi
 
-     AC_LANG_POP($2)
 
- ])
 
- dnl More specific version of the above macro checking whether the compiler
 
- dnl version is at least the given one (assumes that we do use this compiler)
 
- dnl
 
- dnl _AC_BAKEFILE_LANG_COMPILER_LATER_THAN(NAME, LANG, SYMBOL, VER, VERMSG, IF-YES, IF-NO)
 
- AC_DEFUN([_AC_BAKEFILE_LANG_COMPILER_LATER_THAN],
 
- [
 
-     AC_LANG_PUSH($2)
 
-     AC_CACHE_CHECK(
 
-         [whether we are using $1 $2 compiler v$5 or later],
 
-         [bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_[]$3[]_lt_[]$4],
 
-         [AC_TRY_COMPILE(
 
-             [],
 
-             [
 
-              #ifndef $3 || $3 < $4
 
-                 choke me
 
-              #endif
 
-             ],
 
-             [bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_[]$3[]_lt_[]$4=yes],
 
-             [bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_[]$3[]_lt_[]$4=no]
 
-          )
 
-         ]
 
-     )
 
-     if test "x$bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_[]$3[]_lt_[]$4" = "xyes"; then
 
-         :; $6
 
-     else
 
-         :; $7
 
-     fi
 
-     AC_LANG_POP($2)
 
- ])
 
- dnl CodeWarrior Metrowerks compiler defines __MWERKS__ for both C and C++
 
- AC_DEFUN([AC_BAKEFILE_PROG_MWCC],
 
- [
 
-     _AC_BAKEFILE_LANG_COMPILER(Metrowerks, C, __MWERKS__, MWCC=yes)
 
- ])
 
- AC_DEFUN([AC_BAKEFILE_PROG_MWCXX],
 
- [
 
-     _AC_BAKEFILE_LANG_COMPILER(Metrowerks, C++, __MWERKS__, MWCXX=yes)
 
- ])
 
- dnl IBM xlC compiler defines __xlC__ for both C and C++
 
- AC_DEFUN([AC_BAKEFILE_PROG_XLCC],
 
- [
 
-     _AC_BAKEFILE_LANG_COMPILER([IBM xlC], C, __xlC__, XLCC=yes)
 
- ])
 
- AC_DEFUN([AC_BAKEFILE_PROG_XLCXX],
 
- [
 
-     _AC_BAKEFILE_LANG_COMPILER([IBM xlC], C++, __xlC__, XLCXX=yes)
 
- ])
 
- dnl recent versions of SGI mipsPro compiler define _SGI_COMPILER_VERSION
 
- dnl
 
- dnl NB: old versions define _COMPILER_VERSION but this could probably be
 
- dnl     defined by other compilers too so don't test for it to be safe
 
- AC_DEFUN([AC_BAKEFILE_PROG_SGICC],
 
- [
 
-     _AC_BAKEFILE_LANG_COMPILER(SGI, C, _SGI_COMPILER_VERSION, SGICC=yes)
 
- ])
 
- AC_DEFUN([AC_BAKEFILE_PROG_SGICXX],
 
- [
 
-     _AC_BAKEFILE_LANG_COMPILER(SGI, C++, _SGI_COMPILER_VERSION, SGICXX=yes)
 
- ])
 
- dnl Sun compiler defines __SUNPRO_C/__SUNPRO_CC
 
- AC_DEFUN([AC_BAKEFILE_PROG_SUNCC],
 
- [
 
-     _AC_BAKEFILE_LANG_COMPILER(Sun, C, __SUNPRO_C, SUNCC=yes)
 
- ])
 
- AC_DEFUN([AC_BAKEFILE_PROG_SUNCXX],
 
- [
 
-     _AC_BAKEFILE_LANG_COMPILER(Sun, C++, __SUNPRO_CC, SUNCXX=yes)
 
- ])
 
- dnl Intel icc compiler defines __INTEL_COMPILER for both C and C++
 
- AC_DEFUN([AC_BAKEFILE_PROG_INTELCC],
 
- [
 
-     _AC_BAKEFILE_LANG_COMPILER(Intel, C, __INTEL_COMPILER, INTELCC=yes)
 
- ])
 
- AC_DEFUN([AC_BAKEFILE_PROG_INTELCXX],
 
- [
 
-     _AC_BAKEFILE_LANG_COMPILER(Intel, C++, __INTEL_COMPILER, INTELCXX=yes)
 
- ])
 
- dnl Intel compiler command line options changed in incompatible ways sometimes
 
- dnl before v8 (-KPIC was replaced with gcc-compatible -fPIC) and again in v10
 
- dnl (-create-pch deprecated in favour of -pch-create) so we need to test for
 
- dnl its exact version too
 
- AC_DEFUN([AC_BAKEFILE_PROG_INTELCC_8],
 
- [
 
-     _AC_BAKEFILE_LANG_COMPILER_LATER_THAN(Intel, C, __INTEL_COMPILER, 800, 8, INTELCC8=yes)
 
- ])
 
- AC_DEFUN([AC_BAKEFILE_PROG_INTELCXX_8],
 
- [
 
-     _AC_BAKEFILE_LANG_COMPILER_LATER_THAN(Intel, C++, __INTEL_COMPILER, 800, 8, INTELCXX8=yes)
 
- ])
 
- AC_DEFUN([AC_BAKEFILE_PROG_INTELCC_10],
 
- [
 
-     _AC_BAKEFILE_LANG_COMPILER_LATER_THAN(Intel, C, __INTEL_COMPILER, 1000, 10, INTELCC10=yes)
 
- ])
 
- AC_DEFUN([AC_BAKEFILE_PROG_INTELCXX_10],
 
- [
 
-     _AC_BAKEFILE_LANG_COMPILER_LATER_THAN(Intel, C++, __INTEL_COMPILER, 1000, 10, INTELCXX10=yes)
 
- ])
 
- dnl HP-UX aCC: see http://docs.hp.com/en/6162/preprocess.htm#macropredef
 
- AC_DEFUN([AC_BAKEFILE_PROG_HPCC],
 
- [
 
-     _AC_BAKEFILE_LANG_COMPILER(HP, C, __HP_cc, HPCC=yes)
 
- ])
 
- AC_DEFUN([AC_BAKEFILE_PROG_HPCXX],
 
- [
 
-     _AC_BAKEFILE_LANG_COMPILER(HP, C++, __HP_aCC, HPCXX=yes)
 
- ])
 
- dnl Tru64 cc and cxx
 
- AC_DEFUN([AC_BAKEFILE_PROG_COMPAQCC],
 
- [
 
-     _AC_BAKEFILE_LANG_COMPILER(Compaq, C, __DECC, COMPAQCC=yes)
 
- ])
 
- AC_DEFUN([AC_BAKEFILE_PROG_COMPAQCXX],
 
- [
 
-     _AC_BAKEFILE_LANG_COMPILER(Compaq, C++, __DECCXX, COMPAQCXX=yes)
 
- ])
 
- dnl ===========================================================================
 
- dnl macros to detect specialty compiler options
 
- dnl ===========================================================================
 
- dnl Figure out if we need to pass -ext o to compiler (MetroWerks)
 
- AC_DEFUN([AC_BAKEFILE_METROWERKS_EXTO],
 
- [AC_CACHE_CHECK([if the _AC_LANG compiler requires -ext o], bakefile_cv_[]_AC_LANG_ABBREV[]_exto,
 
- dnl First create an empty conf test
 
- [AC_LANG_CONFTEST([AC_LANG_PROGRAM()])
 
- dnl Now remove .o and .c.o or .cc.o
 
- rm -f conftest.$ac_objext conftest.$ac_ext.o
 
- dnl Now compile the test
 
- AS_IF([AC_TRY_EVAL(ac_compile)],
 
- dnl If the test succeeded look for conftest.c.o or conftest.cc.o
 
- [for ac_file in `(ls conftest.* 2>/dev/null)`; do
 
-     case $ac_file in
 
-         conftest.$ac_ext.o)
 
-             bakefile_cv_[]_AC_LANG_ABBREV[]_exto="-ext o"
 
-             ;;
 
-         *)
 
-             ;;
 
-     esac
 
- done],
 
- [AC_MSG_FAILURE([cannot figure out if compiler needs -ext o: cannot compile])
 
- ]) dnl AS_IF
 
- rm -f conftest.$ac_ext.o conftest.$ac_objext conftest.$ac_ext
 
- ]) dnl AC_CACHE_CHECK
 
- if test "x$bakefile_cv_[]_AC_LANG_ABBREV[]_exto" '!=' "x"; then
 
-     if test "[]_AC_LANG_ABBREV[]" = "c"; then
 
-         CFLAGS="$bakefile_cv_[]_AC_LANG_ABBREV[]_exto $CFLAGS"
 
-     fi
 
-     if test "[]_AC_LANG_ABBREV[]" = "cxx"; then
 
-         CXXFLAGS="$bakefile_cv_[]_AC_LANG_ABBREV[]_exto $CXXFLAGS"
 
-     fi
 
- fi
 
- ]) dnl AC_DEFUN
 
- dnl ===========================================================================
 
- dnl Macros to do all of the compiler detections as one macro
 
- dnl ===========================================================================
 
- dnl check for different proprietary compilers depending on target platform
 
- dnl _AC_BAKEFILE_PROG_COMPILER(LANG)
 
- AC_DEFUN([_AC_BAKEFILE_PROG_COMPILER],
 
- [
 
-     AC_REQUIRE([AC_PROG_$1])
 
-     dnl Intel compiler can be used under several different OS and even
 
-     dnl different architectures (x86, amd64 and Itanium) so it's easier to just
 
-     dnl always test for it
 
-     AC_BAKEFILE_PROG_INTEL$1
 
-     dnl If we use Intel compiler we also need to know its version
 
-     if test "$INTEL$1" = "yes"; then
 
-         AC_BAKEFILE_PROG_INTEL$1_8
 
-         AC_BAKEFILE_PROG_INTEL$1_10
 
-     fi
 
-     dnl if we're using gcc, we can't be using any of incompatible compilers
 
-     if test "x$G$1" != "xyes"; then
 
-         if test "x$1" = "xC"; then
 
-             AC_BAKEFILE_METROWERKS_EXTO
 
-             if test "x$bakefile_cv_c_exto" '!=' "x"; then
 
-                 unset ac_cv_prog_cc_g
 
-                 _AC_PROG_CC_G
 
-             fi
 
-         fi
 
-         dnl most of these compilers are only used under well-defined OS so
 
-         dnl don't waste time checking for them on other ones
 
-         case `uname -s` in
 
-             AIX*)
 
-                 AC_BAKEFILE_PROG_XL$1
 
-                 ;;
 
-             Darwin)
 
-                 AC_BAKEFILE_PROG_MW$1
 
-                 if test "$MW$1" != "yes"; then
 
-                     AC_BAKEFILE_PROG_XL$1
 
-                 fi
 
-                 ;;
 
-             IRIX*)
 
-                 AC_BAKEFILE_PROG_SGI$1
 
-                 ;;
 
-             Linux*)
 
-                 dnl Sun CC is now available under Linux too, test for it unless
 
-                 dnl we already found that we were using a different compiler
 
-                 if test "$INTEL$1" != "yes"; then
 
-                     AC_BAKEFILE_PROG_SUN$1
 
-                 fi
 
-                 ;;
 
-             HP-UX*)
 
-                 AC_BAKEFILE_PROG_HP$1
 
-                 ;;
 
-             OSF1)
 
-                 AC_BAKEFILE_PROG_COMPAQ$1
 
-                 ;;
 
-             SunOS)
 
-                 AC_BAKEFILE_PROG_SUN$1
 
-                 ;;
 
-         esac
 
-     fi
 
- ])
 
- AC_DEFUN([AC_BAKEFILE_PROG_CC],
 
- [
 
-     _AC_BAKEFILE_PROG_COMPILER(CC)
 
- ])
 
- AC_DEFUN([AC_BAKEFILE_PROG_CXX],
 
- [
 
-     _AC_BAKEFILE_PROG_COMPILER(CXX)
 
- ])
 
 
  |