ffi 1.0.0 → 1.17.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +4 -0
- data/CHANGELOG.md +465 -0
- data/COPYING +49 -0
- data/Gemfile +21 -0
- data/LICENSE +21 -11
- data/LICENSE.SPECS +22 -0
- data/README.md +137 -0
- data/Rakefile +165 -148
- data/ext/ffi_c/AbstractMemory.c +716 -97
- data/ext/ffi_c/AbstractMemory.h +38 -17
- data/ext/ffi_c/ArrayType.c +102 -33
- data/ext/ffi_c/ArrayType.h +20 -18
- data/ext/ffi_c/Buffer.c +229 -54
- data/ext/ffi_c/Call.c +211 -100
- data/ext/ffi_c/Call.h +46 -28
- data/ext/ffi_c/ClosurePool.c +110 -81
- data/ext/ffi_c/ClosurePool.h +31 -1
- data/ext/ffi_c/DynamicLibrary.c +216 -54
- data/ext/ffi_c/DynamicLibrary.h +76 -0
- data/ext/ffi_c/Function.c +527 -164
- data/ext/ffi_c/Function.h +24 -20
- data/ext/ffi_c/FunctionInfo.c +151 -50
- data/ext/ffi_c/LastError.c +112 -28
- data/ext/ffi_c/LastError.h +29 -0
- data/ext/ffi_c/LongDouble.c +65 -0
- data/ext/ffi_c/LongDouble.h +47 -0
- data/ext/ffi_c/MappedType.c +107 -42
- data/ext/ffi_c/MappedType.h +20 -20
- data/ext/ffi_c/MemoryPointer.c +108 -46
- data/ext/ffi_c/MemoryPointer.h +33 -4
- data/ext/ffi_c/MethodHandle.c +71 -67
- data/ext/ffi_c/MethodHandle.h +26 -23
- data/ext/ffi_c/Platform.c +42 -25
- data/ext/ffi_c/Platform.h +32 -3
- data/ext/ffi_c/Pointer.c +324 -51
- data/ext/ffi_c/Pointer.h +29 -18
- data/ext/ffi_c/Struct.c +434 -161
- data/ext/ffi_c/Struct.h +47 -27
- data/ext/ffi_c/StructByValue.c +74 -37
- data/ext/ffi_c/StructByValue.h +20 -18
- data/ext/ffi_c/StructLayout.c +358 -87
- data/ext/ffi_c/Thread.c +129 -0
- data/ext/ffi_c/Thread.h +76 -0
- data/ext/ffi_c/Type.c +241 -76
- data/ext/ffi_c/Type.h +27 -11
- data/ext/ffi_c/Types.c +54 -34
- data/ext/ffi_c/Types.h +24 -24
- data/ext/ffi_c/Variadic.c +151 -55
- data/ext/ffi_c/compat.h +48 -38
- data/ext/ffi_c/extconf.rb +106 -34
- data/ext/ffi_c/ffi.c +35 -26
- data/ext/ffi_c/libffi/.allow-ai-service +0 -0
- data/ext/ffi_c/libffi/.appveyor/site.exp +16 -0
- data/ext/ffi_c/libffi/.appveyor/unix-noexec.exp +7 -0
- data/ext/ffi_c/libffi/.appveyor.yml +84 -0
- data/ext/ffi_c/libffi/.ci/ar-lib +270 -0
- data/ext/ffi_c/libffi/.ci/bfin-sim.exp +58 -0
- data/ext/ffi_c/libffi/.ci/build-cross-in-container.sh +18 -0
- data/ext/ffi_c/libffi/.ci/build-in-container.sh +10 -0
- data/ext/ffi_c/libffi/.ci/build.sh +124 -0
- data/ext/ffi_c/libffi/.ci/compile +351 -0
- data/ext/ffi_c/libffi/.ci/install.sh +78 -0
- data/ext/ffi_c/libffi/.ci/m32r-sim.exp +58 -0
- data/ext/ffi_c/libffi/.ci/moxie-sim.exp +60 -0
- data/ext/ffi_c/libffi/.ci/msvs-detect +1103 -0
- data/ext/ffi_c/libffi/.ci/or1k-sim.exp +58 -0
- data/ext/ffi_c/libffi/.ci/powerpc-eabisim.exp +58 -0
- data/ext/ffi_c/libffi/.ci/site.exp +29 -0
- data/ext/ffi_c/libffi/.ci/wine-sim.exp +55 -0
- data/ext/ffi_c/libffi/.circleci/config.yml +156 -0
- data/ext/ffi_c/libffi/.gitattributes +4 -0
- data/ext/ffi_c/libffi/.github/issue_template.md +10 -0
- data/ext/ffi_c/libffi/.github/workflows/build.yml +479 -0
- data/ext/ffi_c/libffi/.github/workflows/emscripten.yml +172 -0
- data/ext/ffi_c/libffi/.gitignore +46 -0
- data/ext/ffi_c/libffi/{ChangeLog → ChangeLog.old} +6528 -3180
- data/ext/ffi_c/libffi/LICENSE +3 -3
- data/ext/ffi_c/libffi/LICENSE-BUILDTOOLS +353 -0
- data/ext/ffi_c/libffi/Makefile.am +132 -162
- data/ext/ffi_c/libffi/Makefile.in +1339 -1003
- data/ext/ffi_c/libffi/README.md +531 -0
- data/ext/ffi_c/libffi/acinclude.m4 +289 -4
- data/ext/ffi_c/libffi/autogen.sh +2 -0
- data/ext/ffi_c/libffi/compile +227 -21
- data/ext/ffi_c/libffi/config.guess +1034 -778
- data/ext/ffi_c/libffi/config.sub +1394 -1204
- data/ext/ffi_c/libffi/configure +14327 -8503
- data/ext/ffi_c/libffi/configure.ac +294 -247
- data/ext/ffi_c/libffi/configure.host +330 -4
- data/ext/ffi_c/libffi/doc/Makefile.am +3 -0
- data/ext/ffi_c/libffi/doc/Makefile.in +818 -0
- data/ext/ffi_c/libffi/doc/libffi.texi +572 -67
- data/ext/ffi_c/libffi/doc/version.texi +4 -4
- data/ext/ffi_c/libffi/fficonfig.h.in +53 -46
- data/ext/ffi_c/libffi/generate-darwin-source-and-headers.py +312 -0
- data/ext/ffi_c/libffi/include/Makefile.am +3 -3
- data/ext/ffi_c/libffi/include/Makefile.in +219 -79
- data/ext/ffi_c/libffi/include/ffi.h.in +230 -111
- data/ext/ffi_c/libffi/include/ffi_cfi.h +76 -0
- data/ext/ffi_c/libffi/include/ffi_common.h +78 -16
- data/ext/ffi_c/libffi/include/tramp.h +45 -0
- data/ext/ffi_c/libffi/install-sh +402 -184
- data/ext/ffi_c/libffi/libffi.map.in +81 -0
- data/ext/ffi_c/libffi/libffi.pc.in +3 -2
- data/ext/ffi_c/libffi/libffi.xcodeproj/project.pbxproj +997 -0
- data/ext/ffi_c/libffi/libtool-ldflags +106 -0
- data/ext/ffi_c/libffi/libtool-version +2 -2
- data/ext/ffi_c/libffi/ltmain.sh +5752 -2722
- data/ext/ffi_c/libffi/m4/asmcfi.m4 +13 -0
- data/ext/ffi_c/libffi/m4/ax_append_flag.m4 +50 -0
- data/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 +198 -0
- data/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 +158 -0
- data/ext/ffi_c/libffi/m4/ax_check_compile_flag.m4 +53 -0
- data/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 +119 -0
- data/ext/ffi_c/libffi/m4/ax_configure_args.m4 +49 -0
- data/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 +302 -0
- data/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 +267 -0
- data/ext/ffi_c/libffi/m4/ax_gcc_x86_cpuid.m4 +89 -0
- data/ext/ffi_c/libffi/m4/ax_prepend_flag.m4 +51 -0
- data/ext/ffi_c/libffi/m4/ax_require_defined.m4 +37 -0
- data/ext/ffi_c/libffi/make_sunver.pl +333 -0
- data/ext/ffi_c/libffi/man/Makefile.am +2 -2
- data/ext/ffi_c/libffi/man/Makefile.in +174 -57
- data/ext/ffi_c/libffi/man/ffi.3 +10 -0
- data/ext/ffi_c/libffi/man/ffi_prep_cif.3 +6 -4
- data/ext/ffi_c/libffi/man/ffi_prep_cif_var.3 +73 -0
- data/ext/ffi_c/libffi/missing +155 -300
- data/ext/ffi_c/libffi/msvc_build/aarch64/Ffi_staticLib.sln +33 -0
- data/ext/ffi_c/libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj +130 -0
- data/ext/ffi_c/libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj.filters +57 -0
- data/ext/ffi_c/libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj.user +4 -0
- data/ext/ffi_c/libffi/msvc_build/aarch64/aarch64_include/ffi.h +511 -0
- data/ext/ffi_c/libffi/msvc_build/aarch64/aarch64_include/fficonfig.h +219 -0
- data/ext/ffi_c/libffi/msvcc.sh +353 -0
- data/ext/ffi_c/libffi/src/aarch64/ffi.c +1142 -0
- data/ext/ffi_c/libffi/src/aarch64/ffitarget.h +97 -0
- data/ext/ffi_c/libffi/src/aarch64/internal.h +100 -0
- data/ext/ffi_c/libffi/src/aarch64/sysv.S +695 -0
- data/ext/ffi_c/libffi/src/aarch64/win64_armasm.S +506 -0
- data/ext/ffi_c/libffi/src/alpha/ffi.c +335 -98
- data/ext/ffi_c/libffi/src/alpha/ffitarget.h +10 -1
- data/ext/ffi_c/libffi/src/alpha/internal.h +23 -0
- data/ext/ffi_c/libffi/src/alpha/osf.S +162 -246
- data/ext/ffi_c/libffi/src/arc/arcompact.S +210 -0
- data/ext/ffi_c/libffi/src/arc/ffi.c +443 -0
- data/ext/ffi_c/libffi/src/arc/ffitarget.h +67 -0
- data/ext/ffi_c/libffi/src/arm/ffi.c +806 -194
- data/ext/ffi_c/libffi/src/arm/ffitarget.h +43 -3
- data/ext/ffi_c/libffi/src/arm/internal.h +17 -0
- data/ext/ffi_c/libffi/src/arm/sysv.S +381 -231
- data/ext/ffi_c/libffi/src/arm/sysv_msvc_arm32.S +311 -0
- data/ext/ffi_c/libffi/src/avr32/ffi.c +4 -2
- data/ext/ffi_c/libffi/src/avr32/ffitarget.h +8 -3
- data/ext/ffi_c/libffi/src/bfin/ffi.c +196 -0
- data/ext/ffi_c/libffi/src/bfin/ffitarget.h +43 -0
- data/ext/ffi_c/libffi/src/bfin/sysv.S +179 -0
- data/ext/ffi_c/libffi/src/closures.c +574 -100
- data/ext/ffi_c/libffi/src/cris/ffi.c +11 -8
- data/ext/ffi_c/libffi/src/cris/ffitarget.h +8 -3
- data/ext/ffi_c/libffi/src/csky/ffi.c +395 -0
- data/ext/ffi_c/libffi/src/csky/ffitarget.h +63 -0
- data/ext/ffi_c/libffi/src/csky/sysv.S +371 -0
- data/ext/ffi_c/libffi/src/debug.c +8 -3
- data/ext/ffi_c/libffi/src/dlmalloc.c +89 -17
- data/ext/ffi_c/libffi/src/frv/ffi.c +2 -2
- data/ext/ffi_c/libffi/src/frv/ffitarget.h +8 -7
- data/ext/ffi_c/libffi/src/ia64/ffi.c +48 -12
- data/ext/ffi_c/libffi/src/ia64/ffitarget.h +10 -4
- data/ext/ffi_c/libffi/src/ia64/unix.S +28 -3
- data/ext/ffi_c/libffi/src/java_raw_api.c +24 -6
- data/ext/ffi_c/libffi/src/kvx/asm.h +5 -0
- data/ext/ffi_c/libffi/src/kvx/ffi.c +273 -0
- data/ext/ffi_c/libffi/src/kvx/ffitarget.h +75 -0
- data/ext/ffi_c/libffi/src/kvx/sysv.S +127 -0
- data/ext/ffi_c/libffi/src/loongarch64/ffi.c +624 -0
- data/ext/ffi_c/libffi/src/loongarch64/ffitarget.h +82 -0
- data/ext/ffi_c/libffi/src/loongarch64/sysv.S +327 -0
- data/ext/ffi_c/libffi/src/m32r/ffi.c +32 -15
- data/ext/ffi_c/libffi/src/m32r/ffitarget.h +8 -3
- data/ext/ffi_c/libffi/src/m68k/ffi.c +97 -13
- data/ext/ffi_c/libffi/src/m68k/ffitarget.h +8 -3
- data/ext/ffi_c/libffi/src/m68k/sysv.S +148 -25
- data/ext/ffi_c/libffi/src/m88k/ffi.c +400 -0
- data/ext/ffi_c/libffi/src/m88k/ffitarget.h +49 -0
- data/ext/ffi_c/libffi/src/m88k/obsd.S +209 -0
- data/ext/ffi_c/libffi/src/metag/ffi.c +330 -0
- data/ext/ffi_c/libffi/src/metag/ffitarget.h +53 -0
- data/ext/ffi_c/libffi/src/metag/sysv.S +311 -0
- data/ext/ffi_c/libffi/src/microblaze/ffi.c +321 -0
- data/ext/ffi_c/libffi/src/microblaze/ffitarget.h +53 -0
- data/ext/ffi_c/libffi/src/microblaze/sysv.S +302 -0
- data/ext/ffi_c/libffi/src/mips/ffi.c +392 -104
- data/ext/ffi_c/libffi/src/mips/ffitarget.h +40 -24
- data/ext/ffi_c/libffi/src/mips/n32.S +325 -93
- data/ext/ffi_c/libffi/src/mips/o32.S +211 -31
- data/ext/ffi_c/libffi/src/moxie/eabi.S +101 -0
- data/ext/ffi_c/libffi/src/moxie/ffi.c +310 -0
- data/ext/ffi_c/libffi/src/moxie/ffitarget.h +52 -0
- data/ext/ffi_c/libffi/src/nios2/ffi.c +304 -0
- data/ext/ffi_c/libffi/src/nios2/ffitarget.h +52 -0
- data/ext/ffi_c/libffi/src/nios2/sysv.S +136 -0
- data/ext/ffi_c/libffi/src/or1k/ffi.c +341 -0
- data/ext/ffi_c/libffi/src/or1k/ffitarget.h +58 -0
- data/ext/ffi_c/libffi/src/or1k/sysv.S +107 -0
- data/ext/ffi_c/libffi/src/pa/ffi.c +68 -111
- data/ext/ffi_c/libffi/src/pa/ffi64.c +614 -0
- data/ext/ffi_c/libffi/src/pa/ffitarget.h +34 -17
- data/ext/ffi_c/libffi/src/pa/hpux32.S +87 -38
- data/ext/ffi_c/libffi/src/pa/hpux64.S +681 -0
- data/ext/ffi_c/libffi/src/pa/linux.S +109 -39
- data/ext/ffi_c/libffi/src/powerpc/aix.S +250 -8
- data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +255 -4
- data/ext/ffi_c/libffi/src/powerpc/asm.h +3 -3
- data/ext/ffi_c/libffi/src/powerpc/darwin.S +211 -78
- data/ext/ffi_c/libffi/src/powerpc/darwin_closure.S +356 -102
- data/ext/ffi_c/libffi/src/powerpc/ffi.c +108 -1375
- data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +746 -210
- data/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +1153 -0
- data/ext/ffi_c/libffi/src/powerpc/ffi_powerpc.h +105 -0
- data/ext/ffi_c/libffi/src/powerpc/ffi_sysv.c +923 -0
- data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +126 -48
- data/ext/ffi_c/libffi/src/powerpc/linux64.S +191 -85
- data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +438 -108
- data/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +138 -68
- data/ext/ffi_c/libffi/src/powerpc/sysv.S +73 -119
- data/ext/ffi_c/libffi/src/powerpc/t-aix +5 -0
- data/ext/ffi_c/libffi/src/prep_cif.c +141 -32
- data/ext/ffi_c/libffi/src/raw_api.c +18 -5
- data/ext/ffi_c/libffi/src/riscv/ffi.c +514 -0
- data/ext/ffi_c/libffi/src/riscv/ffitarget.h +69 -0
- data/ext/ffi_c/libffi/src/riscv/sysv.S +293 -0
- data/ext/ffi_c/libffi/src/s390/ffi.c +294 -318
- data/ext/ffi_c/libffi/src/s390/ffitarget.h +13 -3
- data/ext/ffi_c/libffi/src/s390/internal.h +11 -0
- data/ext/ffi_c/libffi/src/s390/sysv.S +257 -366
- data/ext/ffi_c/libffi/src/sh/ffi.c +4 -3
- data/ext/ffi_c/libffi/src/sh/ffitarget.h +8 -3
- data/ext/ffi_c/libffi/src/sh64/ffi.c +3 -2
- data/ext/ffi_c/libffi/src/sh64/ffitarget.h +8 -3
- data/ext/ffi_c/libffi/src/sparc/ffi.c +334 -491
- data/ext/ffi_c/libffi/src/sparc/ffi64.c +630 -0
- data/ext/ffi_c/libffi/src/sparc/ffitarget.h +20 -5
- data/ext/ffi_c/libffi/src/sparc/internal.h +26 -0
- data/ext/ffi_c/libffi/src/sparc/v8.S +364 -234
- data/ext/ffi_c/libffi/src/sparc/v9.S +340 -207
- data/ext/ffi_c/libffi/src/tile/ffi.c +355 -0
- data/ext/ffi_c/libffi/src/tile/ffitarget.h +65 -0
- data/ext/ffi_c/libffi/src/tile/tile.S +360 -0
- data/ext/ffi_c/libffi/src/tramp.c +716 -0
- data/ext/ffi_c/libffi/src/types.c +48 -19
- data/ext/ffi_c/libffi/src/vax/elfbsd.S +195 -0
- data/ext/ffi_c/libffi/src/vax/ffi.c +276 -0
- data/ext/ffi_c/libffi/src/vax/ffitarget.h +49 -0
- data/ext/ffi_c/libffi/src/wasm32/ffi.c +947 -0
- data/ext/ffi_c/libffi/src/wasm32/ffitarget.h +62 -0
- data/ext/ffi_c/libffi/src/x86/asmnames.h +30 -0
- data/ext/ffi_c/libffi/src/x86/ffi.c +690 -540
- data/ext/ffi_c/libffi/src/x86/ffi64.c +450 -126
- data/ext/ffi_c/libffi/src/x86/ffitarget.h +86 -42
- data/ext/ffi_c/libffi/src/x86/ffiw64.c +361 -0
- data/ext/ffi_c/libffi/src/x86/internal.h +43 -0
- data/ext/ffi_c/libffi/src/x86/internal64.h +36 -0
- data/ext/ffi_c/libffi/src/x86/sysv.S +1199 -381
- data/ext/ffi_c/libffi/src/x86/sysv_intel.S +998 -0
- data/ext/ffi_c/libffi/src/x86/unix64.S +587 -298
- data/ext/ffi_c/libffi/src/x86/win64.S +251 -457
- data/ext/ffi_c/libffi/src/x86/win64_intel.S +238 -0
- data/ext/ffi_c/libffi/src/xtensa/ffi.c +306 -0
- data/ext/ffi_c/libffi/src/xtensa/ffitarget.h +57 -0
- data/ext/ffi_c/libffi/src/xtensa/sysv.S +268 -0
- data/ext/ffi_c/libffi/stamp-h.in +1 -0
- data/ext/ffi_c/libffi/testsuite/Makefile.am +80 -73
- data/ext/ffi_c/libffi/testsuite/Makefile.in +251 -117
- data/ext/ffi_c/libffi/testsuite/emscripten/build-tests.sh +54 -0
- data/ext/ffi_c/libffi/testsuite/emscripten/build.sh +63 -0
- data/ext/ffi_c/libffi/testsuite/emscripten/conftest.py +86 -0
- data/ext/ffi_c/libffi/testsuite/emscripten/node-tests.sh +48 -0
- data/ext/ffi_c/libffi/testsuite/emscripten/test.html +7 -0
- data/ext/ffi_c/libffi/testsuite/emscripten/test_libffi.py +51 -0
- data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +682 -0
- data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +22 -2
- data/ext/ffi_c/libffi/testsuite/libffi.bhaible/Makefile +28 -0
- data/ext/ffi_c/libffi/testsuite/libffi.bhaible/README +78 -0
- data/ext/ffi_c/libffi/testsuite/libffi.bhaible/alignof.h +50 -0
- data/ext/ffi_c/libffi/testsuite/libffi.bhaible/bhaible.exp +63 -0
- data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-call.c +1746 -0
- data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-callback.c +2885 -0
- data/ext/ffi_c/libffi/testsuite/libffi.bhaible/testcases.c +747 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c +46 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/align_stdcall.c +46 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/bpo_38748.c +41 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +28 -10
- data/ext/ffi_c/libffi/testsuite/libffi.call/callback.c +99 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/callback2.c +108 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/callback3.c +114 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/callback4.c +119 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +4 -3
- data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +88 -42
- data/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +3 -1
- data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +15 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +4 -2
- data/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c +110 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/many.c +6 -16
- data/ext/ffi_c/libffi/testsuite/libffi.call/many2.c +57 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/many_double.c +70 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c +78 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +0 -1
- data/ext/ffi_c/libffi/testsuite/libffi.call/offsets.c +46 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c +127 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +1 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +1 -1
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c +6 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +1 -1
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c +4 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +1 -1
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c +4 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/s55.c +60 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +9 -10
- data/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c +49 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c +49 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c +55 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +9 -7
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct10.c +57 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +7 -7
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +7 -6
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +9 -8
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +9 -8
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +9 -9
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +9 -9
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +9 -8
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +9 -8
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_2.c +63 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3.c +65 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3f.c +65 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4.c +67 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4f.c +67 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_big.c +93 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_small.c +61 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_return_2H.c +63 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_return_8H.c +90 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c +61 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c +78 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_2.c +220 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_3.c +154 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c +134 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +134 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +140 -0
- data/ext/ffi_c/libffi/testsuite/libffi.closures/closure.exp +67 -0
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn0.c +3 -2
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn1.c +2 -0
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn2.c +2 -0
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn3.c +21 -1
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn4.c +2 -0
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn5.c +2 -0
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn6.c +2 -0
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_loc_fn0.c +7 -6
- data/ext/ffi_c/libffi/testsuite/{libffi.call/closure_stdcall.c → libffi.closures/closure_simple.c} +13 -16
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_12byte.c +22 -4
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_16byte.c +26 -4
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_18byte.c +28 -4
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_19byte.c +33 -4
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_1_1byte.c +8 -4
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_20byte.c +23 -5
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_20byte1.c +25 -5
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_24byte.c +40 -8
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_2byte.c +17 -4
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_3_1byte.c +23 -4
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_3byte1.c +17 -4
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_3byte2.c +17 -4
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3float.c +113 -0
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_4_1byte.c +26 -4
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_4byte.c +17 -4
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_5_1_byte.c +33 -5
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_5byte.c +23 -5
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_64byte.c +29 -5
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_6_1_byte.c +32 -5
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_6byte.c +28 -6
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_7_1_byte.c +43 -5
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_7byte.c +29 -5
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_8byte.c +18 -4
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_9byte1.c +18 -5
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_9byte2.c +18 -6
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_double.c +23 -5
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_float.c +23 -5
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_longdouble.c +24 -5
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_longdouble_split.c +44 -31
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_longdouble_split2.c +44 -9
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_pointer.c +23 -5
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_sint16.c +22 -5
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_sint32.c +22 -7
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_sint64.c +23 -5
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_uint16.c +22 -5
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_uint32.c +23 -5
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_uint64.c +24 -5
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_dbls_struct.c +7 -5
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_double_va.c +21 -9
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_float.c +4 -0
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_longdouble.c +13 -3
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_longdouble_va.c +34 -11
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_many_mixed_args.c +70 -0
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_many_mixed_float_double.c +55 -0
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_multi_schar.c +5 -1
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_multi_sshort.c +6 -1
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_multi_sshortchar.c +9 -1
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_multi_uchar.c +9 -1
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_multi_ushort.c +6 -2
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_multi_ushortchar.c +9 -1
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_pointer.c +7 -2
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_pointer_stack.c +22 -10
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_schar.c +3 -0
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_sint.c +2 -0
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_sshort.c +3 -0
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_struct_va1.c +125 -0
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_uchar.c +3 -0
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_uint.c +4 -0
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uint_va.c +49 -0
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ulong_va.c +49 -0
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_ulonglong.c +8 -5
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_ushort.c +3 -0
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/err_bad_abi.c +2 -3
- data/ext/ffi_c/libffi/testsuite/libffi.closures/ffitest.h +1 -0
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/huge_struct.c +57 -56
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct.c +38 -15
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct1.c +9 -9
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct10.c +19 -6
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct11.c +137 -0
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct12.c +86 -0
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct13.c +115 -0
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct2.c +15 -6
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct3.c +15 -6
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct4.c +14 -5
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct5.c +14 -5
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct6.c +17 -6
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct7.c +14 -5
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct8.c +17 -6
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct9.c +17 -6
- data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs1.c +86 -0
- data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs2.c +102 -0
- data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs3.c +101 -0
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/stret_large.c +7 -7
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/stret_large2.c +7 -7
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/stret_medium.c +6 -6
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/stret_medium2.c +7 -6
- data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/testclosure.c +8 -3
- data/ext/ffi_c/libffi/testsuite/{libffi.special → libffi.closures}/unwindtest.cc +4 -10
- data/ext/ffi_c/libffi/testsuite/{libffi.special → libffi.closures}/unwindtest_ffi_call.cc +4 -2
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc +91 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc +42 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc +71 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc +80 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c +16 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c +10 -0
- data/ext/ffi_c/libffi/testsuite/{libffi.special/special.exp → libffi.complex/complex.exp} +9 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc +51 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc +7 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc +7 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc +7 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c +86 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h +1 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc +78 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc +37 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc +41 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc +44 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c +34 -0
- data/ext/ffi_c/libffi/testsuite/libffi.go/closure1.c +28 -0
- data/ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h +1 -0
- data/ext/ffi_c/libffi/testsuite/libffi.go/go.exp +36 -0
- data/ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h +19 -0
- data/ext/ffi_c/libffi.bsd.mk +14 -8
- data/ext/ffi_c/libffi.darwin.mk +56 -26
- data/ext/ffi_c/libffi.gnu.mk +9 -6
- data/ext/ffi_c/libffi.mk +13 -8
- data/ext/ffi_c/libffi.vc.mk +26 -0
- data/ext/ffi_c/libffi.vc64.mk +26 -0
- data/ext/ffi_c/rbffi.h +34 -6
- data/ext/ffi_c/{endian.h → rbffi_endian.h} +21 -2
- data/ffi.gemspec +42 -0
- data/lib/ffi/abstract_memory.rb +44 -0
- data/lib/ffi/autopointer.rb +111 -52
- data/lib/ffi/compat.rb +43 -0
- data/lib/ffi/data_converter.rb +67 -0
- data/lib/ffi/dynamic_library.rb +118 -0
- data/lib/ffi/enum.rb +203 -22
- data/lib/ffi/errno.rb +27 -12
- data/lib/ffi/ffi.rb +88 -11
- data/lib/ffi/function.rb +71 -0
- data/lib/ffi/io.rb +35 -14
- data/lib/ffi/library.rb +382 -96
- data/lib/ffi/library_path.rb +109 -0
- data/lib/ffi/managedstruct.rb +64 -35
- data/lib/ffi/memorypointer.rb +1 -33
- data/lib/ffi/platform/aarch64-darwin/types.conf +130 -0
- data/lib/ffi/platform/aarch64-freebsd/types.conf +128 -0
- data/lib/ffi/platform/aarch64-freebsd12/types.conf +181 -0
- data/lib/ffi/platform/aarch64-linux/types.conf +175 -0
- data/lib/ffi/platform/aarch64-openbsd/types.conf +134 -0
- data/lib/ffi/platform/aarch64-windows/types.conf +52 -0
- data/lib/ffi/platform/arm-freebsd/types.conf +152 -0
- data/lib/ffi/platform/arm-freebsd12/types.conf +152 -0
- data/lib/ffi/platform/arm-linux/types.conf +132 -0
- data/lib/ffi/platform/hppa1.1-linux/types.conf +178 -0
- data/lib/ffi/platform/hppa2.0-linux/types.conf +178 -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-freebsd12/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 +52 -0
- data/lib/ffi/platform/ia64-linux/types.conf +104 -0
- data/lib/ffi/platform/loongarch64-linux/types.conf +141 -0
- data/lib/ffi/platform/mips-linux/types.conf +102 -0
- data/lib/ffi/platform/mips64-linux/types.conf +104 -0
- data/lib/ffi/platform/mips64el-linux/types.conf +104 -0
- data/lib/ffi/platform/mipsel-linux/types.conf +102 -0
- data/lib/ffi/platform/mipsisa32r6-linux/types.conf +102 -0
- data/lib/ffi/platform/mipsisa32r6el-linux/types.conf +102 -0
- data/lib/ffi/platform/mipsisa64r6-linux/types.conf +104 -0
- data/lib/ffi/platform/mipsisa64r6el-linux/types.conf +104 -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 +130 -0
- data/lib/ffi/platform/powerpc-openbsd/types.conf +156 -0
- data/lib/ffi/platform/powerpc64-linux/types.conf +104 -0
- data/lib/ffi/platform/powerpc64le-linux/types.conf +100 -0
- data/lib/ffi/platform/riscv64-linux/types.conf +104 -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-linux/types.conf +102 -0
- data/lib/ffi/platform/sparcv9-openbsd/types.conf +156 -0
- data/lib/ffi/platform/sparcv9-solaris/types.conf +128 -0
- data/lib/ffi/platform/sw_64-linux/types.conf +141 -0
- data/lib/ffi/platform/x86_64-cygwin/types.conf +3 -0
- data/lib/ffi/platform/x86_64-darwin/types.conf +130 -0
- data/lib/ffi/platform/x86_64-dragonflybsd/types.conf +130 -0
- data/lib/ffi/platform/x86_64-freebsd/types.conf +128 -0
- data/lib/ffi/platform/x86_64-freebsd12/types.conf +158 -0
- data/lib/ffi/platform/x86_64-haiku/types.conf +117 -0
- data/lib/ffi/platform/x86_64-linux/types.conf +132 -0
- data/lib/ffi/platform/x86_64-msys/types.conf +119 -0
- data/lib/ffi/platform/x86_64-netbsd/types.conf +128 -0
- data/lib/ffi/platform/x86_64-openbsd/types.conf +134 -0
- data/lib/ffi/platform/x86_64-solaris/types.conf +122 -0
- data/lib/ffi/platform/x86_64-windows/types.conf +52 -0
- data/lib/ffi/platform.rb +110 -34
- data/lib/ffi/pointer.rb +117 -90
- data/lib/ffi/struct.rb +101 -70
- data/lib/ffi/struct_by_reference.rb +72 -0
- data/lib/ffi/struct_layout.rb +96 -0
- data/lib/ffi/struct_layout_builder.rb +90 -21
- data/lib/ffi/tools/const_generator.rb +86 -31
- data/lib/ffi/tools/generator.rb +49 -2
- data/lib/ffi/tools/generator_task.rb +13 -16
- data/lib/ffi/tools/struct_generator.rb +6 -5
- data/lib/ffi/tools/types_generator.rb +25 -11
- data/lib/ffi/types.rb +105 -36
- data/lib/ffi/union.rb +23 -12
- data/lib/ffi/variadic.rb +44 -29
- data/lib/ffi/version.rb +3 -0
- data/lib/ffi.rb +25 -9
- data/rakelib/ffi_gem_helper.rb +65 -0
- data/samples/getlogin.rb +8 -0
- data/samples/getpid.rb +8 -0
- data/samples/gettimeofday.rb +18 -0
- data/samples/hello.rb +8 -0
- data/samples/hello_ractor.rb +11 -0
- data/samples/inotify.rb +60 -0
- data/samples/pty.rb +75 -0
- data/samples/qsort.rb +20 -0
- data/samples/qsort_ractor.rb +28 -0
- data/sig/ffi/abstract_memory.rbs +165 -0
- data/sig/ffi/auto_pointer.rbs +26 -0
- data/sig/ffi/buffer.rbs +18 -0
- data/sig/ffi/data_converter.rbs +10 -0
- data/sig/ffi/dynamic_library.rbs +9 -0
- data/sig/ffi/enum.rbs +38 -0
- data/sig/ffi/function.rbs +39 -0
- data/sig/ffi/library.rbs +42 -0
- data/sig/ffi/native_type.rbs +86 -0
- data/sig/ffi/pointer.rbs +42 -0
- data/sig/ffi/struct.rbs +76 -0
- data/sig/ffi/struct_by_reference.rbs +11 -0
- data/sig/ffi/struct_by_value.rbs +7 -0
- data/sig/ffi/struct_layout.rbs +9 -0
- data/sig/ffi/struct_layout_builder.rbs +5 -0
- data/sig/ffi/type.rbs +39 -0
- data/sig/ffi.rbs +26 -0
- data.tar.gz.sig +0 -0
- metadata +547 -248
- metadata.gz.sig +0 -0
- data/History.txt +0 -109
- data/README.rdoc +0 -70
- data/ext/ffi_c/DataConverter.c +0 -62
- data/ext/ffi_c/StructByReference.c +0 -150
- data/ext/ffi_c/StructByReference.h +0 -50
- data/ext/ffi_c/libffi/ChangeLog.libffi +0 -658
- data/ext/ffi_c/libffi/ChangeLog.libgcj +0 -40
- data/ext/ffi_c/libffi/ChangeLog.v1 +0 -764
- data/ext/ffi_c/libffi/README +0 -306
- data/ext/ffi_c/libffi/aclocal.m4 +0 -8998
- data/ext/ffi_c/libffi/depcomp +0 -584
- data/ext/ffi_c/libffi/doc/libffi.info +0 -533
- data/ext/ffi_c/libffi/doc/stamp-vti +0 -4
- data/ext/ffi_c/libffi/m4/libtool.m4 +0 -7360
- data/ext/ffi_c/libffi/m4/ltoptions.m4 +0 -368
- data/ext/ffi_c/libffi/m4/ltsugar.m4 +0 -123
- data/ext/ffi_c/libffi/m4/ltversion.m4 +0 -23
- data/ext/ffi_c/libffi/m4/lt~obsolete.m4 +0 -92
- data/ext/ffi_c/libffi/mdate-sh +0 -201
- data/ext/ffi_c/libffi/src/x86/darwin.S +0 -444
- data/ext/ffi_c/libffi/src/x86/darwin64.S +0 -416
- data/ext/ffi_c/libffi/src/x86/freebsd.S +0 -458
- data/ext/ffi_c/libffi/src/x86/win32.S +0 -877
- data/ext/ffi_c/libffi/testsuite/lib/libffi-dg.exp +0 -300
- data/ext/ffi_c/libffi/testsuite/libffi.call/many_win32.c +0 -63
- data/ext/ffi_c/libffi/testsuite/libffi.call/strlen_win32.c +0 -44
- data/ext/ffi_c/libffi/testsuite/libffi.special/ffitestcxx.h +0 -96
- data/ext/ffi_c/libffi/texinfo.tex +0 -7210
- data/gen/Rakefile +0 -14
- data/spec/ffi/async_callback_spec.rb +0 -23
- data/spec/ffi/bool_spec.rb +0 -24
- data/spec/ffi/buffer_spec.rb +0 -202
- data/spec/ffi/callback_spec.rb +0 -653
- data/spec/ffi/custom_param_type.rb +0 -31
- data/spec/ffi/custom_type_spec.rb +0 -73
- data/spec/ffi/enum_spec.rb +0 -183
- data/spec/ffi/errno_spec.rb +0 -13
- data/spec/ffi/ffi_spec.rb +0 -24
- data/spec/ffi/function_spec.rb +0 -73
- data/spec/ffi/library_spec.rb +0 -174
- data/spec/ffi/managed_struct_spec.rb +0 -56
- data/spec/ffi/number_spec.rb +0 -231
- data/spec/ffi/pointer_spec.rb +0 -210
- data/spec/ffi/rbx/attach_function_spec.rb +0 -28
- data/spec/ffi/rbx/memory_pointer_spec.rb +0 -109
- data/spec/ffi/rbx/spec_helper.rb +0 -1
- data/spec/ffi/rbx/struct_spec.rb +0 -13
- data/spec/ffi/spec_helper.rb +0 -21
- data/spec/ffi/string_spec.rb +0 -103
- data/spec/ffi/strptr_spec.rb +0 -36
- data/spec/ffi/struct_callback_spec.rb +0 -64
- data/spec/ffi/struct_initialize_spec.rb +0 -30
- data/spec/ffi/struct_packed_spec.rb +0 -46
- data/spec/ffi/struct_spec.rb +0 -638
- data/spec/ffi/typedef_spec.rb +0 -62
- data/spec/ffi/union_spec.rb +0 -60
- data/spec/ffi/variadic_spec.rb +0 -84
- data/spec/spec.opts +0 -4
- data/tasks/ann.rake +0 -80
- data/tasks/extension.rake +0 -25
- data/tasks/gem.rake +0 -200
- data/tasks/git.rake +0 -41
- data/tasks/notes.rake +0 -27
- data/tasks/post_load.rake +0 -34
- data/tasks/rdoc.rake +0 -50
- data/tasks/rubyforge.rake +0 -55
- data/tasks/setup.rb +0 -301
- data/tasks/spec.rake +0 -54
- data/tasks/svn.rake +0 -47
- data/tasks/test.rake +0 -40
- /data/ext/ffi_c/libffi/testsuite/libffi.call/{pyobjc-tc.c → pyobjc_tc.c} +0 -0
- /data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_double.c +0 -0
- /data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/problem1.c +0 -0
@@ -0,0 +1,13 @@
|
|
1
|
+
AC_DEFUN([GCC_AS_CFI_PSEUDO_OP],
|
2
|
+
[AC_CACHE_CHECK([assembler .cfi pseudo-op support],
|
3
|
+
gcc_cv_as_cfi_pseudo_op, [
|
4
|
+
gcc_cv_as_cfi_pseudo_op=unknown
|
5
|
+
AC_TRY_COMPILE([asm (".cfi_sections\n\t.cfi_startproc\n\t.cfi_endproc");],,
|
6
|
+
[gcc_cv_as_cfi_pseudo_op=yes],
|
7
|
+
[gcc_cv_as_cfi_pseudo_op=no])
|
8
|
+
])
|
9
|
+
if test "x$gcc_cv_as_cfi_pseudo_op" = xyes; then
|
10
|
+
AC_DEFINE(HAVE_AS_CFI_PSEUDO_OP, 1,
|
11
|
+
[Define if your assembler supports .cfi_* directives.])
|
12
|
+
fi
|
13
|
+
])
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# ===========================================================================
|
2
|
+
# https://www.gnu.org/software/autoconf-archive/ax_append_flag.html
|
3
|
+
# ===========================================================================
|
4
|
+
#
|
5
|
+
# SYNOPSIS
|
6
|
+
#
|
7
|
+
# AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE])
|
8
|
+
#
|
9
|
+
# DESCRIPTION
|
10
|
+
#
|
11
|
+
# FLAG is appended to the FLAGS-VARIABLE shell variable, with a space
|
12
|
+
# added in between.
|
13
|
+
#
|
14
|
+
# If FLAGS-VARIABLE is not specified, the current language's flags (e.g.
|
15
|
+
# CFLAGS) is used. FLAGS-VARIABLE is not changed if it already contains
|
16
|
+
# FLAG. If FLAGS-VARIABLE is unset in the shell, it is set to exactly
|
17
|
+
# FLAG.
|
18
|
+
#
|
19
|
+
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION.
|
20
|
+
#
|
21
|
+
# LICENSE
|
22
|
+
#
|
23
|
+
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
|
24
|
+
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
|
25
|
+
#
|
26
|
+
# Copying and distribution of this file, with or without modification, are
|
27
|
+
# permitted in any medium without royalty provided the copyright notice
|
28
|
+
# and this notice are preserved. This file is offered as-is, without any
|
29
|
+
# warranty.
|
30
|
+
|
31
|
+
#serial 8
|
32
|
+
|
33
|
+
AC_DEFUN([AX_APPEND_FLAG],
|
34
|
+
[dnl
|
35
|
+
AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_SET_IF
|
36
|
+
AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])])
|
37
|
+
AS_VAR_SET_IF(FLAGS,[
|
38
|
+
AS_CASE([" AS_VAR_GET(FLAGS) "],
|
39
|
+
[*" $1 "*], [AC_RUN_LOG([: FLAGS already contains $1])],
|
40
|
+
[
|
41
|
+
AS_VAR_APPEND(FLAGS,[" $1"])
|
42
|
+
AC_RUN_LOG([: FLAGS="$FLAGS"])
|
43
|
+
])
|
44
|
+
],
|
45
|
+
[
|
46
|
+
AS_VAR_SET(FLAGS,[$1])
|
47
|
+
AC_RUN_LOG([: FLAGS="$FLAGS"])
|
48
|
+
])
|
49
|
+
AS_VAR_POPDEF([FLAGS])dnl
|
50
|
+
])dnl AX_APPEND_FLAG
|
@@ -0,0 +1,198 @@
|
|
1
|
+
# ===========================================================================
|
2
|
+
# https://www.gnu.org/software/autoconf-archive/ax_cc_maxopt.html
|
3
|
+
# ===========================================================================
|
4
|
+
#
|
5
|
+
# SYNOPSIS
|
6
|
+
#
|
7
|
+
# AX_CC_MAXOPT
|
8
|
+
#
|
9
|
+
# DESCRIPTION
|
10
|
+
#
|
11
|
+
# Try to turn on "good" C optimization flags for various compilers and
|
12
|
+
# architectures, for some definition of "good". (In our case, good for
|
13
|
+
# FFTW and hopefully for other scientific codes. Modify as needed.)
|
14
|
+
#
|
15
|
+
# The user can override the flags by setting the CFLAGS environment
|
16
|
+
# variable. The user can also specify --enable-portable-binary in order to
|
17
|
+
# disable any optimization flags that might result in a binary that only
|
18
|
+
# runs on the host architecture.
|
19
|
+
#
|
20
|
+
# Note also that the flags assume that ANSI C aliasing rules are followed
|
21
|
+
# by the code (e.g. for gcc's -fstrict-aliasing), and that floating-point
|
22
|
+
# computations can be re-ordered as needed.
|
23
|
+
#
|
24
|
+
# Requires macros: AX_CHECK_COMPILE_FLAG, AX_COMPILER_VENDOR,
|
25
|
+
# AX_GCC_ARCHFLAG, AX_GCC_X86_CPUID.
|
26
|
+
#
|
27
|
+
# LICENSE
|
28
|
+
#
|
29
|
+
# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
|
30
|
+
# Copyright (c) 2008 Matteo Frigo
|
31
|
+
#
|
32
|
+
# This program is free software: you can redistribute it and/or modify it
|
33
|
+
# under the terms of the GNU General Public License as published by the
|
34
|
+
# Free Software Foundation, either version 3 of the License, or (at your
|
35
|
+
# option) any later version.
|
36
|
+
#
|
37
|
+
# This program is distributed in the hope that it will be useful, but
|
38
|
+
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
39
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
40
|
+
# Public License for more details.
|
41
|
+
#
|
42
|
+
# You should have received a copy of the GNU General Public License along
|
43
|
+
# with this program. If not, see <https://www.gnu.org/licenses/>.
|
44
|
+
#
|
45
|
+
# As a special exception, the respective Autoconf Macro's copyright owner
|
46
|
+
# gives unlimited permission to copy, distribute and modify the configure
|
47
|
+
# scripts that are the output of Autoconf when processing the Macro. You
|
48
|
+
# need not follow the terms of the GNU General Public License when using
|
49
|
+
# or distributing such scripts, even though portions of the text of the
|
50
|
+
# Macro appear in them. The GNU General Public License (GPL) does govern
|
51
|
+
# all other use of the material that constitutes the Autoconf Macro.
|
52
|
+
#
|
53
|
+
# This special exception to the GPL applies to versions of the Autoconf
|
54
|
+
# Macro released by the Autoconf Archive. When you make and distribute a
|
55
|
+
# modified version of the Autoconf Macro, you may extend this special
|
56
|
+
# exception to the GPL to apply to your modified version as well.
|
57
|
+
|
58
|
+
#serial 22
|
59
|
+
|
60
|
+
AC_DEFUN([AX_CC_MAXOPT],
|
61
|
+
[
|
62
|
+
AC_REQUIRE([AC_PROG_CC])
|
63
|
+
AC_REQUIRE([AX_COMPILER_VENDOR])
|
64
|
+
AC_REQUIRE([AC_CANONICAL_HOST])
|
65
|
+
|
66
|
+
AC_ARG_ENABLE(portable-binary, [AS_HELP_STRING([--enable-portable-binary], [disable compiler optimizations that would produce unportable binaries])],
|
67
|
+
acx_maxopt_portable=$enableval, acx_maxopt_portable=no)
|
68
|
+
|
69
|
+
# Try to determine "good" native compiler flags if none specified via CFLAGS
|
70
|
+
if test "x$ac_test_CFLAGS" = "x"; then
|
71
|
+
case $ax_cv_c_compiler_vendor in
|
72
|
+
dec) CFLAGS="$CFLAGS -newc -w0 -O5 -ansi_alias -ansi_args -fp_reorder -tune host"
|
73
|
+
if test "x$acx_maxopt_portable" = xno; then
|
74
|
+
CFLAGS="$CFLAGS -arch host"
|
75
|
+
fi;;
|
76
|
+
|
77
|
+
sun) CFLAGS="$CFLAGS -native -fast -xO5 -dalign"
|
78
|
+
if test "x$acx_maxopt_portable" = xyes; then
|
79
|
+
CFLAGS="$CFLAGS -xarch=generic"
|
80
|
+
fi;;
|
81
|
+
|
82
|
+
hp) CFLAGS="$CFLAGS +Oall +Optrs_ansi +DSnative"
|
83
|
+
if test "x$acx_maxopt_portable" = xyes; then
|
84
|
+
CFLAGS="$CFLAGS +DAportable"
|
85
|
+
fi;;
|
86
|
+
|
87
|
+
ibm) if test "x$acx_maxopt_portable" = xno; then
|
88
|
+
xlc_opt="-qarch=auto -qtune=auto"
|
89
|
+
else
|
90
|
+
xlc_opt="-qtune=auto"
|
91
|
+
fi
|
92
|
+
AX_CHECK_COMPILE_FLAG($xlc_opt,
|
93
|
+
CFLAGS="$CFLAGS -O3 -qansialias -w $xlc_opt",
|
94
|
+
[CFLAGS="$CFLAGS -O3 -qansialias -w"
|
95
|
+
echo "******************************************************"
|
96
|
+
echo "* You seem to have the IBM C compiler. It is *"
|
97
|
+
echo "* recommended for best performance that you use: *"
|
98
|
+
echo "* *"
|
99
|
+
echo "* CFLAGS=-O3 -qarch=xxx -qtune=xxx -qansialias -w *"
|
100
|
+
echo "* ^^^ ^^^ *"
|
101
|
+
echo "* where xxx is pwr2, pwr3, 604, or whatever kind of *"
|
102
|
+
echo "* CPU you have. (Set the CFLAGS environment var. *"
|
103
|
+
echo "* and re-run configure.) For more info, man cc. *"
|
104
|
+
echo "******************************************************"])
|
105
|
+
;;
|
106
|
+
|
107
|
+
intel) CFLAGS="$CFLAGS -O3 -ansi_alias"
|
108
|
+
if test "x$acx_maxopt_portable" = xno; then
|
109
|
+
icc_archflag=unknown
|
110
|
+
icc_flags=""
|
111
|
+
case $host_cpu in
|
112
|
+
i686*|x86_64*)
|
113
|
+
# icc accepts gcc assembly syntax, so these should work:
|
114
|
+
AX_GCC_X86_CPUID(0)
|
115
|
+
AX_GCC_X86_CPUID(1)
|
116
|
+
case $ax_cv_gcc_x86_cpuid_0 in # see AX_GCC_ARCHFLAG
|
117
|
+
*:756e6547:6c65746e:49656e69) # Intel
|
118
|
+
case $ax_cv_gcc_x86_cpuid_1 in
|
119
|
+
*0?6[[78ab]]?:*:*:*|?6[[78ab]]?:*:*:*|6[[78ab]]?:*:*:*) icc_flags="-xK" ;;
|
120
|
+
*0?6[[9d]]?:*:*:*|?6[[9d]]?:*:*:*|6[[9d]]?:*:*:*|*1?65?:*:*:*) icc_flags="-xSSE2 -xB -xK" ;;
|
121
|
+
*0?6e?:*:*:*|?6e?:*:*:*|6e?:*:*:*) icc_flags="-xSSE3 -xP -xO -xB -xK" ;;
|
122
|
+
*0?6f?:*:*:*|?6f?:*:*:*|6f?:*:*:*|*1?66?:*:*:*) icc_flags="-xSSSE3 -xT -xB -xK" ;;
|
123
|
+
*1?6[[7d]]?:*:*:*) icc_flags="-xSSE4.1 -xS -xT -xB -xK" ;;
|
124
|
+
*1?6[[aef]]?:*:*:*|*2?6[[5cef]]?:*:*:*) icc_flags="-xSSE4.2 -xS -xT -xB -xK" ;;
|
125
|
+
*2?6[[ad]]?:*:*:*) icc_flags="-xAVX -SSE4.2 -xS -xT -xB -xK" ;;
|
126
|
+
*3?6[[ae]]?:*:*:*) icc_flags="-xCORE-AVX-I -xAVX -SSE4.2 -xS -xT -xB -xK" ;;
|
127
|
+
*3?6[[cf]]?:*:*:*|*4?6[[56]]?:*:*:*) icc_flags="-xCORE-AVX2 -xCORE-AVX-I -xAVX -SSE4.2 -xS -xT -xB -xK" ;;
|
128
|
+
*000?f[[346]]?:*:*:*|?f[[346]]?:*:*:*|f[[346]]?:*:*:*) icc_flags="-xSSE3 -xP -xO -xN -xW -xK" ;;
|
129
|
+
*00??f??:*:*:*|??f??:*:*:*|?f??:*:*:*|f??:*:*:*) icc_flags="-xSSE2 -xN -xW -xK" ;;
|
130
|
+
esac ;;
|
131
|
+
esac ;;
|
132
|
+
esac
|
133
|
+
if test "x$icc_flags" != x; then
|
134
|
+
for flag in $icc_flags; do
|
135
|
+
AX_CHECK_COMPILE_FLAG($flag, [icc_archflag=$flag; break])
|
136
|
+
done
|
137
|
+
fi
|
138
|
+
AC_MSG_CHECKING([for icc architecture flag])
|
139
|
+
AC_MSG_RESULT($icc_archflag)
|
140
|
+
if test "x$icc_archflag" != xunknown; then
|
141
|
+
CFLAGS="$CFLAGS $icc_archflag"
|
142
|
+
fi
|
143
|
+
fi
|
144
|
+
;;
|
145
|
+
|
146
|
+
nvhpc)
|
147
|
+
# default optimization flags for nvhpc
|
148
|
+
CFLAGS="$CFLAGS -O3"
|
149
|
+
;;
|
150
|
+
|
151
|
+
gnu)
|
152
|
+
# default optimization flags for gcc on all systems
|
153
|
+
CFLAGS="$CFLAGS -O3 -fomit-frame-pointer"
|
154
|
+
|
155
|
+
# -malign-double for x86 systems
|
156
|
+
# LIBFFI_LOCAL: don't do this.
|
157
|
+
# The testsuite doesn't use these flags and we'll get test failures.
|
158
|
+
# AX_CHECK_COMPILE_FLAG(-malign-double, CFLAGS="$CFLAGS -malign-double")
|
159
|
+
|
160
|
+
# -fstrict-aliasing for gcc-2.95+
|
161
|
+
AX_CHECK_COMPILE_FLAG(-fstrict-aliasing,
|
162
|
+
CFLAGS="$CFLAGS -fstrict-aliasing")
|
163
|
+
|
164
|
+
# note that we enable "unsafe" fp optimization with other compilers, too
|
165
|
+
AX_CHECK_COMPILE_FLAG(-ffast-math, CFLAGS="$CFLAGS -ffast-math")
|
166
|
+
|
167
|
+
AX_GCC_ARCHFLAG($acx_maxopt_portable)
|
168
|
+
;;
|
169
|
+
|
170
|
+
microsoft)
|
171
|
+
# default optimization flags for MSVC opt builds
|
172
|
+
CFLAGS="$CFLAGS -O2"
|
173
|
+
;;
|
174
|
+
esac
|
175
|
+
|
176
|
+
if test -z "$CFLAGS"; then
|
177
|
+
echo ""
|
178
|
+
echo "********************************************************"
|
179
|
+
echo "* WARNING: Don't know the best CFLAGS for this system *"
|
180
|
+
echo "* Use ./configure CFLAGS=... to specify your own flags *"
|
181
|
+
echo "* (otherwise, a default of CFLAGS=-O3 will be used) *"
|
182
|
+
echo "********************************************************"
|
183
|
+
echo ""
|
184
|
+
CFLAGS="$CFLAGS -O3"
|
185
|
+
fi
|
186
|
+
|
187
|
+
AX_CHECK_COMPILE_FLAG($CFLAGS, [], [
|
188
|
+
echo ""
|
189
|
+
echo "********************************************************"
|
190
|
+
echo "* WARNING: The guessed CFLAGS don't seem to work with *"
|
191
|
+
echo "* your compiler. *"
|
192
|
+
echo "* Use ./configure CFLAGS=... to specify your own flags *"
|
193
|
+
echo "********************************************************"
|
194
|
+
echo ""
|
195
|
+
])
|
196
|
+
|
197
|
+
fi
|
198
|
+
])
|
@@ -0,0 +1,158 @@
|
|
1
|
+
# ===========================================================================
|
2
|
+
# https://www.gnu.org/software/autoconf-archive/ax_cflags_warn_all.html
|
3
|
+
# ===========================================================================
|
4
|
+
#
|
5
|
+
# SYNOPSIS
|
6
|
+
#
|
7
|
+
# AX_CFLAGS_WARN_ALL [(shellvar[, default[, action-if-found[, action-if-not-found]]])]
|
8
|
+
# AX_CXXFLAGS_WARN_ALL [(shellvar[, default[, action-if-found[, action-if-not-found]]])]
|
9
|
+
# AX_FCFLAGS_WARN_ALL [(shellvar[, default[, action-if-found[, action-if-not-found]]])]
|
10
|
+
#
|
11
|
+
# DESCRIPTION
|
12
|
+
#
|
13
|
+
# Specify compiler options that enable most reasonable warnings. For the
|
14
|
+
# GNU Compiler Collection (GCC), for example, it will be "-Wall". The
|
15
|
+
# result is added to shellvar, one of CFLAGS, CXXFLAGS or FCFLAGS if the
|
16
|
+
# first parameter is not specified.
|
17
|
+
#
|
18
|
+
# Each of these macros accepts the following optional arguments:
|
19
|
+
#
|
20
|
+
# - $1 - shellvar
|
21
|
+
# shell variable to use (CFLAGS, CXXFLAGS or FCFLAGS if not
|
22
|
+
# specified, depending on macro)
|
23
|
+
#
|
24
|
+
# - $2 - default
|
25
|
+
# value to use for flags if compiler vendor cannot be determined (by
|
26
|
+
# default, "")
|
27
|
+
#
|
28
|
+
# - $3 - action-if-found
|
29
|
+
# action to take if the compiler vendor has been successfully
|
30
|
+
# determined (by default, add the appropriate compiler flags to
|
31
|
+
# shellvar)
|
32
|
+
#
|
33
|
+
# - $4 - action-if-not-found
|
34
|
+
# action to take if the compiler vendor has not been determined or
|
35
|
+
# is unknown (by default, add the default flags, or "" if not
|
36
|
+
# specified, to shellvar)
|
37
|
+
#
|
38
|
+
# These macros use AX_COMPILER_VENDOR to determine which flags should be
|
39
|
+
# returned for a given compiler. Not all compilers currently have flags
|
40
|
+
# defined for them; patches are welcome. If need be, compiler flags may
|
41
|
+
# be made language-dependent: use a construct like the following:
|
42
|
+
#
|
43
|
+
# [vendor_name], [m4_if(_AC_LANG_PREFIX,[C], VAR="--relevant-c-flags",dnl
|
44
|
+
# m4_if(_AC_LANG_PREFIX,[CXX], VAR="--relevant-c++-flags",dnl
|
45
|
+
# m4_if(_AC_LANG_PREFIX,[FC], VAR="--relevant-fortran-flags",dnl
|
46
|
+
# VAR="$2"; FOUND="no")))],
|
47
|
+
#
|
48
|
+
# Note: These macros also depend on AX_PREPEND_FLAG.
|
49
|
+
#
|
50
|
+
# LICENSE
|
51
|
+
#
|
52
|
+
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
|
53
|
+
# Copyright (c) 2010 Rhys Ulerich <rhys.ulerich@gmail.com>
|
54
|
+
# Copyright (c) 2018 John Zaitseff <J.Zaitseff@zap.org.au>
|
55
|
+
#
|
56
|
+
# This program is free software; you can redistribute it and/or modify it
|
57
|
+
# under the terms of the GNU General Public License as published by the
|
58
|
+
# Free Software Foundation; either version 3 of the License, or (at your
|
59
|
+
# option) any later version.
|
60
|
+
#
|
61
|
+
# This program is distributed in the hope that it will be useful, but
|
62
|
+
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
63
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
64
|
+
# Public License for more details.
|
65
|
+
#
|
66
|
+
# You should have received a copy of the GNU General Public License along
|
67
|
+
# with this program. If not, see <https://www.gnu.org/licenses/>.
|
68
|
+
#
|
69
|
+
# As a special exception, the respective Autoconf Macro's copyright owner
|
70
|
+
# gives unlimited permission to copy, distribute and modify the configure
|
71
|
+
# scripts that are the output of Autoconf when processing the Macro. You
|
72
|
+
# need not follow the terms of the GNU General Public License when using
|
73
|
+
# or distributing such scripts, even though portions of the text of the
|
74
|
+
# Macro appear in them. The GNU General Public License (GPL) does govern
|
75
|
+
# all other use of the material that constitutes the Autoconf Macro.
|
76
|
+
#
|
77
|
+
# This special exception to the GPL applies to versions of the Autoconf
|
78
|
+
# Macro released by the Autoconf Archive. When you make and distribute a
|
79
|
+
# modified version of the Autoconf Macro, you may extend this special
|
80
|
+
# exception to the GPL to apply to your modified version as well.
|
81
|
+
|
82
|
+
#serial 25
|
83
|
+
|
84
|
+
AC_DEFUN([AX_FLAGS_WARN_ALL], [
|
85
|
+
AX_REQUIRE_DEFINED([AX_PREPEND_FLAG])dnl
|
86
|
+
AC_REQUIRE([AX_COMPILER_VENDOR])dnl
|
87
|
+
|
88
|
+
AS_VAR_PUSHDEF([FLAGS], [m4_default($1,_AC_LANG_PREFIX[]FLAGS)])dnl
|
89
|
+
AS_VAR_PUSHDEF([VAR], [ac_cv_[]_AC_LANG_ABBREV[]flags_warn_all])dnl
|
90
|
+
AS_VAR_PUSHDEF([FOUND], [ac_save_[]_AC_LANG_ABBREV[]flags_warn_all_found])dnl
|
91
|
+
|
92
|
+
AC_CACHE_CHECK([FLAGS for most reasonable warnings], VAR, [
|
93
|
+
VAR=""
|
94
|
+
FOUND="yes"
|
95
|
+
dnl Cases are listed in the order found in ax_compiler_vendor.m4
|
96
|
+
AS_CASE("$ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor",
|
97
|
+
[intel], [VAR="-w2"],
|
98
|
+
[ibm], [VAR="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd"],
|
99
|
+
[pathscale], [],
|
100
|
+
[clang], [VAR="-Wall"],
|
101
|
+
[cray], [VAR="-h msglevel 2"],
|
102
|
+
[fujitsu], [],
|
103
|
+
[sdcc], [],
|
104
|
+
[sx], [VAR="-pvctl[,]fullmsg"],
|
105
|
+
[portland], [],
|
106
|
+
[gnu], [VAR="-Wall"],
|
107
|
+
[sun], [VAR="-v"],
|
108
|
+
[hp], [VAR="+w1"],
|
109
|
+
[dec], [VAR="-verbose -w0 -warnprotos"],
|
110
|
+
[borland], [],
|
111
|
+
[comeau], [],
|
112
|
+
[kai], [],
|
113
|
+
[lcc], [],
|
114
|
+
[sgi], [VAR="-fullwarn"],
|
115
|
+
[microsoft], [],
|
116
|
+
[metrowerks], [],
|
117
|
+
[watcom], [],
|
118
|
+
[tcc], [],
|
119
|
+
[unknown], [
|
120
|
+
VAR="$2"
|
121
|
+
FOUND="no"
|
122
|
+
],
|
123
|
+
[
|
124
|
+
AC_MSG_WARN([Unknown compiler vendor returned by [AX_COMPILER_VENDOR]])
|
125
|
+
VAR="$2"
|
126
|
+
FOUND="no"
|
127
|
+
]
|
128
|
+
)
|
129
|
+
|
130
|
+
AS_IF([test "x$FOUND" = "xyes"], [dnl
|
131
|
+
m4_default($3, [AS_IF([test "x$VAR" != "x"], [AX_PREPEND_FLAG([$VAR], [FLAGS])])])
|
132
|
+
], [dnl
|
133
|
+
m4_default($4, [m4_ifval($2, [AX_PREPEND_FLAG([$VAR], [FLAGS])], [true])])
|
134
|
+
])dnl
|
135
|
+
])dnl
|
136
|
+
|
137
|
+
AS_VAR_POPDEF([FOUND])dnl
|
138
|
+
AS_VAR_POPDEF([VAR])dnl
|
139
|
+
AS_VAR_POPDEF([FLAGS])dnl
|
140
|
+
])dnl AX_FLAGS_WARN_ALL
|
141
|
+
|
142
|
+
AC_DEFUN([AX_CFLAGS_WARN_ALL], [dnl
|
143
|
+
AC_LANG_PUSH([C])
|
144
|
+
AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4])
|
145
|
+
AC_LANG_POP([C])
|
146
|
+
])dnl
|
147
|
+
|
148
|
+
AC_DEFUN([AX_CXXFLAGS_WARN_ALL], [dnl
|
149
|
+
AC_LANG_PUSH([C++])
|
150
|
+
AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4])
|
151
|
+
AC_LANG_POP([C++])
|
152
|
+
])dnl
|
153
|
+
|
154
|
+
AC_DEFUN([AX_FCFLAGS_WARN_ALL], [dnl
|
155
|
+
AC_LANG_PUSH([Fortran])
|
156
|
+
AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4])
|
157
|
+
AC_LANG_POP([Fortran])
|
158
|
+
])dnl
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# ===========================================================================
|
2
|
+
# https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
|
3
|
+
# ===========================================================================
|
4
|
+
#
|
5
|
+
# SYNOPSIS
|
6
|
+
#
|
7
|
+
# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
|
8
|
+
#
|
9
|
+
# DESCRIPTION
|
10
|
+
#
|
11
|
+
# Check whether the given FLAG works with the current language's compiler
|
12
|
+
# or gives an error. (Warnings, however, are ignored)
|
13
|
+
#
|
14
|
+
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
|
15
|
+
# success/failure.
|
16
|
+
#
|
17
|
+
# If EXTRA-FLAGS is defined, it is added to the current language's default
|
18
|
+
# flags (e.g. CFLAGS) when the check is done. The check is thus made with
|
19
|
+
# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
|
20
|
+
# force the compiler to issue an error when a bad flag is given.
|
21
|
+
#
|
22
|
+
# INPUT gives an alternative input source to AC_COMPILE_IFELSE.
|
23
|
+
#
|
24
|
+
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
25
|
+
# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
|
26
|
+
#
|
27
|
+
# LICENSE
|
28
|
+
#
|
29
|
+
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
|
30
|
+
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
|
31
|
+
#
|
32
|
+
# Copying and distribution of this file, with or without modification, are
|
33
|
+
# permitted in any medium without royalty provided the copyright notice
|
34
|
+
# and this notice are preserved. This file is offered as-is, without any
|
35
|
+
# warranty.
|
36
|
+
|
37
|
+
#serial 6
|
38
|
+
|
39
|
+
AC_DEFUN([AX_CHECK_COMPILE_FLAG],
|
40
|
+
[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
|
41
|
+
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
|
42
|
+
AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
|
43
|
+
ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
|
44
|
+
_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
|
45
|
+
AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
|
46
|
+
[AS_VAR_SET(CACHEVAR,[yes])],
|
47
|
+
[AS_VAR_SET(CACHEVAR,[no])])
|
48
|
+
_AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
|
49
|
+
AS_VAR_IF(CACHEVAR,yes,
|
50
|
+
[m4_default([$2], :)],
|
51
|
+
[m4_default([$3], :)])
|
52
|
+
AS_VAR_POPDEF([CACHEVAR])dnl
|
53
|
+
])dnl AX_CHECK_COMPILE_FLAGS
|
@@ -0,0 +1,119 @@
|
|
1
|
+
# ===========================================================================
|
2
|
+
# https://www.gnu.org/software/autoconf-archive/ax_compiler_vendor.html
|
3
|
+
# ===========================================================================
|
4
|
+
#
|
5
|
+
# SYNOPSIS
|
6
|
+
#
|
7
|
+
# AX_COMPILER_VENDOR
|
8
|
+
#
|
9
|
+
# DESCRIPTION
|
10
|
+
#
|
11
|
+
# Determine the vendor of the C, C++ or Fortran compiler. The vendor is
|
12
|
+
# returned in the cache variable $ax_cv_c_compiler_vendor for C,
|
13
|
+
# $ax_cv_cxx_compiler_vendor for C++ or $ax_cv_fc_compiler_vendor for
|
14
|
+
# (modern) Fortran. The value is one of "intel", "ibm", "pathscale",
|
15
|
+
# "clang" (LLVM), "cray", "fujitsu", "sdcc", "sx", "nvhpc" (NVIDIA HPC
|
16
|
+
# Compiler), "portland" (PGI), "gnu" (GCC), "sun" (Oracle Developer
|
17
|
+
# Studio), "hp", "dec", "borland", "comeau", "kai", "lcc", "sgi",
|
18
|
+
# "microsoft", "metrowerks", "watcom", "tcc" (Tiny CC) or "unknown" (if
|
19
|
+
# the compiler cannot be determined).
|
20
|
+
#
|
21
|
+
# To check for a Fortran compiler, you must first call AC_FC_PP_SRCEXT
|
22
|
+
# with an appropriate preprocessor-enabled extension. For example:
|
23
|
+
#
|
24
|
+
# AC_LANG_PUSH([Fortran])
|
25
|
+
# AC_PROG_FC
|
26
|
+
# AC_FC_PP_SRCEXT([F])
|
27
|
+
# AX_COMPILER_VENDOR
|
28
|
+
# AC_LANG_POP([Fortran])
|
29
|
+
#
|
30
|
+
# LICENSE
|
31
|
+
#
|
32
|
+
# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
|
33
|
+
# Copyright (c) 2008 Matteo Frigo
|
34
|
+
# Copyright (c) 2018-19 John Zaitseff <J.Zaitseff@zap.org.au>
|
35
|
+
#
|
36
|
+
# This program is free software: you can redistribute it and/or modify it
|
37
|
+
# under the terms of the GNU General Public License as published by the
|
38
|
+
# Free Software Foundation, either version 3 of the License, or (at your
|
39
|
+
# option) any later version.
|
40
|
+
#
|
41
|
+
# This program is distributed in the hope that it will be useful, but
|
42
|
+
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
43
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
44
|
+
# Public License for more details.
|
45
|
+
#
|
46
|
+
# You should have received a copy of the GNU General Public License along
|
47
|
+
# with this program. If not, see <https://www.gnu.org/licenses/>.
|
48
|
+
#
|
49
|
+
# As a special exception, the respective Autoconf Macro's copyright owner
|
50
|
+
# gives unlimited permission to copy, distribute and modify the configure
|
51
|
+
# scripts that are the output of Autoconf when processing the Macro. You
|
52
|
+
# need not follow the terms of the GNU General Public License when using
|
53
|
+
# or distributing such scripts, even though portions of the text of the
|
54
|
+
# Macro appear in them. The GNU General Public License (GPL) does govern
|
55
|
+
# all other use of the material that constitutes the Autoconf Macro.
|
56
|
+
#
|
57
|
+
# This special exception to the GPL applies to versions of the Autoconf
|
58
|
+
# Macro released by the Autoconf Archive. When you make and distribute a
|
59
|
+
# modified version of the Autoconf Macro, you may extend this special
|
60
|
+
# exception to the GPL to apply to your modified version as well.
|
61
|
+
|
62
|
+
#serial 32
|
63
|
+
|
64
|
+
AC_DEFUN([AX_COMPILER_VENDOR], [dnl
|
65
|
+
AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor, [dnl
|
66
|
+
dnl If you modify this list of vendors, please add similar support
|
67
|
+
dnl to ax_compiler_version.m4 if at all possible.
|
68
|
+
dnl
|
69
|
+
dnl Note: Do NOT check for GCC first since some other compilers
|
70
|
+
dnl define __GNUC__ to remain compatible with it. Compilers that
|
71
|
+
dnl are very slow to start (such as Intel) are listed first.
|
72
|
+
|
73
|
+
vendors="
|
74
|
+
intel: __ICC,__ECC,__INTEL_COMPILER
|
75
|
+
ibm: __xlc__,__xlC__,__IBMC__,__IBMCPP__,__ibmxl__
|
76
|
+
pathscale: __PATHCC__,__PATHSCALE__
|
77
|
+
clang: __clang__
|
78
|
+
cray: _CRAYC
|
79
|
+
fujitsu: __FUJITSU
|
80
|
+
sdcc: SDCC,__SDCC
|
81
|
+
sx: _SX
|
82
|
+
nvhpc: __NVCOMPILER
|
83
|
+
portland: __PGI
|
84
|
+
gnu: __GNUC__
|
85
|
+
sun: __SUNPRO_C,__SUNPRO_CC,__SUNPRO_F90,__SUNPRO_F95
|
86
|
+
hp: __HP_cc,__HP_aCC
|
87
|
+
dec: __DECC,__DECCXX,__DECC_VER,__DECCXX_VER
|
88
|
+
borland: __BORLANDC__,__CODEGEARC__,__TURBOC__
|
89
|
+
comeau: __COMO__
|
90
|
+
kai: __KCC
|
91
|
+
lcc: __LCC__
|
92
|
+
sgi: __sgi,sgi
|
93
|
+
microsoft: _MSC_VER
|
94
|
+
metrowerks: __MWERKS__
|
95
|
+
watcom: __WATCOMC__
|
96
|
+
tcc: __TINYC__
|
97
|
+
unknown: UNKNOWN
|
98
|
+
"
|
99
|
+
for ventest in $vendors; do
|
100
|
+
case $ventest in
|
101
|
+
*:)
|
102
|
+
vendor=$ventest
|
103
|
+
continue
|
104
|
+
;;
|
105
|
+
*)
|
106
|
+
vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")"
|
107
|
+
;;
|
108
|
+
esac
|
109
|
+
|
110
|
+
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[
|
111
|
+
#if !($vencpp)
|
112
|
+
thisisanerror;
|
113
|
+
#endif
|
114
|
+
]])], [break])
|
115
|
+
done
|
116
|
+
|
117
|
+
ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=`echo $vendor | cut -d: -f1`
|
118
|
+
])
|
119
|
+
])dnl
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# ===========================================================================
|
2
|
+
# https://www.gnu.org/software/autoconf-archive/ax_configure_args.html
|
3
|
+
# ===========================================================================
|
4
|
+
#
|
5
|
+
# SYNOPSIS
|
6
|
+
#
|
7
|
+
# AX_CONFIGURE_ARGS
|
8
|
+
#
|
9
|
+
# DESCRIPTION
|
10
|
+
#
|
11
|
+
# Helper macro for AX_ENABLE_BUILDDIR.
|
12
|
+
#
|
13
|
+
# The traditional way of starting a subdir-configure is running the script
|
14
|
+
# with ${1+"$@"} but since autoconf 2.60 this is broken. Instead we have
|
15
|
+
# to rely on eval'ing $ac_configure_args however some old autoconf
|
16
|
+
# versions do not provide that. To ensure maximum portability of autoconf
|
17
|
+
# extension macros this helper can be AC_REQUIRE'd so that
|
18
|
+
# $ac_configure_args will always be present.
|
19
|
+
#
|
20
|
+
# Sadly, the traditional "exec $SHELL" of the enable_builddir macros is
|
21
|
+
# spoiled now and must be replaced by "eval + exit $?".
|
22
|
+
#
|
23
|
+
# Example:
|
24
|
+
#
|
25
|
+
# AC_DEFUN([AX_ENABLE_SUBDIR],[dnl
|
26
|
+
# AC_REQUIRE([AX_CONFIGURE_ARGS])dnl
|
27
|
+
# eval $SHELL $ac_configure_args || exit $?
|
28
|
+
# ...])
|
29
|
+
#
|
30
|
+
# LICENSE
|
31
|
+
#
|
32
|
+
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
|
33
|
+
#
|
34
|
+
# Copying and distribution of this file, with or without modification, are
|
35
|
+
# permitted in any medium without royalty provided the copyright notice
|
36
|
+
# and this notice are preserved. This file is offered as-is, without any
|
37
|
+
# warranty.
|
38
|
+
|
39
|
+
#serial 14
|
40
|
+
|
41
|
+
AC_DEFUN([AX_CONFIGURE_ARGS],[
|
42
|
+
# [$]@ is unusable in 2.60+ but earlier autoconf had no ac_configure_args
|
43
|
+
if test "${ac_configure_args+set}" != "set" ; then
|
44
|
+
ac_configure_args=
|
45
|
+
for ac_arg in ${1+"[$]@"}; do
|
46
|
+
ac_configure_args="$ac_configure_args '$ac_arg'"
|
47
|
+
done
|
48
|
+
fi
|
49
|
+
])
|