diff --git a/README.md b/README.md index 7db0c50e..f426eb1f 100644 --- a/README.md +++ b/README.md @@ -114,7 +114,7 @@ Menu configuration is supported for easy integration of runtime components and a ``` cd wamr-sdk -./menuconfig.sh +./build_sdk.sh -i -n [profile name] ``` wamr build menu configuration @@ -141,7 +141,7 @@ simple/ └── 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 diff --git a/core/app-framework/app-native-shared/native_interface.h b/core/app-framework/app-native-shared/native_interface.h index cb7e7e96..0c094267 100644 --- a/core/app-framework/app-native-shared/native_interface.h +++ b/core/app-framework/app-native-shared/native_interface.h @@ -34,100 +34,6 @@ /*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 */ diff --git a/core/app-framework/base/native/base_lib.inl b/core/app-framework/base/native/base_lib.inl new file mode 100644 index 00000000..84df855f --- /dev/null +++ b/core/app-framework/base/native/base_lib.inl @@ -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), diff --git a/core/app-framework/base/native/base_lib_export.c b/core/app-framework/base/native/base_lib_export.c index 04086ba5..ee90f1da 100644 --- a/core/app-framework/base/native/base_lib_export.c +++ b/core/app-framework/base/native/base_lib_export.c @@ -7,20 +7,14 @@ #include #include #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[] = { /* TODO: use macro EXPORT_WASM_API() or EXPORT_WASM_API2() to add functions to register. */ - 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), + #include "base_lib.inl" }; int get_base_lib_export_apis(NativeSymbol **p_base_lib_apis) diff --git a/core/app-framework/base/native/base_lib_export.h b/core/app-framework/base/native/base_lib_export.h deleted file mode 100644 index d5f9f626..00000000 --- a/core/app-framework/base/native/base_lib_export.h +++ /dev/null @@ -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_ */ - diff --git a/core/app-framework/base/native/req_resp_api.h b/core/app-framework/base/native/req_resp_api.h deleted file mode 100644 index fffa5131..00000000 --- a/core/app-framework/base/native/req_resp_api.h +++ /dev/null @@ -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_ */ - diff --git a/core/app-framework/base/native/req_resp_native_api.h b/core/app-framework/base/native/req_resp_native_api.h new file mode 100644 index 00000000..7e8592b8 --- /dev/null +++ b/core/app-framework/base/native/req_resp_native_api.h @@ -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_ */ + diff --git a/core/app-framework/base/native/timer_api.h b/core/app-framework/base/native/timer_api.h deleted file mode 100644 index 0881bab9..00000000 --- a/core/app-framework/base/native/timer_api.h +++ /dev/null @@ -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_ */ - diff --git a/core/app-framework/base/native/timer_native_api.h b/core/app-framework/base/native/timer_native_api.h new file mode 100644 index 00000000..4d1f5878 --- /dev/null +++ b/core/app-framework/base/native/timer_native_api.h @@ -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_ */ + diff --git a/core/app-framework/base/native/timer_wrapper.c b/core/app-framework/base/native/timer_wrapper.c index 9ba3628e..ba5db9e8 100644 --- a/core/app-framework/base/native/timer_wrapper.c +++ b/core/app-framework/base/native/timer_wrapper.c @@ -9,6 +9,7 @@ #include "bh_list.h" #include "bh_thread.h" #include "bh_time.h" +#include "timer_native_api.h" static bool timer_thread_run = true; diff --git a/core/app-framework/connection/native/connection_api.h b/core/app-framework/connection/native/connection_api.h deleted file mode 100644 index 7d8ef598..00000000 --- a/core/app-framework/connection/native/connection_api.h +++ /dev/null @@ -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_ */ diff --git a/core/app-framework/connection/native/connection_native_api.h b/core/app-framework/connection/native/connection_native_api.h new file mode 100644 index 00000000..3b4fcaa5 --- /dev/null +++ b/core/app-framework/connection/native/connection_native_api.h @@ -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_ */ diff --git a/core/app-framework/connection/native/connection_wrapper.c b/core/app-framework/connection/native/connection_wrapper.c index d817bc4f..b60a2498 100644 --- a/core/app-framework/connection/native/connection_wrapper.c +++ b/core/app-framework/connection/native/connection_wrapper.c @@ -6,6 +6,8 @@ #include "connection_lib.h" #include "wasm_export.h" #include "native_interface.h" +#include "connection_native_api.h" + /* Note: * diff --git a/core/app-framework/sensor/app/sensor.c b/core/app-framework/sensor/app/sensor.c index 8427af4e..2af23faf 100644 --- a/core/app-framework/sensor/app/sensor.c +++ b/core/app-framework/sensor/app/sensor.c @@ -4,6 +4,7 @@ */ #include "wa-inc/sensor.h" + #include "sensor_api.h" typedef struct _sensor { diff --git a/core/app-framework/sensor/native/runtime_sensor.h b/core/app-framework/sensor/native/runtime_sensor.h index 03ce65c0..8154d6d9 100644 --- a/core/app-framework/sensor/native/runtime_sensor.h +++ b/core/app-framework/sensor/native/runtime_sensor.h @@ -9,6 +9,7 @@ #include "bh_platform.h" #include "bi-inc/attr_container.h" #include "wasm_export.h" +#include "sensor_native_api.h" struct _sys_sensor; typedef struct _sys_sensor* sensor_obj_t; @@ -50,20 +51,10 @@ void sensor_cleanup_callback(uint32 module_id); int check_sensor_timers(); void reschedule_sensor_read(); -uint32 -wasm_sensor_open(wasm_exec_env_t exec_env, - int32 name_offset, int instance); +void init_sensor_framework(); +void start_sensor_framework(); +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_ */ diff --git a/core/app-framework/sensor/native/sensor_api.h b/core/app-framework/sensor/native/sensor_api.h deleted file mode 100644 index 0546ecf4..00000000 --- a/core/app-framework/sensor/native/sensor_api.h +++ /dev/null @@ -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_ */ - diff --git a/core/app-framework/sensor/native/sensor_mgr_ref.c b/core/app-framework/sensor/native/sensor_mgr_ref.c index b31c696b..9166947e 100644 --- a/core/app-framework/sensor/native/sensor_mgr_ref.c +++ b/core/app-framework/sensor/native/sensor_mgr_ref.c @@ -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) { @@ -122,13 +107,9 @@ void set_sensor_reshceduler(void (*callback)()); void init_sensor_framework() { // init the mutext and conditions - korp_thread tid; vm_cond_init(&cond); 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); @@ -137,12 +118,25 @@ void init_sensor_framework() 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() { sensor_check_thread_run = false; + reschedule_sensor_read(); + + //todo: wait the sensor thread termination } diff --git a/core/app-framework/sensor/native/sensor_native_api.h b/core/app-framework/sensor/native/sensor_native_api.h new file mode 100644 index 00000000..5cc8ad83 --- /dev/null +++ b/core/app-framework/sensor/native/sensor_native_api.h @@ -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_ */ + diff --git a/core/app-framework/wgl/app/wasm_app.cmake b/core/app-framework/wgl/app/wasm_app.cmake index e6456637..f01be9ff 100644 --- a/core/app-framework/wgl/app/wasm_app.cmake +++ b/core/app-framework/wgl/app/wasm_app.cmake @@ -5,6 +5,10 @@ set (WASM_APP_GUI_DIR ${CMAKE_CURRENT_LIST_DIR}) 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} ${DEPS_DIR} ${DEPS_DIR}/lvgl diff --git a/core/app-framework/wgl/native/gui_api.h b/core/app-framework/wgl/native/gui_api.h deleted file mode 100644 index 65ff587a..00000000 --- a/core/app-framework/wgl/native/gui_api.h +++ /dev/null @@ -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_ */ diff --git a/core/app-framework/wgl/native/gui_native_api.h b/core/app-framework/wgl/native/gui_native_api.h new file mode 100644 index 00000000..57d98710 --- /dev/null +++ b/core/app-framework/wgl/native/gui_native_api.h @@ -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_ */ diff --git a/doc/pics/wamr_menu_config.png b/doc/pics/wamr_menu_config.png index 82762aa3..c8540958 100644 Binary files a/doc/pics/wamr_menu_config.png and b/doc/pics/wamr_menu_config.png differ diff --git a/samples/gui/wasm-runtime-wgl/src/ext_lib_export.c b/samples/gui/wasm-runtime-wgl/src/ext_lib_export.c index 4f696f0a..0058f990 100644 --- a/samples/gui/wasm-runtime-wgl/src/ext_lib_export.c +++ b/samples/gui/wasm-runtime-wgl/src/ext_lib_export.c @@ -1,7 +1,7 @@ #include "lib_export.h" -#include "sensor_api.h" -#include "connection_api.h" -#include "gui_api.h" +#include "sensor_native_api.h" +#include "connection_native_api.h" +#include "gui_native_api.h" static NativeSymbol extended_native_symbol_defs[] = { #include "runtime_sensor.inl" diff --git a/samples/littlevgl/vgl-wasm-runtime/src/ext_lib_export.c b/samples/littlevgl/vgl-wasm-runtime/src/ext_lib_export.c index 0f68dd86..8262770b 100644 --- a/samples/littlevgl/vgl-wasm-runtime/src/ext_lib_export.c +++ b/samples/littlevgl/vgl-wasm-runtime/src/ext_lib_export.c @@ -1,6 +1,6 @@ #include "lib_export.h" -#include "sensor_api.h" -#include "connection_api.h" +#include "sensor_native_api.h" +#include "connection_native_api.h" #include "display_indev.h" static NativeSymbol extended_native_symbol_defs[] = { diff --git a/samples/simple/src/ext_lib_export.c b/samples/simple/src/ext_lib_export.c index 4a5750b2..b3868bb7 100644 --- a/samples/simple/src/ext_lib_export.c +++ b/samples/simple/src/ext_lib_export.c @@ -1,6 +1,8 @@ #include "lib_export.h" -#include "sensor_api.h" -#include "connection_api.h" +#include "sensor_native_api.h" +#include "timer_native_api.h" +#include "req_resp_native_api.h" +#include "connection_native_api.h" static NativeSymbol extended_native_symbol_defs[] = { #include "runtime_sensor.inl" diff --git a/samples/simple/src/iwasm_main.c b/samples/simple/src/iwasm_main.c index ee808e4c..e9b389d2 100644 --- a/samples/simple/src/iwasm_main.c +++ b/samples/simple/src/iwasm_main.c @@ -354,6 +354,29 @@ static host_interface interface = { .send = uart_send, .destroy = uart_destroy } #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 void showUsage() @@ -458,15 +481,34 @@ int iwasm_main(int argc, char *argv[]) goto fail1; } + // + // timer manager + // + init_wasm_timer(); + + + // + // connection framework + // if (!init_connection_framework()) { vm_thread_sys_destroy(); goto fail1; } + // + // 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 if (server_mode) diff --git a/wamr-sdk/Kconfig b/wamr-sdk/Kconfig index 0431abe2..96c23a83 100644 --- a/wamr-sdk/Kconfig +++ b/wamr-sdk/Kconfig @@ -1,12 +1,5 @@ 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" @@ -64,29 +57,28 @@ choice endchoice -config APP_FRAMEWORK_ENABLE - bool "enable app framework" - help - enable wamr app framework +choice + prompt "application framework" + config APP_FRAMEWORK_DISABLE + bool "Disable app framework" + help + Disable wamr app framework -menu "app modules" - depends on APP_FRAMEWORK_ENABLE + config APP_FRAMEWORK_DEFAULT + bool "Default components" + help + Default components - config APP_BUILD_ALL - bool "enable all modules" + config APP_FRAMEWORK_ALL + 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 - bool "enable extra include dir" + source ".wamr_modules" -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 \ No newline at end of file + endmenu +endchoice diff --git a/wamr-sdk/build_sdk.sh b/wamr-sdk/build_sdk.sh index f3e15352..3f064445 100755 --- a/wamr-sdk/build_sdk.sh +++ b/wamr-sdk/build_sdk.sh @@ -20,17 +20,14 @@ 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" + echo " -i, enter menu config settings" exit 1 } -while getopts "e:x:n:p:t:m:l:awgicg" opt +while getopts "e:x:n:ic" opt do case $opt in n) @@ -39,39 +36,12 @@ do 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" ;; @@ -83,147 +53,6 @@ do 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" @@ -236,143 +65,71 @@ if [ ! -f "/opt/wasi-sdk/bin/clang" ]; then 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} +if [ -z "$PROFILE" ]; then + PROFILE="default" + echo "PROFILE argument not set, using DEFAULT" + if [[ -z "$wamr_config_cmake_file" ]]; then + wamr_config_cmake_file=${sdk_root}/wamr_config_default.cmake + echo "use default config file: [$wamr_config_cmake_file]" + fi fi -# No options passed, ask for user input -if [ "$MENUCONFIG" = "TRUE" ]; then +if [ ! -d "${out_dir}" ]; then + mkdir -p ${out_dir} +fi - if [[ -f $wamr_config_cmake_file ]]; then - rm $wamr_config_cmake_file +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 + + +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 - echo "" - echo "-----------------------------------------------------------------" - echo "select a build target:" - echo "[1] X86_64 (default)" - echo "[2] X86_32" - read -a select_target + echo "User config file: [${wamr_config_cmake_file}]" - if [ "${select_target}" = "2" ]; then - TARGET="X86_32" - else - TARGET="X86_64" +else + wamr_config_cmake_file=${out_dir}/wamr_config_${PROFILE}.cmake + # always rebuilt the sdk if user is not giving the config file + 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 - - 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 + +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 [ ! -d "${wamr_root_dir}/core/deps/llvm" ]; then echo -e "\n" @@ -388,6 +145,29 @@ echo "############## Start to build wasm app sdk ###############" cd ${sdk_root}/app rm -fr build && mkdir 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 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 @@ -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 fi [ $? -eq 0 ] || exit $? -make +make if (( $? == 0 )); then echo -e "\033[32mSuccessfully built app-sdk under ${curr_profile_dir}/app-sdk\033[0m" else @@ -407,8 +187,10 @@ 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 @@ -424,21 +206,15 @@ else exit 1 fi -cd .. -rm -fr build_runtime_sdk - -if [ "$APP" = "TRUE" ]; then +APP=`grep WAMR_BUILD_APP_FRAMEWORK ${wamr_config_cmake_file} |grep 1` +if [ -n "$APP" ]; 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 + +cd .. +rm -fr build_runtime_sdk + +exit 0 diff --git a/wamr-sdk/menuconfig.sh b/wamr-sdk/menuconfig.sh index 320a3ecd..d8499d74 100755 --- a/wamr-sdk/menuconfig.sh +++ b/wamr-sdk/menuconfig.sh @@ -3,6 +3,118 @@ # Copyright (C) 2019 Intel Corporation. All rights reserved. # 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) wamr_root=${sdk_root}/.. @@ -28,96 +140,80 @@ do done menuconfig Kconfig +[ $? -eq 0 ] || exit $? 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} - +# parse platform 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 +# parse target 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 - +# parse execution mode modes=`cat .config | grep "^CONFIG_EXEC"` -arg_mode="" +mode_list="" for mode in ${modes} do mode=${mode%*=y} mode=${mode#CONFIG_EXEC_} - arg_mode="${arg_mode},${mode,,}" + mode_list="${mode_list} ${mode,,}" done -if [ -z "${arg_mode}" ]; then +if [ -z "${mode_list}" ]; then echo "execution mode are not selected" exit 1 fi -args_add_array m "${arg_mode}" +# parse libc support libc=`cat .config | grep "^CONFIG_LIBC"` libc=${libc%*=y} if [ "${libc}" = "CONFIG_LIBC_WASI" ]; then - args_add_bool w + libc_support="WASI" +else + libc_support="BUILTIN" 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 +# parse application framework options +app_option=`cat .config | grep "^CONFIG_APP_FRAMEWORK"` +app_option=${app_option%*=y} +app_option=${app_option#CONFIG_APP_FRAMEWORK_} + +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 -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}" +if [[ -f $wamr_config_cmake_file ]]; then + rm $wamr_config_cmake_file 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} \ No newline at end of file +set_build_target ${target} +set_build_platform ${platform} +set_exec_mode "${mode_list[*]}" +set_libc_support ${libc_support} +set_app_module "${app_list[*]}" +set_app_framework ${app_enable} diff --git a/wamr-sdk/wamr_config_default.cmake b/wamr-sdk/wamr_config_default.cmake index ab0c014d..98cc6e9c 100644 --- a/wamr-sdk/wamr_config_default.cmake +++ b/wamr-sdk/wamr_config_default.cmake @@ -7,3 +7,6 @@ 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) + +# +# set (EXTRA_SDK_INCLUDE_PATH "")