subsys-arkcompiler-guide.md 2.4 KB
Newer Older
E
esterzhou 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
# ArkCompiler Development

## Introduction
ArkCompiler is a unified programming platform. Its key components include a compiler, toolchain, and runtime. ArkCompiler supports compilation and running of high-level programming languages on the multi-chip platform and accelerates the running of applications and services on mobile phones, PCs, tablets, TVs, automobiles, and smart wearables.

## Environment Setup
Ubuntu 18.04 or later is recommended.

1. Install dependent tools.
   ```shell
   sudo apt-get update && sudo apt-get install python ruby python3-pip git-lfs gcc-multilib g++-multilib zlib1g-dev libc++1 curl nodejs
   ```
2. Install the **repo** tool.
    ```shell
    mkdir ~/bin/
    curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ~/bin/repo
    chmod a+x ~/bin/repo
    export PATH=~/bin:$PATH
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
    ```
3. Download source code.
    ```shell
    repo init -u https://gitee.com/ark-standalone-build/manifest.git -b master
    repo sync -c -j8
    repo forall -c 'git lfs pull'
    ```

4. Install the compiler and binary tool.
    ```shell
    ./prebuilts_download.sh
    ```

## How to Develop

1. Create the build products **ark_js_vm** and **ts2panda**.
    ```shell
    python ark.py x64.release
    ```
    - **ark_js_vm**: executable program for running .abc files.
    - **ts2panda**: tool that converts ArkTS files into ArkCompiler bytecode files.

2. Use **ts2panda** to convert a TypeScript file to an .abc file.
    ```shell
    prebuilts/build-tools/common/nodejs/node-v12.18.4-linux-x64/bin/node --expose-gc out/x64.release/clang_x64/obj/arkcompiler/ets_frontend/ts2panda/build/src/index.js helloworld.ts --opt-level 0
    ```
    Code snippet of the TypeScript case file **helloworld.ts**:
    ```JavaScript
    declare function print(arg:any):string;
    print("Hello world!");
    ```

3. Run the generated .abc file.
    ```shell
    out/x64.release/clang_x64/arkcompiler/ets_runtime/ark_js_vm helloworld.abc
    ```
    .abc file: ArkCompiler bytecode file.
    
    The execution output is as follows:
    ```
    Hello world!
    ```

## Running the Test262 Test Suite
```
python ark.py x64.release test262
```

## Build Options

Select a build mode, for example, mode for building a debug version on an x64 platform.
```
python ark.py x64.debug
```
Obtain help information.
```
python ark.py --help
```