Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/hongyuanjia/dyncall
- Owner: hongyuanjia
- License: other
- Created: 2022-12-16T02:16:48.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2022-12-16T02:20:07.000Z (about 2 years ago)
- Last Synced: 2024-10-13T19:09:00.677Z (2 months ago)
- Language: C
- Homepage: https://dyncall.org
- Size: 6.65 MB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README
- Changelog: ChangeLog
- License: LICENSE
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
- SolarisBuilding the libraries
----------------------Using configure shell script and GNU/BSD/Sun make system.
$ ./configure
$ make
$ make installTesting:
$ make tests
$ make run-testsBuild 'out-of-source' (not for nmake or mk based builds)
--------------------------------------------------------$ cd
$ /configure --prefix=
$ make
$ sudo make installBuilding using CMake
--------------------$ cmake
$ make
$ sudo make installBuilding 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.