Enable AoT and wamr-sdk, and change arguments of call wasm API (#157)
* Implement memory profiler, optimize memory usage, modify code indent * Implement memory.grow and limit heap space base offset to 1G; modify iwasm build type to Release and 64 bit by default * Add a new extension library: connection * Fix bug of reading magic number and version in big endian platform * Re-org platform APIs: move most platform APIs from iwasm to shared-lib * Enhance wasm loader to fix some security issues * Fix issue about illegal load of EXC_RETURN into PC on stm32 board * Updates that let a restricted version of the interpreter run in SGX * Enable native/app address validation and conversion for wasm app * Remove wasm_application_exectue_* APIs from wasm_export.h which makes confused * Refine binary size and fix several minor issues Optimize interpreter LOAD/STORE opcodes to decrease the binary size Fix issues when using iwasm library: _bh_log undefined, bh_memory.h not found Remove unused _stdin/_stdout/_stderr global variables resolve in libc wrapper Add macros of global heap size, stack size, heap size for Zephyr main.c Clear compile warning of wasm_application.c * Add more strict security checks for libc wrapper API's * Use one libc wrapper copy for sgx and other platforms; remove bh_printf macro for other platform header files * Enhance security of libc strcpy/sprintf wrapper function * Fix issue of call native for x86_64/arm/mips, add module inst parameter for native wrapper functions * Remove get_module_inst() and fix issue of call native * Refine wgl lib: remove module_inst parameter from widget functions; move function index check to runtime instantiate * Refine interpreter call native process, refine memory boudary check * Fix issues of invokeNative function of arm/mips/general version * Add a switch to build simple sample without gui support * Add BUILD_TARGET setting in makefile to replace cpu compiler flags in source code * Re-org shared lib header files, remove unused info; fix compile issues of vxworks * Add build target general * Remove unused files * Update license header * test push * Restore file * Sync up with internal/feature * Sync up with internal/feature * Rename build_wamr_app to build_wasm_app * Fix small issues of README * Enhance malformed wasm file checking Fix issue of print hex int and implement utf8 string check Fix wasi file read/write right issue Fix minor issue of build wasm app doc * Sync up with internal/feature * Sync up with internal/feature: fix interpreter arm issue, fix read leb issue * Sync up with internal/feature * Fix bug of config.h and rename wasi config.h to ssp_config.h * Sync up with internal/feature * Import wamr aot * update document * update document * Update document, disable WASI in 32bit * update document * remove files * update document * Update document * update document * update document * update samples * Sync up with internal repo
This commit is contained in:
92
wamr-sdk/Kconfig
Normal file
92
wamr-sdk/Kconfig
Normal file
@ -0,0 +1,92 @@
|
||||
mainmenu "WebAssembly Micro Runtime Configuration"
|
||||
|
||||
config WAMR_SDK_PROFILE
|
||||
string "wamr sdk profile name"
|
||||
default "default"
|
||||
help
|
||||
create a new SDK by giving a name or overwrite
|
||||
the "default" profile
|
||||
|
||||
choice
|
||||
prompt "select a build target"
|
||||
|
||||
config TARGET_X86_64
|
||||
bool "X86_64"
|
||||
|
||||
config TARGET_X86_32
|
||||
bool "X86_32"
|
||||
|
||||
endchoice
|
||||
|
||||
choice
|
||||
prompt "select a target platform"
|
||||
|
||||
config PLATFORM_LINUX
|
||||
bool "Linux"
|
||||
|
||||
endchoice
|
||||
|
||||
menu "select execution mode"
|
||||
comment "At least one execution mode must be selected"
|
||||
config EXEC_AOT
|
||||
bool "AOT"
|
||||
depends on PLATFORM_LINUX
|
||||
|
||||
config EXEC_JIT
|
||||
bool "JIT"
|
||||
depends on PLATFORM_LINUX
|
||||
select BUILD_LLVM
|
||||
|
||||
config BUILD_LLVM
|
||||
bool "build llvm (this may take a long time)"
|
||||
depends on EXEC_JIT
|
||||
help
|
||||
llvm library is required by JIT mode.
|
||||
|
||||
config EXEC_INTERP
|
||||
bool "INTERPRETER"
|
||||
default y
|
||||
endmenu
|
||||
|
||||
choice
|
||||
prompt "libc support"
|
||||
|
||||
config LIBC_BUILTIN
|
||||
bool "builtin libc"
|
||||
help
|
||||
use builtin libc, this is a minimal subset of libc.
|
||||
|
||||
config LIBC_WASI
|
||||
bool "WebAssembly System Interface [WASI]"
|
||||
depends on PLATFORM_LINUX
|
||||
help
|
||||
enable WebAssembly System Interface
|
||||
|
||||
endchoice
|
||||
|
||||
config APP_FRAMEWORK_ENABLE
|
||||
bool "enable app framework"
|
||||
help
|
||||
enable wamr app framework
|
||||
|
||||
menu "app modules"
|
||||
depends on APP_FRAMEWORK_ENABLE
|
||||
|
||||
config APP_BUILD_ALL
|
||||
bool "enable all modules"
|
||||
|
||||
source ".wamr_modules"
|
||||
|
||||
endmenu
|
||||
|
||||
config EXTRA_INCLUDE_ENABLE
|
||||
bool "enable extra include dir"
|
||||
|
||||
config EXTRA_INCLUDE_PATH
|
||||
string "external include path"
|
||||
depends on EXTRA_INCLUDE_ENABLE
|
||||
help
|
||||
Pass external include path to be added in the SDK
|
||||
This is useful when your app modules need some external
|
||||
header files, such as the wgl modules which need some config
|
||||
file when building the runtime library
|
||||
10
wamr-sdk/Makefile
Normal file
10
wamr-sdk/Makefile
Normal file
@ -0,0 +1,10 @@
|
||||
# Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
|
||||
# # This will generate SDK for both runtime and wasm application
|
||||
config:
|
||||
./build_sdk.sh -i
|
||||
|
||||
menuconfig:
|
||||
./menuconfig.sh
|
||||
|
||||
52
wamr-sdk/README.md
Normal file
52
wamr-sdk/README.md
Normal file
@ -0,0 +1,52 @@
|
||||
# SDK for Wasm Micro Runtime
|
||||
This folder contains some tools to generate sdk for wamr runtime and wasm applications, the script and cmake files here are called by `make`, don't use them manually.
|
||||
|
||||
## Build the SDK
|
||||
``` Bash
|
||||
cd ${WAMR_ROOT}/wamr-sdk
|
||||
make config
|
||||
```
|
||||
Following the prompt to finish the settings for your customized runtime and app sdk, then you will get `out` folder under `${WAMR_ROOT}`
|
||||
|
||||
The structure of the output folder is like bellow:
|
||||
```
|
||||
out
|
||||
|--app-sdk/
|
||||
| |--sysroot/
|
||||
| |--wamr_toolchain.cmake
|
||||
|
|
||||
|--runtime-sdk/
|
||||
|--include
|
||||
|--lib
|
||||
|--wamr_config.cmake
|
||||
```
|
||||
### app-sdk usage
|
||||
The `app-sdk` is used to develop wasm applications, if your project are built with cmake, then the `wamr_toolchain.cmake` file is what you need to compile your project into wasm bytecode.
|
||||
|
||||
### runtime-sdk usage
|
||||
The `runtime-sdk` is used to help you embed WAMR runtime into your product easier. There are two method you can use the SDK:
|
||||
|
||||
1. Use the provided `runtime_lib.cmake` file:
|
||||
|
||||
You can include `${WAMR_ROOT}/cmake/runtime_lib.cmake` in your project's `CMakeLists.txt` file:
|
||||
``` cmake
|
||||
include (${WAMR_ROOT}/cmake/runtime_lib.cmake)
|
||||
add_library (vmlib ${WAMR_RUNTIME_LIB_SOURCE})
|
||||
# ......
|
||||
target_link_libraries (your_target vmlib -lm -ldl -lpthread)
|
||||
```
|
||||
2. Use the pre-built static library:
|
||||
|
||||
You can link the pre-built library:
|
||||
``` cmake
|
||||
link_directories(${SDK_DIR}/runtime-sdk/lib)
|
||||
include_directories(${SDK_DIR}/runtime-sdk/include)
|
||||
# ......
|
||||
target_link_libraries (your_target vmlib -lm -ldl -lpthread)
|
||||
```
|
||||
|
||||
This method can also be used when you don't use cmake
|
||||
|
||||
You can refer to this sample: [CMakeLists.txt](../samples/simple/CMakeLists.txt).
|
||||
|
||||
> NOTE: If you are familiar with how to configure WAMR by cmake and don't want to build the SDK, you can set the related settings on the top of your `CMakeLists.txt`, then the `runtime_lib.cmake` will not load settings from the SDK.
|
||||
97
wamr-sdk/app/CMakeLists.txt
Normal file
97
wamr-sdk/app/CMakeLists.txt
Normal file
@ -0,0 +1,97 @@
|
||||
# Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
|
||||
cmake_minimum_required(VERSION 2.8)
|
||||
project(app-framework)
|
||||
|
||||
SET (CMAKE_C_FLAGS "-O3")
|
||||
|
||||
if (NOT DEFINED WAMR_BUILD_SDK_PROFILE)
|
||||
set (WAMR_BUILD_SDK_PROFILE "default")
|
||||
endif ()
|
||||
|
||||
if (NOT DEFINED CONFIG_PATH)
|
||||
set (CONFIG_PATH ${CMAKE_CURRENT_LIST_DIR}/../wamr_config_default.cmake)
|
||||
message(STATUS, "CONFIG_PATH set to ${CONFIG_PATH} ")
|
||||
endif ()
|
||||
|
||||
if (NOT EXISTS "${CONFIG_PATH}")
|
||||
message (FATAL_ERROR "${CONFIG_PATH} not exist")
|
||||
endif ()
|
||||
|
||||
include(${CONFIG_PATH})
|
||||
|
||||
|
||||
set (OUT_DIR "${CMAKE_CURRENT_LIST_DIR}/../out/${WAMR_BUILD_SDK_PROFILE}")
|
||||
set (APP_SDK_DIR "${OUT_DIR}/app-sdk")
|
||||
|
||||
if (DEFINED EXTRA_SDK_INCLUDE_PATH)
|
||||
message(STATUS, "EXTRA_SDK_INCLUDE_PATH = ${EXTRA_SDK_INCLUDE_PATH} ")
|
||||
include_directories (
|
||||
${EXTRA_SDK_INCLUDE_PATH}
|
||||
)
|
||||
endif ()
|
||||
|
||||
if (WAMR_BUILD_LIBC_BUILTIN EQUAL 1)
|
||||
set (SYSROOT_DIR "${APP_SDK_DIR}/libc-builtin-sysroot")
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${SYSROOT_DIR}/include)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${SYSROOT_DIR}/share)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/libc-builtin-sysroot/share/defined-symbols.txt ${SYSROOT_DIR}/share)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/wamr_toolchain.cmake ${APP_SDK_DIR})
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
-E copy_directory ${CMAKE_CURRENT_LIST_DIR}/libc-builtin-sysroot/include ${SYSROOT_DIR}/include
|
||||
)
|
||||
else()
|
||||
if (WAMR_BUILD_LIBC_WASI EQUAL 1)
|
||||
set (SYSROOT_DIR "${APP_SDK_DIR}/wasi-sysroot")
|
||||
message("sysroot: ${SYSROOT_DIR}")
|
||||
execute_process(COMMAND ln -s ${WASI_SDK_DIR}/share/wasi-sysroot ${SYSROOT_DIR})
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/wasi_toolchain.cmake ${APP_SDK_DIR}/wamr_toolchain.cmake)
|
||||
endif ()
|
||||
endif()
|
||||
|
||||
if (WAMR_BUILD_APP_FRAMEWORK EQUAL 1)
|
||||
message(WAMR_BUILD_APP_FRAMEWORK)
|
||||
set (APP_FRAMEWORK_INCLUDE_TYPE "APP")
|
||||
set (WAMR_APP_OUT_DIR "${APP_SDK_DIR}/wamr-app-framework")
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/../../core/app-framework/app_framework.cmake)
|
||||
|
||||
add_library(app_framework
|
||||
${WASM_APP_SOURCE_ALL}
|
||||
)
|
||||
|
||||
add_custom_command(
|
||||
TARGET app_framework POST_BUILD
|
||||
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${WAMR_APP_OUT_DIR}/lib
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${WAMR_APP_OUT_DIR}/include/wa-inc
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${WAMR_APP_OUT_DIR}/share
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${WASM_APP_BI_INC_DIR} ${WAMR_APP_OUT_DIR}/include/bi-inc
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${WASM_APP_BASE_DIR}/bh_platform.h ${WAMR_APP_OUT_DIR}/include
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${WASM_APP_BASE_DIR}/wasm_app.h ${WAMR_APP_OUT_DIR}/include
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/*.a ${WAMR_APP_OUT_DIR}/lib
|
||||
|
||||
# bi-inc folder should also copy into runtime-sdk
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${OUT_DIR}/runtime-sdk/include
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${WASM_APP_BI_INC_DIR} ${OUT_DIR}/runtime-sdk/include/bi-inc
|
||||
)
|
||||
|
||||
# If app-framework is enabled, add the undefined-symbol list to the toolchain file
|
||||
if (WAMR_BUILD_LIBC_WASI EQUAL 1)
|
||||
file (APPEND
|
||||
${APP_SDK_DIR}/wamr_toolchain.cmake
|
||||
"SET (CMAKE_EXE_LINKER_FLAGS \"\${CMAKE_EXE_LINKER_FLAGS},--allow-undefined-file=\${CMAKE_CURRENT_LIST_DIR}/wamr-app-framework/share/defined-symbols.txt\" CACHE INTERNAL \"\")"
|
||||
)
|
||||
endif ()
|
||||
|
||||
FOREACH (dir IN LISTS WASM_APP_WA_INC_DIR_LIST)
|
||||
file (COPY ${dir} DESTINATION ${WAMR_APP_OUT_DIR}/include/)
|
||||
ENDFOREACH (dir)
|
||||
|
||||
if (DEFINED EXTRA_SDK_INCLUDE_PATH)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory ${EXTRA_SDK_INCLUDE_PATH} ${WAMR_APP_OUT_DIR}/include)
|
||||
endif ()
|
||||
|
||||
endif()
|
||||
20
wamr-sdk/app/libc-builtin-sysroot/include/assert.h
Normal file
20
wamr-sdk/app/libc-builtin-sysroot/include/assert.h
Normal file
@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef _WAMR_LIBC_ASSERT_H
|
||||
#define _WAMR_LIBC_ASSERT_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
28
wamr-sdk/app/libc-builtin-sysroot/include/ctype.h
Normal file
28
wamr-sdk/app/libc-builtin-sysroot/include/ctype.h
Normal file
@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef _WAMR_LIBC_CTYPE_H
|
||||
#define _WAMR_LIBC_CTYPE_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int isupper(int c);
|
||||
int isalpha(int c);
|
||||
int isspace(int c);
|
||||
int isgraph(int c);
|
||||
int isprint(int c);
|
||||
int isdigit(int c);
|
||||
int isxdigit(int c);
|
||||
int tolower(int c);
|
||||
int toupper(int c);
|
||||
int isalnum(int c);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
20
wamr-sdk/app/libc-builtin-sysroot/include/errno.h
Normal file
20
wamr-sdk/app/libc-builtin-sysroot/include/errno.h
Normal file
@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef _WAMR_LIBC_ERRNO_H
|
||||
#define _WAMR_LIBC_ERRNO_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
20
wamr-sdk/app/libc-builtin-sysroot/include/fcntl.h
Normal file
20
wamr-sdk/app/libc-builtin-sysroot/include/fcntl.h
Normal file
@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef _WAMR_LIBC_FCNTL_H
|
||||
#define _WAMR_LIBC_FCNTL_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
21
wamr-sdk/app/libc-builtin-sysroot/include/inttypes.h
Normal file
21
wamr-sdk/app/libc-builtin-sysroot/include/inttypes.h
Normal file
@ -0,0 +1,21 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef _WAMR_LIBC_INTTYPES_H
|
||||
#define _WAMR_LIBC_INTTYPES_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
34
wamr-sdk/app/libc-builtin-sysroot/include/limits.h
Normal file
34
wamr-sdk/app/libc-builtin-sysroot/include/limits.h
Normal file
@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef _WAMR_LIBC_LIMITS_H
|
||||
#define _WAMR_LIBC_LIMITS_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define CHAR_BIT 8
|
||||
#define SCHAR_MIN -128
|
||||
#define SCHAR_MAX 127
|
||||
#define UCHAR_MAX 255
|
||||
#define CHAR_MIN 0
|
||||
#define CHAR_MAX 127
|
||||
#define MB_LEN_MAX 1
|
||||
#define SHRT_MIN -32768
|
||||
#define SHRT_MAX +32767
|
||||
#define USHRT_MAX 65535
|
||||
#define INT_MIN -32768
|
||||
#define INT_MAX +32767
|
||||
#define UINT_MAX 65535
|
||||
#define LONG_MIN -2147483648
|
||||
#define LONG_MAX +2147483647
|
||||
#define ULONG_MAX 4294967295
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
19
wamr-sdk/app/libc-builtin-sysroot/include/stdbool.h
Normal file
19
wamr-sdk/app/libc-builtin-sysroot/include/stdbool.h
Normal file
@ -0,0 +1,19 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef _WAMR_LIBC_STDBOOL_H
|
||||
#define _WAMR_LIBC_STDBOOL_H
|
||||
|
||||
#define __bool_true_false_are_defined 1
|
||||
|
||||
#ifndef __cplusplus
|
||||
|
||||
#define bool _Bool
|
||||
#define false 0
|
||||
#define true 1
|
||||
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif
|
||||
48
wamr-sdk/app/libc-builtin-sysroot/include/stdint.h
Normal file
48
wamr-sdk/app/libc-builtin-sysroot/include/stdint.h
Normal file
@ -0,0 +1,48 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef _WAMR_LIBC_STDINT_H
|
||||
#define _WAMR_LIBC_STDINT_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef char int8_t;
|
||||
typedef short int int16_t;
|
||||
typedef int int32_t;
|
||||
typedef long int int64_t;
|
||||
|
||||
/* Unsigned. */
|
||||
typedef unsigned char uint8_t;
|
||||
typedef unsigned short int uint16_t;
|
||||
typedef unsigned int uint32_t;
|
||||
typedef unsigned long int uint64_t;
|
||||
|
||||
typedef __INTPTR_TYPE__ intptr_t;
|
||||
typedef __UINTPTR_TYPE__ uintptr_t;
|
||||
|
||||
/* Minimum of signed integral types. */
|
||||
# define INT8_MIN (-128)
|
||||
# define INT16_MIN (-32767-1)
|
||||
# define INT32_MIN (-2147483647-1)
|
||||
# define INT64_MIN (-__INT64_C(9223372036854775807)-1)
|
||||
/* Maximum of signed integral types. */
|
||||
# define INT8_MAX (127)
|
||||
# define INT16_MAX (32767)
|
||||
# define INT32_MAX (2147483647)
|
||||
# define INT64_MAX (__INT64_C(9223372036854775807))
|
||||
|
||||
/* Maximum of unsigned integral types. */
|
||||
# define UINT8_MAX (255)
|
||||
# define UINT16_MAX (65535)
|
||||
# define UINT32_MAX (4294967295U)
|
||||
# define UINT64_MAX (__UINT64_C(18446744073709551615))
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
30
wamr-sdk/app/libc-builtin-sysroot/include/stdio.h
Normal file
30
wamr-sdk/app/libc-builtin-sysroot/include/stdio.h
Normal file
@ -0,0 +1,30 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef _WAMR_LIBC_STDIO_H
|
||||
#define _WAMR_LIBC_STDIO_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef NULL
|
||||
# define NULL ((void*) 0)
|
||||
#endif
|
||||
|
||||
typedef unsigned long size_t;
|
||||
|
||||
int printf(const char *format, ...);
|
||||
int putchar(int c);
|
||||
int snprintf(char *str, size_t size, const char *format, ...);
|
||||
int sprintf(char *str, const char *format, ...);
|
||||
int puts(char *string);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
28
wamr-sdk/app/libc-builtin-sysroot/include/stdlib.h
Normal file
28
wamr-sdk/app/libc-builtin-sysroot/include/stdlib.h
Normal file
@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef _WAMR_LIBC_STDLIB_H
|
||||
#define _WAMR_LIBC_STDLIB_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef unsigned long size_t;
|
||||
|
||||
int atoi(const char *s);
|
||||
void exit(int status);
|
||||
long strtol(const char *nptr, char **endptr, register int base);
|
||||
unsigned long strtoul(const char *nptr, char **endptr, register int base);
|
||||
void *malloc(size_t size);
|
||||
void *calloc(size_t n, size_t size);
|
||||
void free(void *ptr);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
36
wamr-sdk/app/libc-builtin-sysroot/include/string.h
Normal file
36
wamr-sdk/app/libc-builtin-sysroot/include/string.h
Normal file
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef _WAMR_LIBC_STRING_H
|
||||
#define _WAMR_LIBC_STRING_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef unsigned long size_t;
|
||||
|
||||
int memcmp(const void *s1, const void *s2, size_t n);
|
||||
void *memcpy(void *dest, const void *src, size_t n);
|
||||
void *memmove(void *dest, const void *src, size_t n);
|
||||
void *memset(void *s, int c, size_t n);
|
||||
void *memchr(const void *s, int c, size_t n);
|
||||
int strncasecmp(const char *s1, const char *s2, size_t n);
|
||||
size_t strspn(const char *s, const char *accept);
|
||||
size_t strcspn(const char *s, const char *reject);
|
||||
char *strstr(const char *s, const char *find);
|
||||
char *strchr(const char *s, int c);
|
||||
int strcmp(const char *s1, const char *s2);
|
||||
char *strcpy(char *dest, const char *src);
|
||||
size_t strlen(const char *s);
|
||||
int strncmp(const char * str1, const char * str2, size_t n);
|
||||
char *strncpy(char *dest, const char *src, unsigned long n);
|
||||
char * strdup(const char *s);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
20
wamr-sdk/app/libc-builtin-sysroot/include/strings.h
Normal file
20
wamr-sdk/app/libc-builtin-sysroot/include/strings.h
Normal file
@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef _WAMR_LIBC_STRINGS_H
|
||||
#define _WAMR_LIBC_STRINGS_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
64
wamr-sdk/app/libc-builtin-sysroot/share/defined-symbols.txt
Normal file
64
wamr-sdk/app/libc-builtin-sysroot/share/defined-symbols.txt
Normal file
@ -0,0 +1,64 @@
|
||||
wasm_open_connection
|
||||
wasm_close_connection
|
||||
wasm_send_on_connection
|
||||
wasm_config_connection
|
||||
wasm_sensor_open
|
||||
wasm_sensor_config
|
||||
wasm_sensor_config_with_attr_container
|
||||
wasm_sensor_close
|
||||
wasm_btn_native_call
|
||||
wasm_obj_native_call
|
||||
wasm_label_native_call
|
||||
wasm_cont_native_call
|
||||
wasm_page_native_call
|
||||
wasm_list_native_call
|
||||
wasm_ddlist_native_call
|
||||
wasm_cb_native_call
|
||||
wasm_register_resource
|
||||
wasm_response_send
|
||||
wasm_post_request
|
||||
wasm_sub_event
|
||||
wasm_create_timer
|
||||
wasm_timer_destroy
|
||||
wasm_timer_cancel
|
||||
wasm_timer_restart
|
||||
wasm_get_sys_tick_ms
|
||||
printf
|
||||
sprintf
|
||||
snprintf
|
||||
puts
|
||||
putchar
|
||||
memcmp
|
||||
memcpy
|
||||
memmove
|
||||
memset
|
||||
strchr
|
||||
strcmp
|
||||
strcpy
|
||||
strlen
|
||||
strncmp
|
||||
strncpy
|
||||
malloc
|
||||
calloc
|
||||
strdup
|
||||
free
|
||||
atoi
|
||||
bsearch
|
||||
exit
|
||||
strtol
|
||||
strtoul
|
||||
memchr
|
||||
strncasecmp
|
||||
strspn
|
||||
strcspn
|
||||
strstr
|
||||
isupper
|
||||
isalpha
|
||||
isspace
|
||||
isgraph
|
||||
isprint
|
||||
isdigit
|
||||
isxdigit
|
||||
tolower
|
||||
toupper
|
||||
isalnum
|
||||
29
wamr-sdk/app/wamr_toolchain.cmake
Normal file
29
wamr-sdk/app/wamr_toolchain.cmake
Normal file
@ -0,0 +1,29 @@
|
||||
# Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
|
||||
SET(CMAKE_SYSTEM_NAME Linux)
|
||||
SET(CMAKE_SYSTEM_PROCESSOR wasm32)
|
||||
SET (CMAKE_SYSROOT ${CMAKE_CURRENT_LIST_DIR}/libc-builtin-sysroot)
|
||||
|
||||
if (NOT DEFINED WASI_SDK_DIR)
|
||||
SET (WASI_SDK_DIR "/opt/wasi-sdk")
|
||||
endif ()
|
||||
|
||||
SET (CMAKE_C_FLAGS "-nostdlib -z stack-size=4096" CACHE INTERNAL "")
|
||||
SET (CMAKE_C_COMPILER_TARGET "wasm32")
|
||||
SET (CMAKE_C_COMPILER "${WASI_SDK_DIR}/bin/clang")
|
||||
|
||||
SET (CMAKE_CXX_FLAGS "-nostdlib -z stack-size=4096" CACHE INTERNAL "")
|
||||
SET (CMAKE_CXX_COMPILER_TARGET "wasm32")
|
||||
SET (CMAKE_CXX_COMPILER "${WASI_SDK_DIR}/bin/clang++")
|
||||
|
||||
SET (CMAKE_EXE_LINKER_FLAGS
|
||||
"-Wl,--initial-memory=65536,--no-entry,--no-threads,--strip-all" CACHE INTERNAL "")
|
||||
|
||||
SET (CMAKE_LINKER "${WASI_SDK_DIR}/bin/wasm-ld" CACHE INTERNAL "")
|
||||
SET (CMAKE_AR "${WASI_SDK_DIR}/bin/llvm-ar" CACHE INTERNAL "")
|
||||
SET (CMAKE_NM "${WASI_SDK_DIR}/bin/llvm-nm" CACHE INTERNAL "")
|
||||
SET (CMAKE_OBJDUMP "${WASI_SDK_DIR}/bin/llvm-dwarfdump" CACHE INTERNAL "")
|
||||
SET (CMAKE_RANLIB "${WASI_SDK_DIR}/bin/llvm-ranlib" CACHE INTERNAL "")
|
||||
SET (CMAKE_EXE_LINKER_FLAGS
|
||||
"${CMAKE_EXE_LINKER_FLAGS},--allow-undefined-file=${CMAKE_SYSROOT}/share/defined-symbols.txt" CACHE INTERNAL "")
|
||||
17
wamr-sdk/app/wasi_toolchain.cmake
Normal file
17
wamr-sdk/app/wasi_toolchain.cmake
Normal file
@ -0,0 +1,17 @@
|
||||
# Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
|
||||
SET(CMAKE_SYSTEM_NAME Linux)
|
||||
|
||||
if (NOT DEFINED WASI_SDK_DIR)
|
||||
SET (WASI_SDK_DIR "/opt/wasi-sdk")
|
||||
endif ()
|
||||
|
||||
SET (CMAKE_C_COMPILER "${WASI_SDK_DIR}/bin/clang")
|
||||
SET (CMAKE_CXX_COMPILER "${WASI_SDK_DIR}/bin/clang++")
|
||||
|
||||
SET (CMAKE_LINKER "${WASI_SDK_DIR}/bin/wasm-ld" CACHE INTERNAL "")
|
||||
SET (CMAKE_AR "${WASI_SDK_DIR}/bin/llvm-ar" CACHE INTERNAL "")
|
||||
SET (CMAKE_NM "${WASI_SDK_DIR}/bin/llvm-nm" CACHE INTERNAL "")
|
||||
SET (CMAKE_OBJDUMP "${WASI_SDK_DIR}/bin/llvm-dwarfdump" CACHE INTERNAL "")
|
||||
SET (CMAKE_RANLIB "${WASI_SDK_DIR}/bin/llvm-ranlib" CACHE INTERNAL "")
|
||||
444
wamr-sdk/build_sdk.sh
Executable file
444
wamr-sdk/build_sdk.sh
Executable file
@ -0,0 +1,444 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
|
||||
sdk_root=$(cd "$(dirname "$0")/" && pwd)
|
||||
wamr_root_dir=${sdk_root}/..
|
||||
out_dir=${sdk_root}/out
|
||||
profile_path=${out_dir}/profile.cmake
|
||||
wamr_config_cmake_file=""
|
||||
# libc support, default builtin-libc
|
||||
LIBC_SUPPORT="BUILTIN"
|
||||
CMAKE_DEXTRA_SDK_INCLUDE_PATH=""
|
||||
|
||||
# menuconfig will pass options to this script
|
||||
MENUCONFIG=""
|
||||
|
||||
usage ()
|
||||
{
|
||||
echo "build.sh [options]"
|
||||
echo " -n [profile name]"
|
||||
echo " -x [config file path name]"
|
||||
echo " -p [platform]"
|
||||
echo " -t [target]"
|
||||
echo " -m [mode]"
|
||||
echo " -e [extra include path], files under this path will be copied into SDK package"
|
||||
echo " -c, clean"
|
||||
echo " -i, enter interactive config setting"
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
||||
while getopts "e:x:n:p:t:m:l:awgicg" opt
|
||||
do
|
||||
case $opt in
|
||||
n)
|
||||
PROFILE=$OPTARG
|
||||
;;
|
||||
x)
|
||||
wamr_config_cmake_file=$OPTARG
|
||||
;;
|
||||
p)
|
||||
PLATFORM=$OPTARG
|
||||
;;
|
||||
t)
|
||||
TARGET=$OPTARG
|
||||
;;
|
||||
m)
|
||||
OLD_IFS="$IFS"
|
||||
IFS=","
|
||||
MODES=($OPTARG)
|
||||
IFS="$OLD_IFS"
|
||||
;;
|
||||
l)
|
||||
OLD_IFS="$IFS"
|
||||
IFS=","
|
||||
APP_LIST=($OPTARG)
|
||||
IFS="$OLD_IFS"
|
||||
;;
|
||||
e)
|
||||
CMAKE_DEXTRA_SDK_INCLUDE_PATH="-DEXTRA_SDK_INCLUDE_PATH=${OPTARG}"
|
||||
;;
|
||||
a)
|
||||
APP="TRUE"
|
||||
;;
|
||||
c)
|
||||
CLEAN="TRUE"
|
||||
;;
|
||||
w)
|
||||
LIBC_SUPPORT="WASI"
|
||||
;;
|
||||
g)
|
||||
FROM_GUI_MENU="TRUE"
|
||||
;;
|
||||
i)
|
||||
MENUCONFIG="TRUE"
|
||||
;;
|
||||
?)
|
||||
echo "Unknown arg: $arg"
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ ! -d "${out_dir}" ]; then
|
||||
mkdir -p ${out_dir}
|
||||
fi
|
||||
|
||||
echo "CMAKE_DEXTRA_SDK_INCLUDE_PATH=${CMAKE_DEXTRA_SDK_INCLUDE_PATH}"
|
||||
|
||||
|
||||
if [ -z "$PROFILE" ]; then
|
||||
PROFILE="default"
|
||||
echo "PROFILE argument not set, using DEFAULT"
|
||||
fi
|
||||
|
||||
curr_profile_dir=${out_dir}/${PROFILE}
|
||||
wamr_app_out_dir=${curr_profile_dir}/app-sdk/wamr-app-framework
|
||||
sysroot_dir=${curr_profile_dir}/app-sdk/libc-builtin-sysroot
|
||||
|
||||
if [[ "$CLEAN" = "TRUE" ]]; then
|
||||
rm -rf ${curr_profile_dir}
|
||||
fi
|
||||
|
||||
# cmake config file for wamr runtime:
|
||||
# 1. use the users provided the config cmake file path.
|
||||
# 2. if user set MENU CONFIG, enter menu config to generate menu_config.cmake in the profile output folder
|
||||
# 3. If the menu_config.cmake is already in the profile folder, use it
|
||||
#4: use the default config cmake file
|
||||
if [[ -n "$wamr_config_cmake_file" ]]; then
|
||||
echo "User config file: [${wamr_config_cmake_file}]"
|
||||
else
|
||||
wamr_config_cmake_file=${curr_profile_dir}/wamr_config_menu.cmake
|
||||
if [[ "$MENUCONFIG" = "TRUE" ]] || [[ "$FROM_GUI_MENU" = "TRUE" ]]; then
|
||||
echo "MENUCONFIG: user config file: [${wamr_config_cmake_file}]"
|
||||
elif [[ -f $wamr_config_cmake_file ]]; then
|
||||
echo "use existing config file: [$wamr_config_cmake_file]"
|
||||
else
|
||||
wamr_config_cmake_file=${sdk_root}/wamr_config_default.cmake
|
||||
echo "use default config file: [$wamr_config_cmake_file]"
|
||||
fi
|
||||
fi
|
||||
|
||||
# if called by gui menuconfig, overwrite the exist profile
|
||||
if [ "${FROM_GUI_MENU}" != "TRUE" ]; then
|
||||
if [[ "$PROFILE" != "default" ]] && [[ -d "$curr_profile_dir" ]]; then
|
||||
echo "#########################################################"
|
||||
echo "profile ${curr_profile_dir} already exists"
|
||||
echo " skip the build process and use the previous settings: [y]"
|
||||
echo " or delete the profile and generate a new one: n"
|
||||
read -a erase_exist
|
||||
if [[ "$erase_exist" != "n" ]] && [[ "$erase_exist" != "N" ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
rm -rf ${curr_profile_dir}
|
||||
fi
|
||||
fi
|
||||
|
||||
mkdir -p ${curr_profile_dir}
|
||||
mkdir -p ${curr_profile_dir}/app-sdk
|
||||
mkdir -p ${curr_profile_dir}/runtime-sdk
|
||||
|
||||
function set_build_target () {
|
||||
target=$1
|
||||
|
||||
if [[ "${target}" = "X86_64" ]]; then
|
||||
echo -e "set (WAMR_BUILD_TARGET \"X86_64\")" >> ${wamr_config_cmake_file}
|
||||
elif [[ "${target}" = "X86_32" ]]; then
|
||||
echo -e "set (WAMR_BUILD_TARGET \"X86_32\")" >> ${wamr_config_cmake_file}
|
||||
else
|
||||
echo "unknown build target."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
function set_build_platform () {
|
||||
platform=$1
|
||||
|
||||
if [[ "${platform}" = "linux" ]]; then
|
||||
echo -e "set (WAMR_BUILD_PLATFORM \"linux\")" >> ${wamr_config_cmake_file}
|
||||
# TODO: add other platforms
|
||||
else
|
||||
echo "${platform} platform currently not supported"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# input: array of selected exec modes [aot jit interp]
|
||||
function set_exec_mode () {
|
||||
modes=($1)
|
||||
|
||||
for mode in ${modes[@]}
|
||||
do
|
||||
if [[ "$mode" = "aot" ]]; then
|
||||
echo "set (WAMR_BUILD_AOT 1)" >> ${wamr_config_cmake_file}
|
||||
elif [[ "$mode" = "jit" ]]; then
|
||||
echo "set (WAMR_BUILD_JIT 1)" >> ${wamr_config_cmake_file}
|
||||
BUILD_LLVM="TRUE"
|
||||
elif [[ "$mode" = "interp" ]]; then
|
||||
echo "set (WAMR_BUILD_INTERP 1)" >> ${wamr_config_cmake_file}
|
||||
else
|
||||
echo "unknown execute mode."
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
function set_libc_support () {
|
||||
libc=$1
|
||||
|
||||
if [ "$libc" = "WASI" ]; then
|
||||
echo "set (WAMR_BUILD_LIBC_WASI 1)" >> ${wamr_config_cmake_file}
|
||||
else
|
||||
echo "set (WAMR_BUILD_LIBC_BUILTIN 1)" >> ${wamr_config_cmake_file}
|
||||
fi
|
||||
}
|
||||
|
||||
function set_app_framework () {
|
||||
app_support=$1
|
||||
|
||||
if [ "$app_support" = "TRUE" ]; then
|
||||
echo "set (WAMR_BUILD_APP_FRAMEWORK 1)" >> ${wamr_config_cmake_file}
|
||||
fi
|
||||
}
|
||||
|
||||
# input: array of selected app modules
|
||||
function set_app_module () {
|
||||
modules=($1)
|
||||
|
||||
for module in ${modules[*]}
|
||||
do
|
||||
if [ "${module}" = "all" ]; then
|
||||
cmake_app_list="WAMR_APP_BUILD_ALL"
|
||||
break
|
||||
fi
|
||||
|
||||
cmake_app_list="${cmake_app_list} WAMR_APP_BUILD_${module^^}"
|
||||
done
|
||||
|
||||
# APP module list
|
||||
if [ -n "${cmake_app_list}" ]; then
|
||||
echo "set (WAMR_BUILD_APP_LIST ${cmake_app_list# })" >> ${wamr_config_cmake_file}
|
||||
fi
|
||||
}
|
||||
|
||||
if [ ! -f "/opt/wasi-sdk/bin/clang" ]; then
|
||||
echo "Can't find wasi-sdk under /opt/wasi-sdk"
|
||||
echo "You can download wasi-sdk from here:"
|
||||
echo ""
|
||||
echo "https://github.com/CraneStation/wasi-sdk/releases/tag/wasi-sdk-7"
|
||||
echo ""
|
||||
echo "please install it to the default path for your convenience"
|
||||
echo ""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "${FROM_GUI_MENU}" = "TRUE" ]; then
|
||||
# called from gui based menuconfig,
|
||||
# all settings are passed from command line options
|
||||
|
||||
if [[ -f $wamr_config_cmake_file ]]; then
|
||||
rm $wamr_config_cmake_file
|
||||
fi
|
||||
|
||||
set_build_target ${TARGET}
|
||||
set_build_platform ${PLATFORM}
|
||||
set_exec_mode "${MODES[*]}"
|
||||
set_libc_support ${LIBC_SUPPORT}
|
||||
set_app_module "${APP_LIST[*]}"
|
||||
set_app_framework ${APP}
|
||||
fi
|
||||
|
||||
|
||||
# No options passed, ask for user input
|
||||
if [ "$MENUCONFIG" = "TRUE" ]; then
|
||||
|
||||
if [[ -f $wamr_config_cmake_file ]]; then
|
||||
rm $wamr_config_cmake_file
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "-----------------------------------------------------------------"
|
||||
echo "select a build target:"
|
||||
echo "[1] X86_64 (default)"
|
||||
echo "[2] X86_32"
|
||||
read -a select_target
|
||||
|
||||
if [ "${select_target}" = "2" ]; then
|
||||
TARGET="X86_32"
|
||||
else
|
||||
TARGET="X86_64"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "-----------------------------------------------------------------"
|
||||
echo "select a build platform:"
|
||||
echo "[1] linux (default)"
|
||||
echo "More platforms to be add here ..."
|
||||
|
||||
read -a select_platform
|
||||
|
||||
if [ "${select_platform}" = "1" ]; then
|
||||
PLATFORM="linux"
|
||||
# TODO: add more platforms
|
||||
else
|
||||
PLATFORM="linux"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "-----------------------------------------------------------------"
|
||||
echo "select one or more execution mode of the WAMR runtime"
|
||||
|
||||
enable_interp="y"
|
||||
enable_jit="n"
|
||||
enable_aot="n"
|
||||
|
||||
read -p "enable interpreter mode [y]/n: " -a enable_interp
|
||||
read -p "enable jit mode y/[n]: " -a enable_jit
|
||||
read -p "enable aot mode y/[n]: " -a enable_aot
|
||||
|
||||
# by default the interpreter mode is selected
|
||||
if [[ ${enable_interp} != "n" ]] && [[ ${enable_interp} != "N" ]]; then
|
||||
enable_interp="y"
|
||||
fi
|
||||
|
||||
if [[ ${enable_interp} != "y" ]] && [[ ${enable_aot} != "y" ]];
|
||||
then
|
||||
echo "WASM Interpreter and AOT must be enabled at least one"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ${enable_interp} = "y" ]]; then
|
||||
MODES[${#MODES[@]}]=interp
|
||||
fi
|
||||
if [[ ${enable_jit} = "y" ]] || [[ ${enable_jit} = "Y" ]]; then
|
||||
MODES[${#MODES[@]}]=jit
|
||||
fi
|
||||
if [[ ${enable_aot} = "y" ]] || [[ ${enable_aot} = "Y" ]]; then
|
||||
MODES[${#MODES[@]}]=aot
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "-----------------------------------------------------------------"
|
||||
echo "select a libc support:"
|
||||
echo "[1] builtin libc (default)"
|
||||
echo "[2] WebAssembly System Interface (WASI)"
|
||||
read -a libc_select
|
||||
|
||||
if [ "$libc_select" = "1" ]; then
|
||||
LIBC_SUPPORT="BUILTIN"
|
||||
elif [ "$libc_select" = "2" ]; then
|
||||
LIBC_SUPPORT="WASI"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "-----------------------------------------------------------------"
|
||||
echo "enable app framework? [y]/n"
|
||||
read -a enable_app
|
||||
|
||||
if [[ "$enable_app" != "n" ]] && [[ "$enable_app" != "N" ]]; then
|
||||
APP="TRUE"
|
||||
fi
|
||||
|
||||
if [[ "$APP" = "TRUE" ]]; then
|
||||
echo ""
|
||||
echo "-----------------------------------------------------------------"
|
||||
echo "please input the name of the module you need, seperate by ',' "
|
||||
echo "type \"all\" if you want to enable all of them"
|
||||
echo "---------------"
|
||||
for folder in `ls ${wamr_root_dir}/core/app-framework -F | grep "/$" | grep -v "base" | grep -v "app-native-shared" | grep -v "template"`
|
||||
do
|
||||
folder=${folder%*/}
|
||||
echo "${folder}"
|
||||
done
|
||||
echo "---------------"
|
||||
read -a app_select
|
||||
|
||||
app_select=${app_select},base
|
||||
app_select=${app_select#,}
|
||||
OLD_IFS="$IFS"
|
||||
IFS=","
|
||||
APP_LIST=($app_select)
|
||||
IFS="$OLD_IFS"
|
||||
fi
|
||||
|
||||
set_build_target ${TARGET}
|
||||
set_build_platform ${PLATFORM}
|
||||
set_exec_mode "${MODES[*]}"
|
||||
set_libc_support ${LIBC_SUPPORT}
|
||||
set_app_module "${APP_LIST[*]}"
|
||||
set_app_framework ${APP}
|
||||
fi
|
||||
|
||||
if [ "${BUILD_LLVM}" = "TRUE" ]; then
|
||||
if [ ! -d "${wamr_root_dir}/core/deps/llvm" ]; then
|
||||
echo -e "\n"
|
||||
echo "###### build llvm (this will take a long time) #######"
|
||||
echo ""
|
||||
cd ${wamr_root_dir}/wamr-compiler
|
||||
./build_llvm.sh
|
||||
fi
|
||||
fi
|
||||
|
||||
echo -e "\n\n"
|
||||
echo "############## Start to build wasm app sdk ###############"
|
||||
cd ${sdk_root}/app
|
||||
rm -fr build && mkdir build
|
||||
cd build
|
||||
if [ "${LIBC_SUPPORT}" = "WASI" ]; then
|
||||
echo "using wasi toolchain"
|
||||
cmake .. $CMAKE_DEXTRA_SDK_INCLUDE_PATH -DWAMR_BUILD_SDK_PROFILE=${PROFILE} -DCONFIG_PATH=${wamr_config_cmake_file} -DCMAKE_TOOLCHAIN_FILE=../wasi_toolchain.cmake
|
||||
else
|
||||
echo "using builtin libc toolchain"
|
||||
cmake .. $CMAKE_DEXTRA_SDK_INCLUDE_PATH -DWAMR_BUILD_SDK_PROFILE=${PROFILE} -DCONFIG_PATH=${wamr_config_cmake_file} -DCMAKE_TOOLCHAIN_FILE=../wamr_toolchain.cmake
|
||||
fi
|
||||
[ $? -eq 0 ] || exit $?
|
||||
make
|
||||
|
||||
if (( $? == 0 )); then
|
||||
echo -e "\033[32mSuccessfully built app-sdk under ${curr_profile_dir}/app-sdk\033[0m"
|
||||
else
|
||||
echo -e "\033[31mFailed to build app-sdk for wasm application\033[0m"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd ..
|
||||
rm -fr build
|
||||
|
||||
echo -e "\n\n"
|
||||
echo "############## Start to build runtime sdk ###############"
|
||||
cd ${sdk_root}/runtime
|
||||
rm -fr build_runtime_sdk && mkdir build_runtime_sdk
|
||||
cd build_runtime_sdk
|
||||
cmake .. $CMAKE_DEXTRA_SDK_INCLUDE_PATH -DWAMR_BUILD_SDK_PROFILE=${PROFILE} -DCONFIG_PATH=${wamr_config_cmake_file}
|
||||
[ $? -eq 0 ] || exit $?
|
||||
make
|
||||
|
||||
if (( $? == 0 )); then
|
||||
echo -e "\033[32mSuccessfully built runtime library under ${curr_profile_dir}/runtime-sdk/lib\033[0m"
|
||||
else
|
||||
echo -e "\033[31mFailed to build runtime sdk\033[0m"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd ..
|
||||
rm -fr build_runtime_sdk
|
||||
|
||||
if [ "$APP" = "TRUE" ]; then
|
||||
# Generate defined-symbol list for app-sdk
|
||||
cd ${wamr_app_out_dir}/share
|
||||
cat ${curr_profile_dir}/runtime-sdk/include/*.inl | egrep "^ *EXPORT_WASM_API *[(] *[a-zA-Z_][a-zA-Z0-9_]* *?[)]" | cut -d '(' -f2 | cut -d ')' -f1 > defined-symbols.txt
|
||||
echo "wasm_register_resource" >> defined-symbols.txt
|
||||
echo "wasm_response_send" >> defined-symbols.txt
|
||||
echo "wasm_post_request" >> defined-symbols.txt
|
||||
echo "wasm_sub_event" >> defined-symbols.txt
|
||||
echo "wasm_create_timer" >> defined-symbols.txt
|
||||
echo "wasm_timer_destroy" >> defined-symbols.txt
|
||||
echo "wasm_timer_cancel" >> defined-symbols.txt
|
||||
echo "wasm_timer_restart" >> defined-symbols.txt
|
||||
echo "wasm_get_sys_tick_ms" >> defined-symbols.txt
|
||||
fi
|
||||
|
||||
123
wamr-sdk/menuconfig.sh
Executable file
123
wamr-sdk/menuconfig.sh
Executable file
@ -0,0 +1,123 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
|
||||
sdk_root=$(cd "$(dirname "$0")/" && pwd)
|
||||
wamr_root=${sdk_root}/..
|
||||
|
||||
if [ ! `command -v menuconfig` ]; then
|
||||
echo "Can't find kconfiglib python lib on this computer"
|
||||
echo "Downloading it through pip"
|
||||
echo "If this fails, you can try `pip install kconfiglib` to install it manually"
|
||||
echo "Or download the repo from https://github.com/ulfalizer/Kconfiglib"
|
||||
|
||||
pip install kconfiglib
|
||||
fi
|
||||
|
||||
if [ -f ".wamr_modules" ]; then
|
||||
rm -f .wamr_modules
|
||||
fi
|
||||
|
||||
# get all modules under core/app-framework
|
||||
for module in `ls ${wamr_root}/core/app-framework -F | grep "/$" | grep -v "base" | grep -v "app-native-shared" | grep -v "template"`
|
||||
do
|
||||
module=${module%*/}
|
||||
echo "config APP_BUILD_${module^^}" >> .wamr_modules
|
||||
echo " bool \"enable ${module}\"" >> .wamr_modules
|
||||
done
|
||||
|
||||
menuconfig Kconfig
|
||||
|
||||
if [ ! -e ".config" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
args=""
|
||||
function args_add_bool()
|
||||
{
|
||||
args="${args} -$1"
|
||||
}
|
||||
|
||||
function args_add_one()
|
||||
{
|
||||
args="${args} -$1 $2"
|
||||
}
|
||||
|
||||
function args_add_array()
|
||||
{
|
||||
args="${args} -$1 ${2#,}"
|
||||
}
|
||||
|
||||
profile=`cat .config | grep "^CONFIG_WAMR_SDK_PROFILE"`
|
||||
profile=${profile#CONFIG_WAMR_SDK_PROFILE=\"}
|
||||
profile=${profile%*\"}
|
||||
args_add_one n ${profile}
|
||||
|
||||
platform=`cat .config | grep "^CONFIG_PLATFORM"`
|
||||
platform=${platform%*=y}
|
||||
platform=${platform,,}
|
||||
platform=${platform#config_platform_}
|
||||
if [ -n "${platform}" ]; then
|
||||
args_add_one p ${platform#config_platform_}
|
||||
fi
|
||||
|
||||
target=`cat .config | grep "^CONFIG_TARGET"`
|
||||
target=${target%*=y}
|
||||
target=${target#CONFIG_TARGET_}
|
||||
if [ -n "${target}" ]; then
|
||||
args_add_one t ${target#CONFIG_TARGET_}
|
||||
fi
|
||||
|
||||
|
||||
modes=`cat .config | grep "^CONFIG_EXEC"`
|
||||
arg_mode=""
|
||||
for mode in ${modes}
|
||||
do
|
||||
mode=${mode%*=y}
|
||||
mode=${mode#CONFIG_EXEC_}
|
||||
arg_mode="${arg_mode},${mode,,}"
|
||||
done
|
||||
if [ -z "${arg_mode}" ]; then
|
||||
echo "execution mode are not selected"
|
||||
exit 1
|
||||
fi
|
||||
args_add_array m "${arg_mode}"
|
||||
|
||||
libc=`cat .config | grep "^CONFIG_LIBC"`
|
||||
libc=${libc%*=y}
|
||||
if [ "${libc}" = "CONFIG_LIBC_WASI" ]; then
|
||||
args_add_bool w
|
||||
fi
|
||||
|
||||
app_en=`cat .config | grep "^CONFIG_APP_FRAMEWORK"`
|
||||
app_en=${app_en%*=y}
|
||||
app_en=${app_en,,}
|
||||
if [ -n "${app_en}" ]; then
|
||||
args_add_bool a
|
||||
fi
|
||||
|
||||
apps=`cat .config | grep "^CONFIG_APP_BUILD"`
|
||||
arg_app=""
|
||||
for app in ${apps}
|
||||
do
|
||||
app=${app%*=y}
|
||||
app=${app#CONFIG_APP_BUILD_}
|
||||
arg_app="${arg_app},${app,,}"
|
||||
done
|
||||
|
||||
if [ -n "${app_en}" ]; then
|
||||
arg_app="${arg_app},base"
|
||||
args_add_array l "${arg_app}"
|
||||
fi
|
||||
|
||||
extra_path=`cat .config | grep "^CONFIG_EXTRA_INCLUDE_PATH"`
|
||||
if [ -n "${extra_path}" ]; then
|
||||
extra_path=${extra_path#CONFIG_EXTRA_INCLUDE_PATH=\"}
|
||||
extra_path=${extra_path%*\"}
|
||||
args_add_one e ${extra_path}
|
||||
fi
|
||||
|
||||
args="-g ${args}"
|
||||
./build_sdk.sh ${args}
|
||||
54
wamr-sdk/runtime/CMakeLists.txt
Normal file
54
wamr-sdk/runtime/CMakeLists.txt
Normal file
@ -0,0 +1,54 @@
|
||||
# Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
|
||||
cmake_minimum_required(VERSION 2.8)
|
||||
project(runtime-sdk)
|
||||
|
||||
SET (CMAKE_C_FLAGS "-O3")
|
||||
set (CMAKE_BUILD_TYPE Release)
|
||||
|
||||
|
||||
if (NOT DEFINED WAMR_BUILD_SDK_PROFILE)
|
||||
set (WAMR_BUILD_SDK_PROFILE "default")
|
||||
endif ()
|
||||
|
||||
if (NOT DEFINED CONFIG_PATH)
|
||||
set (CONFIG_PATH ${CMAKE_CURRENT_LIST_DIR}/../wamr_config_default.cmake)
|
||||
endif ()
|
||||
|
||||
if (NOT EXISTS "${CONFIG_PATH}")
|
||||
message (FATAL_ERROR "${CONFIG_PATH} not exist")
|
||||
endif ()
|
||||
|
||||
include(${CONFIG_PATH})
|
||||
|
||||
set (OUT_DIR "${CMAKE_CURRENT_LIST_DIR}/../out/${WAMR_BUILD_SDK_PROFILE}")
|
||||
set (RUNTIME_SDK_DIR "${OUT_DIR}/runtime-sdk")
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/../../build-scripts/runtime_lib.cmake)
|
||||
|
||||
# build vmlib
|
||||
add_library(vmlib ${WAMR_RUNTIME_LIB_SOURCE})
|
||||
|
||||
# copy vmlib.a to ${SDK_ROOT}/out/runtime-sdk/lib
|
||||
add_custom_command(
|
||||
TARGET vmlib POST_BUILD
|
||||
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${RUNTIME_SDK_DIR}/lib
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/*.a ${RUNTIME_SDK_DIR}/lib
|
||||
)
|
||||
|
||||
# copy headers to ${SDK_ROOT}/out/runtime-sdk/include
|
||||
FOREACH (header IN LISTS RUNTIME_LIB_HEADER_LIST)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${RUNTIME_SDK_DIR}/include)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy "${header}" ${RUNTIME_SDK_DIR}/include)
|
||||
ENDFOREACH (header)
|
||||
|
||||
|
||||
if (DEFINED EXTRA_SDK_INCLUDE_PATH)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory ${EXTRA_SDK_INCLUDE_PATH} ${RUNTIME_SDK_DIR}/include)
|
||||
endif ()
|
||||
|
||||
# config.h is not needed when building a runtime product with pre-built library
|
||||
# erase the file to avoid compile error
|
||||
file (WRITE ${RUNTIME_SDK_DIR}/include/config.h "")
|
||||
9
wamr-sdk/wamr_config_default.cmake
Normal file
9
wamr-sdk/wamr_config_default.cmake
Normal file
@ -0,0 +1,9 @@
|
||||
set (WAMR_BUILD_PLATFORM "linux")
|
||||
set (WAMR_BUILD_TARGET X86_64)
|
||||
set (WAMR_BUILD_INTERP 1)
|
||||
set (WAMR_BUILD_AOT 1)
|
||||
set (WAMR_BUILD_JIT 0)
|
||||
set (WAMR_BUILD_LIBC_BUILTIN 1)
|
||||
set (WAMR_BUILD_LIBC_WASI 0)
|
||||
set (WAMR_BUILD_APP_FRAMEWORK 1)
|
||||
set (WAMR_BUILD_APP_LIST WAMR_APP_BUILD_BASE)
|
||||
Reference in New Issue
Block a user