1#!/bin/bash
2if [ -z "$1" ] && [ -z "$NACL_SDK_ROOT" ]; then
3    echo "Usage: ./naclbuild ~/nacl/pepper_35"
4    echo "This will build SDL for Native Client, and testgles2.c as a demo"
5    echo "You can set env vars CC, AR, LD and RANLIB to override the default PNaCl toolchain used"
6    echo "You can set env var SOURCES to select a different source file than testgles2.c"
7    exit 1
8fi
9
10if [ -n "$1" ]; then
11    NACL_SDK_ROOT="$1"
12fi
13
14CC=""
15
16if [ -n "$2" ]; then
17    CC="$2"
18fi
19
20echo "Using SDK at $NACL_SDK_ROOT"
21
22export NACL_SDK_ROOT="$NACL_SDK_ROOT"
23export CFLAGS="$CFLAGS -I$NACL_SDK_ROOT/include -I$NACL_SDK_ROOT/include/pnacl"
24
25NCPUS="1"
26case "$OSTYPE" in
27    darwin*)
28        NCPU=`sysctl -n hw.ncpu`
29        ;;
30    linux*)
31        if [ -n `which nproc` ]; then
32            NCPUS=`nproc`
33        fi
34        ;;
35  *);;
36esac
37
38CURDIR=`pwd -P`
39SDLPATH="$( cd "$(dirname "$0")/.." ; pwd -P )"
40BUILDPATH="$SDLPATH/build/nacl"
41TESTBUILDPATH="$BUILDPATH/test"
42SDL2_STATIC="$BUILDPATH/build/.libs/libSDL2.a"
43mkdir -p $BUILDPATH
44mkdir -p $TESTBUILDPATH
45
46if [ -z "$CC" ]; then
47    export CC="$NACL_SDK_ROOT/toolchain/linux_pnacl/bin/pnacl-clang"
48fi
49if [ -z "$AR" ]; then
50    export AR="$NACL_SDK_ROOT/toolchain/linux_pnacl/bin/pnacl-ar"
51fi
52if [ -z "$LD" ]; then
53    export LD="$NACL_SDK_ROOT/toolchain/linux_pnacl/bin/pnacl-ar"
54fi
55if [ -z "$RANLIB" ]; then
56    export RANLIB="$NACL_SDK_ROOT/toolchain/linux_pnacl/bin/pnacl-ranlib"
57fi
58
59if [ -z "$SOURCES" ]; then
60    export SOURCES="$SDLPATH/test/testgles2.c"
61fi
62
63if [ ! -f "$CC" ]; then
64    echo "Could not find compiler at $CC"
65    exit 1
66fi
67
68
69
70
71cd $BUILDPATH
72$SDLPATH/configure --host=pnacl --prefix $TESTBUILDPATH
73make -j$NCPUS CFLAGS="$CFLAGS -I./include"
74make install
75
76if [ ! -f "$SDL2_STATIC" ]; then
77    echo "Build failed! $SDL2_STATIC"
78    exit 1
79fi
80
81echo "Building test"
82cp -f $SDLPATH/test/nacl/* $TESTBUILDPATH
83# Some tests need these resource files
84cp -f $SDLPATH/test/*.bmp $TESTBUILDPATH
85cp -f $SDLPATH/test/*.wav $TESTBUILDPATH
86cp -f $SDL2_STATIC $TESTBUILDPATH
87
88# Copy user sources
89_SOURCES=($SOURCES)
90for src in "${_SOURCES[@]}"
91do
92    cp $src $TESTBUILDPATH
93done
94export SOURCES="$SOURCES"
95
96cd $TESTBUILDPATH
97make -j$NCPUS CONFIG="Release" CFLAGS="$CFLAGS -I$TESTBUILDPATH/include/SDL2 -I$SDLPATH/include"
98make -j$NCPUS CONFIG="Debug" CFLAGS="$CFLAGS -I$TESTBUILDPATH/include/SDL2 -I$SDLPATH/include"
99
100echo
101echo "Run the test with: "
102echo "cd $TESTBUILDPATH;python -m SimpleHTTPServer"
103echo "Then visit http://localhost:8000 with Chrome"
104
105cd $CURDIR
106