diff --git a/code/classes/SCDclass_expcode.m b/code/classes/SCDclass_expcode.m index 6d34fc714f99e34921cd49f6c3d3ca621989adff..8e7a03f222027e991075a9ec17b1355869d868c9 100644 --- a/code/classes/SCDclass_expcode.m +++ b/code/classes/SCDclass_expcode.m @@ -168,6 +168,14 @@ classdef SCDclass_expcode node.wrapdatadicts{iwrap} = sprintf('SCDwrap_template%02d%02d.sldd',nodenr,iwrap); end end + + function build_nodes(compileslx_list) + for mynodeslx = compileslx_list + fprintf(' *** Buiding Node %s ***\n',mynodeslx{1}); + rtwbuild(mynodeslx{1}); + end + end + end methods @@ -563,7 +571,7 @@ classdef SCDclass_expcode nodeinfo=obj.(sprintf('node%02d',inode)); for icpu = 1:nodeinfo.ncpu if nodeinfo.cpuactive(icpu) - compileslx_list = [compileslx_list; + compileslx_list = [compileslx_list,... sprintf('SCD_rtccode_%02d_%02d',inode,icpu)]; %#ok<AGROW> end end @@ -588,15 +596,19 @@ classdef SCDclass_expcode % set configuration settings for compilation SCDconf_setCODEconf('configurationSettingsCODEicc') - - % Build - for mynodeslx = compileslx_list - fprintf(' *** Buiding Node %s ***\n',mynodeslx{1}); - rtwbuild(mynodeslx{1}); - end - + try + SCDclass_expcode.build_nodes(compileslx_list); + catch ME + % if fails on first attempt, clear build folder and retry + fprintf(' **** FIRST ATTEMPT BUILDING %s FAILED **** \n',obj.name) + fprintf(' Error message:\n %s\n',getReport(ME)); + fprintf(' Try again clearning build folder\n') + + system(sprintf('rm -rf %s/*',CodeGenFolder)); + SCDclass_expcode.build_nodes(compileslx_list); + end end end