mirror of https://github.com/BOINC/boinc.git
228 lines
6.3 KiB
PHP
228 lines
6.3 KiB
PHP
<?php
|
|
require_once("docutil.php");
|
|
page_head("Building BOINC on Unix");
|
|
|
|
echo "
|
|
The BOINC software consists of several components:
|
|
<p>
|
|
<center>
|
|
<img src=components.png>
|
|
</center>
|
|
<p>
|
|
<ul>
|
|
<li> <b>Miscellaneous</b>: the API and various shared code.
|
|
<li> <b>Client</b>: the core client and Manager.
|
|
<li> <b>Server</b>: the scheduler, file upload handler, daemons, and tools.
|
|
</ul>
|
|
Which components you need depends on what you're doing:
|
|
<ul>
|
|
<li> If you're creating a project, you need to build the server
|
|
and miscellaneous software
|
|
(you <b>don't</b> need to build the client software;
|
|
participants can get that from the BOINC web site).
|
|
<li> If you're porting the BOINC client software to a new platform,
|
|
you need the client and miscellaneous components.
|
|
<li> If you're developing or porting a BOINC application,
|
|
you need only the miscellaneous component.
|
|
</ul>
|
|
|
|
On UNIX systems, the entire BOINC software can be built by typing
|
|
<pre>
|
|
./_autosetup
|
|
./configure [see options below]
|
|
make
|
|
make install [optional: installs libraries and header files useful for building apps]
|
|
</pre>
|
|
in the top directory.
|
|
|
|
<h3>Configuration</h3>
|
|
|
|
<p>
|
|
Usage:
|
|
<pre>
|
|
./configure [OPTION]... [VAR=VALUE]...
|
|
</pre>
|
|
|
|
You can use environment
|
|
variables to override the choices made by `configure' or to help
|
|
it to find libraries and programs with nonstandard names/locations.
|
|
To assign environment variables (e.g., CC, CFLAGS...), specify them as
|
|
VAR=VALUE.
|
|
Example: to compile BOINC with strict compiler warnings, use
|
|
<pre>
|
|
./configure CXXFLAGS=\"-Wall -W -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -fno-common \"
|
|
</pre>
|
|
|
|
<p>
|
|
Defaults for the options are specified in brackets.
|
|
";
|
|
list_start();
|
|
list_bar("Configuration");
|
|
list_item("-h, --help",
|
|
"display this help and exit"
|
|
);
|
|
list_bar("Installation directories");
|
|
list_item("--prefix=PREFIX",
|
|
"install architecture-independent files in PREFIX [/usr/local]
|
|
By default, `make install' will install all the files in
|
|
`/usr/local/bin', `/usr/local/lib' etc. You can specify
|
|
an installation prefix other than `/usr/local' using `--prefix',
|
|
for instance `--prefix=$HOME'.
|
|
For better control, use the options below."
|
|
);
|
|
|
|
list_bar("Optional Features");
|
|
list_item("--disable-FEATURE",
|
|
"do not include FEATURE (same as --enable-FEATURE=no)"
|
|
);
|
|
list_item("--enable-FEATURE[=ARG]",
|
|
"include FEATURE [ARG=yes]"
|
|
);
|
|
list_item("--enable-debug",
|
|
"enable tracing and debugging flags for all components"
|
|
);
|
|
list_item("--disable-server",
|
|
"disable building the server component"
|
|
);
|
|
list_item("--disable-client",
|
|
"disable building the client component
|
|
Default: --enable-server --enable-client: builds
|
|
both server and client.
|
|
<p>
|
|
If configure can't find WxWidgets it will build
|
|
the core client but not the Manager.
|
|
If you want to build only the core client,
|
|
run configure with --with-wxdir=junk.
|
|
"
|
|
);
|
|
list_item("--enable-maintainer-mode",
|
|
"enable make rules and dependencies not useful
|
|
(and sometimes confusing) to the casual installer"
|
|
);
|
|
list_item("--enable-shared[=PKGS]",
|
|
"build shared libraries [default=yes]"
|
|
);
|
|
list_item("--enable-static[=PKGS]",
|
|
"build static libraries [default=yes]"
|
|
);
|
|
list_item("--disable-static-linkage",
|
|
"disable static linking of certain libraries"
|
|
);
|
|
list_item("--enable-client-release",
|
|
"Try building a portable 'release-candidate'
|
|
(currently implemented for Linux and Solaris only):
|
|
this links libstd++ statically. You will probably
|
|
need gcc-3.0 for this to produce a portable
|
|
client-binary. It is therefore recommended to use
|
|
CC=gcc-3.0 and CXX=g++-3.0 for this. (Default = no)"
|
|
);
|
|
|
|
list_bar("Optional Packages");
|
|
list_item("--with-PACKAGE[=ARG]",
|
|
"use PACKAGE [ARG=yes]"
|
|
);
|
|
list_item("--without-PACKAGE",
|
|
"do not use PACKAGE (same as --with-PACKAGE=no)"
|
|
);
|
|
list_item("--with-x",
|
|
"use the X Window System"
|
|
);
|
|
list_item("--with-apple-opengl-framework",
|
|
"use Apple OpenGL framework (Mac OS X only)"
|
|
);
|
|
list_item("--with-wxdir=PATH",
|
|
"Use uninstalled version of wxWindows in PATH"
|
|
);
|
|
list_item("--with-wx-config=CONFIG",
|
|
"wx-config script to use (optional)"
|
|
);
|
|
|
|
list_bar("Environment variables");
|
|
list_item("CC",
|
|
"C compiler command"
|
|
);
|
|
list_item("CFLAGS",
|
|
"C compiler flags"
|
|
);
|
|
list_item("LDFLAGS",
|
|
"linker flags, e.g. -L<lib dir> if you have libraries in a
|
|
nonstandard directory <lib dir>"
|
|
);
|
|
list_item("CPPFLAGS",
|
|
"C/C++ preprocessor flags, e.g. -I<include dir> if you have
|
|
headers in a nonstandard directory <include dir>"
|
|
);
|
|
list_item("CXX",
|
|
"C++ compiler command"
|
|
);
|
|
list_item("CXXFLAGS",
|
|
"C++ compiler flags.
|
|
"
|
|
);
|
|
list_item("CPP",
|
|
"C preprocessor"
|
|
);
|
|
list_item("CXXCPP",
|
|
"C++ preprocessor"
|
|
);
|
|
list_item("F77",
|
|
"Fortran 77 compiler command"
|
|
);
|
|
list_item("FFLAGS",
|
|
"Fortran 77 compiler flags"
|
|
);
|
|
list_item("MYSQL_CONFIG",
|
|
"mysql_config program"
|
|
);
|
|
list_end();
|
|
echo "
|
|
|
|
|
|
<h2>Source layout</h2>
|
|
|
|
<p>
|
|
The top-level <code>Makefile.am</code> contains the
|
|
<code>SUBDIRS=</code> line which sets up directory recursion, and
|
|
the rules for creating source distributions.
|
|
<p>
|
|
Each subdirectory's <code>Makefile.am</code> contains the rules for
|
|
making the binaries and libraries in that directory and any extra
|
|
files to distribute.
|
|
<p>
|
|
Usually you will want to run <code>make</code> from the top level
|
|
(the directory containing the file <code>configure</code>), but
|
|
sometimes it is useful to run <code>make</code> and <code>make
|
|
check</code> in certain subdirectories (e.g. <code>client/</code>).
|
|
|
|
<h2>Adding new directories</h2>
|
|
If you create a new directory with another <code>Makefile.am</code>,
|
|
you should
|
|
<ul>
|
|
<li> make sure the directory is referenced by
|
|
a <code>SUBDIRS=</code> line from its
|
|
parent <code>Makefile.am</code>
|
|
<li>
|
|
add it to the
|
|
AC_CONFIG_FILES directive in <code>configure.ac</code>.
|
|
</ul>
|
|
|
|
<h2>Version number</h2>
|
|
To set the BOINC client version:
|
|
<pre>
|
|
set-version 7.17.56
|
|
</pre>
|
|
in the BOINC top-level source directory. This updates
|
|
the <code>AC_INIT</code> line in
|
|
<code>configure.ac</code> and regenerates files that use the version numbers
|
|
(config.h, py/version.py, test/version.inc, client/win/win_config.h, Makefiles)
|
|
|
|
<h2>Archival/source distribution</h2>
|
|
To make source distributions:
|
|
<pre>
|
|
gmake dist
|
|
</pre>
|
|
|
|
";
|
|
page_tail();
|
|
?>
|