diff --git a/README.md b/README.md
index 7db0c50ec..f426eb1f3 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]
```
@@ -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 cb7e7e963..0c094267a 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 000000000..84df855f8
--- /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 04086ba55..ee90f1da9 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 d5f9f6267..000000000
--- 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 fffa5131d..000000000
--- 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 000000000..7e8592b89
--- /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 0881bab95..000000000
--- 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 000000000..4d1f58786
--- /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 9ba3628ed..ba5db9e81 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 7d8ef5986..000000000
--- 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 000000000..3b4fcaa54
--- /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 d817bc4f1..b60a24988 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 8427af4ef..2af23fafb 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 03ce65c0f..8154d6d91 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 0546ecf49..000000000
--- 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 b31c696b2..9166947e8 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 000000000..5cc8ad836
--- /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 e64566378..f01be9ff6 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 65ff587a2..000000000
--- 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 000000000..57d987104
--- /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 82762aa3b..c85409584 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 4f696f0ad..0058f9908 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 0f68dd860..8262770b4 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 4a5750b26..b3868bb7e 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 ee808e4cc..e9b389d21 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 0431abe29..96c23a83c 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 f3e153528..3f0644452 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 320a3ecd6..d8499d74c 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 ab0c014dd..98cc6e9cf 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 "")