sdk build tools and app framework updates (#171)

This commit is contained in:
Wang Xin 2020-02-22 10:12:26 +08:00 committed by GitHub
parent a4ac16a1c8
commit 82b0bb44c3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
30 changed files with 572 additions and 733 deletions

View File

@ -114,7 +114,7 @@ Menu configuration is supported for easy integration of runtime components and a
``` ```
cd wamr-sdk cd wamr-sdk
./menuconfig.sh ./build_sdk.sh -i -n [profile name]
``` ```
<img src="./doc/pics/wamr_menu_config.png" alt="wamr build menu configuration" style="zoom:80%;" /> <img src="./doc/pics/wamr_menu_config.png" alt="wamr build menu configuration" style="zoom:80%;" />
@ -141,7 +141,7 @@ simple/
└── lib └── lib
``` ```
The tool **build_sdk.sh** can be also directly executed by passing the configuration arguments, which is how each WAMR sample project builds the WAMR SDK for its own building profile.
### Use Runtime SDK ### Use Runtime SDK

View File

@ -34,100 +34,6 @@
/*char *wa_strdup(const char *);*/ /*char *wa_strdup(const char *);*/
/*
* request/response interfaces
*/
bool
wasm_response_send(wasm_exec_env_t exec_env,
int32 buffer_offset, int size);
void
wasm_register_resource(wasm_exec_env_t exec_env,
int32 url_offset);
void
wasm_post_request(wasm_exec_env_t exec_env,
int32 buffer_offset, int size);
void
wasm_sub_event(wasm_exec_env_t exec_env,
int32 url_offset);
/*
* sensor interfaces
*/
bool
wasm_sensor_config(wasm_exec_env_t exec_env,
uint32 sensor, int interval, int bit_cfg, int delay);
uint32
wasm_sensor_open(wasm_exec_env_t exec_env,
int32 name_offset, int instance);
bool
wasm_sensor_config_with_attr_container(wasm_exec_env_t exec_env,
uint32 sensor,
int32 buffer_offset, int len);
bool
wasm_sensor_close(wasm_exec_env_t exec_env,
uint32 sensor);
/*
* timer interfaces
*/
typedef unsigned int timer_id_t;
timer_id_t
wasm_create_timer(wasm_exec_env_t exec_env,
int interval, bool is_period, bool auto_start);
void
wasm_timer_destroy(wasm_exec_env_t exec_env, timer_id_t timer_id);
void
wasm_timer_cancel(wasm_exec_env_t exec_env, timer_id_t timer_id);
void
wasm_timer_restart(wasm_exec_env_t exec_env,
timer_id_t timer_id, int interval);
uint32
wasm_get_sys_tick_ms(wasm_exec_env_t exec_env);
/*
* connection interfaces
*/
uint32
wasm_open_connection(wasm_exec_env_t exec_env,
int32 name_offset, int32 args_offset, uint32 len);
void
wasm_close_connection(wasm_exec_env_t exec_env,
uint32 handle);
int
wasm_send_on_connection(wasm_exec_env_t exec_env,
uint32 handle, int32 data_offset, uint32 len);
bool
wasm_config_connection(wasm_exec_env_t exec_env,
uint32 handle, int32 cfg_offset, uint32 len);
/**
* gui interfaces
*/
void
wasm_obj_native_call(wasm_exec_env_t exec_env,
int32 func_id, uint32 argv_offset, uint32 argc);
void
wasm_btn_native_call(wasm_exec_env_t exec_env,
int32 func_id, uint32 argv_offset, uint32 argc);
void
wasm_label_native_call(wasm_exec_env_t exec_env,
int32 func_id, uint32 argv_offset, uint32 argc);
void
wasm_cb_native_call(wasm_exec_env_t exec_env,
int32 func_id, uint32 argv_offset, uint32 argc);
void
wasm_list_native_call(wasm_exec_env_t exec_env,
int32 func_id, uint32 argv_offset, uint32 argc);
#endif /* end of _NATIVE_INTERFACE_H */ #endif /* end of _NATIVE_INTERFACE_H */

View File

@ -0,0 +1,14 @@
/*
* Copyright (C) 2019 Intel Corporation. All rights reserved.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*/
EXPORT_WASM_API(wasm_register_resource),
EXPORT_WASM_API(wasm_response_send),
EXPORT_WASM_API(wasm_post_request),
EXPORT_WASM_API(wasm_sub_event),
EXPORT_WASM_API(wasm_create_timer),
EXPORT_WASM_API(wasm_timer_destroy),
EXPORT_WASM_API(wasm_timer_cancel),
EXPORT_WASM_API(wasm_timer_restart),
EXPORT_WASM_API(wasm_get_sys_tick_ms),

View File

@ -7,20 +7,14 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include "lib_export.h" #include "lib_export.h"
#include "base_lib_export.h" #include "req_resp_native_api.h"
#include "timer_native_api.h"
static NativeSymbol extended_native_symbol_defs[] = { static NativeSymbol extended_native_symbol_defs[] = {
/* TODO: use macro EXPORT_WASM_API() or EXPORT_WASM_API2() to /* TODO: use macro EXPORT_WASM_API() or EXPORT_WASM_API2() to
add functions to register. */ add functions to register. */
EXPORT_WASM_API(wasm_register_resource), #include "base_lib.inl"
EXPORT_WASM_API(wasm_response_send),
EXPORT_WASM_API(wasm_post_request),
EXPORT_WASM_API(wasm_sub_event),
EXPORT_WASM_API(wasm_create_timer),
EXPORT_WASM_API(wasm_timer_destroy),
EXPORT_WASM_API(wasm_timer_cancel),
EXPORT_WASM_API(wasm_timer_restart),
EXPORT_WASM_API(wasm_get_sys_tick_ms),
}; };
int get_base_lib_export_apis(NativeSymbol **p_base_lib_apis) int get_base_lib_export_apis(NativeSymbol **p_base_lib_apis)

View File

@ -1,13 +0,0 @@
/*
* Copyright (C) 2019 Intel Corporation. All rights reserved.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*/
#ifndef _BASE_LIB_EXPORT_H_
#define _BASE_LIB_EXPORT_H_
#include "bi-inc/attr_container.h"
#include "native_interface.h"
#endif /* end of _BASE_LIB_EXPORT_H_ */

View File

@ -1,32 +0,0 @@
/*
* Copyright (C) 2019 Intel Corporation. All rights reserved.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*/
#ifndef _REQ_RESP_API_H_
#define _REQ_RESP_API_H_
#include "bh_platform.h"
#ifdef __cplusplus
extern "C" {
#endif
bool
wasm_response_send(int32 buf_offset, int size);
void
wasm_register_resource(int32 url_offset);
void
wasm_post_request(int32 buf_offset, int size);
void
wasm_sub_event(int32 url_offset);
#ifdef __cplusplus
}
#endif
#endif /* end of _REQ_RESP_API_H_ */

View File

@ -0,0 +1,36 @@
/*
* Copyright (C) 2019 Intel Corporation. All rights reserved.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*/
#ifndef _REQ_RESP_API_H_
#define _REQ_RESP_API_H_
#include "bh_platform.h"
#include "wasm_export.h"
#ifdef __cplusplus
extern "C" {
#endif
bool
wasm_response_send(wasm_exec_env_t exec_env,
int32 buffer_offset, int size);
void
wasm_register_resource(wasm_exec_env_t exec_env,
int32 url_offset);
void
wasm_post_request(wasm_exec_env_t exec_env,
int32 buffer_offset, int size);
void
wasm_sub_event(wasm_exec_env_t exec_env,
int32 url_offset);
#ifdef __cplusplus
}
#endif
#endif /* end of _REQ_RESP_API_H_ */

View File

@ -1,37 +0,0 @@
/*
* Copyright (C) 2019 Intel Corporation. All rights reserved.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*/
#ifndef _TIMER_API_H_
#define _TIMER_API_H_
#include "bh_platform.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef unsigned int timer_id_t;
timer_id_t
wasm_create_timer(int interval, bool is_period, bool auto_start);
void
wasm_timer_destroy(timer_id_t timer_id);
void
wasm_timer_cancel(timer_id_t timer_id);
void
wasm_timer_restart(timer_id_t timer_id, int interval);
uint32
wasm_get_sys_tick_ms(void);
#ifdef __cplusplus
}
#endif
#endif /* end of _TIMER_API_H_ */

