Changes between Version 40 and Version 41 of BuildMacApp


Ignore:
Timestamp:
Oct 8, 2010, 8:21:04 PM (14 years ago)
Author:
charlief
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • BuildMacApp

    v40 v41  
    22
    33= Building BOINC Project Applications for Macintosh OS X =
    4 '''Last updated 4/6/09'''
    5 
    6 This document applies to BOINC libraries 6.1.12 and later.  It has instructions for building science project applications to run under BOINC on Macintosh OSX.  Information for building the BOINC Client and Manager for Macintosh OSX can be found [MacBuild here].
     4'''Last updated 10/8/10'''
     5
     6This document applies to BOINC libraries 6.11.9 and later.  It has instructions for building science project applications to run under BOINC on Macintosh OSX.  Information for building the BOINC Client and Manager for Macintosh OSX can be found [wiki:MacBuild here].
    77
    88Contents of this document:
     
    1111
    1212== General Considerations ==
    13 
    1413Building applications for Macintosh OS X is complicated by the fact that Mac OS X is actually 3 different platforms:
     14
    1515 * '''powerpc-apple-darwin''': PowerPC processors running OS 10.3.0 and above
    1616 * '''i686-apple-darwin''': 32-bit intel processors running OS 10.4.0 and above
    17  * '''x86_64-apple-darwin''': 64-bit intel processors running OS 10.5.0 and above
     17 * '''x86_64-apple-darwin''': 64-bit intel processors running OS 10.5.0 and above
     18
    1819BOINC does not support 64-bit PowerPC applications for the Mac.
    1920
    20 Of course, you can choose to support only some of these platforms.  For example, you may not need a 64-bit version.  If your project does not support the x86_64-apple-darwin platform, BOINC will automatically request your i686-apple-darwin application.  And /or you may choose not to support the powerpc-apple-darwin platform.
    21 
    22 Although BOINC version 6.1.0 supports only Mac OS X 10.3.9 and later, earlier versions supported all versions back to OS 10.3.0.  The GCC compiler version 4.0 was introduced in OS 10.3.9.  OS 10.3.0 through 10.3.8 can't run applications built with GCC 4.0, so you have 2 choices if you want to support PowerPC (G3, G4 and G5) processors:
    23  * Build  your PowerPC application with GCC 4.0 and distribute it only to Macs running 10.3.9 or later.
     21Of course, you can choose to support only some of these platforms.  For example, you may not need a 64-bit version.  If your project does not support the x86_64-apple-darwin platform, BOINC will automatically request your i686-apple-darwin application.  And / or you may choose not to support the powerpc-apple-darwin platform.
     22
     23Although BOINC version 6.1.0 supports only Mac OS X 10.3.9 and later, earlier versions supported all versions back to OS 10.3.0.  The GCC compiler version 4.0 was introduced in OS 10.3.9.  OS 10.3.0 through 10.3.8 can't run applications built with GCC 4.0.  Also, starting with version 6.10.58,  the BOINC Client supports only Mac OS X 10.4.0 and later.  This allows it to be built with XCode 3.2 under OS 10.6.x, which does not support the Mac OS 10.3.9 SDK.
     24
     25You have 2 choices if you want to support PowerPC (G3, G4 and G5) processors:
     26 * Build  your PowerPC application with GCC 4.0 and distribute it only to Macs running 10.3.9 (or 10.4.0) or later.
    2427 * Build your PowerPC application with GCC 3.3.
    2528
    2629The libraries supplied with different versions of OS X support different APIs.  You need to take certain steps to ensure that you use only APIs that are available in all the OS versions you plan to support.  There are two basic ways to accomplish this:
     30
    2731 * Build each platform on a system running the oldest OS you need to support:
    28     * A PowerPC development system running OS 10.3.0 through 10.3.8 (or 10.3.9 if you won't support the older systems)
    29     * An Intel development system running OS 10.4.x
    30     * A 64-bit development Intel system running OS 10.5.x (The original Intel Macs used an Intel Core Duo processor which was 32-bit only.  You must have an Intel Core 2 Duo or newer processor to run 64-bit applications.)
    31  * Use a single development system running OS 10.5.x and cross-compile for the various platforms.  The remainder of this document describes that process.
     32   * A PowerPC development system running OS 10.3.0 through 10.3.8 (or 10.3.9 or 10.4.0 if you won't support the older systems)
     33   * An Intel development system running OS 10.4.x
     34   * A 64-bit development Intel system running OS 10.5.x or later (The original Intel Macs used an Intel Core Duo processor which was 32-bit only.  You must have an Intel Core 2 Duo or newer processor to run 64-bit applications.)
     35 * Use a single development system running OS 10.5.x or later and cross-compile for the various platforms.  The remainder of this document describes that process.
    3236
    3337You will also need to build the BOINC libraries on each platform and any other libraries your application needs.  You can use the Makefiles supplied in the BOINC Subversion tree to build the BOINC libraries with this approach, or build them as Universal Binaries using the BOINC XCode project, as described later in this document.
    3438
    35 At the time this is written, the BOINC Makefiles do not build 64-bit binaries.
    36 
    3739== Cross-Platform Development ==
    38 
    3940Apple provides the tools necessary to cross-compile for all three BOINC Mac platform on any Mac running OS 10.5.x.  If you don't need to support the x86_64-apple-darwin platform, you can also cross-compile on OS 10.4.x.
    4041
    41 Apple provides Software Developer Kits (SDKs) for OS 10.3.9, OS 10.4 and OS 10.5.  These include all the header files and stub libraries appropriate to the corresponding versions of OS X.
    42 
    43 You get these tools, including the GCC compilers and system library header files, by installing the XCode Tools package.  I recommend running OS 10.5.x and installing XCode Tools 3.0 or later. If you have the OS 10.5 installation DVD for your system, you can install XCode Tools at the time you install the OS, or you can install it later by opening the file `Optional Installs/XCode Tools/XCodeTools.mpkg`.
    44 
    45 Otherwise, you can download it from Apple's web site (it is large: 1.1 GB).  You must be a member of the Apple Developer Connection to download the software, but you can join for free at:
    46 http://connect.apple.com
    47 
    48  * All BOINC software for Power PC Macs must be built using MacOS10.3.9 SDK to assure backward compatibility with OS 10.3.9.
    49  * 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 to assure backward compatibility with OS 10.4.x.
    50  * All 64-bit BOINC software for Intel Macs must be built using GCC 4.0 and MacOS10.5 SDK.
    51 
    52 Note that the MacOS10.3.9 SDK and GCC-3.3 are not automatically included unless you customize the installation; you must click  the '''Customize''' button in the ''Installation type'' step and select the MacOS10.3.9 SDK when you run the XCode Tools installer if you want to support the powerpc-apple-darwin platform.
    53 
    54 The example_app found in boinc/samples has examples of 3 different ways to build the application for all 3 platforms using cross-development:
     42Apple provides Software Developer Kits (SDKs) for OS 10.3.9, OS 10.4, OS 10.5 and OS 10.6.  These include all the header files and stub libraries appropriate to the corresponding versions of OS X.  However, the OS 10.3.9 cannot be used with XCode 3.2 under OS 10.6.
     43
     44You get these tools, including the GCC compilers and system library header files, by installing the XCode Tools package.  We recommend running OS 10.6.x and installing XCode Tools 3.2 or later. If you have the OS 10.6 installation DVD for your system, you can install XCode Tools at the time you install the OS, or you can install it later by opening the file `Optional Installs/XCode Tools/XCodeTools.mpkg`.
     45
     46Otherwise, you can download it from Apple's web site (it is large: 1.1 GB).  You must be a member of the Apple Developer Connection to download the software, but you can join for free at: http://connect.apple.com
     47
     48XCode will automatically check compatibility back to OS 10.3 if the following are defined during compilation:
     49{{{
     50MAC_OS_X_VERSION_MAX_ALLOWED=1030
     51MAC_OS_X_VERSION_MIN_REQUIRED=1030
     52}}}
     53
     54Note that the MacOS10.4u SDK is not automatically included unless you customize the installation; click  the '''Customize''' button in the ''Installation type'' step when you run the XCode Tools installer.
     55
     56The example_app found in `boinc/samples` has examples of 3 different ways to build the application for all 3 platforms using cross-development:
     57
    5558 * Create an XCode project
    5659 * Use a generic Makefile with a custom shell script
     
    5861
    5962The basic requirements for building each platform are:
     63
    6064 * Specify the architecture: ppc, i386 or x86_64
    61  * Specify the compiler to use if it is GCC-3.3.
    62  * Specify the appropriate SDK for the minimum target OS X version.
    63  * Specify the Mac OSX Deployment Target, which is the minimum target OS X version.  This tells the compiler to reject any attempts to use APIs not available in that version of OS X.
     65 * Specify the compiler to use (we recommend GCC-4.0).
     66 * Specify an appropriate SDK.  It is OK to use the latest SDK even if building for older versions of OS X.
     67 * Specify the Mac OSX Deployment Target, which is the minimum target OS X version on which you want your to application run.
     68 * Add the definitions of MAC_OS_X_VERSION_MAX_ALLOWED and MAC_OS_X_VERSION_MIN_REQUIRED to the C or C++ compiler flags.  This also specifies the minimum target OS X version.  It tells the compiler to reject any attempts to use APIs not available in that version of OS X.
     69
     70''Important:'' set the value of MAC_OS_X_VERSION_MAX_ALLOWED to be the same as the value of MAC_OS_X_VERSION_MIN_REQUIRED.  Possible values for the C compiler flags are:
     71{{{
     72-DMAC_OS_X_VERSION_MAX_ALLOWED=1030 -DMAC_OS_X_VERSION_MIN_REQUIRED=1030
     73-DMAC_OS_X_VERSION_MAX_ALLOWED=1040 -DMAC_OS_X_VERSION_MIN_REQUIRED=1040
     74-DMAC_OS_X_VERSION_MAX_ALLOWED=1050 -DMAC_OS_X_VERSION_MIN_REQUIRED=1050
     75}}}
     76These specify that the executable should be able to run on systems back to OS 10.3, OS 10.4 and OS 10.5, respectively.
     77
     78You can find examples in the following files in the BOINC SVN trunk:[[BR]]
     79`boinc/mac_build/buildc-ares.sh`[[BR]]
     80`boinc/mac_build/buildcurl.sh`[[BR]]
     81`boinc/mac_build/buildjpeg.sh`[[BR]]
     82`boinc/samples/example_app/MakeMacExample.sh`[[BR]]
     83`boinc/samples/example_app/Makefile_mac2`[[BR]]
     84`boinc/samples/example_app/Makefile_mac`[[BR]]
     85`boinc/samples/wrapper/Makefile_mac`[[BR]]
    6486
    6587== Preparing To Build ==
    66 
    67 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.  This parent directory will contain the BOINC source files, your application project, and any other library projects you will use. 
     88Create a parent directory within which to work.  In this description , we will call it BOINC_dev, but you can name it anything you wish.  This parent directory will contain the BOINC source files, your application project, and any other library projects you will use.
    6889
    6990Source files are now archived using Subversion. You can download svnX, a free GUI application for running Subversion from either [http://www.apple.com/downloads/macosx/development_tools/svnx.html] or [http://www.lachoseinteractive.net/en/community/subversion/svnx/].
    7091
    71 You also need to install Subversion itself. One place to get it is: [http://www.codingmonkeys.de/mbo/]
    72 
     92You also need to install Subversion itself. One place to get it is: [http://www.codingmonkeys.de/mbo/]. 
     93
     94If you are running OS X 10.6 and XCode 3.2, a recent version of Subversion is already installed in `/usr/bin/`.  To copy it into `/usr/local/bin/`, enter the following in the Terminal utility application:
     95{{{
     96cd /usr/bin
     97sudo cp -p svn* /usr/local/bin
     98}}}
    7399Get the BOINC source tree from SVN, and put it in the same BOINC_dev folder. To do this, type the following in Terminal:
    74100{{{
     
    76102svn co http://boinc.berkeley.edu/svn/trunk/boinc
    77103}}}
    78 
    79104(You may change the name of the boinc directory to anything you wish.)  Hint: if you have trouble getting this to work, try using `https` instead of `http`.
    80105
    81 The command above retrieves the source code from the HEAD or development branch of the SVN repository. See more information on [SourceCode getting the BOINC source code].
     106The command above retrieves the source code from the HEAD or development branch of the SVN repository. See more information on [wiki:SourceCode getting the BOINC source code].
    82107
    83108Build the BOINC libraries as follows:
    84109
    85 Build BOINC as follows:
    86 
    87 BOINC itself is built using the `boinc.xcodeproj` file.  You can either build directly in XCode (more information below) or run the `BuildMacBOINC.sh` script:
    88 
     110BOINC itself is built using the `boinc.xcodeproj` file.  You can either build directly in XCode (more information below) or run the `BuildMacBOINC.sh` script.  Note: this script requires XCode 3.2 running under OS 10.6.x.  Run the script as follows:
    89111{{{
    90112cd {path}/BOINC_dev/boinc/mac_build/
    91113source BuildMacBOINC.sh -lib
    92114}}}
    93 
    94115The complete syntax for this script is
    95116
    96117{{{
    97 source BuildMacBOINC.sh [-dev] [-noclean] [-no64bit] [-all] [-lib] [-client] [-help]
    98 }}}
    99 
     118source BuildMacBOINC.sh [-dev] [-noclean] [-all] [-lib] [-client] [-help]
     119}}}
    100120The options for BuildMacBOINC.sh are:
    101121
    102       -dev::
    103           build the development (debug) version (native architecture only). Default is deployment (release) version (universal binaries containing three architectures: ppc, i386 and x86_64); when you link your application with these libraries, the linker will automatically select the architecture matching your application.
    104       -noclean::
    105           don't do a 'clean' of each target before building. default is to clean all first.
    106         -no64bit::
    107           build 32-bit binaries only, no x86_64 architecture.
     122 -dev:: build the development (debug) version (native architecture only). Default is deployment (release) version (universal binaries containing three architectures: ppc, i386 and x86_64); when you link your application with these libraries, the linker will automatically select the architecture matching your application.
     123 -noclean:: don't do a 'clean' of each target before building. default is to clean all first.
    108124
    109125The following arguments determine which targets to build
    110126
    111       -all::
    112           build all targets (i.e. target 'Build_All' -- this is the default)
    113       -lib::
    114           build the three libraries: libboinc_api.a, libboinc_graphics_api.a, libboinc.a.  (This uses GCC-3.3 for the PowerPC build for OS 10.3.0 compatibility and uses GCC-4.0 for the Intel builds.)
    115       -client::
    116           build two targets: BOINC client and command-line utility [BoincCmd boinc_cmd] (also builds libboinc.a, since boinc_cmd requires it.)
    117 
    118 Both -lib and -client may be specified to build five targets (no BOINC Manager.)
    119 
    120 Note: You may find three XCode projects in the BOINC_dev/boinc/mac_build/ directory:
    121     * '''boinc.pbproj''' is obsolete and should no longer be used.
    122     * '''wxMac-BOINC.xcodeproj''' 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.
    123     * '''boinc.xcodeproj''' 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.
    124 
    125 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:
    126  * On a PowerPC Mac, it runs the ppc executable.
    127  * On a Mac with a 64-bit Intel processor running OS 10.5 or later, it runs the x86_64 executable.
    128  * On any other Intel Mac, it runs the i386 executable.
     127 -all:: build all targets (i.e. target 'Build_All' -- this is the default)
     128 -lib:: build the three libraries: libboinc_api.a, libboinc_graphics_api.a, libboinc.a.
     129 -client:: build two targets: BOINC client and command-line utility [wiki:BoincCmd boinc_cmd] (also builds libboinc.a, since boinc_cmd requires it.)
     130
     131Both -lib and -client may be specified to build five targets (no BOINC Manager.)
     132
     133For more information on this script, please see [wiki:MacBuild here].
     134
     135Note: You may find two XCode projects in the BOINC_dev/boinc/mac_build/ directory:
     136
     137 * '''wxMac-BOINC.xcodeproj''' 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.
     138 * '''boinc.xcodeproj''' builds BOINC. It can be used either with the BuildMacBOINC.sh script or as a stand-alone project. 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.  If there are any other build configurations, they should not be used as they are obsolete.
     139
     140The standard release of BOINC version 6.1.0 and later contains a universal binary of the BOINC libraries containing builds for three architectures: ppc, i386 and x86_64.
    129141
    130142== Build Any Other Needed Libraries ==
    131 
    132 If you are building a third-party library (such as JPEG), you will need to take the steps listed above in the section Cross-Platform Development.  See the files `boinc/samples/example_app/Makefile_mac2` and `boinc/samples/example_app/MakeMacExample.sh` for examples of how to accomplish this.
     143If you are building a third-party library (such as JPEG), you will need to take the steps listed above in the section Cross-Platform Development.  See the files listed above for examples of how to accomplish this.
    133144
    134145== Build Your Application Using Cross-Development ==
    135 
    136 We will use the example_app to illustrate the 3 methods of cross-compiling.   
     146We will use the example_app to illustrate the 3 methods of cross-compiling.
    137147
    138148=== Using an XCode Project ===
    139 
    140149Double-click on the project file `boinc/samples/mac_build/UpperCase2.xcodeproj`.  At the top of the main window, select '''Build_All''' for the ''Active Target'', and '''ppc_Deployment''' for the ''Active Build Configuration''.  Then click on the Build icon (or select Build from the Build menu.)  Repeat for ''Active Build Configurations'' '''i386_Deployment''' and '''x86_64_Deployment'''.
    141150
    142 Use the example XCode project as a guide or a starting point to create an XCode project for your own application.  Pay special attention to the XCode build settings.  For more information on using XCode, see [http://developer.apple.com/documentation/DeveloperTools/Conceptual/XcodeUserGuide/Contents/Resources/en.lproj/00_00_intro/chapter_1_section_1.html XCode User Guide] and [http://developer.apple.com/documentation/DeveloperTools/Conceptual/XcodeUserGuide/Contents/Resources/en.lproj/05_04_bs_build_settings/chapter_33_section_1.html XCode Build Settings].
    143 
    144 Also note that you can use the program `xcodebuild` to build XCode projects from the command-line (e.g. in a terminal window or shell script).  There are various flags for building particular builds within a project, and for overriding default variables as well (check `man xcodebuild` in a terminal window for the options).
     151Note: you may see the following warning when building the PowerPC executable.  You may safely ignore it:
     152{{{
     153ld: warning: object file compiled with -mlong-branch which is no longer needed. To remove this warning, recompile without -mlong-branch: /Developer/SDKs/MacOSX10.4u.sdk/usr/lib/crt1.o
     154}}}
     155
     156Use the example XCode project as a guide or a starting point to create an XCode project for your own application.  Pay special attention to the XCode build settings.  For more information on using XCode, see [http://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/XcodeWorkspace XCode Workspace Guide].
     157
     158Also note that you can use the program `xcodebuild` to build XCode projects from the command-line (e.g. in a terminal window or shell script).  There are various flags for building particular builds within a project, and for overriding default variables as well (check `man xcodebuild` in a terminal window for the options).  You can find an example of this approach in the file `boinc/mac_build/buildWxMac.sh`
    145159
    146160=== Using a Generic Makefile With a Custom Shell Script ===
    147 
    148161Type the following in Terminal:
    149162
     
    152165sh MakeMacExample.sh -clean
    153166}}}
    154 
    155167Again, you can use this shell script as a guide or starting point to create one for your application.  Let's examine the details:
    156168
     
    164176export PATH=/usr/local/bin:$PATH
    165177}}}
    166 XCode 2.4.1 installs autoconf 2.59 and automake 1.6.3. XCode 3.0 installs autoconf 2.61 and automake 1.10. To determine the version number, type autoconf --version or automake --version.  If you installed a later version of either or both, they will be in the '/usr/local/bin/' directory.  This line ensures that the system will look there first.
     178XCode 2.4.1 installs autoconf 2.59 and automake 1.6.3. XCode 3.x installs autoconf 2.61 and automake 1.10. To determine the version number, type autoconf --version or automake --version.  If you installed a later version of either or both, they will be in the '/usr/local/bin/' directory.  This line ensures that the system will look there first.
    167179
    168180None of these examples require running `_autosetup`.  If you are building other libraries or utilities that do have `_autosetup` , you may also need to install [http://sourceforge.net/projects/pkgconfig/ pkg-config].
     181
     182{{{
     183export CC=/usr/bin/gcc-4.0;export CXX=/usr/bin/g++-4.0
     184}}}
     185Specifies which compiler to use.
     186
    169187{{{
    170188export MACOSX_DEPLOYMENT_TARGET=10.3
    171189}}}
    172 Specifies the Mac OSX Deployment Target, which is the minimum target OS X version.  This tells the compiler to reject any attempts to use APIs not available in that version of OS X.
    173 
    174 {{{
    175 export CC=/usr/bin/gcc-3.3;export CXX=/usr/bin/g++-3.3
    176 }}}
    177 Specifies which compiler to use.
    178 
    179 {{{
    180 export LDFLAGS="-Wl,-syslibroot,/Developer/SDKs/MacOSX10.3.9.sdk -arch ppc"
    181 }}}
    182 Specifies the appropriate SDK for the minimum target OS X version and the architecture for the linker.
    183 
    184 {{{
    185 export VARIANTFLAGS="-arch ppc -D_NONSTD_SOURCE -isystem /Developer/SDKs/MacOSX10.3.9.sdk"
    186 }}}
    187 Specifies the appropriate SDK for the minimum target OS X version and the architecture for the compiler.  For an explanation of _NONSTD_SOURCE, see:
    188 http://developer.apple.com/documentation/Darwin/Reference/ManPages/man5/compat.5.html
     190Specifies the Mac OSX Deployment Target, which is the minimum target OS X version on which you want your to application run.
     191
     192{{{
     193export LDFLAGS="-Wl,-syslibroot,/Developer/SDKs/MacOSX10.6.sdk,-arch,ppc"
     194}}}
     195Specifies the appropriate SDK to use and the architecture for the linker. 
     196
     197{{{
     198export VARIANTFLAGS="-arch ppc -DMAC_OS_X_VERSION_MAX_ALLOWED=1030 -DMAC_OS_X_VERSION_MIN_REQUIRED=1030 -isysroot /Developer/SDKs/MacOSX10.6.sdk -fvisibility=hidden -fvisibility-inlines-hidden"
     199}}}
     200Specifies the SDK to use and the architecture for the compiler.  MAC_OS_X_VERSION_MAX_ALLOWED and MAC_OS_X_VERSION_MIN_REQUIRED tell the compiler to generate an error if you are using any APIs not yet available in that version of the Mac OS.
    189201
    190202=== Using a Custom Makefile ===
    191 
    192203Type the following in Terminal:
    193204
     
    196207make -f Makefile_mac2 clean all
    197208}}}
    198 
    199 The elements of our custom Makefile correspond to those described in our script, with one important exception.  Instead of setting the environment variable `MACOSX_DEPLOYMENT_TARGET`, we include in the `CXXFLAGS` one of the following: `-DMAC_OS_X_VERSION_MIN_REQUIRED=1030` (to build a PowerPC application using GCC-3.3), `-mmacosx-version-min=10.4` (to build a 32-bit Intel application using GCC-4.0) or `-mmacosx-version-min=10.5` (to build a 64-bit Intel application using GCC-4.0).
     209The elements of our custom Makefile correspond to those described in our script.
    200210
    201211== Upgrading applications for version 6 graphics ==
    202 
    203212One 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.
    204213
    205 For additional information, please see [milestone:6.0 the 6.0 roadmap] and the [GraphicsApi Graphics API] page.
     214For additional information, please see the [wiki:GraphicsApi Graphics API] page.
    206215
    207216== Adding a Finder icon to your graphics application ==
    208 
    209217There is an optional API `setMacIcon()` in the `libboinc_api.a` library. This allows science graphics applications to 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:
    210218
    211     * Use '/Developer/Applications/utilities/Icon Composer.app' to create a xxx.icns file. (Use any name you wish instead of xxx.)
    212     * Convert the xxx.icns file to an app_icon.h file as follows: in Terminal, run:
     219 * Use '/Developer/Applications/utilities/Icon Composer.app' to create a xxx.icns file. (Use any name you wish instead of xxx.)
     220 * Convert the xxx.icns file to an app_icon.h file as follows: in Terminal, run:
    213221{{{
    214222{path}/MakeAppIcon_h {source_file_path}/xxx.icns {dest_file_path}/app_icon.h
    215223}}}
    216       (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 graphics application's project.
    217     * In the graphics application's main(), add
     224   (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 graphics application's project.
     225 * In the graphics application's main(), add
    218226{{{
    219227#include "app_icon.h"
    220228}}}
    221       and call:
     229   and call:
    222230{{{
    223231setMacIcon(argv[0], MacAppIconData, sizeof(MacAppIconData));
    224232}}}
    225     * The graphics application must link with Carbon.framework to use setMacIcon().
     233 * The graphics application must link with Carbon.framework to use setMacIcon().
    226234
    227235== Additional References ==
    228 
    229 http://developer.apple.com/technotes/tn2005/tn2137.html [[BR]]
    230 http://developer.apple.com/documentation/DeveloperTools/Conceptual/cross_development/ [[BR]]
    231 http://developer.apple.com/releasenotes/DeveloperTools/RN-GCC4/ [[BR]]
    232 http://developer.apple.com/documentation/Porting/Conceptual/PortingUnix/compiling/chapter_4_section_3.html [[BR]]
    233 http://developer.apple.com/documentation/Porting/Conceptual/PortingUnix/compiling/chapter_4_section_6.html [[BR]]
    234 http://developer.apple.com/documentation/MacOSX/Conceptual/universal_binary/universal_binary_compiling/chapter_2_section_7.html [[BR]]
    235 http://developer.apple.com/releasenotes/DeveloperTools/GCC40PortingReleaseNotes/index.html
    236 
     236http://developer.apple.com/technotes/tn2005/tn2137.html [[BR]] http://developer.apple.com/documentation/DeveloperTools/Conceptual/cross_development/ [[BR]] http://developer.apple.com/releasenotes/DeveloperTools/RN-GCC4/ [[BR]] http://developer.apple.com/library/mac/#documentation/Porting/Conceptual/PortingUnix/intro/intro.html [[BR]] http://developer.apple.com/legacy/mac/library/#documentation/MacOSX/Conceptual/universal_binary [[BR]] http://developer.apple.com/releasenotes/DeveloperTools/GCC40PortingReleaseNotes/index.html