#!/usr/bin/env python2 from collections import namedtuple import glob # Why have 'cross_headers': # For some reason, clang doesn't know how to find some of the libstdc++ # headers (c++config.h). Manually add in one of the paths: # https://llvm.org/bugs/show_bug.cgi?id=22937 # Otherwise, we could assume the system has arm-linux-gnueabihf-g++ and # use that instead of clang, but so far we've just been using clang for # the unsandboxed build. def FindARMCrossInclude(): return glob.glob( '/usr/arm-linux-gnueabihf/include/c++/*/arm-linux-gnueabihf')[-1] def FindMIPSCrossInclude(): globs = glob.glob('/usr/mipsel-linux-gnu/include/c++/*/mipsel-linux-gnu') return globs[-1] if globs else '/invalid/mips/include/path' TargetInfo = namedtuple('TargetInfo', ['target', 'compiler_arch', 'triple', 'llc_flags', 'ld_emu', 'sb_emu', 'cross_headers']) X8632Target = TargetInfo(target='x8632', compiler_arch='x8632', triple='i686-none-linux', llc_flags=['-mcpu=pentium4m'], ld_emu='elf_i386_nacl', sb_emu='elf_i386_nacl', cross_headers=[]) X8664Target = TargetInfo(target='x8664', compiler_arch='x8664', triple='x86_64-none-linux-gnux32', llc_flags=['-mcpu=x86-64'], ld_emu='elf32_x86_64_nacl', sb_emu='elf_x86_64_nacl', cross_headers=[]) ARM32Target = TargetInfo(target='arm32', compiler_arch='armv7', triple='armv7a-none-linux-gnueabihf', llc_flags=['-mcpu=cortex-a9', '-float-abi=hard', '-mattr=+neon', '-arm-enable-dwarf-eh=1'], ld_emu='armelf_nacl', sb_emu='armelf_nacl', cross_headers=['-isystem', FindARMCrossInclude()]) # Investigate: # ld_emu script mips_nacl is not present in binutils. How to get it? MIPS32Target = TargetInfo(target='mips32', compiler_arch='mips32', triple='mipsel-linux-gnu', llc_flags=[], ld_emu='mips_nacl', sb_emu='mips_nacl', cross_headers=['-isystem', FindMIPSCrossInclude()]) def ConvertTripleToNaCl(nonsfi_triple): return nonsfi_triple[:nonsfi_triple.find('-linux')] + '-nacl'