View File

@ -0,0 +1,43 @@
/*
* Copyright (C) 2019 Intel Corporation. All rights reserved.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*/
#ifndef _TIMER_API_H_
#define _TIMER_API_H_
#include "bh_platform.h"
#include "wasm_export.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef unsigned int timer_id_t;
/*
* timer interfaces
*/
typedef unsigned int timer_id_t;
timer_id_t
wasm_create_timer(wasm_exec_env_t exec_env,
int interval, bool is_period, bool auto_start);
void
wasm_timer_destroy(wasm_exec_env_t exec_env, timer_id_t timer_id);
void
wasm_timer_cancel(wasm_exec_env_t exec_env, timer_id_t timer_id);
void
wasm_timer_restart(wasm_exec_env_t exec_env,
timer_id_t timer_id, int interval);
uint32
wasm_get_sys_tick_ms(wasm_exec_env_t exec_env);
#ifdef __cplusplus
}
#endif
#endif /* end of _TIMER_API_H_ */

View File

@ -9,6 +9,7 @@
#include "bh_list.h" #include "bh_list.h"
#include "bh_thread.h" #include "bh_thread.h"
#include "bh_time.h" #include "bh_time.h"
#include "timer_native_api.h"
static bool timer_thread_run = true; static bool timer_thread_run = true;

