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