boinc/mac_build/HowToBuildBOINC_XCode.rtf

543 lines
38 KiB
Plaintext

{\rtf1\ansi\ansicpg1252\cocoartf949
{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fmodern\fcharset0 Courier;\f2\fnil\fcharset0 LucidaGrande;
}
{\colortbl;\red255\green255\blue255;\red0\green0\blue239;}
\margl1440\margr1440\vieww14740\viewh11840\viewkind0
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc
\f0\b\fs28 \cf0 Building BOINC Clients and Applications on Macintosh OSX\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\b0\fs24 \cf0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc
\cf0 Written by Charlie Fenton\
Last updated 1/29/08\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf0 \
This document applies to BOINC version 6.1.0 and later. It has instructions for building BOINC for Macintosh OSX, plus information for building science project applications to run under BOINC on Macintosh OSX. \
\
Note: the information in this document changes from time to time for different versions of BOINC. For any version of BOINC source files, the corresponding version of this document can be found in the source tree at:\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f1\fs26 \cf0 boinc/mac_build/HowToBuildBOINC_XCode.rtf\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f0\fs24 \cf0 \
Contents of this document:\
\'95 Important requirements for building BOINC software for the Mac.\
\'95 Building BOINC libraries to link with project applications.\
\'95 Building BOINC Manager, BOINC Client and BOINC libraries.\
\'95 Building BOINC Manager Installer.\
\'95 Debugging and BOINC security.\
\'95 Building project applications.\
\'95 Upgrading applications for Macs with 32-bit and 64-bit Intel processors.\
\'95 Upgrading applications for version 6 graphics\
\'95 Adding a Finder icon to your graphics application\
\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc
\b\fs28 \cf0 Important requirements for building BOINC software for the Mac
\b0\fs24 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
\cf0 BOINC version 6.1.0 supports only Mac OS X 10.3.9 and later; support for OS 10.3.0 through 10.3.8 has been discontinued. This allows us to build the BOINC Client and Manager using only GCC 4.0, which offers a number of advantages. \
\
BOINC version 6.1.0 Client and libraries include support for the x86_64 (64-bit Intel) architecture.\
\
All BOINC software for Power PC Macs must be built using MacOS10.3.9 SDK to assure backward compatibility with OS 10.3.9. \
All 32-bit BOINC software for Intel Macs must be built using GCC 4.0 and MacOS10.4.u SDK to allow cross-compiling. \
All 64-bit BOINC software for Intel Macs must be built using GCC 4.0 and MacOS10.5 SDK. \
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
\b \cf0 The above requirements apply not only BOINC itself, but also the WxWidgets, JPEG, c-ares and cURL libraries, as well as all project applications
\b0 . The BOINC Client does not use WxWidgets or JPEG, so only the c-ares and cURL libraries must be built for the x86_64 architecture.\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
\cf0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf0 Be sure to follow the directions in this document to ensure that these requirements are met.\
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
\b \cf0 Building BOINC now requires XCode Tools version 2.4.1 or later; XCode 3.0 or later is recommended.
\b0 Note that the MacOS10.3.9 SDK is not automatically included unless you customize the installation; click the
\b Customize
\b0 button in the
\b Installation type
\b0 step when you run the XCode Tools installer.\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf0 \
Source files are now archived using Subversion. You can download svnX, a free GUI application for running Subversion from either\
{\field{\*\fldinst{HYPERLINK "http://www.apple.com/downloads/macosx/development_tools/svnx.html"}}{\fldrslt http://www.apple.com/downloads/macosx/development_tools/svnx.html}}\
or\
{\field{\*\fldinst{HYPERLINK "http://www.lachoseinteractive.net/en/community/subversion/svnx/"}}{\fldrslt http://www.lachoseinteractive.net/en/community/subversion/svnx/}}\
\
You also need to install Subversion itself. One place to get it is:\
{\field{\*\fldinst{HYPERLINK "http://www.codingmonkeys.de/mbo/"}}{\fldrslt http://www.codingmonkeys.de/mbo/}}\
\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc
\b\fs28 \cf0 Building BOINC libraries to link with project applications
\b0\fs24 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
\cf0 BOINC version 6.1.0 supports only Mac OS X 10.3.9 and later; support for OS 10.3.0 through 10.3.8 has been discontinued. This allows us to build the BOINC Client and Manager using only GCC 4.0. However, to ensure that science projects are compatible with older versions of BOINC running under OS 10.3.0 through 10.3.8, the PowerPC builds of the libraries and science applications are still built using GCC 3.3.\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf0 Beware of using the wrong compiler! Apple's release notes for GCC 4.0 say:\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\i \cf0 If your application must support versions of Mac OS X prior to 10.3.9, you must not use the GCC 4.0 compiler. Instead, build your project using the GCC 3.3 compiler\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\i0 \cf0 \
Elsewhere on Apple's web site is the warning:\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\i \cf0 Do not link C++ modules compiled with one of these compilers against modules compiled with the other. Even if the modules appear to link correctly, C++ ABI differences may still cause problems that will not manifest themselves until run time.
\i0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
\cf0 \
If you are building a project application to be run by BOINC, you only need to build the boinc libraries libboinc_api.a, ibboinc.a, and (if you want graphics) either libboinc_graphics_api.a or libboinc_graphics2.a. (libboinc_graphics2.a is used for version 6 graphics, which is the method recommended for all applications.) There are two ways to do this:\
\
(1) Use the BOINC autoconf / automake scripts to build these libraries and any libraries on which they depend. You must do all of this twice: once on a PowerPC Mac running OS 10.3.x (do
\b not
\b0 use OS 10.4), and once on an Intel Mac running OS 10.4.x.\
\
(If you wish, you can combine separate Intel and PowerPC builds in a single Universal Binary mach-O file using the command-line utility lipo. For details on lipo, type "man lipo" in Terminal; it is available on all Macs running OS10.4.x or later.)\
\
At the time this is written, the BOINC autoconf / automake scripts do not build 64-bit binaries.\
\
(2) Use scripts setupForBOINC.sh and BuildMacBOINC.sh. You do this once on any Macintosh (PowerPC or Intel) running either OS 10.4.x and XCode 2.4.1, or OS 10.5.x and XCode 3.0 (or later) installed. This will produce Universal Binaries of all the libraries. These can then be linked with PowerPC, 32-bit Intel and 64-bit Intel Mac applications.\
\
This document gives instructions only for the second method.\
\
After building the libraries as Universal Binaries using the second method, you may still want to build your actual application separately on the two architectures: on a PowerPC Mac running OS 10.3.x (do NOT use OS 10.4), and also on an Intel Mac running OS 10.4.x. To build for the x86_64 architecture, use a Mac running either OS 10.4 or OS 10.5 and specify the -arch x86_64 option to the compiler and linker.\
\
If you prefer, you can cross-compile on one Mac running OS 10.4.x or OS 10.5.x. See the
\i Building project applications
\i0 section below.\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc
\b\fs28 \cf0 Building BOINC Manager with embedded Core Client plus libraries libboinc.a and libboinc_graphics_api.a\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\b0\fs24 \cf0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
\cf0 BOINC depends on four third-party libraries: wxMac-2.8.7, c-ares-1.5.1, curl-7.18.0, and jpeg-6b. You can obtain these from the following URLs:\
\
wxMac-2.8.7 (needed only if you are building the BOINC Manager):\
{\field{\*\fldinst{HYPERLINK "http://www.wxwidgets.org"}}{\fldrslt
\f1\fs26 http://www.wxwidgets.org}}
\f1\fs26 \
\f0\fs24 {\field{\*\fldinst{HYPERLINK "http://prdownloads.sourceforge.net/wxwindows/wxMac-2.8.7.tar.gz"}}{\fldrslt
\f1\fs26 http://prdownloads.sourceforge.net/wxwindows/wxMac-2.8.7.tar.gz}}
\f1\fs26 \
\f0\fs24 \
curl-7.18.0:\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
\f1\fs26 \cf0 {\field{\*\fldinst{HYPERLINK "http://curl.haxx.se"}}{\fldrslt http://curl.haxx.se}}\
{\field{\*\fldinst{HYPERLINK "http://curl.haxx.se/download/curl-7.18.0.tar.gz"}}{\fldrslt http://curl.haxx.se/download/curl-7.18.0.tar.gz}}\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
\f0\fs24 \cf0 c-ares-1.5.1 (used by curl):\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
\f1\fs26 \cf0 {\field{\*\fldinst{HYPERLINK "http://daniel.haxx.se/projects/c-ares/"}}{\fldrslt http://daniel.haxx.se/projects/c-ares/}}\
{\field{\*\fldinst{HYPERLINK "http://daniel.haxx.se/projects/c-ares/c-ares-1.5.1.tar.gz"}}{\fldrslt http://daniel.haxx.se/projects/c-ares/c-ares-1.5.1.tar.gz}}\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
\f0\fs24 \cf0 \
jpeg-6b (needed only if you are building the BOINC libboinc_graphics_api.a library):\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
\f1\fs26 \cf0 {\field{\*\fldinst{HYPERLINK "http://www.ijg.org"}}{\fldrslt http://www.ijg.org}}\
{\field{\*\fldinst{HYPERLINK "ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz"}}{\fldrslt ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz}}\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f0\fs24 \cf0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\i \cf0 XCode 2.4.1 installs autoconf 2.59 and automake 1.6.3.
\i0
\i XCode 3.0 installs autoconf 2.61 and automake 1.10.
\i0
\i To determine the version number, type "autoconf --version" or "automake --version" . Building curl-
\i0 7.18.0
\i requires autoconf 2.59 and automake 1.9.3 or later. \
\
Upgrades for autoconf and automake are available from www.gnu.org: \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
{\field{\*\fldinst{HYPERLINK "http://ftp.gnu.org/gnu/autoconf/autoconf-2.61.tar.gz"}}{\fldrslt
\f1\i0\fs26 \cf0 http://ftp.gnu.org/gnu/autoconf/autoconf-2.61.tar.gz}}
\f1\i0\fs26 \cf2 \ul \ulc2 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
{\field{\*\fldinst{HYPERLINK "http://ftp.gnu.org/gnu/automake/automake-1.10.tar.gz"}}{\fldrslt \cf0 \ulnone http://ftp.gnu.org/gnu/automake/automake-1.10.tar.gz}}\cf0 \ulnone \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f0\i\fs24 \cf0 \
XCode installed these utilities in the /usr/bin/ directory, but the upgrades by default will install in /usr/local/bin/. If you install there, you must also set your PATH environment variable to include that location. The scripts referenced below do this automatically.\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\i0 \cf0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
\cf0 As stated above, all BOINC software for Power PC Macs must be built using MacOS10.3.9 SDK and (for libraries) GCC 3.3 to assure backward compatibility with OS 10.3. All 32-bit BOINC software for Intel Macs must be built using GCC 4.0 and MacOS10.4.u SDK to allow cross-compiling. And all 64-bit BOINC software for Intel Macs must be built using GCC 4.0 and MacOS10.5 SDK. \
\
These are not done by either the XCode projects which come with wxMac-2.8.7, nor the AutoMake scripts supplied with wxMac-2.8.7, c-ares-1.5.1, curl-7.18.0, or jpeg-6b. So be sure to use our special scripts to build these packages.\
\
Building BOINC and the library packages on which it depends requires OS 10.4.4 (or later) and XCode 2.4.1 (or later). It may be possible to use XCode 2.3 and/or versions of OS X earlier than 10.4.4, but this has not been tested by the authors.\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf0 \
[1] Create a parent directory within which to work. In this description , we will call it BOINC_dev, but you can name it anything you wish.\
\
[2] Put the following 3 directories inside the BOINC_dev folder (omit any you don't need):\
c-ares-1.5.1\
curl-7.18.0\
jpeg-6b\
wxMac-2.8.7\
\
Important: do not change the names of any of these 3 directories.\
\
[3] Get the BOINC source tree from Subversion, and put it in the same BOINC_dev folder. To do this, type the following in Terminal:\
\
\pard\pardeftab720\ql\qnatural
\f1\fs26 \cf0 cd \{path\}/BOINC_dev/
\f0\fs24 \
\f1\fs26 svn co http://boinc.berkeley.edu/svn/trunk/boinc
\f0\fs24 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf0 \
(You may change the name of the boinc directory to anything you wish.)\
\
The command above retrieves the source code from the HEAD (TRUNK) or development branch of the CVS repository. For more information on getting the BOINC source code, see:\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
{\field{\*\fldinst{HYPERLINK "http://boinc.berkeley.edu/trac/wiki/SourceCode"}}{\fldrslt
\f1\fs26 \cf0 http://boinc.berkeley.edu/trac/wiki/SourceCode}}\
\
[4] Run the script to build the c-ares, curl, jpeg and wxMac libraries as follows:\
\
\pard\pardeftab720\ql\qnatural
\f1\fs26 \cf0 cd \{path\}/BOINC_dev/boinc/mac_build/\
source setupForBoinc.sh -clean
\f0\fs24 \
\
If you don't wish to force a full rebuild of everything, omit the -clean argument.\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf0 \
Note: this script builds c-ares and curl first, followed by jpeg and finally wxMac. If you haven't downloaded wxMac because you aren't building the BOINC Manager, the script will build c-ares, curl and jpeg. Likewise, if you downloaded only c-ares and curl because you need neither graphics nor the BOINC Manager, the script will build c-ares and curl before quitting.\
\
[5] Build BOINC as follows:\
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
\cf0 BOINC itself is built using the
\b boinc.xcodeproj
\b0 file. You can either build directly in XCode
\b
\b0 (more information below) or run the
\b BuildMacBOINC.sh
\b0 script:\
\
\pard\pardeftab720\ql\qnatural
\f1\fs26 \cf0 cd \{path\}/BOINC_dev/boinc/mac_build/\
source BuildMacBOINC.sh
\f0\fs24 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf0 \
The complete syntax for this script is\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f1\fs26 \cf0 source BuildMacBOINC.sh [-dev] [-noclean] [-no64bit] [-all] [-lib] [-client] [-help]
\f0\fs24 \
\
The options for BuildMacBOINC.sh are:\
-dev build the development (debug) version (native architecture only). \
default is deployment (release) version (universal binaries: ppc, i386 and x86_64).\
\
-noclean don't do a "clean" of each target before building.\
default is to clean all first.\
\
-no64bit build 32-bit binaries only, no x86_64 architecture.\
\
The following arguments determine which targets to build\
-all build all targets (i.e. target "Build_All" -- this is the default)\
\
-lib build the three libraries: libboinc_api.a, libboinc_graphics_api.a, libboinc.a\
\
-client build two targets: boinc client and command-line utility boinc_cmd\
(also builds libboinc.a, since boinc_cmd requires it.)\
\
Both -lib and -client may be specified to build five targets (no BOINC Manager.)\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\b \cf0 Note:
\b0 You may find three XCode projects in the BOINC_dev/boinc/mac_build/ directory: \
\'95
\b boinc.pbproj
\b0 is obsolete and should no longer be used.\
\'95
\b wxMac-BOINC.xcodeproj
\b0 was needed for building older versions of the wxMac library in conjunction with the older versions of the setupForBoinc.sh or buildWxMac.sh scripts. It is not used for BOINC 5.9.2 or later. \
\'95
\b boinc.xcodeproj
\b0 builds BOINC. It can be used either with the BuildMacBOINC.sh script or as a stand-alone project. It has three extra build configurations, i386-Deployment and ppc-Deployment, which can be used for testing only to build for just one architecture, and Deployment-no64 which builds only 32-bit products. The Development build configuration builds only the native architecture and is used for debugging. The Deployment build configuration builds a universal binary and is suitable for release builds.\
\
The standard release of BOINC version 6.1.0 and later contains a universal binary of the BOINC Client containing builds for three architectures: ppc, i386 and x86_64. The Mac OS automatically chooses the appropriate architecture as follows:\
\'95 On a PowerPC Mac, it runs the ppc executable.\
* On a Mac with a 64-bit Intel processor running OS 10.5 or later, it runs the x86_64 executable.\
* On any other Intel Mac, it runs the i386 executable.\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f2 \cf0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f0 \cf0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc
\b\fs28 \cf0 Building BOINC Manager Installer
\b0\fs24 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf0 \
To build the Installer for the BOINC Manager, you must be logged in as an administrator. If you are building BOINC version number x.y.z, type the following in Terminal, then enter your administrator password when prompted by the script:\
\
\pard\pardeftab720\ql\qnatural
\f1\fs26 \cf0 cd \{path\}/BOINC_dev/boinc/\
source \{path\}/BOINC_dev/boinc/mac_installer/release_boinc.sh x y z\
\f0\fs24 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf0 Substitute the 3 parts of the BOINC version number for x y and z in the above. For example, to build the installer for BOINC version 5.5.4, the command would be\
\pard\pardeftab720\ql\qnatural
\f1\fs26 \cf0 source \{path\}/BOINC_dev/boinc/mac_installer/release_boinc.sh 5 5 4\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f0\fs24 \cf0 This will create a directory "BOINC_Installer/New_Release_5_5_4" in the BOINC_dev directory.
\f1 \
\
\f0 To build version 5.5.4 of the Grid Republic flavor of BOINC, you would type:
\f1
\f0 \
\pard\pardeftab720\ql\qnatural
\f1\fs26 \cf0 cd \{path\}/BOINC_dev/boinc/\
source \{path\}/BOINC_dev/boinc/mac_installer/release_GridRepublic.sh 5 5 4\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f0\fs24 \cf0 This will create a directory "BOINC_Installer/New_Release_GR_5_5_4" in the BOINC_dev directory.
\f1 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f2 \cf0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f0 \cf0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc
\b\fs28 \cf0 Debugging and BOINC security
\b0\fs24 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
\cf0 Version 5.5.4 of BOINC Manager for the Macintosh introduced new, stricter security measures. For details, please see the file boinc/mac_installer/Readme.rtf and {\field{\*\fldinst{HYPERLINK "http://boinc.berkeley.edu/sandbox.php"}}{\fldrslt http://boinc.berkeley.edu/sandbox.php}} and {\field{\*\fldinst{HYPERLINK "http://boinc.berkeley.edu/trac/wiki/SandboxUser"}}{\fldrslt
\f1 http://boinc.berkeley.edu/trac/wiki/SandboxUser}}\
\
\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\tx10560\tx11520\tx12480\tx13440\tx14400\tx15360\tx16320\tx17280\tx18240\tx19200\tx20160\tx21120\tx22080\tx23040\tx24000\tx24960\tx25920\tx26880\tx27840\tx28800\tx29760\tx30720\tx31680\tx32640\tx33600\tx34560\tx35520\tx36480\tx37440\tx38400\tx39360\tx40320\tx41280\tx42240\tx43200\tx44160\tx45120\tx46080\tx47040\tx48000\tx48960\tx49920\tx50880\tx51840\tx52800\tx53760\tx54720\tx55680\tx56640\tx57600\tx58560\tx59520\tx60480\tx61440\tx62400\tx63360\tx64320\tx65280\tx66240\tx67200\tx68160\tx69120\tx70080\tx71040\tx72000\tx72960\tx73920\tx74880\tx75840\tx76800\tx77760\tx78720\tx79680\tx80640\tx81600\tx82560\tx83520\tx84480\tx85440\tx86400\tx87360\tx88320\tx89280\tx90240\tx91200\tx92160\tx93120\tx94080\tx95040\tx96000\ql\qnatural\pardirnatural
\cf0 \CocoaLigature0 The GDB debugger can't attach to applications which are running as a diferent user or group so it ignores the S_ISUID and S_ISGID permisison bits when launching an application. To work around this, BOINC does not use the special boinc_master or boinc_project users or groups when run from XCode. \
\
The
\i Development
\i0 build
\i only
\i0 of the BOINC Manager allows you to change the ownership and permission settings of the BOINC Data and executables by entering an administrator user name and password. This also streamlines the development cycle by avoiding the need to run the installer for every change.\
\
To restore the standard ownerships and permissions, run the installer.\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf0 \CocoaLigature1 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc
\b\fs28 \cf0 Building project applications\
\
Upgrading applications for Macs with 32-bit and 64-bit Intel processors
\b0\fs24 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
\cf0 Apple converted all its lines of computers to Intel processors during 2006. The early Intel Macs used the Core Duo processor, which is a 32-bit CPU. Later Intel processors, including the Core 2 Duo, can run both 32-bit and 64-bit applications. However, BOINC will run in 64-bit mode only under OS 10.5 and later.\
\
All current releases of BOINC include "universal binary" builds for the Macintosh of BOINC Manager, command-line BOINC Client and the boinc_cmd command-line tool. (Universal binaries contain both PowerPC and Intel executables in one file; the Macintosh OS automatically selects the appropriate one for that computer.) Beginning with version 6.1, the BOINC Client and libraries also include the 64-bit Intel architecture as part of the universal binaries.\
\
The advantage of "universal binaries" is that you only need to have one copy of the application, and it will run on either PowerPC, 32-bit Intel or 64-bit Intel Macs, so users don't need to choose between three options. Since BOINC participants manually download BOINC from the web site, we will be providing BOINC in "universal binary" form.\
\
However, participants do not manually download project applications; this is done automatically by BOINC. So there would be no advantage to combining the 32-bit Intel, 64-bit Intel and PowerPC versions in a single "universal binary" file, but doing so would triple the size of the download.\
\
So BOINC treats Intel Macs as 2 new, separate platforms:
\f1\fs26 i686-apple-darwin
\f0\fs24 and
\f1\fs26 x86_64-apple-darwin
\f0\fs24 , in addition to the PowerPC Mac platform (
\f1\fs26 powerpc-apple-darwin
\f0\fs24 ). \
\
Starting with BOINC 5.9.7, the Intel BOINC Client accepts
\f1\fs26 powerpc-apple-darwin
\f0\fs24 applications if no
\f1\fs26 i686-apple-darwin
\f0\fs24 is available. The OS will run it in compatibility mode, emulating a PowerPC. (Apple calls this compatibility mode Rosetta, which of course has nothing to do with the Rosetta BOINC project.) \
\
The x86_64 BOINC Client requests
\f1\fs26 x86_64-apple-darwin
\f0\fs24 applications from BOINC servers as its first choice,
\f1\fs26 i686-apple-darwin
\f0\fs24 as a second choice, and finally
\f1\fs26 powerpc-apple-darwin
\f0\fs24 if no Intel applications are available.\
\
However, older Intel Mac clients will not get any work unless the server offers i686-apple-darwin applications. As a
\b temporary
\b0 measure, projects can set their servers to deliver a copy of their current PowerPC application (renamed for the new platform) under the i686-apple-darwin platform for older BOINC Clients. \
\
If you do this, be sure to give your native Intel application a higher version number when you do release it, so that clients will download it.\
\
However, running a PowerPC application in compatibility mode has two significant drawbacks:\
\
(1) Screensaver graphics do not work.\
\
(2) Since it is running under emulation, your application will run at reduced efficiency. But the benchmarks are based on running native Intel applications. This may cause scheduler problems, such as missed deadlines and inadequate credit for participants. \
\
So it is important to make a native Intel application available as soon as possible.\
\
It is very easy to add a new platform to your server with the xadd utility. For directions on how to do this, see these web pages:\
\pard\pardeftab720\ql\qnatural
{\field{\*\fldinst{HYPERLINK "http://boinc.berkeley.edu/trac/wiki/BoincPlatforms"}}{\fldrslt
\f1 \cf0 http://boinc.berkeley.edu/trac/wiki/BoincPlatforms}}
\f1\fs26 \
\pard\pardeftab720\ql\qnatural
{\field{\*\fldinst{HYPERLINK "http://boinc.berkeley.edu/trac/wiki/XaddTool"}}{\fldrslt
\fs24 \cf0 http://boinc.berkeley.edu/trac/wiki/XaddTool}}
\f0\fs24 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
\cf0 \
BOINC 6.1 supports all PowerPC Macs running OS 10.3.9 or later, and all Intel Macs, but older versions of BOINC supported OS 10.3.0 or later for PowerPC Macs. (The Intel Macs themselves require OS 10.4.4 or later.) \
\
The easiest way to build your application for these two platforms is to build each one on its native platform. In other words, do your powerpc-apple-darwin build on a PowerPC Mac running OS 10.3.9, and your i686-apple-darwin build on an Intel Mac.\
\
But Apple provides the tools to allow you to cross-compile your application on any Mac (PowerPC or Intel) running OS 10.4 or later. Here is how:\
\
All BOINC project applications for Power PC Macs must be built using GCC 3.3 and MacOS10.3.9 SDK to assure backward compatibility with OS 10.3. If building a PowerPC application on an Intel Mac, you must also specify
\f1\fs26 -arch ppc
\f0\fs24 in the compiler and linker flags.\
\
All 32-bit BOINC software for Intel Macs must be built using GCC 4.0 and MacOS10.4.u SDK to allow cross-compiling. If building an Intel application on a PowerPC Mac, you must also specify
\f1\fs26 -arch i386
\f0\fs24 in the compiler and linker flags.\
\
All 64-bit BOINC software for Intel Macs must be built using GCC 4.0 and MacOS10.5 SDK. To build for the x86_64 architecture, use a Mac running either OS 10.4 or OS 10.5 and specify the
\f1\fs26 -arch x86_64
\f0\fs24 option to the compiler and linker.\
\
If you prefer, you can cross-compile on one Mac running OS 10.4.x or OS 10.5.x. You can find examples of how to do this for two different kinds of configure / make scripts in the HEAD branch of the BOINC CVS tree at boinc/mac_build/buildcurl.sh and boinc/mac_build/buildjpeg.sh. \
\
The lipo utility is used at the end of each of these scripts to combine the two binaries into a single "Universal Binary" file. You won't need to do that with you project applications, since you will be distributing them separately under the two platforms. But if you prefer, you can create a Universal Binary and distribute the same file for both i686-apple-darwin and powerpc-apple-darwin platforms (and also the x86_64-apple-darwin platform if you wish).\
\
Note that the BOINC libraries (and any third-party libraries) which you link with your applications must be built with the same configuration as the application itself. Follow the instructions earlier in this document to build the needed libraries.\
\
\pard\pardeftab720\ql\qnatural
\cf0 Additional information on building Unix applications universal can be found here:\
\pard\pardeftab720\ql\qnatural
{\field{\*\fldinst{HYPERLINK "http://developer.apple.com/documentation/Porting/Conceptual/PortingUnix/compiling/chapter_4_section_3.html"}}{\fldrslt
\f1\fs26 \cf0 http://developer.apple.com/documentation/Porting/Conceptual/PortingUnix/compiling/chapter_4_section_3.html}}\
\pard\pardeftab720\ql\qnatural
\f1\fs26 \cf0 \
\f0\fs24 and here:
\f1\fs26 \
\pard\pardeftab720\ql\qnatural
{\field{\*\fldinst{HYPERLINK "http://developer.apple.com/documentation/MacOSX/Conceptual/universal_binary/universal_binary_compiling/chapter_2_section_7.html"}}{\fldrslt \cf0 http://developer.apple.com/documentation/MacOSX/Conceptual/universal_binary/universal_binary_compiling/chapter_2_section_7.html}}\
\
\pard\pardeftab720\ql\qnatural
\f0\fs24 \cf0 For information on making your code work with GCC 4:\
\pard\pardeftab720\ql\qnatural
{\field{\*\fldinst{HYPERLINK "http://developer.apple.com/releasenotes/DeveloperTools/GCC40PortingReleaseNotes/index.html"}}{\fldrslt
\f1\fs26 \cf0 http://developer.apple.com/releasenotes/DeveloperTools/GCC40PortingReleaseNotes/index.html}}
\f1\fs26 \
\pard\pardeftab720\ql\qnatural
\f0\fs24 \cf0 \
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc
\b\fs28 \cf0 Upgrading applications for version 6 graphics
\b0\fs24 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf0 \
One of the major changes in BOINC for version 6 is that applications are now expected to generate graphics in a separate executable. The graphics application typically communicates with the worker application using shared memory.\
\
For additional information, please see:\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
{\field{\*\fldinst{HYPERLINK "http://boinc.berkeley.edu/trac/milestone/6.0"}}{\fldrslt
\f1\fs26 \cf0 http://boinc.berkeley.edu/trac/milestone/6.0}}\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
{\field{\*\fldinst{HYPERLINK "http://boinc.berkeley.edu/trac/wiki/GraphicsApi"}}{\fldrslt
\f1\fs26 \cf0 http://boinc.berkeley.edu/trac/wiki/GraphicsApi}}\
\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc
\b\fs28 \cf0 Adding a Finder icon to your graphics application
\b0\fs24 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf0 \
There is an optional api setMacIcon() in the libboinc_api.a library. This allows science graphics applications to \CocoaLigature0 display an application icon in the Dock) and in the Finder. (The icon does not appear in the Dock until the application displays graphics.) To implement this, do the following:\
\
\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\tx10560\tx11520\tx12480\tx13440\tx14400\tx15360\tx16320\tx17280\tx18240\tx19200\tx20160\tx21120\tx22080\tx23040\tx24000\tx24960\tx25920\tx26880\tx27840\tx28800\tx29760\tx30720\tx31680\tx32640\tx33600\tx34560\tx35520\tx36480\tx37440\tx38400\tx39360\tx40320\tx41280\tx42240\tx43200\tx44160\tx45120\tx46080\tx47040\tx48000\tx48960\tx49920\tx50880\tx51840\tx52800\tx53760\tx54720\tx55680\tx56640\tx57600\tx58560\tx59520\tx60480\tx61440\tx62400\tx63360\tx64320\tx65280\tx66240\tx67200\tx68160\tx69120\tx70080\tx71040\tx72000\tx72960\tx73920\tx74880\tx75840\tx76800\tx77760\tx78720\tx79680\tx80640\tx81600\tx82560\tx83520\tx84480\tx85440\tx86400\tx87360\tx88320\tx89280\tx90240\tx91200\tx92160\tx93120\tx94080\tx95040\tx96000\ql\qnatural\pardirnatural
\cf0 (1)Use "/Developer/Applications/utilities/Icon Composer.app" to create a xxx.icns file. (Use any name you wish instead of xxx.)\
\
(2) Convert the xxx.icns file to an app_icon.h file as follows: in Terminal, run: \
\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\tx10560\tx11520\tx12480\tx13440\tx14400\tx15360\tx16320\tx17280\tx18240\tx19200\tx20160\tx21120\tx22080\tx23040\tx24000\tx24960\tx25920\tx26880\tx27840\tx28800\tx29760\tx30720\tx31680\tx32640\tx33600\tx34560\tx35520\tx36480\tx37440\tx38400\tx39360\tx40320\tx41280\tx42240\tx43200\tx44160\tx45120\tx46080\tx47040\tx48000\tx48960\tx49920\tx50880\tx51840\tx52800\tx53760\tx54720\tx55680\tx56640\tx57600\tx58560\tx59520\tx60480\tx61440\tx62400\tx63360\tx64320\tx65280\tx66240\tx67200\tx68160\tx69120\tx70080\tx71040\tx72000\tx72960\tx73920\tx74880\tx75840\tx76800\tx77760\tx78720\tx79680\tx80640\tx81600\tx82560\tx83520\tx84480\tx85440\tx86400\tx87360\tx88320\tx89280\tx90240\tx91200\tx92160\tx93120\tx94080\tx95040\tx96000\ql\qnatural\pardirnatural
\f1 \cf0 \{path\}/MakeAppIcon_h \{source_file_path\}/
\f0 xxx.icns
\f1 \{dest_file_path\}/
\f0 app_icon.h
\f1 \
\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\tx10560\tx11520\tx12480\tx13440\tx14400\tx15360\tx16320\tx17280\tx18240\tx19200\tx20160\tx21120\tx22080\tx23040\tx24000\tx24960\tx25920\tx26880\tx27840\tx28800\tx29760\tx30720\tx31680\tx32640\tx33600\tx34560\tx35520\tx36480\tx37440\tx38400\tx39360\tx40320\tx41280\tx42240\tx43200\tx44160\tx45120\tx46080\tx47040\tx48000\tx48960\tx49920\tx50880\tx51840\tx52800\tx53760\tx54720\tx55680\tx56640\tx57600\tx58560\tx59520\tx60480\tx61440\tx62400\tx63360\tx64320\tx65280\tx66240\tx67200\tx68160\tx69120\tx70080\tx71040\tx72000\tx72960\tx73920\tx74880\tx75840\tx76800\tx77760\tx78720\tx79680\tx80640\tx81600\tx82560\tx83520\tx84480\tx85440\tx86400\tx87360\tx88320\tx89280\tx90240\tx91200\tx92160\tx93120\tx94080\tx95040\tx96000\ql\qnatural\pardirnatural
\f0 \cf0 (The MakeAppIcon_h command-line utility is built by the Mac boinc XCode project in the "boinc/mac_build/build/" directory.) Add the app_icon.h file to your \CocoaLigature1 graphics\CocoaLigature0 application's project.\
\
(3) In the graphics application's main(), add \
\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\tx10560\tx11520\tx12480\tx13440\tx14400\tx15360\tx16320\tx17280\tx18240\tx19200\tx20160\tx21120\tx22080\tx23040\tx24000\tx24960\tx25920\tx26880\tx27840\tx28800\tx29760\tx30720\tx31680\tx32640\tx33600\tx34560\tx35520\tx36480\tx37440\tx38400\tx39360\tx40320\tx41280\tx42240\tx43200\tx44160\tx45120\tx46080\tx47040\tx48000\tx48960\tx49920\tx50880\tx51840\tx52800\tx53760\tx54720\tx55680\tx56640\tx57600\tx58560\tx59520\tx60480\tx61440\tx62400\tx63360\tx64320\tx65280\tx66240\tx67200\tx68160\tx69120\tx70080\tx71040\tx72000\tx72960\tx73920\tx74880\tx75840\tx76800\tx77760\tx78720\tx79680\tx80640\tx81600\tx82560\tx83520\tx84480\tx85440\tx86400\tx87360\tx88320\tx89280\tx90240\tx91200\tx92160\tx93120\tx94080\tx95040\tx96000\ql\qnatural\pardirnatural
\f1 \cf0 #include "app_icon.h"
\f0 \
and call:\
\f1 setMacIcon(argv[0], MacAppIconData, sizeof(MacAppIconData));\
\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\tx10560\tx11520\tx12480\tx13440\tx14400\tx15360\tx16320\tx17280\tx18240\tx19200\tx20160\tx21120\tx22080\tx23040\tx24000\tx24960\tx25920\tx26880\tx27840\tx28800\tx29760\tx30720\tx31680\tx32640\tx33600\tx34560\tx35520\tx36480\tx37440\tx38400\tx39360\tx40320\tx41280\tx42240\tx43200\tx44160\tx45120\tx46080\tx47040\tx48000\tx48960\tx49920\tx50880\tx51840\tx52800\tx53760\tx54720\tx55680\tx56640\tx57600\tx58560\tx59520\tx60480\tx61440\tx62400\tx63360\tx64320\tx65280\tx66240\tx67200\tx68160\tx69120\tx70080\tx71040\tx72000\tx72960\tx73920\tx74880\tx75840\tx76800\tx77760\tx78720\tx79680\tx80640\tx81600\tx82560\tx83520\tx84480\tx85440\tx86400\tx87360\tx88320\tx89280\tx90240\tx91200\tx92160\tx93120\tx94080\tx95040\tx96000\ql\qnatural\pardirnatural
\f0 \cf0 \
(4) The graphics application must link with Carbon.framework to use \CocoaLigature1 setMacIcon()\CocoaLigature0 .\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf0 \CocoaLigature1 \
\pard\pardeftab720\ql\qnatural
\cf0 \
}