View File

@ -1,32 +0,0 @@
/*
* Copyright (C) 2019 Intel Corporation. All rights reserved.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*/
#ifndef CONNECTION_API_H_
#define CONNECTION_API_H_
#include "bh_platform.h"
#ifdef __cplusplus
extern "C" {
#endif
uint32
wasm_open_connection(int32 name_offset, int32 args_buf_offset, uint32 args_buf_len);
void
wasm_close_connection(uint32 handle);
int
wasm_send_on_connection(uint32 handle, int32 data_offset, uint32 data_len);
bool
wasm_config_connection(uint32 handle, int32 cfg_buf_offset, uint32 cfg_buf_len);
#ifdef __cplusplus
}
#endif
#endif /* end of CONNECTION_API_H_ */

View File

@ -0,0 +1,41 @@
/*
* Copyright (C) 2019 Intel Corporation. All rights reserved.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*/
#ifndef CONNECTION_API_H_
#define CONNECTION_API_H_
#include "bh_platform.h"
#include "wasm_export.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* connection interfaces
*/
uint32
wasm_open_connection(wasm_exec_env_t exec_env,
int32 name_offset, int32 args_offset, uint32 len);
void
wasm_close_connection(wasm_exec_env_t exec_env,
uint32 handle);
int
wasm_send_on_connection(wasm_exec_env_t exec_env,
uint32 handle, int32 data_offset, uint32 len);
bool
wasm_config_connection(wasm_exec_env_t exec_env,
uint32 handle, int32 cfg_offset, uint32 len);
#ifdef __cplusplus
}
#endif
#endif /* end of CONNECTION_API_H_ */

View File

