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
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:
gccor 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.11cppcheck>=1.61vera++>=1.2.1python>=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:
awkbcfindsed
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