Linux users: Before you run build_sdk.py (below), you must run:
GYP_DEFINES=target_arch=arm gclient runhooks
This will install some ARM-specific tools that are necessary to build the SDK.
Everyone else:
To build the NaCl SDK, run:
build_tools/build_sdk.py
This will generate a new SDK in your out directory:
$CHROME_ROOT/out/pepper_XX
Where "XX" in pepper_XX is the current Chrome release (e.g. pepper_38).
The libraries will be built, but no examples will be built by default. This is consistent with the SDK that is shipped to users.
To build all examples, you can run the test_sdk.py script:
build_tools/test_sdk.py
This will build all examples and tests, then run tests. It will take a long time. You can run a subset of these "phases" by passing the desired phases as arguments to test_sdk:
build_tools/test_sdk.py build_examples copy_tests build_tests
These are the valid phases:
- build_examples: Build all examples, for all configurations and toolchains. (everything in the examples directory)
- copy_tests: Copy all tests to the SDK (everything in the tests directory)
- build_tests: Build all tests, for all configurations and toolchains.
- sel_ldr_tests: Run the sel_ldr tests; these run from the command line, and are much faster that browser tests. They can't test PPAPI, however.
- browser_tests: Run the browser tests. This launches a locally built copy of Chrome and runs all examples and tests for all configurations. It is very slow.
To test a specific example, you can run the test_projects.py script:
# Test the core example. This will test all toolchains/configs. build_tools/test_projects.py core # Test the graphics_2d example, glibc/Debug only. build_tools/test_projects.py graphics_2d -t glibc -c Debug
This assumes that the example is already built. If not, you can use the -b flag to build it first:
build_tools/test_projects.py nacl_io_test -t glibc -c Debug -b
If you have made changes to examples, libraries or tests directory, you can copy these new sources to the built SDK by running build_projects.py:
build_tools/build_projects.py
You can then rebuild the example by running Make:
cd $CHROME_ROOT/out/pepper_XX cd examples/api/graphics_2d # e.g. to rebuild the Graphics2D example. make -j8
You can build a specific toolchain/configuration combination:
make TOOLCHAIN=glibc CONFIG=Debug -j8
The valid toolchains are: glibc, clang-newlib and pnacl. The valid configurations are: Debug and Release.
To run the example:
# Run the default configuration make run # Run the glibc/Debug configuration make TOOLCHAIN=glibc CONFIG=Debug -j8
This will try to find Chrome and launch it. You can specify this manually via the CHROME_PATH environment variable:
CHROME_PATH=/absolute/path/to/google-chrome make run
Building the standalone tests is often more convenient, because they are faster to run, and don't require a copy of Chrome. We often use the standalone tests first when developing for nacl_io, for example. However, note that most tests cannot be built this way.
To build the standalone configuration:
cd tests/nacl_io_test make STANDALONE=1 TOOLCHAIN=glibc -j8
To run the standalone tests, you must specify an architecture explicitly:
make STANDALONE=1 TOOLCHAIN=glibc NACL_ARCH=x86_64 -j8 run