Skip to content

Commit 65fb372

Browse files
committed
Improve zephyr folder versioning support
Signed-off-by: paulober <[email protected]>
1 parent 53f5327 commit 65fb372

File tree

2 files changed

+221
-83
lines changed

2 files changed

+221
-83
lines changed

src/utils/projectGeneration/projectZephyr.mts

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import Logger, { LoggerSource } from "../../logger.mjs";
66
import { unknownErrorToString } from "../errorHelper.mjs";
77
import { extensionName } from "../../commands/command.mjs";
88
import { commands, Uri, window, workspace } from "vscode";
9-
import { CURRENT_WGET_VERSION } from "../sharedConstants.mjs";
109
import type { VersionBundle } from "../versionBundles.mjs";
1110
import { HOME_VAR } from "../../settings.mjs";
1211
import { TextEncoder } from "util";
@@ -34,6 +33,7 @@ import {
3433
GET_WEST_PATH,
3534
GET_ZEPHYR_WORKSPACE_PATH,
3635
} from "../../commands/cmdIds.mjs";
36+
import { getZephyrSDKVersion, getZephyrVersion } from "../setupZephyr.mjs";
3737

3838
// Kconfig snippets
3939
const shellWifiKconfig: string = `CONFIG_WIFI_LOG_LEVEL_ERR=y
@@ -96,28 +96,49 @@ async function generateVSCodeConfig(
9696
return false;
9797
}
9898

99+
const zephyrVersion = await getZephyrVersion();
100+
if (zephyrVersion === undefined) {
101+
Logger.error(LoggerSource.projectZephyr, "Failed to get Zephyr version");
102+
void window.showErrorMessage(
103+
"Failed to detect the currently installed Zephyr version. Please delete `~/.pico-sdk/zephyr_workspace` and try again."
104+
);
105+
106+
return false;
107+
}
108+
109+
const zephyrSdkVersion = await getZephyrSDKVersion(zephyrVersion);
110+
if (zephyrSdkVersion === undefined) {
111+
Logger.error(
112+
LoggerSource.projectZephyr,
113+
"Failed to get Zephyr SDK version"
114+
);
115+
void window.showErrorMessage(
116+
"Failed to detect the currently installed Zephyr SDK version. Please delete `~/.pico-sdk/zephyr_workspace` and try again."
117+
);
118+
119+
return false;
120+
}
121+
99122
const cppProperties = {
100123
version: 4,
101124
configurations: [
102125
{
103126
name: "Zephyr",
104127
intelliSenseMode: "linux-gcc-arm",
105-
compilerPath:
106-
// TODO: maybe move into command (the part before the executable) / test if not .exe works on win32
107-
"${userHome}/.pico-sdk/zephyr_workspace/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc",
128+
compilerPath: `\${userHome}/.pico-sdk/zephyr_workspace/zephyr-sdk-${zephyrSdkVersion}/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc`,
108129
includePath: [
109130
"${workspaceFolder}/**",
110131
"${workspaceFolder}/build/zephyr/include",
111-
"${userHome}/.pico-sdk/zephyr_workspace/zephyr/include",
112-
"${userHome}/.pico-sdk/zephyr_workspace/zephyr/modules/cmsis_6",
113-
"${userHome}/.pico-sdk/zephyr_workspace/zephyr/modules/hal_infineon",
114-
"${userHome}/.pico-sdk/zephyr_workspace/zephyr/modules/hal_rpi_pico",
132+
`\${userHome}/.pico-sdk/zephyr_workspace/zephyr-${zephyrVersion}/include`,
133+
`\${userHome}/.pico-sdk/zephyr_workspace/zephyr-${zephyrVersion}/modules/cmsis_6`,
134+
`\${userHome}/.pico-sdk/zephyr_workspace/zephyr-${zephyrVersion}/modules/hal_infineon`,
135+
`\${userHome}/.pico-sdk/zephyr_workspace/zephyr-${zephyrVersion}/modules/hal_rpi_pico`,
115136
],
116137
compileCommands: "${workspaceFolder}/build/compile_commands.json",
117138
cppStandard: "gnu++20",
118139
cStandard: "gnu17",
119140
forcedInclude: [
120-
"${userHome}/.pico-sdk/zephyr_workspace/zephyr/include/zephyr/devicetree.h",
141+
`\${userHome}/.pico-sdk/zephyr_workspace/zephyr-${zephyrVersion}/include/zephyr/devicetree.h`,
121142
"${workspaceFolder}/build/zephyr/include/generated/zephyr/autoconf.h",
122143
"${workspaceFolder}/build/zephyr/include/generated/zephyr/version.h",
123144
],
@@ -183,7 +204,7 @@ async function generateVSCodeConfig(
183204
"terminal.integrated.env.windows": {
184205
// remove gperf and dtc for now
185206
// \${env:USERPROFILE}/.pico-sdk/dtc/${CURRENT_DTC_VERSION}/bin;\${env:USERPROFILE}/.pico-sdk/gperf/${CURRENT_GPERF_VERSION}
186-
Path: `\${env:USERPROFILE}/.pico-sdk/wget/${CURRENT_WGET_VERSION};\${env:USERPROFILE}/.pico-sdk/7zip;\${env:Path};`,
207+
Path: `\${env:USERPROFILE}/.pico-sdk/7zip;\${env:Path};`,
187208
},
188209
"terminal.integrated.env.osx": {
189210
PATH: "${env:PATH}:",

0 commit comments

Comments
 (0)