14e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#!/bin/bash
20f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)# Copyright (c) 2013 The Chromium Authors. All rights reserved.
34e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be
44e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)# found in the LICENSE file.
54e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
64e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)set -o nounset
74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)set -o errexit
84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
91e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)SCRIPT_DIR="$(cd $(dirname $0) && pwd)"
101e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)cd ${SCRIPT_DIR}
111e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
121e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)OUT_DIR=out
131e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)NACLPORTS_URL=https://chromium.googlesource.com/external/naclports
14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)NACLPORTS_SHA=04ba2e1abe8557ef888b653b7a0da974e4734641
151e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)NACLPORTS_DIR=${OUT_DIR}/naclports
161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)NACLAM_URL=https://github.com/johnmccutchan/NaClAMBase
171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)NACLAM_DIR=${OUT_DIR}/NaClAMBase
181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)NACLAM_SHA=0eb4647a3f99c6e66156959edc6c55d4a913468a
191e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)if [ -z "${NACL_SDK_ROOT:-}" ]; then
214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  echo "-------------------------------------------------------------------"
224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  echo "NACL_SDK_ROOT is unset."
234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  echo "This environment variable needs to be pointed at some version of"
244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  echo "the Native Client SDK (the directory containing toolchain/)."
254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  echo "NOTE: set this to an absolute path."
264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  echo "-------------------------------------------------------------------"
274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  exit -1
284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)fi
294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)Banner() {
314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  echo "######################################################################"
324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  echo $*
334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  echo "######################################################################"
344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)# echo a command to stdout and then execute it.
374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)LogExecute() {
384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  echo $*
394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  $*
404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)Clone() {
434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  local url=$1
444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  local dir=$2
451e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  local sha=$3
464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if [ ! -d $dir ]; then
474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    LogExecute git clone $url $dir
484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  else
494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    pushd $dir
501e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    LogExecute git fetch origin
514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    popd
524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  fi
531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
541e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  pushd $dir
551e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  LogExecute git checkout $sha
561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  popd
574e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)readonly OS_NAME=$(uname -s)
604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)if [ $OS_NAME = "Darwin" ]; then
614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  OS_JOBS=4
624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)elif [ $OS_NAME = "Linux" ]; then
634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  OS_JOBS=`nproc`
644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)else
654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  OS_JOBS=1
664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)fi
674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)Banner Cloning naclports
691e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)Clone ${NACLPORTS_URL} ${NACLPORTS_DIR} ${NACLPORTS_SHA}
704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)Banner Building bullet
724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)pushd ${NACLPORTS_DIR}
734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)make NACL_ARCH=pnacl bullet
744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)popd
754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)Banner Cloning NaClAMBase
771e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)Clone ${NACLAM_URL} ${NACLAM_DIR} ${NACLAM_SHA}
784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)Banner Building NaClAM
804e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)LogExecute cp Makefile ${NACLAM_DIR}
814e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)pushd ${NACLAM_DIR}
824e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)LogExecute make -j${OS_JOBS}
834e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)popd
844e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
851e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)LogExecute cp ${NACLAM_DIR}/pnacl/Release/NaClAMBullet.{pexe,nmf} ${OUT_DIR}
864e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
874e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)Banner Done!
88