annotate README @ 517:f8856e29b512

- tests: made "ordered" signature generation code shareable, and added possibility to specify return types, separately (mainly to include 'void')
author Tassilo Philipp
date Mon, 11 Apr 2022 14:50:35 +0200
parents 85c80b0c021c
children ed19b429a152
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
1 dyncall - A Generic Dynamic FFI package
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
2 =======================================
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
3
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
4 dyncall is a low-level toolkit providing a portable abstraction for
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
5 handling native code dynamically at run time.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
6 It comprises three independent components, available as C libraries, namely:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
7
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
8 - 'dyncall' for making function calls,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
9 - 'dyncallback' or writing generic callback handlers, and
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
10 - 'dynload' for loading code.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
11
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
12 The package provides abstractions to the Application Binary Interface
7
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents: 0
diff changeset
13 of various hardware platforms such as x86, AMD64, ARM32/64, PowerPC32/64,
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
14 MIPS32/64 and SPARC32/64.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
15
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
16 Our releases are thoroughly tested across all supported platforms using a
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
17 flexible test suite.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
18
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
19 A typical application for the use of dyncall is the back-end of a FFI
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
20 (foreign function interface) for scripting languages to connect with
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
21 the C/C++ world.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
22
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
23 The binary footprint of the package is approx. 10-20 kb, depending on
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
24 the platform.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
25 Besides the test suite already mentioned, comprehensive documentation is
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
26 available.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
27
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
28
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
29 Building the libraries
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
30 ----------------------
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
31
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
32 Prequisites:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
33 - C compiler such as gcc, clang, sunpro or msvc.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
34 - Assembler such as gas (gnu/apple), fbe or masm.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
35 - Build system such as 'shell/make', cmake, nmake (windows) or mk (plan9).
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
36
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
37
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
38 Supported Architectures and ABIs:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
39 ---------------------------------
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
40
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
41 - x86 32/64-bit (cdecl, fastcall, stdcall, C++ this calls, syscalls, plan9)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
42 - ARM AArch32/64 (32: ARM/Thumb mode, v4t-v7, oabi/eabi, soft/hardfloat ABIs; 64: AAPCS64)
303
c81374ac9fba - cleanup of outdated docs
Tassilo Philipp
parents: 7
diff changeset
43 - MIPS 32/64-bit (o32, n64, eabi, with o32 and n64 for soft- and hardfloat)
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
44 - PowerPC 32/64-bit (32: Mac OS X, System V; 64: System V little and big endian ELF ABI)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
45 - Sparc 32/64-bit (v7/8 and v9)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
46
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
47
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
48 Supported Operating Systems:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
49 ----------------------------
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
50
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
51 - Android
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
52 - *BSD
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
53 - Haiku
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
54 - iOS
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
55 - Linux
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
56 - Mac OS X
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
57 - Microsoft Windows
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
58 - Minix
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
59 - Nintendo DS Homebrew
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
60 - Plan9 / 9front
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
61 - Playstation Portable Homebrew
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
62 - ReactOS
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
63 - Solaris
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
64
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
65
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
66 Building the libraries
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
67 ----------------------
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
68
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
69 Using configure shell script and GNU/BSD/Sun make system.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
70
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
71 $ ./configure
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
72 $ make
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
73 $ make install
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
74
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
75 Testing:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
76
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
77 $ make tests
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
78 $ make run-tests
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
79
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
80
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
81 Build 'out-of-source'
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
82 ---------------------
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
83
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
84 $ cd <build_dir>
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
85 $ <src_dir>/configure --prefix=<install_dir>
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
86 $ make
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
87 $ sudo make install
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
88
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
89
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
90 Building using CMake
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
91 --------------------
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
92
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
93 $ cmake
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
94 $ make
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
95 $ sudo make install
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
96
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
97
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
98 Building on Windows
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
99 -------------------
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
100
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
101 See doc/README.Windows
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
102
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
103
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
104 Platform-specific build details
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
105 -------------------------------
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
106
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
107 See doc/README.*
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
108
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
109
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
110 Building the manual
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
111 -------------------
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
112
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
113 Make sure pdflatex is installed and run
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
114
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
115 $ make docs
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
116
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
117
320
85c80b0c021c - Darwin/macos fix for dlGetLibraryPath() to correctly fail on bogus handles
Tassilo Philipp
parents: 303
diff changeset
118 Please refer to http://www.dyncall.org, dyncall(3), dyncallback(3), dynload(3),
85c80b0c021c - Darwin/macos fix for dlGetLibraryPath() to correctly fail on bogus handles
Tassilo Philipp
parents: 303
diff changeset
119 the dyncall manual and platform-specific READMEs under doc/ for more information.
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
120