Escargot is a lightweight JavaScript engine designed specifically for resource-constrained environments.
  • C++ 91.5%
  • Python 4.1%
  • JavaScript 2%
  • Java 1.7%
  • CMake 0.5%
  • Other 0.2%
Find a file
Seonghyun Kim 7414ebda02 Introduce new Value ctor for NaN, Infinity regard to fix arm clang issue
arm clang optimizer cannot generate correct code
with Value(std::numeric_limits<double>::quiet_NaN())
or Value(std::numeric_limits<double>::infinity())

Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com>
2023-04-04 14:12:32 +09:00
.ahub/sam Update ahub exclude list 2023-04-03 11:22:51 +09:00
.github Allow multiple init, deinit to Globals 2023-02-20 20:54:23 +09:00
build Introduce new Value ctor for NaN, Infinity regard to fix arm clang issue 2023-04-04 14:12:32 +09:00
docs Initial debugger documentation 2021-09-08 18:09:48 +09:00
src Introduce new Value ctor for NaN, Infinity regard to fix arm clang issue 2023-04-04 14:12:32 +09:00
test Remove busy waiting & fix memory bug 2022-09-29 10:34:59 +09:00
third_party Fix bugs 2023-03-30 13:10:13 +09:00
tools Fix troubles in ubuntu-22.04 environment 2023-01-04 10:26:08 +09:00
.clang-format Apply clang-formatting 2016-12-08 14:53:01 +09:00
.gitignore Import WASM interpreter 2020-11-13 10:12:07 +09:00
.gitlab-ci.yml Move tools/vendortest to js_vendor_tc (#74) 2018-05-15 09:09:57 +09:00
.gitmodules Add WASM spec test 2020-11-13 15:13:54 +09:00
CMakeLists.txt Resolve CMake deprecation warning 2023-01-05 10:44:31 +09:00
Jenkinsfile Fix clang build errors 2021-09-29 14:35:44 +09:00
LICENSE Update README 2020-08-25 11:38:57 +09:00
LICENSE.Apache-2.0 Change default license to LGPL license (#60) 2018-03-07 18:38:28 +09:00
LICENSE.BSD-2-Clause Change default license to LGPL license (#60) 2018-03-07 18:38:28 +09:00
LICENSE.BSD-3-Clause Change default license to LGPL license (#60) 2018-03-07 18:38:28 +09:00
LICENSE.LGPL-2.1+ Change default license to LGPL license (#60) 2018-03-07 18:38:28 +09:00
LICENSE.MIT Change default license to LGPL license (#60) 2018-03-07 18:38:28 +09:00
LICENSE.MPL-2.0 Change default license to LGPL license (#60) 2018-03-07 18:38:28 +09:00
README.md Implement bundleHostJar on android build 2023-02-23 10:01:44 +09:00
RELEASE_VERSION Add Escargot version configuration 2020-10-15 18:59:15 +09:00

Escargot

License GitHub release (latestSemVer) Build status Actions Status Coverity Scan Build Status

Prerequisites

On Ubuntu Linux

General build prerequisites:

sudo apt-get install autoconf automake cmake libtool libicu-dev ninja-build

Prerequisites for x86-64-to-x86 compilation:

sudo apt-get install gcc-multilib g++-multilib
sudo apt-get install libicu-dev:i386

On macOS

brew install autoconf automake cmake icu4c libtool ninja pkg-config

Note: For later build steps (cmake, pkg-config) to find ICU libraries, you may need to set the PKG_CONFIG_PATH environment variable, as instructed by brew. E.g.:

export PKG_CONFIG_PATH="/usr/local/opt/icu4c/lib/pkgconfig"
# ESCARGOT_LIBICU_SUPPORT_WITH_DLOPEN should be `OFF` to link icu lib in static
cmake -DESCARGOT_HOST=darwin -DESCARGOT_ARCH=x64 -DESCARGOT_MODE=release -DESCARGOT_LIBICU_SUPPORT_WITH_DLOPEN=OFF -DESCARGOT_OUTPUT=shell -GNinja

Build Escargot

git clone https://github.com/Samsung/escargot.git
cd escargot
git submodule update --init third_party
cmake -DESCARGOT_HOST=linux -DESCARGOT_ARCH=x64 -DESCARGOT_MODE=release -DESCARGOT_OUTPUT=shell -GNinja
ninja

Build android version of Escargot

git clone https://github.com/Samsung/escargot.git
cd escargot
git submodule update --init third_party
export ANDROID_SDK_ROOT=.... # set your android SDK root first
cd build/android/
./gradlew bundleReleaseAar # build escargot AAR
./gradlew assembleDebug # build debug test shell
./gradlew :escargot:connectedDebugAndroidTest # run escargot-jni tests on android device
./gradlew :escargot:testDebugUnitTest # run escargot-jni tests on host
./gradlew bundleHostJar # bundle jar for host

Build options

The following build options are supported when generating ninja rules using cmake.

  • -DESCARGOT_HOST=[ linux | tizen_obs | darwin | android ]
    Compile Escargot for Linux, Tizen, or macOS platform
  • -DESCARGOT_ARCH=[ x64 | x86 | arm | i686 | aarch64 ]
    Compile Escargot for each architecture
  • -DESCARGOT_MODE=[ debug | release ]
    Compile Escargot for either release or debug mode
  • -DESCARGOT_OUTPUT=[ shared_lib | static_lib | shell | shell_test | cctest ]
    Define target output type
  • -DESCARGOT_LIBICU_SUPPORT=[ ON | OFF ]
    Enable libicu library if set ON. (Optional, default = ON)

Testing

First, get benchmarks and tests:

git submodule update --init

Benchmarks

Test run for each benchmark (Sunspider, Octane, V8, Chakracore, test262, SpiderMonkey, etc.):

tools/run-tests.py --arch=x86_64 spidermonkey test262 v8