Akos Kiss 7639e613a4
Remove jerry-libc (#2332)
Rationale:
- There is no port under targets/ that would use it. All of them
  turn it off when building.
- That's no surprise, as jerry-libc supports no barebone MCUs but
  posix targets with syscalls only. Actually, that's Linux only,
  because macOS builds have turned off the use of jerry-libc a
  while ago.
- And there is no point in maintaining a highly restricted set of
  libc functions: as soon as someone wants to use JerryScript in a
  scenario that needs more functions than jerry-main, they have to
  choose a different libc (most problably the compiler's default
  one).

I think that we should not keep supporting an otherwise unused
library for the purposes of jerry-main on arm/x86/x64-linux  only.

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss akiss@inf.u-szeged.hu
2018-08-21 09:26:53 +02:00

97 lines
2.8 KiB
Markdown

# JerryScript for OpenWrt build guide
This document describes the steps required to compile the JerryScript
for OpenWrt. For target device the TP-Link WR1043ND v1.x router is
used. Please be advised, that if you have a different one minor
modifications to this document could be required.
IMPORTANT!
As the TP-Link WR1043ND is a mips based device and mips is a big-endian
architecture a JerryScipt snapshot which was built on an little-endian
system will not work correctly. Thus it is advised that the
snapshot functionally should be used with caution, that is
DO NOT run snapshots generated on little-endian system(s) on
a big-endian system.
## OpenWrt notes
In 2018 ~January the OpenWrt and LEDE project merged into one
and thus the old OpenWrt parts are now usable only from
an archived repository: https://github.com/openwrt/archive
## OpenWrt toolchain setup
To build the JerryScript for OpenWrt a toolchain is required for
the target router/device. The toolchain setup in this document was
tested on an Ubuntu 16.04.3 LTS Linux.
Steps required for toolchain creation:
### 0. Install OpenWrt build requirements
```sh
$ sudo apt-get install git-core build-essential libssl-dev libncurses5-dev unzip gawk zlib1g-dev subversion mercurial
```
### 1. Clone OpenWrt (Chaos Calmer version)
```sh
$ git clone https://github.com/openwrt/archive openwrt -b chaos_calmer
$ cd openwrt
```
### 2. Run Menuconfig and configure the OpenWrt
```sh
$ make menuconfig
```
Options which should be set:
* Set "Target System" to "Atheros AR7xxx/AR9xxx".
* Set "Target Profile" to "TP-LINK TL-WR1043N/ND".
Save the configuration (as .config) and exit from the menuconfig.
### 3. Configure the environment variables
```sh
$ export BUILDROOT=$(pwd) # where the openwrt root dir is
$ export STAGING_DIR=${BUILDROOT}/staging_dir/ # required by the compiler
$ export PATH=$PATH:${STAGING_DIR}/host/bin:${STAGING_DIR}/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin/
```
The name `toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2` is created based on the menuconfig.
This changes depending on the target device!
### 4. Build the OpenWrt
```sh
$ make
```
### 5. Check if the compiler was built
```sh
$ mips-openwrt-linux-gcc --version # running this should print out the version information
```
At this point we have the required compiler for OpenWrt.
## Build JerryScript for OpenWrt
### 0. Check environment
Please check if the `STAGING_DIR` is configured correctly and that the toolchain binary is on the `PATH`.
### 1. Run the build with the OpenWrt toolchain file
```
$ ./tools/build.py --toolchain cmake/toolchain_openwrt_mips.cmake \
--lto OFF
```
### 2. Copy the binary
After a successful build the `build/bin/jerry` binary file can be copied to the target device.
On how to copy a binary file to an OpenWrt target device please see the OpenWrt manual(s).