15 #include "llvm/ADT/StringRef.h" 17 using namespace clang;
24 const llvm::Triple &Triple, StringRef &PlatformName,
38 Builder.
defineMacro(
"__weak",
"__attribute__((objc_gc(weak)))");
48 if (Opts.POSIXThreads)
52 unsigned Maj, Min, Rev;
53 if (Triple.isMacOSX()) {
54 Triple.getMacOSXVersion(Maj, Min, Rev);
55 PlatformName =
"macos";
57 Triple.getOSVersion(Maj, Min, Rev);
58 PlatformName = llvm::Triple::getOSTypeName(Triple.getOS());
64 if (PlatformName ==
"win32") {
71 assert(Maj < 100 && Min < 100 && Rev < 100 &&
"Invalid version!");
75 Str[1] =
'0' + (Min / 10);
76 Str[2] =
'0' + (Min % 10);
77 Str[3] =
'0' + (Rev / 10);
78 Str[4] =
'0' + (Rev % 10);
82 Str[0] =
'0' + (Maj / 10);
83 Str[1] =
'0' + (Maj % 10);
84 Str[2] =
'0' + (Min / 10);
85 Str[3] =
'0' + (Min % 10);
86 Str[4] =
'0' + (Rev / 10);
87 Str[5] =
'0' + (Rev % 10);
91 Builder.
defineMacro(
"__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__", Str);
93 Builder.
defineMacro(
"__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__",
96 }
else if (Triple.isWatchOS()) {
97 assert(Maj < 10 && Min < 100 && Rev < 100 &&
"Invalid version!");
100 Str[1] =
'0' + (Min / 10);
101 Str[2] =
'0' + (Min % 10);
102 Str[3] =
'0' + (Rev / 10);
103 Str[4] =
'0' + (Rev % 10);
105 Builder.
defineMacro(
"__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__", Str);
106 }
else if (Triple.isMacOSX()) {
111 assert(Maj < 100 && Min < 100 && Rev < 100 &&
"Invalid version!");
113 if (Maj < 10 || (Maj == 10 && Min < 10)) {
114 Str[0] =
'0' + (Maj / 10);
115 Str[1] =
'0' + (Maj % 10);
121 Str[0] =
'0' + (Maj / 10);
122 Str[1] =
'0' + (Maj % 10);
123 Str[2] =
'0' + (Min / 10);
124 Str[3] =
'0' + (Min % 10);
125 Str[4] =
'0' + (Rev / 10);
126 Str[5] =
'0' + (Rev % 10);
129 Builder.
defineMacro(
"__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__", Str);
133 if (Triple.isOSDarwin())
Defines the clang::MacroBuilder utility class.
Represents a version number in the form major[.minor[.subminor[.build]]].
SanitizerSet Sanitize
Set of enabled sanitizers.
Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...
char __ovld __cnfn min(char x, char y)
Returns y if y < x, otherwise it returns x.
void getDarwinDefines(MacroBuilder &Builder, const LangOptions &Opts, const llvm::Triple &Triple, StringRef &PlatformName, VersionTuple &PlatformMinVersion)
Dataflow Directional Tag Classes.
bool has(SanitizerMask K) const
Check if a certain (single) sanitizer is enabled.
void defineMacro(const Twine &Name, const Twine &Value="1")
Append a #define line for macro of the form "\#define Name Value\n".