@@ -699,6 +699,60 @@ class ARMParser extends KeilParser<KeilARMOption> {
699699 }
700700 }
701701
702+ // parse builder tasks
703+ {
704+ const commonOption = targetOptionObj . TargetCommonOption ;
705+ const eideOption = option . optionsGroup [ option . toolchain ] ;
706+
707+ if ( eideOption . beforeBuildTasks == undefined )
708+ eideOption . beforeBuildTasks = [ ] ;
709+ if ( eideOption . afterBuildTasks == undefined )
710+ eideOption . afterBuildTasks = [ ] ;
711+
712+ // (%|#|@|\!|\$)
713+ const replaceMdkEnv = ( cmd : string ) => cmd
714+ . replace ( / \$ ( H | L ) \b / g, '${OutDir}\\' )
715+ . replace ( / @ ( H | L ) \b / g, '${ProjectName}' )
716+ . replace ( / # H \b / g, '${ExecutableName}.hex' )
717+ . replace ( / % H \b / g, '${ProjectName}.hex' )
718+ . replace ( / \! H \b / g, '.\\${OutDirBase}\\${ProjectName}.hex' )
719+ . replace ( / # L \b / g, '${ExecutableName}.axf' )
720+ . replace ( / % L \b / g, '${ProjectName}.axf' )
721+ . replace ( / \! L \b / g, '.\\${OutDirBase}\\${ProjectName}.axf' ) ;
722+
723+ // BeforeMake
724+ const beforeMake = commonOption . BeforeMake ;
725+ if ( beforeMake ) {
726+ for ( let idx = 1 ; idx < 3 ; idx ++ ) {
727+ let cmd = beforeMake [ `UserProg${ idx } Name` ] ;
728+ if ( cmd ) {
729+ eideOption . beforeBuildTasks . push ( {
730+ "name" : cmd ,
731+ "command" : `$<cd:mdk-proj-dir> && ${ replaceMdkEnv ( cmd ) } ` ,
732+ "disable" : beforeMake [ `RunUserProg${ idx } ` ] != '1' ,
733+ "abortAfterFailed" : true ,
734+ "stopBuildAfterFailed" : true
735+ } ) ;
736+ }
737+ }
738+ }
739+ // AfterMake
740+ const afterMake = commonOption . AfterMake ;
741+ if ( afterMake ) {
742+ for ( let idx = 1 ; idx < 3 ; idx ++ ) {
743+ let cmd = afterMake [ `UserProg${ idx } Name` ] ;
744+ if ( cmd ) {
745+ eideOption . afterBuildTasks . push ( {
746+ "name" : cmd ,
747+ "command" : `$<cd:mdk-proj-dir> && ${ replaceMdkEnv ( cmd ) } ` ,
748+ "disable" : afterMake [ `RunUserProg${ idx } ` ] != '1' ,
749+ "abortAfterFailed" : true
750+ } ) ;
751+ }
752+ }
753+ }
754+ }
755+
702756 // parse misc options
703757 {
704758 const ccMiscOpts = armAdsObj . Cads . VariousControls . MiscControls ;
0 commit comments