diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2015-10-13 15:19:32 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2015-10-13 15:19:32 +0000 |
commit | f420dda18df735f1f29af239350ed71878bb60d8 (patch) | |
tree | ac690321131e35bbbd2829eecc2378fea4e595f6 /clang/unittests/Driver | |
parent | 53b581c52286e6a11dd1522bc6495f8f9a1687c6 (diff) | |
download | bcm5719-llvm-f420dda18df735f1f29af239350ed71878bb60d8.tar.gz bcm5719-llvm-f420dda18df735f1f29af239350ed71878bb60d8.zip |
[Driver] Use the parent_path of the clang executable as the default InstalledDir
This is what most people want anyways. Clang -cc1's main() will override
this but for other tools this is the most sensible default and avoids
some work.
llvm-svn: 250164
Diffstat (limited to 'clang/unittests/Driver')
-rw-r--r-- | clang/unittests/Driver/ToolChainTest.cpp | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/clang/unittests/Driver/ToolChainTest.cpp b/clang/unittests/Driver/ToolChainTest.cpp index a2d6f29e126..5159e80cc7a 100644 --- a/clang/unittests/Driver/ToolChainTest.cpp +++ b/clang/unittests/Driver/ToolChainTest.cpp @@ -33,12 +33,12 @@ TEST(ToolChainTest, VFSGCCInstallation) { DiagnosticsEngine Diags(DiagID, &*DiagOpts, new TestDiagnosticConsumer); IntrusiveRefCntPtr<vfs::InMemoryFileSystem> InMemoryFileSystem( new vfs::InMemoryFileSystem); - Driver TheDriver("/usr/bin/clang", "arm-linux-gnueabihf", Diags, + Driver TheDriver("/bin/clang", "arm-linux-gnueabihf", Diags, InMemoryFileSystem); const char *EmptyFiles[] = { "foo.cpp", - "/usr/bin/clang", + "/bin/clang", "/usr/lib/gcc/arm-linux-gnueabi/4.6.1/crtbegin.o", "/usr/lib/gcc/arm-linux-gnueabi/4.6.1/crtend.o", "/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/crtbegin.o", @@ -78,4 +78,43 @@ TEST(ToolChainTest, VFSGCCInstallation) { S); } +TEST(ToolChainTest, VFSGCCInstallationRelativeDir) { + IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts = new DiagnosticOptions(); + + IntrusiveRefCntPtr<DiagnosticIDs> DiagID(new DiagnosticIDs()); + struct TestDiagnosticConsumer : public DiagnosticConsumer {}; + DiagnosticsEngine Diags(DiagID, &*DiagOpts, new TestDiagnosticConsumer); + IntrusiveRefCntPtr<vfs::InMemoryFileSystem> InMemoryFileSystem( + new vfs::InMemoryFileSystem); + Driver TheDriver("/home/test/bin/clang", "arm-linux-gnueabi", Diags, + InMemoryFileSystem); + + const char *EmptyFiles[] = { + "foo.cpp", "/home/test/lib/gcc/arm-linux-gnueabi/4.6.1/crtbegin.o", + "/home/test/include/arm-linux-gnueabi/.keep"}; + + for (const char *Path : EmptyFiles) + InMemoryFileSystem->addFile(Path, 0, + llvm::MemoryBuffer::getMemBuffer("\n")); + + std::unique_ptr<Compilation> C( + TheDriver.BuildCompilation({"-fsyntax-only", "foo.cpp"})); + + std::string S; + { + llvm::raw_string_ostream OS(S); + C->getDefaultToolChain().printVerboseInfo(OS); + } +#if LLVM_ON_WIN32 + std::replace(S.begin(), S.end(), '\\', '/'); +#endif + EXPECT_EQ("Found candidate GCC installation: " + "/home/test/lib/gcc/arm-linux-gnueabi/4.6.1\n" + "Selected GCC installation: " + "/home/test/bin/../lib/gcc/arm-linux-gnueabi/4.6.1\n" + "Candidate multilib: .;@m32\n" + "Selected multilib: .;@m32\n", + S); +} + } // end anonymous namespace |