blob: 973a2e9f1fac50ca520462fbed944dc13948802b [file] [log] [blame]
Building the Full SDK
*Linux users*: Before you run (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::
This will generate a new SDK in your out directory::
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.
Testing the SDK
To build all examples, you can run the script::
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/ 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
Testing a Single Example/Test
To test a specific example, you can run the script::
# Test the core example. This will test all toolchains/configs.
build_tools/ core
# Test the graphics_2d example, newlib/Debug only.
build_tools/ graphics_2d -t newlib -c Debug
This assumes that the example is already built. If not, you can use the `-b`
flag to build it first::
build_tools/ nacl_io_test -t newlib -c Debug -b
Rebuilding the Projects
If you have made changes to examples, libraries or tests directory, you can
copy these new sources to the built SDK by running
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=newlib CONFIG=Debug -j8
The valid toolchains are: `newlib`, `glibc`, `clang-newlib`, `pnacl` and
`bionic`. The valid configurations are: `Debug` and `Release`.
To run the example::
# Run the default configuration
make run
# Run the newlib/Debug configuration
make TOOLCHAIN=newlib 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 Standalone Examples/Tests
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=newlib -j8
To run the standalone tests, you must specify an architecture explicitly::
make STANDALONE=1 TOOLCHAIN=newlib NACL_ARCH=x86_64 -j8 run