annotate README @ 632:ed19b429a152

- added explicit arm64 target, and clang tool options to Windows' configure.bat - configure.{bat,rc} now writing Makefile.config, for consistency/compatibility (e.g. configure.bat can now be used to set up env flags for a non-nmake toolchain) - simplified/decluttered Windows and Plan9 configure scripts (removal of unused/stale options, ...) - removed stale test/makepkg.sh helper
author Tassilo Philipp
date Sat, 19 Nov 2022 15:45:41 +0100
parents 85c80b0c021c
children
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
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
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
26
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
27
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
28 Building the libraries
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
29 ----------------------
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
30
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
31 Prequisites:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
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
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
34 - Build system such as 'shell/make', cmake, nmake (windows) or mk (plan9).
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
35
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
36
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
37 Supported Architectures and ABIs:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
38 ---------------------------------
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
39
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
40 - x86 32/64-bit (cdecl, fastcall, stdcall, C++ this calls, syscalls, plan9)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
41 - 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
42 - 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
43 - 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
44 - Sparc 32/64-bit (v7/8 and v9)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
45
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
46
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
47 Supported Operating Systems:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
48 ----------------------------
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
49
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
50 - Android
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
51 - *BSD
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
52 - Haiku
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
53 - iOS
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
54 - Linux
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
55 - Mac OS X
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
56 - Microsoft Windows
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
57 - Minix
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
58 - Nintendo DS Homebrew
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
59 - Plan9 / 9front
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
60 - Playstation Portable Homebrew
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
61 - ReactOS
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
62 - Solaris
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
63
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
64
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
65 Building the libraries
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
66 ----------------------
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
67
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
68 Using configure shell script and GNU/BSD/Sun make system.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
69
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
70 $ ./configure
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
71 $ make
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
72 $ make install
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
73
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
74 Testing:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
75
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
76 $ make tests
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
77 $ make run-tests
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
78
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
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
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
82
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
83 $ cd <build_dir>
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
84 $ <src_dir>/configure --prefix=<install_dir>
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
85 $ make
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
86 $ sudo make install
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
87
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
88
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
89 Building using CMake
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
90 --------------------
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
91
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
92 $ cmake
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
93 $ make
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
94 $ sudo make install
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
95
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
96
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
97 Building on Windows
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
98 -------------------
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
99
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
100 See doc/README.Windows
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
101
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
102
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
103 Platform-specific build details
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
104 -------------------------------
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
105
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
106 See doc/README.*
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
107
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
108
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
109 Building the manual
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
110 -------------------
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
111
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
112 Make sure pdflatex is installed and run
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
113
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
114 $ make docs
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
115
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
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
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
119