There are several dependencies, that should be installed manually. The following list is the absolute minimum for building:

  • or any C99-compliant compiler (native or cross, e.g., arm-none-eabi)
  • cmake >= 2.8.12.2

Several scripts and tools help the building and development process, thus it is recommended to have the following installed as well:

  • bash >= 4.3.11
  • cppcheck >= 1.61
  • vera++ >= 1.2.1
  • python >= 2.7.6

To make our scripts run correctly, several shell utilities should be available on the system:

  • awk
  • sed

To build debug version for Linux

  1. python tools/build.py --debug

To build debug version for Linux without LTO (Link Time Optimization)

  1. python tools/build.py --debug --lto=off

To enable more verbose outputs for debugging

  1. tools/build.py --debug --logging=on --error-messages=on --line-info=on

Add custom arguments to CMake

  1. python tools/build.py --cmake-param=CMAKE_PARAM

Set a profile mode (ES.next, ES5.1, minimal)

  1. python tools/build.py --profile=es.next|es5.1|minimal

See also the related README.md.

The default libc is the compiler-default libc but you can use an external libc as well:

  • compiler-default libc:
  1. python tools/build.py
  • external libc:
  1. python tools/build.py --compile-flag="-nostdlib -I/path/to/ext-libc/include" --link-lib="ext-c"

Add toolchain file

The cmake dir already contains some usable toolchain files, which you can use in the following format:

For example the cross-compile to RaspberryPi 2 is something like this:

  1. python tools/build.py --toolchain=cmake/toolchain_linux_armv7l.cmake

Use system memory allocator

    Note: System allocator is only supported on 32 bit systems.

    Enable 32bit compressed pointers

    1. python tools/build.py --cpointer-32bit=on

    Note: There is no compression/decompression on 32 bit systems, if enabled.

    Change default heap size (512K)

    1. python tools/build.py --mem-heap=256
    1. python tools/build.py --cpointer-32bit=on --mem-heap=1024

    Note: The heap size will be allocated statically at compile time, when JerryScript memory allocator is used.

    To build with libfuzzer support

    1. CC=clang python tools/build.py --libfuzzer=on --compile-flag=-fsanitize=address --lto=off

    Check the documentation of libfuzzer to get the runtime settings of the created fuzzer binary: .

    To get a list of all the available buildoptions for Linux

    1. python tools/build.py --help

    To run build option tests

    1. python tools/run-tests.py --buildoption-test

    To run unittests

    1. python tools/run-tests.py --unittests

    To run jerry-tests

    1. python tools/run-tests.py --jerry-tests

    To run signed-off check

    1. python tools/run-tests.py --check-signed-off

    To run cppcheck

    1. python tools/run-tests.py --check-cppcheck
    1. python tools/run-tests.py --check-vera

    To get a list of all the available test options