]> git.saurik.com Git - wxWidgets.git/blobdiff - build/aclocal/bakefile-lang.m4
Make it compile
[wxWidgets.git] / build / aclocal / bakefile-lang.m4
index 6c483c5c159e5f715be5d87b98d3c7e49118f29f..ec0f711eec72140e706fbaf73293f11c62cb77bf 100644 (file)
@@ -21,7 +21,7 @@ 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  $Id: bakefile-lang.m4 1278 2008-11-17 22:26:10Z vadz $
 dnl
 dnl  Compiler detection macros by David Elliott and Vadim Zeitlin
 dnl
@@ -59,6 +59,36 @@ AC_DEFUN([_AC_BAKEFILE_LANG_COMPILER],
     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],
 [
@@ -117,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],
 [
@@ -187,13 +240,19 @@ 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
@@ -213,7 +272,9 @@ 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*)
@@ -221,8 +282,11 @@ AC_DEFUN([_AC_BAKEFILE_PROG_COMPILER],
                 ;;
 
             Linux*)
-                dnl Sun CC is now available under Linux too
-                AC_BAKEFILE_PROG_SUN$1
+                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*)