Changes between Version 20 and Version 21 of BuildSystem


Ignore:
Timestamp:
Mar 15, 2014, 2:04:35 PM (10 years ago)
Author:
davea
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • BuildSystem

    v20 v21  
    55[[Image(components.png,nolink)]]
    66
    7     * '''Miscellaneous''': the API and various shared code.
    8     * '''Client''': the core client and Manager.
    9     * '''Server''': the scheduler, file upload handler, daemons, and tools.
    10 
    11 On UNIX systems, the BOINC software can be built by typing
     7To build BOINC on Unix, first
     8[SoftwarePrereqsUnix install the software prerequisites]
     9and [SourceCodeGit get the BOINC source code].
     10Then, in the source code directory, type
    1211
    1312{{{
     
    1716}}}
    1817
    19 in the top directory.
    20 
    21     * If you're creating a project, you need to build the server and miscellaneous software (you '''don't''' need to build the client software; participants can get that from the BOINC web site). Use
     18If you're creating a project, you need the server and API
     19(you '''don't''' need the client software; participants can get that from the BOINC web site). Use
    2220
    2321{{{
     
    2523}}}
    2624
    27     * If you're porting the BOINC client software to a new platform, you need the client and miscellaneous components. Use
     25If you're porting the BOINC client to a new platform, use
    2826
    2927{{{
     
    3129}}}
    3230
    33     * If you're developing or porting a BOINC application, you need only the miscellaneous component. Use
     31If you're developing or porting a BOINC application, you need only the API:
    3432
    3533{{{
     
    4543}}}
    4644
    47 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
     45You can use environment variables to override the choices made by `configure`
     46or to help it to find libraries and programs with nonstandard names/locations.
     47To assign environment variables (e.g., CC, CFLAGS...), specify them as `VAR=VALUE`.
     48Example: to compile BOINC with strict compiler warnings, use
    4849
    4950{{{
     
    5556=== Configuration ===
    5657
    57 ||'''-h, --help'''||display configuration options and exit||
    58 ||'''--with-boinc-platform=NAME'''||Override the BOINC [BoincPlatforms platform] name determined by autoconf. i.e. Use NAME as [BoincPlatforms platform] to compile into the client. Only necessary if configure does not recognize your platform correctly by default. You can check the platform after the configure step by looking at the value of the HOSTTYPE variable in config.h ||
    59 ||'''--with-boinc-alt-platform=NAME'''||Use this option to build an client that supports an alternate platform name.  For example, on a x86_64 linux system that supports both 64 bit and 32 bit executables, you might specify --with-boinc-platform=x86_64-pc-linux-gnu and --with-boinc-alt-platform=i686-pc-linux-gnu. ||
     58 '''-h, --help''' :: display configuration options and exit
     59
     60 '''-h, --help''' :: display configuration options and exit
     61 '''--with-boinc-platform=NAME''' :: Override the BOINC [BoincPlatforms platform] name determined by autoconf. i.e. Use NAME as [BoincPlatforms platform] to compile into the client. Only necessary if configure does not recognize your platform correctly by default. You can check the platform after the configure step by looking at the value of the HOSTTYPE variable in config.h
     62 '''--with-boinc-alt-platform=NAME''' :: Use this option to build an client that supports an alternate platform name.  For example, on a x86_64 linux system that supports both 64 bit and 32 bit executables, you might specify --with-boinc-platform=x86_64-pc-linux-gnu and --with-boinc-alt-platform=i686-pc-linux-gnu. 
    6063
    6164=== Installation directories ===
    6265
    63 ||'''--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=`. For better control, use the options below.||
     66 '''--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=`. For better control, use the options below.
    6467
    6568=== Optional Features ===
    6669
    67 ||'''--disable-FEATURE'''||do not include FEATURE (same as --enable-FEATURE=no)||
    68 ||'''--enable-FEATURE[=ARG]'''||include FEATURE [ARG=yes]||
    69 ||'''--enable-debug'''||enable tracing and debugging flags for all components (alternatively, include -g in CFLAGS and CXXFLAGS)||
    70 ||'''--disable-server'''||disable building the server component||
    71 ||'''--disable-manager'''||disable building the manager component (Disabled automatically if configure can't find wxWidgets)||
    72 ||'''--disable-client'''||disable building the client component Default: --enable-server --enable-client --enable-manager: builds server, client and manager.||
    73 ||'''--enable-shared[=PKGS]'''||build shared libraries [default=yes]||
    74 ||'''--enable-static[=PKGS]'''||build static libraries [default=yes]||
    75 ||'''--disable-static-linkage'''||disable static linking of certain libraries||
    76 ||'''--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)||
     70 '''--disable-FEATURE''' :: do not include FEATURE (same as --enable-FEATURE=no)
     71 '''--enable-FEATURE[=ARG]''' :: include FEATURE [ARG=yes]
     72 '''--enable-debug''' :: enable tracing and debugging flags for all components (alternatively, include -g in CFLAGS and CXXFLAGS)
     73 '''--disable-server''' :: disable building the server component
     74 '''--disable-manager''' :: disable building the manager component (Disabled automatically if configure can't find wxWidgets)
     75 '''--disable-client''' :: disable building the client component.
     76  Default: --enable-server --enable-client --enable-manager: builds server, client and manager.
     77 '''--enable-shared[=PKGS]''' :: build shared libraries [default=yes]
     78 '''--enable-static[=PKGS]''' :: build static libraries [default=yes]
     79 '''--disable-static-linkage''' :: disable static linking of certain libraries
     80 '''--enable-client-release''' :: Try building a portable 'release-candidate' (currently implemented for Linux and Solaris only):
     81  this links libstd++ statically.
     82  You will probably need gcc-3.0 for this to produce a portable client-binary.
     83  It is therefore recommended to use CC=gcc-3.0 and CXX=g++-3.0 for this. (Default = no)
    7784
    7885=== Optional Packages ===
    7986
    80 ||'''--with-PACKAGE[=ARG]'''||use PACKAGE [ARG=yes]||
    81 ||'''--without-PACKAGE'''||do not use PACKAGE (same as --with-PACKAGE=no)||
    82 ||'''--with-x'''||use the X Window System||
    83 ||'''--with-apple-opengl-framework'''||use Apple OpenGL framework (Mac OS X only)||
    84 ||'''--with-wxdir=PATH'''||Use installed version of wxWidgets in PATH||
    85 ||'''--with-wx-config=CONFIG'''||wx-config script to use (optional)||
     87 '''--with-PACKAGE[=ARG]''' :: use PACKAGE [ARG=yes]
     88 '''--without-PACKAGE''' :: do not use PACKAGE (same as --with-PACKAGE=no)
     89 '''--with-x''' :: use the X Window System
     90 '''--with-apple-opengl-framework''' :: use Apple OpenGL framework (Mac OS X only)
     91 '''--with-wxdir=PATH''' :: Use installed version of wxWidgets in PATH
     92 '''--with-wx-config=CONFIG''' :: wx-config script to use (optional)
    8693
    8794=== Environment variables ===
    8895
    89 ||'''CC'''||C compiler command||
    90 ||'''CFLAGS'''||C compiler flags||
    91 ||'''LDFLAGS'''||linker flags, e.g. -L<lib dir> if you have libraries in a nonstandard directory <lib dir>||
    92 ||'''CPPFLAGS'''||C/C++ preprocessor flags, e.g. -I<include dir> if you have headers in a nonstandard directory <include dir>||
    93 ||'''CXX'''||C++ compiler command||
    94 ||'''CXXFLAGS'''||C++ compiler flags.||
    95 ||'''CPP'''||C preprocessor||
    96 ||'''CXXCPP'''||C++ preprocessor||
    97 ||'''F77'''||Fortran 77 compiler command||
    98 ||'''FFLAGS'''||Fortran 77 compiler flags||
    99 ||'''MYSQL_CONFIG'''||mysql_config program||
    100 
    101 == Source layout ==
    102 
    103 The top-level `Makefile.am` contains the `SUBDIRS=` line which sets up directory recursion, and the rules for creating source distributions.
    104 
    105 Each subdirectory's `Makefile.am` contains the rules for making the binaries and libraries in that directory and any extra files to distribute.
    106 
    107 Usually you will want to run `make` from the top level (the directory containing the file `configure`), but sometimes it is useful to run `make` and `make check` in certain subdirectories (e.g. `client/`).
     96 '''CC''' :: C compiler command
     97 '''CFLAGS''' :: C compiler flags
     98 '''LDFLAGS''' :: linker flags, e.g. -L<lib dir> if you have libraries in a nonstandard directory <lib dir>
     99 '''CPPFLAGS''' :: C/C++ preprocessor flags, e.g. -I<include dir> if you have headers in a nonstandard directory <include dir>
     100 '''CXX''' :: C++ compiler command
     101 '''CXXFLAGS''' :: C++ compiler flags.
     102 '''CPP''' :: C preprocessor
     103 '''CXXCPP''' :: C++ preprocessor
     104 '''F77''' :: Fortran 77 compiler command
     105 '''FFLAGS''' :: Fortran 77 compiler flags
     106 '''MYSQL_CONFIG''' :: mysql_config program
    108107
    109108== Adding new directories ==
    110109
     110The top-level `Makefile.am` contains the `SUBDIRS=` line which sets up directory recursion,
     111and the rules for creating source distributions.
     112Each subdirectory's `Makefile.am` contains the rules for making the binaries
     113and libraries in that directory and any extra files to distribute.
    111114If you create a new directory with another `Makefile.am`, you should
    112115
    113     * make sure the directory is referenced by a `SUBDIRS=` line from its parent `Makefile.am`
    114     * add it to the AC_CONFIG_FILES directive in `configure.ac`.
     116 * make sure the directory is referenced by a `SUBDIRS=` line from its parent `Makefile.am`
     117 * add it to the AC_CONFIG_FILES directive in `configure.ac`.
    115118
    116 == Version number ==
     119== Client version number ==
    117120
    118121To set the BOINC client version:
     
    122125}}}
    123126
    124 in the BOINC top-level source directory. This updates the `AC_INIT` line in `configure.ac` and regenerates files that use the version numbers (config.h, py/version.py, test/version.inc, client/win/win_config.h, Makefiles)
     127in the BOINC top-level source directory.
     128This updates the `AC_INIT` line in `configure.ac` and regenerates files that use the version numbers
     129(config.h, py/version.py, test/version.inc, client/win/win_config.h, Makefiles)