dyncall - A Generic Dynamic FFI package ======================================= The dyncall software distribution comprises a low-level toolkit for the implementation of Foreign Function Interfaces. It comprises abstractions to the Application Binary Interface of a number of hard- and software platforms. The software package comprises three C libraries, namely: - Library dyncall for making function calls, - Library dyncallback or writing generic callback handlers, and - Library dynload for loading code. The dyncall library provides a portable interface for calling C functions from within dynamic execution environments, such as interpreters or application servers. The dyncallback library allows to implement a callback handler in C for handling arbitrary C callbacks from within dynamic execution environments. The dynload library provides a thin abstraction layer for loading of code and also allows to enumerate the contents of shared librarys or DLLs. Typical applications for dyncall are FFI (foreign function interface) packages for scripting languages to connect with the C/C++ world. The binary footprint of the whole package is approx. 20 kb. Building the library -------------------- Prequisites: - C compiler such as gcc,clang,sunpro or msvc. - Assembler such as gas (GNU/apple), fbe or masm. Supported Architectures and ABIs: --------------------------------- - x86 32/64-bit (cdecl, fastcall, stdcall, C++ this calls, Syscalls) - ARM AArch32 (ARM/Thumb mode, v4t-v7, oabi/eabi, soft/hardfloat ABIs) - MIPS 32/64-bit (o32, n64, eabi) - PowerPC 32-bit (Mac OS X, System V) - Sparc 32/64-bit (v7/8 and v9) Supported Operating Systems: ---------------------------- - Android - *BSD - Haiku - iOS - Linux - Mac OS X - Microsoft Windows - Minix - Nintendo DS Homebrew - Plan9 / 9front - Playstation Portable Homebrew - ReactOS - Solaris Building the library -------------------- Using `homebrewed' configure shell script and GNU/BSD/Sun make system. $ ./configure $ make $ make install Testing: $ make tests $ make run-tests Out-of-source building: ---------------------- $ cd <build_dir> $ <src_dir>/configure --prefix=<install_dir> $ make $ sudo make install Building using CMake -------------------- $ cmake $ make $ sudo make install Please refer to http://www.dyncall.org, dyncall(3), the dyncall manual and platform-specific READMEs under doc/ for more information.