code: def _versioned_lib_symlinks(env, libnode, version, prefix, suffix, name_func, soname_func):
      
      Verbose = False
  
      if Verbose:
          print("_versioned_lib_symlinks: libnode={:r}".format(libnode.get_path()))
          print("_versioned_lib_symlinks: version={:r}".format(version))
  
      if sys.platform.startswith('openbsd'):
          # OpenBSD uses x.y shared library versioning numbering convention
          # and doesn't use symlinks to backwards-compatible libraries
          if Verbose:
              print("_versioned_lib_symlinks: return symlinks={:r}".format(None))
          return None
  
      linkdir = libnode.get_dir()
      if Verbose:
          print("_versioned_lib_symlinks: linkdir={:r}".format(linkdir.get_path()))
  
      name = name_func(env, libnode, version, prefix, suffix)
      if Verbose:
          print("_versioned_lib_symlinks: name={:r}".format(name))
  
      soname = soname_func(env, libnode, version, prefix, suffix)
  
      link0 = env.fs.File(soname, linkdir)
      link1 = env.fs.File(name, linkdir)
  
      # We create direct symlinks, not daisy-chained.
      if link0 == libnode:
          # This enables SHLIBVERSION without periods (e.g. SHLIBVERSION=1)
          symlinks = [ (link1, libnode) ]
      else:
          # This handles usual SHLIBVERSION, i.e. '1.2', '1.2.3', etc.
          symlinks = [ (link0, libnode), (link1, libnode) ]
  
      if Verbose:
          print("_versioned_lib_symlinks: return symlinks={:r}".format(SCons.Tool.StringizeLibSymlinks(symlinks)))
  
      return symlinks
docs: Generate link names that should be created for a versioned shared lirbrary.
         Returns a dictionary in the form { linkname : linktarget }