Prabhuk created this revision. Herald added a subscriber: hiraditya. Herald added a project: All. Prabhuk requested review of this revision. Herald added projects: clang, LLVM. Herald added subscribers: llvm-commits, cfe-commits.
Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D131594 Files: clang/lib/Basic/Targets.cpp clang/lib/Basic/Targets/OSTargets.h llvm/include/llvm/ADT/Triple.h llvm/lib/Support/Triple.cpp llvm/unittests/ADT/TripleTest.cpp
Index: llvm/unittests/ADT/TripleTest.cpp =================================================================== --- llvm/unittests/ADT/TripleTest.cpp +++ llvm/unittests/ADT/TripleTest.cpp @@ -790,6 +790,12 @@ EXPECT_EQ(Triple::ShaderModel, T.getOS()); EXPECT_EQ(Triple::Amplification, T.getEnvironment()); + T = Triple("x86_64-unknown-uefi"); + EXPECT_EQ(Triple::x86_64, T.getArch()); + EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); + EXPECT_EQ(Triple::UEFI, T.getOS()); + EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); + T = Triple("huh"); EXPECT_EQ(Triple::UnknownArch, T.getArch()); } Index: llvm/lib/Support/Triple.cpp =================================================================== --- llvm/lib/Support/Triple.cpp +++ llvm/lib/Support/Triple.cpp @@ -235,6 +235,7 @@ case RTEMS: return "rtems"; case Solaris: return "solaris"; case TvOS: return "tvos"; + case UEFI: return "uefi"; case WASI: return "wasi"; case WatchOS: return "watchos"; case Win32: return "windows"; @@ -562,6 +563,7 @@ .StartsWith("netbsd", Triple::NetBSD) .StartsWith("openbsd", Triple::OpenBSD) .StartsWith("solaris", Triple::Solaris) + .StartsWith("uefi", Triple::UEFI) .StartsWith("win32", Triple::Win32) .StartsWith("windows", Triple::Win32) .StartsWith("zos", Triple::ZOS) Index: llvm/include/llvm/ADT/Triple.h =================================================================== --- llvm/include/llvm/ADT/Triple.h +++ llvm/include/llvm/ADT/Triple.h @@ -195,6 +195,7 @@ NetBSD, OpenBSD, Solaris, + UEFI, Win32, ZOS, Haiku, @@ -567,6 +568,10 @@ return getOS() == Triple::Haiku; } + bool isOSUEFI() const { + return getOS() == Triple::UEFI; + } + /// Tests whether the OS is Windows. bool isOSWindows() const { return getOS() == Triple::Win32; Index: clang/lib/Basic/Targets/OSTargets.h =================================================================== --- clang/lib/Basic/Targets/OSTargets.h +++ clang/lib/Basic/Targets/OSTargets.h @@ -919,6 +919,22 @@ } }; +// UEFI Target +template <typename Target> +class LLVM_LIBRARY_VISIBILITY UEFITargetInfo : public OSTargetInfo<Target> { +protected: + void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, + MacroBuilder &Builder) const override { + //TODO(prabhukr): How to iniialize this info? Copy from Win? + } + +public: + UEFITargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) + : OSTargetInfo<Target>(Triple, Opts) { + //TODO(prabhukr): How to iniialize this info? Copy from Win? + } +}; + // Fuchsia Target template <typename Target> class LLVM_LIBRARY_VISIBILITY FuchsiaTargetInfo : public OSTargetInfo<Target> { Index: clang/lib/Basic/Targets.cpp =================================================================== --- clang/lib/Basic/Targets.cpp +++ clang/lib/Basic/Targets.cpp @@ -575,6 +575,9 @@ return new KFreeBSDTargetInfo<X86_64TargetInfo>(Triple, Opts); case llvm::Triple::Solaris: return new SolarisTargetInfo<X86_64TargetInfo>(Triple, Opts); + case llvm::Triple::UEFI: + //TODO(prabhukr): Template param check if required for other architectures + return new UEFITargetInfo<X86_64TargetInfo>(Triple, Opts); case llvm::Triple::Win32: { switch (Triple.getEnvironment()) { case llvm::Triple::Cygnus:
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits