Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/hongyuanjia/dyncall

Read-only mirror of dyncall bindings source code from https://dyncall.org/pub/dyncall/dyncall/. See https://dyncall.org for details
https://github.com/hongyuanjia/dyncall

Last synced: about 1 month ago
JSON representation

Read-only mirror of dyncall bindings source code from https://dyncall.org/pub/dyncall/dyncall/. See https://dyncall.org for details

Awesome Lists containing this project

README

        

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 libraries before linking is approx. 10-60
kb, depending on the platform.
Comprehensive documentation is available.

Building the libraries
----------------------

Prequisites:
- C compiler such as gcc, clang, sunpro or msvc.
- Assembler such as gas (gnu/apple), llvm as, fbe, nasm 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' (not for nmake or mk based builds)
--------------------------------------------------------

$ cd
$ /configure --prefix=
$ 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.