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.
#
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 {