Mercurial > pub > dyncall > dyncall
comparison doc/manual/manual_build.tex @ 0:3e629dc19168
initial from svn dyncall-1745
author | Daniel Adler |
---|---|
date | Thu, 19 Mar 2015 22:24:28 +0100 |
parents | |
children | 8326c5ced916 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:3e629dc19168 |
---|---|
1 %////////////////////////////////////////////////////////////////////////////// | |
2 % | |
3 % Copyright (c) 2007,2009 Daniel Adler <dadler@uni-goettingen.de>, | |
4 % Tassilo Philipp <tphilipp@potion-studios.com> | |
5 % | |
6 % Permission to use, copy, modify, and distribute this software for any | |
7 % purpose with or without fee is hereby granted, provided that the above | |
8 % copyright notice and this permission notice appear in all copies. | |
9 % | |
10 % THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 % WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 % MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 % ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 % WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 % ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 % OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 % | |
18 %////////////////////////////////////////////////////////////////////////////// | |
19 | |
20 \newpage | |
21 \section{Building the library} | |
22 | |
23 The library has been built and used successfully on several | |
24 platform/architecture configurations and build systems. | |
25 Please see notes on specfic platforms to check if the target | |
26 architecture is currently supported. | |
27 | |
28 | |
29 \subsection{Requirements} | |
30 | |
31 The following tools are supported directly to build the \product{dyncall} library. | |
32 However, as the number of source files to be compiled for a given | |
33 platform is small, it shouldn't be difficult to build it manually with | |
34 another toolchain. | |
35 \begin{itemize} | |
36 \item C compiler to build the \product{dyncall} library (GCC, Clang, SunPro or Microsoft C/C++ compiler) | |
37 \item C++ compiler to build the optional test cases (GCC, Clang, SunPro or Microsoft C/C++ compiler) | |
38 \item BSD make, GNU make, Microsoft nmake or mk (on Plan9) as automated build tools | |
39 \item Python (optional - for generation of some test cases) | |
40 \item Lua (optional - for generation of some test cases) | |
41 \item CMake (optional support) | |
42 \end{itemize} | |
43 | |
44 | |
45 \subsection{Supported/tested platforms and build systems} | |
46 | |
47 Building \product{dyncall} is a straightforward two-step process, first configure, then make. The | |
48 library should be able to be built with the default operating systems' build tools, so BSD make on | |
49 BSD and derived systems, GNU make on GNU and compatible, mk on Plan9, nmake on Windows, etc.. | |
50 This is a detailed overview of platforms and their build tools that are known to build | |
51 \product{dyncall}:\\ | |
52 \\ | |
53 | |
54 | |
55 \begin{tabular}{l l l} | |
56 {\bf{\large Platform}} & Build Tool(s) & Compiler, SDK \\ | |
57 \hline | |
58 {\bf{\large Windows}} & nmake,Visual Studio & cl, cygwin (gcc), mingw (gcc) \\ | |
59 {\bf{\large Unix-like}} & GNU/BSD/Sun make & gcc, clang, sunc \\ | |
60 {\bf{\large Plan9}} & mk & 8c \\ | |
61 {\bf{\large Haiku/BeOS}} & GNU make & gcc \\ | |
62 {\bf{\large iOS/iPhone}} & GNU make & gcc and iPhone SDK on Mac OS X \\ | |
63 {\bf{\large Nintendo DS}} & nmake & devkitPro\cite{devkitPro} tools on Windows \\ | |
64 {\bf{\large Playstation Portable}} & GNU make & psptoolchain\cite{psptoolchain} tools \\ | |
65 | |
66 \end{tabular}\\ | |
67 | |
68 \pagebreak | |
69 | |
70 \subsection{Build instructions} | |
71 | |
72 | |
73 \begin{enumerate} | |
74 \item Configure the source (not needed for Makefile.embedded) | |
75 | |
76 \paragraph{*nix flavour} | |
77 \begin{lstlisting} | |
78 ./configure [--option ...] | |
79 \end{lstlisting} | |
80 | |
81 Available options (omit for defaults): | |
82 | |
83 \begin{tabular}{ll} | |
84 {\tt --help} & display help \\ | |
85 {\tt --prefix={\it path}} & specify installation prefix (Unix shell) \\ | |
86 {\tt --target={\it platform}} & MacOSX,iOS,iPhoneSimulator,PSP,... \\ | |
87 {\tt --sdk={\it version}} & SDK version \\ | |
88 \end{tabular} | |
89 | |
90 \paragraph{Windows flavour, and cross-build from Windows (PSP, NDS, etc.)} | |
91 | |
92 \begin{lstlisting} | |
93 .\configure [/option ...] | |
94 \end{lstlisting} | |
95 | |
96 Available options: | |
97 | |
98 \begin{tabular}{ll} | |
99 {\tt /?} & display help \\ | |
100 {\tt /prefix {\it path}} & set installation prefix (GNU make only) \\ | |
101 {\tt /prefix-bd {\it path}} & set build directory prefix (GNU make only) \\ | |
102 {\tt /target-x86} & build for x86 architecture (default) \\ | |
103 {\tt /target-x64} & build for x64 architecture \\ | |
104 {\tt /target-psp} & build for PlayStation Portable (homebrew SDK) \\ | |
105 {\tt /target-nds-arm} & build for Nintendo DS (devkitPro, ARM mode) \\ | |
106 {\tt /target-nds-thumb} & build for Nintendo DS (devkitPro, THUMB mode) \\ | |
107 {\tt /tool-msvc} & use Microsoft Visual C++ compiler (default) \\ | |
108 {\tt /tool-gcc} & use GNU Compiler Collection \\ | |
109 {\tt /asm-ml} & use Microsoft Macro Assembler (default) \\ | |
110 {\tt /asm-as} & use the GNU Assembler \\ | |
111 {\tt /asm-nasm} & use NASM Assembler \\ | |
112 {\tt /config-release} & build release version (default) \\ | |
113 {\tt /config-debug} & build debug version \\ | |
114 \end{tabular} | |
115 | |
116 | |
117 \paragraph{Plan 9 flavour} | |
118 | |
119 \begin{lstlisting} | |
120 ./configure.rc [--option ...] | |
121 \end{lstlisting} | |
122 | |
123 Available options (none, at the moment): | |
124 | |
125 \begin{tabular}{ll} | |
126 {\tt --help} & display help \\ | |
127 \end{tabular} | |
128 | |
129 | |
130 \item Build the static libraries \product{dyncall}, \product{dynload} and \product{dyncallback} | |
131 \begin{lstlisting} | |
132 make # for {GNU,BSD} Make | |
133 nmake /f Nmakefile # for NMake on Windows | |
134 mk # for mk on Plan9 | |
135 \end{lstlisting} | |
136 | |
137 \item Install libraries and includes (supported for GNU and BSD make based builds, only) | |
138 \begin{lstlisting} | |
139 make install | |
140 \end{lstlisting} | |
141 | |
142 \item Optionally, build the test suite | |
143 \begin{lstlisting} | |
144 make tests # for {GNU,BSD} Make | |
145 nmake /f Nmakefile tests # for NMake on Windows | |
146 mk tests # for mk on Plan9 | |
147 \end{lstlisting}% @@@ check Plan9, should work already | |
148 \end{enumerate} | |
149 | |
150 \subsection{Build-tool specific notes} | |
151 | |
152 Some platforms require some manual tweaks: | |
153 | |
154 Problem: Build fails because CC and/or related are not set, or different compiler, | |
155 linker, etc. should be used. | |
156 | |
157 Solution: Set the 'CC' and other environment variables explicitly to the desired | |
158 tools. E.g.: | |
159 | |
160 \begin{lstlisting} | |
161 CC=gcc make | |
162 \end{lstlisting} | |
163 | |
164 | |
165 Problem: On windows using mingw and msys/unixutils 'Make', the make uses | |
166 'cc' for C compilation, which does not exist in mingw. | |
167 | |
168 Solution: Set the 'CC' environment variable explicitly to 'gcc' (as in | |
169 the example above). | |
170 | |
171 \subsection{Build with CMake} | |
172 | |
173 \begin{lstlisting} | |
174 cmake -DCMAKE_INSTALL_PREFIX=<location> | |
175 make | |
176 \end{lstlisting} | |
177 |