| Building the Full SDK |
| ===================== |
| |
| *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. |
| |
| |
| Testing the SDK |
| =============== |
| |
| 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. |
| |
| |
| Testing a Single Example/Test |
| ============================= |
| |
| 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, newlib/Debug only. |
| build_tools/test_projects.py 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/test_projects.py 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 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=newlib CONFIG=Debug -j8 |
| |
| The valid toolchains are: `newlib`, `glibc`, `clang-newlib` and `pnacl`. |
| 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 |