From 5f5e8758ab44d9a20bf2d42bcb6233ba24f501f0 Mon Sep 17 00:00:00 2001 From: gator96100 Date: Tue, 29 Dec 2020 17:22:09 +0100 Subject: [PATCH] Setup for WSL/Linux done --- .gitignore | 5 +- .vscode/setup.sh | 81 ++++++++++++++++++++--- .vscode/{ => templates}/launch_linux.json | 0 .vscode/{ => templates}/launch_ps.json | 0 .vscode/{ => templates}/launch_wsl.json | 0 .vscode/{ => templates}/tasks_linux.json | 0 .vscode/{ => templates}/tasks_ps.json | 0 .vscode/{ => templates}/tasks_wsl.json | 0 8 files changed, 75 insertions(+), 11 deletions(-) rename .vscode/{ => templates}/launch_linux.json (100%) rename .vscode/{ => templates}/launch_ps.json (100%) rename .vscode/{ => templates}/launch_wsl.json (100%) rename .vscode/{ => templates}/tasks_linux.json (100%) rename .vscode/{ => templates}/tasks_ps.json (100%) rename .vscode/{ => templates}/tasks_wsl.json (100%) diff --git a/.gitignore b/.gitignore index 1b27c52a3..125dc536e 100644 --- a/.gitignore +++ b/.gitignore @@ -110,6 +110,5 @@ fpga_version_info.c *.tmp #VSCode files -!.vscode/*.json -.vscode/launch.json -.vscode/tasks.json \ No newline at end of file +!.vscode/templates/*.json +!.vscode/extensions.json \ No newline at end of file diff --git a/.vscode/setup.sh b/.vscode/setup.sh index ee8476d11..93f7144f2 100644 --- a/.vscode/setup.sh +++ b/.vscode/setup.sh @@ -30,7 +30,7 @@ export DeviceMem="512" VSCODEPATH=$(dirname "$0") -function get_serial_port { +function setup_serial_port { if [ -z "$SerialPort" ]; then pm3list=$($VSCODEPATH/../pm3 --list 2>/dev/null) #Use first port listed @@ -40,26 +40,91 @@ function get_serial_port { exit 1 fi fi - echo "Using $SerialPort as port" } +function setup_gdb_linux { + if [ -z "$DebuggerPath" ]; then + export DebuggerPath="/usr/bin/gdb" + fi + if [ ! -x "$DebuggerPath" ]; then + echo >&2 "[!!] gdb not found, please set DebuggerPath manually" + exit 1 + fi +} + +function setup_jlink_linux { + if [ -z "$JLinkServerPath" ]; then + export JLinkServerPath="/opt/SEGGER/JLink/JLinkGDBServerCLExe" + fi + if [ ! -x "$JLinkServerPath" ]; then + echo >&2 "[!!] JLinkGDBServerCLExe not found, please set JLinkServerPath manually" + exit 1 + fi + +} + +function setup_jlink_wsl { + if [ -z "$JLinkServerPath" ]; then + export JLinkServerPath="/mnt/c/Program Files (x86)/SEGGER/JLink/JLinkGDBServerCL.exe" + fi + if [ ! -x "$JLinkServerPath" ]; then + echo >&2 "[!!] JLinkGDBServerCLExe not found, please set JLinkServerPath manually" + exit 1 + fi +} + +function setup_wsl { + setup_serial_port + setup_gdb_linux + setup_jlink_wsl + cp "$VSCODEPATH/templates/tasks_wsl.json" "$VSCODEPATH/tasks.json" + envsubst <"$VSCODEPATH/templates/launch_wsl.json" > "$VSCODEPATH/launch.json" +} + +function setup_linux { + setup_serial_port + setup_gdb_linux + setup_jlink_linux + cp "$VSCODEPATH/templates/tasks_linux.json" "$VSCODEPATH/tasks.json" + envsubst <"$VSCODEPATH/templates/launch_linux.json" > "$VSCODEPATH/launch.json" +} + +function setup_ps { + setup_serial_port + if [ -z "$JLinkServerPath" ]; then + export JLinkServerPath="c/Program Files (x86)/SEGGER/JLink/JLinkGDBServerCL.exe" + fi +} + +if [ -f "$VSCODEPATH/launch.json" ] || [ -f "$VSCODEPATH/tasks.json" ]; then + read -p "Existing configuration found, do you want to override it? " -n 1 -r + if [[ $REPLY =~ ^[Yy]$ ]] + then + rm "$VSCODEPATH/launch.json.bak" 2> /dev/null + rm "$VSCODEPATH/tasks.json.bak" 2> /dev/null + mv "$VSCODEPATH/launch.json" "$VSCODEPATH/launch.json.bak" 2> /dev/null + mv "$VSCODEPATH/tasks.json" "$VSCODEPATH/tasks.json.bak" 2> /dev/null + else + echo >&2 "[!!] user abort" + exit 1 + fi + +fi HOSTOS=$(uname | awk '{print toupper($0)}') if [ "$HOSTOS" = "LINUX" ]; then if uname -a|grep -q Microsoft; then - echo "WSL" + setup_wsl else - echo "LINUX" + setup_linux fi elif [ "$HOSTOS" = "DARWIN" ]; then echo >&2 "[!!] MacOS not supported, sorry!" exit 1 elif [[ "$HOSTOS" =~ MINGW(32|64)_NT* ]]; then - echo "ProxSpace" + setup_ps else echo >&2 "[!!] Host OS not recognized, abort: $HOSTOS" exit 1 -fi - -get_serial_port \ No newline at end of file +fi \ No newline at end of file diff --git a/.vscode/launch_linux.json b/.vscode/templates/launch_linux.json similarity index 100% rename from .vscode/launch_linux.json rename to .vscode/templates/launch_linux.json diff --git a/.vscode/launch_ps.json b/.vscode/templates/launch_ps.json similarity index 100% rename from .vscode/launch_ps.json rename to .vscode/templates/launch_ps.json diff --git a/.vscode/launch_wsl.json b/.vscode/templates/launch_wsl.json similarity index 100% rename from .vscode/launch_wsl.json rename to .vscode/templates/launch_wsl.json diff --git a/.vscode/tasks_linux.json b/.vscode/templates/tasks_linux.json similarity index 100% rename from .vscode/tasks_linux.json rename to .vscode/templates/tasks_linux.json diff --git a/.vscode/tasks_ps.json b/.vscode/templates/tasks_ps.json similarity index 100% rename from .vscode/tasks_ps.json rename to .vscode/templates/tasks_ps.json diff --git a/.vscode/tasks_wsl.json b/.vscode/templates/tasks_wsl.json similarity index 100% rename from .vscode/tasks_wsl.json rename to .vscode/templates/tasks_wsl.json