1#!/bin/bash
2
3function exportVar {
4  NAME=$1
5  VALUE=$2
6  echo export $NAME=\"$VALUE\"
7  export $NAME="$VALUE"
8}
9
10function setenv {
11  if [ -z "$1" ]; then
12    echo "ERROR: setenv() requires one argument."
13    exit 1
14  fi
15  if [ -z "${NACL_SDK_ROOT}" ]; then
16    echo "ERROR: This script requires NACL_SDK_ROOT to be set."
17    exit 1
18  fi
19
20  ARCH_WIDTH=$1
21  if [ ${ARCH_WIDTH} = "32" ]; then
22    CROSS_ID=i686
23  elif [ ${ARCH_WIDTH} = "64" ]; then
24    CROSS_ID=x86_64
25  else
26    echo "ERROR: Unknown arch width: ${ARCH_WIDTH}"
27    exit 1
28  fi
29
30  OS_NAME=$(uname -s)
31  if [ $OS_NAME = "Darwin" ]; then
32    OS_SUBDIR="mac"
33    OS_SUBDIR_SHORT="mac"
34    OS_JOBS=4
35  elif [ $OS_NAME = "Linux" ]; then
36    OS_SUBDIR="linux"
37    OS_SUBDIR_SHORT="linux"
38    OS_JOBS=4
39  else
40    OS_SUBDIR="windows"
41    OS_SUBDIR_SHORT="win"
42    OS_JOBS=1
43  fi
44
45  NACL_TOOLCHAIN_ROOT=${NACL_SDK_ROOT}/toolchain/${OS_SUBDIR_SHORT}_x86_newlib
46  NACL_BIN_PATH=${NACL_TOOLCHAIN_ROOT}/bin
47  export NACL_CROSS_PREFIX=${CROSS_ID}-nacl
48
49  if [[ -z "$NACL_MAKE_CCACHE" ]]; then
50    exportVar NACLCC ${NACL_BIN_PATH}/${NACL_CROSS_PREFIX}-gcc
51    exportVar NACLCXX ${NACL_BIN_PATH}/${NACL_CROSS_PREFIX}-g++
52  else
53    exportVar NACLCC "${NACL_MAKE_CCACHE} ${NACL_BIN_PATH}/${NACL_CROSS_PREFIX}-gcc"
54    exportVar NACLCXX "${NACL_MAKE_CCACHE} ${NACL_BIN_PATH}/${NACL_CROSS_PREFIX}-g++"
55  fi
56  exportVar NACLAR ${NACL_BIN_PATH}/${NACL_CROSS_PREFIX}-ar
57  exportVar NACLRANLIB ${NACL_BIN_PATH}/${NACL_CROSS_PREFIX}-ranlib
58  exportVar NACLLD ${NACL_BIN_PATH}/${NACL_CROSS_PREFIX}-ld
59  exportVar NACLSTRINGS ${NACL_BIN_PATH}/${NACL_CROSS_PREFIX}-strings
60  exportVar NACLSTRIP ${NACL_BIN_PATH}/${NACL_CROSS_PREFIX}-strip
61
62  exportVar CC "${NACLCC}"
63  exportVar CXX "${NACLCXX}"
64  exportVar AR "${NACLAR}"
65  exportVar RANLIB "${NACLRANLIB}"
66  exportVar PATH ${NACL_BIN_PATH}:${PATH};
67  exportVar C_INCLUDE_PATH "${NACL_SDK_ROOT}/include:${NACL_SDK_ROOT}/ports/include:${C_INCLUDE_PATH}"
68  exportVar CPLUS_INCLUDE_PATH "${NACL_SDK_ROOT}/include:${NACL_SDK_ROOT}/ports/include:${CPLUS_INCLUDE_PATH}"
69  exportVar GYP_DEFINES "skia_os=nacl skia_gpu=0 skia_arch_width=${ARCH_WIDTH}"
70}
71
72function build {
73  if [ -z "$1" ]; then
74    echo "ERROR: build() requires one argument."
75    exit 1
76  fi
77  setenv $1
78
79  export SKIA_OUT=out/nacl$1
80  make ${MAKE_ARGS}
81}
82
83MAKE_ARGS=""
84
85while (( "$#" )); do
86  if [[ "$1" == "--use-ccache" ]];
87  then
88    if [[ -z "$NACL_MAKE_CCACHE" ]];
89    then
90      NACL_MAKE_CCACHE=$(which ccache)
91    fi
92  elif [ -z "${MAKE_ARGS}" ]; then
93    MAKE_ARGS="$1"
94  else
95    MAKE_ARGS="${MAKE_ARGS} $1"
96  fi
97  shift
98done
99
100if [[ -n "$NACL_MAKE_CCACHE" ]]; then
101  $NACL_MAKE_CCACHE --version &> /dev/null
102  if [[ "$?" != "0" ]]; then
103    echo "Unable to find ccache!"
104    exit 1
105  fi
106fi
107
108build 32 && \
109build 64 && \
110if ! [ -L platform_tools/nacl/out ]; then
111  ln -s ../../out platform_tools/nacl
112fi