Changes between Version 68 and Version 69 of MacBuild
- Timestamp:
- Jan 26, 2012, 4:41:46 PM (13 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
MacBuild
v68 v69 1 1 = Building BOINC Client and Manager on Macintosh OS X = 2 '''Last updated 1 0/11/10'''2 '''Last updated 1/26/12''' 3 3 4 This document applies to BOINC version 6.1 1.9 and later. It has instructions for building the BOINC Client and Manager for Macintosh OS X. For information on building science project applications to run under BOINC on Macintosh OSX, see BuildMacApp.4 This document applies to BOINC version 6.13.9 and later. It has instructions for building the BOINC Client and Manager for Macintosh OS X. For information on building science project applications to run under BOINC on Macintosh OSX, see BuildMacApp. 5 5 6 6 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: … … 16 16 == Important requirements for building BOINC software for the Mac == 17 17 18 Building BOINC for Macintosh OS X is complicated by the fact that Mac OS X is actually 3 different platforms: 19 * '''powerpc-apple-darwin''': PowerPC processors running OS 10.3.0 and above 20 * '''i686-apple-darwin''': 32-bit Intel processors running OS 10.4.0 and above 21 * '''x86_64-apple-darwin''': 64-bit Intel processors running OS 10.5.0 and above 22 BOINC does not support 64-bit PowerPC applications for the Mac. 18 Building BOINC for Macintosh OS X is complicated by the fact that Mac OS X is actually 2 different platforms: 19 * '''i686-apple-darwin''': 32-bit Intel processors running OS 10.4.0 and above 20 * '''x86_64-apple-darwin''': 64-bit Intel processors running OS 10.5.0 and above 21 As of version 6.13.0, BOINC does not support Macintosh PowerPC processors. 23 22 24 Although BOINC supports 64-bit Intel project applications on Mac OS 10.5.0 and above, the only part of the BOINC client package built as a 64-bit executable is the screensaver coordinator for OS 10.6.x . The BOINC libraries also include a 64-bit build so that they can be linked with 64-bit project applications.23 Although BOINC supports 64-bit Intel project applications on Mac OS 10.5.0 and above, the only part of the BOINC client package built as a 64-bit executable is the screensaver coordinator for OS 10.6.x and later. The BOINC libraries also include a 64-bit build so that they can be linked with 64-bit project applications. 25 24 26 You need to take certain steps to ensure that you use only APIs that are available in all the OS versions BOINC supports for each architecture. The best way to accomplish this is to use a single development system running OS 10. 6.x and cross-compile for the various platforms. The remainder of this document describes that process.25 You need to take certain steps to ensure that you use only APIs that are available in all the OS versions BOINC supports for each architecture. The best way to accomplish this is to use a single development system running OS 10.7.x and cross-compile for the various platforms. The remainder of this document describes that process. 27 26 28 27 '''The above requirements apply not only to BOINC itself, but also to the !WxWidgets, JPEG, c-ares and cURL libraries, as well as all project applications.''' Note: only the JPEG library must be built for the x86_64 architecture, since it is used by the libboinc_graphics_api library. … … 37 36 == Cross-Platform Development == 38 37 39 Apple provides the tools necessary to cross-compile for all three BOINC Mac platform on any Mac running OS 10.6.x.38 Apple provides the tools necessary to cross-compile for both BOINC Mac platforms on any Mac running OS 10.6.x or OS 10.7.x. 40 39 41 You get these tools, including the GCC compilers and system library header files, by installing the XCode Tools package. Building BOINC and the library packages on which it depends requires XCode 3.2 or later running under OS 10.6.x 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`.40 You get these tools, including the GCC compilers and system library header files, by installing the XCode Tools package. 42 41 43 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: 42 '''Building BOINC now requires Xcode Tools version 3.2 or later but Xcode 4.2 or later is recommended.''' 43 44 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 46 You can download Xcode 3.2 or 4.2 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: 44 47 http://connect.apple.com 45 46 '''Building BOINC now requires XCode Tools version 3.2 or later.''' Note 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. The MacOS10.4u SDK is required to build wxWidgets (wxMac-2.8.10).47 48 48 49 Source 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/]. … … 57 58 == Building BOINC Manager with embedded Core Client == 58 59 59 BOINC depends on four third-party libraries: wxMac-2.8.10, c-ares-1. 6.0, curl-7.19.7, and jpeg-6b. You can obtain these from the following URLs:60 BOINC depends on four third-party libraries: wxMac-2.8.10, c-ares-1.7.4, curl-7.21.7, and jpeg-6b. The source files for jpeg-6b are included with the BOINC sources. You can obtain the other three from the following URLs: 60 61 61 62 wxMac-2.8.10 (needed only if you are building the BOINC Manager): … … 67 68 [http://downloads.sourceforge.net/wxwindows/wxMac-2.8.10.tar.bz2] 68 69 69 curl-7. 19.7:70 curl-7.21.7: 70 71 71 72 [http://curl.haxx.se] 72 73 73 [http://curl.haxx.se/download/curl-7. 19.7.tar.gz]74 [http://curl.haxx.se/download/curl-7.21.7.tar.gz] 74 75 75 c-ares-1. 6.0(used by curl):76 c-ares-1.7.4 (used by curl): 76 77 77 78 [http://daniel.haxx.se/projects/c-ares/] 78 79 79 [http:// daniel.haxx.se/projects/c-ares/c-ares-1.6.0.tar.gz]80 [http://c-ares.haxx.se/download/c-ares-1.7.4.tar.gz] 80 81 81 jpeg-6b (needed only if you are building the BOINC libboinc_graphics2.a library): 82 (Don't forget to expand the tar files by double-clicking on them.) 82 83 83 [http://www.ijg.org] 84 85 [http://dir.filewatcher.com/d/GNU/Other/jpegsrc.v6b.tar.gz.613261.html] 86 87 XCode will automatically check compatibility back to OS 10.3 if the following are defined during compilation: 84 XCode will automatically check compatibility back to OS 10.4 if the following are defined during compilation: 88 85 {{{ 89 MAC_OS_X_VERSION_MAX_ALLOWED=10 3090 MAC_OS_X_VERSION_MIN_REQUIRED=10 3086 MAC_OS_X_VERSION_MAX_ALLOWED=1040 87 MAC_OS_X_VERSION_MIN_REQUIRED=1040 91 88 }}} 92 These are not done by either the XCode projects which come with wxMac-2.8.10, nor the !AutoMake scripts supplied with wxMac-2.8.10, c-ares-1. 6.0, curl-7.19.7, or jpeg-6b. So be sure to use our special scripts to build these packages.89 These are not done by either the XCode projects which come with wxMac-2.8.10, nor the !AutoMake scripts supplied with wxMac-2.8.10, c-ares-1.7.4, curl-7.21.7, or jpeg-6b. So be sure to use our special scripts to build these packages. 93 90 94 91 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. 95 2. Put the following 4directories inside the BOINC_dev folder (omit any you don't need):92 2. Put the following 3 directories inside the BOINC_dev folder (omit any you don't need): 96 93 {{{ 97 c-ares-1.6.0 98 curl-7.19.7 99 jpeg-6b 94 c-ares-1.7.4 95 curl-7.21.7 100 96 wxMac-2.8.10 101 97 }}} 102 Important: do not change the names of any of these 4directories.98 Important: do not change the names of any of these 3 directories. 103 99 3. Get the BOINC source tree from SVN, and put it in the same BOINC_dev folder. To do this, type the following in Terminal: 104 100 {{{ … … 116 112 If you don't wish to force a full rebuild of everything, omit the -clean argument. 117 113 118 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 curlbefore quitting.114 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 aren't building the BOINC Manager, the script will build c-ares, curl and jpeg before quitting. 119 115 5. Build BOINC as follows: 120 116 … … 135 131 136 132 -dev:: 137 build the development (debug) version (native architecture only). default is deployment (release) version (universal binar ies: ppc,i386 and x86_64).133 build the development (debug) version (native architecture only). default is deployment (release) version (universal binary: i386 and x86_64). 138 134 -noclean:: 139 135 don't do a 'clean' of each target before building. default is to clean all first. … … 144 140 build all targets (i.e. target 'Build_All' -- this is the default) 145 141 -lib:: 146 build the three libraries: libboinc_api.a, libboinc_graphics2.a, libboinc.a142 build the five libraries: libboinc_api.a, libboinc_graphics_api.a, libboinc.a, libboinc_opencl.a, jpeglib.a 147 143 -client:: 148 build two targets: BOINC client and command-line utility [ BoincCmdboinc_cmd] (also builds libboinc.a, since boinc_cmd requires it.)144 build two targets: BOINC client and command-line utility [http://boinc.berkeley.edu/wiki/Boinccmd_tool boinc_cmd] (also builds libboinc.a, since boinc_cmd requires it.) 149 145 150 Both -lib and -client may be specified to build five targets (no BOINC Manager.)146 Both -lib and -client may be specified to build seven targets (no BOINC Manager or screensaver.) 151 147 152 148 Note: You may find two XCode projects in the BOINC_dev/boinc/mac_build/ directory: … … 154 150 * '''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. 155 151 156 The standard release of BOINC version 6.10.58 and later contains a universal binary of the BOINC Client containing builds for two architectures: ppc and i386. The Mac OS automatically chooses the appropriate architecture as follows: 157 * On a PowerPC Mac, it runs the ppc executable. 158 * On an Intel Mac, it runs the i386 executable. 152 '''Note:''' To perform a release build under Xcode 4.2 when not using the BuildMacBOINC.sh script, select "Build for archiving" from Xcode's Product menu. Do '''not''' select "Archive." 159 153 160 Note: you may see the following warning when building the PowerPC executable. You may safely ignore it: 161 {{{ 162 ld: warning: object file compiled with -mlong-branch which is no longer needed. 163 To remove this warning, recompile without -mlong-branch 164 }}} 154 The standard release of BOINC version 6.13.0 and later builds only for Macintosh computers with Intel processors. Most of the executables are built only for the i386 architecture. The libraries and the screensaver are built as universal binaries containing builds for two architectures: i386 and x86_64. 155 156 '''Important compatibility note:''' Xcode 4.x comes with only two Mac SDKs: MacOSX10.6.sdk and MacOSX10.7.sdk. The BOINC Xcode project uses MacOSX10.6.sdk so that it can build with either Xcode 4.x or Xcode 3.2. However, a couple of the libraries in MacOSX10.6.sdk require OS 10.6 or later to run. If you are building only to run on OS 10.6 or later, you don't need to do anything else. 157 158 However, if you want to build BOINC so it will run on OS 10.4 and OS 10.5, you must either: 159 * build with Xcode 3.2, or 160 * build with Xcode 4.x after copying the MacOSX10.5.sdk from an older version of Xcode to your /Developer/SDKs/ folder. The BOINC Xcode project will automatically detect the presence of that SDK and use the two older libraries needed for backward compatibility. 165 161 166 162 … … 176 172 }}} 177 173 178 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 6.1 1.9, the command would be174 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 6.13.9, the command would be 179 175 180 176 {{{ 181 source {path}/BOINC_dev/boinc/mac_installer/release_boinc.sh 6 1 19177 source {path}/BOINC_dev/boinc/mac_installer/release_boinc.sh 6 13 9 182 178 }}} 183 179 184 This will create a directory 'BOINC_Installer/New_Release_6_1 1_9' in the BOINC_dev directory, and the installer will be located in `{path}/BOINC_dev/BOINC_Installer/New_Release_6_11_9/boinc_6.11.9_macOSX_universal`.180 This will create a directory 'BOINC_Installer/New_Release_6_13_9' in the BOINC_dev directory, and the installer will be located in `{path}/BOINC_dev/BOINC_Installer/New_Release_6_13_9/boinc_6.13.9_macOSX_universal`. 185 181 186 182 == Debugging and BOINC security == … … 190 186 The GDB debugger can't attach to applications which are running as a different user or group so it ignores the S_ISUID and S_ISGID permission bits when launching an application. To work around this, the BOINC ''Development'' build does not use the special boinc_master or boinc_project users or groups, and so can be run under the debugger from XCode. 191 187 192 The ''Development'' build ''only'' 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. 188 The ''Development'' build ''only'' 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 generate the development build under Xcode 4.2, choose "Build" from the product menu, or enter command-B on the keyboard.) 193 189 194 190 To restore the standard ownerships and permissions, run the installer.