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