Changes between Version 17 and Version 18 of BuildSystem
- Timestamp:
- Feb 8, 2014, 8:37:15 AM (11 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
BuildSystem
v17 v18 9 9 * '''Server''': the scheduler, file upload handler, daemons, and tools. 10 10 11 On UNIX systems, the BOINC software can be built by typing 11 == Compilation pipeline == 12 13 On Unix systems, the BOINC software can be built by: 14 15 * Making sure a number of packages exist on your system (in particular, a missing g++ will mean you get confronted with mysterious error messages later on). In Linux using 'yum', run this as 'root': 16 17 {{{ 18 yum install make autoconf automake libtool libcurl-devel openssl-devel gcc-c++ 19 }}} 20 21 * After that, 'cd' to the directory into which you cloned the BOINC Git repository (probably 'boinc_repo') and run: 12 22 13 23 {{{ 14 24 ./_autosetup 25 }}} 26 27 * This has created the 'configure' script. Execute that script (passing it a _number of options_) using 28 29 {{{ 15 30 ./configure [see options below] 31 }}} 32 33 * This has created the 'Makefile'. Run it using 34 35 {{{ 16 36 make 17 37 }}} 18 38 19 in the top directory. 39 == Use cases == 20 40 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). Use41 * If you are '''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 22 42 23 43 {{{ … … 25 45 }}} 26 46 27 * If you 're porting the BOINC client software to a new platform, you need the client and miscellaneous components. Use47 * If you are ''porting the BOINC client software to a new platform''', you need the client and miscellaneous components. Use 28 48 29 49 {{{ … … 31 51 }}} 32 52 33 * If you 're developing or porting a BOINC application, you need only the miscellaneous component. Use53 * If you are '''developing or porting a BOINC application''', you need only the miscellaneous component. Use 34 54 35 55 {{{ 36 56 ./configure --disable-server --disable-client --disable-manager 57 }}} 58 59 * If you are '''compiling the client''', use 60 61 {{{ 62 ./configure --disable-server --disable-manager 37 63 }}} 38 64 … … 45 71 }}} 46 72 73 Run 74 75 {{{ 76 ./configure --help 77 }}} 78 79 for a complete listing of available options. 80 47 81 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 48 82 49 83 {{{ 50 ./configure CXXFLAGS="-Wall -W -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -fno-common 84 ./configure CXXFLAGS="-Wall -W -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -fno-common" 51 85 }}} 52 86 53 Defaults for the options are specified in brackets. 87 In particular, you can set the installation directory like this for example: 54 88 55 === Configuration === 89 {{{ 90 VERSION=7.2.9 91 ./configure CXXFLAGS="-Wall -W -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -fno-common" --disable-server --disable-manager --prefix=${HOME}/boinc_${VERSION} 92 }}} 56 93 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. || 94 == Problems during compilation phase == 60 95 61 === Installation directories === 96 Once you run `make`, a few problems may occur. 62 97 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.|| 98 Make breaks off with 64 99 65 === Optional Features === 100 {{{ 101 error: wrong number of arguments 102 usage: git config [options] 103 }}} 66 104 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)|| 77 78 === Optional Packages === 79 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)|| 86 87 === Environment variables === 88 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|| 105 Solution: Edit "generate_svn_version.sh" to put quotes around an argument (see https://boinc.berkeley.edu/trac/ticket/1253) 100 106 101 107 == Source layout ==