10f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#!/bin/bash
20f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)# Copyright (c) 2013 The Chromium Authors. All rights reserved.
30f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be
40f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)# found in the LICENSE file.
50f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
60f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)set -o nounset
70f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)set -o errexit
80f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
90f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)SCRIPT_DIR="$(cd $(dirname $0) && pwd)"
100f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)cd ${SCRIPT_DIR}
110f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
120f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)OUT_DIR=out
130f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)SMOOTHLIFE_URL=https://github.com/binji/smoothnacl
140f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)SMOOTHLIFE_DIR=${OUT_DIR}/smoothlife
15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)SMOOTHLIFE_SHA=e81cf2b00290add556dcdc8aa84506ca007bc853
160f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
170f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)if [ -z "${NACL_SDK_ROOT:-}" ]; then
180f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  echo "-------------------------------------------------------------------"
190f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  echo "NACL_SDK_ROOT is unset."
200f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  echo "This environment variable needs to be pointed at some version of"
210f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  echo "the Native Client SDK (the directory containing toolchain/)."
220f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  echo "NOTE: set this to an absolute path."
230f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  echo "-------------------------------------------------------------------"
240f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  exit -1
250f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)fi
260f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
270f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)Banner() {
280f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  echo "######################################################################"
290f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  echo $*
300f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  echo "######################################################################"
310f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)}
320f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
330f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)# echo a command to stdout and then execute it.
340f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)LogExecute() {
350f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  echo $*
360f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  $*
370f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)}
380f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
390f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)Clone() {
400f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  local url=$1
410f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  local dir=$2
420f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  local sha=$3
430f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  if [ ! -d $dir ]; then
440f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    LogExecute git clone $url $dir
450f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  else
460f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    pushd $dir
470f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    LogExecute git fetch origin
480f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    popd
490f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  fi
500f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
510f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  pushd $dir
520f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  LogExecute git checkout $sha
530f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  popd
540f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)}
550f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
560f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)readonly OS_NAME=$(uname -s)
570f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)if [ $OS_NAME = "Darwin" ]; then
580f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  OS_JOBS=4
590f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)elif [ $OS_NAME = "Linux" ]; then
600f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  OS_JOBS=`nproc`
610f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)else
620f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  OS_JOBS=1
630f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)fi
640f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
650f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)Banner Cloning smoothlife
660f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)Clone ${SMOOTHLIFE_URL} ${SMOOTHLIFE_DIR} ${SMOOTHLIFE_SHA}
670f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
680f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)pushd ${SMOOTHLIFE_DIR}
690f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
700f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)Banner Updating submodules
710f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)LogExecute git submodule update --init
720f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
730f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)Banner Building FFTW
74f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)LogExecute make ports TOOLCHAIN=pnacl CONFIG=Release
750f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
760f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)Banner Building smoothlife
770f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)LogExecute make TOOLCHAIN=pnacl CONFIG=Release -j${OS_JOBS}
780f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
790f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)popd
800f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
810f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)LogExecute cp ${SMOOTHLIFE_DIR}/pnacl/Release/smoothnacl.{pexe,nmf} ${OUT_DIR}
820f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
830f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)Banner Done!
84