Skip to content

Commit

Permalink
Merge pull request #315 from github0null/dev
Browse files Browse the repository at this point in the history
v3.15.1 update
  • Loading branch information
github0null committed Mar 6, 2024
2 parents cbcfc9d + 011b7b1 commit ab38c15
Show file tree
Hide file tree
Showing 8 changed files with 88 additions and 15 deletions.
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,15 @@ All notable version changes will be recorded in this file.

***

### [v3.15.1] update

**Optimize**:
- `GCC Compiler Driver`: Auto select gcc/g++ for c/c++ source files; Support new linker option `Linker Driver`.
- `MDK Project Import`: Support import keil project's User Commands (BeforeMake and AfterMake commands).
- `RightClick Menu`: Optimize menu item order.

***

### [v3.15.0] update

**New**:
Expand Down
2 changes: 1 addition & 1 deletion lang/arm.gcc.verify.json
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@
"description.zh-cn": "链接器选项",
"type": "object",
"properties": {
"linker-driver": {
"$toolName": {
"type": "string",
"default": "auto",
"description": "Linker Driver",
Expand Down
2 changes: 1 addition & 1 deletion lang/mips.mti.gcc.verify.json
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,7 @@
"description.zh-cn": "链接器选项",
"type": "object",
"properties": {
"linker-driver": {
"$toolName": {
"type": "string",
"default": "auto",
"description": "Linker Driver",
Expand Down
2 changes: 1 addition & 1 deletion lang/riscv.gcc.verify.json
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,7 @@
"description.zh-cn": "链接器选项",
"type": "object",
"properties": {
"linker-driver": {
"$toolName": {
"type": "string",
"default": "auto",
"description": "Linker Driver",
Expand Down
18 changes: 9 additions & 9 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
"homepage": "https://em-ide.com",
"license": "MIT",
"description": "A mcu development environment for 8051/AVR/STM8/Cortex-M/MIPS/RISC-V",
"version": "3.15.0",
"version": "3.15.1",
"preview": false,
"engines": {
"vscode": "^1.67.0"
Expand Down Expand Up @@ -1272,12 +1272,12 @@
{
"command": "_cl.eide.project.cppcheck.check_all",
"when": "viewItem == SOLUTION && view == cl.eide.view.projects",
"group": "z_group@0"
"group": "z_group0@0"
},
{
"command": "_cl.eide.project.cppcheck.clear_all",
"when": "viewItem == SOLUTION && view == cl.eide.view.projects",
"group": "z_group@1"
"group": "z_group0@1"
},


Expand All @@ -1304,17 +1304,17 @@
{
"command": "_cl.eide.project.source.modify.path",
"when": "viewItem == PROJECT || viewItem == V_FOLDER || viewItem == V_FOLDER_ROOT || viewItem == V_FILE_ITEM || viewItem == V_EXCFILE_ITEM && view == cl.eide.view.projects",
"group": "2_modify"
"group": "z_group0@1"
},
{
"command": "_cl.eide.project.source.modify.exclude_list",
"when": "viewItem == PROJECT && view == cl.eide.view.projects",
"group": "2_modify"
"group": "z_group0@1"
},
{
"command": "_cl.eide.project.modify.files.options",
"when": "viewItem == PROJECT && view == cl.eide.view.projects",
"group": "z_group@1"
"group": "z_group0@1"
},


Expand Down Expand Up @@ -1391,17 +1391,17 @@
{
"command": "_cl.eide.project.source.file.modify.extraArgs",
"when": "viewItem == FILE_ITEM || viewItem == V_FILE_ITEM && view == cl.eide.view.projects",
"group": "z_group@1"
"group": "z_group0@1"
},
{
"command": "_cl.eide.project.source.folder.modify.extraArgs",
"when": "viewItem == FOLDER || viewItem == FOLDER_ROOT || viewItem == V_FOLDER || viewItem == V_FOLDER_ROOT && view == cl.eide.view.projects",
"group": "z_group@1"
"group": "z_group0@1"
},
{
"command": "_cl.eide.project.source.file.show.dir",
"when": "viewItem == OUTPUT_FILE_ITEM || viewItem == FILE_ITEM || viewItem == EXCFILE_ITEM || viewItem == V_FILE_ITEM || viewItem == V_EXCFILE_ITEM && view == cl.eide.view.projects",
"group": "z_group@1"
"group": "z_group1@1"
},


Expand Down
2 changes: 1 addition & 1 deletion src/CodeBuilder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -459,7 +459,7 @@ export abstract class CodeBuilder {
// select linker driver for gcc family toolchain
if (toolchain.categoryName.toLowerCase() == 'gcc' &&
toolchain.name != 'ANY_GCC') {
let tool = builderOptions.options?.linker['linker-driver'];
let tool = builderOptions.options?.linker['$toolName'];
// we need to detect source files type ?
if (tool == 'auto' || tool == undefined || tool == null) {
let hascpp = builderOptions.sourceList
Expand Down
14 changes: 12 additions & 2 deletions src/EIDEProjectExplorer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3045,6 +3045,11 @@ class ProjectDataProvider implements vscode.TreeDataProvider<ProjTreeItem>, vsco
return baseOpts;
}

const replaceUserTaskTmpVar = (t: any) => {
const reKeilPrjDir = baseInfo.rootFolder.ToRelativeLocalPath(keilPrjFile.dir) || keilPrjFile.dir;
t.command = t.command.replace('$<cd:mdk-proj-dir>', `cd .\\${reKeilPrjDir}`);
}

// init all targets
for (const keilTarget of targets) {

Expand Down Expand Up @@ -3072,7 +3077,8 @@ class ProjectDataProvider implements vscode.TreeDataProvider<ProjTreeItem>, vsco
defIncList.push(baseInfo.rootFolder.ToRelativePath(absPath) || absPath);
}
// import builder options
const opts = mergeBuilderOpts(toolchain.getDefaultConfig(), keilCompileConf.optionsGroup[keilCompileConf.toolchain]);
const opts: ICompileOptions = mergeBuilderOpts(toolchain.getDefaultConfig(), keilCompileConf.optionsGroup[keilCompileConf.toolchain]);
// write to file
const cfgFile = File.fromArray([baseInfo.rootFolder.path, AbstractProject.EIDE_DIR, `${keilTarget.name.toLowerCase()}.${toolchain.configName}`]);
cfgFile.Write(JSON.stringify(opts, undefined, 4));
}
Expand All @@ -3097,7 +3103,11 @@ class ProjectDataProvider implements vscode.TreeDataProvider<ProjTreeItem>, vsco

// import builder options
const toolchain = ToolchainManager.getInstance().getToolchain('ARM', keilCompileConf.toolchain);
const opts = mergeBuilderOpts(toolchain.getDefaultConfig(), keilCompileConf.optionsGroup[keilCompileConf.toolchain]);
const opts: ICompileOptions = mergeBuilderOpts(toolchain.getDefaultConfig(), keilCompileConf.optionsGroup[keilCompileConf.toolchain]);
opts.beforeBuildTasks?.forEach((t) => replaceUserTaskTmpVar(t));
opts.afterBuildTasks?.forEach((t) => replaceUserTaskTmpVar(t));

// write to file
const cfgFile = File.fromArray([baseInfo.rootFolder.path, AbstractProject.EIDE_DIR, `${keilTarget.name.toLowerCase()}.${toolchain.configName}`]);
cfgFile.Write(JSON.stringify(opts, undefined, 4));
}
Expand Down
54 changes: 54 additions & 0 deletions src/KeilXmlParser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -699,6 +699,60 @@ class ARMParser extends KeilParser<KeilARMOption> {
}
}

// parse builder tasks
{
const commonOption = targetOptionObj.TargetCommonOption;
const eideOption = option.optionsGroup[option.toolchain];

if (eideOption.beforeBuildTasks == undefined)
eideOption.beforeBuildTasks = [];
if (eideOption.afterBuildTasks == undefined)
eideOption.afterBuildTasks = [];

// (%|#|@|\!|\$)
const replaceMdkEnv = (cmd: string) => cmd
.replace(/\$(H|L)\b/g, '${OutDir}\\')
.replace(/@(H|L)\b/g, '${ProjectName}')
.replace(/#H\b/g, '${ExecutableName}.hex')
.replace(/%H\b/g, '${ProjectName}.hex')
.replace(/\!H\b/g, '.\\${OutDirBase}\\${ProjectName}.hex')
.replace(/#L\b/g, '${ExecutableName}.axf')
.replace(/%L\b/g, '${ProjectName}.axf')
.replace(/\!L\b/g, '.\\${OutDirBase}\\${ProjectName}.axf');

// BeforeMake
const beforeMake = commonOption.BeforeMake;
if (beforeMake) {
for (let idx = 1; idx < 3; idx++) {
let cmd = beforeMake[`UserProg${idx}Name`];
if (cmd) {
eideOption.beforeBuildTasks.push({
"name": cmd,
"command": `$<cd:mdk-proj-dir> && ${replaceMdkEnv(cmd)}`,
"disable": beforeMake[`RunUserProg${idx}`] != '1',
"abortAfterFailed": true,
"stopBuildAfterFailed": true
});
}
}
}
// AfterMake
const afterMake = commonOption.AfterMake;
if (afterMake) {
for (let idx = 1; idx < 3; idx++) {
let cmd = afterMake[`UserProg${idx}Name`];
if (cmd) {
eideOption.afterBuildTasks.push({
"name": cmd,
"command": `$<cd:mdk-proj-dir> && ${replaceMdkEnv(cmd)}`,
"disable": afterMake[`RunUserProg${idx}`] != '1',
"abortAfterFailed": true
});
}
}
}
}

// parse misc options
{
const ccMiscOpts = armAdsObj.Cads.VariousControls.MiscControls;
Expand Down

0 comments on commit ab38c15

Please sign in to comment.