Skip to content

Commit db1a873

Browse files
committed
Support ffi
1 parent 0f364cd commit db1a873

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

.pkg-config/pkgconfig/libffi.pc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
prefix=C:/usr
2+
libdir=${prefix}/lib
3+
includedir=${prefix}/include
4+
5+
Name: libffi
6+
Description: winlibs libffi package
7+
Url: https://github.com/winlibs/libffi
8+
Version: 3.3pl1
9+
Libs: -L${libdir} -llibffi
10+
Cflags: -I${includedir}

ext/ffi/config.w32

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
ARG_WITH('ffi', 'ffi support', 'no');
22

33
if (PHP_FFI != 'no') {
4-
if (CHECK_HEADER_ADD_INCLUDE("ffi.h", "CFLAGS_FFI", PHP_FFI+ ";" + PHP_PHP_BUILD + "\\include") &&
5-
CHECK_LIB("libffi.lib", "ffi", PHP_FFI)) {
4+
if (PKG_CHECK_MODULES("LIBFFI", "libffi")) {
5+
PHP_EVAL_INCLINE(LIBFFI_CFLAGS, "ffi");
6+
PHP_EVAL_LIBLINE(LIBFFI_LIBS, "ffi");
67
AC_DEFINE('HAVE_FFI', 1, "Define to 1 if the PHP extension 'ffi' is available.");
78

89
if (!X64) {
@@ -13,12 +14,11 @@ if (PHP_FFI != 'no') {
1314
AC_DEFINE('HAVE_FFI_SYSV', 1, 'Define to 1 if libffi supports the sysv calling convention.');
1415
}
1516
// Available in https://github.com/winlibs/libffi.
16-
if (GREP_HEADER("ffitarget.h", "FFI_VECTORCALL_PARTIAL", PHP_PHP_BUILD + "\\include")) {
17-
AC_DEFINE('HAVE_FFI_VECTORCALL_PARTIAL', 1, 'Define to 1 if libffi partially supports the vectorcall calling convention.');
18-
}
17+
// FIXME: only define if actually supported
18+
AC_DEFINE('HAVE_FFI_VECTORCALL_PARTIAL', 1, 'Define to 1 if libffi partially supports the vectorcall calling convention.');
1919

2020
EXTENSION('ffi', 'ffi.c ffi_parser.c', null, '/DZEND_ENABLE_STATIC_TSRMLS_CACHE=1');
2121
} else {
22-
WARNING('ffi not enabled, headers or libraries not found');
22+
WARNING('ffi not enabled; libffi package not found');
2323
}
2424
}

0 commit comments

Comments
 (0)