Giter VIP home page Giter VIP logo

ryanjeffares / dyncall Goto Github PK

View Code? Open in Web Editor NEW

This project forked from lwjgl-ci/dyncall

0.0 0.0 0.0 836 KB

The dyncall library encapsulates architecture-, OS- and compiler-specific function call semantics in a virtual bind argument parameters from left to right and then call interface allowing programmers to call C functions in a completely dynamic manner.

Home Page: http://www.dyncall.org

License: Other

Shell 0.68% C++ 27.92% Python 1.30% C 51.87% Lua 0.55% Assembly 11.68% Makefile 1.64% CMake 2.93% Batchfile 0.38% Roff 1.04%

dyncall's Introduction

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.

dyncall's People

Contributors

spasi avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.