], [
], -L$psi_cv_libffi_dir/$PHP_LIBDIR)
], -L$psi_cv_libffi_dir/$PHP_LIBDIR)
+ PHP_CHECK_LIBRARY(ffi, ffi_prep_cif_var, [
+ AC_DEFINE(PSI_HAVE_FFI_PREP_CIF_VAR, 1, [ ])
+ ], [
+ ], -L$psi_cv_libffi_dir/$PHP_LIBDIR)
])
dnl PSI_COMPUTE_STR(variable, string or expression)
params[nfixedargs + i] = psi_ffi_impl_type(va->types[i]);
params[nfixedargs + i + ntotalargs + 1] = &va->values[i];
}
-
+#ifdef PSI_HAVE_FFI_PREP_CIF_VAR
rc = ffi_prep_cif_var(&signature, call->signature.abi,
nfixedargs, ntotalargs,
call->signature.rtype, (ffi_type **) params);
+#else
+ /* FIXME: test in config.m4; assume we can just call anyway */
+ rc = ffi_prep_cif(&signature, call->signature.abi, ntotalargs,
+ call->signature.rtype, (ffi_type **) params);
+#endif
ZEND_ASSERT(FFI_OK == rc);
ffi_call(&signature, FFI_FN(decl_call->sym), decl_call->rval, ¶ms[ntotalargs + 1]);
free(params);