@ -6,6 +6,8 @@
#include "connection_lib.h" #include "connection_lib.h"
#include "wasm_export.h" #include "wasm_export.h"
#include "native_interface.h" #include "native_interface.h"
#include "connection_native_api.h"
/* Note: /* Note:
* *

View File

@ -4,6 +4,7 @@
*/ */
#include "wa-inc/sensor.h" #include "wa-inc/sensor.h"
#include "sensor_api.h" #include "sensor_api.h"
typedef struct _sensor { typedef struct _sensor {

View File

@ -9,6 +9,7 @@
#include "bh_platform.h" #include "bh_platform.h"
#include "bi-inc/attr_container.h" #include "bi-inc/attr_container.h"
#include "wasm_export.h" #include "wasm_export.h"
#include "sensor_native_api.h"
struct _sys_sensor; struct _sys_sensor;
typedef struct _sys_sensor* sensor_obj_t; typedef struct _sys_sensor* sensor_obj_t;
@ -50,20 +51,10 @@ void sensor_cleanup_callback(uint32 module_id);
int check_sensor_timers(); int check_sensor_timers();
void reschedule_sensor_read(); void reschedule_sensor_read();
uint32 void init_sensor_framework();
wasm_sensor_open(wasm_exec_env_t exec_env, void start_sensor_framework();
int32 name_offset, int instance); void exit_sensor_framework();
bool
wasm_sensor_config(wasm_exec_env_t exec_env,
uint32 sensor, int interval, int bit_cfg, int delay);
bool
wasm_sensor_config_with_attr_container(wasm_exec_env_t exec_env,
uint32 sensor, int32 buffer_offset,
int len);
bool
wasm_sensor_close(wasm_exec_env_t exec_env, uint32 sensor);
#endif /* LIB_EXTENSION_RUNTIME_SENSOR_H_ */ #endif /* LIB_EXTENSION_RUNTIME_SENSOR_H_ */

View File

@ -1,32 +0,0 @@
/*
* Copyright (C) 2019 Intel Corporation. All rights reserved.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*/
#ifndef _SENSOR_API_H_
#define _SENSOR_API_H_
#include "bh_platform.h"
#ifdef __cplusplus
extern "C" {
#endif
uint32
wasm_sensor_open(int32 name_offset, int instance);
bool
wasm_sensor_config(uint32 sensor, int interval, int bit_cfg, int delay);
bool
wasm_sensor_config_with_attr_container(uint32 sensor, int32 buffer_offset, int len);
bool
wasm_sensor_close(uint32 sensor);
#ifdef __cplusplus
}
#endif
#endif /* end of _SENSOR_API_H_ */

View File

@ -84,21 +84,6 @@ void app_mgr_sensor_event_callback(module_data *m_data, bh_message_t msg)
} }
} }
static attr_container_t * read_test_sensor(void * sensor)
{
//luc: for test
attr_container_t *attr_obj = attr_container_create("read test sensor data");
if (attr_obj) {
attr_container_set_string(&attr_obj, "name", "read test sensor");
return attr_obj;
}
return NULL;
}
static bool config_test_sensor(void * s, void * config)
{
return false;
}
static void thread_sensor_check(void * arg) static void thread_sensor_check(void * arg)
{ {
@ -122,13 +107,9 @@ void set_sensor_reshceduler(void (*callback)());
void init_sensor_framework() void init_sensor_framework()
{ {
// init the mutext and conditions // init the mutext and conditions
korp_thread tid;
vm_cond_init(&cond); vm_cond_init(&cond);
vm_mutex_init(&mutex); vm_mutex_init(&mutex);
// add the sys sensor objects
add_sys_sensor("sensor_test", "This is a sensor for test", 0, 1000,
read_test_sensor, config_test_sensor);
set_sensor_reshceduler(cb_wakeup_thread); set_sensor_reshceduler(cb_wakeup_thread);
@ -137,12 +118,25 @@ void init_sensor_framework()
wasm_register_cleanup_callback(sensor_cleanup_callback); wasm_register_cleanup_callback(sensor_cleanup_callback);
vm_thread_create(&tid, (void *)thread_sensor_check, NULL,
BH_APPLET_PRESERVED_STACK_SIZE);
} }
void start_sensor_framework()
{
korp_thread tid;
vm_thread_create(&tid,
(void *)thread_sensor_check,
NULL,
BH_APPLET_PRESERVED_STACK_SIZE);
}
void exit_sensor_framework() void exit_sensor_framework()
{ {
sensor_check_thread_run = false; sensor_check_thread_run = false;
reschedule_sensor_read();
//todo: wait the sensor thread termination
} }

View File

@ -0,0 +1,37 @@
/*
* Copyright (C) 2019 Intel Corporation. All rights reserved.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*/
#ifndef _SENSOR_NATIVE_API_H_
#define _SENSOR_NATIVE_API_H_
#include "bh_platform.h"
#include "wasm_export.h"
#ifdef __cplusplus
extern "C" {
#endif
bool
wasm_sensor_config(wasm_exec_env_t exec_env,
uint32 sensor, int interval,
int bit_cfg, int delay);
uint32
wasm_sensor_open(wasm_exec_env_t exec_env,
int32 name_offset, int instance);
bool
wasm_sensor_config_with_attr_container(wasm_exec_env_t exec_env,
uint32 sensor, int32 buffer_offset,
int len);
bool
wasm_sensor_close(wasm_exec_env_t exec_env, uint32 sensor);
#ifdef __cplusplus
}
#endif
#endif /* end of _SENSOR_NATIVE_API_H_ */

View File

@ -5,6 +5,10 @@ set (WASM_APP_GUI_DIR ${CMAKE_CURRENT_LIST_DIR})
set (DEPS_DIR ${WASM_APP_GUI_DIR}/../../../deps) set (DEPS_DIR ${WASM_APP_GUI_DIR}/../../../deps)
if (NOT EXISTS "${DEPS_DIR}/lvgl")
message (FATAL_ERROR "Can not find third party dependency: ${DEPS_DIR}/lvgl")
endif ()
include_directories(${WASM_APP_GUI_DIR} include_directories(${WASM_APP_GUI_DIR}
${DEPS_DIR} ${DEPS_DIR}
${DEPS_DIR}/lvgl ${DEPS_DIR}/lvgl

View File

@ -1,36 +0,0 @@
/*
* Copyright (C) 2019 Intel Corporation. All rights reserved.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*/
#ifndef _GUI_API_H_
#define _GUI_API_H_
#include "bh_platform.h"
#ifdef __cplusplus
extern "C" {
#endif
void
wasm_obj_native_call(int32 func_id, int32 argv_offset, uint32 argc);
void
wasm_btn_native_call(int32 func_id, int32 argv_offset, uint32 argc);
void
wasm_label_native_call(int32 func_id, int32 argv_offset, uint32 argc);
void
wasm_cb_native_call(int32 func_id, int32 argv_offset, uint32 argc);
void
wasm_list_native_call(int32 func_id, int32 argv_offset, uint32 argc);
#ifdef __cplusplus
}
#endif
#endif /* end of _GUI_API_H_ */

View File

@ -0,0 +1,46 @@
/*
* Copyright (C) 2019 Intel Corporation. All rights reserved.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*/
#ifndef _GUI_API_H_
#define _GUI_API_H_
#include "bh_platform.h"
#include "wasm_export.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* gui interfaces
*/
void
wasm_obj_native_call(wasm_exec_env_t exec_env,
int32 func_id, uint32 argv_offset, uint32 argc);
void
wasm_btn_native_call(wasm_exec_env_t exec_env,
int32 func_id, uint32 argv_offset, uint32 argc);
void
wasm_label_native_call(wasm_exec_env_t exec_env,
int32 func_id, uint32 argv_offset, uint32 argc);
void
wasm_cb_native_call(wasm_exec_env_t exec_env,
int32 func_id, uint32 argv_offset, uint32 argc);
void
wasm_list_native_call(wasm_exec_env_t exec_env,
int32 func_id, uint32 argv_offset, uint32 argc);
#ifdef __cplusplus
}
#endif
#endif /* end of _GUI_API_H_ */

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -1,7 +1,7 @@
#include "lib_export.h" #include "lib_export.h"
#include "sensor_api.h" #include "sensor_native_api.h"
#include "connection_api.h" #include "connection_native_api.h"
#include "gui_api.h" #include "gui_native_api.h"
static NativeSymbol extended_native_symbol_defs[] = { static NativeSymbol extended_native_symbol_defs[] = {
#include "runtime_sensor.inl" #include "runtime_sensor.inl"

View File

@ -1,6 +1,6 @@
#include "lib_export.h" #include "lib_export.h"
#include "sensor_api.h" #include "sensor_native_api.h"
#include "connection_api.h" #include "connection_native_api.h"
#include "display_indev.h" #include "display_indev.h"
static NativeSymbol extended_native_symbol_defs[] = { static NativeSymbol extended_native_symbol_defs[] = {

View File

@ -1,6 +1,8 @@
#include "lib_export.h" #include "lib_export.h"
#include "sensor_api.h" #include "sensor_native_api.h"
#include "connection_api.h" #include "timer_native_api.h"
#include "req_resp_native_api.h"
#include "connection_native_api.h"
static NativeSymbol extended_native_symbol_defs[] = { static NativeSymbol extended_native_symbol_defs[] = {
#include "runtime_sensor.inl" #include "runtime_sensor.inl"

View File

@ -354,6 +354,29 @@ static host_interface interface = { .send = uart_send, .destroy = uart_destroy }
#endif #endif
static attr_container_t * read_test_sensor(void * sensor)
{
//luc: for test
attr_container_t *attr_obj = attr_container_create("read test sensor data");
if (attr_obj) {
bool ret = attr_container_set_string(&attr_obj, "name", "read test sensor");
if (!ret) {
attr_container_destroy(attr_obj);
return NULL;
}
return attr_obj;
}
return NULL;
}
static bool config_test_sensor(void * s, void * config)
{
return false;
}
static char global_heap_buf[1024 * 1024] = { 0 }; static char global_heap_buf[1024 * 1024] = { 0 };
static void showUsage() static void showUsage()
@ -458,15 +481,34 @@ int iwasm_main(int argc, char *argv[])
goto fail1; goto fail1;
} }
//
// timer manager
//
init_wasm_timer();
//
// connection framework
//
if (!init_connection_framework()) { if (!init_connection_framework()) {
vm_thread_sys_destroy(); vm_thread_sys_destroy();
goto fail1; goto fail1;
} }
//
// sensor framework
//
init_sensor_framework(); init_sensor_framework();
// add the sys sensor objects
add_sys_sensor("sensor_test",
"This is a sensor for test",
0,
1000,
read_test_sensor,
config_test_sensor);
start_sensor_framework();
// timer manager
init_wasm_timer();
#ifndef CONNECTION_UART #ifndef CONNECTION_UART
if (server_mode) if (server_mode)

View File

@ -1,12 +1,5 @@
mainmenu "WebAssembly Micro Runtime Configuration" 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 choice
prompt "select a build target" prompt "select a build target"
@ -64,29 +57,28 @@ choice
endchoice endchoice
config APP_FRAMEWORK_ENABLE choice
bool "enable app framework" prompt "application framework"
help config APP_FRAMEWORK_DISABLE
enable wamr app framework bool "Disable app framework"
help
Disable wamr app framework
menu "app modules" config APP_FRAMEWORK_DEFAULT
depends on APP_FRAMEWORK_ENABLE bool "Default components"
help
Default components
config APP_BUILD_ALL config APP_FRAMEWORK_ALL
bool "enable all modules" bool "All components"
source ".wamr_modules" config APP_FRAMEWORK_CUSTOM
bool "customized module config"
endmenu menu "modules:"
depends on APP_FRAMEWORK_CUSTOM
config EXTRA_INCLUDE_ENABLE source ".wamr_modules"
bool "enable extra include dir"
config EXTRA_INCLUDE_PATH endmenu
string "external include path" endchoice
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

View File

@ -20,17 +20,14 @@ usage ()
echo "build.sh [options]" echo "build.sh [options]"
echo " -n [profile name]" echo " -n [profile name]"
echo " -x [config file path 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 " -e [extra include path], files under this path will be copied into SDK package"
echo " -c, clean" echo " -c, clean"
echo " -i, enter interactive config setting" echo " -i, enter menu config settings"
exit 1 exit 1
} }
while getopts "e:x:n:p:t:m:l:awgicg" opt while getopts "e:x:n:ic" opt
do do
case $opt in case $opt in
n) n)
@ -39,39 +36,12 @@ do
x) x)
wamr_config_cmake_file=$OPTARG 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) e)
CMAKE_DEXTRA_SDK_INCLUDE_PATH="-DEXTRA_SDK_INCLUDE_PATH=${OPTARG}" CMAKE_DEXTRA_SDK_INCLUDE_PATH="-DEXTRA_SDK_INCLUDE_PATH=${OPTARG}"
;; ;;
a)
APP="TRUE"
;;
c) c)
CLEAN="TRUE" CLEAN="TRUE"
;; ;;
w)
LIBC_SUPPORT="WASI"
;;
g)
FROM_GUI_MENU="TRUE"
;;
i) i)
MENUCONFIG="TRUE" MENUCONFIG="TRUE"
;; ;;
@ -83,147 +53,6 @@ do
esac esac
done 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 if [ ! -f "/opt/wasi-sdk/bin/clang" ]; then
echo "Can't find wasi-sdk under /opt/wasi-sdk" echo "Can't find wasi-sdk under /opt/wasi-sdk"
@ -236,143 +65,71 @@ if [ ! -f "/opt/wasi-sdk/bin/clang" ]; then
exit 1 exit 1
fi fi
if [ "${FROM_GUI_MENU}" = "TRUE" ]; then if [ -z "$PROFILE" ]; then
# called from gui based menuconfig, PROFILE="default"
# all settings are passed from command line options echo "PROFILE argument not set, using DEFAULT"
if [[ -z "$wamr_config_cmake_file" ]]; then
if [[ -f $wamr_config_cmake_file ]]; then wamr_config_cmake_file=${sdk_root}/wamr_config_default.cmake
rm $wamr_config_cmake_file echo "use default config file: [$wamr_config_cmake_file]"
fi 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 fi
# No options passed, ask for user input if [ ! -d "${out_dir}" ]; then
if [ "$MENUCONFIG" = "TRUE" ]; then mkdir -p ${out_dir}
fi
if [[ -f $wamr_config_cmake_file ]]; then curr_profile_dir=${out_dir}/${PROFILE}
rm $wamr_config_cmake_file wamr_app_out_dir=${curr_profile_dir}/app-sdk/wamr-app-framework
sysroot_dir=${curr_profile_dir}/app-sdk/libc-builtin-sysroot
echo "CMAKE_DEXTRA_SDK_INCLUDE_PATH=${CMAKE_DEXTRA_SDK_INCLUDE_PATH}"
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
if [[ ! -f $wamr_config_cmake_file ]]; then
echo "user given file not exist: ${wamr_config_cmake_file}"
exit 1
fi fi
echo "" echo "User config file: [${wamr_config_cmake_file}]"
echo "-----------------------------------------------------------------"
echo "select a build target:"
echo "[1] X86_64 (default)"
echo "[2] X86_32"
read -a select_target
if [ "${select_target}" = "2" ]; then else
TARGET="X86_32" wamr_config_cmake_file=${out_dir}/wamr_config_${PROFILE}.cmake
else # always rebuilt the sdk if user is not giving the config file
TARGET="X86_64" if [ -d ${curr_profile_dir} ]; then
rm -rf ${curr_profile_dir}
fi
if [[ "$MENUCONFIG" = "TRUE" ]] || [[ ! -f $wamr_config_cmake_file ]]; then
echo "MENUCONFIG: [${wamr_config_cmake_file}]"
./menuconfig.sh -x ${wamr_config_cmake_file}
[ $? -eq 0 ] || exit $?
else
echo "use existing config file: [$wamr_config_cmake_file]"
fi 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 fi
mkdir -p ${curr_profile_dir}
mkdir -p ${curr_profile_dir}/app-sdk
mkdir -p ${curr_profile_dir}/runtime-sdk
if [ "${BUILD_LLVM}" = "TRUE" ]; then if [ "${BUILD_LLVM}" = "TRUE" ]; then
if [ ! -d "${wamr_root_dir}/core/deps/llvm" ]; then if [ ! -d "${wamr_root_dir}/core/deps/llvm" ]; then
echo -e "\n" echo -e "\n"
@ -388,6 +145,29 @@ echo "############## Start to build wasm app sdk ###############"
cd ${sdk_root}/app cd ${sdk_root}/app
rm -fr build && mkdir build rm -fr build && mkdir build
cd build cd build
# If wgl module is selected, check if the extra SDK include dir is passed by the args, prompt user to input if not.
app_all_selected=`cat ${wamr_config_cmake_file} | grep WAMR_APP_BUILD_ALL`
app_wgl_selected=`cat ${wamr_config_cmake_file} | grep WAMR_APP_BUILD_WGL`
if [[ -n "${app_wgl_selected}" ]] || [[ -n "${app_all_selected}" ]]; then
if [ -z "${CMAKE_DEXTRA_SDK_INCLUDE_PATH}" ]; then
echo -e "\033[31mWGL module require lvgl config files, please input the path to the lvgl SDK include path:\033[0m"
read -a extra_file_path
if [[ -z "${extra_file_path}" ]] || [[ ! -d "${extra_file_path}" ]]; then
echo -e "\033[31mThe extra SDK path is invalid, exiting\033[0m"
exit 1
else
CMAKE_DEXTRA_SDK_INCLUDE_PATH="-DEXTRA_SDK_INCLUDE_PATH=${extra_file_path}"
fi
fi
fi
out=`grep WAMR_BUILD_LIBC_WASI ${wamr_config_cmake_file} |grep 1`
if [ -n "$out" ]; then
LIBC_SUPPORT="WASI"
fi
if [ "${LIBC_SUPPORT}" = "WASI" ]; then if [ "${LIBC_SUPPORT}" = "WASI" ]; then
echo "using wasi toolchain" 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 cmake .. $CMAKE_DEXTRA_SDK_INCLUDE_PATH -DWAMR_BUILD_SDK_PROFILE=${PROFILE} -DCONFIG_PATH=${wamr_config_cmake_file} -DCMAKE_TOOLCHAIN_FILE=../wasi_toolchain.cmake
@ -396,8 +176,8 @@ else
cmake .. $CMAKE_DEXTRA_SDK_INCLUDE_PATH -DWAMR_BUILD_SDK_PROFILE=${PROFILE} -DCONFIG_PATH=${wamr_config_cmake_file} -DCMAKE_TOOLCHAIN_FILE=../wamr_toolchain.cmake cmake .. $CMAKE_DEXTRA_SDK_INCLUDE_PATH -DWAMR_BUILD_SDK_PROFILE=${PROFILE} -DCONFIG_PATH=${wamr_config_cmake_file} -DCMAKE_TOOLCHAIN_FILE=../wamr_toolchain.cmake
fi fi
[ $? -eq 0 ] || exit $? [ $? -eq 0 ] || exit $?
make
make
if (( $? == 0 )); then if (( $? == 0 )); then
echo -e "\033[32mSuccessfully built app-sdk under ${curr_profile_dir}/app-sdk\033[0m" echo -e "\033[32mSuccessfully built app-sdk under ${curr_profile_dir}/app-sdk\033[0m"
else else
@ -407,8 +187,10 @@ fi
cd .. cd ..
rm -fr build rm -fr build
echo -e "\n\n" echo -e "\n\n"
echo "############## Start to build runtime sdk ###############" echo "############## Start to build runtime sdk ###############"
cd ${sdk_root}/runtime cd ${sdk_root}/runtime
rm -fr build_runtime_sdk && mkdir build_runtime_sdk rm -fr build_runtime_sdk && mkdir build_runtime_sdk
@ -424,21 +206,15 @@ else
exit 1 exit 1
fi fi
cd .. APP=`grep WAMR_BUILD_APP_FRAMEWORK ${wamr_config_cmake_file} |grep 1`
rm -fr build_runtime_sdk if [ -n "$APP" ]; then
if [ "$APP" = "TRUE" ]; then
# Generate defined-symbol list for app-sdk # Generate defined-symbol list for app-sdk
cd ${wamr_app_out_dir}/share 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 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 fi
cd ..
rm -fr build_runtime_sdk
exit 0

