From 083f4d7da48294964e283f4de2a95c6e9011482e Mon Sep 17 00:00:00 2001 From: Mandeep Singh Grang <mgrang@codeaurora.org> Date: Thu, 5 Jul 2018 23:41:17 +0000 Subject: [PATCH] [OpenEmbedded] Add OpenEmbedded vendor Summary: The lib paths are not correctly picked up for OpenEmbedded sysroots (like arm-oe-linux-gnueabi). I fix this in a follow-up clang patch. But in order to add the correct libs I need to detect if the vendor is oe. For this reason, it is first necessary to teach llvm to detect oe vendor, which is what this patch does. Reviewers: chandlerc, compnerd, rengolin, javed.absar Reviewed By: compnerd Subscribers: kristof.beyls, dexonsmith, llvm-commits Differential Revision: https://reviews.llvm.org/D48861 llvm-svn: 336401 --- llvm/include/llvm/ADT/Triple.h | 3 ++- llvm/lib/Support/Triple.cpp | 2 ++ llvm/unittests/ADT/TripleTest.cpp | 6 ++++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/llvm/include/llvm/ADT/Triple.h b/llvm/include/llvm/ADT/Triple.h index 0f9e51848d03..c95b16dd4e8c 100644 --- a/llvm/include/llvm/ADT/Triple.h +++ b/llvm/include/llvm/ADT/Triple.h @@ -145,7 +145,8 @@ public: AMD, Mesa, SUSE, - LastVendorType = SUSE + OpenEmbedded, + LastVendorType = OpenEmbedded }; enum OSType { UnknownOS, diff --git a/llvm/lib/Support/Triple.cpp b/llvm/lib/Support/Triple.cpp index b791370ed266..b14d6492b1ed 100644 --- a/llvm/lib/Support/Triple.cpp +++ b/llvm/lib/Support/Triple.cpp @@ -168,6 +168,7 @@ StringRef Triple::getVendorTypeName(VendorType Kind) { case AMD: return "amd"; case Mesa: return "mesa"; case SUSE: return "suse"; + case OpenEmbedded: return "oe"; } llvm_unreachable("Invalid VendorType!"); @@ -463,6 +464,7 @@ static Triple::VendorType parseVendor(StringRef VendorName) { .Case("amd", Triple::AMD) .Case("mesa", Triple::Mesa) .Case("suse", Triple::SUSE) + .Case("oe", Triple::OpenEmbedded) .Default(Triple::UnknownVendor); } diff --git a/llvm/unittests/ADT/TripleTest.cpp b/llvm/unittests/ADT/TripleTest.cpp index 3103074b0937..3963a966ef62 100644 --- a/llvm/unittests/ADT/TripleTest.cpp +++ b/llvm/unittests/ADT/TripleTest.cpp @@ -361,6 +361,12 @@ TEST(TripleTest, ParsedIDs) { EXPECT_EQ(Triple::Linux, T.getOS()); EXPECT_EQ(Triple::GNUABI64, T.getEnvironment()); + T = Triple("arm-oe-linux-gnueabi"); + EXPECT_EQ(Triple::arm, T.getArch()); + EXPECT_EQ(Triple::OpenEmbedded, T.getVendor()); + EXPECT_EQ(Triple::Linux, T.getOS()); + EXPECT_EQ(Triple::GNUEABI, T.getEnvironment()); + T = Triple("huh"); EXPECT_EQ(Triple::UnknownArch, T.getArch()); }