X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3006edc09244ca92032e3a96f99a922948a59b11..1d178139b297516b20c4a0e156cb34cdc50fdffa:/build/aclocal/bakefile-lang.m4?ds=sidebyside diff --git a/build/aclocal/bakefile-lang.m4 b/build/aclocal/bakefile-lang.m4 index 816526f188..21441e4abf 100644 --- a/build/aclocal/bakefile-lang.m4 +++ b/build/aclocal/bakefile-lang.m4 @@ -1,74 +1,36 @@ -dnl --------------------------------------------------------------------------- -dnl Compiler detection macros by David Elliott -dnl --------------------------------------------------------------------------- +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 $Id$ +dnl +dnl Compiler detection macros by David Elliott and Vadim Zeitlin +dnl dnl =========================================================================== -dnl Macros to detect non-GNU compilers (MetroWerks, XLC) +dnl Macros to detect different C/C++ compilers dnl =========================================================================== -dnl Based on autoconf _AC_LANG_COMPILER_GNU -AC_DEFUN([_AC_BAKEFILE_LANG_COMPILER_MWERKS], -[AC_CACHE_CHECK([whether we are using the Metrowerks _AC_LANG compiler], - [bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_mwerks], - [AC_TRY_COMPILE([],[#ifndef __MWERKS__ - choke me -#endif -], - [bakefile_compiler_mwerks=yes], - [bakefile_compiler_mwerks=no]) - bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_mwerks=$bakefile_compiler_mwerks - ]) -]) - -dnl Loosely based on autoconf AC_PROG_CC -dnl TODO: Maybe this should wrap the call to AC_PROG_CC and be used instead. -AC_DEFUN([AC_BAKEFILE_PROG_MWCC], -[AC_LANG_PUSH(C) -_AC_BAKEFILE_LANG_COMPILER_MWERKS -MWCC=`test $bakefile_cv_c_compiler_mwerks = yes && echo yes` -AC_LANG_POP(C) -]) - -dnl Loosely based on autoconf AC_PROG_CXX -dnl TODO: Maybe this should wrap the call to AC_PROG_CXX and be used instead. -AC_DEFUN([AC_BAKEFILE_PROG_MWCXX], -[AC_LANG_PUSH(C++) -_AC_BAKEFILE_LANG_COMPILER_MWERKS -MWCXX=`test $bakefile_cv_cxx_compiler_mwerks = yes && echo yes` -AC_LANG_POP(C++) -]) - -dnl Based on autoconf _AC_LANG_COMPILER_GNU -AC_DEFUN([_AC_BAKEFILE_LANG_COMPILER_XLC], -[AC_CACHE_CHECK([whether we are using the IBM xlC _AC_LANG compiler], - [wx_cv_[]_AC_LANG_ABBREV[]_compiler_xlc], - [AC_TRY_COMPILE([],[#ifndef __xlC__ - choke me -#endif -], - [wx_compiler_xlc=yes], - [wx_compiler_xlc=no]) - wx_cv_[]_AC_LANG_ABBREV[]_compiler_xlc=$wx_compiler_xlc - ]) -]) - -dnl Loosely based on autoconf AC_PROG_CC -AC_DEFUN([AC_BAKEFILE_PROG_XLCC], -[AC_LANG_PUSH(C) -_AC_BAKEFILE_LANG_COMPILER_XLC -XLCC=`test $wx_cv_c_compiler_xlc = yes && echo yes` -AC_LANG_POP(C) -]) - -dnl Loosely based on autoconf AC_PROG_CXX -AC_DEFUN([AC_BAKEFILE_PROG_XLCXX], -[AC_LANG_PUSH(C++) -_AC_BAKEFILE_LANG_COMPILER_XLC -XLCXX=`test $wx_cv_cxx_compiler_xlc = yes && echo yes` -AC_LANG_POP(C++) -]) - 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], @@ -89,12 +51,64 @@ AC_DEFUN([_AC_BAKEFILE_LANG_COMPILER], ) ] ) - AC_LANG_POP($2) 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 @@ -133,6 +147,29 @@ 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], [ @@ -144,13 +181,24 @@ 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], wx_cv_[]_AC_LANG_ABBREV[]_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 @@ -161,7 +209,7 @@ 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) - wx_cv_[]_AC_LANG_ABBREV[]_exto="-ext o" + bakefile_cv_[]_AC_LANG_ABBREV[]_exto="-ext o" ;; *) ;; @@ -173,12 +221,12 @@ done], rm -f conftest.$ac_ext.o conftest.$ac_objext conftest.$ac_ext ]) dnl AC_CACHE_CHECK -if test "x$wx_cv_[]_AC_LANG_ABBREV[]_exto" '!=' "x"; then +if test "x$bakefile_cv_[]_AC_LANG_ABBREV[]_exto" '!=' "x"; then if test "[]_AC_LANG_ABBREV[]" = "c"; then - CFLAGS="$wx_cv_[]_AC_LANG_ABBREV[]_exto $CFLAGS" + CFLAGS="$bakefile_cv_[]_AC_LANG_ABBREV[]_exto $CFLAGS" fi if test "[]_AC_LANG_ABBREV[]" = "cxx"; then - CXXFLAGS="$wx_cv_[]_AC_LANG_ABBREV[]_exto $CXXFLAGS" + CXXFLAGS="$bakefile_cv_[]_AC_LANG_ABBREV[]_exto $CXXFLAGS" fi fi ]) dnl AC_DEFUN @@ -192,13 +240,24 @@ dnl check for different proprietary compilers depending on target platform dnl _AC_BAKEFILE_PROG_COMPILER(LANG) AC_DEFUN([_AC_BAKEFILE_PROG_COMPILER], [ - AC_PROG_$1 + 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$wx_cv_c_exto" '!=' "x"; then + if test "x$bakefile_cv_c_exto" '!=' "x"; then unset ac_cv_prog_cc_g _AC_PROG_CC_G fi @@ -213,20 +272,34 @@ AC_DEFUN([_AC_BAKEFILE_PROG_COMPILER], Darwin) AC_BAKEFILE_PROG_MW$1 - AC_BAKEFILE_PROG_XL$1 + if test "$MW$1" != "yes"; then + AC_BAKEFILE_PROG_XL$1 + fi ;; IRIX*) AC_BAKEFILE_PROG_SGI$1 ;; - SunOS) - AC_BAKEFILE_PROG_SUN$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 ])