import re
import subprocess

def is_gold_v1_16_linker_available():

  if not config.gold_executable:
    return False
  try:
    ld_cmd = subprocess.Popen([config.gold_executable, '-v'],
                              stdout = subprocess.PIPE,
                              stderr = subprocess.PIPE)
    ld_out, _ = ld_cmd.communicate()
    ld_out = ld_out.decode()
  except:
    return False

  match = re.search(r'GNU gold \(.*\) (\d+)\.(\d+)', ld_out)
  if not match:
    return False
  major = int(match.group(1))
  minor = int(match.group(2))
  if major < 1 or (major == 1 and minor < 16):
    return False

  return True

if not is_gold_v1_16_linker_available():
  config.unsupported = True
