diff --git a/code/classes/SCDclass_expcode.m b/code/classes/SCDclass_expcode.m index af5c76450a59ccf7d142f327381dc1e526adfed6..6d34fc714f99e34921cd49f6c3d3ca621989adff 100644 --- a/code/classes/SCDclass_expcode.m +++ b/code/classes/SCDclass_expcode.m @@ -555,7 +555,26 @@ classdef SCDclass_expcode end function build(obj) - fprintf('\n=== Building %s ===',obj.name); + fprintf('\n=== Building %s ===\n',obj.name); + + % make list of nodes to compile + compileslx_list = cell(0); + for inode=1:8 + nodeinfo=obj.(sprintf('node%02d',inode)); + for icpu = 1:nodeinfo.ncpu + if nodeinfo.cpuactive(icpu) + compileslx_list = [compileslx_list; + sprintf('SCD_rtccode_%02d_%02d',inode,icpu)]; %#ok<AGROW> + end + end + end + + if isempty(compileslx_list) + fprintf('No active nodes found, no .slx to compile. Done\n'); + return + end + + % set CodeGen folder for this expcode (allows fast rebuilding) CodeGenFolder = fullfile(fileparts(mfilename('fullpath')),'gencodes',... sprintf('CodeGenFolder-%d',obj.maincode)); @@ -564,18 +583,20 @@ classdef SCDclass_expcode 'CodeGenFolder',CodeGenFolder,... 'createdir',true); + % check env variable assert(~isempty(getenv('RTCCODE_LIBPATH')),'RTCCODE_LIBPATH environment variable needs to be defined to compile'); + + % set configuration settings for compilation SCDconf_setCODEconf('configurationSettingsCODEicc') - for inode=1:8 - nodeinfo=obj.(sprintf('node%02d',inode)); - for icpu = 1:nodeinfo.ncpu - if nodeinfo.cpuactive(icpu) - cpuslxname = sprintf('SCD_rtccode_%02d_%02d',inode,icpu); - fprintf(' *** Buiding Node %s ***\n',cpuslxname); - rtwbuild(cpuslxname); - end - end + + + + % Build + for mynodeslx = compileslx_list + fprintf(' *** Buiding Node %s ***\n',mynodeslx{1}); + rtwbuild(mynodeslx{1}); end + end end