Prevent Circular Data Dependencies with One-Pass or Single-Pass Linkers

Symptom: During a software build, a build error occurs; variables don't resolve correctly.

If your toolchain uses a one-pass or single-pass linker, prevent circular data dependencies by adding the StartLibraryGroup and EndLibraryGroup linker directives to the toolchain definition file.

For example, if the linker is like GNU gcc, then the directives are '-Wl,--start-group' and '-Wl,--end-group', as shown here:

% ------------------------------
% Linker
% ------------------------------

tool = tc.getBuildTool('Linker');

tool.setName(           'GNU Linker');
tool.setCommand(        'gcc');
tool.setPath(           '');

tool.setDirective(      'Library',                           '-l');
tool.setDirective(      'LibrarySearchPath',                 '-L');
tool.setDirective(      'OutputFlag',                        '-o');
tool.setDirective(      'Debug',                             '-g');
tool.addDirective(      'StartLibraryGroup', {'-Wl,--start-group'});
tool.addDirective(      'EndLibraryGroup',     {'-Wl,--end-group'});

tool.setFileExtension(  'Executable',       '');
tool.setFileExtension(  'Shared Library',   '.so');