jerryscript/docs/00.GETTING-STARTED.md
Csaba Osztrogonác 1bd1a36a81
Bump reference platform to Ubuntu 18.04 LTS (#3037)
Ubuntu 14.04 reached its end of life on April 30m 2019.
Let's bump the reference to the latest LTS, which is 18.04.

Ubuntu 18.04 has newer Pylint and Cppcheck, the necessary
fixes and suppresses are also included in this PR.

JerryScript-DCO-1.0-Signed-off-by: Csaba Osztrogonác oszi@inf.u-szeged.hu
2020-03-30 12:26:56 +02:00

3.9 KiB

Setting up prerequisites

Currently, only Ubuntu 18.04+ is officially supported as primary development environment.

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

  • gcc 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
sudo apt-get install gcc gcc-arm-none-eabi cmake cppcheck vera++ python

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

  • awk
  • bc
  • find
  • sed

Building JerryScript

To build debug version for Linux

python tools/build.py --debug

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

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

To enable more verbose outputs for debugging

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

Add custom arguments to CMake

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

Set a profile mode (ES5.1, subset of ES2015, minimal)

python tools/build.py --profile=es5.1|es2015-subset|minimal

See also the related README.md.

Use (compiler-default, external) libc

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

  • compiler-default libc:
python tools/build.py
  • external libc:
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:

python tools/build.py --toolchain=TOOLCHAIN

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

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

Use system memory allocator

python tools/build.py --system-allocator=on

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

Enable 32bit compressed pointers

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

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

Change default heap size (512K)

python tools/build.py --mem-heap=256

If you would like to use more than 512K, then you must enable the 32 bit compressed pointers.

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

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: https://llvm.org/docs/LibFuzzer.html.

To get a list of all the available buildoptions for Linux

python tools/build.py --help

Checking patch

python tools/run-tests.py --precommit

Running only one type of test

To run build option tests

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

To run unittests

python tools/run-tests.py --unittests

To run jerry-tests

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

To run jerry-test-suite

python tools/run-tests.py --jerry-test-suite

To run signed-off check

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

To run cppcheck

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

To run vera check

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

To get a list of all the available test options

python tools/run-tests.py --help