(.)(.) dev thoughts ...

Compile angle project from source on mac os x
2017-05-20 02:05:00

For those who don't know ANGLE project is not a microsoft one which apparently is first in result when I type it on duckduckgo but google founded Almost Native Graphics Layer Engine that is part of, to name a few: Chrome, Firefox or Qt.
It's great piece of software I always wanted to dig into because it's behind webgl engine of chromium project.

I had some inconsistency in great getting started document so I would like to provide step by step guide how to simply run hello_traingle.
I assume you got at least git installed. I don't know if I got any more dependencies.

Let's start by downloading 2 repositories next to each other:

The actual angle project repo:
git clone https://chromium.googlesource.com/angle/angle
And build tools:
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

So we want to make those tools executable from angle directory so we will either do it once by executing:
export PATH=`pwd`/depot_tools:"$PATH" or add path of depot_tools directory to ~/.bashrc if you want permanent change.

Next commands we will execute in angle directory location. So simply cd angle

After that on mac os x or linux we want to change our default renderer therefore edit
src/libANGLE/renderer/d3d/DisplayD3D.cpp

with your favourite renderer and change:
# define ANGLE_DEFAULT_D3D11 1 to 0

and then simply run some commands to sync our project using this magic:

python scripts/bootstrap.py         
gclient sync                         
git checkout master                

The last thing we need to do is setup gyp generators:
GYP_GENERATORS=ninja gclient runhooks

and at the very end after making path mkdir -p out/Debug compile it:
ninja -j 10 -k1 -C out/Debug

if you find out error that is something like this:

ninja: error: loading 'build.ninja': No such file or directory

just repeat GYP_GENERATORS=ninja gclient runhooks and then ninja -j 10 -k1 -C out/Debug part.

if everything is ok you will see something like this

ninja: Entering directory 'out/Debug'
[147/1307] CXX obj/src/compiler/translator/translator.TranslatorGLSL.o

and after it finished compilation you can see triangle by executing
./out/Debug/hello_triangle

Here it is:
angleproject triangle image

I hope you managed to do it.
Enjoy