import os
import sys

bsp_to_cpu = {
    'bf533': 'unknown',
    'dev3210': 'unknown',
    'jz47xx': 'unknown',
    'ls1bdev': 'unknown',
    'm16c62p': 'unknown',
    'microblaze': 'unknown',
    'mini4020': 'unknown',
    'nuc140': 'unknown',
    'nios_ii': 'unknown',
    'pic32ethernet': 'unknown',
    'upd70f3454': 'unknown',
    'wh44b0': 'unknown',
    'xplorer4330': 'unknown',
    'avr32uc3b0': 'avr',
    'taihu': 'ppc',
    'simulator': 'x86',
    'x86': 'x86',
    'at91sam9260': 'arm',
    'efm32': 'arm',
    'lm3s8962': 'arm',
    'lm3s9b9x': 'arm',
    'lm4f232': 'arm',
    'lpc1114': 'arm',
    'lpc122x': 'arm',
    'lpc176x': 'arm',
    'lpc178x': 'arm',
    'lpc2148': 'arm',
    'lpc2478': 'arm',
    'mb9bf500r': 'arm',
    'mb9bf506r': 'arm',
    'mini2440': 'arm',
    'sam7s': 'arm',
    'sam7x': 'arm',
    'stm32f0x': 'arm',
    'stm32f107': 'arm',
    'stm32f10x': 'arm',
    'stm32f20x': 'arm',
    'stm32f40x': 'arm',
}

results = {
    'success': [],
    'fail': [],
    'ignore': []
}

fail = False

BSP_ROOT = '../bsp'

for bsp,cpu in bsp_to_cpu.iteritems():
    project_dir = os.path.join(BSP_ROOT, bsp)
    if os.getenv('RTT_CPU') == cpu and os.path.isfile(os.path.join(project_dir, 'SConstruct')):
        if os.system('scons --directory=' + project_dir) != 0:
            results['fail'].append(bsp)
            fail = True
        else:
            results['success'].append(bsp)
    else:
        results['ignore'].append(bsp)

for result,bsp_list in results.iteritems():
    print "## {0}: {1}\n".format(result, len(bsp_list))
    for bsp in bsp_list:
        print "* " + bsp

if fail:
    sys.exit(1)
else:
    sys.exit(0)