mirror of
https://github.com/Samsung/escargot.git
synced 2026-06-22 10:01:50 +00:00
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%
If inline cache refers ObjectStructure, ObjectStructure should keep its contents. Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com> |
||
|---|---|---|
| .ahub/sam | ||
| .github | ||
| .jenkins | ||
| build | ||
| docs | ||
| packaging | ||
| src | ||
| test | ||
| third_party | ||
| tools | ||
| .clang-format | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| .gitmodules | ||
| CMakeLists.txt | ||
| LICENSE | ||
| LICENSE.Apache-2.0 | ||
| LICENSE.BSD-2-Clause | ||
| LICENSE.BSD-3-Clause | ||
| LICENSE.LGPL-2.1+ | ||
| LICENSE.MIT | ||
| LICENSE.MPL-2.0 | ||
| README.md | ||
| RELEASE_VERSION | ||
Escargot
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
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 Windows version
Install VS2022 with cmake and ninja. Open [ x86 Native Tools Command Prompt for VS 2022 | x64 Native Tools Command Prompt for VS 2022 ]
git clone https://github.com/Samsung/escargot.git
cd escargot
git submodule update --init third_party
CMake -G "Visual Studio 17 2022" -DCMAKE_SYSTEM_NAME=[ Windows | WindowsStore ] -DCMAKE_SYSTEM_VERSION:STRING="10.0" -DCMAKE_SYSTEM_PROCESSOR=[ x86 | x64 ] -DCMAKE_GENERATOR_PLATFORM=[ Win32 | x64 ],version=10.0.18362.0 -DESCARGOT_ARCH=[ x86 | x64 ] -DESCARGOT_MODE=release -Bout -DESCARGOT_HOST=windows -DESCARGOT_OUTPUT=shell -DESCARGOT_LIBICU_SUPPORT=ON -DESCARGOT_LIBICU_SUPPORT_WITH_DLOPEN=OFF -DESCARGOT_THREADING=ON
cd out
msbuild ESCARGOT.sln /property:Configuration=Release /p:platform=[ Win32 | x64 ]
Build options
The following build options are supported when generating ninja rules using cmake.
- -DESCARGOT_HOST=[ linux | tizen_obs | darwin | android | windows ]
Compile Escargot for Linux, Tizen, macOS, or Windows 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 | cctest ]
Define target output type - -DESCARGOT_LIBICU_SUPPORT=[ ON | OFF ]
Enable libicu library if set ON. (Optional, default = ON) - -DESCARGOT_THREADING=[ ON | OFF ]
Enable Threading support. (Optional, default = OFF) - -DESCARGOT_CODE_CACHE=[ ON | OFF ]
Enable Code cache support. (Optional, default = OFF) - -DESCARGOT_WASM=[ ON | OFF ]
Enable WASM support. (Optional, default = OFF) - -DESCARGOT_SMALL_CONFIG=[ ON | OFF ]
Enable Options for small devices. (Optional, default = OFF)
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