Upgrade WAMR-IDE (#1313)
Upgrade WAMR-IDE: test-tools/wamr-ide folder - add `wamr-sdk` to include libc-builtin-sysroot header files - add `prettier` check and apply script in `package.json` - update `wasm-toolchain` dockerfile and resource - enhance `build | run | debug` process to clean up the container - enhance the change workspace - enhance `wasm` type project check before building, running and debugging - format the project_compilation.json - update documents
This commit is contained in:
12
test-tools/wamr-ide/VSCode-Extension/.gitignore
vendored
12
test-tools/wamr-ide/VSCode-Extension/.gitignore
vendored
@ -1,7 +1,7 @@
|
||||
out
|
||||
dist
|
||||
node_modules
|
||||
.vscode-test/
|
||||
*.vsix
|
||||
package-lock.json
|
||||
out
|
||||
dist
|
||||
node_modules
|
||||
.vscode-test/
|
||||
*.vsix
|
||||
package-lock.json
|
||||
src/test
|
||||
@ -1,12 +1,12 @@
|
||||
{
|
||||
"printWidth": 80,
|
||||
"tabWidth": 4,
|
||||
"useTabs": false,
|
||||
"semi": true,
|
||||
"singleQuote": true,
|
||||
"trailingComma": "es5",
|
||||
"bracketSpacing": true,
|
||||
"jsxBracketSameLine": false,
|
||||
"arrowParens": "avoid",
|
||||
"proseWrap": "always"
|
||||
}
|
||||
{
|
||||
"printWidth": 80,
|
||||
"tabWidth": 4,
|
||||
"useTabs": false,
|
||||
"semi": true,
|
||||
"singleQuote": true,
|
||||
"trailingComma": "es5",
|
||||
"bracketSpacing": true,
|
||||
"jsxBracketSameLine": false,
|
||||
"arrowParens": "avoid",
|
||||
"proseWrap": "always"
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
{
|
||||
// See http://go.microsoft.com/fwlink/?LinkId=827846
|
||||
// for the documentation about the extensions.json format
|
||||
"recommendations": ["dbaeumer.vscode-eslint"]
|
||||
}
|
||||
{
|
||||
// See http://go.microsoft.com/fwlink/?LinkId=827846
|
||||
// for the documentation about the extensions.json format
|
||||
"recommendations": ["dbaeumer.vscode-eslint"]
|
||||
}
|
||||
|
||||
@ -1,15 +1,15 @@
|
||||
// A launch configuration that compiles the extension and then opens it inside a new window
|
||||
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Launch Extension",
|
||||
"type": "extensionHost",
|
||||
"request": "launch",
|
||||
"args": ["--extensionDevelopmentPath=${workspaceFolder}"],
|
||||
"outFiles": ["${workspaceFolder}/out/**/*.js"],
|
||||
"preLaunchTask": "${defaultBuildTask}"
|
||||
}
|
||||
]
|
||||
}
|
||||
// A launch configuration that compiles the extension and then opens it inside a new window
|
||||
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Launch Extension",
|
||||
"type": "extensionHost",
|
||||
"request": "launch",
|
||||
"args": ["--extensionDevelopmentPath=${workspaceFolder}"],
|
||||
"outFiles": ["${workspaceFolder}/out/**/*.js"],
|
||||
"preLaunchTask": "${defaultBuildTask}"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@ -1,20 +1,20 @@
|
||||
// See https://go.microsoft.com/fwlink/?LinkId=733558
|
||||
// for the documentation about the tasks.json format
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"type": "npm",
|
||||
"script": "watch",
|
||||
"problemMatcher": "$tsc-watch",
|
||||
"isBackground": true,
|
||||
"presentation": {
|
||||
"reveal": "never"
|
||||
},
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
// See https://go.microsoft.com/fwlink/?LinkId=733558
|
||||
// for the documentation about the tasks.json format
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"type": "npm",
|
||||
"script": "watch",
|
||||
"problemMatcher": "$tsc-watch",
|
||||
"isBackground": true,
|
||||
"presentation": {
|
||||
"reveal": "never"
|
||||
},
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@ -1,11 +1,10 @@
|
||||
.gitignore
|
||||
.yarnrc
|
||||
|
||||
.vscode/**
|
||||
.vscode-test/**
|
||||
out/test/**
|
||||
|
||||
src/**
|
||||
.gitignore
|
||||
.yarnrc
|
||||
vsc-extension-quickstart.md
|
||||
**/tsconfig.json
|
||||
**/.eslintrc.json
|
||||
**/*.map
|
||||
|
||||
@ -21,5 +21,14 @@ File -> Open Folder -> select `VSCode_Extension`
|
||||
# Code Format
|
||||
|
||||
`prettier` is recommended and `.prettierrc.json` has been provided in workspace.
|
||||
More details and usage guidance please refer
|
||||
[prettier](https://prettier.io/docs/en/install.html)
|
||||
More details and usage guidance please refer [prettier](https://prettier.io/docs/en/install.html)
|
||||
|
||||
You can run following commands in current extension directory to check and apply
|
||||
```shell
|
||||
# install prettier firstly
|
||||
npm install --save-dev prettier
|
||||
# check format
|
||||
npm run prettier-format-check
|
||||
# apply
|
||||
npm run prettier-format-apply
|
||||
```
|
||||
@ -1,9 +1,12 @@
|
||||
{
|
||||
"name": "wamride",
|
||||
"publisher": "wamr",
|
||||
"repository": {
|
||||
"url": "https://github.com/bytecodealliance/wasm-micro-runtime/tree/main/test-tools/wamr-ide"
|
||||
},
|
||||
"displayName": "WAMR-IDE",
|
||||
"description": "An Integrated Development Environment for WASM",
|
||||
"version": "0.0.1",
|
||||
"version": "1.0.0",
|
||||
"engines": {
|
||||
"vscode": "^1.59.0"
|
||||
},
|
||||
@ -75,11 +78,11 @@
|
||||
"viewsWelcome": [
|
||||
{
|
||||
"view": "wamride.views.welcome",
|
||||
"contents": "[ Project Management ]\n[$(project)New project](command:wamride.newProject)\n[$(files)Open project](command:wamride.openFolder)\n[$(book)Change workspace](command:wamride.changeWorkspace)\n[$(pencil)Configuration](command:wamride.targetConfig)"
|
||||
"contents": "[ WAMR IDE ]\n[$(project)New project](command:wamride.newProject)\n[$(files)Open project](command:wamride.openFolder)\n[$(book)Change workspace](command:wamride.changeWorkspace)"
|
||||
},
|
||||
{
|
||||
"view": "wamride.views.welcome",
|
||||
"contents": "[ Execution Management ]\n[$(gear)Build](command:wamride.build)\n[$(run)Run](command:wamride.run)\n[$(debug-alt) Debug](command:wamride.debug)",
|
||||
"contents": "[ Current Project ]\n[$(pencil)Configuration](command:wamride.targetConfig)\n[$(gear)Build](command:wamride.build)\n[$(run)Run](command:wamride.run)\n[$(debug-alt) Debug](command:wamride.debug)",
|
||||
"enablement": "ext.isWasmProject"
|
||||
}
|
||||
],
|
||||
@ -208,6 +211,11 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"taskDefinitions": [
|
||||
{
|
||||
"type": "wasm"
|
||||
}
|
||||
]
|
||||
},
|
||||
"scripts": {
|
||||
@ -216,7 +224,9 @@
|
||||
"watch": "tsc -watch -p ./",
|
||||
"pretest": "npm run compile && npm run lint",
|
||||
"lint": "eslint src --ext ts",
|
||||
"test": "node ./out/test/runTest.js"
|
||||
"test": "node ./out/test/runTest.js",
|
||||
"prettier-format-check": "prettier --config .prettierrc.json 'src/**/*.ts' --check",
|
||||
"prettier-format-apply": "prettier --config .prettierrc.json 'src/**/*.ts' --write"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/glob": "^7.1.3",
|
||||
|
||||
@ -7,26 +7,19 @@ project(Main)
|
||||
|
||||
include(${CMAKE_CURRENT_SOURCE_DIR}/project.cmake)
|
||||
|
||||
set (CMAKE_SYSROOT /opt/wamr-sdk/app/libc-builtin-sysroot)
|
||||
|
||||
set (CMAKE_C_FLAGS " -nostdlib -g -Wno-unused-command-line-argument " CACHE INTERNAL "")
|
||||
|
||||
set (CMAKE_CXX_FLAGS " -nostdlib -g" CACHE INTERNAL "")
|
||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -Wno-unused-command-line-argument " CACHE INTERNAL "")
|
||||
|
||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -z stack-size=${STACK_SIZE}")
|
||||
|
||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdebug-prefix-map=/mnt='$ENV{PROJ_PATH}'")
|
||||
|
||||
set (CMAKE_EXE_LINKER_FLAGS
|
||||
"-Wl,--initial-memory=${INIT_MEM_SIZE},--max-memory=${MAX_MEM_SIZE}, \
|
||||
-Wl,--no-entry,")
|
||||
"${CMAKE_EXE_LINKER_FLAGS} -Wl,--initial-memory=${INIT_MEM_SIZE},--max-memory=${MAX_MEM_SIZE},")
|
||||
|
||||
set (CMAKE_EXE_LINKER_FLAGS
|
||||
"${CMAKE_EXE_LINKER_FLAGS} \
|
||||
${EXPORTED_SYMBOLS},")
|
||||
|
||||
set (CMAKE_EXE_LINKER_FLAGS
|
||||
"${CMAKE_EXE_LINKER_FLAGS} \
|
||||
-Wl,--allow-undefined-file=${CMAKE_SYSROOT}/share/defined-symbols.txt" CACHE INTERNAL "")
|
||||
|
||||
set (SRC_LIST
|
||||
${PROJECT_SRC_LIST})
|
||||
|
||||
@ -36,5 +29,4 @@ set (HEADER_LIST
|
||||
|
||||
include_directories(${HEADER_LIST})
|
||||
|
||||
add_executable (${OUTPUT_FILE_NAME} ${SRC_LIST})
|
||||
|
||||
add_executable (${OUTPUT_FILE_NAME} ${SRC_LIST})
|
||||
@ -1,14 +1,14 @@
|
||||
@REM Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
@REM SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
|
||||
@echo off
|
||||
set target_name=%1
|
||||
|
||||
docker run -it --name=wasm-debug-server-ctr ^
|
||||
-v "%cd%":/mnt ^
|
||||
-p 1234:1234 ^
|
||||
wasm-debug-server:1.0 ^
|
||||
/bin/bash -c "./debug.sh %target_name%"
|
||||
|
||||
@REM stop and remove wasm-debug-server-container
|
||||
docker stop wasm-debug-server-ctr && docker rm wasm-debug-server-ctr
|
||||
@REM Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
@REM SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
|
||||
@echo off
|
||||
|
||||
docker run -it --name=wasm-debug-server-ctr ^
|
||||
-v "%cd%":/mnt ^
|
||||
-p 1234:1234 ^
|
||||
wasm-debug-server:1.0 ^
|
||||
/bin/bash -c "./debug.sh %1"
|
||||
|
||||
@REM stop and remove wasm-debug-server-container
|
||||
docker stop wasm-debug-server-ctr>nul 2>nul
|
||||
docker rm wasm-debug-server-ctr>nul 2>nul
|
||||
9
test-tools/wamr-ide/VSCode-Extension/resource/scripts/boot_debugger_server.sh
Normal file → Executable file
9
test-tools/wamr-ide/VSCode-Extension/resource/scripts/boot_debugger_server.sh
Normal file → Executable file
@ -3,12 +3,11 @@
|
||||
|
||||
#!/bin/bash
|
||||
|
||||
target_name=$1
|
||||
|
||||
docker run -it --name=wasm-debug-server-ctr \
|
||||
-v $(pwd):/mnt \
|
||||
-v "$(pwd)":/mnt \
|
||||
-p 1234:1234 \
|
||||
wasm-debug-server:1.0 \
|
||||
/bin/bash -c "./debug.sh ${target_name}"
|
||||
/bin/bash -c "./debug.sh $1"
|
||||
|
||||
docker stop wasm-debug-server-ctr && docker rm wasm-debug-server-ctr
|
||||
docker stop wasm-debug-server-ctr>/dev/null
|
||||
docker rm wasm-debug-server-ctr>/dev/null
|
||||
@ -1,14 +1,15 @@
|
||||
@REM Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
@REM SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
|
||||
@echo off
|
||||
set AoT_Binary_Name=%1
|
||||
|
||||
@REM start a container, mount current project path to container/mnt
|
||||
docker run --name=wasm-toolchain-provider-ctr ^
|
||||
-it -v %cd%:/mnt ^
|
||||
wasm-toolchain-provider:1.0 ^
|
||||
/bin/bash -c "./build_wasm.sh %AoT_Binary_Name%"
|
||||
|
||||
@REM stop and remove wasm-toolchain-ctr container
|
||||
docker stop wasm-toolchain-provider-ctr && docker rm wasm-toolchain-provider-ctr
|
||||
@REM Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
@REM SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
|
||||
@echo off
|
||||
|
||||
@REM start a container, mount current project path to container/mnt
|
||||
docker run --name=wasm-toolchain-ctr ^
|
||||
-it -v "%cd%":/mnt ^
|
||||
--env=PROJ_PATH="%cd%" ^
|
||||
wasm-toolchain:1.0 ^
|
||||
/bin/bash -c "./build_wasm.sh %1"
|
||||
|
||||
@REM stop and remove wasm-toolchain-ctr container
|
||||
docker stop wasm-toolchain-ctr>nul 2>nul
|
||||
docker rm wasm-toolchain-ctr>nul 2>nul
|
||||
20
test-tools/wamr-ide/VSCode-Extension/resource/scripts/build.sh
Normal file → Executable file
20
test-tools/wamr-ide/VSCode-Extension/resource/scripts/build.sh
Normal file → Executable file
@ -3,17 +3,11 @@
|
||||
|
||||
#!/bin/bash
|
||||
|
||||
AoT_Binary_Name=$1
|
||||
docker run --name=wasm-toolchain-ctr \
|
||||
-it -v "$(pwd)":/mnt \
|
||||
--env=PROJ_PATH="$(pwd)" \
|
||||
wasm-toolchain:1.0 \
|
||||
/bin/bash -c "./build_wasm.sh $1"
|
||||
|
||||
# start & run docker image and build wasm
|
||||
if test ! -z "$(docker ps -a | grep wasm-toolchain-ctr)"; then
|
||||
sudo docker rm wasm-toolchain-ctr
|
||||
fi
|
||||
|
||||
sudo docker run --name=wasm-toolchain-provider-ctr \
|
||||
-it -v $(pwd):/mnt \
|
||||
wasm-toolchain-provider:1.0 \
|
||||
/bin/bash -c "./build_wasm.sh $AoT_Binary_Name"
|
||||
|
||||
# stop and remove wasm-toolchain-ctr container
|
||||
sudo docker stop wasm-toolchain-provider-ctr && sudo docker rm wasm-toolchain-provider-ctr
|
||||
docker stop wasm-toolchain-ctr>/dev/null
|
||||
docker rm wasm-toolchain-ctr>/dev/null
|
||||
@ -0,0 +1,38 @@
|
||||
@REM Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
@REM SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
|
||||
@echo off
|
||||
|
||||
call docker --version>nul 2>nul
|
||||
IF %ERRORLEVEL% GTR 0 (
|
||||
echo "Docker is not installed, please install docker desktop firstly."
|
||||
echo
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
call docker images>nul 2>nul
|
||||
IF %ERRORLEVEL% GTR 0 (
|
||||
echo "Docker is not ready, please lanuch docker desktop firstly."
|
||||
echo
|
||||
exit /b 2
|
||||
)
|
||||
|
||||
echo "Prepare to clean up the docker containers..."
|
||||
|
||||
call docker inspect wasm-toolchain-ctr>nul 2>nul
|
||||
IF %ERRORLEVEL% EQU 0 (
|
||||
echo "Stopping and removing wasm-toolchain-ctr container..."
|
||||
docker stop wasm-toolchain-ctr>nul 2>nul
|
||||
docker rm wasm-toolchain-ctr>nul 2>nul
|
||||
echo "Done."
|
||||
)
|
||||
|
||||
call docker inspect wasm-debug-server-ctr>nul 2>nul
|
||||
IF %ERRORLEVEL% EQU 0 (
|
||||
echo "Stopping and removing wasm-debug-server-ctr container..."
|
||||
docker stop wasm-debug-server-ctr>nul 2>nul
|
||||
docker rm wasm-debug-server-ctr>nul 2>nul
|
||||
echo "Done."
|
||||
)
|
||||
|
||||
echo "Clean up docker containers successfully."
|
||||
34
test-tools/wamr-ide/VSCode-Extension/resource/scripts/destroy.sh
Executable file
34
test-tools/wamr-ide/VSCode-Extension/resource/scripts/destroy.sh
Executable file
@ -0,0 +1,34 @@
|
||||
# Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
|
||||
#!/bin/bash
|
||||
|
||||
docker -v>/dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "\nDocker is not installed, please install docker firstly.\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
docker images>/dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "\nDocker service is not running, please start your docker service firstly.\n"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
echo "Prepare to clean up the docker containers..."
|
||||
|
||||
if test ! -z "$(docker ps -a | grep wasm-toolchain-ctr)"; then
|
||||
echo "Stopping and removing wasm-toolchain-ctr container..."
|
||||
docker stop wasm-toolchain-ctr>/dev/null
|
||||
docker rm wasm-toolchain-ctr>/dev/null
|
||||
echo "Done."
|
||||
fi
|
||||
|
||||
if test ! -z "$(docker ps -a | grep wasm-debug-server-ctr)"; then
|
||||
echo "Stopping and removing wasm-debug-server-ctr container..."
|
||||
docker stop wasm-debug-server-ctr>/dev/null
|
||||
docker rm wasm-debug-server-ctr>/dev/null
|
||||
echo "Done."
|
||||
fi
|
||||
|
||||
echo "Clean up docker containers successfully."
|
||||
@ -1,17 +1,17 @@
|
||||
# Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
|
||||
set (OUTPUT_FILE_NAME)
|
||||
|
||||
set (INIT_MEM_SIZE)
|
||||
|
||||
set (MAX_MEM_SIZE)
|
||||
|
||||
set (STACK_SIZE)
|
||||
|
||||
set (EXPORTED_SYMBOLS)
|
||||
|
||||
set (PROJECT_SRC_LIST)
|
||||
|
||||
set (PROJECT_INCLUDES)
|
||||
|
||||
# Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
|
||||
set (OUTPUT_FILE_NAME)
|
||||
|
||||
set (INIT_MEM_SIZE)
|
||||
|
||||
set (MAX_MEM_SIZE)
|
||||
|
||||
set (STACK_SIZE)
|
||||
|
||||
set (EXPORTED_SYMBOLS)
|
||||
|
||||
set (PROJECT_SRC_LIST)
|
||||
|
||||
set (PROJECT_INCLUDES)
|
||||
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
@REM Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
@REM SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
|
||||
@echo off
|
||||
set target_name=%1
|
||||
|
||||
docker run -it --name=wasm-executor-ctr ^
|
||||
-v "%cd%":/mnt ^
|
||||
wasm-debug-server:1.0 ^
|
||||
/bin/bash -c "./run.sh %target_name%"
|
||||
|
||||
@REM stop and remove wasm-executor-ctr
|
||||
docker stop wasm-executor-ctr && docker rm wasm-executor-ctr
|
||||
@REM Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
@REM SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
|
||||
@echo off
|
||||
|
||||
docker run -it --name=wasm-debug-server-ctr ^
|
||||
-v "%cd%":/mnt ^
|
||||
wasm-debug-server:1.0 ^
|
||||
/bin/bash -c "./run.sh %1"
|
||||
|
||||
@REM stop and remove wasm-debug-server-ctr
|
||||
docker stop wasm-debug-server-ctr>nul 2>nul
|
||||
docker rm wasm-debug-server-ctr>nul 2>nul
|
||||
8
test-tools/wamr-ide/VSCode-Extension/resource/scripts/run.sh
Normal file → Executable file
8
test-tools/wamr-ide/VSCode-Extension/resource/scripts/run.sh
Normal file → Executable file
@ -2,11 +2,11 @@
|
||||
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
|
||||
#!/bin/bash
|
||||
target_name=$1
|
||||
|
||||
docker run -it --name=wasm-debug-server-ctr \
|
||||
-v $(pwd):/mnt \
|
||||
-v "$(pwd)":/mnt \
|
||||
wasm-debug-server:1.0 \
|
||||
/bin/bash -c "./run.sh ${target_name}"
|
||||
/bin/bash -c "./run.sh $1"
|
||||
|
||||
docker stop wasm-debug-server-ctr && docker rm wasm-debug-server-ctr
|
||||
docker stop wasm-debug-server-ctr>/dev/null
|
||||
docker rm wasm-debug-server-ctr>/dev/null
|
||||
@ -0,0 +1,17 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef _WAMR_LIBC_ASSERT_H
|
||||
#define _WAMR_LIBC_ASSERT_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef _WAMR_LIBC_CTYPE_H
|
||||
#define _WAMR_LIBC_CTYPE_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int
|
||||
isupper(int c);
|
||||
int
|
||||
isalpha(int c);
|
||||
int
|
||||
isspace(int c);
|
||||
int
|
||||
isgraph(int c);
|
||||
int
|
||||
isprint(int c);
|
||||
int
|
||||
isdigit(int c);
|
||||
int
|
||||
isxdigit(int c);
|
||||
int
|
||||
tolower(int c);
|
||||
int
|
||||
toupper(int c);
|
||||
int
|
||||
isalnum(int c);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@ -0,0 +1,17 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef _WAMR_LIBC_ERRNO_H
|
||||
#define _WAMR_LIBC_ERRNO_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@ -0,0 +1,17 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef _WAMR_LIBC_FCNTL_H
|
||||
#define _WAMR_LIBC_FCNTL_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@ -0,0 +1,19 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef _WAMR_LIBC_INTTYPES_H
|
||||
#define _WAMR_LIBC_INTTYPES_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef _WAMR_LIBC_LIMITS_H
|
||||
#define _WAMR_LIBC_LIMITS_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define CHAR_BIT 8
|
||||
#define SCHAR_MIN -128
|
||||
#define SCHAR_MAX 127
|
||||
#define UCHAR_MAX 255
|
||||
#define CHAR_MIN 0
|
||||
#define CHAR_MAX 127
|
||||
#define MB_LEN_MAX 1
|
||||
#define SHRT_MIN -32768
|
||||
#define SHRT_MAX +32767
|
||||
#define USHRT_MAX 65535
|
||||
#define INT_MIN -32768
|
||||
#define INT_MAX +32767
|
||||
#define UINT_MAX 65535
|
||||
#define LONG_MIN -2147483648
|
||||
#define LONG_MAX +2147483647
|
||||
#define ULONG_MAX 4294967295
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@ -0,0 +1,91 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef _WAMR_LIB_PTHREAD_H
|
||||
#define _WAMR_LIB_PTHREAD_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/* Data type define of pthread, mutex, cond and key */
|
||||
typedef unsigned int pthread_t;
|
||||
typedef unsigned int pthread_mutex_t;
|
||||
typedef unsigned int pthread_cond_t;
|
||||
typedef unsigned int pthread_key_t;
|
||||
|
||||
/* Thread APIs */
|
||||
int
|
||||
pthread_create(pthread_t *thread, const void *attr,
|
||||
void *(*start_routine)(void *), void *arg);
|
||||
|
||||
int
|
||||
pthread_join(pthread_t thread, void **retval);
|
||||
|
||||
int
|
||||
pthread_detach(pthread_t thread);
|
||||
|
||||
int
|
||||
pthread_cancel(pthread_t thread);
|
||||
|
||||
pthread_t
|
||||
pthread_self(void);
|
||||
|
||||
void
|
||||
pthread_exit(void *retval);
|
||||
|
||||
/* Mutex APIs */
|
||||
int
|
||||
pthread_mutex_init(pthread_mutex_t *mutex, const void *attr);
|
||||
|
||||
int
|
||||
pthread_mutex_lock(pthread_mutex_t *mutex);
|
||||
|
||||
int
|
||||
pthread_mutex_unlock(pthread_mutex_t *mutex);
|
||||
|
||||
int
|
||||
pthread_mutex_destroy(pthread_mutex_t *mutex);
|
||||
|
||||
/* Cond APIs */
|
||||
int
|
||||
pthread_cond_init(pthread_cond_t *cond, const void *attr);
|
||||
|
||||
int
|
||||
pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex);
|
||||
|
||||
int
|
||||
pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex,
|
||||
uint64_t useconds);
|
||||
|
||||
int
|
||||
pthread_cond_signal(pthread_cond_t *cond);
|
||||
|
||||
int
|
||||
pthread_cond_broadcast(pthread_cond_t *cond);
|
||||
|
||||
int
|
||||
pthread_cond_destroy(pthread_cond_t *cond);
|
||||
|
||||
/* Pthread key APIs */
|
||||
int
|
||||
pthread_key_create(pthread_key_t *key, void (*destructor)(void *));
|
||||
|
||||
int
|
||||
pthread_setspecific(pthread_key_t key, const void *value);
|
||||
|
||||
void *
|
||||
pthread_getspecific(pthread_key_t key);
|
||||
|
||||
int
|
||||
pthread_key_delete(pthread_key_t key);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* end of _WAMR_LIB_PTHREAD_H */
|
||||
@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef _WAMR_LIBC_STDARG_H
|
||||
#define _WAMR_LIBC_STDARG_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef _VA_LIST
|
||||
typedef __builtin_va_list va_list;
|
||||
#define _VA_LIST
|
||||
#endif
|
||||
#define va_start(ap, param) __builtin_va_start(ap, param)
|
||||
#define va_end(ap) __builtin_va_end(ap)
|
||||
#define va_arg(ap, type) __builtin_va_arg(ap, type)
|
||||
|
||||
#define __va_copy(d, s) __builtin_va_copy(d, s)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* end of _WAMR_LIBC_STDARG_H */
|
||||
@ -0,0 +1,19 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef _WAMR_LIBC_STDBOOL_H
|
||||
#define _WAMR_LIBC_STDBOOL_H
|
||||
|
||||
#define __bool_true_false_are_defined 1
|
||||
|
||||
#ifndef __cplusplus
|
||||
|
||||
#define bool _Bool
|
||||
#define false 0
|
||||
#define true 1
|
||||
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif
|
||||
@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef _WAMR_LIBC_STDINT_H
|
||||
#define _WAMR_LIBC_STDINT_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* clang-format off */
|
||||
typedef char int8_t;
|
||||
typedef short int int16_t;
|
||||
typedef int int32_t;
|
||||
typedef long long int int64_t;
|
||||
|
||||
/* Unsigned. */
|
||||
typedef unsigned char uint8_t;
|
||||
typedef unsigned short int uint16_t;
|
||||
typedef unsigned int uint32_t;
|
||||
typedef unsigned long long int uint64_t;
|
||||
|
||||
typedef __INTPTR_TYPE__ intptr_t;
|
||||
typedef __UINTPTR_TYPE__ uintptr_t;
|
||||
|
||||
/* Minimum of signed integral types. */
|
||||
# define INT8_MIN (-128)
|
||||
# define INT16_MIN (-32767-1)
|
||||
# define INT32_MIN (-2147483647-1)
|
||||
# define INT64_MIN (-__INT64_C(9223372036854775807)-1)
|
||||
/* Maximum of signed integral types. */
|
||||
# define INT8_MAX (127)
|
||||
# define INT16_MAX (32767)
|
||||
# define INT32_MAX (2147483647)
|
||||
# define INT64_MAX (__INT64_C(9223372036854775807))
|
||||
|
||||
/* Maximum of unsigned integral types. */
|
||||
# define UINT8_MAX (255)
|
||||
# define UINT16_MAX (65535)
|
||||
# define UINT32_MAX (4294967295U)
|
||||
# define UINT64_MAX (__UINT64_C(18446744073709551615))
|
||||
/* clang-format on */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef _WAMR_LIBC_STDIO_H
|
||||
#define _WAMR_LIBC_STDIO_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef NULL
|
||||
#define NULL ((void *)0)
|
||||
#endif
|
||||
|
||||
typedef unsigned long size_t;
|
||||
|
||||
int
|
||||
printf(const char *format, ...);
|
||||
int
|
||||
putchar(int c);
|
||||
int
|
||||
snprintf(char *str, size_t size, const char *format, ...);
|
||||
int
|
||||
sprintf(char *str, const char *format, ...);
|
||||
int
|
||||
puts(char *string);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef _WAMR_LIBC_STDLIB_H
|
||||
#define _WAMR_LIBC_STDLIB_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef unsigned long size_t;
|
||||
|
||||
int
|
||||
atoi(const char *s);
|
||||
void
|
||||
exit(int status);
|
||||
long
|
||||
strtol(const char *nptr, char **endptr, register int base);
|
||||
unsigned long
|
||||
strtoul(const char *nptr, char **endptr, register int base);
|
||||
void *
|
||||
malloc(size_t size);
|
||||
void *
|
||||
calloc(size_t n, size_t size);
|
||||
void
|
||||
free(void *ptr);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@ -0,0 +1,52 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef _WAMR_LIBC_STRING_H
|
||||
#define _WAMR_LIBC_STRING_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef unsigned long size_t;
|
||||
|
||||
int
|
||||
memcmp(const void *s1, const void *s2, size_t n);
|
||||
void *
|
||||
memcpy(void *dest, const void *src, size_t n);
|
||||
void *
|
||||
memmove(void *dest, const void *src, size_t n);
|
||||
void *
|
||||
memset(void *s, int c, size_t n);
|
||||
void *
|
||||
memchr(const void *s, int c, size_t n);
|
||||
int
|
||||
strncasecmp(const char *s1, const char *s2, size_t n);
|
||||
size_t
|
||||
strspn(const char *s, const char *accept);
|
||||
size_t
|
||||
strcspn(const char *s, const char *reject);
|
||||
char *
|
||||
strstr(const char *s, const char *find);
|
||||
char *
|
||||
strchr(const char *s, int c);
|
||||
int
|
||||
strcmp(const char *s1, const char *s2);
|
||||
char *
|
||||
strcpy(char *dest, const char *src);
|
||||
size_t
|
||||
strlen(const char *s);
|
||||
int
|
||||
strncmp(const char *str1, const char *str2, size_t n);
|
||||
char *
|
||||
strncpy(char *dest, const char *src, unsigned long n);
|
||||
char *
|
||||
strdup(const char *s);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@ -0,0 +1,17 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef _WAMR_LIBC_STRINGS_H
|
||||
#define _WAMR_LIBC_STRINGS_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@ -7,15 +7,15 @@ import * as vscode from 'vscode';
|
||||
import * as os from 'os';
|
||||
|
||||
export class WasmDebugConfigurationProvider
|
||||
implements vscode.DebugConfigurationProvider {
|
||||
implements vscode.DebugConfigurationProvider
|
||||
{
|
||||
constructor() {}
|
||||
|
||||
/* default port set as 1234 */
|
||||
private port = 1234;
|
||||
private hostPath!: string;
|
||||
private providerPromise:
|
||||
| Thenable<vscode.DebugConfiguration>
|
||||
| undefined = undefined;
|
||||
private providerPromise: Thenable<vscode.DebugConfiguration> | undefined =
|
||||
undefined;
|
||||
|
||||
private wasmDebugConfig!: vscode.DebugConfiguration;
|
||||
|
||||
@ -43,7 +43,6 @@ export class WasmDebugConfigurationProvider
|
||||
['attachCommands']: [
|
||||
'process connect -p wasm connect://127.0.0.1:' + port + '',
|
||||
],
|
||||
['sourceMap']: [['/mnt', hostPath]],
|
||||
};
|
||||
} else if (os.platform() === 'linux') {
|
||||
this.wasmDebugConfig = {
|
||||
@ -54,7 +53,6 @@ export class WasmDebugConfigurationProvider
|
||||
['attachCommands']: [
|
||||
'process connect -p wasm connect://127.0.0.1:' + port + '',
|
||||
],
|
||||
['sourceMap']: [['/mnt', hostPath]],
|
||||
};
|
||||
}
|
||||
}
|
||||
@ -4,7 +4,7 @@
|
||||
*/
|
||||
|
||||
import * as vscode from 'vscode';
|
||||
import { ReadFromFile } from '../utilities/directoryUtilities';
|
||||
import { ReadFromFile } from './utilities/directoryUtilities';
|
||||
import * as path from 'path';
|
||||
import * as os from 'os';
|
||||
|
||||
@ -12,27 +12,29 @@ import { WasmTaskProvider } from './taskProvider';
|
||||
import { TargetConfigPanel } from './view/TargetConfigPanel';
|
||||
import { NewProjectPanel } from './view/NewProjectPanel';
|
||||
import {
|
||||
CheckIfDirectoryExist,
|
||||
WriteIntoFile,
|
||||
ReadFromFile,
|
||||
WriteIntoFileAsync,
|
||||
} from './utilities/directoryUtilities';
|
||||
import { decorationProvider } from './explorer/decorationProvider';
|
||||
|
||||
import { WasmDebugConfigurationProvider } from './debug/debugConfigurationProvider';
|
||||
import { decorationProvider } from './decorationProvider';
|
||||
import { WasmDebugConfigurationProvider } from './debugConfigurationProvider';
|
||||
|
||||
let wasmTaskProvider: WasmTaskProvider;
|
||||
let wasmDebugConfigProvider: WasmDebugConfigurationProvider;
|
||||
var currentPrjDir = '';
|
||||
var extensionPath = '';
|
||||
var isWasmProject = false;
|
||||
|
||||
export async function activate(context: vscode.ExtensionContext) {
|
||||
var OS_PLATFORM = '',
|
||||
buildScript = '',
|
||||
runScript = '',
|
||||
debugScript = '',
|
||||
destroyScript = '',
|
||||
buildScriptFullPath = '',
|
||||
runScriptFullPath = '',
|
||||
debugScriptFullPath = '',
|
||||
destroyScriptFullPath = '',
|
||||
typeMap = new Map(),
|
||||
/* include paths array used for written into config file */
|
||||
includePathArr = new Array(),
|
||||
@ -55,32 +57,35 @@ export async function activate(context: vscode.ExtensionContext) {
|
||||
buildScript = scriptPrefix.concat('build.bat');
|
||||
runScript = scriptPrefix.concat('run.bat');
|
||||
debugScript = scriptPrefix.concat('boot_debugger_server.bat');
|
||||
destroyScript = scriptPrefix.concat('destroy.bat');
|
||||
} else if (OS_PLATFORM === 'linux') {
|
||||
buildScript = scriptPrefix.concat('build.sh');
|
||||
runScript = scriptPrefix.concat('run.sh');
|
||||
debugScript = scriptPrefix.concat('boot_debugger_server.sh');
|
||||
destroyScript = scriptPrefix.concat('destroy.sh');
|
||||
}
|
||||
|
||||
/* get extension's path, and set scripts' absolute path */
|
||||
extensionPath = context.extensionPath;
|
||||
|
||||
buildScriptFullPath = path.join(extensionPath, buildScript);
|
||||
runScriptFullPath = path.join(extensionPath, runScript);
|
||||
debugScriptFullPath = path.join(extensionPath, debugScript);
|
||||
destroyScriptFullPath = path.join(extensionPath, destroyScript);
|
||||
|
||||
scriptMap.set('buildScript', buildScriptFullPath);
|
||||
scriptMap.set('runScript', runScriptFullPath);
|
||||
scriptMap.set('debugScript', debugScriptFullPath);
|
||||
scriptMap.set('destroyScript', destroyScriptFullPath);
|
||||
|
||||
typeMap.set('Build', 'Build');
|
||||
typeMap.set('Run', 'Run');
|
||||
typeMap.set('Debug', 'Debug');
|
||||
typeMap.set('Destroy', 'Destroy');
|
||||
|
||||
wasmTaskProvider = new WasmTaskProvider(typeMap, scriptMap);
|
||||
|
||||
vscode.tasks.registerTaskProvider('wasm', wasmTaskProvider);
|
||||
|
||||
/* set current project directory */
|
||||
if (vscode.workspace.workspaceFolders?.[0]) {
|
||||
if (OS_PLATFORM === 'win32') {
|
||||
currentPrjDir = vscode.workspace.workspaceFolders?.[0].uri
|
||||
@ -89,25 +94,70 @@ export async function activate(context: vscode.ExtensionContext) {
|
||||
currentPrjDir = vscode.workspace.workspaceFolders?.[0].uri
|
||||
.path as string;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* check whether current project opened in vscode workspace is wasm project
|
||||
* it not, `build`, `run` and `debug` will be disabled
|
||||
*/
|
||||
if (currentPrjDir !== '') {
|
||||
let wamrFolder = fileSystem
|
||||
.readdirSync(currentPrjDir, {
|
||||
withFileTypes: true,
|
||||
})
|
||||
.filter(folder => folder.isDirectory() && folder.name === '.wamr');
|
||||
/**
|
||||
* check whether current project opened in vscode workspace is wasm project
|
||||
* it not, `build`, `run` and `debug` will be disabled
|
||||
*/
|
||||
if (currentPrjDir !== '') {
|
||||
let wamrFolder = fileSystem
|
||||
.readdirSync(currentPrjDir, {
|
||||
withFileTypes: true,
|
||||
})
|
||||
.filter(
|
||||
folder => folder.isDirectory() && folder.name === '.wamr'
|
||||
);
|
||||
|
||||
if (wamrFolder.length !== 0) {
|
||||
vscode.commands.executeCommand(
|
||||
'setContext',
|
||||
'ext.isWasmProject',
|
||||
true
|
||||
);
|
||||
if (wamrFolder.length !== 0) {
|
||||
isWasmProject = true;
|
||||
vscode.commands.executeCommand(
|
||||
'setContext',
|
||||
'ext.isWasmProject',
|
||||
isWasmProject
|
||||
);
|
||||
if (
|
||||
vscode.workspace
|
||||
.getConfiguration()
|
||||
.has('C_Cpp.default.systemIncludePath')
|
||||
) {
|
||||
let newIncludeInCppArr: string[] | undefined | null;
|
||||
|
||||
newIncludeInCppArr = vscode.workspace
|
||||
.getConfiguration()
|
||||
.get('C_Cpp.default.systemIncludePath');
|
||||
|
||||
let LibcBuiltinHeaderPath = path.join(
|
||||
extensionPath,
|
||||
'resource/wamr-sdk/libc-builtin-sysroot/include'
|
||||
);
|
||||
|
||||
if (newIncludeInCppArr !== undefined) {
|
||||
/* in case the configuration has not been set up, push directly */
|
||||
if (newIncludeInCppArr === null) {
|
||||
newIncludeInCppArr = new Array();
|
||||
newIncludeInCppArr.push(LibcBuiltinHeaderPath);
|
||||
} else {
|
||||
/* if the configuration has been set up, check the condition */
|
||||
if (
|
||||
/* include libc-builtin-sysroot */
|
||||
newIncludeInCppArr.indexOf(
|
||||
LibcBuiltinHeaderPath
|
||||
) < 0
|
||||
) {
|
||||
newIncludeInCppArr.push(LibcBuiltinHeaderPath);
|
||||
}
|
||||
}
|
||||
|
||||
vscode.workspace
|
||||
.getConfiguration()
|
||||
.update(
|
||||
'C_Cpp.default.systemIncludePath',
|
||||
newIncludeInCppArr,
|
||||
vscode.ConfigurationTarget.Workspace
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -163,6 +213,30 @@ export async function activate(context: vscode.ExtensionContext) {
|
||||
return;
|
||||
}
|
||||
});
|
||||
} else if (!CheckIfDirectoryExist(curWorkspace as string)) {
|
||||
vscode.window
|
||||
.showWarningMessage(
|
||||
'Invalid workspace:',
|
||||
{
|
||||
modal: true,
|
||||
detail:
|
||||
'' +
|
||||
vscode.workspace
|
||||
.getConfiguration()
|
||||
.get('WAMR-IDE.configWorkspace') +
|
||||
'',
|
||||
},
|
||||
_ok
|
||||
)
|
||||
.then(item => {
|
||||
if (item === _ok) {
|
||||
vscode.commands.executeCommand(
|
||||
'wamride.changeWorkspace'
|
||||
);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
});
|
||||
} else {
|
||||
NewProjectPanel.render(context);
|
||||
}
|
||||
@ -203,59 +277,220 @@ export async function activate(context: vscode.ExtensionContext) {
|
||||
});
|
||||
|
||||
/* update workspace value to vscode global settings */
|
||||
await vscode.workspace
|
||||
.getConfiguration()
|
||||
.update(
|
||||
'WAMR-IDE.configWorkspace',
|
||||
Workspace.trim(),
|
||||
vscode.ConfigurationTarget.Global
|
||||
)
|
||||
.then(
|
||||
success => {
|
||||
vscode.window.showInformationMessage(
|
||||
'Workspace has been set up successfully!'
|
||||
);
|
||||
},
|
||||
error => {
|
||||
vscode.window.showErrorMessage(
|
||||
'Set up Workspace failed!'
|
||||
);
|
||||
}
|
||||
);
|
||||
if (Workspace !== '' && Workspace !== undefined) {
|
||||
await vscode.workspace
|
||||
.getConfiguration()
|
||||
.update(
|
||||
'WAMR-IDE.configWorkspace',
|
||||
Workspace.trim(),
|
||||
vscode.ConfigurationTarget.Global
|
||||
)
|
||||
.then(
|
||||
success => {
|
||||
vscode.window.showInformationMessage(
|
||||
'Workspace has been set up successfully!'
|
||||
);
|
||||
},
|
||||
error => {
|
||||
vscode.window.showErrorMessage(
|
||||
'Set up Workspace failed!'
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
let disposableBuild = vscode.commands.registerCommand(
|
||||
'wamride.build',
|
||||
() => {
|
||||
generateCMakeFile(includePathArr, excludeFileArr);
|
||||
if (!isWasmProject) {
|
||||
vscode.window.showErrorMessage('Build failed', {
|
||||
modal: true,
|
||||
detail: 'Current project is not wasm project, please open wasm project and try again.',
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
return vscode.commands.executeCommand(
|
||||
'workbench.action.tasks.runTask',
|
||||
'Build: Wasm'
|
||||
);
|
||||
generateCMakeFile(includePathArr, excludeFileArr);
|
||||
/* destroy the wasm-toolchain-ctr if it exists */
|
||||
vscode.commands
|
||||
.executeCommand(
|
||||
'workbench.action.tasks.runTask',
|
||||
'Destroy: Wasm-Container-Before-Build'
|
||||
)
|
||||
.then(() => {
|
||||
let disposable = vscode.tasks.onDidEndTaskProcess(t => {
|
||||
if (
|
||||
t.execution.task.name ===
|
||||
'Wasm-Container-Before-Build'
|
||||
) {
|
||||
if (t.exitCode !== 0) {
|
||||
disposable.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
/* execute the build task */
|
||||
vscode.commands
|
||||
.executeCommand(
|
||||
'workbench.action.tasks.runTask',
|
||||
'Build: Wasm'
|
||||
)
|
||||
.then(() => {
|
||||
/* destroy the wasm-toolchain-ctr after building */
|
||||
let disposable_aft =
|
||||
vscode.tasks.onDidEndTask(a => {
|
||||
if (
|
||||
a.execution.task.name ===
|
||||
'Wasm' &&
|
||||
a.execution.task.source ===
|
||||
'Build'
|
||||
) {
|
||||
vscode.commands
|
||||
.executeCommand(
|
||||
'workbench.action.tasks.runTask',
|
||||
'Destroy: Wasm-Container-After-Build'
|
||||
)
|
||||
.then(() => {
|
||||
/* dispose the event after this building process
|
||||
*/
|
||||
disposable_aft.dispose();
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
/* dispose the event after this building process */
|
||||
disposable.dispose();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
let disposableDebug = vscode.commands.registerCommand(
|
||||
'wamride.debug',
|
||||
() => {
|
||||
if (!isWasmProject) {
|
||||
vscode.window.showErrorMessage('debug failed', {
|
||||
modal: true,
|
||||
detail: 'Current project is not wasm project, please open wasm project and try again.',
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
/* refuse to debug if build process failed */
|
||||
if (!checkIfBuildSuccess()) {
|
||||
vscode.window.showErrorMessage('Debug failed', {
|
||||
modal: true,
|
||||
detail: 'Can not find WASM binary, please build WASM firstly.',
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
/* show debug view */
|
||||
vscode.commands.executeCommand('workbench.view.debug');
|
||||
|
||||
/* should destroy the wasm-debug-server-ctr before debugging */
|
||||
vscode.commands
|
||||
.executeCommand('workbench.action.tasks.runTask', 'Debug: Wasm')
|
||||
.executeCommand(
|
||||
'workbench.action.tasks.runTask',
|
||||
'Destroy: Wasm-Container-Before-Debug'
|
||||
)
|
||||
.then(() => {
|
||||
vscode.debug.startDebugging(
|
||||
undefined,
|
||||
wasmDebugConfigProvider.getDebugConfig()
|
||||
);
|
||||
/* execute the debug task when destroy task finish */
|
||||
let disposable_bfr = vscode.tasks.onDidEndTask(t => {
|
||||
if (
|
||||
t.execution.task.name ===
|
||||
'Wasm-Container-Before-Debug'
|
||||
) {
|
||||
vscode.commands
|
||||
.executeCommand(
|
||||
'workbench.action.tasks.runTask',
|
||||
'Debug: Wasm'
|
||||
)
|
||||
.then(() => {
|
||||
vscode.debug
|
||||
.startDebugging(
|
||||
undefined,
|
||||
wasmDebugConfigProvider.getDebugConfig()
|
||||
)
|
||||
.then(() => {
|
||||
/* register to listen debug session finish event */
|
||||
let dispose_aft =
|
||||
vscode.debug.onDidTerminateDebugSession(
|
||||
s => {
|
||||
if (
|
||||
s.type !==
|
||||
'wamr-debug'
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* execute the task to destroy
|
||||
* wasm-debug-server-ctr */
|
||||
vscode.commands.executeCommand(
|
||||
'workbench.action.tasks.runTask',
|
||||
'Destroy: Wasm-Container-After-Debug'
|
||||
);
|
||||
|
||||
/* execute the task to kill the terminal */
|
||||
vscode.commands.executeCommand(
|
||||
'workbench.action.terminal.kill',
|
||||
'Debug: Wasm'
|
||||
);
|
||||
|
||||
dispose_aft.dispose();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
}
|
||||
disposable_bfr.dispose();
|
||||
});
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
let disposableRun = vscode.commands.registerCommand('wamride.run', () => {
|
||||
return vscode.commands.executeCommand(
|
||||
'workbench.action.tasks.runTask',
|
||||
'Run: Wasm'
|
||||
);
|
||||
if (!isWasmProject) {
|
||||
vscode.window.showErrorMessage('run failed', {
|
||||
modal: true,
|
||||
detail: 'Current project is not wasm project, please open wasm project and try again.',
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
/* refuse to debug if build process failed */
|
||||
if (!checkIfBuildSuccess()) {
|
||||
vscode.window.showErrorMessage('Debug failed', {
|
||||
modal: true,
|
||||
detail: 'Can not find WASM binary, please build WASM firstly.',
|
||||
});
|
||||
return;
|
||||
}
|
||||
vscode.commands
|
||||
.executeCommand(
|
||||
'workbench.action.tasks.runTask',
|
||||
'Destroy: Wasm-Container-Before-Run'
|
||||
)
|
||||
.then(() => {
|
||||
let dispose_bfr = vscode.tasks.onDidEndTaskProcess(e => {
|
||||
if (e.execution.task.name === 'Wasm-Container-Before-Run') {
|
||||
/* make sure that run wasm task will be executed after destroy task finish */
|
||||
vscode.commands
|
||||
.executeCommand(
|
||||
'workbench.action.tasks.runTask',
|
||||
'Run: Wasm'
|
||||
)
|
||||
.then(() => {
|
||||
if (e.exitCode !== 0) {
|
||||
dispose_bfr.dispose();
|
||||
return;
|
||||
}
|
||||
});
|
||||
dispose_bfr.dispose();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
let disposableToggleIncludePath = vscode.commands.registerCommand(
|
||||
@ -322,8 +557,10 @@ export async function activate(context: vscode.ExtensionContext) {
|
||||
let disposableOpenFolder = vscode.commands.registerCommand(
|
||||
'wamride.openFolder',
|
||||
() => {
|
||||
/* get projects list under current workspace */
|
||||
let _ok = 'Set up now';
|
||||
let _cancle = 'Maybe later';
|
||||
let _create = 'Create now';
|
||||
let curWorkspace = vscode.workspace
|
||||
.getConfiguration()
|
||||
.get('WAMR-IDE.configWorkspace') as string;
|
||||
@ -345,6 +582,30 @@ export async function activate(context: vscode.ExtensionContext) {
|
||||
return;
|
||||
}
|
||||
});
|
||||
} else if (!CheckIfDirectoryExist(curWorkspace as string)) {
|
||||
vscode.window
|
||||
.showWarningMessage(
|
||||
'Invalid workspace:',
|
||||
{
|
||||
modal: true,
|
||||
detail:
|
||||
'' +
|
||||
vscode.workspace
|
||||
.getConfiguration()
|
||||
.get('WAMR-IDE.configWorkspace') +
|
||||
'',
|
||||
},
|
||||
_ok
|
||||
)
|
||||
.then(item => {
|
||||
if (item === _ok) {
|
||||
vscode.commands.executeCommand(
|
||||
'wamride.changeWorkspace'
|
||||
);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
});
|
||||
} else {
|
||||
/* get all directories within directory, ignore files */
|
||||
let directoryArrDirent, directoryArr;
|
||||
@ -354,7 +615,7 @@ export async function activate(context: vscode.ExtensionContext) {
|
||||
});
|
||||
} catch (err) {
|
||||
vscode.window.showErrorMessage(
|
||||
'Read from current workspace failed, please check.'
|
||||
'Read projects from current workspace failed.'
|
||||
);
|
||||
}
|
||||
|
||||
@ -363,27 +624,52 @@ export async function activate(context: vscode.ExtensionContext) {
|
||||
.filter(dirent => dirent.isDirectory())
|
||||
.map(dirent => dirent.name);
|
||||
|
||||
vscode.window
|
||||
.showQuickPick(directoryArr, {
|
||||
title: 'Select project',
|
||||
placeHolder: 'Please select project',
|
||||
})
|
||||
.then(option => {
|
||||
if (!option) {
|
||||
return;
|
||||
}
|
||||
let projFilesArr = directoryArr.filter(obj => {
|
||||
if (checkIfWasmProj(path.join(curWorkspace, obj))) {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
let _path = curWorkspace.concat(
|
||||
OS_PLATFORM === 'win32'
|
||||
? '\\'
|
||||
: OS_PLATFORM === 'linux'
|
||||
? '/'
|
||||
: '',
|
||||
option
|
||||
);
|
||||
if (projFilesArr.length === 0) {
|
||||
vscode.window
|
||||
.showWarningMessage(
|
||||
'Current workspace is empty, please create your project firstly.',
|
||||
_create,
|
||||
_cancle
|
||||
)
|
||||
.then(item => {
|
||||
if (item === _create) {
|
||||
vscode.commands.executeCommand(
|
||||
'wamride.newProject'
|
||||
);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
});
|
||||
} else {
|
||||
vscode.window
|
||||
.showQuickPick(projFilesArr, {
|
||||
title: 'Select project',
|
||||
placeHolder: 'Please select project',
|
||||
})
|
||||
.then(option => {
|
||||
if (!option) {
|
||||
return;
|
||||
}
|
||||
|
||||
openWindoWithSituation(vscode.Uri.file(_path));
|
||||
});
|
||||
let _path = curWorkspace.concat(
|
||||
OS_PLATFORM === 'win32'
|
||||
? '\\'
|
||||
: OS_PLATFORM === 'linux'
|
||||
? '/'
|
||||
: '',
|
||||
option
|
||||
);
|
||||
|
||||
/* open the selected wasm project */
|
||||
openWindoWithSituation(vscode.Uri.file(_path));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -438,11 +724,15 @@ export function writeIntoConfigFile(
|
||||
excludeFileArr: string[],
|
||||
buildArgs?: BuildArgs
|
||||
) {
|
||||
let jsonStr = JSON.stringify({
|
||||
include_paths: includePathArr,
|
||||
exclude_files: excludeFileArr,
|
||||
build_args: buildArgs ? buildArgs : '{}',
|
||||
});
|
||||
let jsonStr = JSON.stringify(
|
||||
{
|
||||
include_paths: includePathArr,
|
||||
exclude_files: excludeFileArr,
|
||||
build_args: buildArgs ? buildArgs : '{}',
|
||||
},
|
||||
null,
|
||||
'\t'
|
||||
);
|
||||
|
||||
let prjConfigDir = path.join(currentPrjDir, '.wamr');
|
||||
let configFilePath = path.join(prjConfigDir, 'compilation_config.json');
|
||||
@ -595,3 +885,44 @@ function getAllSrcFiles(_path: string) {
|
||||
vscode.window.showErrorMessage(error as string);
|
||||
}
|
||||
}
|
||||
|
||||
function checkIfBuildSuccess(): Boolean {
|
||||
try {
|
||||
let wasmExist = false;
|
||||
const entries = fileSystem.readdirSync(
|
||||
path.join(currentPrjDir, 'build'),
|
||||
{
|
||||
withFileTypes: true,
|
||||
}
|
||||
);
|
||||
|
||||
entries.map(e => {
|
||||
if (e.name.match('(.wasm)$')) {
|
||||
wasmExist = true;
|
||||
}
|
||||
});
|
||||
|
||||
return wasmExist;
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function checkIfWasmProj(_path: string): Boolean {
|
||||
try {
|
||||
let isWasmProj = false;
|
||||
const entries = fileSystem.readdirSync(_path, {
|
||||
withFileTypes: true,
|
||||
});
|
||||
|
||||
entries.map(e => {
|
||||
if (e.isDirectory() && e.name === '.wamr') {
|
||||
isWasmProj = true;
|
||||
}
|
||||
});
|
||||
|
||||
return isWasmProj;
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -7,13 +7,6 @@ import * as vscode from 'vscode';
|
||||
import * as os from 'os';
|
||||
import { TargetConfigPanel } from './view/TargetConfigPanel';
|
||||
|
||||
interface WasmTaskDefinition extends vscode.TaskDefinition {
|
||||
/**
|
||||
* The build flavor.
|
||||
*/
|
||||
flavor: string;
|
||||
}
|
||||
|
||||
export interface OwnShellOption {
|
||||
cmd: string;
|
||||
options: vscode.ShellExecutionOptions;
|
||||
@ -28,115 +21,189 @@ export class WasmTaskProvider implements vscode.TaskProvider {
|
||||
buildShellOption: OwnShellOption | undefined;
|
||||
runShellOption: OwnShellOption | undefined;
|
||||
debugShellOption: OwnShellOption | undefined;
|
||||
destroyShellOption: OwnShellOption | undefined;
|
||||
|
||||
private wasmPromise: Thenable<vscode.Task[]> | undefined = undefined;
|
||||
|
||||
public provideTasks(): Thenable<vscode.Task[]> | undefined {
|
||||
let targetName =
|
||||
TargetConfigPanel.BUILD_ARGS.output_file_name.split('.')[0];
|
||||
if (!this.wasmPromise) {
|
||||
/* target name is used for generated aot target */
|
||||
let targetName =
|
||||
TargetConfigPanel.BUILD_ARGS.output_file_name.split('.')[0];
|
||||
|
||||
if (os.platform() === 'linux') {
|
||||
/* build */
|
||||
this.buildShellOption = {
|
||||
cmd: 'bash',
|
||||
options: {
|
||||
executable: this._script.get('buildScript'),
|
||||
shellArgs: [targetName],
|
||||
},
|
||||
};
|
||||
if (os.platform() === 'linux' || os.platform() === 'win32') {
|
||||
/* build */
|
||||
this.buildShellOption = {
|
||||
cmd:
|
||||
os.platform() === 'linux'
|
||||
? 'bash'
|
||||
: (this._script.get('buildScript') as string),
|
||||
options: {
|
||||
executable: this._script.get('buildScript'),
|
||||
shellArgs: [targetName, os.platform()],
|
||||
},
|
||||
};
|
||||
|
||||
/* debug */
|
||||
this.debugShellOption = {
|
||||
cmd: 'bash',
|
||||
options: {
|
||||
executable: this._script.get('debugScript'),
|
||||
shellArgs: [targetName],
|
||||
},
|
||||
};
|
||||
/* debug */
|
||||
this.debugShellOption = {
|
||||
cmd:
|
||||
os.platform() === 'linux'
|
||||
? 'bash'
|
||||
: (this._script.get('debugScript') as string),
|
||||
options: {
|
||||
executable: this._script.get('debugScript'),
|
||||
shellArgs: [targetName],
|
||||
},
|
||||
};
|
||||
|
||||
/* run */
|
||||
this.runShellOption = {
|
||||
cmd: 'bash',
|
||||
options: {
|
||||
executable: this._script.get('runScript'),
|
||||
shellArgs: [targetName],
|
||||
},
|
||||
};
|
||||
} else if (os.platform() === 'win32') {
|
||||
this.buildShellOption = {
|
||||
cmd: this._script.get('buildScript') as string,
|
||||
options: {
|
||||
executable: this._script.get('buildScript'),
|
||||
shellArgs: [targetName],
|
||||
},
|
||||
};
|
||||
/* debug */
|
||||
this.debugShellOption = {
|
||||
cmd: this._script.get('debugScript') as string,
|
||||
options: {
|
||||
executable: this._script.get('debugScript'),
|
||||
shellArgs: [targetName],
|
||||
},
|
||||
};
|
||||
/* run */
|
||||
this.runShellOption = {
|
||||
cmd: this._script.get('runScript') as string,
|
||||
options: {
|
||||
executable: this._script.get('runScript'),
|
||||
shellArgs: [targetName],
|
||||
},
|
||||
};
|
||||
} else {
|
||||
this.buildShellOption = {
|
||||
cmd: "echo 'os platform is not supported yet'",
|
||||
options: {},
|
||||
};
|
||||
/* run */
|
||||
this.runShellOption = {
|
||||
cmd:
|
||||
os.platform() === 'linux'
|
||||
? 'bash'
|
||||
: (this._script.get('runScript') as string),
|
||||
options: {
|
||||
executable: this._script.get('runScript'),
|
||||
shellArgs: [targetName],
|
||||
},
|
||||
};
|
||||
|
||||
this.debugShellOption = {
|
||||
cmd: "echo 'os platform is not supported yet'",
|
||||
options: {},
|
||||
};
|
||||
/* destroy */
|
||||
/* run */
|
||||
this.destroyShellOption = {
|
||||
cmd:
|
||||
os.platform() === 'linux'
|
||||
? 'bash'
|
||||
: (this._script.get('destroyScript') as string),
|
||||
options: {
|
||||
executable: this._script.get('destroyScript'),
|
||||
shellArgs: [targetName],
|
||||
},
|
||||
};
|
||||
} else {
|
||||
this.buildShellOption = {
|
||||
cmd: "echo 'os platform is not supported yet'",
|
||||
options: {},
|
||||
};
|
||||
|
||||
this.runShellOption = {
|
||||
cmd: "echo 'os platform is not supported yet'",
|
||||
options: {},
|
||||
};
|
||||
this.debugShellOption = {
|
||||
cmd: "echo 'os platform is not supported yet'",
|
||||
options: {},
|
||||
};
|
||||
|
||||
this.runShellOption = {
|
||||
cmd: "echo 'os platform is not supported yet'",
|
||||
options: {},
|
||||
};
|
||||
|
||||
this.destroyShellOption = {
|
||||
cmd: "echo 'os platform is not supported yet'",
|
||||
options: {},
|
||||
};
|
||||
}
|
||||
|
||||
this.wasmPromise = Promise.resolve([
|
||||
new vscode.Task(
|
||||
{ type: 'wasm' },
|
||||
vscode.TaskScope.Workspace,
|
||||
'Wasm',
|
||||
this._type.get('Build') as string,
|
||||
new vscode.ShellExecution(
|
||||
this.buildShellOption.cmd,
|
||||
this.buildShellOption.options
|
||||
)
|
||||
),
|
||||
|
||||
new vscode.Task(
|
||||
{ type: 'wasm' },
|
||||
vscode.TaskScope.Workspace,
|
||||
'Wasm',
|
||||
this._type.get('Run') as string,
|
||||
new vscode.ShellExecution(
|
||||
this.runShellOption.cmd,
|
||||
this.runShellOption.options
|
||||
)
|
||||
),
|
||||
|
||||
new vscode.Task(
|
||||
{ type: 'wasm' },
|
||||
vscode.TaskScope.Workspace,
|
||||
'Wasm',
|
||||
this._type.get('Debug') as string,
|
||||
new vscode.ShellExecution(
|
||||
this.debugShellOption.cmd,
|
||||
this.debugShellOption.options
|
||||
)
|
||||
),
|
||||
|
||||
new vscode.Task(
|
||||
{ type: 'wasm' },
|
||||
vscode.TaskScope.Workspace,
|
||||
'Wasm-Container-Before-Build',
|
||||
this._type.get('Destroy') as string,
|
||||
new vscode.ShellExecution(
|
||||
this.destroyShellOption.cmd,
|
||||
this.destroyShellOption.options
|
||||
)
|
||||
),
|
||||
|
||||
new vscode.Task(
|
||||
{ type: 'wasm' },
|
||||
vscode.TaskScope.Workspace,
|
||||
'Wasm-Container-Before-Debug',
|
||||
this._type.get('Destroy') as string,
|
||||
new vscode.ShellExecution(
|
||||
this.destroyShellOption.cmd,
|
||||
this.destroyShellOption.options
|
||||
)
|
||||
),
|
||||
|
||||
new vscode.Task(
|
||||
{ type: 'wasm' },
|
||||
vscode.TaskScope.Workspace,
|
||||
'Wasm-Container-Before-Run',
|
||||
this._type.get('Destroy') as string,
|
||||
new vscode.ShellExecution(
|
||||
this.destroyShellOption.cmd,
|
||||
this.destroyShellOption.options
|
||||
)
|
||||
),
|
||||
|
||||
new vscode.Task(
|
||||
{ type: 'wasm' },
|
||||
vscode.TaskScope.Workspace,
|
||||
'Wasm-Container-After-Build',
|
||||
this._type.get('Destroy') as string,
|
||||
new vscode.ShellExecution(
|
||||
this.destroyShellOption.cmd,
|
||||
this.destroyShellOption.options
|
||||
)
|
||||
),
|
||||
|
||||
new vscode.Task(
|
||||
{ type: 'wasm' },
|
||||
vscode.TaskScope.Workspace,
|
||||
'Wasm-Container-After-Debug',
|
||||
this._type.get('Destroy') as string,
|
||||
new vscode.ShellExecution(
|
||||
this.destroyShellOption.cmd,
|
||||
this.destroyShellOption.options
|
||||
)
|
||||
),
|
||||
|
||||
new vscode.Task(
|
||||
{ type: 'wasm' },
|
||||
vscode.TaskScope.Workspace,
|
||||
'Wasm-Container-After-Run',
|
||||
this._type.get('Destroy') as string,
|
||||
new vscode.ShellExecution(
|
||||
this.destroyShellOption.cmd,
|
||||
this.destroyShellOption.options
|
||||
)
|
||||
),
|
||||
]);
|
||||
}
|
||||
|
||||
this.wasmPromise = Promise.resolve([
|
||||
new vscode.Task(
|
||||
{ type: 'wasm' },
|
||||
vscode.TaskScope.Workspace,
|
||||
'Wasm',
|
||||
this._type.get('Build') as string,
|
||||
new vscode.ShellExecution(
|
||||
this.buildShellOption.cmd,
|
||||
this.buildShellOption.options
|
||||
)
|
||||
),
|
||||
|
||||
new vscode.Task(
|
||||
{ type: 'wasm' },
|
||||
vscode.TaskScope.Workspace,
|
||||
'Wasm',
|
||||
this._type.get('Run') as string,
|
||||
new vscode.ShellExecution(
|
||||
this.runShellOption.cmd,
|
||||
this.runShellOption.options
|
||||
)
|
||||
),
|
||||
|
||||
new vscode.Task(
|
||||
{ type: 'wasm' },
|
||||
vscode.TaskScope.Workspace,
|
||||
'Wasm',
|
||||
this._type.get('Debug') as string,
|
||||
new vscode.ShellExecution(
|
||||
this.debugShellOption.cmd,
|
||||
this.debugShellOption.options
|
||||
)
|
||||
),
|
||||
]);
|
||||
return this.wasmPromise;
|
||||
}
|
||||
|
||||
|
||||
@ -81,3 +81,16 @@ export function WriteIntoFileAsync(
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
export function CheckIfDirectoryExist(path: string): boolean {
|
||||
try {
|
||||
if (fileSystem.existsSync(path)) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} catch (err) {
|
||||
vscode.window.showErrorMessage(err as string);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -6,7 +6,6 @@
|
||||
import * as vscode from 'vscode';
|
||||
import * as path from 'path';
|
||||
import * as fs from 'fs';
|
||||
import * as os from 'os';
|
||||
import { readFromConfigFile, writeIntoConfigFile } from '../extension';
|
||||
import { getUri } from '../utilities/getUri';
|
||||
|
||||
@ -151,26 +150,6 @@ export class TargetConfigPanel {
|
||||
'configbuildtarget.js',
|
||||
]);
|
||||
|
||||
/* get config build target values and set into webview page */
|
||||
let configData, buildArgObj;
|
||||
let _output_file_name,
|
||||
_init_memory_size,
|
||||
_max_memory_size,
|
||||
_stack_size,
|
||||
_exported_symbols;
|
||||
|
||||
if (readFromConfigFile() !== '') {
|
||||
configData = JSON.parse(readFromConfigFile());
|
||||
buildArgObj = configData['build_args'];
|
||||
if (buildArgObj !== undefined) {
|
||||
_output_file_name = buildArgObj['output_file_name'];
|
||||
_init_memory_size = buildArgObj['init_memory_size'];
|
||||
_max_memory_size = buildArgObj['max_memory_size'];
|
||||
_stack_size = buildArgObj['stack_size'];
|
||||
_exported_symbols = buildArgObj['exported_symbols'];
|
||||
}
|
||||
}
|
||||
|
||||
const resourcePath = path.join(extensionUri.fsPath, templatePath);
|
||||
let html = fs.readFileSync(resourcePath, 'utf-8');
|
||||
html = html
|
||||
@ -179,23 +158,23 @@ export class TargetConfigPanel {
|
||||
.replace(/(\${styleUri})/, styleUri.toString())
|
||||
.replace(
|
||||
/(\${output_file_val})/,
|
||||
_output_file_name === undefined ? '' : _output_file_name
|
||||
TargetConfigPanel.BUILD_ARGS.output_file_name
|
||||
)
|
||||
.replace(
|
||||
/(\${initial_mem_size_val})/,
|
||||
_init_memory_size === undefined ? '' : _init_memory_size
|
||||
TargetConfigPanel.BUILD_ARGS.init_memory_size
|
||||
)
|
||||
.replace(
|
||||
/(\${max_mem_size_val})/,
|
||||
_max_memory_size === undefined ? '' : _max_memory_size
|
||||
TargetConfigPanel.BUILD_ARGS.max_memory_size
|
||||
)
|
||||
.replace(
|
||||
/(\${stack_size_val})/,
|
||||
_stack_size === undefined ? '' : _stack_size
|
||||
TargetConfigPanel.BUILD_ARGS.stack_size
|
||||
)
|
||||
.replace(
|
||||
/(\${exported_symbols_val})/,
|
||||
_exported_symbols === undefined ? '' : _exported_symbols
|
||||
TargetConfigPanel.BUILD_ARGS.exported_symbols
|
||||
);
|
||||
|
||||
return html;
|
||||
|
||||
Reference in New Issue
Block a user