annotate README @ 457:90b1d927912a

- suite_aggrs: make sure random memory used doesn't ever result in NaN fp values (for every possible address), as this messes with result comparison
author Tassilo Philipp
date Fri, 28 Jan 2022 14:11:21 +0100
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