2
require_once("docutil.php");
3
page_head("Building BOINC on Unix");
6
The BOINC software consists of several components:
9
<img src=components.png>
13
<li> <b>Miscellaneous</b>: the API and various shared code.
14
<li> <b>Client</b>: the core client and Manager.
15
<li> <b>Server</b>: the scheduler, file upload handler, daemons, and tools.
17
On UNIX systems, the BOINC software can be built by typing
20
./configure [see options below]
25
<li> If you're creating a project, you need to build the server
26
and miscellaneous software
27
(you <b>don't</b> need to build the client software;
28
participants can get that from the BOINC web site).
31
./configure --disable-client
33
<li> If you're porting the BOINC client software to a new platform,
34
you need the client and miscellaneous components.
37
./configure --disable-server
39
<li> If you're developing or porting a BOINC application,
40
you need only the miscellaneous component.
43
./configure --disable-server --disable-client
48
<h3>Configuration</h3>
53
./configure [OPTION]... [VAR=VALUE]...
56
You can use environment
57
variables to override the choices made by `configure' or to help
58
it to find libraries and programs with nonstandard names/locations.
59
To assign environment variables (e.g., CC, CFLAGS...), specify them as
61
Example: to compile BOINC with strict compiler warnings, use
63
./configure CXXFLAGS=\"-Wall -W -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -fno-common \"
67
Defaults for the options are specified in brackets.
70
list_bar("Configuration");
71
list_item("-h, --help",
72
"display configuration options and exit"
74
list_item("--host=HOST",
75
"Use HOST to identify platforms in executable names.
76
For Linux/x86 builds, use
77
--build=i686-pc-linux-gnu"
79
list_bar("Installation directories");
80
list_item("--prefix=PREFIX",
81
"install architecture-independent files in PREFIX [/usr/local]
82
By default, `make install' will install all the files in
83
`/usr/local/bin', `/usr/local/lib' etc. You can specify
84
an installation prefix other than `/usr/local' using `--prefix',
85
for instance `--prefix=$HOME'.
86
For better control, use the options below."
89
list_bar("Optional Features");
90
list_item("--disable-FEATURE",
91
"do not include FEATURE (same as --enable-FEATURE=no)"
93
list_item("--enable-FEATURE[=ARG]",
94
"include FEATURE [ARG=yes]"
96
list_item("--enable-debug",
97
"enable tracing and debugging flags for all components"
99
list_item("--disable-server",
100
"disable building the server component"
102
list_item("--disable-client",
103
"disable building the client component
104
Default: --enable-server --enable-client: builds
105
both server and client.
107
If configure can't find WxWidgets it will build
108
the core client but not the Manager.
109
If you want to build only the core client,
110
run configure with --with-wxdir=junk.
113
list_item("--enable-maintainer-mode",
114
"enable make rules and dependencies not useful
115
(and sometimes confusing) to the casual installer"
117
list_item("--enable-shared[=PKGS]",
118
"build shared libraries [default=yes]"
120
list_item("--enable-static[=PKGS]",
121
"build static libraries [default=yes]"
123
list_item("--disable-static-linkage",
124
"disable static linking of certain libraries"
126
list_item("--enable-client-release",
127
"Try building a portable 'release-candidate'
128
(currently implemented for Linux and Solaris only):
129
this links libstd++ statically. You will probably
130
need gcc-3.0 for this to produce a portable
131
client-binary. It is therefore recommended to use
132
CC=gcc-3.0 and CXX=g++-3.0 for this. (Default = no)"
135
list_bar("Optional Packages");
136
list_item("--with-PACKAGE[=ARG]",
137
"use PACKAGE [ARG=yes]"
139
list_item("--without-PACKAGE",
140
"do not use PACKAGE (same as --with-PACKAGE=no)"
142
list_item("--with-x",
143
"use the X Window System"
145
list_item("--with-apple-opengl-framework",
146
"use Apple OpenGL framework (Mac OS X only)"
148
list_item("--with-wxdir=PATH",
149
"Use uninstalled version of wxWindows in PATH"
151
list_item("--with-wx-config=CONFIG",
152
"wx-config script to use (optional)"
155
list_bar("Environment variables");
163
"linker flags, e.g. -L<lib dir> if you have libraries in a
164
nonstandard directory <lib dir>"
166
list_item("CPPFLAGS",
167
"C/C++ preprocessor flags, e.g. -I<include dir> if you have
168
headers in a nonstandard directory <include dir>"
171
"C++ compiler command"
173
list_item("CXXFLAGS",
184
"Fortran 77 compiler command"
187
"Fortran 77 compiler flags"
189
list_item("MYSQL_CONFIG",
190
"mysql_config program"
196
<h2>Source layout</h2>
199
The top-level <code>Makefile.am</code> contains the
200
<code>SUBDIRS=</code> line which sets up directory recursion, and
201
the rules for creating source distributions.
203
Each subdirectory's <code>Makefile.am</code> contains the rules for
204
making the binaries and libraries in that directory and any extra
207
Usually you will want to run <code>make</code> from the top level
208
(the directory containing the file <code>configure</code>), but
209
sometimes it is useful to run <code>make</code> and <code>make
210
check</code> in certain subdirectories (e.g. <code>client/</code>).
212
<h2>Adding new directories</h2>
213
If you create a new directory with another <code>Makefile.am</code>,
216
<li> make sure the directory is referenced by
217
a <code>SUBDIRS=</code> line from its
218
parent <code>Makefile.am</code>
221
AC_CONFIG_FILES directive in <code>configure.ac</code>.
224
<h2>Version number</h2>
225
To set the BOINC client version:
229
in the BOINC top-level source directory. This updates
230
the <code>AC_INIT</code> line in
231
<code>configure.ac</code> and regenerates files that use the version numbers
232
(config.h, py/version.py, test/version.inc, client/win/win_config.h, Makefiles)