<feed xmlns='http://www.w3.org/2005/Atom'>
<title>emscripten-fastcomp-clang/test/Driver/Inputs/mips_cs_tree/mips-linux-gnu/include, branch master</title>
<subtitle>emscripten clang</subtitle>
<id>https://git.amat.us/emscripten-fastcomp-clang/atom/test/Driver/Inputs/mips_cs_tree/mips-linux-gnu/include?h=master</id>
<link rel='self' href='https://git.amat.us/emscripten-fastcomp-clang/atom/test/Driver/Inputs/mips_cs_tree/mips-linux-gnu/include?h=master'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp-clang/'/>
<updated>2013-04-20T08:15:03Z</updated>
<entry>
<title>Supports Sourcery CodeBench Mips toolchain directories tree.</title>
<updated>2013-04-20T08:15:03Z</updated>
<author>
<name>Simon Atanasyan</name>
<email>simon@atanasyan.com</email>
</author>
<published>2013-04-20T08:15:03Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp-clang/commit/?id=8e8e95c57c310bbc52cdc8d32df23c95afc77916'/>
<id>urn:sha1:8e8e95c57c310bbc52cdc8d32df23c95afc77916</id>
<content type='text'>
Sourcery CodeBench and modern FSF Mips toolchains require a bit more
complicated algorithm to calculate headers, libraries and sysroot paths
than implemented by Clang driver now. The main problem is that all these
paths depend on a set of command line arguments additionally to a target
triple value. For example, let $TC is a toolchain installation directory.
If we compile big-endian 32-bit mips code, crtbegin.o is in the
$TC/lib/gcc/mips-linux-gnu/4.7.2 folder and the toolchain's linker requires
--sysroot=$TC/mips-linux-gnu/libc argument. If we compile little-endian
32-bit soft-float mips code, crtbegin.o is in the
$TC/lib/gcc/mips-linux-gnu/4.7.2/soft-float/el folder and the toolchain's
linker requires --sysroot=$TC/mips-linux-gnu/libc/soft-float/el argument.

1. Calculate MultiarchSuffix using all necessary command line options and
   use this MultiarchSuffix to detect crtbegin.o location in the
   GCCInstallationDetector::ScanLibDirForGCCTriple() routine.
2. If a user does not provide --sysroot argument to the driver explicitly,
   calculate new sysroot value based on command line options. Then use this
   calculated sysroot path:
   a. To populate a file search paths list in the Linux::Linux() constructor.
   b. To find Mips toolchain specific include headers directories
      in the Linux::AddClangSystemIncludeArgs() routine.
   c. To provide -–sysroot argument for a linker.

Note:
- The FSF's tree slightly differs (folder names) and is not supported
  yet.
- New addExternCSystemIncludeIfExits() routine is a temporary solution.
  I plan to move path existence check to the addExternCSystemInclude()
  routine by a separate commit.

The patch reviewed by Rafael Espindola.
http://llvm-reviews.chandlerc.com/D644

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179934 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
</feed>
