1#!/bin/bash 2 3# This is a script that does incremental builds, while 4# making some minimal effort to build in a buildit/xbs 5# compatible way. It is not intended as a buildit 6# replacement, but can be useful during development for 7# quick turn testing. 8# ./buildmelocal.sh [-d] [-j] [-p projname] <directory> 9# -d installs the dstroot with darwinup 10# -j builds in parallel 11# -p project to build 12 13PROJECT="" 14VERSION="999" 15ARCH=x86_64 16BUILDDIR="/tmp/buildmelocal" 17 18USEPARALLEL="no" 19USEDARWINUP="no" 20 21while getopts "jdhp:" i; do 22 case "$i" in 23 "j") 24 echo "Enabling parallel build" 25 USEPARALLEL="yes" 26 ;; 27 "d") 28 USEDARWINUP="yes" 29 ;; 30 "p") 31 PROJECT=${OPTARG} 32 ;; 33 "h") 34 echo "Usage: $0 [-d] [-j] [-p projname] <directory>" 35 echo "-d Uses darwinup to install the dstroot after building" 36 echo "-j Enables parallel building on projects that support it" 37 echo "-p projname Specify the project name to build" 38 exit 1 39 ;; 40 "--") 41 break 42 ;; 43 esac 44done 45shift $((OPTIND-1)) 46 47if [ "$PROJECT" == "" ]; then 48 if [ "$1" == "." ]; then 49 PROJECT=`basename "$PWD" | sed -e 's/\-.*//'` 50 else 51 PROJECT=`basename "$1"` 52 fi 53fi 54 55SRCROOT=$1 56if [ "${SRCROOT}" == "." ]; then 57 SRCROOT=$PWD 58fi 59 60# Where SDKs are located 61XXXSDKPATH="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/" 62 63CUROS=`sw_vers | grep ProductVersion | awk '{print $2}'` 64 65# The SDK to use 66XXXSDK="MacOSX${CUROS}.Internal.sdk" 67 68case "$CUROS" in 69"10.10") 70 CURRELEASE="OSX" 71 ;; 72*) 73 CURRELEASE="Unknown" 74 ;; 75esac 76 77XXXSDKROOT="${XXXSDKPATH}${XXXSDK}" 78OBJROOT="${BUILDDIR}/${PROJECT}/obj" 79SYMROOT="${BUILDDIR}/${PROJECT}/sym" 80DSTROOT="${BUILDDIR}/${PROJECT}/dst" 81 82mkdir -p "${BUILDDIR}" 83mkdir -p "${OBJROOT}" 84mkdir -p "${SYMROOT}" 85mkdir -p "${DSTROOT}" 86 87export PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin" 88export RC_ProjectName=${PROJECT} 89export RC_ProjectSourceVersion=${VERSION} 90export RC_ProjectNameAndSourceVersion=${PROJECT}-${VERSION} 91export RC_ProjectBuildVersion=1 92export RC_CFLAGS="-arch ${ARCH} -pipe" 93export RC_NONARCH_CFLAGS="-pipe" 94export RC_ARCHS=${ARCH} 95export SRCROOT=${SRCROOT} 96export OBJROOT=${OBJROOT} 97export SYMROOT=${SYMROOT} 98export DSTROOT=${DSTROOT} 99export SDKROOT="macosx${CUROS}internal" 100export SEPARATE_STRIP="YES" 101export APPLEGLOT_CONTINUE_ON_ERROR=YES 102export CC_PRINT_OPTIONS="YES" 103#export CC_LOG_DIAGNOSTICS=1 104export DT_TOOLCHAIN_DIR="/Applications/Xcode.app/Contents/Developer/Toolchains/OSX${CUROS}.xctoolchain" 105export TERM="vt100" 106export UNAME_RELEASE="14.0" 107export UNAME_SYSNAME="Darwin" 108export USER="root" 109export USERNAME="root" 110export USE_PER_CONFIGURATION_BUILD_LOCATIONS="NO" 111export XBS_MORE_BUILD_FLAGS="-Wno-error=deprecated-declarations -Wno-error=#warnings" 112export XCODE_XCCONFIG_FILE="/usr/share/buildit/xcodeBuildSettingOverrides.xcconfig" 113export XTYPE_IGNORE_SERVER="1" 114export __CFPREFERENCES_AVOID_DAEMON="1" 115export __CF_USER_TEXT_ENCODING="0x0:0:0" 116export SHELL=/bin/sh 117export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer" 118export LIBDISPATCH_DISABLE_KWQ="1" 119export CCHROOT="${OBJROOT}/Caches" 120export INSTALLED_PRODUCT_ASIDES="YES" 121export INTERFACER_TRACE_INTERFACES="YES" 122export RC_ARCHS=${ARCH} 123export RC_BUILDIT="YES" 124export RC_DEBUG_OPTIONS="YES" 125export RC_FORCE_SSE3="YES" 126export RC_MAJOR_RELEASE_TRAIN="OSX" 127export RC_TRACE_ARCHIVES="YES" 128export RC_TRACE_DYLIBS="YES" 129export RC_XBS="YES" 130export REACH_SERVER="DO_NOT_TALK_WITH_REACH_SERVER" 131export SCDontUseServer="1" 132 133echo $SRCROOT 134 135if [ -f "${SRCROOT}/Makefile" -o -f "${SRCROOT}/makefile" -o -f "${SRCROOT}/GNUMakefile" ]; then 136 DSS_BUILD_PARALLEL=${USEPARALLEL} SHELL=/bin/sh SRCROOT="${SRCROOT}" OBJROOT="${OBJROOT}" SYMROOT="${SYMROOT}" DSTROOT="${DSTROOT}" PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin" "/Applications/Xcode.app/Contents/Developer/usr/bin/make" -Wno-error=deprecated-declarations -Wno-error=#warnings -C "${SRCROOT}" "install" "SRCROOT=${SRCROOT}" "SDKROOT=${XXXSDKROOT}" "OBJROOT=${OBJROOT}" "SYMROOT=${SYMROOT}" "DSTROOT=${DSTROOT}" "MACOSX_DEPLOYMENT_TARGET=${CUROS}" "CCHROOT=${OBJROOT}/Caches" "RC_ProjectName=${PROJECT}" "RC_ProjectSourceVersion=${VERSION}" "RC_ProjectNameAndSourceVersion=${PROJECT}-${VERSION}" "RC_ProjectBuildVersion=1" "RC_ReleaseStatus=Development" "RC_CFLAGS=-arch ${ARCH} -pipe" "RC_NONARCH_CFLAGS=-pipe" "RC_ARCHS=${ARCH}" "RC_${ARCH}=YES" "RC_RELEASE=${CURRELEASE}" "RC_OS=macos" "RC_XBS=YES" "RC_BUILDIT=YES" 2>&1 | tee "${BUILDDIR}/${PROJECT}/log" 137else 138 SAVEPWD=$PWD 139 cd "${SRCROOT}" 140 SHELL=/bin/sh SRCROOT="${SRCROOT}" OBJROOT="${OBJROOT}" SYMROOT="${SYMROOT}" DSTROOT="${DSTROOT}" PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin" "/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild" "install" "SRCROOT=${SRCROOT}" "SDKROOT=${XXXSDKROOT}" "OBJROOT=${OBJROOT}" "SYMROOT=${SYMROOT}" "DSTROOT=${DSTROOT}" "MACOSX_DEPLOYMENT_TARGET=${CUROS}" "CCHROOT=${OBJROOT}/Caches" "RC_ProjectName=${PROJECT}" "RC_ProjectSourceVersion=${VERSION}" "RC_ProjectNameAndSourceVersion=${PROJECT}-${VERSION}" "RC_ProjectBuildVersion=1" "RC_ReleaseStatus=Development" "RC_CFLAGS=-arch ${ARCH} -pipe" "RC_NONARCH_CFLAGS=-pipe" "RC_ARCHS=${ARCH}" "RC_${ARCH}=YES" "RC_RELEASE=${CURRELEASE}" "RC_OS=macos" "RC_XBS=YES" "RC_BUILDIT=YES" 2>&1 | tee "${BUILDDIR}/${PROJECT}/log" 141 cd "$SAVEPWD" 142fi 143if [ "${PIPESTATUS[0]}" == "0" -a "$USEDARWINUP" == "yes" ]; then 144 echo Installing ${DSTROOT} with darwinup 145 darwinup install "${DSTROOT}" 146fi 147