xref: /php-src/ext/ffi/config.w32 (revision b5e2f3a4)
1ARG_WITH('ffi', 'ffi support', 'no');
2
3if (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)) {
6		AC_DEFINE('HAVE_FFI', 1, 'ffi support enabled');
7
8		if (!X64) {
9		    AC_DEFINE('HAVE_FFI_FASTCALL', 1 ,'libffi supports fastcall calling convention');
10		    AC_DEFINE('HAVE_FFI_THISCALL', 1 ,'libffi supports thiscall calling convention');
11		    AC_DEFINE('HAVE_FFI_STDCALL', 1 ,'libffi supports stdcall calling convention');
12		    AC_DEFINE('HAVE_FFI_MS_CDECL', 1 ,'libffi supports ms_cdecl calling convention');
13		    AC_DEFINE('HAVE_FFI_SYSV', 1 ,'libffi supports sysv calling convention');
14		}
15		// 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 ,'libffi partially supports vectorcall calling convention');
18		}
19
20		EXTENSION('ffi', 'ffi.c ffi_parser.c', null, '/DZEND_ENABLE_STATIC_TSRMLS_CACHE=1');
21	} else {
22		WARNING('ffi not enabled, headers or libraries not found');
23	}
24}
25