Skip to content

Commit 92665b9

Browse files
authored
optimize keil proj importer
1 parent bb162ce commit 92665b9

2 files changed

Lines changed: 21 additions & 10 deletions

File tree

src/EIDEProjectExplorer.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1154,7 +1154,7 @@ class ProjectDataProvider implements vscode.TreeDataProvider<ProjTreeItem>, vsco
11541154
const _depsFolder = project
11551155
.getVirtualSourceManager()
11561156
.getFolder(`${VirtualSource.rootName}/${DependenceManager.DEPS_VFOLDER_NAME}`);
1157-
if (_depsFolder && (_depsFolder.files.length +_depsFolder.folders.length) > 0) {
1157+
if (_depsFolder && (_depsFolder.files.length + _depsFolder.folders.length) > 0) {
11581158
const folderDispName = view_str$project$cmsis_components;
11591159
const itemType = TreeItemType.V_FOLDER_ROOT;
11601160
const vFolderPath = `${VirtualSource.rootName}/${_depsFolder.name}`;
@@ -3135,10 +3135,15 @@ class ProjectDataProvider implements vscode.TreeDataProvider<ProjTreeItem>, vsco
31353135

31363136
const replaceUserTaskTmpVar = (t: any) => {
31373137
const reKeilPrjDir = baseInfo.rootFolder.ToRelativeLocalPath(keilPrjFile.dir) || keilPrjFile.dir;
3138-
if (reKeilPrjDir === '.')
3138+
if (reKeilPrjDir === '.') {
31393139
t.command = t.command.replace('$<cd:mdk-proj-dir> && ', '');
3140-
else
3141-
t.command = t.command.replace('$<cd:mdk-proj-dir>', `cd .\\${reKeilPrjDir}`);
3140+
} else {
3141+
if (t.command.startsWith('bash')) {
3142+
t.command = t.command.replace('$<cd:mdk-proj-dir>', `cd ${File.ToUnixPath(reKeilPrjDir)}`);
3143+
} else {
3144+
t.command = t.command.replace('$<cd:mdk-proj-dir>', `cd .\\${reKeilPrjDir}`);
3145+
}
3146+
}
31423147
}
31433148

31443149
// project env
@@ -7013,7 +7018,7 @@ export class ProjectExplorer implements CustomConfigurationProvider {
70137018
}
70147019

70157020
private async genDebugConfig_internal(
7016-
type: 'jlink' | 'openocd' | 'pyocd',
7021+
type: 'jlink' | 'openocd' | 'pyocd',
70177022
prj: AbstractProject, old_cfgs: any[]): Promise<{ debug_config: any, override_idx: number } | undefined> {
70187023

70197024
const _elfPath = File.ToUnixPath(prj.getOutputDir()) + '/' + `${prj.getProjectName()}.elf`;

src/KeilXmlParser.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -743,6 +743,8 @@ class ARMParser extends KeilParser<KeilARMOption> {
743743

744744
// keil props
745745
const mdk_OutputDirectory: string = File.normalize(commonOption.OutputDirectory || '.');
746+
const mdk_CreateHexFile: boolean = commonOption.CreateHexFile == '1';
747+
const mdk_CreateLib: boolean = commonOption.CreateLib == '1';
746748

747749
// BeforeMake
748750
const beforeMake = commonOption.BeforeMake;
@@ -784,23 +786,27 @@ class ARMParser extends KeilParser<KeilARMOption> {
784786
if (env['KEIL_OUTPUT_NAME']) {
785787
eideOption.afterBuildTasks.splice(0, 0, {
786788
"name": '[Copy linker output for Keil User Commands]',
787-
"command": `$<cd:mdk-proj-dir> && copy "\${OutDir}\\\${ProjectName}.axf" "${mdk_OutputDirectory}\\\${KEIL_OUTPUT_NAME}.axf"`,
789+
"command": `$<cd:mdk-proj-dir> && mkdir ${mdk_OutputDirectory} & copy "\${OutDir}\\\${ProjectName}.axf" "${mdk_OutputDirectory}\\\${KEIL_OUTPUT_NAME}.axf"`,
788790
"disable": actived_cnt == 0,
789791
"abortAfterFailed": true
790792
});
791793
} else {
792794
eideOption.afterBuildTasks.splice(0, 0, {
793795
"name": '[Copy linker output for Keil User Commands]',
794-
"command": `$<cd:mdk-proj-dir> && copy "\${OutDir}\\\${ProjectName}.axf" "${mdk_OutputDirectory}\\\${ProjectName}.axf"`,
796+
"command": `$<cd:mdk-proj-dir> && mkdir ${mdk_OutputDirectory} & copy "\${OutDir}\\\${ProjectName}.axf" "${mdk_OutputDirectory}\\\${ProjectName}.axf"`,
795797
"disable": actived_cnt == 0,
796798
"abortAfterFailed": true
797799
});
798800
}
799801
}
800-
if (actived_cnt > 0) {
802+
if (mdk_CreateLib) {
803+
// Make eide output lib instead of elf
804+
if (eideOption.linker == undefined) eideOption.linker = {};
805+
eideOption.linker['output-format'] = 'lib';
806+
}
807+
if (!mdk_CreateHexFile) {
801808
// Make eide Don't output hex/bin
802-
if (eideOption.linker == undefined)
803-
eideOption.linker = {};
809+
if (eideOption.linker == undefined) eideOption.linker = {};
804810
eideOption.linker['$disableOutputTask'] = true;
805811
}
806812
}

0 commit comments

Comments
 (0)