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