003 File Manager
Current Path:
/usr/src/contrib/llvm-project/llvm/lib/Support/Unix
usr
/
src
/
contrib
/
llvm-project
/
llvm
/
lib
/
Support
/
Unix
/
📁
..
📄
COM.inc
(1022 B)
📄
DynamicLibrary.inc
(3.55 KB)
📄
Host.inc
(2.87 KB)
📄
Memory.inc
(8.22 KB)
📄
Path.inc
(39.39 KB)
📄
Process.inc
(13.8 KB)
📄
Program.inc
(16.8 KB)
📄
README.txt
(824 B)
📄
Signals.inc
(21.31 KB)
📄
ThreadLocal.inc
(2.22 KB)
📄
Threading.inc
(9.83 KB)
📄
Unix.h
(3.2 KB)
📄
Watchdog.inc
(839 B)
Editing: Host.inc
//===- llvm/Support/Unix/Host.inc -------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file implements the UNIX Host support. // //===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===// //=== WARNING: Implementation here must contain only generic UNIX code that //=== is guaranteed to work on *all* UNIX variants. //===----------------------------------------------------------------------===// #include "Unix.h" #include "llvm/ADT/StringRef.h" #include "llvm/Config/config.h" #include <cctype> #include <string> #include <sys/utsname.h> using namespace llvm; static std::string getOSVersion() { struct utsname info; if (uname(&info)) return ""; return info.release; } static std::string updateTripleOSVersion(std::string TargetTripleString) { // On darwin, we want to update the version to match that of the target. std::string::size_type DarwinDashIdx = TargetTripleString.find("-darwin"); if (DarwinDashIdx != std::string::npos) { TargetTripleString.resize(DarwinDashIdx + strlen("-darwin")); TargetTripleString += getOSVersion(); return TargetTripleString; } std::string::size_type MacOSDashIdx = TargetTripleString.find("-macos"); if (MacOSDashIdx != std::string::npos) { TargetTripleString.resize(MacOSDashIdx); // Reset the OS to darwin as the OS version from `uname` doesn't use the // macOS version scheme. TargetTripleString += "-darwin"; TargetTripleString += getOSVersion(); } // On AIX, the AIX version and release should be that of the current host // unless if the version has already been specified. if (Triple(LLVM_HOST_TRIPLE).getOS() == Triple::AIX) { Triple TT(TargetTripleString); if (TT.getOS() == Triple::AIX && !TT.getOSMajorVersion()) { struct utsname name; if (uname(&name) != -1) { std::string NewOSName = std::string(Triple::getOSTypeName(Triple::AIX)); NewOSName += name.version; NewOSName += '.'; NewOSName += name.release; NewOSName += ".0.0"; TT.setOSName(NewOSName); return TT.str(); } } } return TargetTripleString; } std::string sys::getDefaultTargetTriple() { std::string TargetTripleString = updateTripleOSVersion(LLVM_DEFAULT_TARGET_TRIPLE); // Override the default target with an environment variable named by // LLVM_TARGET_TRIPLE_ENV. #if defined(LLVM_TARGET_TRIPLE_ENV) if (const char *EnvTriple = std::getenv(LLVM_TARGET_TRIPLE_ENV)) TargetTripleString = EnvTriple; #endif return TargetTripleString; }
Upload File
Create Folder