build-scripts/naclbuild.sh
author Sam Lantinga
Tue, 10 Jan 2017 08:54:33 -0800
changeset 10806 36f40b8cc979
parent 8880 ee5117b56b93
permissions -rwxr-xr-x
Fixed bugs 2570, 3145, improved OpenGL ES context support on Windows and X11

Mark Callow

The attached patch does the following for the X11 and Windows platforms, the only ones where SDL attempts to use context_create_es_profile:

- Adds SDL_HINT_OPENGL_ES_DRIVER by which the application can
say to use the OpenGL ES driver & EGL rather than the Open GL
driver. (For bug #2570)
- Adds code to {WIN,X11}_GL_InitExtensions to determine the maximum
OpenGL ES version supported by the OpenGL driver (for bug #3145)
- Modifies the test that determines whether to use the OpenGL
driver or the real OpenGL ES driver to take into account the
hint, the requested and supported ES version and whether ES 1.X
is being requested. (For bug #2570 & bug #3145)
- Enables the testgles2 test for __WINDOWS__ and __LINUX__ and adds
the test to the VisualC projects.

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