Mercurial > pub > dyncall > dyncall
view README @ 482:0f3b6898078d
suite_aggrs (still ahead of checked in version of dyncall, sorry):
- renaming struct -> aggr
- added knobs to:
* control struct packing
* whether to test immutability of aggr-by-val params
* how to copy aggrs (field by field or via = op (which might do a memcpy and thus copy padding garbage, also))
- some macros to reduce file sizes of generated cases
- setting default misalignment to 1
author | Tassilo Philipp |
---|---|
date | Wed, 16 Mar 2022 16:27:50 +0100 |
parents | 85c80b0c021c |
children | ed19b429a152 |
line wrap: on
line source
dyncall - A Generic Dynamic FFI package ======================================= dyncall is a low-level toolkit providing a portable abstraction for handling native code dynamically at run time. It comprises three independent components, available as C libraries, namely: - 'dyncall' for making function calls, - 'dyncallback' or writing generic callback handlers, and - 'dynload' for loading code. The package provides abstractions to the Application Binary Interface of various hardware platforms such as x86, AMD64, ARM32/64, PowerPC32/64, MIPS32/64 and SPARC32/64. Our releases are thoroughly tested across all supported platforms using a flexible test suite. A typical application for the use of dyncall is the back-end of a FFI (foreign function interface) for scripting languages to connect with the C/C++ world. The binary footprint of the package is approx. 10-20 kb, depending on the platform. Besides the test suite already mentioned, comprehensive documentation is available. Building the libraries ---------------------- Prequisites: - C compiler such as gcc, clang, sunpro or msvc. - Assembler such as gas (gnu/apple), fbe or masm. - Build system such as 'shell/make', cmake, nmake (windows) or mk (plan9). Supported Architectures and ABIs: --------------------------------- - x86 32/64-bit (cdecl, fastcall, stdcall, C++ this calls, syscalls, plan9) - ARM AArch32/64 (32: ARM/Thumb mode, v4t-v7, oabi/eabi, soft/hardfloat ABIs; 64: AAPCS64) - MIPS 32/64-bit (o32, n64, eabi, with o32 and n64 for soft- and hardfloat) - PowerPC 32/64-bit (32: Mac OS X, System V; 64: System V little and big endian ELF ABI) - 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 libraries ---------------------- Using configure shell script and GNU/BSD/Sun make system. $ ./configure $ make $ make install Testing: $ make tests $ make run-tests Build 'out-of-source' --------------------- $ cd <build_dir> $ <src_dir>/configure --prefix=<install_dir> $ make $ sudo make install Building using CMake -------------------- $ cmake $ make $ sudo make install Building on Windows ------------------- See doc/README.Windows Platform-specific build details ------------------------------- See doc/README.* Building the manual ------------------- Make sure pdflatex is installed and run $ make docs Please refer to http://www.dyncall.org, dyncall(3), dyncallback(3), dynload(3), the dyncall manual and platform-specific READMEs under doc/ for more information.