#!/bin/sh # Berkeley Open Infrastructure for Network Computing # http://boinc.berkeley.edu # Copyright (C) 2005 University of California # # This is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; # either version 2.1 of the License, or (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU Lesser General Public License for more details. # # To view the GNU Lesser General Public License visit # http://www.gnu.org/copyleft/lesser.html # or write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # # ## # Script for building Macintosh BOINC Manager, Core Client and libraries # by Charlie Fenton 3/27/08 # with thanks to Reinhard Prix for his assistance ## ## Usage: ## cd to the mac_build directory of the boinc tree, for example: ## cd [path]/boinc/mac_build ## ## then invoke this script as follows: ## source BuildMacBOINC.sh [-dev] [-noclean] [-no64bit] [-all] [-lib] [-client] [-help] ## or ## chmod +x BuildMacBOINC.sh ## ./BuildMacBOINC.sh [-dev] [-noclean] [-no64bit] [-all] [-lib] [-client] [-help] ## ## optional arguments ## -dev build the development (debug) version (native architecture only). ## default is deployment (release) version (universal binaries: ppc and i386). ## ## -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_graphics2.a, libboinc.a ## and the utility application MakeAppIcon_h. ## ## -client build two targets: boinc client and command-line utility boinc_cmd ## (also builds libboinc.a if needed, since boinc_cmd requires it.) ## ## Both -lib and -client may be specified to build five targets (no BOINC Manager) ## targets="" doclean="clean" buildall=0 buildlibs=0 buildclient=0 no64bit=0 style="Deployment" while [ $# -gt 0 ]; do case "$1" in -noclean ) doclean="" ; shift 1 ;; -dev ) style="Development" ; shift 1 ;; -all ) buildall=1 ; shift 1 ;; -lib ) buildlibs=1 ; shift 1 ;; -client ) buildclient=1 ; shift 1 ;; -no64bit ) no64bit=1 ; shift 1 ;; * ) echo "usage:" ; echo "cd {path}/mac_build/" ; echo "source BuildMacBOINC.sh [-dev] [-noclean] [-no64bit] [-all] [-lib] [-client] [-help]" ; return 1 ;; esac done if [ "${doclean}" = "clean" ]; then echo "Clean each target before building" fi if [ "${buildlibs}" = "1" ]; then targets="$targets -target libboinc -target gfx2libboinc -target api_libboinc -target MakeAppIcon_h" fi if [ "${buildclient}" = "1" ]; then targets="$targets -target BOINC_Client -target cmd_boinc" fi ## "-all" overrides "-lib" and "-client" since it includes those targets if [ "${buildall}" = "1" ] || [ "${targets}" = "" ]; then targets="-target Build_All" fi version=`uname -r`; major=`echo $version | sed 's/\([0-9]*\)[.].*/\1/' `; # minor=`echo $version | sed 's/[0-9]*[.]\([0-9]*\).*/\1/' `; # echo "major = $major" # echo "minor = $minor" # # Darwin version 9.x.y corresponds to OS 10.5.x # Darwin version 8.x.y corresponds to OS 10.4.x # Darwin version 7.x.y corresponds to OS 10.3.x # Darwin version 6.x corresponds to OS 10.2.x if [ "$major" -lt "8" ]; then echo "ERROR: Building BOINC requires System 10.4 or later. For details, see build instructions at" echo "boinc/mac_build/HowToBuildBOINC_XCode.rtf or http://boinc.berkeley.edu/trac/wiki/MacBuild" return 1 fi if [ "$major" -gt "8" ]; then echo "Building BOINC under System 10.5 or later" else echo "Building BOINC under System 10.4" fi if [ ! -d /Developer/SDKs/MacOSX10.3.9.sdk/ ]; then echo "ERROR: System 10.3.9 SDK is missing. For details, see build instructions at" echo "boinc/mac_build/HowToBuildBOINC_XCode.rtf or http://boinc.berkeley.edu/trac/wiki/MacBuild" return 1 fi if [ ! -d /Developer/SDKs/MacOSX10.4u.sdk/ ]; then echo "ERROR: System 10.4u SDK is missing. For details, see build instructions at" echo "boinc/mac_build/HowToBuildBOINC_XCode.rtf or http://boinc.berkeley.edu/trac/wiki/MacBuild" return 1 fi if [ "${style}" = "Development" ]; then echo "Development (debug) build" elif [ "${no64bit}" = "1" ]; then style="Deployment-no64" echo "Deployment (release) build for architectures ppc, i386" elif [ ! -d /Developer/SDKs/MacOSX10.5.sdk/ ]; then echo "************************************************************************" echo "** **" echo "** WARNING: System 10.5 SDK not found. Building 32-bit binaries only **" echo "** **" echo "************************************************************************" style="Deployment-no64" echo "Deployment (release) build for architectures: i386, ppc" else style="Deployment" echo "Deployment (release) build for architectures: i386, ppc, x86_64" fi echo "" export DEVELOPER_SDK_DIR="/Developer/SDKs" xcodebuild -project boinc.xcodeproj ${targets} -configuration ${style} ${doclean} build return $?