View File

@ -3,6 +3,118 @@
# Copyright (C) 2019 Intel Corporation. All rights reserved. # Copyright (C) 2019 Intel Corporation. All rights reserved.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
usage ()
{
echo "menuconfig.sh [options]"
echo " -x [config file path name]"
exit 1
}
while getopts "x:" opt
do
case $opt in
x)
wamr_config_cmake_file=$OPTARG
;;
?)
echo "Unknown arg: $arg"
usage
exit 1
;;
esac
done
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
}
sdk_root=$(cd "$(dirname "$0")/" && pwd) sdk_root=$(cd "$(dirname "$0")/" && pwd)
wamr_root=${sdk_root}/.. wamr_root=${sdk_root}/..
@ -28,96 +140,80 @@ do
done done
menuconfig Kconfig menuconfig Kconfig
[ $? -eq 0 ] || exit $?
if [ ! -e ".config" ]; then if [ ! -e ".config" ]; then
exit 0 exit 0
fi fi
# parse platform
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=`cat .config | grep "^CONFIG_PLATFORM"`
platform=${platform%*=y} platform=${platform%*=y}
platform=${platform,,} platform=${platform,,}
platform=${platform#config_platform_} platform=${platform#config_platform_}
if [ -n "${platform}" ]; then
args_add_one p ${platform#config_platform_}
fi
# parse target
target=`cat .config | grep "^CONFIG_TARGET"` target=`cat .config | grep "^CONFIG_TARGET"`
target=${target%*=y} target=${target%*=y}
target=${target#CONFIG_TARGET_} target=${target#CONFIG_TARGET_}
if [ -n "${target}" ]; then
args_add_one t ${target#CONFIG_TARGET_}
fi
# parse execution mode
modes=`cat .config | grep "^CONFIG_EXEC"` modes=`cat .config | grep "^CONFIG_EXEC"`
arg_mode="" mode_list=""
for mode in ${modes} for mode in ${modes}
do do
mode=${mode%*=y} mode=${mode%*=y}
mode=${mode#CONFIG_EXEC_} mode=${mode#CONFIG_EXEC_}
arg_mode="${arg_mode},${mode,,}" mode_list="${mode_list} ${mode,,}"
done done
if [ -z "${arg_mode}" ]; then if [ -z "${mode_list}" ]; then
echo "execution mode are not selected" echo "execution mode are not selected"
exit 1 exit 1
fi fi
args_add_array m "${arg_mode}"
# parse libc support
libc=`cat .config | grep "^CONFIG_LIBC"` libc=`cat .config | grep "^CONFIG_LIBC"`
libc=${libc%*=y} libc=${libc%*=y}
if [ "${libc}" = "CONFIG_LIBC_WASI" ]; then if [ "${libc}" = "CONFIG_LIBC_WASI" ]; then
args_add_bool w libc_support="WASI"
else
libc_support="BUILTIN"
fi fi
app_en=`cat .config | grep "^CONFIG_APP_FRAMEWORK"` # parse application framework options
app_en=${app_en%*=y} app_option=`cat .config | grep "^CONFIG_APP_FRAMEWORK"`
app_en=${app_en,,} app_option=${app_option%*=y}
if [ -n "${app_en}" ]; then app_option=${app_option#CONFIG_APP_FRAMEWORK_}
args_add_bool a
if [ "${app_option}" != "DISABLE" ]; then
app_enable="TRUE"
# Default components
if [ "${app_option}" = "DEFAULT" ]; then
app_list="base connection sensor"
# All components
elif [ "${app_option}" = "ALL" ]; then
app_list="all"
# Customize
elif [ "${app_option}" = "CUSTOM" ]; then
app_option=`cat .config | grep "^CONFIG_APP_BUILD"`
app_list="base"
for app in ${app_option}
do
app=${app%*=y}
app=${app#CONFIG_APP_BUILD_}
app_list="${app_list} ${app,,}"
done
fi
fi fi
apps=`cat .config | grep "^CONFIG_APP_BUILD"` if [[ -f $wamr_config_cmake_file ]]; then
arg_app="" rm $wamr_config_cmake_file
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 fi
extra_path=`cat .config | grep "^CONFIG_EXTRA_INCLUDE_PATH"` set_build_target ${target}
if [ -n "${extra_path}" ]; then set_build_platform ${platform}
extra_path=${extra_path#CONFIG_EXTRA_INCLUDE_PATH=\"} set_exec_mode "${mode_list[*]}"
extra_path=${extra_path%*\"} set_libc_support ${libc_support}
args_add_one e ${extra_path} set_app_module "${app_list[*]}"
fi set_app_framework ${app_enable}
args="-g ${args}"
./build_sdk.sh ${args}

View File

@ -7,3 +7,6 @@ set (WAMR_BUILD_LIBC_BUILTIN 1)
set (WAMR_BUILD_LIBC_WASI 0) set (WAMR_BUILD_LIBC_WASI 0)
set (WAMR_BUILD_APP_FRAMEWORK 1) set (WAMR_BUILD_APP_FRAMEWORK 1)
set (WAMR_BUILD_APP_LIST WAMR_APP_BUILD_BASE) set (WAMR_BUILD_APP_LIST WAMR_APP_BUILD_BASE)
#
# set (EXTRA_SDK_INCLUDE_PATH "")