boinc/mac_build/HowToBuildBOINC_XCode.rtf

454 lines
25 KiB
Plaintext
Raw Normal View History

{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf100
{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica;\f2\fmodern\fcharset77 Courier;
\f3\fswiss\fcharset77 Helvetica-Oblique;\f4\fnil\fcharset77 LucidaGrande;\f5\fmodern\fcharset77 Courier-Oblique;
}
{\colortbl;\red255\green255\blue255;\red255\green0\blue0;\red0\green0\blue255;}
\margl1440\margr1440\vieww9000\viewh9000\viewkind0
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc
\f0\b\fs28 \cf0 Building BOINC Clients on Macintosh OSX\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f1\b0\fs24 \cf0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc
\cf0 Written by Charlie Fenton\
Last updated 8/22/05\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf0 \
This document has instructions for building BOINC for Macintosh OSX, plus information for building science projects to run under BOINC Macintosh OSX.\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc
\f0\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
\f1\b0\fs24 \cf0 \
Substitute the appropriate path for [boincparent] throughout this document. This is the parent directory containing the boinc/ or boinc_public/ tree. If used, the following three directories must also be at the top level of [boincparent]/:\
wxMac-2.6.1/, curl-7.14.0 and jpeg-6b. If you wish to keep these directories elsewhere or to give them different names, you can create a UNIX symbolic link to the actual directory using the command, for example: \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f2 \cf0 ln -s [realpath] [boincparent]/
\f1 wxMac-2.6.1
\f2 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f1 \cf0 \
(Note that the GNU compiler and linker will
\f0\b not
\f1\b0 recognize a Macintosh alias created by the Finder.)\
\
Throughout this document, [boincpath] is shorthand for either [boincparent]/boinc or [boincparent]/boinc_public, as appropriate.\
\
These directions are for building under OS X version 10.4.x (Tiger) using XCode Developer Tools version 2.0, or OS X version 10.3.9 (Panther) using XCode 1.5. \
\
If you are building under OS 10.4, you must first install XCode's optional Cross-Development SDK for system 10.3.9 from the XCode Tools CD. This guarantees that all builds are backward compatible to OS 10.3.9. This is not necessary for building under OS 10.3.\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf2 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf0 If you are building with XCode 2.0 under OS 10.4, the default compiler is GCC 4.0. Software compiled with GCC 4.0 cannot run on systems earlier than OS 10.3.9. To ensure compatibility back to OS 10.3.0,
\f0\b all
\f1\b0 BOINC software
\f0\b must
\f1\b0 be compiled using GCC version 3.3,
\f0\b including the WxWidgets and cURL libraries
\f1\b0 .\
\
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
\f3\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
\f1\i0 \cf0 \
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\cf0 Elsewhere on Apple's web site is the warning:\
\f3\i 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.
\f1\i0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf0 \
The BOINC XCode project is already set up to use GCC 3.3. For builds from the command-line under OS 10.4, you must set the environment variables CC and CXX. For the bash shell:\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f2 \cf0 export CC=/usr/bin/gcc-3.3;export CXX=/usr/bin/g++-3.3
\f1 \
\
To make sure that other XCode projects (such as client science applications) use GCC 3.0, do the following:\
\
In the XCode project, select your target under the Groups & Files column. Press command-I to open the info window for the target, and select the "Rules" tab. Press the "+" at the bottom of the window twice to create two new rules. Set one rule for C sources to use GCC 3.3, set the other rule for C++ sources to use GCC 3.3. Close the window. Repeat this for each target in the project.\
\
If you are building under OS 10.3.9, the default compiler is GCC 3.3, so these steps are not necessary (but they won't do any harm).\
\
If you are building a science project to run under BOINC Macintosh OSX, be sure to read the last section of this document, titled "Building the BOINC SETI client application."\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc
\f0\b \cf0 One-Time Setup for BOINC Manager and embedded Core Client
\f1\b0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf0 \
This section describes building two libraries needed by BOINC: wxWidgets for the Macintosh, wxMac-2.6.1, and curl-7.14.0. \
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f3\i \cf0 XCode 1.5 installs autoconf version 2.57 and automake 1.63. XCode 2.0 installs autoconf 2.59 and automake 1.63.
\f1\i0
\f3\i To determine the version number, type "autoconf --version" or "automake --version" . Building wxMac-2.6.1 and curl-7.14.0 require autoconf 2.59 and automake 1.93 or later. Building the BOINC SETI application also requires these.\
\
Upgrades for autoconf and automake are available from www.gnu.org. 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 before proceeding with any of the steps below; type the following at the start of your terminal session:\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f2\i0 \cf0 export PATH=/usr/local/bin:$PATH\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f1 \cf0 \
The wxWidgets library is needed only by the BOINC Manager. If you are not building the BOINC Manager, you can skip ahead to step 2 below.\
\
(1) First download wxMac-2.6.1 from www.wxwidgets.org into your [boincparent]directory and build it:\
You will need to set the environment variables CPPFLAGS and LDFLAGS as described below. These commands are for the bash shell; use the equivalent commands if you are running a different UNIX shell. Some of these environment variables allow the application to be built using the OS 10.3.9 compatibility SDK.\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f2 \cf3 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f1 \cf0 First set the CPPFlags environment variable. If you are building under OS 10.4:\
\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
\f1 \cf0 If you have installed autoconf or automake at this path:\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f2 \cf0 export PATH=/usr/local/bin:$PATH\
\
export CPPFLAGS="-isysroot /Developer/SDKs/MacOSX10.3.9.sdk -DMAC_OS_X_VERSION_MAX_ALLOWED=1030";export CC=/usr/bin/gcc-3.3;export CXX=/usr/bin/g++-3.3\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f1 \cf0 \
If you are building under OS 10.3:\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f2 \cf0 export CPPFLAGS="-DMAC_OS_X_VERSION_MAX_ALLOWED=1030"\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f1 \cf0 \
Then continue building wxMac-2.6.1:\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f2 \cf0 cd
\f1 [boincparent]/wxMac-2.6.1
\f2 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf3 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf0 mkdir osx-build\
\
cd osx-build\
\
../configure --disable-shared --with-opengl --disable-webkit\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f1 \cf0 If you are building under OS 10.4, set the LDFlags environment variable
\f0\b after
\f1\b0 the configure but
\f0\b before
\f1\b0 the make:
\f2 \
export LDFLAGS="-isysroot /Developer/SDKs/MacOSX10.3.9.sdk -Wl,-syslibroot,/Developer/SDKs/MacOSX10.3.9.sdk"
\f1 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f2 \cf0 \
make\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f1 \cf0 \
(2) The cURL library is needed only by the BOINC Core Client. If you are not building either the BOINC Manager or the Core Client, you can skip ahead to step 3 below (The BOINC Manager includes the Core Client in its application bundle).\
\
Download curl-7.14.0 from http://curl.haxx.se/download.html into your [boincparent] directory. \
\
Open a new terminal window to reset your session environment variables and set the working directory:\
\
f you have installed autoconf or automake at this path:\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f2 \cf0 export PATH=/usr/local/bin:$PATH\
\
export CC=/usr/bin/gcc-3.3;export CXX=/usr/bin/g++-3.3\
cd
\f1 [boincparent]/curl-7.14.0
\f2 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f1 \cf0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f2 \cf0 ./configure --enable-shared=NO\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f1 \cf0 If you are building under OS 10.4, set the CPPFlags and LDFlags environment variables
\f0\b after
\f1\b0 the configure but
\f0\b before
\f1\b0 the make:
\f2 \
export CPPFLAGS="-isysroot /Developer/SDKs/MacOSX10.3.9.sdk"\
export LDFLAGS="-isysroot /Developer/SDKs/MacOSX10.3.9.sdk -Wl,-syslibroot,/Developer/SDKs/MacOSX10.3.9.sdk"
\f1 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f2 \cf0 \
make\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f1 \cf0 \
This will create the static library at [boincparent]/curl-7.14.0/lib/.libs/libcurl.a. The Finder hides file and directory names which begin with a period, so you must use the Terminal tool to see or manipulate this file.\
\
(3) Building the BOINC graphics library libboinc_graphics.a uses jpeglib.h. If you aren't building this library, you can skip this step.\
\
Download jpeg-6b from www.ijg.org into your [boincparent] directory. You don't need to configure or build this library; BOINC only uses the jpeglib.h header file, and expects it to be at the path [boincparent]/ jpeg-6b/jpeglib.h.\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc
\f0\b \cf0 Building the BOINC Manager with embedded Core Client, plus \
BOINC libraries, screensaver and helper applications
\f1\b0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf0 \
(1) Double-click on [boincpath]/mac_build/boinc.pbproj to launch the XCode development IDE with the BOINC project.\
\
(2) Select the appropriate cross-development sdk as follows:\
- select the boinc project icon at the top of the Groups & Files column\
- press command-i to open the Project "boinc" info window.\
- In the "General" tab, set the popup menu "Cross-Develop Using Target SDK." For OS 10.4, select "MacOSX10.3.9.sdk"; for OS 10.3 select "current Mac OS".\
\
(3) In the Active Target popup, select mgr_boinc or Build_All. Build_All also builds the three libraries libboinc_api.a, libboinc_graphics_api.a and libboinc.a, which are used to build science applications such as SETI@home. These libraries are not needed by the BOINC Manager or Core Client. In addition, Build_All builds the screensaver BOINCSaver.saver and the installer helper application Postinstall.app.\
\
If you wish to build only the libraries, then just build the 3 targets libboinc, gfxlibboinc and api_libboinc.\
\
(4) In the Active Build Style popup, choose Development (for debugging) or Deployment (for release builds.)\
\
(5) If you have switched Build Style, be sure to do a "Clean All Targets" from the Build menu; otherwise object files from the old build style will not be rebuilt in the new build style.\
\
(6) If you are building the screensaver, be sure to unstuff the file: \
[boincpath]/clientgui/mac/BOINCSaver.nib.sit\
\
(7) Select Build from the Build menu. I suggest you also open the Detailed Build Results window from the Build menu. Wait a long time while it compiles.\
\
(8) In addition to the BOINC Manager BOINC.app and Core Client boinc, the mgr_boinc target will also build the SystemMenu.bundle framework and a small helper utility SetVersion. \
\
(9) SetVersion is run automatically as part of the build process to update the following Mac version information files using the contents of version.h:\
InfoPlist.strings, \
\CocoaLigature0 Info.plist (under the resources group)\
\CocoaLigature1 \CocoaLigature0 SystemMenu-Info.plist\
\CocoaLigature1 \CocoaLigature0 ScreenSaver-Info.plist\
\CocoaLigature1 \CocoaLigature0 Installer-Info.plist\CocoaLigature1 \
\
(10) The boinc-client, SystemMenu.bundle and InfoPlist.strings will all be embedded automatically inside the BOINC.app application bundle as part of the build process.\
\
(11) If you wish to run the Core Client under the debugger, you will need to set up the command-line arguments. In the Groups & Files column of the XCode project window, select "BOINC_Client" under Executables. Then click on the round blue "info" button at the top of the project window to open the info window. In the info window's Arguments tab, add the following line to the Argument list:\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f2 \cf0 -dir /Library/Application\\ Support/BOINC\\ Data/\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f1 \cf0 Normally, stdio and stderr output will be sent to XCode's console. If you want stdio and stderr to be redirected to files as BOINC normally does, add a second line to the Argument list:\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f2 \cf0 -redirectio
\f1 \
\
These arguments will be used only when running the BOINC Core Client from XCode using XCode's Run or Debug commands.\
\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc
\f0\b \cf0 Building the installer
\f1\b0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf0 \
After creating the
\f0\b deployment
\f1\b0 build of all targets using Build_All, use the Finder to do the following:\
(1) In a convenient place on disk, create a directory "Installer_Resources". Copy the following items into this directory:\
[boincpath]/mac_installer/License.rtf\
[boincpath]/mac_installer/ReadMe.rtf\
[boincpath]/mac_installer/postinstall\
[boincpath]/mac_installer/postupgrade\
[boincpath]/mac_build/build/Postinstall.app\
\
NOTE: the file extensions (such as .app and .saver) may be hidden by the Finder. You can check an item's extension by selecting it in the Finder and using Get Info function from the Finder's File menu.\
\
(2) Create another directory "Pkg_Root", and inside that create two more directories "Applications" and"Library". Create:\
- a "Screen Savers" directory inside your new Library directory,\
- an "Application Support" directory inside your new Library directory,\
- a "BOINC Data" directory inside your new Application Support directory,\
- a "locale" directory inside your new BOINC Data directory \
Correct spelling of these names is critical.\
\
(3) Copy [boincpath]/mac_build/build/BOINCManager.app into your \
"Pkg_Root/Applications" directory.\
\
(4) Copy [boincpath]/mac_build/build/BOINCSaver.saver into your \
"Pkg_Root/Library/Screen Savers" directory. \
\
(5) Copy the
\f0\b contents
\f1\b0
\f0\b of
\f1\b0 boincpath]/locale/client/ into your \
"Pkg_Root/Library/Application Support/BOINC Data/locale" directory. (You may optionally exclude the CVS subdirectories to save space.)\
\
You will now have the following directory structure:\
Pkg_Root\
Applications\
BOINCManager.app\
Library\
Application Support\
BOINC Data\
locale\
de\
en_US\
it\
etc.....\
Screen Savers\
BOINCSaver.saver\
\
(6) From the Finder, open [boincpath]/mac_installer/BOINC.pmproj (if running OS 10.3, use BOINC.pmsp). it will open in the PackageMaker application. In the Files tab, set the path to your Pkg_Root directory. in the Resources tab, set the path to your Installer_Resources directory. Update the version number in multiple places in the Description and Version tabs.\
\
(7) Select "Create Package" from PackageMaker's File menu. You can give any name you wish to the installer package when you create it, but do
\f0\b not
\f1\b0 change the package name
\f0\b after
\f1\b0 it is created.\
\
(8) Quit PackageMaker.\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc
\f0\b \cf0 Package BOINC installer for distribution\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f1\b0 \cf0 \
(1) Create a directory and name it appropriately, e.g. "boinc_4.37_macOSX". Copy the installer package and the ReadMe file into the directory.\
\
(2)After selecting the directory you just created and populated, select \ul Create archive\ulnone from the Finder's File menu. This will zip the file. (Note: if you want to stuff the file instead of zipping it, be sure to uncheck "stuff originals instead of aliases" in DropStuff's preferences.)\
\
(3) Rename the zip file as appropriate to show the version number; for example, boinc_4.37_macOSX
\f4 .zip
\f1 \
\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc
\f0\b\fs28 \cf0 BOINC SETI client application
\f1\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\qc
\f0\b \cf0 ONE_TIME SETUP for BOINC SETI client application\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f1\b0 \cf0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f3\i \cf0 Please see the discussion about versions of autconf and automake in the section "ONE_TIME SETUP for BOINC Manager and embedded Core Client" above. If you install upgrades for these in /usr/local/bin/, type the following at the start of your terminal session:\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f2\i0 \cf0 export PATH=/usr/local/bin:$PATH
\f5\i \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f1\i0 \cf0 \
(1) Open a new terminal window to reset your session environment variables and set the working directory:\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f2 \cf0 cd [setipath] \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f1 \cf0 \
(2) You will need to set some environment variables as described below. These commands are for the bash shell; use the equivalent commands if you are running a different UNIX shell. \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f2 \cf0 \
export PROJECTDIR=[setipath]\
\
export BOINCDIR=[boincpath]\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f1 \cf0 \
If your autoconf and automake are in /usr/local/bin/:\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f2 \cf0 export PATH=/usr/local/bin:$PATH\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f1 \cf0 \
(2) Run Configure to create the correct config.h file:\
\
./_autosetup\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f2 \cf0 ./configure --disable-server --with-apple-opengl-framework --disable-dynamic-graphics\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f1 \cf0 \
(3) Copy the correct libjpeg.a into [path]/seti_boinc/jpeglib/\
\
(4) Create a symbolic link [setipath]/boinc pointing to the boinc directory\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f2 \cf0 cd [setipath] \
ln -s [boincpath] ./boinc\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\f1 \cf0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc
\f0\b \cf0 Building the BOINC SETI client application
\f1\b0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
\cf0 \
The XCODE project for building the BOINC SETI@home client application is \
[setipath]/mac_build/seti_boinc.xcode.\
\
There is an optional api setMacIcon() in the libboinc_api.a library. This allows science 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: \
\f2 MakeAppIcon_h <source_file> <dest_file> \
\f1 (The MakeAppIcon_h command-line utility is built by the Mac boinc XCode project iin the "boinc/mac_build/build/" directory.) Add the app_icon.h file to your science application's project.\
\
(3) In the science application's main(), add \
\f2 #include "app_icon.h"
\f1 \
and call:\
\f2 setMacIcon(argv[0], MacAppIconData, sizeof(MacAppIconData));\
\f1 \
(4) The science 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 \
}