#!/usr/bin/python

import os, re, sys, ConfigParser

dir = '/usr/share/debian-installer/build/make'

class make(object):
  def __init__(self):
    self.config = {}
    self.vars = {}

  def config_get_section(self, section):
    if self.configparser.has_section(section):
      for i,j in self.configparser.items(section, False, self.vars):
        self.config[i] = j

  def dpkg_architecture(self, name, variable):
    fd = os.popen('dpkg-architecture -q%s' % variable)
    self.vars[name] = fd.readline().strip()
    fd.close()

  def prefix(self, flavour = None):
    try:
      for i in self.config['extension-libcs'].split():
        if self.prefix_extension(i, flavour):
          return self.prefix_one(flavour, i)
    except KeyError: pass
    return self.prefix_one(flavour)

  def prefix_extension(self, name, flavour = None):
    key = 'use-libc-%s' % name
    if self.config.has_key(key):
      value = self.config[key].split()
      if 'all' in value:
        return True
      if flavour:
        if flavour in value:
          return True
    return False

  def prefix_one(self, flavour = None, name = None):
    key = 'toolchain-prefix'
    if name:
      key += '-%s' % name
    var_suffix = ''
    if flavour:
      var_suffix = '_%s' % flavour.upper()
    for i in (('CC', 'gcc'), ('AR', 'ar'), ('LD', 'ld')):
      a = '%s%s' % (i[0], var_suffix)
      b = '%s%s' % (self.config[key], i[1])
      print "%s=%s" % (a, b)

  def __call__(self):
    self.configparser = ConfigParser.ConfigParser()
    self.configparser.read(os.path.join(dir, 'config'))
    if len(sys.argv) > 1:
      self.configparser.read(sys.argv[1:])

    self.dpkg_architecture('gnu-cpu', 'DEB_HOST_GNU_CPU')
    self.dpkg_architecture('gnu-system', 'DEB_HOST_GNU_SYSTEM')
    self.dpkg_architecture('gnu-type', 'DEB_HOST_GNU_TYPE')

    self.config_get_section(self.vars['gnu-system'])
    self.config_get_section(self.vars['gnu-type'])
    self.config_get_section(self.vars['gnu-cpu'])

    self.prefix('static')
    self.prefix('udeb')

if __name__ == '__main__':
  make()()

