ffi 1.9.3-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of ffi might be problematic. Click here for more details.
- data/COPYING +49 -0
- data/LICENSE +24 -0
- data/README.md +109 -0
- data/Rakefile +220 -0
- data/ext/ffi_c/AbstractMemory.c +1032 -0
- data/ext/ffi_c/AbstractMemory.h +175 -0
- data/ext/ffi_c/ArrayType.c +162 -0
- data/ext/ffi_c/ArrayType.h +59 -0
- data/ext/ffi_c/Buffer.c +365 -0
- data/ext/ffi_c/Call.c +465 -0
- data/ext/ffi_c/Call.h +93 -0
- data/ext/ffi_c/ClosurePool.c +283 -0
- data/ext/ffi_c/ClosurePool.h +57 -0
- data/ext/ffi_c/DataConverter.c +91 -0
- data/ext/ffi_c/DynamicLibrary.c +333 -0
- data/ext/ffi_c/DynamicLibrary.h +49 -0
- data/ext/ffi_c/Function.c +999 -0
- data/ext/ffi_c/Function.h +87 -0
- data/ext/ffi_c/FunctionInfo.c +271 -0
- data/ext/ffi_c/LastError.c +184 -0
- data/ext/ffi_c/LastError.h +47 -0
- data/ext/ffi_c/LongDouble.c +63 -0
- data/ext/ffi_c/LongDouble.h +51 -0
- data/ext/ffi_c/MappedType.c +168 -0
- data/ext/ffi_c/MappedType.h +59 -0
- data/ext/ffi_c/MemoryPointer.c +197 -0
- data/ext/ffi_c/MemoryPointer.h +53 -0
- data/ext/ffi_c/MethodHandle.c +360 -0
- data/ext/ffi_c/MethodHandle.h +55 -0
- data/ext/ffi_c/Platform.c +121 -0
- data/ext/ffi_c/Platform.h +45 -0
- data/ext/ffi_c/Pointer.c +508 -0
- data/ext/ffi_c/Pointer.h +63 -0
- data/ext/ffi_c/Struct.c +828 -0
- data/ext/ffi_c/Struct.h +106 -0
- data/ext/ffi_c/StructByReference.c +190 -0
- data/ext/ffi_c/StructByReference.h +50 -0
- data/ext/ffi_c/StructByValue.c +150 -0
- data/ext/ffi_c/StructByValue.h +55 -0
- data/ext/ffi_c/StructLayout.c +698 -0
- data/ext/ffi_c/Thread.c +352 -0
- data/ext/ffi_c/Thread.h +95 -0
- data/ext/ffi_c/Type.c +397 -0
- data/ext/ffi_c/Type.h +62 -0
- data/ext/ffi_c/Types.c +139 -0
- data/ext/ffi_c/Types.h +89 -0
- data/ext/ffi_c/Variadic.c +276 -0
- data/ext/ffi_c/compat.h +83 -0
- data/ext/ffi_c/extconf.rb +64 -0
- data/ext/ffi_c/ffi.c +98 -0
- data/ext/ffi_c/libffi.bsd.mk +34 -0
- data/ext/ffi_c/libffi.darwin.mk +95 -0
- data/ext/ffi_c/libffi.gnu.mk +31 -0
- data/ext/ffi_c/libffi.mk +13 -0
- data/ext/ffi_c/libffi.vc.mk +26 -0
- data/ext/ffi_c/libffi.vc64.mk +26 -0
- data/ext/ffi_c/libffi/ChangeLog +4600 -0
- data/ext/ffi_c/libffi/ChangeLog.libffi +584 -0
- data/ext/ffi_c/libffi/ChangeLog.libgcj +40 -0
- data/ext/ffi_c/libffi/ChangeLog.v1 +764 -0
- data/ext/ffi_c/libffi/LICENSE +21 -0
- data/ext/ffi_c/libffi/Makefile.am +196 -0
- data/ext/ffi_c/libffi/Makefile.in +1820 -0
- data/ext/ffi_c/libffi/Makefile.vc +141 -0
- data/ext/ffi_c/libffi/Makefile.vc64 +141 -0
- data/ext/ffi_c/libffi/README +342 -0
- data/ext/ffi_c/libffi/acinclude.m4 +92 -0
- data/ext/ffi_c/libffi/aclocal.m4 +1873 -0
- data/ext/ffi_c/libffi/build-ios.sh +67 -0
- data/ext/ffi_c/libffi/compile +143 -0
- data/ext/ffi_c/libffi/config.guess +1501 -0
- data/ext/ffi_c/libffi/config.sub +1705 -0
- data/ext/ffi_c/libffi/configure +17191 -0
- data/ext/ffi_c/libffi/configure.ac +496 -0
- data/ext/ffi_c/libffi/configure.host +11 -0
- data/ext/ffi_c/libffi/depcomp +630 -0
- data/ext/ffi_c/libffi/doc/libffi.info +593 -0
- data/ext/ffi_c/libffi/doc/libffi.texi +600 -0
- data/ext/ffi_c/libffi/doc/stamp-vti +4 -0
- data/ext/ffi_c/libffi/doc/version.texi +4 -0
- data/ext/ffi_c/libffi/fficonfig.h.in +199 -0
- data/ext/ffi_c/libffi/fficonfig.hw +57 -0
- data/ext/ffi_c/libffi/include/Makefile.am +9 -0
- data/ext/ffi_c/libffi/include/Makefile.in +487 -0
- data/ext/ffi_c/libffi/include/ffi.h.in +427 -0
- data/ext/ffi_c/libffi/include/ffi.h.vc +427 -0
- data/ext/ffi_c/libffi/include/ffi.h.vc64 +427 -0
- data/ext/ffi_c/libffi/include/ffi_common.h +126 -0
- data/ext/ffi_c/libffi/install-sh +520 -0
- data/ext/ffi_c/libffi/libffi.pc.in +10 -0
- data/ext/ffi_c/libffi/libtool-version +29 -0
- data/ext/ffi_c/libffi/ltmain.sh +9636 -0
- data/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 +176 -0
- data/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 +195 -0
- data/ext/ffi_c/libffi/m4/ax_check_compiler_flags.m4 +76 -0
- data/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 +63 -0
- data/ext/ffi_c/libffi/m4/ax_configure_args.m4 +70 -0
- data/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 +300 -0
- data/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 +215 -0
- data/ext/ffi_c/libffi/m4/ax_gcc_x86_cpuid.m4 +79 -0
- data/ext/ffi_c/libffi/m4/libtool.m4 +7831 -0
- data/ext/ffi_c/libffi/m4/ltoptions.m4 +369 -0
- data/ext/ffi_c/libffi/m4/ltsugar.m4 +123 -0
- data/ext/ffi_c/libffi/m4/ltversion.m4 +23 -0
- data/ext/ffi_c/libffi/m4/lt~obsolete.m4 +98 -0
- data/ext/ffi_c/libffi/man/Makefile.am +8 -0
- data/ext/ffi_c/libffi/man/Makefile.in +466 -0
- data/ext/ffi_c/libffi/man/ffi.3 +31 -0
- data/ext/ffi_c/libffi/man/ffi_call.3 +103 -0
- data/ext/ffi_c/libffi/man/ffi_prep_cif.3 +66 -0
- data/ext/ffi_c/libffi/mdate-sh +201 -0
- data/ext/ffi_c/libffi/missing +376 -0
- data/ext/ffi_c/libffi/msvcc.sh +197 -0
- data/ext/ffi_c/libffi/src/alpha/ffi.c +284 -0
- data/ext/ffi_c/libffi/src/alpha/ffitarget.h +48 -0
- data/ext/ffi_c/libffi/src/alpha/osf.S +387 -0
- data/ext/ffi_c/libffi/src/arm/ffi.c +728 -0
- data/ext/ffi_c/libffi/src/arm/ffitarget.h +65 -0
- data/ext/ffi_c/libffi/src/arm/gentramp.sh +118 -0
- data/ext/ffi_c/libffi/src/arm/sysv.S +497 -0
- data/ext/ffi_c/libffi/src/arm/trampoline.S +4450 -0
- data/ext/ffi_c/libffi/src/avr32/ffi.c +423 -0
- data/ext/ffi_c/libffi/src/avr32/ffitarget.h +50 -0
- data/ext/ffi_c/libffi/src/avr32/sysv.S +208 -0
- data/ext/ffi_c/libffi/src/closures.c +615 -0
- data/ext/ffi_c/libffi/src/cris/ffi.c +383 -0
- data/ext/ffi_c/libffi/src/cris/ffitarget.h +51 -0
- data/ext/ffi_c/libffi/src/cris/sysv.S +215 -0
- data/ext/ffi_c/libffi/src/debug.c +59 -0
- data/ext/ffi_c/libffi/src/dlmalloc.c +5161 -0
- data/ext/ffi_c/libffi/src/frv/eabi.S +128 -0
- data/ext/ffi_c/libffi/src/frv/ffi.c +292 -0
- data/ext/ffi_c/libffi/src/frv/ffitarget.h +57 -0
- data/ext/ffi_c/libffi/src/ia64/ffi.c +582 -0
- data/ext/ffi_c/libffi/src/ia64/ffitarget.h +50 -0
- data/ext/ffi_c/libffi/src/ia64/ia64_flags.h +40 -0
- data/ext/ffi_c/libffi/src/ia64/unix.S +560 -0
- data/ext/ffi_c/libffi/src/java_raw_api.c +356 -0
- data/ext/ffi_c/libffi/src/m32r/ffi.c +232 -0
- data/ext/ffi_c/libffi/src/m32r/ffitarget.h +48 -0
- data/ext/ffi_c/libffi/src/m32r/sysv.S +121 -0
- data/ext/ffi_c/libffi/src/m68k/ffi.c +288 -0
- data/ext/ffi_c/libffi/src/m68k/ffitarget.h +49 -0
- data/ext/ffi_c/libffi/src/m68k/sysv.S +270 -0
- data/ext/ffi_c/libffi/src/mips/ffi.c +1036 -0
- data/ext/ffi_c/libffi/src/mips/ffitarget.h +242 -0
- data/ext/ffi_c/libffi/src/mips/n32.S +591 -0
- data/ext/ffi_c/libffi/src/mips/o32.S +381 -0
- data/ext/ffi_c/libffi/src/moxie/eabi.S +128 -0
- data/ext/ffi_c/libffi/src/moxie/ffi.c +276 -0
- data/ext/ffi_c/libffi/src/pa/ffi.c +719 -0
- data/ext/ffi_c/libffi/src/pa/ffitarget.h +78 -0
- data/ext/ffi_c/libffi/src/pa/hpux32.S +368 -0
- data/ext/ffi_c/libffi/src/pa/linux.S +357 -0
- data/ext/ffi_c/libffi/src/powerpc/aix.S +328 -0
- data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +445 -0
- data/ext/ffi_c/libffi/src/powerpc/asm.h +125 -0
- data/ext/ffi_c/libffi/src/powerpc/darwin.S +383 -0
- data/ext/ffi_c/libffi/src/powerpc/darwin_closure.S +575 -0
- data/ext/ffi_c/libffi/src/powerpc/ffi.c +1448 -0
- data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +1359 -0
- data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +139 -0
- data/ext/ffi_c/libffi/src/powerpc/linux64.S +187 -0
- data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +236 -0
- data/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +327 -0
- data/ext/ffi_c/libffi/src/powerpc/sysv.S +219 -0
- data/ext/ffi_c/libffi/src/prep_cif.c +177 -0
- data/ext/ffi_c/libffi/src/raw_api.c +254 -0
- data/ext/ffi_c/libffi/src/s390/ffi.c +780 -0
- data/ext/ffi_c/libffi/src/s390/ffitarget.h +62 -0
- data/ext/ffi_c/libffi/src/s390/sysv.S +434 -0
- data/ext/ffi_c/libffi/src/sh/ffi.c +716 -0
- data/ext/ffi_c/libffi/src/sh/ffitarget.h +49 -0
- data/ext/ffi_c/libffi/src/sh/sysv.S +850 -0
- data/ext/ffi_c/libffi/src/sh64/ffi.c +468 -0
- data/ext/ffi_c/libffi/src/sh64/ffitarget.h +53 -0
- data/ext/ffi_c/libffi/src/sh64/sysv.S +539 -0
- data/ext/ffi_c/libffi/src/sparc/ffi.c +669 -0
- data/ext/ffi_c/libffi/src/sparc/ffitarget.h +68 -0
- data/ext/ffi_c/libffi/src/sparc/v8.S +313 -0
- data/ext/ffi_c/libffi/src/sparc/v9.S +307 -0
- data/ext/ffi_c/libffi/src/types.c +77 -0
- data/ext/ffi_c/libffi/src/x86/darwin.S +444 -0
- data/ext/ffi_c/libffi/src/x86/darwin64.S +416 -0
- data/ext/ffi_c/libffi/src/x86/ffi.c +644 -0
- data/ext/ffi_c/libffi/src/x86/ffi64.c +635 -0
- data/ext/ffi_c/libffi/src/x86/ffitarget.h +121 -0
- data/ext/ffi_c/libffi/src/x86/freebsd.S +458 -0
- data/ext/ffi_c/libffi/src/x86/sysv.S +468 -0
- data/ext/ffi_c/libffi/src/x86/unix64.S +426 -0
- data/ext/ffi_c/libffi/src/x86/win32.S +1065 -0
- data/ext/ffi_c/libffi/src/x86/win64.S +468 -0
- data/ext/ffi_c/libffi/testsuite/Makefile.am +80 -0
- data/ext/ffi_c/libffi/testsuite/Makefile.in +500 -0
- data/ext/ffi_c/libffi/testsuite/config/default.exp +1 -0
- data/ext/ffi_c/libffi/testsuite/lib/libffi-dg.exp +300 -0
- data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +350 -0
- data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +263 -0
- data/ext/ffi_c/libffi/testsuite/lib/wrapper.exp +45 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +32 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn0.c +89 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn1.c +81 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn2.c +81 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn3.c +82 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn4.c +89 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn5.c +92 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn6.c +90 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_loc_fn0.c +95 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_stdcall.c +64 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_12byte.c +94 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_16byte.c +95 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_18byte.c +96 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_19byte.c +102 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_1_1byte.c +89 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte.c +91 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte1.c +93 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_24byte.c +113 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_2byte.c +90 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c +95 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c +90 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c +90 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c +98 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c +90 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c +109 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5byte.c +98 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_64byte.c +124 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6_1_byte.c +113 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6byte.c +99 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7_1_byte.c +117 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7byte.c +97 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_8byte.c +88 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte1.c +90 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte2.c +91 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_double.c +93 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_float.c +91 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble.c +92 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split.c +134 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c +117 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_pointer.c +95 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint16.c +91 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint32.c +91 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c +92 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint16.c +91 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint32.c +91 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c +93 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_dbls_struct.c +66 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double.c +43 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double_va.c +60 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_float.c +42 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble.c +105 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble_va.c +60 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_schar.c +74 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshort.c +74 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshortchar.c +86 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_uchar.c +91 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushort.c +74 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushortchar.c +86 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer.c +74 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer_stack.c +140 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_schar.c +44 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_sint.c +42 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_sshort.c +42 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar.c +42 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint.c +43 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c +47 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort.c +43 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_abi.c +36 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +26 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +153 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/float.c +59 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +58 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +58 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +72 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/float4.c +62 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/huge_struct.c +342 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/many.c +69 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/many_win32.c +63 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +53 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct.c +152 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct1.c +161 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c +133 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct2.c +110 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct3.c +111 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct4.c +111 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct5.c +112 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct6.c +131 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct7.c +111 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct8.c +131 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct9.c +131 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/problem1.c +90 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/promotion.c +59 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/pyobjc-tc.c +114 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +35 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl1.c +43 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl2.c +42 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl.c +35 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl1.c +36 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl2.c +49 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl3.c +42 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +34 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll.c +41 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c +43 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +36 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c +38 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +38 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c +38 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large.c +145 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large2.c +148 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium.c +124 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium2.c +125 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +44 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/strlen_win32.c +44 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +65 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +67 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +59 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +63 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +65 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +64 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +74 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +80 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +67 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/testclosure.c +70 -0
- data/ext/ffi_c/libffi/testsuite/libffi.special/ffitestcxx.h +96 -0
- data/ext/ffi_c/libffi/testsuite/libffi.special/special.exp +35 -0
- data/ext/ffi_c/libffi/testsuite/libffi.special/unwindtest.cc +124 -0
- data/ext/ffi_c/libffi/testsuite/libffi.special/unwindtest_ffi_call.cc +53 -0
- data/ext/ffi_c/libffi/texinfo.tex +7210 -0
- data/ext/ffi_c/rbffi.h +57 -0
- data/ext/ffi_c/rbffi_endian.h +59 -0
- data/ext/ffi_c/win32/stdbool.h +8 -0
- data/ext/ffi_c/win32/stdint.h +201 -0
- data/ffi.gemspec +22 -0
- data/gen/Rakefile +30 -0
- data/lib/ffi.rb +28 -0
- data/lib/ffi/autopointer.rb +194 -0
- data/lib/ffi/buffer.rb +4 -0
- data/lib/ffi/callback.rb +4 -0
- data/lib/ffi/enum.rb +173 -0
- data/lib/ffi/errno.rb +43 -0
- data/lib/ffi/ffi.rb +44 -0
- data/lib/ffi/io.rb +62 -0
- data/lib/ffi/library.rb +499 -0
- data/lib/ffi/managedstruct.rb +84 -0
- data/lib/ffi/memorypointer.rb +1 -0
- data/lib/ffi/platform.rb +148 -0
- data/lib/ffi/platform/arm-linux/types.conf +104 -0
- data/lib/ffi/platform/i386-cygwin/types.conf +3 -0
- data/lib/ffi/platform/i386-darwin/types.conf +100 -0
- data/lib/ffi/platform/i386-freebsd/types.conf +152 -0
- data/lib/ffi/platform/i386-gnu/types.conf +107 -0
- data/lib/ffi/platform/i386-linux/types.conf +103 -0
- data/lib/ffi/platform/i386-netbsd/types.conf +126 -0
- data/lib/ffi/platform/i386-openbsd/types.conf +128 -0
- data/lib/ffi/platform/i386-solaris/types.conf +122 -0
- data/lib/ffi/platform/i386-windows/types.conf +105 -0
- data/lib/ffi/platform/ia64-linux/types.conf +104 -0
- data/lib/ffi/platform/mips-linux/types.conf +102 -0
- data/lib/ffi/platform/mipsel-linux/types.conf +102 -0
- data/lib/ffi/platform/powerpc-aix/types.conf +180 -0
- data/lib/ffi/platform/powerpc-darwin/types.conf +100 -0
- data/lib/ffi/platform/powerpc-linux/types.conf +100 -0
- data/lib/ffi/platform/s390-linux/types.conf +102 -0
- data/lib/ffi/platform/s390x-linux/types.conf +102 -0
- data/lib/ffi/platform/sparc-linux/types.conf +102 -0
- data/lib/ffi/platform/sparc-solaris/types.conf +128 -0
- data/lib/ffi/platform/sparcv9-solaris/types.conf +128 -0
- data/lib/ffi/platform/x86_64-cygwin/types.conf +3 -0
- data/lib/ffi/platform/x86_64-darwin/types.conf +100 -0
- data/lib/ffi/platform/x86_64-freebsd/types.conf +128 -0
- data/lib/ffi/platform/x86_64-linux/types.conf +102 -0
- data/lib/ffi/platform/x86_64-netbsd/types.conf +126 -0
- data/lib/ffi/platform/x86_64-openbsd/types.conf +128 -0
- data/lib/ffi/platform/x86_64-solaris/types.conf +122 -0
- data/lib/ffi/platform/x86_64-windows/types.conf +27 -0
- data/lib/ffi/pointer.rb +134 -0
- data/lib/ffi/struct.rb +367 -0
- data/lib/ffi/struct_layout_builder.rb +222 -0
- data/lib/ffi/tools/const_generator.rb +229 -0
- data/lib/ffi/tools/generator.rb +60 -0
- data/lib/ffi/tools/generator_task.rb +36 -0
- data/lib/ffi/tools/struct_generator.rb +194 -0
- data/lib/ffi/tools/types_generator.rb +135 -0
- data/lib/ffi/types.rb +190 -0
- data/lib/ffi/union.rb +43 -0
- data/lib/ffi/variadic.rb +78 -0
- data/lib/ffi/version.rb +4 -0
- data/lib/ffi_c.so +0 -0
- data/libtest/Benchmark.c +52 -0
- data/libtest/BoolTest.c +34 -0
- data/libtest/BufferTest.c +31 -0
- data/libtest/ClosureTest.c +190 -0
- data/libtest/EnumTest.c +34 -0
- data/libtest/FunctionTest.c +58 -0
- data/libtest/GNUmakefile +149 -0
- data/libtest/GlobalVariable.c +62 -0
- data/libtest/LastErrorTest.c +21 -0
- data/libtest/NumberTest.c +132 -0
- data/libtest/PointerTest.c +63 -0
- data/libtest/ReferenceTest.c +23 -0
- data/libtest/StringTest.c +34 -0
- data/libtest/StructTest.c +243 -0
- data/libtest/UnionTest.c +43 -0
- data/libtest/VariadicTest.c +62 -0
- data/spec/ffi/async_callback_spec.rb +35 -0
- data/spec/ffi/bool_spec.rb +29 -0
- data/spec/ffi/buffer_spec.rb +251 -0
- data/spec/ffi/callback_spec.rb +667 -0
- data/spec/ffi/custom_param_type.rb +36 -0
- data/spec/ffi/custom_type_spec.rb +74 -0
- data/spec/ffi/dup_spec.rb +54 -0
- data/spec/ffi/enum_spec.rb +220 -0
- data/spec/ffi/errno_spec.rb +18 -0
- data/spec/ffi/ffi_spec.rb +29 -0
- data/spec/ffi/function_spec.rb +76 -0
- data/spec/ffi/library_spec.rb +216 -0
- data/spec/ffi/long_double.rb +30 -0
- data/spec/ffi/managed_struct_spec.rb +57 -0
- data/spec/ffi/number_spec.rb +236 -0
- data/spec/ffi/pointer_spec.rb +265 -0
- data/spec/ffi/rbx/attach_function_spec.rb +28 -0
- data/spec/ffi/rbx/memory_pointer_spec.rb +123 -0
- data/spec/ffi/rbx/spec_helper.rb +1 -0
- data/spec/ffi/rbx/struct_spec.rb +13 -0
- data/spec/ffi/spec_helper.rb +33 -0
- data/spec/ffi/string_spec.rb +108 -0
- data/spec/ffi/strptr_spec.rb +50 -0
- data/spec/ffi/struct_by_ref_spec.rb +43 -0
- data/spec/ffi/struct_callback_spec.rb +69 -0
- data/spec/ffi/struct_initialize_spec.rb +35 -0
- data/spec/ffi/struct_packed_spec.rb +51 -0
- data/spec/ffi/struct_spec.rb +748 -0
- data/spec/ffi/typedef_spec.rb +78 -0
- data/spec/ffi/union_spec.rb +65 -0
- data/spec/ffi/variadic_spec.rb +92 -0
- data/spec/spec.opts +4 -0
- metadata +562 -0
data/ext/ffi_c/compat.h
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (c) 2008, 2009, Wayne Meissner
|
3
|
+
*
|
4
|
+
* Copyright (c) 2008-2013, Ruby FFI project contributors
|
5
|
+
* All rights reserved.
|
6
|
+
*
|
7
|
+
* Redistribution and use in source and binary forms, with or without
|
8
|
+
* modification, are permitted provided that the following conditions are met:
|
9
|
+
* * Redistributions of source code must retain the above copyright
|
10
|
+
* notice, this list of conditions and the following disclaimer.
|
11
|
+
* * Redistributions in binary form must reproduce the above copyright
|
12
|
+
* notice, this list of conditions and the following disclaimer in the
|
13
|
+
* documentation and/or other materials provided with the distribution.
|
14
|
+
* * Neither the name of the Ruby FFI project nor the
|
15
|
+
* names of its contributors may be used to endorse or promote products
|
16
|
+
* derived from this software without specific prior written permission.
|
17
|
+
*
|
18
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
19
|
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
20
|
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
21
|
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
22
|
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
23
|
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
24
|
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
25
|
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
26
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
27
|
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
28
|
+
*/
|
29
|
+
|
30
|
+
#ifndef RBFFI_COMPAT_H
|
31
|
+
#define RBFFI_COMPAT_H
|
32
|
+
|
33
|
+
#include <ruby.h>
|
34
|
+
|
35
|
+
#ifndef RARRAY_LEN
|
36
|
+
# define RARRAY_LEN(ary) RARRAY(ary)->len
|
37
|
+
#endif
|
38
|
+
|
39
|
+
#ifndef RARRAY_PTR
|
40
|
+
# define RARRAY_PTR(ary) RARRAY(ary)->ptr
|
41
|
+
#endif
|
42
|
+
|
43
|
+
#ifndef RSTRING_LEN
|
44
|
+
# define RSTRING_LEN(s) RSTRING(s)->len
|
45
|
+
#endif
|
46
|
+
|
47
|
+
#ifndef RSTRING_PTR
|
48
|
+
# define RSTRING_PTR(s) RSTRING(s)->ptr
|
49
|
+
#endif
|
50
|
+
|
51
|
+
#ifndef NUM2ULL
|
52
|
+
# define NUM2ULL(x) rb_num2ull((VALUE)x)
|
53
|
+
#endif
|
54
|
+
|
55
|
+
#ifndef roundup
|
56
|
+
# define roundup(x, y) ((((x)+((y)-1))/(y))*(y))
|
57
|
+
#endif
|
58
|
+
|
59
|
+
#ifdef __GNUC__
|
60
|
+
# define likely(x) __builtin_expect((x), 1)
|
61
|
+
# define unlikely(x) __builtin_expect((x), 0)
|
62
|
+
#else
|
63
|
+
# define likely(x) (x)
|
64
|
+
# define unlikely(x) (x)
|
65
|
+
#endif
|
66
|
+
|
67
|
+
#ifndef MAX
|
68
|
+
# define MAX(a, b) ((a) < (b) ? (b) : (a))
|
69
|
+
#endif
|
70
|
+
#ifndef MIN
|
71
|
+
# define MIN(a, b) ((a) < (b) ? (a) : (b))
|
72
|
+
#endif
|
73
|
+
|
74
|
+
#ifndef RB_GC_GUARD
|
75
|
+
# define RB_GC_GUARD(x) (x)
|
76
|
+
#endif
|
77
|
+
|
78
|
+
#ifndef RB_GC_GUARD_PTR
|
79
|
+
# define RB_GC_GUARD_PTR(x) (x)
|
80
|
+
#endif
|
81
|
+
|
82
|
+
#endif /* RBFFI_COMPAT_H */
|
83
|
+
|
@@ -0,0 +1,64 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
if !defined?(RUBY_ENGINE) || RUBY_ENGINE == 'ruby' || RUBY_ENGINE == 'rbx'
|
4
|
+
require 'mkmf'
|
5
|
+
require 'rbconfig'
|
6
|
+
dir_config("ffi_c")
|
7
|
+
|
8
|
+
# recent versions of ruby add restrictive ansi and warning flags on a whim - kill them all
|
9
|
+
$warnflags = ''
|
10
|
+
$CFLAGS.gsub!(/[\s+]-ansi/, '')
|
11
|
+
$CFLAGS.gsub!(/[\s+]-std=[^\s]+/, '')
|
12
|
+
# solaris needs -c99 for <stdbool.h>
|
13
|
+
$CFLAGS << " -std=c99" if RbConfig::CONFIG['host_os'] =~ /solaris/
|
14
|
+
|
15
|
+
if ENV['RUBY_CC_VERSION'].nil? && (pkg_config("libffi") ||
|
16
|
+
have_header("ffi.h") ||
|
17
|
+
find_header("ffi.h", "/usr/local/include", "/usr/include/ffi"))
|
18
|
+
|
19
|
+
# We need at least ffi_call and ffi_prep_closure
|
20
|
+
libffi_ok = have_library("ffi", "ffi_call", [ "ffi.h" ]) ||
|
21
|
+
have_library("libffi", "ffi_call", [ "ffi.h" ])
|
22
|
+
libffi_ok &&= have_func("ffi_prep_closure")
|
23
|
+
|
24
|
+
# Check if the raw api is available.
|
25
|
+
$defs << "-DHAVE_RAW_API" if have_func("ffi_raw_call") && have_func("ffi_prep_raw_closure")
|
26
|
+
end
|
27
|
+
|
28
|
+
have_func('rb_thread_blocking_region')
|
29
|
+
have_func('rb_thread_call_with_gvl')
|
30
|
+
have_func('rb_thread_call_without_gvl')
|
31
|
+
have_func('ffi_prep_cif_var')
|
32
|
+
|
33
|
+
$defs << "-DHAVE_EXTCONF_H" if $defs.empty? # needed so create_header works
|
34
|
+
$defs << "-DUSE_INTERNAL_LIBFFI" unless libffi_ok
|
35
|
+
$defs << "-DRUBY_1_9" if RUBY_VERSION >= "1.9.0"
|
36
|
+
|
37
|
+
create_header
|
38
|
+
|
39
|
+
$LOCAL_LIBS << " ./libffi/.libs/libffi_convenience.lib" if RbConfig::CONFIG['host_os'] =~ /mswin/
|
40
|
+
|
41
|
+
create_makefile("ffi_c")
|
42
|
+
unless libffi_ok
|
43
|
+
File.open("Makefile", "a") do |mf|
|
44
|
+
mf.puts "LIBFFI_HOST=--host=#{RbConfig::CONFIG['host_alias']}" if RbConfig::CONFIG.has_key?("host_alias")
|
45
|
+
if RbConfig::CONFIG['host_os'].downcase =~ /darwin/
|
46
|
+
mf.puts "include ${srcdir}/libffi.darwin.mk"
|
47
|
+
elsif RbConfig::CONFIG['host_os'].downcase =~ /bsd/
|
48
|
+
mf.puts '.include "${srcdir}/libffi.bsd.mk"'
|
49
|
+
elsif RbConfig::CONFIG['host_os'].downcase =~ /mswin64/
|
50
|
+
mf.puts '!include $(srcdir)/libffi.vc64.mk'
|
51
|
+
elsif RbConfig::CONFIG['host_os'].downcase =~ /mswin32/
|
52
|
+
mf.puts '!include $(srcdir)/libffi.vc.mk'
|
53
|
+
else
|
54
|
+
mf.puts "include ${srcdir}/libffi.mk"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
else
|
60
|
+
File.open("Makefile", "w") do |mf|
|
61
|
+
mf.puts "# Dummy makefile for non-mri rubies"
|
62
|
+
mf.puts "all install::\n"
|
63
|
+
end
|
64
|
+
end
|
data/ext/ffi_c/ffi.c
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (c) 2008, 2009, Wayne Meissner
|
3
|
+
* Copyright (C) 2009 Luc Heinrich <luc@honk-honk.com>
|
4
|
+
*
|
5
|
+
* Copyright (c) 2008-2013, Ruby FFI project contributors
|
6
|
+
* All rights reserved.
|
7
|
+
*
|
8
|
+
* Redistribution and use in source and binary forms, with or without
|
9
|
+
* modification, are permitted provided that the following conditions are met:
|
10
|
+
* * Redistributions of source code must retain the above copyright
|
11
|
+
* notice, this list of conditions and the following disclaimer.
|
12
|
+
* * Redistributions in binary form must reproduce the above copyright
|
13
|
+
* notice, this list of conditions and the following disclaimer in the
|
14
|
+
* documentation and/or other materials provided with the distribution.
|
15
|
+
* * Neither the name of the Ruby FFI project nor the
|
16
|
+
* names of its contributors may be used to endorse or promote products
|
17
|
+
* derived from this software without specific prior written permission.
|
18
|
+
*
|
19
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
20
|
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
21
|
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
22
|
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
23
|
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
24
|
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
25
|
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
26
|
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
27
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
28
|
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
29
|
+
*/
|
30
|
+
|
31
|
+
#include <sys/types.h>
|
32
|
+
#include <stdio.h>
|
33
|
+
#include <ruby.h>
|
34
|
+
|
35
|
+
#include <ffi.h>
|
36
|
+
|
37
|
+
#include "rbffi.h"
|
38
|
+
#include "AbstractMemory.h"
|
39
|
+
#include "Pointer.h"
|
40
|
+
#include "MemoryPointer.h"
|
41
|
+
#include "Struct.h"
|
42
|
+
#include "StructByValue.h"
|
43
|
+
#include "StructByReference.h"
|
44
|
+
#include "DynamicLibrary.h"
|
45
|
+
#include "Platform.h"
|
46
|
+
#include "Types.h"
|
47
|
+
#include "LastError.h"
|
48
|
+
#include "Function.h"
|
49
|
+
#include "ClosurePool.h"
|
50
|
+
#include "MethodHandle.h"
|
51
|
+
#include "Call.h"
|
52
|
+
#include "ArrayType.h"
|
53
|
+
#include "MappedType.h"
|
54
|
+
|
55
|
+
void Init_ffi_c(void);
|
56
|
+
|
57
|
+
VALUE rbffi_FFIModule = Qnil;
|
58
|
+
|
59
|
+
static VALUE moduleFFI = Qnil;
|
60
|
+
|
61
|
+
void
|
62
|
+
Init_ffi_c(void)
|
63
|
+
{
|
64
|
+
/*
|
65
|
+
* Document-module: FFI
|
66
|
+
*
|
67
|
+
* This module embbed type constants from {FFI::NativeType}.
|
68
|
+
*/
|
69
|
+
rbffi_FFIModule = moduleFFI = rb_define_module("FFI");
|
70
|
+
rb_global_variable(&rbffi_FFIModule);
|
71
|
+
|
72
|
+
rbffi_Thread_Init(rbffi_FFIModule);
|
73
|
+
|
74
|
+
/* FFI::Type needs to be initialized before most other classes */
|
75
|
+
rbffi_Type_Init(moduleFFI);
|
76
|
+
|
77
|
+
rbffi_DataConverter_Init(moduleFFI);
|
78
|
+
|
79
|
+
rbffi_ArrayType_Init(moduleFFI);
|
80
|
+
rbffi_LastError_Init(moduleFFI);
|
81
|
+
rbffi_Call_Init(moduleFFI);
|
82
|
+
rbffi_ClosurePool_Init(moduleFFI);
|
83
|
+
rbffi_MethodHandle_Init(moduleFFI);
|
84
|
+
rbffi_Platform_Init(moduleFFI);
|
85
|
+
rbffi_AbstractMemory_Init(moduleFFI);
|
86
|
+
rbffi_Pointer_Init(moduleFFI);
|
87
|
+
rbffi_Function_Init(moduleFFI);
|
88
|
+
rbffi_MemoryPointer_Init(moduleFFI);
|
89
|
+
rbffi_Buffer_Init(moduleFFI);
|
90
|
+
rbffi_StructByValue_Init(moduleFFI);
|
91
|
+
rbffi_StructByReference_Init(moduleFFI);
|
92
|
+
rbffi_Struct_Init(moduleFFI);
|
93
|
+
rbffi_DynamicLibrary_Init(moduleFFI);
|
94
|
+
rbffi_Variadic_Init(moduleFFI);
|
95
|
+
rbffi_Types_Init(moduleFFI);
|
96
|
+
rbffi_MappedType_Init(moduleFFI);
|
97
|
+
}
|
98
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# -*- makefile -*-
|
2
|
+
#
|
3
|
+
# Makefile for BSD systems
|
4
|
+
#
|
5
|
+
|
6
|
+
INCFLAGS += -I${LIBFFI_BUILD_DIR}/include
|
7
|
+
LOCAL_LIBS += ${LIBFFI} -lpthread
|
8
|
+
|
9
|
+
LIBFFI_CFLAGS = ${FFI_MMAP_EXEC} -pthread
|
10
|
+
LIBFFI_BUILD_DIR = ${.CURDIR}/libffi-${arch}
|
11
|
+
|
12
|
+
.if ${srcdir} == "."
|
13
|
+
LIBFFI_SRC_DIR := ${.CURDIR}/libffi
|
14
|
+
.else
|
15
|
+
LIBFFI_SRC_DIR := ${srcdir}/libffi
|
16
|
+
.endif
|
17
|
+
|
18
|
+
|
19
|
+
LIBFFI = ${LIBFFI_BUILD_DIR}/.libs/libffi_convenience.a
|
20
|
+
LIBFFI_CONFIGURE = ${LIBFFI_SRC_DIR}/configure --disable-static \
|
21
|
+
--with-pic=yes --disable-dependency-tracking
|
22
|
+
|
23
|
+
$(OBJS): ${LIBFFI}
|
24
|
+
|
25
|
+
$(LIBFFI):
|
26
|
+
@mkdir -p ${LIBFFI_BUILD_DIR}
|
27
|
+
@if [ ! -f ${LIBFFI_BUILD_DIR}/Makefile ]; then \
|
28
|
+
echo "Configuring libffi"; \
|
29
|
+
cd ${LIBFFI_BUILD_DIR} && \
|
30
|
+
/usr/bin/env CC="${CC}" LD="${LD}" CFLAGS="${LIBFFI_CFLAGS}" GREP_OPTIONS="" \
|
31
|
+
/bin/sh ${LIBFFI_CONFIGURE} ${LIBFFI_HOST} > /dev/null; \
|
32
|
+
fi
|
33
|
+
@cd ${LIBFFI_BUILD_DIR} && ${MAKE}
|
34
|
+
|
@@ -0,0 +1,95 @@
|
|
1
|
+
# -*- makefile -*-
|
2
|
+
|
3
|
+
include ${srcdir}/libffi.gnu.mk
|
4
|
+
|
5
|
+
CCACHE := $(shell type -p ccache)
|
6
|
+
BUILD_DIR := $(shell pwd)
|
7
|
+
|
8
|
+
INCFLAGS += -I"$(BUILD_DIR)"
|
9
|
+
|
10
|
+
# Work out which arches we need to compile the lib for
|
11
|
+
ARCHES :=
|
12
|
+
ARCHFLAGS ?= $(filter -arch %, $(CFLAGS))
|
13
|
+
|
14
|
+
ifneq ($(findstring -arch ppc,$(ARCHFLAGS)),)
|
15
|
+
ARCHES += ppc
|
16
|
+
endif
|
17
|
+
|
18
|
+
ifneq ($(findstring -arch i386,$(ARCHFLAGS)),)
|
19
|
+
ARCHES += i386
|
20
|
+
endif
|
21
|
+
|
22
|
+
ifneq ($(findstring -arch x86_64,$(ARCHFLAGS)),)
|
23
|
+
ARCHES += x86_64
|
24
|
+
endif
|
25
|
+
|
26
|
+
ifeq ($(strip $(ARCHES)),)
|
27
|
+
LIBFFI_BUILD_DIR = $(BUILD_DIR)/libffi-$(arch)
|
28
|
+
# Just build the one (default) architecture
|
29
|
+
$(LIBFFI):
|
30
|
+
@mkdir -p "$(LIBFFI_BUILD_DIR)" "$(@D)"
|
31
|
+
@if [ ! -f "$(LIBFFI_BUILD_DIR)"/Makefile ]; then \
|
32
|
+
echo "Configuring libffi"; \
|
33
|
+
cd "$(LIBFFI_BUILD_DIR)" && \
|
34
|
+
/usr/bin/env CC="$(CC)" LD="$(LD)" CFLAGS="$(LIBFFI_CFLAGS)" GREP_OPTIONS="" \
|
35
|
+
/bin/sh $(LIBFFI_CONFIGURE) $(LIBFFI_HOST) > /dev/null; \
|
36
|
+
fi
|
37
|
+
cd "$(LIBFFI_BUILD_DIR)" && $(MAKE)
|
38
|
+
|
39
|
+
else
|
40
|
+
LIBTARGETS = $(foreach arch,$(ARCHES),"$(BUILD_DIR)"/libffi-$(arch)/.libs/libffi_convenience.a)
|
41
|
+
|
42
|
+
# Build a fat binary and assemble
|
43
|
+
build_ffi = \
|
44
|
+
mkdir -p "$(BUILD_DIR)"/libffi-$(1); \
|
45
|
+
(if [ ! -f "$(BUILD_DIR)"/libffi-$(1)/Makefile ]; then \
|
46
|
+
echo "Configuring libffi for $(1)"; \
|
47
|
+
cd "$(BUILD_DIR)"/libffi-$(1) && \
|
48
|
+
env CC="$(CCACHE) $(CC)" CFLAGS="-arch $(1) $(LIBFFI_CFLAGS)" LDFLAGS="-arch $(1)" \
|
49
|
+
$(LIBFFI_CONFIGURE) --host=$(1)-apple-darwin > /dev/null; \
|
50
|
+
fi); \
|
51
|
+
env MACOSX_DEPLOYMENT_TARGET=10.4 $(MAKE) -C "$(BUILD_DIR)"/libffi-$(1)
|
52
|
+
|
53
|
+
target_ffi = "$(BUILD_DIR)"/libffi-$(1)/.libs/libffi_convenience.a:; $(call build_ffi,$(1))
|
54
|
+
|
55
|
+
# Work out which arches we need to compile the lib for
|
56
|
+
ifneq ($(findstring ppc,$(ARCHES)),)
|
57
|
+
$(call target_ffi,ppc)
|
58
|
+
endif
|
59
|
+
|
60
|
+
ifneq ($(findstring i386,$(ARCHES)),)
|
61
|
+
$(call target_ffi,i386)
|
62
|
+
endif
|
63
|
+
|
64
|
+
ifneq ($(findstring x86_64,$(ARCHES)),)
|
65
|
+
$(call target_ffi,x86_64)
|
66
|
+
endif
|
67
|
+
|
68
|
+
|
69
|
+
$(LIBFFI): $(LIBTARGETS)
|
70
|
+
# Assemble into a FAT (x86_64, i386, ppc) library
|
71
|
+
@mkdir -p "$(@D)"
|
72
|
+
/usr/bin/libtool -static -o $@ \
|
73
|
+
$(foreach arch, $(ARCHES),"$(BUILD_DIR)"/libffi-$(arch)/.libs/libffi_convenience.a)
|
74
|
+
@mkdir -p "$(LIBFFI_BUILD_DIR)"/include
|
75
|
+
$(RM) "$(LIBFFI_BUILD_DIR)"/include/ffi.h
|
76
|
+
@( \
|
77
|
+
printf "#if defined(__i386__)\n"; \
|
78
|
+
printf "#include \"libffi-i386/include/ffi.h\"\n"; \
|
79
|
+
printf "#elif defined(__x86_64__)\n"; \
|
80
|
+
printf "#include \"libffi-x86_64/include/ffi.h\"\n";\
|
81
|
+
printf "#elif defined(__ppc__)\n"; \
|
82
|
+
printf "#include \"libffi-ppc/include/ffi.h\"\n";\
|
83
|
+
printf "#endif\n";\
|
84
|
+
) > "$(LIBFFI_BUILD_DIR)"/include/ffi.h
|
85
|
+
@( \
|
86
|
+
printf "#if defined(__i386__)\n"; \
|
87
|
+
printf "#include \"libffi-i386/include/ffitarget.h\"\n"; \
|
88
|
+
printf "#elif defined(__x86_64__)\n"; \
|
89
|
+
printf "#include \"libffi-x86_64/include/ffitarget.h\"\n";\
|
90
|
+
printf "#elif defined(__ppc__)\n"; \
|
91
|
+
printf "#include \"libffi-ppc/include/ffitarget.h\"\n";\
|
92
|
+
printf "#endif\n";\
|
93
|
+
) > "$(LIBFFI_BUILD_DIR)"/include/ffitarget.h
|
94
|
+
|
95
|
+
endif
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# -*- makefile -*-
|
2
|
+
#
|
3
|
+
# Common definitions for all systems that use GNU make
|
4
|
+
#
|
5
|
+
|
6
|
+
|
7
|
+
# Tack the extra deps onto the autogenerated variables
|
8
|
+
INCFLAGS += -I"$(LIBFFI_BUILD_DIR)"/include
|
9
|
+
LOCAL_LIBS += $(LIBFFI)
|
10
|
+
BUILD_DIR = $(shell pwd)
|
11
|
+
LIBFFI_CFLAGS = $(FFI_MMAP_EXEC)
|
12
|
+
LIBFFI_BUILD_DIR = $(BUILD_DIR)/libffi-$(arch)
|
13
|
+
|
14
|
+
ifeq ($(srcdir),.)
|
15
|
+
LIBFFI_SRC_DIR := $(shell pwd)/libffi
|
16
|
+
else ifeq ($(srcdir),..)
|
17
|
+
LIBFFI_SRC_DIR := $(shell pwd)/../libffi
|
18
|
+
else
|
19
|
+
LIBFFI_SRC_DIR := $(realpath $(srcdir)/libffi)
|
20
|
+
endif
|
21
|
+
|
22
|
+
LIBFFI = "$(LIBFFI_BUILD_DIR)"/.libs/libffi_convenience.a
|
23
|
+
LIBFFI_CONFIGURE = "$(LIBFFI_SRC_DIR)"/configure --disable-static \
|
24
|
+
--with-pic=yes --disable-dependency-tracking
|
25
|
+
|
26
|
+
$(OBJS): $(LIBFFI)
|
27
|
+
|
28
|
+
#
|
29
|
+
# libffi.mk or libffi.darwin.mk contains rules for building the actual library
|
30
|
+
#
|
31
|
+
|
data/ext/ffi_c/libffi.mk
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# -*- makefile -*-
|
2
|
+
|
3
|
+
include ${srcdir}/libffi.gnu.mk
|
4
|
+
|
5
|
+
$(LIBFFI):
|
6
|
+
@mkdir -p "$(LIBFFI_BUILD_DIR)" "$@(D)"
|
7
|
+
@if [ ! -f "$(LIBFFI_BUILD_DIR)"/Makefile ]; then \
|
8
|
+
echo "Configuring libffi"; \
|
9
|
+
cd "$(LIBFFI_BUILD_DIR)" && \
|
10
|
+
/usr/bin/env CFLAGS="$(LIBFFI_CFLAGS)" GREP_OPTIONS="" \
|
11
|
+
/bin/sh $(LIBFFI_CONFIGURE) $(LIBFFI_HOST) > /dev/null; \
|
12
|
+
fi
|
13
|
+
$(MAKE) -C "$(LIBFFI_BUILD_DIR)"
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- makefile -*-
|
2
|
+
#
|
3
|
+
# Makefile for msvc
|
4
|
+
#
|
5
|
+
|
6
|
+
# Tack the extra deps onto the autogenerated variables
|
7
|
+
INCFLAGS = $(INCFLAGS) -I$(LIBFFI_BUILD_DIR)/include -I$(LIBFFI_BUILD_DIR)/src/x86
|
8
|
+
LOCAL_LIBS = $(LOCAL_LIBS) $(LIBFFI)
|
9
|
+
BUILD_DIR = $(MAKEDIR)
|
10
|
+
LIBFFI_BUILD_DIR = $(BUILD_DIR)/libffi
|
11
|
+
|
12
|
+
!IF "$(srcdir)" == "."
|
13
|
+
LIBFFI_SRC_DIR = $(MAKEDIR)/libffi
|
14
|
+
!ELSE
|
15
|
+
LIBFFI_SRC_DIR = $(srcdir)/libffi
|
16
|
+
!ENDIF
|
17
|
+
|
18
|
+
LIBFFI = $(LIBFFI_BUILD_DIR)/.libs/libffi_convenience.lib
|
19
|
+
|
20
|
+
$(OBJS): $(LIBFFI)
|
21
|
+
|
22
|
+
$(LIBFFI):
|
23
|
+
@$(MAKEDIRS) $(LIBFFI_BUILD_DIR)
|
24
|
+
@cd $(LIBFFI_BUILD_DIR) && $(MAKE) -f Makefile.vc
|
25
|
+
|
26
|
+
|