import re
import subprocess

def is_gold_v1_12_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 < 12):
    return False

  return True

if not is_gold_v1_12_linker_available():
  config.unsupported = True
