code: def EmitLibSymlinks(env, symlinks, libnode, **kw):
      
      Verbose = False
  
      # nodes involved in process... all symlinks + library
      nodes = list(set([ x for x,y in symlinks ] + [libnode]))
  
      clean_targets = kw.get('clean_targets', [])
      if not SCons.Util.is_List(clean_targets):
          clean_targets = [ clean_targets ]
  
      for link, linktgt in symlinks:
          env.SideEffect(link, linktgt)
          if(Verbose):
              print("EmitLibSymlinks: SideEffect(%r,%r)" % (link.get_path(), linktgt.get_path()))
          clean_list = [x for x in nodes if x != linktgt]
          env.Clean(list(set([linktgt] + clean_targets)), clean_list)
          if(Verbose):
              print("EmitLibSymlinks: Clean(%r,%r)" % (linktgt.get_path(), [x.get_path() for x in clean_list]))
docs: Used by emitters to handle (shared/versioned) library symlinks