testsuite: Detect clang
authorRichard Henderson <rth@twiddle.net>
Thu, 13 Nov 2014 17:06:10 +0000 (09:06 -0800)
committerRichard Henderson <rth@twiddle.net>
Fri, 14 Nov 2014 12:07:16 +0000 (13:07 +0100)
Clang doesn't like the -Wno-psabi argument that we want to pass to GCC.
Since clang is detected as GCC via __GNUC__, use ax_cv_c_compiler_vendor.

testsuite/lib/libffi.exp

index 5051d31..0e92bb0 100644 (file)
@@ -100,46 +100,39 @@ proc libffi-init { args } {
     global libffi_link_flags
     global tool_root_dir
     global ld_library_path
-
-    global using_gcc
+    global compiler_vendor
 
     set blddirffi [pwd]/.. 
     verbose "libffi $blddirffi"
 
-    # Are we building with GCC?
-    set tmp [grep ../config.status "GCC='yes'"]
-    if { [string match $tmp "GCC='yes'"] } {
-
-      set using_gcc "yes"
+    # Which compiler are we building with?
+    set tmp [grep ../config.log "^ax_cv_c_compiler_vendor.*$"]
+    regexp -- {^[^=]*=(.*)$} $tmp nil compiler_vendor
 
-    set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a]
-    if {$gccdir != ""} {
-       set gccdir [file dirname $gccdir]
-    }
-    verbose "gccdir $gccdir"
-
-    set ld_library_path "."
-    append ld_library_path ":${gccdir}"
-
-    set compiler "${gccdir}/xgcc"
-    if { [is_remote host] == 0 && [which $compiler] != 0 } {
-       foreach i "[exec $compiler --print-multi-lib]" {
-           set mldir ""
-           regexp -- "\[a-z0-9=_/\.-\]*;" $i mldir
-           set mldir [string trimright $mldir "\;@"]
-           if { "$mldir" == "." } {
-               continue
-           }
-           if { [llength [glob -nocomplain ${gccdir}/${mldir}/libgcc_s*.so.*]] >= 1 } {
-               append ld_library_path ":${gccdir}/${mldir}"
+    if { [string match $compiler_vendor "gnu"] } {
+        set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a]
+        if {$gccdir != ""} {
+           set gccdir [file dirname $gccdir]
+        }
+        verbose "gccdir $gccdir"
+
+        set ld_library_path "."
+        append ld_library_path ":${gccdir}"
+
+        set compiler "${gccdir}/xgcc"
+        if { [is_remote host] == 0 && [which $compiler] != 0 } {
+           foreach i "[exec $compiler --print-multi-lib]" {
+               set mldir ""
+               regexp -- "\[a-z0-9=_/\.-\]*;" $i mldir
+               set mldir [string trimright $mldir "\;@"]
+               if { "$mldir" == "." } {
+                   continue
+               }
+               if { [llength [glob -nocomplain ${gccdir}/${mldir}/libgcc_s*.so.*]] >= 1 } {
+                   append ld_library_path ":${gccdir}/${mldir}"
+               }
            }
-       }
-    }
-    } else {
-
-      set using_gcc "no"
-
+        }
     }
 
     # add the library path for libffi.
@@ -278,18 +271,25 @@ proc libffi-dg-runtest { testcases default-extra-flags } {
 }
 
 proc run-many-tests { testcases extra_flags } {
-    global using_gcc
-    if { [string match $using_gcc "yes"] } {
+    global compiler_vendor
+    switch $compiler_vendor {
+      "clang" {
+       set common "-W -Wall"
+       set optimizations { "-O0" "-O1" "-O2" "-O3" "-Os" }
+      }
+      "gnu" {
         set common "-W -Wall -Wno-psabi"
         set optimizations { "-O0" "-O2" "-O3" "-Os" "-O2 -fomit-frame-pointer" }
-    } else {
+      }
+      default {
         # Assume we are using the vendor compiler.
         set common ""
         set optimizations { "" }
+      }
     }
 
     set targetabis { "" }
-    if [string match $using_gcc "yes"] {
+    if [string match $compiler_vendor "gnu"] {
         if [istarget "i?86-*-*"] {
             set targetabis {
                 ""