testsuite: Use feature test rather than enumeration for complex
authorRichard Henderson <rth@twiddle.net>
Fri, 14 Nov 2014 09:50:29 +0000 (10:50 +0100)
committerRichard Henderson <rth@twiddle.net>
Fri, 14 Nov 2014 12:07:45 +0000 (13:07 +0100)
testsuite/lib/libffi.exp
testsuite/libffi.call/call.exp

index 0e92bb0..1b8b008 100644 (file)
@@ -223,6 +223,24 @@ proc libffi_target_compile { source dest type options } {
     return [target_compile $source $dest $type $options]
 }
 
+# TEST should be a preprocessor condition.  Returns true if it holds.
+proc libffi_feature_test { test } {
+    set src "ffitest.c"
+
+    set f [open $src "w"]
+    puts $f "#include <ffi.h>"
+    puts $f $test
+    puts $f "xyzzy"
+    puts $f "#endif"
+    close $f
+
+    set lines [libffi_target_compile $src "" "preprocess" ""]
+    file delete $src
+
+    set last [lindex $lines end]
+    return [regexp -- "xyzzy" $last]
+}
+
 # Utility routines.
 
 #
index 982c03e..54f2834 100644 (file)
@@ -24,15 +24,7 @@ set ctlist [lsearch -inline -all -glob [lsort [glob -nocomplain -- $srcdir/$subd
 
 run-many-tests $tlist ""
 
-# ??? We really should preprocess ffi.h and grep
-# for FFI_TARGET_HAS_COMPLEX_TYPE.
-if { [istarget aarch64*]
-     || [istarget alpha*]
-     || [istarget arm*]
-     || [istarget i?86*]
-     || [istarget s390*]
-     || [istarget sparc*]
-     || [istarget x86_64*] } {
+if { [libffi_feature_test "#ifdef FFI_TARGET_HAS_COMPLEX_TYPE"] } {
     run-many-tests $ctlist ""
 } else {
     foreach test $ctlist {